You are on page 1of 49

UNIDAD I

INTRODUCCIN A LOS SISTEMAS OPERATIVOS


Sin el software, una computadora no es ms que una masa metlica sin
utilidad. Con el software, una computadora puede almacenar, procesar y
recuperar informacin, encontrar errores de ortografa en manuscritos, e
intervenir en muchas otras valiosas actividades para ganar el sustento. El
software para computadoras puede clasificarse en general en dos clases: los
programas de sistema que controlan la operacin de la computadora en si y los
programas de aplicacin, los cuales resuelven problemas para sus usuarios. El
programa fundamental de todos los programas de sistema es el sistema
operativo (SO), que controla todos los recursos de la computadora y
proporciona la base sobre la cual pueden escribirse los programas de
aplicacin.

1.1 Definicin y concepto.


Existen diversos conceptos del significado de un sistema operativo, a
continuacin se citan algunas definiciones.
1. Un S.O puede ser contemplado como una coleccin organizada de
extensiones del hardware, consistente en rutinas de control que hacen
funcionar un computador y proporcionan un entorno para la ejecucin de
los programas.1
2. Un S.O es un conjunto de programas o software, destinado a permitir la
comunicacin entre el usuario y la maquina de forma cmoda y eficiente;
se encarga de gestionar los recursos del ordenador, esto incluye la
gestin del hardware desde los niveles mas bsicos. 2
3. Se puede imaginar un S.O como los programas, instalados en el
software o el firmware, que hacen utilizable el hardware. 3
1
2

MILAN MILEKOVIC, Sistemas Operativos conceptos y diseo segunda edicin, Pg. 3.


http://exa.unne.edu.ar/depar/areas/informatica/SistemasOperativos/SO0.htm#IG

H. M. Deitel, Sistemas Operativos, unix- os/2- ms-dos- macintosh- vm- mvs- sistemas abiertos, Pg. 3.

4. Un S.O es un programa que acta como intermediario entre el usuario y


el hardware de un computador y su propsito es proporcionar un entorno
en el cual el usuario pueda ejecutar programas.4
5. Un S.O es el software encargado de ejercer el control y coordinar el uso
del hardware entre diferentes programas de aplicacin y los diferentes
usuarios. Es un administrador de los recursos de hardware del sistema.
En una definicin informal, es un sistema que consiste en ofrecer una
distribucin ordenada y controlada de los procesadores, memorias y
dispositivos de E/S entre los diversos programas que compiten por ellos.
A pesar de que todos nosotros usamos sistemas operativos casi a diario, es
difcil definir qu es un sistema operativo. En parte, esto se debe a que los S.O
realizan dos funciones diferentes:
proveer

una mquina virtual, es decir, un ambiente en el cual el usuario

pueda ejecutar programas de manera conveniente, protegindolo de los


detalles y complejidades del hardware.

administrar eficientemente los recursos del computador.

Objetivos de los sistemas operativos:

El objetivo principal de un S.O: Lograr que el Sistema de computacin


se use de manera cmoda.

El objetivo secundario es que el hardware del computador se emplee de


manera eficiente.

Un Sistema Operativo es una parte importante de cualquier sistema de


computacin puede dividirse en (hardware, S.O, los programas de aplicacin y
los usuarios).
El hardware (Unidad Central de Procesamiento (UCP), memoria y dispositivos
de entrada/salida (E/S)) proporciona los recursos de computacin bsicos. Los
4

A. Silberschatz, J. Peterson, P. Galvin, Sistemas Operativos conceptos fundamentales, Pg. 3

programas de aplicacin (compiladores, sistemas de bases de datos, juegos de


vdeo y programas para negocios) definen la forma en que estos recursos se
emplean para resolver los problemas de computacin de los usuarios.

1.2 Funciones y caractersticas.


Funciones de los sistemas operativos.
Una de las principales funciones del S. O. es ocultar toda esta complejidad y
brindar al programador un conjunto ms conveniente de instrucciones para
trabajar.

Aceptar todos los trabajos y conservarlos hasta su finalizacin.


Interpretacin de comandos: Interpreta los comandos que permiten al
usuario comunicarse con el ordenador.

Control de recursos: Coordina y manipula el hardware de la


computadora, como la memoria, las impresoras, las unidades de disco,
el teclado o el Mouse.

Manejo de dispositivos de E/S: Organiza los archivos en diversos


dispositivos de almacenamiento, como discos flexibles, discos duros,
discos compactos o cintas magnticas.

Manejo de errores: Gestiona los errores de hardware y la prdida de


datos

Secuencia de tareas: El S.O debe administrar la manera en que se


reparten los procesos. Definir el orden. (Quien va primero y quien
despus).

Proteccin: Evitar que las acciones de un usuario afecten el trabajo que


esta realizando otro usuario.

Multiacceso: Un usuario se puede conectar a otra mquina sin tener que


estar cerca de ella.

Contabilidad de recursos: establece el costo que se le cobra a un


usuario por utilizar determinados recursos.

El S.O crea un entorno para la ejecucin de cada proceso, adems de ofrecer


ciertos servicios a los programas y a sus usuarios.
Los servicios especficos que ofrece cada S.O. suelen ser diferentes,
dependiendo del sector al que estn destinados, aunque algunas clases de
ellos son comunes: las operaciones de E/S, la manipulacin del sistema de
archivos, la deteccin de errores, etc. Estas funciones tienen el propsito, en su
mayora, de favorecer la tarea del programador, haciendo ms fcil su trabajo.
Lo que realmente nos est dando el S.O. es una capa de abstraccin del
hardware particular sobre el que corre.
Por si no ha quedado claro el porqu de estas facilidades, pongamos un
ejemplo: Un programador de bases de datos que trabaje con dos mquinas
distintas en HW

se encontrar con el problema de que tiene que saber

manipular los archivos tanto en una como en otra plataforma. Si el S.O. cumple
bien el objetivo de abstraccin, un mismo programa puede funcionar sobre dos
mquinas de arquitectura diferente con el mismo sistema operativo, sin que
haga falta modificar el cdigo del programa.
Adems de estas funciones, el S.O. tiene otro conjunto destinado al
funcionamiento eficiente de la mquina: asignacin de recursos, gestin de
procesos.
Prcticamente, estos dos grandes grupos de funciones determinan todo lo que
hace un S.O., por un lado, las que facilitan la vida al programador y, por otro,
las que hacen que stas ltimas se ejecuten en un medio con consistencia. De
nada servira que el sistema permitiese abrir 5 archivos simultneamente si es
incapaz de dejar algo de memoria para la ejecucin del programa que los ha
abierto.
Veamos ahora algunos de estos tipos de llamadas al sistema, o servicios que
ofrece el sistema:

Para la gestin de procesos: Dentro de este tipo nos encontramos todas


aquellas llamadas necesarias para la ejecucin de programas, as como
la eficiente distribucin de recursos entre stos.

Para el acceso a dispositivos de E/S: Como hemos dicho antes, el S.O.


debe abstraer el funcionamiento del hardware al programador. Para ello,
el sistema nos provee de ciertas funciones genricas para su acceso.

Para la deteccin de errores y respuesta: A pesar de ser mquinas, en


los sistemas se pueden producir multitud de errores, tanto de SW como
de HW, algunos de ellos pueden ser:
Acceso a zonas prohibidas de memoria (SW)
Imposibilidad de asignar los recursos solicitados por una aplicacin
(SW)
Fallo de algn dispositivo de almacenamiento (HW)

En todos los casos el sistema ha de ser capaz de responder con xito a estos
sucesos, o en su defecto, evitar la prdida de datos. Alguno de estos
problemas, como la imposibilidad de asignar recursos solicitados por una
aplicacin han causado muchos quebraderos de cabeza a los programadores y
se han llegado a escribir captulos enteros sobre las posibles soluciones.

Para la contabilidad del sistema: Si bien este tipo de funciones no las


encontramos en todos los S.O., son bastante comunes en aquellos que
tienen la particularidad de ser multiusuario.

Los S. O. son, en primer lugar, administradores de recursos, siendo el recurso


primario el hardware del sistema (ver Fig. 1).
Funciones especficas de los S.O..

Comunicacin con el usuario.

Control y gestin de elementos fsicos.

Utilizacin de varios usuarios.

Ejecucin de varios programas.

Compilacin de la informacin.
5

Compilacin de los perifricos.

Comunicacin entre sistemas.

Fig. 1.1 Principales recursos.

Caractersticas de los sistemas operativos.


En general, se puede decir que un S.O tiene las siguientes caractersticas:

Conveniencia. Un S.O hace ms conveniente el uso de una


computadora.

Eficiencia. Un S.O permite que los recursos de la computadora se usen


de la manera ms eficiente posible.

Habilidad para evolucionar. Un S.O deber construirse de manera que


permita el desarrollo, prueba o introduccin efectiva de nuevas funciones
del sistema sin interferir con el servicio.

Encargado de administrar el hardware. El S.O se encarga de manejar de


una mejor manera los recursos de la computadora en cuanto a hardware

se refiere, esto es, asignar a cada proceso una parte del procesador para
poder compartir los recursos.

Relacionar dispositivos (gestionar a travs del kernel). El S.O se debe


encargar de comunicar a los dispositivos perifricos, cuando el usuario
as lo requiera.

Organizar datos para acceso rpido y seguro.

Manejar las comunicaciones en red. El S.O permite al usuario manejar


con alta facilidad todo lo referente a la instalacin y uso de las redes de
computadoras.

Procesamiento por bytes de flujo a travs del bus de datos.

