Sie sind auf Seite 1von 6

T16. Sistemas Operativos. Gestin de Procesos.

1. Introduccin ........................................................................................................ 2
1.1. Relacin con los ciclos impartidos en FP ....................................................... 2
1.2. Introduccin a los SSOO ............................................................................... 2
1.3. Conceptos ..................................................................................................... 2
2. Procesos y el SO .................................................................................................. 2
2.1. Modelo de procesos ....................................................................................... 2
2.2. Comparticin del Procesador ......................................................................... 2
2.3. Creacin de un nuevo proceso ....................................................................... 3
2.4. Hilos (threads) o procesos ligeros ................................................................ 3
3. Planificacin del procesador ................................................................................ 3
3.1. Introduccin ................................................................................................. 3
3.2. Objetivos del planificador ............................................................................. 3
3.3. Algoritmos de planificacin ........................................................................... 4
4. Comunicacin y sincronizacin entre procesos .................................................... 5
4.1. Introduccin ................................................................................................. 5
4.2. Soluciones: software, hardware, semforos y mensajes ............................... 5
5. Bibliografa y Personalidades Influyentes/Destacadas ........................................ 6
5.1. Bibliografa ................................................................................................... 6
5.2. Personalidades Destacadas ........................................................................... 6
T16. Sistemas Operativos. Gestin de Procesos.

1. Introduccin
1.1. Relacin con los ciclos impartidos en FP
Este tema est directamente relacionado con los siguientes mdulos y ciclos formativos
de la rama de informtica:
CFGS Administracin de Sistemas Informticos: Sistemas informticos monousuario y
multiusuario (SyAI).
CFGS Desarrollo de Aplicaciones Informticas: Sistemas informticos multiusuario y en
red (SyAI).
CFGM Explotacin de Sistemas Informticos: Sistemas operativos en entornos
monousuario y multiusuario (SyAI).
1.2. Introduccin a los SSOO
Stallings, 2001. Un programa que controla la ejecucin de los programas de
aplicacin y que acta como interfaz entre el usuario de un computador y el
hardware del mismo
Conjunto de programas de control cuya finalidad es hacer ms fcil y eficiente el uso
del ordenador en que se ejecutan
Estn presentes en todo tipo de sistemas electrnicos que necesiten un software de
control sobre el que un usuario pueda trabajar fcilmente, desde super-ordenadores
con cientos de microprocesadores (Solaris, AIX, Linux), hasta en aparatos tan
comunes como agendas electrnicas (Windows Mobile o Palm OS), telfonos mviles
(Windows Phone, IOS o Android), y como no, ordenadores personales (Windows,
Linux, Mac OS X, etc.)
1.3. Conceptos
Proceso: Programa en ejecucin que comprende el valor actual del contador de
programa, los registros y de las variables.
Monoprogramacin: Slo se puede ejecutar un proceso y hasta que no se termine
no puede iniciarse el siguiente. Ya no existen. MSDOS era multitarea pero no expulsiva
Multiprogramacin/Multitarea: Se pueden ejecutar varios procesos
simultneamente, compartiendo el tiempo de uso de procesador. Mejor
aprovechamiento de los recursos y aumento del rendimiento del microprocesador
2. Procesos y el SO
2.1. Modelo de procesos
De manera conceptual se considera que cada proceso tiene su propia CPU virtual,
aunque la verdadera CPU alterna entre los procesos listos segn un determinado
algoritmo.
Cada proceso puede estar bsicamente en los estados en ejecucin, bloqueado
(esperando una E/S) o listo. Slo un proceso estar en ejecucin, y el planificador
decidir en cada instante a cual de los procesos en estado listo le cede la CPU.
El planificador constituye el nivel inferior del sistema operativo, y en l estn ocultos
todo el manejo de interrupciones, as como el de arranque y parada de los procesos.
Esto permite que el resto del SO. se estructure elegantemente en forma de procesos.
El SO utiliza una tabla de procesos que tiene una entrada por cada proceso, en sta,
guarda informacin sobre el estado del proceso, su contador de programa el puntero
de pila, memoria asignada, informacin relativa a su planificacin y a su utilizacin de
los recursos. Por ejemplo en Linux tiene el nombre de task_struct, y guarda, entre
otras propiedades, la prioridad y la poltica de planificacin (round robin, FIFO o
tiempo real).
2.2. Comparticin del Procesador
Multitarea cooperativa: las tareas cooperan en el reparto del procesador. Si una
tarea no cede el control el sistema quedar bloqueado. MSDOS/W3.11
Multitarea expulsiva o apropiativa: El SO recupera el control en cada interrupcin
de reloj hardware y decide si se contina ejecutando el mismo proceso, o si se le cede
la CPU a otro proceso. Windows, Unix, Linux, etc.
2.3. Creacin de un nuevo proceso
Cuando se crea un nuevo proceso (por ejemplo ejecutando un programa) se realizan
una serie de acciones:
o Cargar en memoria el cdigo y los datos
o Crear una nueva pila para el proceso
o Iniciar el bloque de control de procesos
o Dar a conocer el nuevo proceso al dispatcher
Pare crear un proceso en Unix se utiliza la llamada fork() que duplica el cdigo, los
datos y la pila del proceso llamante. la funcin fork() devuelve un cero al proceso hijo
y el pid del hijo al proceso padre. En el proceso hijo se podr llamar a continuacin a
exec() para ejecutar otro programa, cambiando as el cdigo y los datos.

