Anda di halaman 1dari 20

SSIISSTTEEM

MAASS OOPPEERRAATTIIVVOOSS.. GGEESSTTIIÓÓNN DDEE PPRROOCCEESSOOSS

11.. SSIISSTTEEM
MAASS OOPPEERRAATTIIVVOOSS
11..11..IINNTTEERRFFAAZZ
11..22..EESSTTRRUUCCTTUURRAA
11..33..M
MOODDOOSS DDEE EEXXPPLLOOTTAACCIIÓÓNN
11..44..TTIIPPOOSS DDEE SSIISSTTEEM
MAASS OOPPEERRAATTIIVVOOSS
22.. NNÚÚCCLLEEOO
22..11..FFIINNAALLIIDDAADD YY FFUUNNCCIIOONNEESS
22..22..CCAARRAACCTTEERRÍÍSSTTIICCAASS
33.. PPRROOCCEESSOOSS
33..11..CCOONNCCEEPPTTOO
33..22..BBLLOOQQUUEE DDEE CCOONNTTRROOLL DDEE PPRROOCCEESSOOSS
33..33..EESSTTAADDOOSS
33..33..11.. TTRRAANNSSIICCIIOONNEESS EENNTTRREE EESSTTAADDOOSS DDEE UUNN PPRROOCCEESSOO
33..33..22.. IINNTTEERRRRUUPPCCIIOONNEESS
33..44..OOPPEERRAACCIIOONNEESS SSOOBBRREE UUNN PPRROOCCEESSOO
33..55..PPLLAANNIIFFIICCAACCIIÓÓNN DDEE PPRROOCCEESSOOSS
33..55..11.. CCOONNCCEEPPTTOO
33..55..22.. AALLGGOORRIITTM
MOOSS DDEE PPLLAANNIIFFIICCAACCIIÓÓNN
33..66..CCOOM
MUUNNIICCAACCIIÓÓNN EENNTTRREE PPRROOCCEESSOOSS
33..66..11.. EEXXCCLLUUSSIIÓÓNN M
MUUTTUUAA
33..66..22.. M
MEECCAANNIISSM
MOOSS DDEE CCOOM
MUUNNIICCAACCIIÓÓNN
44.. BBIIBBLLIIOOGGRRAAFFÍÍAA
11.. SSIISSTTEEM
MAASS OOPPEERRAATTIIVVOOSS
Para comprender el concepto de sistema operativo interesa conocer antes el concepto de sistema
informático del cual forma una parte muy importante.
Según la definición de la ISO un ordenador es un dispositivo capaz de procesar datos. Para lograrlo debe
estar dotados de dos elementos básicos: un sistema físico y uno lógico.

* El sistema físico hace referencia al conjunto de elementos físicos necesarios para el


tratamiento eficaz de la información (hardware).

* El sistema Lógico por su parte es el conjunto de recursos necesarios para que el sistema
físico se encuentre en condiciones de realizar las tareas encomendadas; a este se le conoce
como Software.

Generalmente se suele dividir en dos tipos de software: Software o programas del sistema, que manejan
los recursos lógicos con los cuales opera el ordenador y el software o programas de aplicación, que son
los que resuelven los problemas concretos de los usuarios.

El sistema operativo, en concreto, es un programa del sistema que controla los recursos del ordenador y
sirve para la ejecución de los programas en general, convirtiéndose en el intermediario entre el hardware
de un ordenador y del usuario, permitiendo su uso fácil y eficaz.

Para conseguir esta función los sistemas operativos, se pueden estructurar de muy diversa forma, como
ya veremos en el apartado que hace referencia a la estructura del sistema operativo.

11..11 IINNTTEERRFFAAZZ

* Línea de Comandos.
La forma de interfaz entre el sistema operativo y el usuario en la que este escribe los comandos utilizando
un lenguaje de comandos especial. Los sistemas con interfaces de líneas de comandos se consideran
más difíciles de aprender y utilizar que los de las interfaces gráficas. Sin embargo, los sistemas basados
en comandos son por lo general programables, lo que les otorga una flexibilidad que no tienen los
sistemas basados en gráficos carentes de una interfaz de programación.

* Gráfica del Usuario.


Es el tipo de visualización que permite al usuario elegir comandos, iniciar programas y ver listas de
archivos y otras opciones utilizando las representaciones visuales (iconos) y las listas de elementos del
menú. Las selecciones pueden activarse bien a través del teclado o con el mouse.