Facilitar las entradas y salidas. Un S.O debe hacerle fcil al usuario el


acceso y manejo de los dispositivos de Entrada

Administracin de tareas:

Monotarea: Si solamente puede ejecutar un programa (aparte de los


procesos del propio S.O.) en un momento dado. Una vez que empieza a
funcionar un programa, continuar hacindolo hasta su finalizacin o
interrupcin.

Multitarea: Si es capaz de ejecutar varios programas al mismo tiempo.


Este tipo de S.O. normalmente asigna los recursos disponibles (CPU,
memoria, perifricos) de forma alternativa a los programas que los
solicitan, de manera que el usuario percibe que todos funcionan a la vez.

Administracin de usuarios:

Monousuario: Si slo permite ejecutar los programas de un usuario al


mismo tiempo.

Multiusuario: Si permite que varios usuarios ejecuten simultneamente


sus programas, accediendo a la vez a los recursos del ordenador.
Normalmente estos S.O. utilizan mtodos de proteccin de datos, de
manera que un programa no pueda usar o cambiar los datos de otro
usuario.

Manejo de recursos:
7

Centralizado: Si permite utilizar los recursos de un solo ordenador.

Distribuido: Si permite utilizar los recursos (memoria, CPU, disco,


perifricos) de ms de un ordenador al mismo tiempo.

Los principales recursos administrados por los S. O. son:

Procesadores.

Almacenamiento.

Dispositivos de e / s.

Datos.

Los S. O. son una interfaz con:

Operadores.

Programadores de aplicaciones.

Programadores de sistemas (administradores del S. O.).

Programas.

Hardware.

Usuarios.

El S. O. debe presentar al usuario el equivalente de una mquina extendida o


mquina virtual que sea ms fcil de programar que el hardware subyacente.
Un S.O es en s mismo, un programa de computadora. Sin embargo, es un
programa muy especial, quiz el ms complejo e importante en una
computadora. El S.O despierta a la computadora y hace que reconozca a la
CPU, la memoria, el teclado, el sistema de vdeo y las unidades de disco.
Adems, proporciona la facilidad para que los usuarios se comuniquen con la
computadora y sirve de plataforma a partir de la cual se corran programas de
aplicacin.

Cuando enciendes una computadora, lo primero que sta hace es llevar a cabo
un autodiagnstico llamado auto prueba de encendido (Power On Self Test,
POST). Durante la POST, la computadora identifica su memoria, sus discos, su
teclado, su sistema de vdeo y cualquier otro dispositivo conectado a ella. Lo
siguiente que la computadora hace es buscar un S.O para arrancar (boot). Una
vez que la computadora ha puesto en marcha su S.O, mantiene al menos parte
de ste en su memoria en todo momento. Mientras la computadora est
encendida, el S.O tiene 4 tareas principales:

Proporcionar ya sea una interfaz de lnea de comando o una interfaz


grfica al usuario, para que este ltimo se pueda comunicar con la
computadora. Interfaz de lnea de comando: t introduces palabras y
smbolos desde el teclado de la computadora, ejemplo, el MS-DOS.
Interfaz grfica del Usuario (GUI), seleccionas las acciones mediante el
uso de un Mouse para pulsar sobre figuras llamadas iconos o
seleccionar opciones de los mens.

Administrar los dispositivos de hardware en la computadora. Cuando


corren los programas, necesitan utilizar la memoria, el monitor, las
unidades de disco, los puertos de Entrada/Salida (impresoras, mdems,
etc.). El S.O sirve de intermediario entre los programas y el hardware.

Administrar y mantener los sistemas de archivo de disco. Los S.O


agrupan la informacin dentro de compartimientos lgicos para
almacenarlos en el disco. Estos grupos de informacin son llamados
archivos. Los archivos pueden contener instrucciones de programas o
informacin creada por el usuario. El S.O mantiene una lista de los
archivos en un disco, y nos proporciona las herramientas necesarias
para organizar y manipular estos archivos. Apoyar a otros programas.
Otra de las funciones importantes del S.O es proporcionar servicios a
otros programas. Estos servicios son similares a aquellos que el S.O
proporciona directamente a los usuarios. Por ejemplo, listar los archivos,
grabarlos a disco, eliminar archivos, revisar espacio disponible, etc.

Cuando los programadores escriben programas de computadora, incluyen en


sus programas instrucciones que solicitan los servicios del S.O. Estas
instrucciones son conocidas como "llamadas del sistema".

1.3 Evolucin histrica.


Los S.O. han estado relacionados histricamente con la arquitectura de las
computadoras en las cuales se ejecutan, razn por la cual su historia se puede
analizar

segn

las

siguientes

generaciones

CON

sus

principales

caractersticas.
A finales de los aos 40, con la aparicin de la primera generacin de
computadores, se realizaba lo que se llama el proceso en serie. Por aquel
entonces no existan los sistemas operativos, y los programadores deban
interactuar con el hardware del computador sin ayuda externa. Esto haca que
el tiempo de preparacin para realizar una tarea fuera excesivo. Adems para
poderse utilizar el computador deba hacerse por turnos. Para ello se rellenaba
un formulario de reserva en el que se indicaba el tiempo que el programador
necesitaba para realizar su trabajo. Hay que tener en cuenta que por aquel
entonces los computadores eran mquinas muy costosas y que eran esto haca
que estuvieran muy solicitadas y que slo pudieran utilizarse en periodos
breves de tiempo.
A finales de los 40's el uso de computadoras estaba restringido a aquellas
empresas o instituciones que podan pagar su alto precio, y no existan los
sistemas operativos. En su lugar, el programador deba tener un conocimiento y
contacto profundo con el hardware, y en el infortunado caso de que su
10

programa fallara, deba examinar los valores de los registros y paneles de luces
indicadoras del estado de la computadora para determinar la causa del fallo y
poder corregir su programa, adems de enfrentarse nuevamente a los
procedimientos de apartar tiempo del sistema y poner a punto los
compiladores, ligadores, etc; para volver a correr su programa, es decir,
enfrentaba el problema del procesamiento serial ( serial processing ).

Fig. 1.2 Ciclo de programacin primero generacin de computadoras.

La importancia de los sistemas operativos nace histricamente desde los 50's,


cuando se hizo evidente que el operar una computadora por medio de tableros
enchufables en la primera generacin y luego por medio del trabajo en lote en
la segunda generacin se poda mejorar notoriamente, pues el operador
realizaba siempre una secuencia de pasos repetitivos, lo cual es una de las
caractersticas contempladas en la definicin de lo que es un programa. Es
decir, se comenz a ver que las tareas mismas del operador podan plasmarse
en un programa, el cual a travs del tiempo y por su enorme complejidad se le
llam "Sistema Operativo". As, tenemos entre los primeros sistemas operativos
al Fortran Monitor System ( FMS ) e IBSYS.
El CP/M (Control Program for Microcomputers), desarrollado por Gary Kildall
fue el primer sistema operativo que poda ejecutarse en PCs de diferentes
fabricantes. Cuenta una ancdota que ejecutivos de IBM fueron a visitar a
Kildall para ofrecerle un acuerdo para poner el CP/M en la IBM PC, pero Kildall
al parecer estaba ocupado en una sesin de vuelo, y no los pudo atender.
Resultado: IBM lleg a un acuerdo con un joven llamado Bill Gates para que
desarrollara un sistema operativo, nombrado como MS-DOS.
Para muchos de los que hoy nos encontramos trabajando con una
computadora, el sistema operativo D.O.S (Disk Operating System) fue el

11

primero que nos toc utilizar. De la misma manera, fue tambin el comienzo
para Bill Gates y su empresa Microsoft.
En sus principios fue desarrollado junto con la empresa IBM, pero diferencias
entre las partes hicieron que no fuera un lanzamiento en conjunto. Por el
contrario, cada una de las empresas present "su" sistema operativo: PC-DOS
(IBM) y MS-DOS (Microsoft).
Un tercer competidor para estos sistemas operativos fue el DR-D.O.S. de la
empresa Digital Research que inclua comandos ms detallados y de mayor
funcionalidad, pero que con el tiempo, y gracias a las campaas publicitarias de
Microsoft fue quedando relegado a un segundo lugar compartido con el PCDOS de IBM. Luego de unos aos DR-D.O.S. fue adquirido por Novell que
present una nueva versin conocida como Novell D.O.S. que realmente casi
no tuvo cabida en el mercado, aunque era muy buena.
D.O.S. era simplemente una pantalla de texto con una lnea de comandos que
nos indicaba en qu directorio nos encontrbamos como nico dato orientativo.
Uno tena que saber que cosas haba que escribir para que la mquina "hiciera
algo". No haba menes contextuales, ni pantallas grficas que nos guiaran.
Careca por completo de algn nivel intuitivo. D.O.S. todava hoy utiliza
antiguos comandos

CP/M tales como DIR, REN y TYPE que aun hoy

funcionan bajo la mquina virtual D.O.S. de Windows.


Las versiones que lo hicieron famoso en el mundo entero fueron la 3.0 y la 3.3,
mientras que la ms utilizada en Argentina fue la 5.0, que introdujo muchos
cambios a sus antecesoras. La versin 4.0 de D.O.S. estuvo plagada de
errores, por lo cual casi no se uso (los usuarios se mantuvieron con la versin
3.30).
La ltima versin del producto como tal fue la 6.22, ya que luego apareci
Windows 95 que en su corazn inclua la versin 7.0, posteriormente Windows
98, Windows xp y actualmente Windows vista incorpora una nueva interfaz
llamada Aero la cual incorpora caractersticas como la semi-transparencia de
las ventanas, lo que permite ver lo que hay detrs de ellas.