2.4. Hilos (threads) o procesos ligeros
Unidad bsica de ejecucin que nicamente posee como propio el contador de
programa, los registros del procesador y la pila, y que comparte recursos como la
memoria o los archivos abiertos con los hilos de la misma tarea, facilitando as la
comparicin de recursos.
Una tarea posee recursos, pero no posee capacidad de ejecucin, debe tener al menos
un hilo de ejecucin. Un proceso clsico sera equivalente a una tarea con un hilo en
ejecucin.
Empleando hilos podemos tener varias unidades de ejecucin activas en una misma
aplicacin. Por ejemplo en un procesador de textos, un hilo recoge las pulsaciones del
teclado y visualiza el texto y otro hilo realiza las tareas de corrector ortogrfico. Otro
ejemplo son los sistemas cliente-servidor, en los que el servidor genera un hilo para
atender a cada proceso cliente, esto sucede en chats o servidores de pginas Web.
Como ventajas, los cambios de contexto entre hilos de la misma tarea son mucho ms
rpidos que entre procesos, adems, en sistemas multiprocesador los distintos hilos
de una aplicacin pueden ser ejecutados en paralelo en distintos procesadores.
Existe una biblioteca estndar POSIX Threads (pthreads.h) soportada por Linux y
Windows a partir de su versin Windows 2000 entre otros, que simplifica la creacin,
desarrollo, portabilidad y seguridad de aplicaciones multihilo para diferentes entornos.
En esta, existen llamadas para generar hilos como pthread_creare() que recibe como
parmetros la rutina (o funcin) que ejecutar el hilo, la memoria compartida y otras
opciones.
Sistemas como Solaris o Windows Server soportan hilos desde el ncleo, Linux en
cambio est basado en procesos y para trabajar con hilos lo hace mediante un
paquete que se ejecuta en modo usuario, esto acelera los cambios de contexto dentro
de un mismo proceso, pero genera otros problemas como que al bloquear un hilo de
un proceso, se bloqueen todos los de ese proceso.

3. Planificacin del procesador


