Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Caso práctico
Ya se instauró el sistema en la empresa y
ahora llega el momento de exprimir al máximo
todas las prestaciones que nos ofrece.
Caso práctico
La administración de los procesos no es
simplemente iniciar programas o detenerlos, sino
que hay que tener una buena base de cómo
funciona el sistema operativo al nivel de los
procesos, qué información se recoge en un proceso,
qué estados puede adoptar y cómo cambia entre
ellos. Vindio, que no es ajeno a todo esto,
identificará todo lo anterior y lo interpretará
adecuadamente para llevar a cabo una buena
administración.
Alain Bachellier (CC BY-NC-SA)
Su estado actual.
Su PID (número identificador de proceso). José Carlos Gallego
(Elaboración propia)
Valores de registros asociados a él, como el contador de programa, los
punteros, acumuladores, etc.
Valores de los recursos asignados: espacio en memoria, archivos, E/S, etc.
Autoevaluación
¿Cuál de las siguientes afirmaciones es CORRECTA?
No todos los procesos que se crean en el sistema deben comunicarse
entre sí.
Todos los procesos del sistema se recogen en el BCP.
Los procesos pueden estar en varios planos: primero, segundo, tercero,
…
Todos los procesos del sistema son competitivos.
Solución
1. Opción correcta
2. Incorrecto
3. Incorrecto
4. Incorrecto
1.1.- Estados de un proceso.
Un proceso, a lo largo de su vida, cambia de estado. En
concreto, un proceso puede estar en uno de los siguientes
estados:
Autoevaluación
Señala la afirmación CORRECTA.
Un mismo proceso no puede encontrarse en más de un estado a la vez.
Un proceso no puede cambiar de estado tantas veces como necesite.
El proceso que está utilizando la CPU se dice que está en estado
preparado.
El estado suspendido siempre deja al proceso a la espera de que
suceda un evento.
Solución
1. Opción correcta
2. Incorrecto
3. Incorrecto
4. Incorrecto
1.2.- Creación de procesos.
La creación de un proceso se hace a través de la llamada al
sistema "crear proceso" desde otro proceso denominado
proceso padre. El proceso resultante se denomina proceso
hijo y es prácticamente una réplica de su padre.
Los procesos se marcan en su creación con un número único Clker-Free-Vector-Images (Dominio público)
llamado identificador de proceso (PID). Salvo el proceso raíz,
todos los procesos llevan dos números:
Después de que un proceso genera un hijo, ambos continúan ejecutándose desde el punto
en el que se hizo esa creación.
Autoevaluación
¿Cuántos números identificadores lleva un proceso?
Todos llevan uno: el PID.
Todos llevan uno: el PPID.
Todos llevan dos: el PID y el PPID.
El proceso padre lleva uno y el resto dos.
Solución
1. Incorrecto
2. Incorrecto
3. Incorrecto
4. Opción correcta
1.3.- Terminación de procesos.
Generalmente un proceso finaliza su ejecución cuando pasa
al estado terminado y le pide al sistema que lo elimine
utilizando la llamada al sistema "exit".
Procesos huérfanos
Se denominan así a los procesos que quedan en el sistema cuando su padre ha
finalizado. Cuando esto sucede, el PPID del proceso (para sistemas UNIX) pasa a
ser el PID del proceso inicial.
Procesos zombies
Son procesos que han finalizado pero su padre los mantiene como vivos. Este tipo de
procesos suelen ser fruto de errores de programación o de fallos del sistema. Al
contrario que los procesos huérfanos, los zombies no son adoptados por el proceso
inicial, sino que tienden a ser eliminados, para evitar el consumo de recursos.
Autoevaluación
Señala la afirmación CORRECTA.
Un proceso no puede matarse si está en estado de ejecución.
Si un proceso tiene hijos no puede matarse sin que mueran también sus
hijos.
Al contrario que un proceso huérfano, un proceso zombie no es
adoptado por el proceso padre.
El proceso zombie no suele ser fruto de errores de programación o
fallos del sistema.
Solución
1. Incorrecto
2. Incorrecto
3. Opción correcta
4. Incorrecto
1.4.- Modelos de proceso.
La forma en que un sistema se organiza para gestionar sus procesos da lugar al modelo de
proceso. Los sistemas operativos actuales pueden seguir los siguientes modelos:
Modelo de 2 estados.
Es el modelo más simple. El proceso, tras crearse pasa al estado no-ejecutado, a la
espera de entrar en ejecución. Cuando entra en ejecución, puede ejecutarse por
completo (y morir) o hacerlo por partes.
Modelo de 3 estados.
El modelo anterior es ideal para procesos sin prioridades y que siempre estén listos
para ejecutarse. Sin embargo, esto no siempre sucede y algunos pueden necesitar
esperar por un suceso (que esté listo un archivo, que esté disponible un dispositivo de
E/S,..). Para ello, en este nuevo modelo se divide el estado no-ejecutado en dos:
preparado y bloqueado, cada uno con su propia cola de procesos.
Modelo de 5 estados.
Para mejorar la gestión de los procesos, al modelo anterior se le añaden dos estados
extremos: nuevo y terminado, encargados de controlar los procesos existentes en el
sistema (en nuevo se dan de alta y en terminado se dan de baja).
Modelo de 7 estados.
Los procesos a la espera de ser ejecutados residen en memoria principal (en las colas
de preparado y bloqueado). Para evitar que la RAM se colapse se hace una variación
en el modelo anterior, creando unas colas similares a las ya existentes pero en
memoria secundaria. Esto da lugar a los estados suspendido-bloqueado y
suspendido-preparado. Entre las correspondientes colas se produce una operación de
intercambio cada vez que se pasa un proceso de una a otra. Hay que tener en cuenta
que esta operación consume recursos y tiempo de CPU.
El proceso pasa gran parte de su vida esperando ser ejecutado. Cuando sale de ese estado
sin haber finalizado su ejecución (porque es expropiado a otro estado, suspendido o
bloqueado) se espera que la próxima vez que alcance el estado de ejecución continúe
donde lo había dejado.
Para que esto sea posible se aplica una operación conocida como cambio de contexto.
Cuando el cambio de contexto se hace sin salir de memoria principal, el tiempo y los
recursos empleados no son excesivos; pero en los cambios de contexto entre memoria
principal y secundaria la situación cambia, siendo más lenta y costosa.
La técnica de cambiar de contexto es útil cuando se quiere dar tiempo de ejecución a todos
los procesos, pero un uso excesivo del cambio de contexto puede ser contraproducente ya
que el procesador estaría más tiempo ocupándose de las acciones asociadas a los cambios
de contexto que a la ejecución de los procesos que se intercambian.
Autoevaluación
Señala la afirmación que sea CORRECTA referente al cambio de
contexto.
No se basa en el concepto de concurrencia.
Puede llevarse a cabo con un único proceso, aunque no es
recomendable.
Se puede hacer sólo en memoria principal.
Se puede hacer sólo en memoria secundaria, aunque es muy costoso.
Eso es incorrecto.
Solución
1. Incorrecto
2. Incorrecto
3. Opción correcta
4. Incorrecto
2.- Planificación de procesos.
Caso práctico
Trabajar con procesos no es una tarea fácil porque,
entre otras cosas, no son objetos que puedan
visualizarse simplemente. La forma en que trabajan no
es trivial, y Laro se pregunta qué mecanismos seguirán
para coordinarse de forma tan armoniosa. Investigando
descubre que el sistema tiene una especie de plan
para organizarlos y que todos participen.
Los procesos no se ejecutan en cualquier orden, sino que siguen un orden establecido por
el sistema operativo. La forma en la que el sistema operativo gestiona los procesos es lo
que se conoce como planificación y la herramienta que lo hace recibe el nombre de
planificador (en inglés, scheduler ).
Política no expropiativa : Una vez que el proceso accede al recurso, se permite que
haga uso de él hasta que ya no lo necesite.
Política expropiativa : Se proporciona acceso al recurso para un proceso pero, en un
determinado momento, se puede ceder el recurso a otro proceso diferente, para lo
cual se le retirará el acceso al primero (pasando a estado suspendido, bloqueado o
preparado, según corresponda).
La política expropiativa es mucho más justa cuando existen procesos muy diferentes, ya
que permite, por regla general, que ningún proceso acapare el recurso. Por otro lado, es
más compleja y consume más recursos (en las expropiaciones), por lo que habrá que
sopesar cuál es más adecuada en cada situación concreta.
Autoevaluación
Señala la afirmación que sea CORRECTA.
La política expropiativa es más eficiente que la no expropiativa.
La expropiación de un proceso conllevará obligatoriamente un cambio
de contexto.
El planificador no se encarga de que la CPU esté ocupada el mayor
tiempo posible.
No es correcto.
Incorrecto.
Solución
1. Incorrecto
2. Opción correcta
3. Incorrecto
4. Incorrecto
2.1.- Niveles de planificación.
La planificación es demasiado compleja como para realizarse
en una única fase. Los sistemas operativos, en general,
disponen de tres niveles de planificación, cada uno con su
planificador:
Este algoritmo tiene el inconveniente de que los procesos con prioridad baja pueden
relegarse en el tiempo.
Aquí, los procesos demasiado largos harían esperar al resto de procesos hasta que
termine de ejecutarse.
Una vez que el proceso entra en ejecución, se ejecuta por completo, aunque haya en
cola procesos más cortos.
Otro inconveniente que tiene este algoritmo, es que es muy complicado conocer el
tiempo de duración de los procesos antes de su ejecución. Es un algoritmo teórico.
José Carlos Gallego (Elaboración propia)
Como se puede observar, cada algoritmo tiene sus ventajas y sus inconvenientes. En la
práctica se utiliza un sistema híbrido de varias colas, en las que se aplican diferentes
algoritmos según las necesidades y el momento concreto, con la finalidad de optimizar los
recursos y los tiempos de respuesta del sistema.
3.- Hilos de ejecución.
Caso práctico
La realidad es que ahora, con equipos tan modernos y
con procesadores potentes y de varios núcleos eso de
trabajar con procesos queda un poco obsoleto y se
impone el uso de unos mecanismos llamados hilos.
Laro había oído en alguna ocasión hablar de los hilos
pero no había trabajado con ellos, así que va a
investigar cómo los hilos pueden ayudarle en la
administración de los procesos del sistema.
El manejo de los procesos, como se ha podido ver, es bastante complejo. Como alternativa
a la visión general del proceso como ente básico surgió hace relativamente poco tiempo el
concepto de hilo (thread).
Al tratarse de entidades mucho más ligeras, los tiempos empleados para su manejo
(creación, terminación, cambio de estado y de contexto) son mucho menores respecto
a los procesos.
El tiempo para crear un hilo es mucho menor que para crear un proceso.
Autoevaluación
¿Cuál de las siguientes afirmaciones sobre sistemas operativos
modernos es CORRECTA?
Un proceso no puede tener más de un hilo de ejecución.
Un mismo hilo puede abarcar más de un proceso.
Dos hilos de un mismo proceso no pueden estar en diferente estado.
Un proceso puede estar constituido por un único hilo de ejecución
aunque el sistema sea multihilo.
Solución
1. Incorrecto
2. Incorrecto
3. Incorrecto
4. Opción correcta
3.1.- Estructura de un hilo.
De forma muy simple podemos decir que un hilo sigue la siguiente estructura:
Bloque de control del hilo: Similar al BCP, pero específico para el hilo.
Pila de ejecución: Estructura que contiene la información de estado del hilo
(punteros, registros, etc.).
Procesos monohilo.
En este tipo de procesos no existe el concepto de hilo como tal. La representación del
proceso es similar a la explicada al comienzo de la unidad.
Procesos multihilo.
Sólo existe un BCP y un espacio de direcciones asociadas al proceso. Sin embargo,
para cada hilo, hay un bloque de control y una pila de ejecución separados.
Los hilos están pensados para que no sean independientes entre sí. De este modo, es
posible que un hilo pueda acceder a la pila de otro hilo y modificarla. En esta interacción y
en el tiempo que se emplea en ella (mucho menor que la comunicación entre procesos)
reside, fundamentalmente, su potencialidad.
3.2.- Estados de un hilo.
Los hilos siguen el diagrama de 3 estados que se explicó para
los procesos.
Como se ve, los hilos tienen un comportamiento estacional similar a los procesos. Este
hecho unido a que los hilos son mucho más ligeros que los procesos, hace que los tiempos
de creación, terminación y cambios de estado (y de contexto) sean mucho más reducidos,
con lo que se gana en eficiencia.
Autoevaluación
¿Cuál de los siguientes cambios de estado de un hilo es CORRECTO?
De preparado a ejecución.
De preparado a bloqueado.
De bloqueado a ejecución.
1. Opción correcta
2. Incorrecto
3. Incorrecto
4.- Interrupciones y excepciones.
Caso práctico
Todo va bien hasta que llegan los problemas, y
resulta que ahora aparecen tareas que se paran a
medias y errores en ejecuciones de procesos. Para
tratarlos habrá que conocerlos antes, así que
Vindio va a identificar estas incidencias y a adoptar
los mecanismos que sean necesarios para cada
caso.
Interrupción .
Se produce cuando se quiere que la CPU deje de
ejecutar el proceso en curso y pase a realizar otra
función solicitada por quien lanza la interrupción.
Cuando la CPU realiza esa función se dice que está
atendiendo la interrupción.
Excepción.
La excepción es un tipo de interrupción provocada por la propia CPU, a causa de un
error en la ejecución del proceso en activo, como pueden ser: la realización de
operaciones no permitidas, códigos de operación mal expresados, direcciones de
memoria fuera de rango, etc.
Solución
1. Incorrecto
2. Opción correcta
5.- Demonios.
Caso práctico
La primera vez que Laro oyó hablar de demonios
haciendo referencia a sistemas operativos, pensó en
cualquier cosa menos en su relación con los procesos.
Ahora resulta que un sistema operativo tiene demonios
y que son importantes para su funcionamiento.
Consciente de esto, Laro inicia la búsqueda de los
demonios del sistema para su administración.
Debes conocer
En el siguiente documento se explica cómo realizar las diferentes
operaciones sobre los servicios (Windows) usando la nueva línea de
comando Powershell.
Autoevaluación
¿Qué orden utilizarías en Windows para iniciar el servicio
"remoteregistry" que habilita el registro remoto?
# remoteregistry start
Solución
1. Incorrecto
2. Incorrecto
3. Opción correcta
4. Incorrecto
6.- Gestión de procesos en Windows.
Caso práctico
La tarea diaria del administrador de sistemas no es
otra cosa que eso, administrar sistemas. Vindio
debe hacerlo a diario con todos los equipos que
tiene a su cargo. Ahora toca trabajar con los equipos
que tienen un sistema operativo Windows, así que
los reconocerá y hará una gestión eficiente de los
procesos.
sixsixfive (Dominio
público)
6.1.- Gestión de procesos por interfaz
gráfica en Windows.
La gran parte de las operaciones de gestión de procesos en
Windows se hace desde el Administrador de tareas.
Recordemos que esta herramienta es accesible desde la
combinación de teclas [Ctrl]+[Mays]+[Esc].
Procesos.
A través de esta pestaña podemos gestionar los
procesos que están activos en el sistema. Esta
información se muestra resumida, en forma de
aplicaciones, para que sea más sencillo de comprender.
En versiones antiguas, la información completa aparecía Windows Server 2019 (Elaboración propia)
También es interesante señalar que la información que se ofrece sobre los procesos
puede ser mucho más de la que aparece en la pestaña de "Detalles". Para incluir o
modificar las columnas de datos de cada proceso iremos a Ver > Seleccionar
columnas y escogeremos los campos que nos convengan.
Para cada proceso, en la pestaña "Detalles", podemos realizar, entre otras, las
siguientes acciones (haciendo clic derecho sobre él):
Servicios.
Mediante esta pestaña podemos administrar los servicios del sistema. En el listado
aparecen todos los servicios, tanto si están en activo como si no. No es posible
cambiar la información que se muestra sobre el servicio, como sucedía con los
procesos. Sobre cada servicio se pueden realizar estas
acciones (clic derecho sobre él):
Para obtener un listado de tareas, usaremos el comando tasklist, que nos dará un listado de
procesos con información tan variada como PID, estado, usuario, tiempo de CPU utilizado...
Y admite modificadores, que nos dan aún más posibilidades:
Windows también permite terminar procesos a través del comando taskkill (ver la sintaxis con
la orden taskkill /?). Un usuario estándar puede eliminar procesos asociados a él. Para
eliminar procesos del sistema o de otros usuarios es necesario tener privilegios de
administrador. Algunas opciones interesantes:
/pid 1234:
eliminará el proceso con PID 1234.
/im firefox.exe:
Cierre del proceso con nombre "firefox.exe". Se hará un cierre "ordenado"
del programa: comprobará si hay recursos abiertos, preguntará si queremos
guardarlos, etc...
/f: Combinado con las opciones anteriores, provoca la terminación inmediata y forzosa
del proceso, sin comprobación alguna. Se suele usar cuando el proceso ocasiona
algún problema y no se cierra correctamente de otra forma.
En PowerShell, se usan los llamados cmdlets para ejecutar las órdenes. Algunos de los
más interesantes asociados a la gestión de procesos son los siguientes:
Get-Process: Ofrece una cantidad enorme de información acerca de todos los procesos
en ejecución.Se hace necesario filtrarla, veamos cómo:
A través de filtros del sistema similares a los de GNU/Linux; por ejemplo: Get-
Process| more mostrará la salida paginada.
Con modificadores sobre el comando, por ejemplo Get-Process -Name fi* mostrará
sólo la información de aquellos procesos cuyo nombre empiece por "fi".
Stop-Process: Sirve para terminar un proceso. Podemos hacerlo de varias maneras:
Usando el PID del proceso: Stop-Process -id 1234 matará el proceso con PID 1234.
Usando el nombre del proceso: Stop-Process -name fi* matará aquellos procesos cuyo
nombre empiece por "fi".
Pedir confirmación antes del cierre: añadiremos -Confirm a cualquiera de los
anteriores, por ejemplo Stop-Process -id 1234 -Confirm
Caso práctico
La empresa tiene equipos Windows y también equipos
GNU/Linux, así que ahora toca administrar los
procesos de los equipos GNU/Linux. Laro sabe que
dispondrá de herramientas gráficas pero también debe
ser consciente de que existe un buen número de
comandos para utilizar desde la consola que le
ayudarán en muchas de las tareas típicas de gestión
de procesos.
Por otro lado, un proceso puede pasarse de primer plano a segundo plano, y viceversa,
cuantas veces se desee.
Solución
1. Incorrecto
2. Incorrecto
3. Opción correcta
4. Incorrecto
7.1.- Gestión de procesos por interfaz
gráfica en GNU/Linux.
Recordamos que GNU/Linux proporciona una herramienta
similar al Administrador del sistema de Windows llamada
Monitor del sistema. De esta herramienta nos detendremos
en la pestaña Procesos.
Para cada proceso, como sucedía en Windows, se pueden aplicar una serie de operaciones
(con clic derecho sobre el proceso en cuestión), de entre las que destacamos estas:
Debes conocer
En este documento se explica el uso de los comandos para mostrar
información de los procesos:
Debes conocer
En este documento se explica el uso de los comandos para cambiar el estado
de los procesos:
Debes conocer
En este documento se explica el uso de los comandos para cambiar la
prioridad de los procesos:
El comando nohup se usa para pasar un proceso a segundo plano haciéndolo inmune a
los hangup (cuelgues).
Cuando un proceso está detenido, se puede utilizar los comandos fg y bg para lanzarlo
en primer plano o en segundo plano, respectivamente.
Debes conocer
En este documento se explica el uso de los comandos para cambiar el plano
de los procesos.
Caso práctico
Cuando se está trabajando con sistemas operativos
a un nivel como este, es conveniente conocer
ciertos mecanismos como pueden ser aquellos que
adopta el propio sistema para iniciarse. Vindio
mantiene que es un tema importante porque
conocer cómo funciona una herramienta te ayuda a
identificar dónde falla, cuando falla. A nivel de
procesos el sistema operativo sigue una secuencia
de inicio que debería ser conocida de cara a poder
gestionarse o incluso modificarse.
Alain Bachellier (CC BY-NC-SA)
Secuencia de inicio.
Se ejecuta el gestor de arranque (BOOTMGR) y se
seleccionará el sistema operativo para iniciar. Posteriormente se hará una detección
del hardware instalado.
Secuencia de inicio.
Se ejecuta el gestor de arranque (GRUB, LILO,…) y se
seleccionará el sistema operativo para iniciar. Posteriormente se hará una detección
del hardware instalado.
Todos los servicios del sistema, en SysV, un script en /etc/init.d. Por otro lado, cada runlevel
tiene recopilados enlaces simbólicos de los scripts que se ejecutarían cuando el usuario
cambia de nivel en la carpeta /etc/rcX.d, donde X es el número del runlevel.
En la versión moderna, Systemd, se utilizan "alias" y ficheros target. Podemos ver la
correspondencia entre esos niveles en la imagen al principio de este punto.