12

Generacin Cero
(dcada de 1940):

Primera generacin (19451955): bulbos y conexiones:

Carencia
total de
S. O.
Completo acceso al
lenguaje de mquina

Generacin

Carencia de S. O.
En los aos
cincuenta comienzan
como transicin entre
trabajos, haciendo la
misma ms simple.

Aparicin de software amigable con el


usuario,
destinado
a
usuarios
no
profesionales y con una interfase grfica muy
desarrollada.
Desarrollo de sistemas operativos de red y
sistemas operativos distribuidos.
Sistemas operativos de red:
Los usuarios estn conscientes de la
existencia de varias computadoras
conectadas.
Cada mquina ejecuta su propio S. O.
local.
Son similares a los S. O. de un solo
procesador pero con el agregado de:
Controlador de interfaz de la red y
su software de bajo nivel.
Software para conexin y acceso a
archivos remotos, etc.
Sistemas operativos distribuidos:
Aparece ante los usuarios como un S.
O. de un solo procesador, an cuando
de soporte a varios procesadores.
Los usuarios no son conscientes del
lugar donde se ejecutan sus
programas o donde se encuentran
sus archivos, ya que lo debe
administrar el S. O. automticamente.
Deben permitir que un programa se
ejecute mediante varios procesadores
a la vez, maximizando el paralelismo.
Aparicin de emuladores de terminal
para el acceso a equipos remotos desde
computadoras personales (PC).
Gran nfasis en la seguridad, en
especial por el desarrollo de los
sistemas de comunicaciones de
datos.
El S. O. crea un ambiente de trabajo
segn el concepto de mquina
virtual,
que
lo
asla
del
funcionamiento interno de la mquina.
Proliferacin de sistemas de bases
de datos, accesibles mediante redes
de comunicacin.

Segunda
generacin
(1955-1965): transistores y
sistemas de procesamiento
por lotes (batch):
En los aos sesenta aparecen
los S. O. para sistemas
compartidos con:
Multiprogramacin:
varios
programas de usuarios se
encuentran al mismo tiempo en
el almacenamiento principal,
cambiando
el
procesador
rpidamente de un trabajo a
otro.
Multiprocesamiento:
varios
procesadores se utilizan en un
mismo
sistema
para
incrementar
el
poder
de
procesamiento.
Posteriormente
aparece
la
independencia de dispositivo:
El
programa
del
usuario
especifica las caractersticas de
los dispositivos que requieren
los archivos.
El S. O. asigna los dispositivos
correspondientes segn los
requerimientos
y
las
disponibilidades.

Tercera generacin (1965-1980): circuitos


integrados y multiprogramacin:

Cuarta
generaci
n
(19801990):
computa
doras
personal
es.

Difusin de la multiprogramacin:
Particin de la memoria en porciones, con trabajos
distintos en cada una de ellas.
Aprovechamiento
del
tiempo
de
espera
consecuencia de operaciones de e/s, para utilizar
la CPU para otros procesos.
Proteccin por hardware del contenido de cada
particin de memoria.
Aparicin de tcnicas de spooling:
Simultaneous Peripheral Operation On Line:
operacin simultnea y en lnea de perifricos.
Almacenamiento de trabajos de entrada y de
salida en dispositivos transitorios rpidos (discos),
para disminuir el impacto de los perifricos mas
lentos.
Son sistemas de modos mltiples, es decir que
deben soportar sistemas de propsitos
generales; son grandes y complejos pero muy
poderosos.
Interponen una capa de software entre el usuario
y el hardware.
Aparecen los lenguajes de control de trabajos,
necesarios para especificar el trabajo y los
recursos requeridos.
Soportan timesharing (tiempo compartido),
variante de la multiprogramacin con usuarios
conectados mediante terminales en lnea,
permitiendo la operacin en modo interactivo o
conversacional.
Aparecen los sistemas de tiempo real, que
requieren tiempos de respuesta muy exigentes,
especialmente para usos industriales o militares.

13

1.4 Clasificacin
Debido a la evolucin de los S.O fue necesario realizar una clasificacin;
considerando las diferencias existentes entre sus componentes los podemos
clasificar en:

por lotes.

multiprogramacin.

multiusuario.

de tiempo compartido.

de tiempo real.

Sistemas operativos por lotes


El procesamiento por lotes precisa generalmente que el programa, los datos y
las rdenes adecuadas al sistema sean remitidos todos juntos en forma de
trabajo. Los S.O por lotes permiten poca o ninguna iteracin entre los usuarios
y los programas en ejecucin. El procesamiento por lotes tiene un mayor
potencial de utilizacin de recursos que el procesamiento serie simple en
sistemas informticos que dan servicio ha mltiples usuarios. Debido a las
dilaciones de los tiempos de retorno y a la depuracin fuera de lnea, el
procesamiento por lotes no es muy conveniente para desarrollo de programas.
Los programas que no requieren interaccin y los programas que tienen largos
tiempos de ejecucin

pueden estar bien servidos por un S.O de lotes.

Ejemplos de tales programas incluyen los programas de nomina de prediccin


de tiempo, de anlisis estadsticos y de grandes clculos cientficos. El
procesamiento serie combinado con archivos de ordenes de lotes suele
encontrarse en muchos computadoras personales.
La planificacin de sistemas de lotes es muy sencilla. Los trabajos son
tpicamente procesados en orden de llegada, es decir, en modo primero en
llegar, primero en ejecutarse.
La gestin de memoria en sistema de lotes es tambin muy sencilla. La
memoria se suele dividir en dos reas. Una de ellas esta permanente ocupada

14

por la parte residente del sistema operativo, y la otra es utilizada para cargar
programas transitorios durante su ejecucin. Cuando un programa transitorio
termina, se carga un nuevo programa en la misma rea de memoria.
Puesto que en cada momento hay como mximo un programa en ejecucin los
sistemas de lotes no requieren ninguna gestin de dispositivos crtica en el
tiempo. Por esta razn, muchos sistemas .operativos por lotes y serie utilizan el
sencillo mtodo E/S.
Los S.O por lotes requieren que la informacin est reunida en bloque o "lote"
(el programa, los datos, y las instrucciones). Los trabajos son procesados en el
orden de admisin, segn el modelo de "primero en llegar primero en ser
atendido". En estos sistemas la memoria se divide en dos zonas. Una de ellas
es ocupada por el S.O, y la otra se usa para cargar programas transitorios para
su ejecucin. Cuando termina la ejecucin de un programa se carga un nuevo
programa en la misma zona de memoria.
Sistemas operativos multiprogramacin
A una instancia de un programa en ejecucin se le denomina proceso o tarea.
Un S.O multitarea se distingue por su capacidad de soportar la ejecucin
concurrente de dos o ms procesos activos. La

multitarea se implementa

generalmente manteniendo el cdigo y los datos de varios procesos


simultneamente en memoria multiplexando el procesador y los dispositivos de
E/S entre ellos. La multitarea suele asociarse con soporte de hardware y
software para la proteccin de memoria con el fin de evitar que procesos
errneos corrompan el espacio de direcciones y el comportamiento de otros
procesos residentes.
El termino multiprogramacin designa a un S.O que, adems de soportar
multitarea, proporciona formas sofisticadas de proteccin de memoria y fuerza
el control de la concurrencia cuando los procesos acceden a dispositivos de
E/S y archivos compartidos. Los sistemas operativos de multiprogramacin
soportan generalmente mltiples usuarios, en cuyo caso tambin se les
denomina sistemas multiusuarios. Los S.O multiusuarios proporcionan

15

facilidades para mantenimiento de entornos de usuarios individuales, requieren


validacin de usuario para seguridad de proteccin y proporcionan contabilidad
de uso de los recursos por usuario. En general, la multiprogramacin implica
multitarea, pero la multitarea no implica multiprogramacin.
En efecto la operacin multitarea es uno de los mecanismos que un S.O
multiprogramado emplea para gestionar la totalidad de los recursos del sistema
informtico, incluyendo el procesador, la memoria y los dispositivos de entrada
y salida. La operacin multitarea sin soporte multiusuario puede hallarse en el
S.O de algunas computadoras personales avanzados y en sistemas operativos
de tiempo real.
Los S.O multiacceso permiten acceso simultneo a un sistema informtico
desde dos o ms terminales. En general, la operacin multiacceso no implica
necesariamente multiprogramacin. Un ejemplo es el proporcionado por
algunos sistemas dedicados para procesamiento de transacciones, tales como
los sistemas de reserva reas que soportan centenares de terminales activos
bajo control de un nico programa.
Los sistemas de multiprogramacin son capaces de soportar dos o ms
procesos concurrentes mltiples, permiten que residan al mismo tiempo en la
memoria primaria las instrucciones y los datos procedentes de dos o ms
procesos. Estos sistemas implican la operacin de multiproceso, para el
manejo de la informacin. Se caracterizan principalmente por un gran nmero
de programas activos simultneamente que compiten por los recursos del
sistema, como el procesador, la memoria, y los "dispositivos de E/S". Estos
sistemas monitorean el estado de todos los programas activos y recursos del
sistema.
Sistemas operativos multiusuario
Los S.O multiusuario permiten acceder simultneamente a un sistema de
computadoras a travs de dos o ms terminales. Este tipo de sistema operativo
es fundamental en el manejo de redes de computadoras actualmente.

16

Sistemas operativos de tiempo compartido