3.1. Introduccin
El objetivo de un sistema multiprogramado es tener varios procesos ejecutndose
concurrentemente con objeto de maximizar la utilizacin de recursos del sistema. El
problema es determinar cul debe ser el orden en que el procesador es asignado a los
diferentes procesos.
Dispatcher (repartidor): Mdulo encargado de realizar los cambios de contexto y
transferir el control de unos procesos a otros
Scheduler (planificador): Responsable de definir las polticas de planificacin.
Funcionamiento: Cada cierto tiempo, se lanzar una interrupcin del reloj hardware
del sistema. En este momento el sistema recupera el control y el scheduler decide a
que proceso cederle la CPU. Por ltimo el dispatcher realiza los cambios de contexto
necesarios y le cede la CPU al nuevo proceso. De este modo se evita la monopolizacin
de la CPU. Al tiempo que tarda en lanzarse la interrupcin se le denomina quantum.
3.2. Objetivos del planificador
Trato justo, equidad, eficiencia, tiempo de respuesta bajo, tiempo de retorno bajo y
rendimiento alto.
Los objetivos dependern en parte de la funcin del sistema. Por ejemplo las versiones
home y profesional de Windows tienen un quantum bajo para beneficiar a las
aplicaciones interactivas, an a costa de no tener un aprovechamiento alto de la CPU,
lo que el usuario espera es que el ratn no se atasque y que el sistema responda
rpidamente a sus acciones. Por el contrario, en las versiones Server, se aumenta en
tiempo del quantum de modo que se benefician los servicios en segundo plano del
sistema tales como el IIS, el servidor DNS o el servidor de AD, aumentando a la vez el
aprovechamiento de la CPU.
3.3. Algoritmos de planificacin
FIFO: El procesador se asigna a los procesos en funcin del instante de llegada. Es un
algoritmo simple pero perjudica a las aplicaciones interactivas o las que requieren E/S.
No existen mecanismos de requisa por lo que se puede monopolizar la CPU.
Primero el ms corto: Asigna el procesador al trabajo cuya siguiente rfaga de CPU
sea ms pequea, minimizando as los tiempos de retorno y favoreciendo las
aplicaciones interactivas. Calcula el tiempo de la siguiente rfaga mediante la media
de las anteriores. Puede producir inanicin de los procesos con rfagas ms grandes.
Algoritmos con prioridad: Asocian a cada proceso una prioridad y acorde con ello
asignan el procesador al que tiene la prioridad ms alta. Se usa la tcnica de
envejecimiento, incrementando progresivamente la prioridad de los procesos que
esperan para que no se produzca inanicin de los procesos con menos prioridad. La
prioridad depende de factores internos (requisitos de memoria, E/S, etc.) y externos
(polticas de usuarios, prioridad de unas aplicaciones sobre otras, etc.).
Round Robin: En los algoritmos anteriores se puede monopolizar la CPU porque no
existe requisa. Para solucionarlo en ste se limita la mxima cantidad de tiempo que
un proceso puede correr sin producirse un cambio de contexto, a este tiempo se le
conoce como quantum. Un reloj hardware lanza una interrupcin peridicamente,
requisando as la CPU al proceso y cedindosela al siguiente proceso en la cola
circular. Especialmente diseado para sistemas de tiempo compartido. El problema es
que slo existe una cola y no se distingue entre tipos de trabajos.
Colas multinivel: Dividen la cola de procesos preparados en colas separadas en
funcin del tipo de trabajo. Cada cola puede tener su propio algoritmo de planificacin
y adems debe existir otro algoritmo para determinar en qu cola se ubica
inicialmente cada uno de los trabajos. Los trabajos de una cola de menos prioridad no
se ejecutarn hasta que no existan procesos en las colas con ms prioridad. En colas
multinivel realimentadas, los procesos pueden moverse de una cola a otra de forma
dinmica, normalmente, las aplicaciones interactivas y con mucha E/S se les aumenta
la prioridad, y las tareas con poca E/S y uso intenso de la CPU se des disminuye la
prioridad para que no monopolicen la CPU. Este tcnica es muy usada en SO
interactivos actuales.
Algoritmo de Linux:
o Relativamente simple y equitativo, evitando posibles problemas de inanicin. El
quantum es de 200ms, si la tarea no libera la CPU en ese tiempo se le requisa la
misma y se guardan sus registros y su informacin de estado en la estructura
task_struct y se recupera el estado de la nueva tarea.
o Se distingue entre procesos ordinarios y de tiempo real y la prioridad de los
mismos, guardando esta informacin en la task_struct en los campos policy,
priority y rt_priority.
o Linux soporta sistemas con varios procesadores en configuracin simtrica (SMP,
symmetric multiprocessing), pudiendo repartir la carga entre los distintos
procesadores.
o Se utilizan colas multinivel, en cada cola de procesos con la misma prioridad se
asigna la CPU segn el algoritmo round robin. Los procesos que ms usan la CPU
disminuyen su prioridad dinmicamente para evitar la inanicin de otros procesos
Algoritmo de sistemas Windows:
o La unidad bsica de planificacin es el hilo o therad. La planificacin es expulsiva,
utiliza quantums de tiempo y est basada en prioridades, adems es vlida para
sistemas con varios procesadores (SMP).
o Utiliza 32 niveles de prioridad (0-31), siendo las comprendidas entre 1 y 15
reservadas para hilos ordinarios y las comprendidas entre 16 y 31 para hilos con
restricciones de tiempo real. Los hilos de tiempo real no ven modificada su
prioridad a lo largo de su vida, sin embargo los hilos ordinarios s. stos, heredan
la prioridad de la tarea a la que pertenecen a la que se le suma un offset que se
ajusta dinmicamente favoreciendo siempre a las aplicaciones interactivas. En caso
de que no exista ningn hilo en estado listo, W2K ejecutar un hilo especial de
prioridad mnima denominado idle thread.
o El quantum vara en funcin de la versin de Windows. En la versin profesional
tiene un valor de 6 unidades (se decrementa en 3 con cada interrupcin de reloj,
normalmente cada 10ms, por lo que el quantum es de 20ms), y en la versin
Server de 36 unidades (120ms). De este modo, en uno se beneficia el tiempo de
respuesta en aplicaciones interactivas, y en otro se obtiene un mejor rendimiento
al reducir los cambios de contexto. No obstante, el valor del quantum puede
variarse dinmicamente por algunos procesos o manualmente modificando la
variable Win32PrioritySeparation del registro de Windows.
4. Comunicacin y sincronizacin entre procesos
4.1. Introduccin
En sistemas que soportan multiprogramacin, los procesos pueden compartir recursos
de todo tipo, tanto software como hardware, ms an si el sistema trabaja con hilos.
Cuando varios procesos o hilos acceden simultneamente a recursos compartidos, se
pueden producir errores. Para evitar el problema es necesario aportar mecanismos
que permitan el acceso sincronizado a los recursos.
En ejemplo tpico se produce cuando dos procesos acceden de forma simultnea a una
variable compartida para incrementar su valor. Lo que en C sera A++;. Si
descomponemos esta instruccin en ensamblador, sera:
1 load R0, A Si se ejecutan los dos procesos de forma concurrente, y el primer
proceso ejecutara las instrucciones 1 y 2, a continuacin se hiciera
2 add RO, 1
un cambio de contexto porque se acabara el quantum y el
3 store A, R0 segundo proceso ejecutara las 3 y luego el primer proceso
terminara ejecutando la tercera, la variable A se incrementara en
1 en vez de en 2. A esto se le conoce como problema de condiciones de carrera.
Para solucionarlo la sentencia que vara el valor de A debera ser atmica, es decir,
se debera ejecutar de modo indivisible.
Sincronizacin: consiste en emplear operaciones atmicas para asegurar la correcta
ejecucin de procesos cooperantes y evitar las condiciones de carrera.
Seccin crtica: es la seccin de cdigo en la que se actualizan datos comunes.
Cuando un proceso est en una seccin crtica, ningn otro proceso puede estar en
una seccin crtica.
Exclusin mutua: es el mecanismo que asegura que slo un solo proceso est
haciendo algo en un instante determinado, en nuestro caso, ejecutando cdigo de una
seccin crtica.
4.2. Soluciones: software, hardware, semforos y mensajes
Soluciones software: Existen diversos algoritmos, los ms conocidos son los
algoritmos de Dekker y de Peterson, ambos basados en variables de control
compartidas. Requieren espera activa y se complican si existen ms de dos procesos.
Soluciones hardware: Basadas en instrucciones mquina especficas como
test_and_set que recibe un parmetro y si el valor es 0 lo pone a uno, devolviendo
verdadero en ese caso, todo de forma atmica, o swap que intercambia el contenido
de dos posiciones de memoria de forma atmica. Requieren espera activa y son
dependientes de la mquina.
Soluciones a travs de primitivas del sistema operativo (Semforos): Creado
por Dijkstra. Es proporcionado por el sistema operativo en forma de llamadas al
sistema, por tanto, son independientes de la mquina, son simples, pueden trabajar
con varios procesos y permiten que varios procesos entren en la seccin crtica si es
necesario. Consiste en una variable entera que solamente puede ser accedida, aparte
de su iniciacin, por dos operaciones atmicas denominadas P (wait) y V (signal). Si
slo pueden tener valor 0 1 se les llama semforos binarios. Permiten realizar la
exclusin mutua y sincronizar procesos.
o P (semforo): espera hasta que la variable semforo
sea positiva, en ese momento la decrementa en 1. P (exclusion_mut)
o V (semforo): incrementa la variable semforo en 1. Seccin crtica
V (exclusion_mut)
Si queremos utilizar semforos mediante la a biblioteca

