Conceptos básicos

De Wiki de Sistemas Operativos
Saltar a: navegación, buscar

2.4. 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 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 de uno o más procesos 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. Es el primer proceso que se lanza desde la secuencia de arranque del sistema.
  • La información 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 identificar los procesos el sistema operativo Unix asigna un número de identificación del proceso, o PID (Process IDentification).
$ 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 S.O."). Estas llamadas a sistema evitan que el proceso acceda directamente a los recursos del hardware.

En el caso de Linux tiene 345 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 extensión (un apéndice que se utiliza para indicar el tipo de información 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 organización en forma de árbol.

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 como camino relativo (relative path).

2.5. Arranque del sistema