Un S.O de tiempo compartido permite a los diversos usuarios compartir el
mismo tiempo del computador. Puesto que es un sistema de tiempo compartido
cada accin o mandato suele ser breve, solo se requiere un corto tiempo de
ucp para cada usuario. Como el sistema pasa rpidamente de un usuario al
siguiente, cada una de ellos tiene la impresin de que cuenta con su propio
computador, cuando en realidad todos comparten uno solo.
En 1960 se expuso el concepto de tiempo compartido, pero como los sistemas
de este tipo eran ms difciles y costosos de construir (por los numerosos
dispositivos de E/S que necesitan), no fueron comunes sino a principios de los
aos 60. Al crecer la popularidad del tiempo compartido, los cientficos han
tratado de combinar los sistemas por lotes y de tiempo compartido en uno solo.
Diversos sistemas de computacin diseados inicialmente como sistemas por
lotes se han modificado para crear un subsistema de tiempo compartido. Por
ejemplo el sistema por lotes OS/360 de IBM, se modifico para permitir la opcin
de tiempo compartido (TSO, Time-Sharing Option). As mismo varios sistemas
de tiempo compartido han aadido un subsistema por lotes. Hoy en da la
mayora de los sistemas ofrecen tanto el procesamiento por lotes como el
tiempo compartido, an que su diseo clsico se inclina hacia uno u otro tipo.
Los S.O de tiempo compartido son complejos y ofrecen algn mecanismo para
la ejecucin concurrente. Adems, como en la multiprogramacin, hay que
conservar simultneamente varios programas en la memoria, lo que requiere
algn tipo de administracin de memoria, proteccin y planificacin de la cpu.
Para lograr un tiempo de respuesta razonable hay que intercambiar los trabajos
entre la memoria principal y el disco que ahora funciona como almacenamiento
de respaldo para la memoria principal. Por lo tanto, tambin es necesario
proporcionar administracin del disco.

Los sistemas de tiempo compartido

deben ofrecer, adems un sistema de archivo en lnea y proteccin. La


multiprogramacin y el tiempo compartido son los aspectos centrales de los
sistemas operativos modernos.5
5

A. Silberschatz, J. Peterson, P. Galvn, Sistemas Operativos conceptos fundamentales, Pg. 22.

17

Los S.O de tiempo compartido tratan de proporcionar un reparto equitativo de


los recursos comunes para dar la impresin a los usuarios de que poseen una
computadora independiente. En estos sistemas el administrador de memoria
proporciona aislamiento y proteccin de los programas, ya que generalmente
no tienen necesidad de comunicarse entre ellos. El control de E/S se encarga
de proporcionar o retirar la asignacin a los dispositivos de forma que se
preserve la integridad del sistema y se proporcione servicio a todos los
usuarios. El administrador de archivos proporciona proteccin y control en el
acceso de la informacin, dada la posibilidad de concurrencia y conflictos al
tratar de acceder a los archivos.
Sistemas operativos de tiempo real
Estos sistemas tienen como objetivo proporcionar tiempos ms rpidos de
respuesta, procesar la informacin sin tiempos muertos. En estos sistemas el
administrador de memoria es relativamente menos solicitado debido a que
muchos procesos residen permanentemente en memoria. El administrador de
archivos se encuentra normalmente en grandes sistemas de tiempo real y su
objetivo principal es manejar la velocidad de acceso, ms que la utilizacin
eficaz del almacenamiento secundario.

1.5 Estructura (niveles o estratos de diseo).


Se deben observar dos tipos de requisitos cuando se construye un S.O, los
cuales son:

Requisitos de usuario: Sistema fcil de usar y de aprender, seguro,


rpido y adecuado al uso al que se le quiere destinar.

Requisitos del software: Donde se engloban aspectos como el


mantenimiento, forma de operacin, restricciones de uso, eficiencia,
tolerancia frente a los errores y flexibilidad.

A continuacin se describen las distintas estructuras que presentan los S.O.


para satisfacer las necesidades que de ellos se quieren obtener.
Estructura monoltica.

18

Es la estructura de los primeros S.O constituidos fundamentalmente por un solo


programa compuesto de un conjunto de rutinas entrelazadas de tal forma que
cada una puede llamar a cualquier otra (Ver Fig. 1.8).
Este tipo de organizacin es, con diferencia, la ms comn. El sistema
operativo se escribe como una coleccin de procedimientos, cada uno de los
cuales puede llamar a los dems cada vez que as lo requiera. Cuando se usa
esta tcnica, cada procedimiento del sistema tiene una interfaz bien definida en
trminos de parmetros y resultados, y cada uno de ellos es libre de llamar a
cualquier otro, si ste ltimo proporciona un clculo til para el primero.
Para construir el programa objeto real del sistema operativo siguiendo este
punto de vista, se compilan de forma individual los procedimientos, o los
ficheros que contienen los procedimientos, y despus se enlazan en un slo
fichero objeto con el enlazador. En trminos de ocultacin de la informacin,
sta es prcticamente nula: cada procedimiento es visible a los dems (en
contraste con una estructura con mdulos o paquetes, en la que la mayora de
la informacin es local a un mdulo, y donde slo los datos sealados de forma
expresa pueden ser llamados desde el exterior del mdulo).
Los servicios (mediante llamadas al sistema) que proporciona el sistema
operativo se solicitan colocando los parmetros en lugares bien definidos,
como los registros o la pila, para despus ejecutar una instruccin especial de
trampa, a veces referida como llamada al ncleo o llamada al supervisor.
Esta instruccin cambia la mquina del modo usuario al modo ncleo (tambin
conocido como modo supervisor), y transfiere el control al sistema operativo, lo
que se muestra en el evento (1) de la figura 1.8.
El sistema operativo examina entonces los parmetros de la llamada para
determinar cual de ellas se desea realizar, como se muestra en (2) de la figura
1.8. A continuacin, el sistema operativo analiza una tabla que contiene en la
entrada k un apuntador al procedimiento que implementa la k-sima llamada al
sistema. Esta operacin, que se muestra en (3) de la figura 1.8, identifica el
procedimiento de servicio, al cual se llama. Por ltimo, la llamada al sistema
termina y el control vuelve al programa del usuario.

19

Esta organizacin sugiere una estructura bsica del sistema operativo:

Un programa principal que llama al procedimiento del servicio solicitado.


Un conjunto de procedimientos de servicio que lleva a cabo las llamadas al
sistema.

Un conjunto de procedimientos de utilidades que ayudan a los


procedimientos de servicio.

En este modelo, para cada llamada al sistema existe un procedimiento de


servicio que se encarga de ella. Los procedimientos de utilidad hacen cosas
necesarias para varios procedimientos de servicio, como por ejemplo, buscar
los datos del programa del usuario. Esta divisin de los procedimientos en tres
capas se muestra en la figura 1.9.

20

Las caractersticas fundamentales de este tipo de estructura son:

Construccin del programa final a base de mdulos compilados


separadamente que se unen a travs del ligador.

Buena definicin de parmetros de enlace entre las distintas rutinas


existentes, que puede provocar mucho acoplamiento.

Carecen de protecciones y privilegios al entrar a rutinas que manejan


diferentes aspectos de los recursos de la computadora, como memoria,
disco, etc.

Generalmente estn hechos a medida, por lo que son eficientes y rpidos en su


ejecucin y gestin, pero por lo mismo carecen de flexibilidad para soportar
diferentes ambientes de trabajo o tipos de aplicaciones.

Fig. 1.2 estructura monoltica.

Modelo cliente-servidor
Una tendencia de los sistema operativos modernos es la de trasladar el cdigo
a capas superiores, y eliminar la mayor parte posible del sistema operativo para
mantener un ncleo mnimo. El punto de vista usual es el implantar la mayora
de las funciones del sistema operativo como procesos de usuario. Para solicitar
un servicio, como la lectura de un bloque de cierto fichero, un proceso de
usuario (denominado en este caso proceso cliente) enva la solicitud a un
proceso servidor, que realiza el trabajo y devuelve la respuesta.

21

En este modelo, que se muestra en la figura 5.3, lo nico que hace el ncleo es
controlar la comunicacin entre los clientes y los servidores. Al separar el
sistema operativo en partes, cada una de ellas controla una faceta del sistema,
como el servicio a ficheros, servicio a procesos, servicio a terminales o servicio
a la memoria; cada parte es pequea y controlable. Adems, puesto que todos
los servidores se ejecutan como procesos en modo usuario, y no en modo
ncleo, no tienen acceso directo al hardware. En consecuencia, si hay un error
en el servidor de ficheros ste puede fallar, pero esto no afectar en general a
toda la mquina.
Otra de las ventajas del modelo cliente-servidor es su capacidad de adaptacin
para su uso en sistemas distribuidos (vase la figura 5.4). Si un cliente se
comunica con un servidor mediante mensajes, el cliente no necesita saber si el
mensaje se gestiona de forma local, en su mquina, o si se enva por medio de
una red a un servidor en una mquina remota. En lo que respecta al cliente, lo
mismo ocurre en ambos casos: se envi una solicitud y se recibi una
respuesta.

La idea anterior de un ncleo que slo controla el transporte de mensajes de


clientes a servidores, y viceversa, no es totalmente real. Algunas funciones del
sistema operativo (como la introduccin de rdenes en los registros fsicos de
los controladores de E/S) son difciles, si no es que imposible de realizar, a
partir de programas de usuario. Existen dos formas de afrontar este problema.
Una es hacer que algunos procesos de servidores crticos (por ejemplo, los
gestores de los dispositivos de E/S) se ejecuten en realidad en modo ncleo,
22