estndar POSIX threads (pthreads.h), se utilizar el tipo de
datos creado para tal efecto pthread_mutex_t exmut;, y las funciones
phtread_mutex_lock(&exmut) y pthread_mutex_unlock(&exmut) para realizar las
operaciones P y V respectivamente.
Comunicacin con mensajes: Los mensajes proporcionan un mecanismo de
comunicacin sin necesidad de que los procesos deban compartir memoria, adems,
podran estar en mquinas diferentes conectadas en red.
o Un mensaje es la parte de informacin que es pasada de un proceso a otro y que
se depositar temporalmente en un buzn.
o Bsicamente tienen dos operaciones: enviar, que copia el mensaje en el buzn del
destinatario, y si est lleno se espera hasta que haya espacio libre (si es
bloqueantes); y recibir, que emplea el receptor para sacar un mensaje de su
buzn, si estuviera vaco, normalmente se espera hasta que llegue un mensaje (si
es bloquearte). Si no son bloqueantes, simplemente devuelven un cdigo indicando
que el buzn est lleno o vaco.
o Las partes que se comunican pueden ser totalmente independientes, tanto las
mquinas como los procesos y los programadores de los mismos. Slo han de
seguir un protocolo o unas reglas similares de envo y recepcin de mensajes.
o Ejemplos son: RPCs, TCP/IP, Tuberas de Linux, etc.
5. Bibliografa y Personalidades Influyentes/Destacadas
5.1. Bibliografa
Tanenbaum, A. S. Sistemas operativos: diseo e implementacin. 2 Ed. Prentice
Hall. 1998.
Tanenbaum, A. S. Sistemas operativos modernos. 2 Ed. Prentice Hall. 2003.
Stallings, W. Sistemas operativos. 5 Ed. Prentice Hall.2005.
S. Snchez Prieto Sistemas Operativos. Universidad de Alcal. 2001.
Carretero, Jess Sistemas operativos. Una visin aplicada. McGraw Hill. 2001.
http://es.tldp.org Documentacin libre en espaol de Linux/Unix
http://msdn.microsoft.com Centro de desarrollo de Microsoft.
http://www.tutorialparaprofesores.com Documentacin de Microsoft para profesores.
http://technet.microsoft.com Documentacin tecnolgica de Microsoft
5.2. Personalidades Destacadas
Linus Torvalds: Ingeniero informtico finlands, iniciador y desarrollador del ncleo
(kernel) de Linux a partir del S.O. MINIX. Adopt la licencia GPL permitiendo as su
modificacin, redistribucin, copia y uso ilimitado.
Andrew S. Tanenbaum: Director del Departamento de Sistemas en una universidad
de msterdam, es conocido por ser el creador de los sistemas operativos MINIX 3.0,
con arquitectura microncleo y capaz de ejecutar programas UNIX, y Amoeba, sistema
operativo completamente distribuido, creados con fines acadmicos, as como por
escribir varios libros sobre sistemas operativos y redes de computadoras, muy
valorados por los acadmicos de medio mundo.

Das könnte Ihnen auch gefallen