Para los autores de aplicaciones, las interfaces gráficas de usuario ofrecen un entorno que se encarga de
la comunicación con el ordenador o computadora. Esto hace que el programador pueda concentrarse en
la funcionalidad, ya que no esta sujeto a los detalles de la visualización ni a la entrada a través del mouse
o el teclado. También permite a los programadores crear programas que realicen de la misma forma las
tareas más frecuentes, como guardar un archivo, porque la interfaz proporciona mecanismos estándar de
control como ventanas y cuadros de diálogo. Otra ventaja es que las aplicaciones escritas para una
interfaz gráfica de usuario son independientes de los dispositivos: a medida que la interfaz cambia para
permitir el uso de nuevos dispositivos de entrada y salida, como un monitor de pantalla grande o un
dispositivo óptico de almacenamiento, las aplicaciones pueden utilizarlos sin necesidad de cambios.
11.2.
.2. EESTRUCTURA
STRUCTURA

SSIIST EMAS M
STTEMAS ONOLÍTICOS.
MONOLÍTICOS.

En estos casos el Sistema Operativo está formado por un conjunto de rutinas que se compilan por separado,
se llaman entre sí y se montan juntas para formar un todo: el Sistema Operativo. De ahí que no tengan una
estructura definida.

Cada rutina tiene un interface con las demás, es decir, cuando una rutina llama a otra la primera le pasa una
serie de parámetros y, cuando la rutina llamada finaliza su tarea, devuelve unos resultados a la rutina madre.

En estos sistemas todas las rutinas se pueden llamar entre si. Esto implica que no hay ocultamiento de
información, es decir, cada rutina conoce .y puede usar., por ejemplo, las estructuras de datos de las demás.

Cuando estamos ejecutando un programa de usuario y hace falta un servicio del Sistema Operativo, los
pasos que se siguen son los siguientes:

1. El programa hace una llamada al supervisor.


2. El S.O. determina el número de servicio que se
solicita.
3. El S.O. localiza y llama a un procedimiento de
servicio.
4. El control se devuelve al programa de usuario.

Si quisiéramos hacer una representación gráfica de estos sistemas, quedaría de la siguiente forma:
SSIIST EMAS PPOR
STTEMAS OR NNIVELES
IVELES OO EESTRATOS.
STRATOS.

Los sistemas operativos se organizan en capas en torno a un núcleo principal. Cada una de estas capas o
niveles realiza una función determinada y, dependiendo de esa función, tienen más o menos prioridad. No
obstante, la capa principal y la de mayor prioridad es el propio núcleo.

En general un sistema operativo se puede estructurar o dividir en cuatro capas o niveles:

• Nivel núcleo. Es el que se encarga de controlar todo lo que ocurre en el ordenador. Gestiona los
procesos que llegan para ser ejecutados. Son, fundamentalmente, sistemas operativos multiusuario.
Este nivel se encarga de realizar tareas básicas del sistema, comunicación con el hardware,
planificación de procesos, etc:

o Gestiona interrupciones.
o Asignación de la CPU.
o Mecanismos de comunicación-sincronización entre procesos.

• Nivel ejecutivo. Sobre este nivel se realiza la administración y gestión de la memoria. Se encarga de
almacenar los procesos en páginas, tanto en memoria principal como en disco. Esta gestión es la
llamada gestión de memoria virtual.
• Nivel supervisor. Se encarga de realizar la comunicación de cada proceso entre el sistema y el
usuario. Controla y coordina la gestión de entrada/salida de los diferentes procesos hacía los
periféricos.
• Nivel usuario. Es el que controla los procesos que está utilizando el usuario, sin preocuparse de la
gestión de memoria, de la gestión de entrada/salida ni de nada en especial. Simplemente, muestra
al usuario el proceso que éste quiere ejecutar. Este nivel es el que proporciona el interface para la
interrelación con el usuario.
M
MÁÁQUINAS
QUINAS VVIIRT UALES.
RTTUALES.

Conceptualmente un sistema operativo está hecho de capas.

El Sistema Operativo tiene 2 funciones fundamentales:

Crear una máquina tratable, es decir, adaptada a las


necesidades de cada usuario (máquina virtual). Algunos
aspectos en que el sistema operativo debe incidir
especialmente en ocultar las características
puramente físicas y presentar al usuario otras más
entendibles y manejables son las siguientes:

- Sistema de entrada/salida: El S.O debe


evitar al usuario el problema de tener
que comprender el funcionamiento del
hardware de entrada/salida que, a veces, es demasiado sofisticado, y poner a su alcance un
sistema de entrada/salida más sencillo de usar pero sin perder ninguna de sus
posibilidades.
- Memoria: El S.O debe implementar el modo de que el usuario pueda trabajar con una
memoria mayor que la principal de que dispone el ordenador, utilizando memoria virtual.
Del mismo modo debe permitir que varios programas y usuarios compartan la memoria
disponible sin ningún conflicto ni problema.
- Sistema de almacenamiento de ficheros: El S.O debe permitir al usuario acceder a la
información almacenada a través de nombres simbólicos fácilmente recordables por él, sin
necesidad de saber ni entender el modo físico en que los datos se almacenan en los
dispositivos.
- Control de los programas y las aplicaciones: El S.O debe proveer al usuario de un lenguaje
de comandos y órdenes fácilmente utilizable para permitirle la gestión y el control de sus
programas y sus datos. Al mismo tiempo, el sistema operativo debe impedir que el trabajo
de un usuario pueda influir negativamente (errores, bloqueos, etc...) en los trabajos de los
demás posibles usuarios.