con acceso total al hardware, pero de forma que se comuniquen con los dems
procesos mediante el mecanismo normal de mensajes.
La otra forma es construir una cantidad mnima de mecanismos dentro del
ncleo, pero manteniendo las decisiones de poltica relativos a los usuarios
dentro del espacio de los usuarios. Por ejemplo, el ncleo podra reconocer que
cierto mensaje enviado a una direccin especial indica que se tome el
contenido de ese mensaje y se cargue en los registros del controlador de algn
disco, para iniciar la lectura del disco. En este ejemplo, el ncleo ni siquiera
inspeccionara los bytes del mensaje para ver si son vlidos o tienen algn
sentido; slo los copiara ciegamente en los registros del controlador del disco.
Es evidente que debe utilizarse cierto esquema para limitar tales mensajes slo
a los procesos autorizados. La separacin entre mecanismos y poltica es un
concepto importante, aparece una y otra vez en diversos contextos de los
sistemas operativos.

Estructura jerrquica.

23

A medida que fueron creciendo las necesidades de los usuarios y se


perfeccionaron los sistemas, se hizo necesaria una mayor organizacin del
software del S.O., donde una parte del sistema contena subpartes y esto
organizado en forma de niveles.
Se dividi el S.O en pequeas partes, de tal forma que cada una de ellas
estuviera perfectamente definida y con un claro interface con el resto de
elementos, constituyendo una estructura jerrquica o de niveles en los S.O, el
primero de los cuales fue denominado THE (Technische Hogeschool,
Eindhoven), de Dijkstra, que se utiliz con fines didcticos (tabla. 1). Se puede
pensar tambin en estos sistemas como si fueran `multicapa. Multics y Unix
caen en esa categora.

5 Operador
4 Programas del Usuario
3 Control de Entrada Salida
2 Comunicaciones Operador Proceso
1 Administracin de la Memoria y del Disco
0 - Asignacin del Procesador y Multiprogramacin
Tabla 1: Estructura del S.O. en capas "THE".

Descripcin de capas:
Capa 0:

Trabaja con la asignacin del procesador.

Alterna entre los procesos cuando ocurren las


interrupciones o expiran los cronmetros.

Proporciona la multiprogramacin bsica.


Capa 1:

Administra la memoria.

24

Asegura que las pginas (porciones de memoria)


requeridas de los procesos lleguen a memoria
cuando fueran necesarias.

Capa 2:
Administra la comunicacin entre cada proceso y la
consola del operador.
Por sobre esta capa, cada proceso tiene su propia
consola de operador.

Capa 3:
Controla los dispositivos de e / s y almacena en buffers los flujos de
informacin entre ellos.
Por sobre la capa 3 cada proceso puede trabajar con dispositivos
abstractos de e / s en vez de con dispositivos reales.

Capa 4:
Aloja los programas del usuario.
Los programas. del usuario no tienen que
preocuparse por el proceso, memoria, consola o
control de e / s.

Capa 5:
Localiza el proceso operador del sistema.

Una generalizacin mas avanzada del concepto de capas se presento con


Multics (MIT, Bell Labs y General Electric):
Multics: multiplexed information and computing service.
Presenta una estructura en anillos concntricos, siendo los interiores los
privilegiados.
Un procedimiento de un anillo exterior, para llamar a un procedimiento
de un anillo interior, debe hacer el equivalente a una llamada al sistema.

25

En la estructura anterior se basan prcticamente la mayora de los S.O


actuales. Otra forma de ver este tipo de sistema es la denominada de anillos
concntricos o "rings" (Ver Fig. 1.3).

Fig. 1.3 organizacin jerrquica anillos.

En el sistema de anillos, cada uno tiene una apertura, conocida como puerta o
trampa (trap), por donde pueden entrar las llamadas de las capas inferiores. De
esta forma, las zonas ms internas del sistema operativo o ncleo del sistema
estarn ms protegidas de accesos indeseados desde las capas ms externas.
Las capas ms internas sern, por tanto, ms privilegiadas que las externas.
(Simultaneous Peripheral Operation On Line: operacin simultnea de perifricos en lnea
Mquina Virtual.
Se trata de un tipo de S.O que presentan una interface a cada proceso,
mostrando una mquina que parece idntica a la mquina real subyacente.
Estos S.O separan dos conceptos que suelen estar unidos en el resto de
sistemas: la multiprogramacin y la mquina extendida. El objetivo de los S.O
de mquina virtual es el de integrar distintos sistemas operativos dando la
sensacin de ser varias mquinas diferentes.

26

Se separan totalmente las funciones de multiprogramacin y de mquina


extendida. Existe un elemento central llamado monitor de la mquina virtual
que:

Se ejecuta en el hardware.

Realiza la multiprogramacin.

Proporciona varias mquinas virtuales a la capa superior.

Las mquinas virtuales instrumentan copias exactas del hardware simple, con
su modo ncleo/usuario, E/S, interrupciones y todo lo dems que posee una
mquina real.
Pueden ejecutar cualquier S.O. que se ejecute en forma directa sobre el
hardware.
Las distintas mquinas virtuales pueden ejecutar distintos S.O. y en general as
lo hacen. Soportan perifricos virtuales.
Ejemplo de S.O. representativo de esta estructura: VM/370 de IBM (Ver Fig.
1.4):

Fig. 1.4 La estructura de VM/370 con CMS.

Las m. v. generalmente utilizaran, entre otros, el S. O. CMS: Conversational


Monitor System. Cuando un programa CMS ejecuta una llamada al sistema:
La llamada es atrapada por el S. O. en su propia m. v.; no pasa
directamente al VM/370.
CMS proporciona las instrucciones de e / s en hardware para la lectura
del disco virtual o lo necesario para efectuar la llamada.

27

VM/370 atrapa estas instrucciones de e / s y las ejecuta sobre el


hardware verdadero.

Fig. 1.5 maquina virtual

El ncleo de estos S.O se denomina monitor virtual y tiene como misin llevar a
cabo la multiprogramacin, presentando a los niveles superiores tantas
mquinas virtuales como se soliciten. Estas mquinas virtuales no son
mquinas extendidas, sino una rplica de la mquina real, de manera que en
cada una de ellas se pueda ejecutar un sistema operativo diferente, que ser el
que ofrezca la mquina extendida al usuario (Ver Fig. 1.5).
Cliente-servidor ( Microkernel)
El tipo ms reciente de sistemas operativos es el denominado Cliente-servidor,
que puede ser ejecutado en la mayora de las computadoras, ya sean grandes
o pequeas.
Este sistema sirve para toda clase de aplicaciones por tanto, es de propsito
general y cumple con las mismas actividades que los sistemas operativos
convencionales.
El ncleo tiene como misin establecer la comunicacin entre los clientes y los
servidores. Los procesos pueden ser tanto servidores como clientes. Por
ejemplo, un programa de aplicacin normal es un cliente que llama al servidor
correspondiente para acceder a un archivo o realizar una operacin de

28

entrada/salida sobre un dispositivo concreto. A su vez, un proceso cliente


puede actuar como servidor para otro.". Este paradigma ofrece gran flexibilidad
en cuanto a los servicios posibles en el sistema final, ya que el ncleo provee
solamente funciones muy bsicas de memoria, entrada/salida, archivos y
procesos, dejando a los servidores proveer la mayora que el usuario final o
programador puede usar. Estos servidores deben tener mecanismos de
seguridad y proteccin que, a su vez, sern filtrados por el ncleo que controla
el hardware.
Una tendencia en los S.O. modernos es la de explotar la idea de mover el
cdigo a capas superiores y mantener un ncleo mnimo.
Para solicitar un servicio (por ejemplo: lectura de un bloque de cierto archivo)
segn el modelo cliente/servidor: (Ver Fig. 1.6)
1. El proceso del usuario (proceso cliente) enva la solicitud a un proceso
servidor:
2. Realiza el trabajo y regresa la respuesta.
3. El ncleo controla la comunicacin entre los clientes y los servidores.

Fig. 1.6 Para solicitar un servicio (por ejemplo: lectura de un bloque de cierto archivo) segn el
modelo cliente/servidor:

Se fracciona el S.O. en partes, cada una controlando una faceta:

Servicio a archivos, a procesos, a terminales, a memoria, etc., cada parte


pequea y ms fcilmente controlable.

Los servidores se ejecutan como procesos en modo usuario:

29

No tienen acceso directo al hardware.

Se aslan y acotan ms fcilmente los problemas.

Se adapta para su uso en los sistemas distribuidos:


Si un cliente se comunica con un servidor mediante mensajes:
No necesita saber si el mensaje se atiende localmente o mediante un
servidor remoto, situado en otra mquina conectada.
Enva una solicitud y obtiene una respuesta.
Algunas funciones del S.O., por ejemplo el cargado de comandos en los
registros fsicos del dispositivo de E/S, presentan problemas especiales y
distintas soluciones:

Ejecucin en modo ncleo, con acceso total al hardware y comunicacin


con los dems procesos mediante el mecanismo normal de mensajes.

Construccin de un mnimo de mecanismos dentro del ncleo


manteniendo las decisiones de poltica relativas a los usuarios dentro del
espacio del usuario.

1.6
Todas las operaciones en las que participan procesos son controladas por la
parte del sistema operativo denominada ncleo. El ncleo normalmente
representa solo una pequea parte de lo que por lo general se piensa que es
todo el sistema operativo, pero es tal vez el cdigo que mas se utiliza. Por esta
razn, el ncleo reside por lo regular en la memoria principal, mientras que
otras partes del sistema operativo son cargadas en la memoria principal solo
cuando se necesitan.
Una de las funciones ms importantes incluidas en el ncleo es el
procesamiento de las interrupciones. En los grandes sistemas multiusuarios se
dirige al procesador un flujo continuo de interrupciones, por lo cual es necesario
dar una respuesta rpida a tales interrupciones para aprovechar bien los
recursos del sistema y proporcionar tiempos de respuesta aceptables a los
usuarios interactivos.
30

El ncleo inhabilita las interrupciones cuando atiende una interrupcin y las


habilita nuevamente una vez que ha completado el proceso de la interrupcin.
Cuando se da un flujo continuo de interrupciones por un periodo largo; esto
puede ocasionar un elevado tiempo de respuesta a las interrupciones. Por ello,
los ncleos se disean para realizar el mnimo posible de procesamiento en
cada interrupcin y dejar que el resto lo realice el proceso apropiado del
sistema, que puede operar mientras el ncleo se habilita para atender otras
interrupciones. Esto significa que las interrupciones permanezcan habilitadas
un porcentaje mucho mayor del tiempo y que el sistema responde mejor.
Funciones de ncleo.
El ncleo de un S.O normalmente contiene el cdigo necesario para realizar las
siguientes funciones. al menos cinco

Manejo de interrupciones

Creacin y destruccin de procesos.

Cambio de estado de los procesos.

Despacho

Suspensin y reanudacin de procesos.

Sincronizacin de procesos.

Comunicaron entre procesos.

Manipulacin de los bloques de control de procesos.

Apoyo para las actividades de entrada/salida.

Apoyo para asignacin y liberacin de memoria.

Apoyo para el sistema de archivos

Apoyo para el mecanismo de llamada y retorno de un procesamiento.

31

En informtica, el kernel (tambin conocido como ncleo) es la parte


fundamental de un sistema operativo. Es el software responsable de facilitar a
los distintos programas acceso seguro al hardware de la computadora o en
forma ms bsica, es el encargado de gestionar recursos, a travs de servicios
de llamada al sistema. Como hay muchos programas y el acceso al hardware
es limitado, el ncleo tambin se encarga de decidir qu programa podr hacer
uso de un dispositivo de hardware y durante cuanto tiempo, lo que se conoce
como multiplexado. Acceder al hardware directamente puede ser realmente
complejo, por lo que los ncleos suelen implementar una serie de
abstracciones del hardware. Esto permite esconder la complejidad, y
proporciona una interfaz limpia y uniforme al hardware subyacente, lo que
facilita su uso para el programador.
Hay cuatro grandes tipos de ncleos:

Los ncleos monolticos facilitan abstracciones del hardware subyacente


realmente potentes y variadas.

Los microncleos (o microkernel) proporcionan un pequeo conjunto de


abstracciones simples del hardware, y usan las aplicaciones llamadas
servidores para ofrecer mayor funcionalidad.

Los hbridos (microncleos modificados) son muy parecidos a los


microncleos puros, excepto porque incluyen cdigo adicional en el
espacio de ncleo para que se ejecute ms rpidamente.

Los exoncleos no facilitan ninguna abstraccin, pero permiten el uso de


bibliotecas que proporcionan mayor funcionalidad gracias al acceso
directo o casi directo al hardware.

Microncleos
El enfoque microncleo consiste en definir una abstraccin muy simple sobre el
hardware, con un conjunto de primitivas o llamadas al sistema que

32

implementan servicios del sistema operativo mnimos, como la gestin de hilos,


el espacio de direccionamiento y la comunicacin entre procesos.
El objetivo principal es la separacin de la implementacin de los servicios
bsicos y de la poltica de funcionamiento del sistema. Por ejemplo, el proceso
de bloqueo de E/S se puede implementar con un servidor en espacio de
usuario ejecutndose encima del microncleo. Estos servidores de usuario,
usados para gestionar las partes de alto nivel del sistema, son muy modulares
y simplifican la estructura y diseo del ncleo. Si falla uno de estos servidores,
no se colgar el sistema entero, y se podr reiniciar este mdulo
independientemente del resto.
Algunos ejemplos de microncleos:

AIX

La familia de microncleos L4

El microncleo Mach, usado en GNU Hurd y en Mac OS X

Minix

MorphOS

QNX

RadiOS

VSTa

Ncleos monolticos en contraposicin a microncleos


Frecuentemente se prefieren los ncleos monolticos frente a los microncleos
debido al menor nivel de complejidad que comporta el tratar con todo el cdigo
de control del sistema en un solo espacio de direccionamiento. Por ejemplo,
XNU, el ncleo de Mac OS X, est basado en el ncleo Mach 3.0 y en
FreeBSD, en el mismo espacio de direccionamiento para disminuir la latencia
que comporta el diseo de microncleo convencional.
A principios de los aos 1990, los ncleos monolticos se consideraban
obsoletos. El diseo de Linux como un ncleo monoltico en lugar de como un
microncleo fue el tema de una famosa disputa entre Linus Torvalds y Andrew

33

Tanenbaum. Los argumentos de ambas partes en esta discusin presentan


algunas motivaciones interesantes.
Los ncleos monolticos suelen ser ms fciles de disear correctamente, y por
lo tanto pueden crecer ms rpidamente que un sistema basado en
microncleo, pero hay casos de xito en ambos bandos. Los microncleos
suelen usarse en robtica embebida o computadoras mdicas, ya que la
mayora de los componentes del sistema operativo residen en su propio
espacio de memoria privado y protegido. Esto no sera posible con los ncleos
monolticos, ni siquiera con los modernos que permiten cargar mdulos.
Aunque Mach es el microncleo generalista ms conocido, se han desarrollado
otros microncleos con propsitos ms especficos. L3 fue creado para
demostrar que los microncleos no son necesariamente lentos. La familia de
microncleos L4 es la descendiente de L3, y una de sus ltimas
implementaciones, llamada Pistachio, permite ejecutar Linux simultneamente
con otros procesos, en espacios de direccionamiento separados.
QNX es un sistema operativo que ha estado disponible desde principios de los
aos 1980, y tiene un diseo de microncleo muy minimalista. Este sistema ha
conseguido llegar a las metas del paradigma del microncleo con mucho ms
xito que Mach. Se usa en situaciones en que no se puede permitir que haya
fallos de software, lo que incluye desde brazos robticos en naves espaciales,
hasta mquinas que pulen cristal donde un pequeo error podra costar
centenas de miles de euros.
Mucha gente cree que como Mach bsicamente fall en el intento de resolver
el conjunto de problemas que los microncleos intentaban subsanar, toda la
tecnologa de microncleos es intil. Los partidarios de Mach afirman que sta
es una actitud estrecha de miras que ha llegado a ser lo suficientemente
popular para que mucha gente la acepte como verdad.
Ncleos hbridos (microncleos modificados)
Los ncleos hbridos fundamentalmente son microncleos que tienen algo de
cdigo no esencial en espacio de ncleo para que ste se ejecute ms
34

rpido de lo que lo hara si estuviera en espacio de usuario. ste fue un


compromiso que muchos desarrolladores de los primeros sistemas operativos
con arquitectura basada en microncleo adoptaron antes que se demostrara
que los microncleos pueden tener muy buen rendimiento. La mayora de
sistemas operativos modernos pertenecen a esta categora, siendo el ms
popular Microsoft Windows. XNU, el ncleo de Mac OS X, tambin es un
microncleo modificado, debido a la inclusin de cdigo del ncleo de FreeBSD
en el ncleo basado en Mach. DragonFly BSD es el primer sistema BSD que
adopta una arquitectura de ncleo hbrido sin basarse en Mach.
Algunos ejemplos de ncleos hbridos:

Microsoft Windows NT, usado en todos los sistemas que usan el cdigo
base de Windows NT

XNU (usado en Mac OS X)

DragonFly BSD

ReactOS

Hay gente que confunde el trmino ncleo hbrido con los ncleos
monolticos que pueden cargar mdulos despus del arranque, lo que es un
error. Hbrido implica que el ncleo en cuestin usa conceptos de
arquitectura o mecanismos tanto del diseo monoltico como del microncleo,
especficamente el paso de mensajes y la migracin de cdigo no esencial
hacia el espacio de usuario, pero manteniendo cierto cdigo no esencial en
el propio ncleo por razones de rendimiento.
Exoncleos
Los exoncleos, tambin conocidos como sistemas operativos verticalmente
estructurados, representan una aproximacin radicalmente nueva al diseo de
S.O.
La idea subyacente es permitir que el desarrollador tome todas las decisiones
relativas al rendimiento del hardware. Los exoncleos son extremadamente
pequeos, ya que limitan expresamente su funcionalidad a la proteccin y el

35

multiplexado de los recursos. Se llaman asi porque toda la funcionalidad deja


de estar residente en memoria y pasa a estar fuera, en librerias dinmicas.
Los diseos de ncleos clsicos (tanto el monoltico como el microncleo)
abstraen el hardware, escondiendo los recursos bajo una capa de abstraccin
del hardware, o detrs de los controladores de dispositivo. En los sistemas
clsicos, si se asigna memoria fsica, nadie puede estar seguro de cul es su
localizacin real, por ejemplo.
La finalidad de un exoncleo es permitir a una aplicacin que solicite una
regin especfica de la memoria, un bloque de disco concreto, etc., y
simplemente asegurarse que los recursos pedidos estn disponibles, y que el
programa tiene derecho a acceder a ellos.
Debido a que el exoncleo slo proporciona una interfaz al hardware de muy
bajo nivel, careciendo de todas las funcionalidades de alto nivel de otros S.O,
ste es complementado por una biblioteca de sistema operativo. Esta
biblioteca se comunica con el exoncleo subyacente, y facilita a los
programadores de aplicaciones las funcionalidades que son comunes en otros
S.O.
Algunas de las implicaciones tericas de un sistema exoncleo son que es
posible tener distintos tipos de sistemas operativos (p.e. Windows, Unix)
ejecutndose en un solo exoncleo, y que los desarrolladores pueden elegir
prescindir de o incrementar funcionalidades por motivos de rendimiento.
Actualmente, los diseos exoncleo estn fundamentalmente en fase de
estudio y no se usan en ningn sistema popular. Un concepto de S.O es
Nemesis, creado por la Universidad de Cambridge, la Universidad de Glasgow,
Citrix Systems y el Instituto Sueco de Informtica. El MIT tambin ha diseado
algunos sistemas basados en exoncleos.

1.6.1 Interrupciones (FLIH).


En el esquema de interrupciones de las procesadores a gran escala de IBM, el
S.O incluye rutinas denominados manejadores de interrupciones de primer
36

nivel (first level interript handlers, FLIH) para procesar las diferentes clases de
interrupciones. Por tanto, hay seis manejadores de interrupciones de primer
nivel: FLIH de SVC, FLIH de E/S, FLIH externo, FLIH de reinicio, FLIH de
verificacin del programa y FLIH de verificacin de la maquina. Cuando ocurre
una interrupcin, el S.O guarda el estado de proceso interrumpido y transfiere
el control al manejador de interrupciones de primer nivel apropiado. Esto se
logra mediante una tcnica llamada cambio de contexto. Los manejadores de
interrupciones de primer nivel deben distinguir entre interrupciones de la misma
clase; el procesamiento de estas interrupciones es realizado entonces por
alguno de los manejadores de interrupciones de segundo nivel. 6
Aunque algunos autores utilizan criterios distintos, nosotros veremos las
siguientes:

Un usuario realiza una llamada al sistema, concretamente una


instruccin trampa (a veces, a las llamadas al sistema se les llaman
interrupciones software).

En un proceso de usuario se da una condicin de error (por ejemplo una


divisin entre cero). Esta condicin puede tratarse como una
"interrupcin interna" generada por el procesador y ser gestionada en
primera instancia por una rutina de interrupcin. A estas condiciones de
error algunas veces se les llama excepciones.

Se intenta ejecutar una instruccin reservada estando en modo usuario.


Ello puede considerarse como un tipo particular de error.

Un controlador de un dispositivo de E/S genera una interrupcin para


indicar el fin de la E/S.

La ocurrencia de cualquiera de estas circunstancias, incluida las interrupciones,


provoca el cambio automtico del procesador de modo usuario a modo
supervisor.
El controlador de interrupciones de primer nivel -FLIH, del ingls First-Level
Interrupt Handler- es la parte del sistema operativo responsable de
6

H. M. Deitel, Sistemas Operativos, unix- os/2- ms-dos- macintosh- vm- mvs- sistemas abiertos, Pg. 63

37

proporcionar la respuesta adecuada a las seales procedentes tanto del


exterior de la

CPU (interrupciones de un controlador) como de dentro del

procesador (excepciones y llamadas al sistema). La misin del FLIH es doble:


a) Determinar el origen de las interrupciones.
b) Iniciar el servicio de las mismas.
Ya hemos visto que era el mecanismo de interrupcin del ordenador el
responsable de salvar al menos el valor del contador de programa del proceso
interrumpido. Hay que asegurar tambin que se salven lo otros registros que
vaya a emplear el FLIH y que estuviesen siendo utilizados por el proceso
interrumpido. Si esto no lo realiza el mecanismo de interrupcin, debe ser la
primera operacin que realice el FLIH. Como que ste es un programa
relativamente sencillo, definido adems sobre una zona dedicada de memoria,
el conjunto de registros afectados no ser muy grande, posiblemente slo un
acumulador. Ser desde luego considerablemente menor que la informacin de
estado del procesador del proceso interrumpido, que no hace falta que se
guarde en su totalidad, ya que puede reemprenderse dicho proceso tan pronto
como se haya atendido la interrupcin.
Una estrategia alternativa a la de salvar el valor de los registros, adoptada por
ejemplo por algunos ordenadores de la serie PDP-11, es la de disponer de un
conjunto suplementario de registros para ser utilizados slo en modo
supervisor. El FLIH puede entonces usar estos registros y deja los del proceso
interrumpido intacto.
La determinacin del origen de la interrupcin puede llevarse a cabo ms o
menos fcilmente dependiendo del hardware de que se disponga. En el caso
ms elemental, en el que todas las interrupciones transfieren el control del
programa a la misma posicin de memoria, debe realizarse la identificacin a
travs de una secuencia de consultas de los status (estados) de todas las
posibles fuentes de interrupcin. Esta secuencia se conoce frecuentemente con
el nombre de cadena de saltos.

38

En algunos ordenadores (por ejemplo el PDP-11), la cadena de saltos se hace


innecesaria gracias a la utilizacin de un hardware capaz de distinguir las
diferentes fuentes de interrupcin y transferir el control del programa a una
posicin de memoria distinta para cada una de ellas. Ello reduce el tiempo
empleado en reconocer una interrupcin a costa de utilizar un conjunto
adicional de posiciones de memoria. Una solucin de compromiso que aparece
en varios ordenadores, es la de disponer de un nmero reducido de posiciones
de memoria de interrupcin, cada una de las cuales est compartida por un
grupo de dispositivos. De esta forma, la primera etapa del reconocimiento de la
interrupcin la realiza el hardware, siendo suficiente para completar la
identificacin, una pequea cadena de saltos asociada a cada una de las
posiciones de memoria. La diferenciacin entre interrupciones generadas por
un controlador, excepciones y llamadas al sistema se lleva a cabo muy a
menudo de esta forma. El mecanismo de interrupcin puede facilitar la
identificacin guardando informacin acerca de la interrupcin en alguna
posicin prefijada de memoria.
Normalmente se inhiben las interrupciones del procesador central cuando se
cambia de modo usuario a modo supervisor. Con ello se asegura que el valor
de los registros almacenados al entrar en el FLIH no pueda alterarse debido a
una interrupcin posterior que se d antes de salir del FLIH. Una interrupcin
que ocurra mientras el mecanismo de interrupcin est inhibido, queda
pendiente hasta que este mecanismo sea reactivado al volver al modo usuario.
Este sistema no es vlido en situaciones en las que algn dispositivo necesite
una respuesta mucho ms rpida que otros, si, por ejemplo, no se quiere que
se pierda informacin. En tales casos es conveniente introducir la nocin de
prioridad entre las distintas fuentes de interrupcin, permitiendo que una rutina
de interrupcin sea a su vez interrumpida por una solicitud de servicio de un
dispositivo de ms alta prioridad.
Algunos ordenadores permiten hacer todo esto desautorizando de forma
selectiva algunas interrupciones dentro del FLIH; cuando ste sirve una
interrupcin, inhibe todas las otras que tengan igual o menor prioridad. Hay que
tener la precaucin, evidentemente, de guardar los registros de programa del

39

proceso interrumpido en posiciones distintas de memoria, segn sea el nivel de


prioridad de la interrupcin recibida.
Tambin es posible que el hardware de interrupcin pueda distinguir por s
mismo los diferentes niveles de interrupcin, y transfiera el control del
programa y guarde el contenido de los registros en posiciones distintas de
memoria segn cada nivel. Una interrupcin de una determinada prioridad
inhibe automticamente las otras de niveles iguales o inferiores.
La segunda misin del FLIH es la de iniciar el servicio de un interrupcin a
travs de la llamada a una rutina de servicio apropiada al tipo de seal recibida.
Hay que destacar el hecho de que debido a la circunstancia de que las rutinas
de interrupcin se ejecutan en modo supervisor, con las otras interrupciones
total o parcialmente inhibidas, es conveniente que dichas rutinas sean lo ms
cortas posible. En general van a llevar a cabo una accin mnima, como por
ejemplo transferir un carcter de un dispositivo de entrada a un buffer, dejando
a cargo de un proceso que se ejecuta con las interrupciones permitidas la tarea
de emprender la accin adecuada al carcter recibido.
Es importante destacar la circunstancia de que el que se d una interrupcin
puede que altere el estado de un proceso. As, por ejemplo, un proceso que
haya puesto en marcha una transferencia con un dispositivo, mientras dure la
misma, ser bloqueado; aunque pasar a ser listo al recibir la interrupcin que
seale el final de la transferencia en curso. Algunas llamadas al sistema, como
una solicitud de E/S, provocarn que el proceso en curso no pueda proseguir.
En todos los casos, el cambio de status lo realiza la rutina de interrupcin al
modificar el campo correspondiente al estado del proceso en el PBC del
proceso.
Una consecuencia de este cambio de status es que el proceso que se estaba
ejecutando antes de darse la interrupcin puede que no sea el ms adecuado
para ejecutarse despus de la misma. Puede darse el caso, por ejemplo, de
que la interrupcin vuelva ejecutable un proceso que tenga mayor prioridad que
el proceso en curso. En el tema siguiente vamos a discutir la cuestin de

40

cundo conmutar la CPU entre procesos, as como la de decidir el proceso


que debe ocupar la CPU.

1.6.2 Despachador (Scheduler).


Es el primer punto de entrada al subsistema de ejecucin de servicios. Recibe
las solicitudes, les asigna prioridades en forma dinmica y las ordena para que
sean procesadas segn dicha prioridad. La asignacin de prioridades la realiza
segn ciertas polticas configurables por el Administrador, que obtiene del
SystemCatalog.
Las polticas son configurables de forma dinmica por el Administrador, el
mismo no tiene ms que implementar la Interfase y definir en el archivo de
configuracin del componente cuales son las polticas a usar y en que ssembly
se encuentran.
La cola de pedidos en espera es en realidad una doble cola, la cual divide en
pedidos de Alta prioridad y de Baja prioridad, contando con un agente (Hebra
en paralelo) encargada de incrementar la prioridad de los pedidos de la cola de
Baja prioridad y en caso de superar cierto valor, el pedido ser transferido a la
cola de Alta Prioridad (Ver Fig. 1.7)

Fig. 1.7 Sistema de Colas del Despachador.

41

Mantiene en memoria una copia de la informacin almacenada en la base local,


para optimizar el acceso a dicha informacin.

1.6.3 Primitivas de comunicacin (IPC).


Los procesos en UNIX no comparten memoria, ni siquiera los padres con sus
hijos. Por tanto, hay que establecer algn mecanismo en caso de que se quiera
comunicar informacin entre procesos concurrentes. El sistema operativo UNIX
define tres clases de herramientas de comunicacin entre procesos (IPC): los
semforos, la memoria compartida y los mensajes.
El tipo de llamadas al sistema para estos IPCs es anlogo al de los semforos:
existen sendas funciones shmget y msgget para crear o enlazarse a un
segmento de memoria compartida o a una cola de mensajes, respectivamente.
Para alterar propiedades de estos IPCs, incluyendo su borrado, estn las
funciones shmctl y msgctl.
Para enviar o recibir mensajes, se utilizan las funciones msgsnd y msgrcv.
En este apartado se describirn brevemente algunas llamadas al sistema
disponibles para el uso de las IPCs dentro de la programacin en C.
Semforos
Qu es un semforo para el UNIX? Formalmente es muy similar a la
definicin clsica de Dijkstra, en el sentido de que es una variable entera con
operaciones atmicas de inicializacin, incremento y decremento con bloqueo.
El UNIX define tres operaciones fundamentales sobre semforos:

semget Crea o toma el control de un semforo

semctl Operaciones de lectura y escritura del estado del semforo.


Destruccin del semforo

semop Operaciones de incremento o decremento con bloqueo

42

Como el lenguaje C no tiene un tipo "semforo" predefinido, si queremos usar


semforos tenemos que crearlos mediante una llamada al sistema (semget).
Esta llamada permite crear un conjunto de semforos, en lugar de uno solo.
Las operaciones se realizan atmicamente sobre todo el conjunto; esto evita
interbloqueos y oscuras programaciones en muchos casos, pero para esta
prctica es ms bien un engorro.
Al crear un semforo se nos devuelve un nmero identificador, que va a
funcionar casi igual que los identificadores de fichero de las llamadas open,
creat, etc. La funcin semget nos permite adems "abrir" un semforo que ya
est creado. As, por ejemplo, si un proceso crea un semforo, otros procesos
pueden sincronizarse con aqul (con ciertas restricciones) disponiendo del
semforo con semget.
Para darle un valor inicial a un semforo, se utiliza la funcin semctl.
El UNIX no ofrece las funciones clsicas P y V o equivalentes, sino que
dispone de una funcin general llamada semop que permite realizar una gama
de operaciones que incluyen las P y V.
semctl tambin se emplea para destruir un semforo.
Llamadas al sistema para semforos
Esta es una descripcin resumida de las tres llamadas al sistema para operar
con semforos (semget, semctl y semop). Para una informacin ms completa
y fidedigna, dirjanse al manual de llamadas al sistema (seccin 2).
Para el correcto uso de todas estas funciones, han de incluir el fichero
cabecera <sys/sem.h>
Las tres funciones devuelven -1 si algo ha ido mal y en tal caso la variable
errno informa del tipo de error.
Apertura o creacin de un semforo
Sintaxis:

43

int semget ( key_t key, int nsems, int semflg );


semget devuelve el identificador del semforo correspondiente a la clave key.
Puede ser un semforo ya existente, o bien semget crea uno nuevo si se da
alguno de estos casos:
a) key vale IPC_PRIVATE. Este valor especial obliga a semget a crear un
nuevo y nico identificador, nunca devuelto por ulteriores llamadas a semget
hasta que sea liberado con semctl.
b) key no est asociada a ningn semforo existente, y se cumple que (semflg
& IPC_CREAT) es cierto.
A un semforo puede accederse siempre que se tengan los permisos
adecuados.
Si se crea un nuevo semforo, el parmetro nsems indica cuntos semforos
contiene el conjunto creado; los 9 bits inferiores de semflg contienen los
permisos estilo UNIX de acceso al semforo (usuario, grupo, otros).
semflg es una mscara que puede contener IPC_CREAT, que ya hemos visto,
o IPC_EXCL, que hace crear el semforo, pero fracasando si ya exista.
Ejemplo:
int semid = semget ( IPC_PRIVATE, 1, IPC_CREAT | 0744 );
Operaciones de control sobre semforos
Sintaxis:
int semctl ( int semid, int semnum, int cmd... );
Esta es una funcin compleja (y de interfaz poco elegante) para realizar ciertas
operaciones con semforos. semid es un identificador de semforo (devuelto
previamente por semget) y semnum, el semforo del conjunto sobre el que
quieren trabajar. cmd es la operacin aplicada; a continuacin puede aparecer
un parmetro opcional segn la operacin definida por cmd.
44

Las operaciones que les interesan a ustedes son


GETVAL semctl retorna el valor actual del semforo
SETVAL se modifica el valor del semforo (un cuarto parmetro entero da el
nuevo valor)
IPC_RMID destruye el semforo
Ejemplos:
valor = semctl (semid,semnum,GETVAL);
semctl (semid,semnum,SETVAL,nuevo_valor);
Operaciones sobre semforos
Sintaxis:
int semop ( int semid, struct sembuf* sops, unsigned nsops );
Esta funcin realiza atmicamente un conjunto de operaciones sobre
semforos, pudiendo bloquear al proceso llamador. semid es el identificador del
semforo y sops es un apuntador a un vector de operaciones. nsops indica el
nmero de operaciones solicitadas.
La estructura sembuf tiene estos campos:
struct sembuf {
unsigned short sem_num; // nmero del semforo dentro del conjunto
short

sem_op;

// clase de operacin

// segn sea >0, <0 o ==0


short

sem_flg;// modificadores de operacin

};

45

Cada elemento de sops es una operacin sobre algn semforo del conjunto
de semid. El algoritmo simplificado de la operacin realizada es ste (semval
es el valor entero contenido en el semforo donde se aplica la operacin).
si semop<0
si semval >= |semop|
semval -= |semop|
si semval < |semop|
si (semflag & IPC_NOWAIT)!=0
la funcin semop() retorna
si no
bloquearse hasta que semval >= |semop|
semval -= |semop|
si semop>0
semval += semop
si semop==0
si semval = 0
SKIP
si semval != 0
si (semflag & IPC_NOWAIT)!=0
la funcin semop() retorna
si no

46

bloquearse hasta que semval == 0


Resumiendo un poco, si el campo semop de una operacin es positivo, se
incrementa el valor del semforo. Asimismo, si semop es negativo, se
decrementa el valor del semforo si el resultado no es negativo. En caso
contrario el proceso espera a que se d esa circunstancia. Es decir, semop==1
produce una operacin V y semop==-1, una operacin P.
Ejemplos de uso
Para ilustrar de forma concreta el empleo de semforos bajo UNIX, les
mostramos unos ejemplos de subrutinas en C que les pueden servir como
modelos para elaborar sus rutinas de sincronizacin en las prcticas de la
asignatura.
En concreto, son unas funciones que implementan las operaciones P y V de un
semforo clsico (inicializacin, incremento y decremento con posible bloqueo
del proceso llamador). As definidas, o con pocas modificaciones, les pueden
servir como la interfaz para uso de semforos en sus aplicaciones.
#include <sys/types.h>

/* para key_t */

/* Crea un semforo con un valor inicial, dada una clave */


/* Devuelve el identificador (vlido o no) del semforo */
int crea_sem ( key_t clave, int valor_inicial );
/* Operaciones P y V sobre un semforo */
void sem_P ( int semid );
void sem_V ( int semid );
/***********************************/
/******** IMPLEMENTACIN *******/
/***********************************/
#include <sys/ipc.h>
#include <sys/sem.h>
#define PERMISOS 0644
/* crea_sem: abre o crea un semforo */
int crea_sem ( key_t clave, int valor_inicial )
{
int semid = semget(
/* Abre o crea un semforo... */
clave,
/* con una cierta clave */
47

1,

/* con un solo

elemento */
IPC_CREAT|PERMISOS /* lo crea (IPC_CREAT) con
unos PERMISOS
*/
);
if ( semid==-1 ) return -1;
/* Da el valor inicial al semforo */
semctl ( semid, 0, SETVAL, valor_inicial );
return semid;
}
/* abre_sem: Abrir un semforo que otro proceso ya cre */
int abre_sem (key_t clave)
{
return semget(clave,1,0);
}
/* Operaciones P y V */
void sem_P ( int semid )
/* Operacin P */
{
struct sembuf op_P [] =
{
0, -1, 0 /* Decrementa semval o bloquea si cero */
};
semop ( semid, op_P, 1 );
}
void sem_V ( int semid )
/* Operacin V */
{
struct sembuf op_V [] =
{
0, 1, 0
/* Incrementa en 1 el semforo */
};
semop ( semid, op_V, 1 );}

48

49

You might also like