Diferencia entre revisiones de «Conceptos básicos»
(→Fichero) |
(→Procesos en sistemas operativos tipo Unix) |
||
Línea 21: | Línea 21: | ||
* El proceso ''init'' es el padre de todos los procesos. Es la excepción a la norma general, pues no tiene padre. | * El proceso ''init'' es el padre de todos los procesos. Es la excepción a la norma general, pues no tiene padre. | ||
+ | |||
+ | La informacion necesaria para administrar un proceso se guarda en una estructura controlada por el S.O. llamada Bloque de Control de Procesos o '''PCB (Process Control Block)''' | ||
* Para mostrar la relación actual de procesos en el sistema se puede emplear la orden ''ps''. | * Para mostrar la relación actual de procesos en el sistema se puede emplear la orden ''ps''. |
Revisión del 11:31 6 nov 2011
Contenido
2.1. Conceptos básicos
A continuación se desarrollan conceptos básicos que se emplearán a lo largo de la asignatura.
Programa
Un programa es una secuencia de instrucciones que, al ejecutarse, desarrolla algún tipo de actividad.
Un programa, generalmente, se expresa en un lenguaje de programación de medio u alto nivel (tales como C, C++, Python, Java, Perl, Php, C#, etc) que, mediante un compilador o máquina virtual, se traduce a instrucciones de bajo nivel que corresponden al juego de instrucciones que ofrece el procesador.
El juego de instrucciones del procesador viene determinado por el fabricante.
Proceso
Un proceso es una instancia de un programa que está en ejecución. De partida todo proceso dispone de una única línea de ejecución. Se puede entender como la vista dinámica (en ejecución) de un programa.
Procesos en sistemas operativos tipo Unix
- Todo proceso en un sistema operativo tipo Unix tiene un proceso padre y a su vez puede disponer uno o más de un proceso hijo.
- Todo proceso en un sistema operativo tipo Unix tiene un propietario, que se trata del usuario que ha lanzado dicho proceso.
- El proceso init es el padre de todos los procesos. Es la excepción a la norma general, pues no tiene padre.
La informacion necesaria para administrar un proceso se guarda en una estructura controlada por el S.O. llamada Bloque de Control de Procesos o PCB (Process Control Block)
- Para mostrar la relación actual de procesos en el sistema se puede emplear la orden ps.
$ ps -ef
UID PID PPID C STIME TTY TIME CMD
root 1 0 0 11:48 ? 00:00:00 /sbin/init
...
practica 1712 1 18 12:08 ? 00:00:00 gnome-terminal
practica 1713 1712 0 12:08 ? 00:00:00 gnome-pty-helper
practica 1714 1712 20 12:08 pts/0 00:00:00 bash
practica 1731 1714 0 12:08 pts/0 00:00:00 ps -ef
La primera columna indica el UID del proceso, la segunda el PID, la tercera el PID del proceso padre. Por último, aparece el nombre del proceso en cuestión.
Procesos padre e hijo
- Todo proceso (padre) puede lanzar un proceso hijo en cualquier momento, para ello el sistema operativo nos ofrece una llamada al sistema que se denomina fork.
- Un proceso hijo es un proceso clon del padre. Sin embargo, procesos padre e hijo no comparten memoria, son completamente independientes.
- Todo proceso padre es responsable de los procesos hijos que lanza, por ello, todo proceso padre debe recoger el resultado de la ejecución de los procesos hijos para que estos finalicen adecuadamente. Para ello, el sistema operativo ofrece la llamada wait que nos permite obtener el resultado de la ejecución de uno o varios procesos hijo.
- Si un proceso padre no recupera el resultado de la ejecución de su hijo, se dice que el proceso queda en estado zombi. Un proceso hijo zombi es un proceso que ha terminado su ejecución y que está pendiente de que su padre recoja el resultado de su ejecución.
Llamadas a sistema
- Se implementan a través de una interfaz (o API) que ofrece el Sistema Operativo. Son mecanismos que el S.O. pone a disposición de los procesos para solicitar un servicio o recurso. (Otra definición, según Wikipedia: Llamadas que ejecutan los programas de aplicación para pedir algún servicio al SO.) Estas llamadas a sistema evitan que el proceso acceda directamente a los recursos del hardware.
En el caso de Linux tiene aproximadamente 350 llamadas al sistema en la versión 3.0.0. La mayor parte de los Sistemas Operativos suelen implementar la API POSIX por razones de portabilidad.
Usuario
- Sujeto que interactúa con la computadora. Puede ser un humano o un autómata (software).
- En sistemas UNIX encontramos un código único para cada uno, el UID (User IDentifier). A su vez debe pertenecer a un grupo, definido por el GID (Group IDentifier).
Fichero
- Estructura de datos que almacena información.
Los ficheros se identifican mediante su nombre y su extension (un apendice que se utiliza para indicar el tipo de informacion que contiene el fichero).
El lugar donde se encuentra un fichero viene dado por su directorio. Dentro de un directorio pueden existir otros directorios (llamados subdirectorios) lo que da lugar a una organizacion en forma de arbol.
Al camino que debemos seguir para encontrar un fichero lo llamamos camino absoluto (absolute path), y al camino que debemos seguir para encontrar el fichero en relación a otro fichero, que no sea el fichero raíz, se le conoce cómo camino relativo (relative path).