Hacer posible compartir recursos, es decir, soportar la multiprogramación

En estos sistemas se mantiene por separado el software que implementa cada una de estas funciones.
Partiendo de un único hardware a compartir se simula la existencia de varias máquinas idénticas a la real.
Para que esto sea posible hace falta un nuevo elemento en el Sistema Operativo, es el llamado monitor de
máquina virtual. Éste hace 2 cosas:

Simula tantas máquinas virtuales idénticas a la real como haga falta


Gestiona los recursos de la máquina real

Para que esto se traduzca en una máquina tratable por el usuario sobre cada máquina virtual se ejecuta un
Sistema Operativo independiente, que se encarga de la segunda función del Sistema Operativo (hacer
posible el compartir recursos). Los sistemas operativos actuales como Windows 95 y Windows NT, utilizan
esta técnica.
MODELO CCLIENTE-SERVIDOR
MODELO LIENTE-SERVIDOR

En estos sistemas cada función del Sistema Operativo se implementa como un programa independiente y se
intenta ejecutar al mismo nivel que los programas de usuario. El problema es que muchos de estos
programas no pueden ejecutarse a nivel de usuario porque actúan directamente sobre el hardware y esas
funciones son competencia del núcleo de los Sistemas Operativos Cliente-Servidor.

Las partes del Sistema Operativo que se ejecutan a nivel de usuario se denominan servidores. Estos
programas tienen exactamente las mismas capacidades que un programa de usuario y por tanto no tienen
acceso directo al hardware.

Cuando un programa de usuario (denominado cliente) quiere un servicio del Sistema Operativo lanza un
mensaje al servidor correspondiente, pero siempre a un servidor de su mismo nivel.

El núcleo desempeña 2 funciones:

Soporta los mensajes a través de los cuales se comunican los clientes y servidores
Manipula al hardware para responder a peticiones cuando se lo piden los servidores

Cuando se quiere acceder a un servicio, toda la toma de decisiones (decidir si el que ha pedido
el servicio tiene privilegios, a quién dar el servicio en primer lugar si ha habido dos solicitudes al
mismo tiempo...), es decir, la política del sistema, reside en el servidor del servicio. Entonces, el
núcleo que tiene los mecanismos necesarios para manipular el hardware. Será el que realice el
servicio, es decir, la mecánica del sistema reside en el núcleo y está soportado por el hardware.

VENTAJAS DE ESTOS SISTEMAS:

1. Siempre y cuando los servidores estén bien delimitados es posible eliminar un servidor si éste no se
utiliza.
2. Siempre es posible sustituir un servidor por otro que haga lo mismo
3. Si falla un servidor el sistema sigue funcionando (pero con alguna función menos)
4. Estos sistemas se puede adaptar muy fácilmente a los sistemas distribuidos

Un Sistema Operativo Distribuido es aquel en el que el Sistema Operativo no está en una sola máquina sino
que está repartido entre varias. En este caso, el hardware que manipula el núcleo es más complejo que antes
pero está manipulación es transparente tanto para el usuario como para los servidores.

Cuando una máquina hace exclusivamente la función de un servidor a lo largo del tiempo se dice que es un
servidor dedicado, aunque hay otras máquinas que pueden ser alternativamente clientes o servidores.

11.3.
.3. MODOS DDE
MODOS E EEXPLOTACIÓN
XPLOTACIÓN

Las formas de explotación de un sistema operativo responden a la forma en la que el usuario utiliza los
recursos hardware y software que componen el sistema informático. De esta forma, el usuario podrá obtener
determinadas respuestas de sus peticiones ante el ordenador. La manera de obtener estas respuestas es lo
que denominaremos explotación de un sistema operativo:
• Procesos en lotes.
Se procede a la carga de datos desde el correspondiente dispositivo, se procesa la información y los
resultados se almacenan en otro soporte que permita llevar al correspondiente periférico de salida
para su impresión o visualización.
• Proceso en tiempo real.
Como su propio nombre indica la respuesta se obtiene al momento, es decir, el usuario es el
encargado de introducir los datos para que el ordenador los procese y, en cuestión de segundos
obtenga los resultados del proceso.
11..44.. TTIIPPOOSS DDEE SSIISSTTEEM
MAASS OOPPEERRAATTIIVVOOSS

Para hacer una clasificación de los sistemas operativos hay que tener en cuenta una serie de parámetros:
- Número de usuarios.
- Número de procesos.
- Número de procesadores.
- Tiempo de respuesta.

La clasificación es la siguiente:

• Según el número de usuarios:


