Ud2 Aso
Ud2 Aso
MÓDULO PROFESIONAL:
ADMINISTRACIÓN DE SISTEMAS OPERATIVOS
Índice
RESUMEN INTRODUCTORIO.......................................................................................................... 3
INTRODUCCIÓN ............................................................................................................................. 3
CASO INTRODUCTORIO ................................................................................................................. 4
1. PROCESOS.................................................................................................................................. 4
1.1 Tipos de procesos ................................................................................................................ 6
1.2 Características propias de los procesos .............................................................................. 8
1.3 Estados de los procesos .................................................................................................... 10
1.3.1 Transiciones entre los procesos ................................................................................. 12
1.3.2 Estructura de los procesos ......................................................................................... 13
1.3.3 Tabla de procesos....................................................................................................... 13
1.4 Prioridades ........................................................................................................................ 14
1.5 Jerarquía entre procesos ................................................................................................... 15
2. PROCESOS HABITUALES DEL SISTEMA .................................................................................... 19
2.1 Funciones de los procesos habituales ............................................................................... 20
2.2 Medidas de seguridad ante la aparición de procesos no identificados ............................ 21
3. GESTIÓN DE LOS PROCESOS EN SISTEMAS OPERATIVOS LIBRES ............................................ 23
3.1 Línea de orden................................................................................................................... 23
3.2 Entorno gráfico .................................................................................................................. 25
4. GESTIÓN DE LOS PROCESOS EN SISTEMAS OPERATIVOS PROPIETARIOS ............................... 30
4.1 Línea de orden................................................................................................................... 31
4.2 Entorno gráfico .................................................................................................................. 31
5. SECUENCIA DE ARRANQUE DEL SISTEMA EN SISTEMAS OPERATIVOS LIBRES Y PROPIETARIOS
..................................................................................................................................................... 35
5.1 Secuencia de arranque del sistema................................................................................... 36
5.2 Demonios .......................................................................................................................... 38
5.3 Servicios............................................................................................................................. 40
6. ALGORITMO DE PLANIFICACIÓN ............................................................................................. 41
6.1.Políticas de planificación Linux ......................................................................................... 43
6.2 El algoritmo de planificación en Linux............................................................................... 44
7. SINCRONIZACIÓN Y COMUNICACIÓN ENTRE PROCESOS ........................................................ 45
7.1 Esquema de sincronización síncrona ................................................................................ 46
7.2 Sección crítica .................................................................................................................... 47
7.3 Exclusión mutua ................................................................................................................ 49
7.4 Modelo de sincronización por semáforos ......................................................................... 50
RESUMEN FINAL .......................................................................................................................... 54
2
RESUMEN INTRODUCTORIO
En la presente unidad, conoceremos los diferentes procesos del sistema, tanto en sistemas
operativos libres como propietarios. Profundizaremos en los tipos y sus estructuras, así como
las prioridades de los procesos, sus jerarquías y funciones. También conoceremos más en
profundidad aspectos como los algoritmos de planificación, las secuencias de arranques en
sistemas operativos libres y propietarios, y cómo se comunican y sincronizan los procesos.
INTRODUCCIÓN
La administración de los procesos es más que iniciar programas o detenerlos, y hay que tener
un buen conocimiento sobre cómo funcionan los sistemas operativos al nivel de los procesos,
la información que se recoge, los estados que puede adoptar y cómo cambia entre ellos.
Al ejecutar varios procesos a la vez, los sistemas operativos exigen llevar a cabo
multiprogramación, lo que permite la concurrencia de procesos (más de un proceso siendo
ejecutado a la vez), teniendo procesos en primer plano y otros en segundo plano y viceversa.
3
CASO INTRODUCTORIO
Una vez finalizado el módulo, serás capaz de gestionar los procesos del sistema de manera
adecuada, tanto en sistemas operativos libres como propietarios.
1. PROCESOS
RECUERDA
El sistema operativo es una parte más de un sistema de computación, que podríamos dividir
en cuatro componentes principales:
4
División de un sistema de computación
Fuente: Elaboración propia
Por lo tanto, un proceso no es más que un programa en ejecución, y por ello pueden llegar a
confundirse ambos términos. Un proceso incluye también los datos, la pila, el contador de
programa y los valores almacenados en los registros, además del programa en sí (la secuencia
de código ejecutable).
Los hilos de ejecución (threads) se distinguen de los procesos tradicionales en que los
procesos son generalmente independientes, llevan mucha información de estados e
interactúan únicamente a través de mecanismos de comunicación dados por el propio sistema.
Muchos hilos de ejecución, por lo general, comparten otros recursos directamente. En muchos
de los sistemas operativos que proveen de facilidades para los hilos de ejecución, resulta más
rápido cambiar de un hilo a otro dentro del mismo proceso, que cambiar de un proceso a otro.
Esto se debe a que los hilos de ejecución comparten datos y espacios de direcciones, mientras
que los procesos, al ser independientes, no lo hacen.
5
¿SABÍAS QUE…?
Para guardar la información de los procesos se utiliza la tabla de procesos, que son unas estructuras
donde cada una de ellas contiene los datos que definen el estado de un proceso determinado. Las
informaciones de un proceso se actualizan en numerosos momentos, al menos cada vez que se le va
a quitar el uso del procesador.
Los campos que componen cada entrada en la tabla de procesos varían de un sistema
operativo a otro, y generalmente son numerosos. Resulta típicos algunos como:
Todo proceso presente en un sistema operativo se identifica por un número entero, conocido
como identificador de proceso (PID).
Un proceso ejecutándose en modo usuario sólo podrá acceder a unas partes de su propio
espacio de direcciones, como el código, los datos y pila. No obstante, no podrá acceder a otras
partes de su propio espacio de direcciones, como las reservadas para estructuras de datos
asociadas al proceso usadas por el núcleo (kernel). De igual modo, tampoco podrá acceder al
espacio de direcciones de otros procesos o del mismo núcleo.
Por otra parte, un proceso que se ejecuta en modo núcleo podrá acceder a su propio espacio
de direcciones, así como al espacio de direcciones del núcleo, no así al espacio de direcciones
de otros procesos. No obstante, también podemos dividir los procesos entre aquellos que se
ejecutan en primer plano y los que se ejecutan en segundo plano.
6
Cuando un proceso se ejecuta en primer plano es porque el usuario está interactuando
directamente con él, mientras que, si el proceso se ejecuta en segundo plano, éste sigue activo
aun cuando el usuario no esté actuando directamente con el proceso.
EJEMPLO PRÁCTICO
Para ver el PID de los procesos en Windows, lo primero que haces es acceder al administrador de
tareas. Pulsamos CTLR + ALT + SUPR y hacemos clic en Administrador de tareas.
La columna de PID no suele estar visible, por lo que hacemos clic derecho sobre las columnas y en el
panel que nos aparece, marcamos PID.
7
Columna de PID
Fuente: Elaboración propia
Un proceso informático puede definirse como aquellas instrucciones que serán ejecutadas por el
microprocesador al leer un programa determinado. Haz clic en el siguiente enlace para conocer más
acerca de los procesos:
• Atributos: Son las circunstancias que debe conocer un sistema operativo sobre un
proceso para decidir sobre él.
8
• Nombre: Se trata de la referencia que se debe conocer de un atributo para que otro
proceso, o el sistema operativo, puedan “llamarle”.
• Estado actual: O lo que es lo mismo, la situación de ese proceso e n ese instante. Si
un proceso pasa de un estado activo a uno de suspensión, sus parámetros se
guardan en su bloque de control de procesos.
• Prioridad: Virtud de los procesos por la que se determina cuál de ellos accederá
con preferencia a la CPU antes que otro. Una de las técnicas que se usan en la
asignación de prioridades es la llamada de envejecimiento. Esta técnica rata de
aumentar la prioridad de aquellos procesos que llevan más tiempo en lista de espera,
con lo que se evita que un proceso no se active nunca o que quede obsoleto.
• Cantidad de Entrada/Salida: Hay procesos que realizan una gran cantidad de
operaciones de entrada y salida, otros no.
• Cantidad de Uso de CPU: hay procesos que no realizan muchas operaciones de
entrada y salida, en su lugar emplean la unidad central de procesamiento de manera
intensiva.
9
1.3 Estados de los procesos
¿SABÍAS QUE…?
Con transiciones entre estos diferentes estados, obtendríamos un grafo como el que siguiente:
Además de estos estados básicos, hay dos estados útiles al sistema operativo:
10
• Terminado: El proceso ha sido excluido del grupo de procesos ejecutables.
ARTÍCULO DE INTERÉS
En un sistema operativo, todo proceso presenta un estado que indica la situación de la ejecución en
que se encuentra, y el número de estados varía de un sistema a otro. En el artículo, podrás encontrar
más información sobre los estados de los procesos.
11
1.3.1 Transiciones entre los procesos
Existen cuatro transiciones básicas entre los procesos, las cuales podemos observar en la
siguiente figura:
• La transición 3, el planificador elige este proceso. Esta transición es llevada a cabo por
el planificador del procesador y se trata de entregar el control de este a un proceso
que ya está listo (debido a que el actual terminó, se bloqueó o se le quitó).
12
1.3.2 Estructura de los procesos
• Zona de usuario: normalmente, los tres primeros gigabytes de las direcciones lógicas.
• Zona del núcleo: lo ocupa el cuarto gigabyte.
La zona del núcleo de Linux está mapeada en todos los procesos del sistema, vemos en la
siguiente imagen la estructura interna de algunos procesos en un instante de su ejecución.
Esta estructura coincide con los dos modos del procesador que utiliza Linux:
En todos los sistemas operativos, los procesos están representados por una estructura de
datos donde se guarda toda la información relevante de éste: el PCB (Process Control Block).
Cada proceso del sistema en Linux tiene dos estructuras que lo identifican:
13
BLOQUE DE CONTROL DEL PROCESO DE PCB. Los datos que se describen a continuación
ayudan a fijar una idea sobre la utilización de estos PCBs:
ENLACE DE INTERÉS
1.4 Prioridades
Como la mayoría de los sistemas operativos modernos, Linux tiene la capacidad de ejecutar
múltiples procesos, compartiendo la CPU y los recursos del sistema entre ellos.
En Linux existen 140 valores de prioridades, aunque estos se dividen en dos tipos distintos:
• Nice, permite cambiar la prioridad del proceso. Su valor por defecto es 0, y el rango al
que permite modificar los procesos va del más alto (-20) al más bajo (19).
• Renice, permite alterar la prioridad en tiempo real y no detiene el proceso.
14
• Prioridad en tiempo real, cuyo valor de prioridad va de 1 a 99.
Un proceso puede crear otros procesos y, de igual forma, los nuevos procesos pueden crear
otros y así sucesivamente. Para representar de manera gráfica el proceso de creación sucesiva
de procesos, se emplea un grafo de procesos, y este no es más que un árbol dirigido con raíz,
con un arco que va del nodo Pi al nodo Pj. Así, se dice que Pi es el padre de Pj o que Pj es hijo
de Pi. Cada proceso tendrá un solo padre, pero tantos hijos como sean necesarios.
Árbol de procesos
Fuente: elaboración propia
Existen varias formas para que un proceso cree otro al hacer uso de una operación con este
objetivo (como un fork). Para ello, se debe tener en cuenta cómo continúa la ejecución y como
se compartirán los recursos.
15
Por otro lado, de compartir los recursos, se podrán instrumentar también dos casos:
Un proceso termina cuando ejecuta su última instrucción, sin embargo, existen circunstancias
en que se requiere terminarlo en forma forzada. Un proceso termina a otro mediante una
instrucción del tipo Kill Id.
¿SABÍAS QUE…?
La operación kill se invoca únicamente por un proceso padre para terminar la ejecución de un
proceso hijo. Ya que la instrucción necesita de la identificación del proceso a ser terminado, la
instrucción fork devuelve esta información (Id = fork L).
ENLACE DE INTERÉS
En muchos sistemas operativos se establece como condición que los procesos hijos no podrán
continuar su ejecución si el padre ya ha sido finalizado. Cuando un proceso no termina su
ejecución durante todo el tiempo en que el sistema operativo esté funcionando se dice que es
un proceso estático. Un proceso que finaliza se denomina proceso dinámico. Cuando un
sistema operativo consiste en un número limitado de procesos estáticos, su grafo de procesos
será también estático; es decir, nunca cambiará. En caso contrario, será dinámico. No
obstante, la estructura estática solo está presente en sistemas operativos muy simples.
16
EJEMPLO PRÁCTICO
Como administrador de sistemas informáticos en una empresa de informática, te han pedido que
crees un proceso. Para ello, sabes que el núcleo de UNIX dispone de varias estructuras de datos para
gestionar los procesos, siendo la más importante de ellas la tabla de procesos, que contiene una
entrada por cada proceso. En UNIX, los procesos se crean a partir de otros procesos, y la jerarquía es
como sigue:
1. PID 0: swapper.
2. PID 1: init.
3. PID 2: demonio de páginas.
Devuelve:
• El valor –1 en caso de error.
• El valor 0 al proceso hijo y PID del proceso hijo al proceso padre, en caso de éxito.
Ahora, copiamos el siguiente código en lenguaje C, que creará procesos y ejecutará la orden ls –l.
#include <stdio.h>
#include <fcntl.h>
#include <unistd.h>
#include <errno.h>
#include <unistd.h> // librerias para procesos
#include <sys/types.h>
main() {
pid_t IdentificadorDeProceso ;
printf("Soy el proceso %d \n", getpid()) ;
printf("Voy a crear un proceso hijo\n") ;
17
IdentificadorDeProceso = fork() ;
if (IdentificadorDeProceso == -1)
printf("Se ha producido un error al crear el hijo\n") ;
else if (IdentificadorDeProceso == 0){
printf("Soy el nuevo proceso hijo (%d)\n", getpid()) ;
printf("mi proceso padre es (%d)\n", getppid()) ;
printf("voy a ejecutar el comando LS -l (%d)\n", getppid()) ;
execl("/bin/ls", "ls", "-l", NULL);
}
else {
printf("Sigo siendo el proceso padre. He creado") ;
printf("el proceso %d\n", IdentificadorDeProceso) ;
} /* else */
wait(NULL);
return(0);
} /* main */
En el terminal, se debe ejecutar el comando gedit practica.c para abrir un editor de texto, a
continuación, escribir las siguientes líneas:
Practica.c
Fuente elaboración propia
Ejecución practica.c
Fuente elaboración propia
18
VÍDEO DE INTERÉS
Si quieres saber más sobre la jerarquía y los estados de un proceso, puedes acceder al vídeo y ampliar
tus conocimientos sobre el tema.
Tanto en los sistemas operativos Windows como UNIX, existen una serie de procesos que son
de vital importancia para el óptimo funcionamiento del sistema. En los sistemas operativos
UNIX, los procesos están identificados por el PID, así como por el espacio de memoria que
emplean, dividido en tres segmentos: el código, los datos y la pila.
Por su parte, los programas en Windows son controlados por eventos. De esta forma, el
programa principal aguarda la llegada de un evento (hacer clic derecho en el ratón) para
invocar un procedimiento que procese tal evento. La creación de procesos en Windows se
lleva a cabo mediante la llamada CreateProcess, que primero crea el proceso y luego carga el
programa en el nuevo proceso.
19
2.1 Funciones de los procesos habituales
En la tabla siguiente se recogen las funciones de los procesos habituales del sistema operativo
UNIX:
PROCESO FUNCIÓN
Crear un nuevo proceso idéntico al proceso
Fork
padre.
Exit Finalizar un proceso.
Bloquear el proceso que lo ha llamado hasta
Wait
que uno de los procesos hijos sea destruido
En la tabla siguiente, se exponen algunos de los procesos más habituales del sistema operativo
Windows:
PROCESO FUNCIÓN
20
WINDOWS UNIX FUNCIÓN
Cuando aparecen procesos que no tenemos identificados en el sistema, conviene realizar una
investigación previa en internet. En los sistemas Windows actuales, si accedemos al
administrador de tareas, disponemos de una opción de buscar en línea, abriendo el navegador
y mostrando información sobre ese proceso.
21
COMPRUEBA LO QUE SABES
EJEMPLO PRÁCTICO
Estás utilizando el Administrador de Tareas de Windows y ves un proceso que desconoces, igfxEM
Module. Ante la duda de que sea un proceso malicioso, como un virus, decides buscar en línea para
saber más acerca de él.
Haces clic con el botón derecho sobre el proceso que quieres investigar, y luego haces clic en Buscar
en línea.
Buscar en línea
Fuente: elaboración propia
Se abrirá una ventana en el navegador de internet, que te lleva al buscador de Microsoft, Bing. A la
derecha de la ventana, podrás ver información referente al proceso en cuestión.
22
Información sobre el proceso igfxEM.exe de Windows
Fuente: elaboración propia.
Trabajas con un ordenador con un sistema operativo Ubuntu Linux. Tu jefe quiere adquirir
nuevo software para la administración de las bases de datos, y tiene tres opciones en mente.
Para ver cuál de los tres programas es más eficiente, los instalas y accedes a la pestaña
recursos, donde ves información relativa a los recursos que cada programa consume,
averiguando qué programa es el más eficiente.
Un proceso consiste en un entorno formado por todos los recursos que el sistema necesita
para ejecutar programas. Para el sistema operativo, un proceso es un objeto más que debe
gestionar y al que dar servicio. Para ver los procesos en modo consola en Linux, empleamos el
comando ps. De no añadir ningún otro parámetro, el comando ps mostrará todos los procesos
del usuario con el que estamos conectados al sistema.
23
• Ps -l: muestra información como el UID y el valor “nice”.
• Ps -u: muestra información relativa al usuario conectado en ese momento.
Por defecto, el comando ps nos mostrará las columnas TIME, CMD, PID, TTY.
• USER: usuario.
• TTY: terminal.
• CMD: programa que ha iniciado el proceso.
• PID: identificador del proceso.
• NI: prioridad del proceso.
• STAT: estado del proceso.
Ejecutar el comando ps -a
Fuente: elaboración propia
COMANDO FUNCIÓN
Nice Ajusta las prioridades de -20 a 19
Bg Pone un proceso en segundo plano
24
COMANDO FUNCIÓN
Fg Trae un proceso a primer plano
Killall Mata un proceso por su nombre
Permite matar los procesos que se
Top
muestran
Pstree Muestra el árbol de procesos
RECUERDA
PID es la abreviatura de Process ID, identificador de proceso. Se trata de un número que identifica de
manera inequívoca un proceso.
VÍDEO DE INTERÉS
La gestión de los procesos es una parte importante del cometido de un sistema operativo. Haz clic en
el siguiente video para conocer más al respecto:
En este apartado conoceremos las distintas formas con las que podemos monitorizar los
procesos y aplicaciones en sistemas operativos GNU/Linux.
El Monitor del sistema de Linux nos informa sobre los procesos del sistema operativo, el
hardware instalado, los programas y aplicaciones y sus servicios. Para acceder al Monitor del
sistema, podemos hacerlo con la opción de buscar, escribiendo monitor, o accediendo a
Sistema, luego Administración y por último Monitor de sistema.
25
Monitor del sistema en Ubuntu
Fuente: elaboración propia
Una vez dentro, podremos ver una ventana con tres opciones destacadas: procesos, recursos
y sistemas de archivos.
SISTEMA DE ARCHIVOS.
La pestaña de Sistema de archivos nos proporciona información del sistema de archivos del
sistema operativo Linux. Destacará el tipo de formato, la capacidad total, el espacio usado y el
disponible.
26
Sistemas de archivos, Linux
Fuente: elaboración propia
RECURSOS.
Accediendo a la pestaña Recursos, veremos una serie de gráficas relativas a los recursos
globales del sistema operativo, indicando el consumo de CPU, la memoria RAM y la tarjeta de
RED.
En las gráficas de consumo de CPU y memoria se mostrarán el eje Y los porcentajes y en el eje
X los segundos. Los gráficos de red muestran en el eje Y los KB/s que se reciben y envían a lo
largo del tiempo.
27
PROCESOS.
En esta pestaña veremos los procesos que están corriendo en este momento, y se mostrará
información como el nombre del proceso, el usuario, el consumo de la CPU, el identificador del
proceso, la memoria usada y la prioridad del proceso. En la esquina superior derecha aparecen
diferentes opciones, y se nos permite filtrar entre: procesos activos, todos los procesos, mis
procesos y dependencias.
Seleccionando un proceso de la lista haciendo clic con el botón derecho del ratón, veremos las
posibles acciones que podemos efectuar sobre ellos:
• Detener proceso.
• Propiedades del proceso.
• Finalizar proceso.
• Cambiar prioridad.
• Matar procesos.
• Continuar proceso.
• Mapas de memoria y archivos abiertos.
28
Acciones a realizar sobre los procesos Fuente: elaboración propia
Fuente: elaboración propia
EJEMPLO PRÁCTICO
29
Cambiar prioridad del proceso
Fuente: elaboración propia
3. Tras ello, vas a matar el proceso que no te interesa. Al igual que antes, haces clic derecho
sobre el proceso en cuestión y haces clic en Matar Proceso.
Matar proceso
Fuente: elaboración propia
Matar proceso
Fuente: elaboración propia
30
4.1 Línea de orden
Opciones:
• /s: sistema remoto al que se conecta.
• /v: da información detallada de la tarea.
• /fi: filtro (status, PDI, CPUtime…).
Opciones:
• /s: sistema remoto al que se conecta.
• /v: finaliza el proceso especificado junto a todos los procesos iniciados por él.
• /fi: filtro (status, PDI, CPUtime…)
La optimización de los recursos del sistema se puede llevar a cabo mediante la monitorización,
mejorando el rendimiento. Dicha monitorización la suele realizar el administrador del equipo y
para ello dispone de una serie de herramientas en los sistemas operativos, y otras que se
pueden instalar, facilitando la detección de posibles incidencias en el sistema, y obteniendo
información de aspectos que le ayuden a resolverla.
31
El administrador de tareas de Windows nos ofrece información relativa a aplicaciones,
programas, procesos del sistema operativo, actividad de red, rendimiento y usuarios. Entre
algunas de las tareas que se pueden realizar con el administrador de tareas, está cerrar
aplicaciones o procesos de manera manual.
Una vez dentro del administrador de tareas, podemos ver una serie de fichas que hacen
referencia a los procesos, el rendimiento, los usuarios, detalles o servicios del sistema
operativo.
La actualización de estos diversos elementos puede controlarse al hacer clic sobre Vista y
luego, Velocidad de actualización, donde se abre otro panel que nos permite elegir entre
cuatro opciones: alta, normal, baja o en pausa.
Velocidad de actualización.
Fuente: Elaboración propia
• Nombre del proceso (nombre del fichero ejecutable que está siendo ejecutado).
• PIP (identificador del proceso).
• Estado del proceso.
• Usuario que está ejecutando el proceso.
• Uso de la CPU del proceso.
• Memoria que el proceso está consumiendo.
32
• Breve descripción del proceso en ejecución.
En este apartado, las acciones que realizar sobre los procesos son varias:
• Finalizar la tarea.
• Establecer una prioridad entre varias tareas.
• Buscar en línea. Permite abrir el navegador y buscar el proceso en internet,
conociendo de sus características más importantes).
• Abrir la ubicación del archivo.
Acciones que podemos realizar sobre los procesos en la pestaña Detalle del Administrador de tareas
Fuente: elaboración propia
33
Los procesos que aparecen en este apartado pueden ser iniciados tanto por el sistema como
por los distintos usuarios del equipo. Las aplicaciones podremos verlas dentro de la pestaña
Procesos. En otras variantes de Windows Server, esta opción aparece en una ficha diferente.
Esta pestaña nos permite ver las aplicaciones que se están ejecutando y están situadas en la
barra de tarea del usuario, así como realizar acciones sobre ellas.
Existe la posibilidad de ejecutar tareas desde el menú Archivo. Para ello, pulsamos sobre él, y
luego hacemos clic en Ejecutar nueva tarea y escribimos el nombre del programa, carpeta o
recurso a abrir.
34
EJEMPLO PRÁCTICO
Trabajas como administrador de los sistemas informáticos de una empresa de instalación de cocinas.
Hoy quieres aplicar un filtro con el que obtener aquellos procesos cuyo PID sea menor que 500.
2. Con el terminal de comandos abiertos, consultas la ayuda del proceso para ver de qué
manera proceder.
35
Cuando en un ordenador se dispone de uno o más sistemas operativos, el usuario ha de tener
opción de elegir con cuál de ellos quiere iniciar sesión. Esta es una de las funciones del gestor
de arranque.
36
5. El programa cargador del sistema operativo carga el núcleo (kernel), que continuará
con la secuencia de arranque hasta quedar listo para el inicio de sesión, por parte del
usuario.
6. El usuario accede en el sistema.
ENLACE DE INTERÉS
El primer sector de la memoria se llama Master Boot Record (MRB), y se utiliza para iniciar los
ordenadores. Haz clic en el siguiente enlace para conocer más sobre él:
Todo disco duro dispone de un sector 0 denominado Master Boot Record (MBR). Este es el
sector de arranque del disco duro, donde se aloja el programa encargado de pasar el control,
en secuencia de arranque, al sector cero de la partición que contiene el sistema operativo que
el usuario ha seleccionado.
Sector MBR
Al ser lo primero que se carga cuando se inicia el ordenador, un gestor de arranque permite
tener diferentes sistemas operativos, así como diferentes versiones, en un mismo disco duro.
Algunos de los gestores de arranque más populares son los siguientes:
37
• GRUB: el gestor de arranque más popular en las distribuciones Linux. Permite el
arranque de una amplia gama de sistemas operativos, como Windows, Ubuntu o
Debian. Sus principales características son las siguientes:
o Es flexible.
o Entiende distintos tipos de núcleos.
o Dispone de un archivo de configuración.
o Entiende diversos sistemas de archivos (ext2, ext3).
o Dispone de dos modos de trabajo.
¿SABÍAS QUE…?
RECUERDA
5.2 Demonios
Los demonios, daemons en inglés, son procesos no interactivos que funcionan en segundo
plano. Estos procesos son cargados en memoria, a la espera de que se lance alguna señar para
realizar una acción en concreto. Por lo general, se inician y detienen en la ruta
/etc/init.d/nombredemonio.
38
RECUERDA
ENLACE DE INTERÉS
¿Quieres conocer más acerca de los daemons? Haz clic en el siguiente enlace para descubrir más
sobre su historia o el origen de su curioso nombre:
39
5.3 Servicios
En los sistemas operativos Windows, los demonios son conocidos como servicios. Al igual que
los demonios, los servicios son programas cargados en el sistema operativo, que corren en
segundo plano. En Windows podemos verlos mediante el comando services.msc.
40
COMPRUEBA LO QUE SABES
¿Por qué crees que los demonios o servicios actúan en segundo plano?
Comenta y razona tu respuesta en el foro de la unidad.
EJEMPLO PRÁCTICO
6. ALGORITMO DE PLANIFICACIÓN
41
planificación de procesos se lleva a cabo en la función schedule() [kernel/sched.c]. Además,
existen otras funciones que también están involucradas en el reparto del tiempo de ejecución.
Planificación de procesos
Fuente: http://sopa.dis.ulpgc.es/ii-dso/leclinux/procesos/planificador/LEC6_CHEDULER.pdf
El algoritmo de planificación de Linux utiliza diversas políticas en función del tipo de proceso y
deberá repartir de la forma más justa posible el uso de la CPU entre diversos tipos de
procesos:
• Los procesos de tiempo real son aquellos cuyo tiempo de respuesta tiene que estar
acotado para que no excedan un cierto umbral máximo.
• Los procesos de segundo plano, como compiladores o procesos de cálculo, no tienen
interacción con el usuario, y su tiempo de respuesta no es crítico.
• Los procesos interactivos no suelen requerir mucho tiempo de cómputo, pero cuando
lo requieren, su respuesta debe ser relativamente rápida.
Los procesos de segundo plano, al igual que los procesos interactivos, pueden llegar a tener
una fuerte actividad de entrada y salida (E/S), por lo que a veces serán difíciles de distinguir.
VÍDEO DE INTERÉS
Para conocer más sobre la planificación de procesos que hace el sistema operativo, te recomendamos
acceder al siguiente tutorial.
42
6.1 Políticas de planificación Linux
A las políticas de planificación se les conoce también como scheduling, y tienen varios
objetivos:
Linux dispone de tres políticas de planificación para dos tipos de procesos: los procesos
normales de UNIX y los procesos de tiempo real. Estos procesos normales de UNIX incluyen
los procesos interactivos, y se planifican bajo la política SCHED_NORMAL. Esta política es del
tipo Round Robin, donde cada proceso tiene un quantum diferente, y en la que se potencia el
tiempo de respuesta de los procesos interactivos.
¿SABÍAS QUE…?
La planificación Round Robin es uno de los algoritmos de planificación de procesos más simples
dentro de un sistema operativo, que asigna a cada proceso una porción de tiempo equitativa y
ordenada.
Por su parte, los procesos de tiempo real han de tener un tiempo de respuesta asegurado, por
lo que el sistema les da prioridad. El procesador se le concederá al proceso de tiempo real con
mayor prioridad preparado para ejecución. Existen dos variantes:
• SCHED_FIFO: son procesos que no pierden el procesador hasta que se bloquean ellos
mismos, o cuando se activa un proceso de tiempo real que tenga más prioridad.
43
RECUERDA
Linux emplea un algoritmo sencillo para planificar las prioridades y seleccionar un proceso.
Cuando elige un nuevo proceso para que sea ejecutado, el planificador salvará el estado del
proceso en curso, los registros específicos del procesador y otros contextos en la estructura de
datos task_struct. Tras ello, restaurará el estado del nuevo proceso y lo ejecutará, dándole
control del sistema.
En este sentido, el algoritmo de planificación solo tiene que decidir qué proceso será el
siguiente en utilizar el procesador, eligiendo un proceso entre todos aquellos que no estén
bloqueados.
EJEMPLO PRÁCTICO
En la empresa para la que trabajas, disponen de un ordenador con un sistema operativo el cual tiene
un algoritmo de planificación similar al de Linux. Este sistema operativo tiene dos algoritmos de
planificación, donde uno es empleado para procesos de tiempo compartido y el otro es empleado
para los procesos en tiempo real.
Cada proceso puede utilizar cualquiera de las políticas de planificación, pero queremos evaluar cómo
seleccionar un algoritmo para nuestro sistema.
Para decidir un criterio o criterios a utilizar, llevaremos una evaluación analítica del sistema, y
obtendremos una fórmula o número que evalúe el rendimiento a partir de:
– El criterio.
– El algoritmo.
– La carga de trabajo del sistema.
44
ENLACE DE INTERÉS
¿Quieres descubrir más acerca de los algoritmos de planificación de procesos? Haz clic en el siguiente
enlace:
En la organización para la que trabajas, tu jefe está preocupado porque no entiende quién es el
responsable de las operaciones de sincronización de procesos. Le informas que de eso se
encarga el sistema operativo para que los usuarios como él puedan centrarse en utilizar el
ordenador y sus herramientas.
45
• Síncrona: en la que los dos procesos ejecutan servicios de forma simultánea. El emisor
ejecuta el servicio enviar, mientras el receptor ejecutará recibir.
• Asíncrona: en la que el emisor envía el proceso y prosigue su ejecución. El sistema
operativo ofrece un almacenamiento intermedio donde guardar la información que ha
sido enviada, hasta que el receptor la solicite.
En los sistemas operativos multitarea, como Windows o Linux, los procesos compiten por
acceder a los recursos compartidos o cooperan dentro de una misma aplicación para
comunicar la información requerida. Ambas situaciones son tratadas por el sistema operativo
mediante mecanismos de sincronización, los cuales permiten un acceso de forma coordinada a
recursos y elementos de comunicación compartidos.
La gestión de estos cambios de estado son un ejemplo de la sección crítica de código dentro
del sistema operativo que tiene que ser ejecutada por éste en exclusión mutua. Otros
ejemplos de código que hay que proteger al ser tratados como sección crítica son la
programación de los dispositivos de entrada y salida o el acceso a estructuras de datos y
buffers compartidos.
Cuando los procesos necesitan acceder a algún dispositivo, como en una operación de E/S, pasando
de estado bloqueado a estado preparado, abandonan la CPU una vez la operación ha terminado y
volver eventualmente a ejecución.
El espacio de direcciones es único en el interior del núcleo del sistema operativo, por lo que la
comunicación se resuelve empleando variables de memoria compartida. Como contrapartida a
la agilidad de este esquema, es necesario emplear mecanismos explícitos de sincronización
que garanticen el acceso exclusivo a las variables compartidas. De definir buffers o colas
compartidas a las que se proporcione acceso exclusivo, es posible usar esquemas de
comunicación más elaborados, como el del productor-consumidor.
46
¿SABÍAS QUE…?
En el esquema cliente-servidor los clientes producen peticiones que son consumidas por el servidor
de un recurso determinado.
Cuando los procesos que se comunican mediante los esquemas de estructura cliente-servidor,
no comparten el espacio de direcciones, lo que sucede especialmente en sistemas basados en
micronúcleo. En este caso, son necesarias las primitivas de comunicación por paso de
mensajes que, al gestionar la sincronización de forma implícita, simplifican la programación de
la comunicación.
ARTÍCULO DE INTERÉS
La comunicación entre procesos es una función básica de los sistemas operativos que provee un
mecanismo que permite a los procesos comunicarse y sincronizarse entre sí, normalmente a través
de un sistema de bajo nivel de paso de mensajes que ofrece la red subyacente.
47
múltiples variables sin un hilo de ejecución separado que lleve los cambios conflictivos a esos
datos.
¿SABÍAS QUE…?
La sección crítica puede ser utilizada para asegurarse de que un recurso compartido (un monitor), sea
accedido por un solo proceso a la vez.
La forma en cómo se implementan las secciones varía dependiendo del sistema operativo. Sólo
un proceso puede estar en una sección crítica a la vez. Si un proceso quiere entrar a la sección
crítica, se seguirán los pasos siguientes:
La decisión de qué proceso es el elegido para entrar en el paso 3, puede tener consecuencias
que hay que tener en cuenta. En general, puede asumirse disciplina FIFO. Un aspecto a
destacar es cómo se lleva a cabo la espera en el código que entra en la sección crítica, lo que
determina el tipo de mecanismo de sincronización que se ha de emplear. Esto depende del
tiempo que el proceso tiene que esperar para acceder a la sección crítica.
Respecto a las propiedades del acceso exclusivo a secciones críticas, Dijkstra señala los
siguientes criterios de validez de un mecanismo de sincronización para el acceso exclusivo a
una sección crítica:
Existen otros criterios que determinan la calidad del mecanismo y que hacen referencia a su
rendimiento. Estos son:
48
• La productividad, hace referencia al número de operaciones de sincronización por
unidad de tiempo que el mecanismo puede soportar.
• El tratamiento equitativo entre los procesos como, por ejemplo, seguir una política
FIFO para acceder a la sección crítica.
VÍDEO DE INTERÉS
En el vídeo podrás conocer con más detalle qué son los conceptos de concurrencia y paralelismo en el
contexto de los lenguajes de programación.
La técnica que se emplea por lo común para conseguir la exclusión mutua es inhabilitar las
interrupciones durante el conjunto de instrucciones más pequeño, que impedirá la corrupción
de la estructura compartida (la sección crítica). Esto impide que el código de la interrupción se
ejecute en mitad de la sección crítica.
49
¿SABÍAS QUE…?
La operación test-and-set realiza ambas operaciones sin liberar el bus de memoria a otro procesador.
Así, cuando el código deja la sección crítica, se despeja la bandera. Esto se conoce como spin lock o
espera activa.
Los semáforos permiten interbloqueos (deadlocks) en los que un proceso obtiene un semáforo, otro
proceso obtiene el semáforo y ambos se quedan a la espera de que el otro proceso libere el
semáforo. Haz clic en el siguiente enlace para conocer más acerca de los deadlocks:
Edsger W. Dijkstra dio en 1968 con una solución al problema de la exclusión mutua,
introduciendo del concepto de semáforo binario. Esta técnica resuelve muchos de los
problemas de sincronización entre procesos, y a día de hoy forma parte del diseño de la
mayoría de sistemas operativos y lenguajes de programación concurrentes.
50
Edsger W. Dijkstra, científico de la computación
Fuente: https://optienterazavala.wordpress.com/2014/09/15/biografia-de-edsger-w-dijkstra/
Un semáforo binario consiste en un indicador (S) de condición que registra cuando un recurso
está disponible o no. Un semáforo binario sólo emplea dos valores: 0 y 1. Cuando para un
semáforo binario S = 1, el recurso está disponible y la tarea lo puede utilizar.
Si, por el contrario, para el semáforo binario S = 0, el recurso no está disponible y el proceso
tendrá que esperar. Los semáforos se implementan con una cola de tareas o de condición, a la
cual se añaden los procesos que están en espera del recurso. Sólo se permiten tres
operaciones sobre un semáforo:
• Inicializar.
• Espera (wait).
• Señal (signal).
¿SABÍAS QUE…?
La notación empleada originalmente por Dijkstra para referirse a las operaciones fue P (espera) y V
(señal)
De esta forma, un semáforo binario es un tipo de datos que únicamente puede tomar los
valores 0 y 1, que trae una cola de tareas asociada y con tres operaciones para actuar sobre él.
Una operación es un procedimiento que se implementa como una acción indivisible. Por ello,
la comprobación y el cambio de valor del indicador se realizan como si fuese una sola
51
operación, lo que es de especial importancia cuando se quiere diseñar el planificador de
tareas. Las operaciones se describen de la siguiente forma:
52
EJEMPLO PRÁCTICO
Tienes dos procesos recurrentes donde A no puede ejecutar A2 hasta que B haya ejecutado B2,
¿cómo podrías solucionar este problema?
La solución está en usar un semáforo con valor inicial 0, tal que así:
Semáforo sync = 0
B A
… …
B1 A1
Sync.signal() Sync.wait()
B2 A2
… …
VÍDEO DE INTERÉS
Si quieres saber cómo programar semáforos con POSIX y sus funciones, puedes acceder al siguiente
tutorial.
53
RESUMEN FINAL
Hay dos tipos de procesos: los que se ejecutan en modo usuario, que únicamente puede
acceder a unas partes de su propio espacio de direcciones, y los que se ejecutan en modo
núcleo (kernel), que puede acceder tanto a su propio espacio de direcciones como al espacio
de direcciones del núcleo.
Las características de los procesos son: atributos, nombre, estado actual, prioridad, cantidad
de entrada/salida, cantidad de uso de CPU, procesos de lote o interactivos, procesos en
tiempo real, la longevidad del proceso y sus derechos.
Un proceso puede estar en tres estados diferentes: en ejecución, si está en posesión de la CPU;
bloqueado, si está a la espera de un evento externo; y listo, cuando está detenido a la espera
de que se ejecute otro proceso.
En Windows a los procesos se les conoce como servicios, mientras que en Linux los
denominamos daemons (demonios). En ambos sistemas operativos podemos interactuar con
los procesos, acceder a su información, detenerlos, matarlos (kill) y gestionarlos, tanto
mediante herramientas gráficas (como el administrador de tareas de Windows o Monitor de
tareas en Linux) como mediante comandos en el terminal de comandos de Windows o Linux.
54