o Monosuario: Sólo un usuario trabaja con un ordenador. En este sistema todos los
dispositivos de hardware están a disposición de dicho usuario y no pueden ser utilizado por
otros hasta que éste no finalice su sesión. Ej: MS-DOS.
o Multiusuario: En este sistema, varios usuarios pueden utilizar simultáneamente los recursos
del sistema. Pueden compartir, sobre todo, los dispositivos externos de almacenamiento y
los periféricos de salida, fundamentalmente impresoras- Ej: UNIX, Novell, Windows 2000
Server.
• Según el número de procesos:
o Monoprogramación o monotarea: En este caso, el sistema solamente puede ejecutar un
programa a la vez. De esta forma, los recursos del sistema estarán dedicados al programa
hasta que finalice su ejecución.
Esto no impide que el sistema pueda ser multiusuario; es decir, varios usuarios pueden
intentar ejecutar sus programas en el mismo ordenador, pero de forma sucesiva. Para ello,
se tienen que establecer las correspondientes colas o prioridades en la ejecución de los
trabajos.
En este sistema, la atención del procesador estará dedicada a un solo programa hasta que
finalice. E: MS-DOS.
o Multiprogramación o multitarea: Con estos sistemas se pueden ejecutar varios programas o
procesos concurrentemente. Para ello la CPU compartirá el tiempo de uso del procesador
entre los diferentes programas que se van a ejecutar. Ej UNIX, Novell, Windows 2000 Server.
En general, la mayoría de sistemas multiusuario.
• Según el número de procesadores del sistema informático:
o Monoproceso: En este caso, el ordenador consta de un único procesador. Todos los
trabajos pasarán por él. El ordenador que tenga este s.o puede ser monousuario,
multiusuario, monotarea, multitarea, etc. Ej: MS-DOS, Windows98.
o Multiproceso: El ordenador cuenta con varios procesadores. Ej: Pueden ser UNIX, LINUX,
Windows 2000.
• Según el tiempo de respuesta: Esta clasificación se hace teniendo en cuenta el tiempo que tarda el
sistema en obtener los resultados después de lanzar un programa a ejecución.
o Tiempo real: La respuesta es inmediata tras lanzar un proceso.
o Tiempo compartido: Cada proceso utilizará fracciones de tiempo de ejecución de la CPU
hasta que finalice. En este caso, parece que el usuario dedica la CPU exclusivamente para
él; pero esto no es cierto, ya que, aunque el usuario no lo perciba, la CPU está dedicada a
varios procesos a la vez. Todos los sistemas operativos multiusuario ofrecen a los usuarios
un tiempo de respuesta compartido.
22.. NNÚÚCCLLEEOO

22..11 FFIINNAALLIIDDAADD YY FFUUNNCCIIOONNEESS

La finalidad del núcleo es construir un entorno adecuado donde puedan ejecutarse los distintos procesos.
Las funciones del núcleo son:

- Tratamiento de las interrupciones. (PUNTO 3.3.2)


- Asignación de la CPU. (PUNTO 3.5) Despachador o planificador de bajo nivel.
- Mecanismos de comunicación – sincronización. (PUNTO 3.6)

22..22 CCAARRAACCTTEERRÍÍSSTTIICCAASS

Las características del núcleo son:

- Sus módulos son residentes en memoria principal. Puesto que son altamente utilizados.
- Tienden a ser ininterrumpibles.
- Se ejecutan con el nivel de máximo privilegio, lo que significa una máxima protección.
33.. PPRROOCCEESSOOSS

33..11 CCOONNCCEEPPTTOO

Para definir lo que es un proceso, hay que establecer la diferencia con el concepto de programa:

- Un programa es una entidad pasiva compuesta únicamente por un código y unos datos, es decir, tiene un
listado fijo.
- Un proceso es una entidad activa, es el “programa “ en ejecución.

33..22 BBLLOOQQUUEE DDEE CCOONNTTRROOLL DDEE PPRROOCCEESSOOSS OO DDEESSCCRRIIPPTTOORR DDEE UUNN PPRROOCCEESSOO

Un bloque de control de proceso (PCB o BCP) o descriptor de proceso es una estructura de datos que
contiene cierta información importante acerca del proceso, incluyendo, entre otra:

Estado del proceso : Determina la situación actual del proceso.


Identificador de proceso. Es un número i entre 0-N (no se admiten nº negativos). Se le denomina PID y es
el mismo durante toda la vida del proceso.
Registros de la CPU. Almacenan información necesaria del proceso cuando se producen interrupciones
como consecuencia de un cambio de estado, y así poder recuperarla para volver al estado original.
Límites de memoria. Indican los límites de memoria utilizados por un determinado proceso para evitar
que otros los invada. Además existe una zona de memoria donde se colocan los BCP, esa zona solo es
accesible por el sistema operativo cuando se encuentra en modo supervisor.
Información del ´status´ de las operaciones de E/S. Se refiere a las operaciones de E/S que el proceso
está realizando, sobre que dispositivos si son de Entrada o de Salida. Estas operaciones, según van
siendo atendidas, van siendo eliminadas del BCP.
Información del planificador de procesos. Sobre el tipo de algoritmo de planificación que se esté
utilizando.

El PCB es un almacenamiento central de información que permite al sistema operativo localizar toda la
información clave sobre el proceso. Cuando el sistema operativo cambia la atención de la CPU entre los
procesos, utiliza las áreas de preservación para mantener la información que necesita para reiniciar el
proceso cuando consiga de nuevo la CPU.

Debido a que los PCB deben ser manipulados con rapidez por el sistema operativo, muchos
sistemas de computación contienen un registro de hardware que apunta siempre al PCB del proceso que está
en ejecución, el proceso en curso.

33..33 EESSTTAADDOOSS DDEE UUNN PPRROOCCEESSOO

Durante su existencia, un proceso pasa por una serie de estados discretos. Varias circunstancias pueden
hacer que un proceso cambie de estado.

Los estados más importantes en que puede encontrarse un proceso son:

- Ejecutable (o activo): Si el proceso tiene asignada en ese momento la CPU.


- Listo (preparado): Cuando el proceso podría usa una CPU, si hubiera una disponible.
- Bloqueado (en espera): Si el proceso espera que ocurra algo (la terminación de una E/S por
ejemplo) para poder ponerse en marcha.

33.3.1
.3.1 TTRANSICIONES
RANSICIONES EN TRE EESTADOS
ENNTRE STADOS DDE
E UUN
N PPROCESO
ROCESO

El S.O inicia la ejecución de un proceso nuevo que esta listo. Cuando este proceso no va a utilizar la CPU
durante un tiempo : INTERRUPCIÓN (hay una llamada a E/S etc.) el S.O lo pone bloqueado hasta que acaba
esa operación. Mientras tanto pasa a la CPU la ejecución de otro proceso que estuviera listo y realiza los
mismos pasos: ejecuta hasta que este deja de usar la CPU, lo pone bloqueado si es necesario y pasa a
ejecutar otro.

Cuando la acción del proceso que está bloqueado termina (acaba la E/S, etc.) el S.O lo pone otra vez en
estado de listo, así hasta que termina con todo el proceso.

El S.O deberá decidir que proceso de los que están listos pasará a ejecutable cuando la CPU quede libre,
esta decisión lo hará a través de un Planificador de procesos (DISPACHER).

33.3.2
.3.2 IINTERRUPCIONES
NTERRUPCIONES (son necesarias para que un proceso pase de un estado a otro)

Permite interrumpir la ejecución de un proceso ante el acontecimiento de un suceso determinado,


tomando el control el S.O.
El Procesador puede ejecutar otras instrucciones mientras se está realizando alguna operación de E/S.

Ante una interrupción, la forma de actuar es (FLIH o manejador de interrupciones de primer nivel):

Procesador registra situación exacta de la ejecución del trabajo actual.


Se desvía a la rutina de tratamiento de la interrupción.
La procesa según su naturaleza y, posteriormente, reanudar el mismo u otro trabajo
de usuario.
La rutina de tratamiento de la interrupción forma parte del S.O. Este programa
determina la naturaleza de la interrupción y ejecuta cuantas acciones sean
necesarias.
Tipos de Interrupciones:

Hardware.- Generadas por los dispositivos cuando finalizan una E/S.


Software.- Generadas por el propio proceso. Hay 2 tipos:

• Llamadas al sistema.- Se producen mediante la invocación de una instrucción que existe en


casi todos los procesadores (Trap al S.O.). Se usan para pedir servicios al S.O. y se gestionan
como si fuesen una interrupción.
• Excepciones.- Se producen cuando el proceso produce un error grave que impide continuar
con su ejecución (por ejemplo “división por cero”) → Finaliza proceso y cambiar a otro.

33..44 OOPPEERRAACCIIOONNEESS SSOOBBRREE UUNN PPRROOCCEESSOO

Los S.O. con multitarea permiten numerosas operaciones dedicadas a la gestión de procesos. Entre
ellas, las más importantes : creación, eliminación, obtención de información, modificación, retardo y
activación.

• Creación de procesos : crear (id_proceso, atributos) ;


El S.O. primero comprobará que no existen errores en la llamada (por ejemplo, comprueba que el
procedimiento indicado no exista). A continuación se crea el proceso, se pasan los atributos como
parámetros, se reserva memoria para el proceso (tanto para el BCP como para el código y los datos) y se
añade a la cola de preparado.

• Eliminación de procesos : eliminar (id_proceso) ;


Para eliminar un proceso es necesario que este sea hijo del proceso eliminador, ya que de no ser así podría
volverse inconsistente el sistema. Una vez realizada la llamada, el S.O. verifica que no existen errores para a
continuación liberar los recursos retenidos por el proceso. Finalmente se destruye el BCP.

• Obtención de información : inf_proc (id_proceso,est_BCP) ;


Devolverá una copia del BCP del proceso requerido. El S.O. debe comprobar que no existen errores en los
parámetros.

• Modificación de la información de un proceso : mod _inf (id_proceso, est_BCP) ;


El proceso modificador debe enviar como parámetros el PID del proceso que modifica y un nuevo BCP que
sustituya al actual. El S.O. comprobará los posibles errores producidos.

• Retardar un proceso : retardar (tiempo) ;


El proceso que realiza esta llamada se autodetiene durante el tiempo indicado y pierde el control de la CPU
durante ese tiempo. Los ciclos de reloj de espera se anotan en el BCP (utilizados posteriormente en la
planificación de procesos). Finalmente, cuando el tiempo transcurre, el núcleo del S.O. introduce al proceso
en la cola de procesos preparados para intentar ejecutarlo inmediatamente.

• Activar procesos retardados : activar (id_proceso);


Esta función es privilegiada. El mecanismo para despertar procesos se activa en cada ciclo de reloj,
recorriéndose la cola de procesos retardados para activarlos o disminuir en una unidad el número de pulsos
de espera. Devuelve un código de error si el PID que se pasa no existe.
33..55 PPLLAANNIIFFIICCAACCIIÓÓNN DDEE PPRROOCCEESSOOSS

33..55..11 CCOONNCCEEPPTTOO

Es el encargado de pasar trabajos o procesos a la memoria principal y a la CPU, decidiendo qué procesos de
los que están listos pasarán a ejecución cuando la CPU se libere de algún otro proceso (cuando este pase a
estar bloqueado).

Sigue los pasos siguientes:

0. Decidir si se cambia el proceso.


1. Decidir mediante un algoritmo entre los procesos ejecutables, cual es el siguiente al que le asigna el
procesador.
2. Salvar la información del proceso que se estaba ejecutando ( si no lo hizo el tratamiento de
interrupciones)
3. Cargar toda la información necesaria del proceso elegido.
4. Pasar el control al siguiente proceso.

33..55..22 AALLGGOORRIITTM
MOOSS DDEE PPLLAANNIIFFIICCAACCIIÓÓNN

Esta planificación puede ser:

- Con desplazamiento(No apropiativo): Aquellos en los que unos procesos tienen prioridad sobre
otros y cuando acaban de estar bloqueados y pasan a listos hacen que el S.O les dé paso a la CPU que
abandona el proceso que tenía en ejecución, lo pone listo y pasa a ejecutar el que tiene prioridad.
- Sin desplazamiento (Apropiativo): Aquella en la cual, la CPU ejecuta un proceso hasta que lo
termina o por alguna razón éste pasa a estar bloqueado.

Para evaluar el comportamiento de los distintos algoritmos se definen, entre otros, los siguientes parámetros:

- Tiempo de respuesta: Tiempo transcurrido desde que se hace una petición de CPU, hasta que
es satisfecha .
- Tiempo de espera: Tiempo que está en estado de listo.
- Penalización: tiempo de respuesta= tiempo de finalización / tiempo de CPU
- Rendimiento: Número de trabajos terminados por unidad de tiempo.
Aquí teneis la definición de los algoritmos, los ejemplos son los vistos en clase.

FCFS (First Come First Served)

Los procesos son servidos en orden a su llega a la cola de listos. Dichos procesos se ejecutarán hasta que
terminen o se bloqueen.

Su implementación es una cola FIFO.

SJF (Shortest Job First) Primero el más corto

La CPU se asigna al proceso al que le queda menos tiempo para completar su ejecución y a igualdad de
condiciones al primero que hay hecho la petición.

PRIORIDAD

A cada proceso se le asigna un determinado valor de prioridad, definida interna o externamente.

La CPU se asigna al de mayor prioridad y a igualdad se sigue el algoritmo FCFS.


En este ejemplo, el proceso de menor número (En la columna prioridad), es el de mayor prioridad.

EL MÁS CORTO PRIMERO CON DESPLAZAMIENTO

Igual que el más corto primero, excepto que cuando un proceso llega a la cola de listos compara su tiempo
con el que se esta ejecutando y si es menor se realiza un cambio de contexto.

ROUND ROBIN

La CPU se asigna a los procesos en intervalos de tiempo llamados QUANTUM. Si el proceso finaliza o se
bloquea antes de agotar el quantum, se toma el siguiente en la lista y se le asigna un nuevo intervalo de
tiempo, si por el contrario agota su quantum pasa al final de la lista.

La lista se trata como una cola FIFO.

Creación de nuevo proceso

Proceso pasa de
bloqueado a D C B A CPU
ejecutable

Proceso agota su intervalo de tiempo


COLAS MULTIPLES

La cola de ejecutables se divide en varias colas, los trabajos son asignados permanentemente a una cola,
según algún criterio (cada cola puede tener un algoritmo de asignación, además debe existir un algoritmo de
asignación entre las colas).

Cola 1 B A

Cola de ejecutables Cola 2 C CPU

Cola 3 E D

COLAS MULTIPLES CON TRASPASO

Usa el sistema de colas múltiples pero con la diferencia siguiente: Los trabajos pueden pasar de unas colas a
otras.
33..66 CCOOM
MUUNNIICCAACCIIÓÓNN EENNTTRREE PPRROOCCEESSOOSS

Los distintos procesos, dentro de un computador, no actúan, evidentemente, de forma aislada. Por un lado
deben cooperar con el fin de alcanzar el objetivo de poder ejecutar las tareas de los usuarios. Por otro lado,
compiten por el uso de unos recursos, limitados como los procesadores, la memoria o los ficheros. Las dos
actividades de cooperación y competición llevan asociada la necesidad de algún tipo de comunicación y
sincronización entre los procesos.

33..66..11 EEXXCCLLUUSSIIÓÓNN M
MUUTTUUAA

Los recursos de un sistema pueden clasificarse como compartibles, lo que significa que pueden ser
empleados por varios procesos de forma concurrente, o no-compartibles, lo que equivale a que su uso se
restrinja a un solo proceso a la vez.

El problema de la, exclusión mutua es el de asegurar que los recursos no compartibles sean accedidos por
un solo proceso a la vez. Aquella parte del programa en la cual se accede al recurso compartido se
denomina sección crítica. Hay que evitar que dos procesos entren simultáneamente en su sección crítica.

Cuando varios procesos compiten por recursos es posible que se de una situación en la que ninguno
de ellos pueda proseguir debido a que los recursos que cada uno de ellos necesita estén ocupados por los
otros. Esta situación se conoce con el nombre de interbloqueo o deadlock.

33..66..22 M
MEECCAANNIISSM
MOOSS DDEE CCOOM
MUUNNIICCAACCIIÓÓNN DDEE PPRROOCCEESSOOSS

En los sistemas operativos multiprocesos los distintos procesos deben de comunicarse unos con otros de tal
forma que dos procesos no se apoderen de un mismo recurso único (memoria, periférico,...). Para enviar
dicha información se dispone de muchos mecanismos, uno de ellos es la sincronización de procesos (caso
particular de comunicación).

Herramienta para la Sincronización de procesos :

SEMÁFOROS.

Un semáforo es un entero no negativo sobre el cual, aparte de su proceso de inicialización, puede


actuarse sólo a través de las. operaciones de wait y signal Estas operaciones actúan sólo sobre semáforos y
su efecto se describe a continuación.

A) signal (s)

Su efecto consiste en incrementar el valor del semáforo s en uno, siendo esta una operación considerada
como indivisible. El concepto de indivisibilidad lleva aparejado el que signal (s) no sea equivalente a la
sentencia de asignación "s: = s + 1". Supongamos que dos procesos A y B desean llevar a cabo la
operación (s) , en el momento en que s tiene por valor 3. El valor de s cuando se hubiesen efectuado ambas
operaciones sería 5. Supongamos, por otra parte, que en circunstancias similares ambos procesos quieren
llevar a cabo la asignación "s := s + 1". A podría entonces evaluar la expresión s + 1 obteniendo el valor
4. Antes de que A pudiese asignar este valor a s, B podría también evaluar s + 1 llegando al mismo
resultado. -Cada proceso asignaría entonces el valor 4 a s, perdiéndose uno de los dos incrementos que se
querían llevar a cabo.

B) waít (s)

Su efecto consiste. en decrementar el valor del semáforo s en 1 en tanto que el resultado al que llegue sea
no-negativo. Esta operación es también indivisible. La operación de wait representa un retardo en potencia ya
que cuando actúa sobre un semáforo cuyo valor sea 0, el proceso que la ejecute podrá seguir solo cuando
otro proceso haya incrementado el valor del semáforo a 1mediante una operación de signal. La indivisibilidad
de esta operación significa que si el retardo mencionado anteriormente afecta a varios procesos, sólo uno de
ellos podrá proseguir cuando el semáforo pase a ser positivo. No se lleva a cabo suposición alguna sobre
cuál será este proceso.

MONITORES.

En el apartado anterior veíamos cómo podían utilizarse semáforos para llevar a cabo tareas de sincronización
y comunicación entre procesos. El uso indiscriminatorio de semáforos es susceptible, sin embargo, de
errores, ya que es fácil que un programador coloque las operaciones de wait y signal en el lugar incorrecto,
pudiendo incluso omitirlas por completo.

Para evitar problemas de este tipo han ido apareciendo un buen número de propuestas de construcciones
para lenguajes de programación que obliguen al programador a declarar de forma explícita los datos y los
recursos compartidos forzando la exclusión mutua en el acceso a estos elementos comunes. Una de las
construcciones propuestas de más éxito y más ampliamente adoptada es, el monitor.

Un monitor consta de:

1.- Los datos que contiene el objeto a compartir.

2.- Un conjunto de rutinas que pueden llamarse para acceder a este objeto.

3.- Un fragmento de programa que inicializa el objeto. en cuestión (y que se ejecuta tan
solo una vez cuando ese objeto es creado).

Ejemplo:

Así por ejemplo, un buffer destinado a pasar datos de un proceso productor a otro puede representarse
mediante un monitor que consiste en:

1.- El área de memoria ocupada por el buffer y los punteros (por ejemplo, un vector y los índices del
mismo).
2.- Dos rutinas depositar v extraer que pueden ser llamadas desde cualquier proceso para colocar un
determinado elemento en el buffer. o bien para sacarlo.
3.- Un fragmento de programa que inicialice los punteros del buffer al principio del mismo.
El compilador de un lenguaje que incorpore monitores debe garantizar que el acceso a un objeto compartido
sólo pueda efectuarse llamando a la rutina del correspondiente monitor. El compilador debe asegurar
también que las rutinas de cada monitor se implementen en forma de secciones críticas mutuamente
exclusivas. Ello puede lograrse fácilmente generando el compilador operaciones de wait y de signal sobre
semáforos apropiados en el programa compilado.

EVENTOS :

- Los eventos llevan asociado :

Un identificador del Evento.


Una cola de Eventos.

- Dos primitivas :

Dormir : El proceso solicitante pierde el control del procesador.


• Se añade a la cola del procesador.
• No existen errores (control).
Despertar : El proceso solicitante pasa de la Cola de eventos a la del procesador :
• Si no existen procesos detenidos en la Cola de eventos la llamada queda sin
efecto.
• No existen errores (control).

Mientras que los Semáforos y Eventos son propios de Sistemas Fuertemente Centralizados (aunque
se pueden crear en sistemas distribuidos), los MENSAJES son propios de Sistemas Distribuidos.

MENSAJES

Definición : Colección de información que se intercambia entre 2 ó más procesos. Habrá más de 1 ó 2
procesos emisores/receptores.

Cabecera (parte fija del mensaje) {Información relativa al propio mensaje}


Cuerpo (resto del mensaje) {Contenido del mensaje}

Formato del mensaje :

Tamaño Fijo (Mensaje rígido. Descomposición de la información en módulos)


Tamaño Variable (Cabecera fija. Cuerpo varía de tamaño)

Tipo de comunicación :

Comunicación Directa (Rendez-Vous):


- Es simétrica. Cada proceso tiene que saber el identificador del receptor y viceversa.
- Un enlace cada 2 procesos.
- Enlace puede ser bidireccional.
Comunicación Indirecta :
- Se establece un enlace de comunicaciones cada 2 procesos, siempre que compartan un buzón.
- Un enlace puede estar asociado a varios procesos.

- BUZÓN : Buffer que ayuda al intercambio de información entre procesos. Se utiliza un


identificador. Los dueños de los buzones son los procesos que los crean.

Implementación de las primitivas SEND (enviar) y RECEIVE (recibir) :

Proceso A Proceso B En Comunicación Directa : enviar (B, Mensaje);


recibir (A, Mensaje);

Proceso A

Proceso B
BUZON Proceso D
En Comunicación Indirecta : enviar (id_buzon, Mensaje) ;
recibir (id_buzon, Mensaje) ,
crear_buzon (id_buzon) ;
Proceso C

Modo de Transmisión :

• Por Copia : - Se copia en el espacio de direcciones del mensaje.


- Los cambios que se producen en el mensaje emisor no influyen en el receptor
y viceversa.

• Por Referencia : - El emisor pasa punteros para decir donde está escrito el mensaje.
- Los cambios que haga uno, afecta a todos.

Capacidad (del enlace de comunicaciones) :

En Comunicación Directa: Si el proceso A envía a B, se establece un único enlace de comunicación. En


este caso, la capacidad de enlace es NULA.

En Comunicación Indirecta : Varios procesos se comunican con un BUZÓN y uno extrae de él. La
capacidad del enlace depende del BUZÓN.

Tamaño (puede ser fijo o variable).


44.. BBIIBBLLIIOOGGRRAAFFÍÍAA

• "Sistemas Operativos: Concepto y Diseño"; Milan Milenkovic;


McGraw-Hill; 1.994
• "Introducción a la Informática" A. Prieto; McGraw-Hill; 1.995
• "Sistemas Operativos: Diseño e Implementación"; Tanenbaum;
Prentice; 1.988
• VICTOR MANUEL,A J.ANTONIO,V“Sistemas Operativos” Alhambra.