You are on page 1of 45

Titular de la Materia:

M.C.C. Jacinto Jurez Ortiz

Ingeniera en Sistema
Computacionales
3er Semestre, Modalidad:
Sbados

Sistemas Operativos I
Unidad II: Concepto de
Microprogramacin
Unidad III: Estructura del Sistema
Alumno: Ricardo Arias Marn

Sistemas Operativos I

INDICE

Tema

Pag.

CONCEPTO DE MICROPROGRAMACIN
Introduccin

Conjunto de Instrucciones

..13

Estructuras de Interrupciones, Entradas y


Salidas

..23

Jerarquas de Almacenamiento

..25

ESTRUCTURA DEL SISTEMA


Metodologa de Diseo

..27

Niveles de Programacin y Kernel

..28

Interrupciones del Proceso

..39

Llamadas al Sistema

..41

Servicios del Sistema Operativo

..43

Bibliografa

..46

Sistemas Operativos I
INTRODUCCION
MICROPROGRAMACION

a microprogramacin es una alternativa al control cableado cuya principal


ventaja es la facilidad de realizar modificaciones en la funcionalidad de la
unidad de control sin necesidad de realizar un nuevo diseo. Esto facilita
la tarea a los ingenieros de software que pueden realizar pruebas sin
necesidad de implementar una nueva unidad de control. El punto dbil es la
velocidad, de forma que en general las unidades de control microprogramadas son
mas lentas que las cableadas. Hoy en da se realizan diseos hbridos que
combinan las dos tcnicas.
Algunos trminos de uso frecuente son:

Palabra de control: Es una palabra binaria cuyos bits indican los valores
de las seales de control de la mquina. Tambin recibe el nombre de
microinstruccin

Microprograma: Recibe este nombre la secuencia de palabras de control


necesarias para ejecutar una instruccin.

Memoria de control: Es una memoria especial que almacena los


microprogramas.

Modelo de Wilkes
El concepto de microprogramacin es debido a Wilkes (1951), en este modelo las
palabras de control constan de dos campos:

1 bit por cada seal de control

Direccin de la siguiente microinstruccin

Gracias a esta tcnica se pueden realizar saltos condicionales en la ejecucin de


las instrucciones usando los flags de la palabra de estado.

Sistemas Operativos I
Un esquema general de este modelo le tenemos en la siguiente imagen donde
vemos que segn el cdigo de operacin que se almacena en el registro de
instruccin RI se genera la direccin inicial del microprograma dentro de la
memoria de control, recordemos que cada instruccin lleva aparejada la ejecucin
de un microprograma y que todos ellos estn almacenados en la memoria de
control.
Otro elemento que aparece es el registro de direccin de la memoria de control
CMAR encargado de seleccionar la direccin de la siguiente palabra de control
que recibe del multiplexor la seal correspondiente (en caso de ser la primera
instruccin selecciona la entrada del generador de direccin inicial y en otro caso
la entrada proveniente del campo de direccin siguiente de la palabra de control.

Codificacin de las microinstrucciones


Uno de los problemas fundamentales del modelo de Wilkes es el tamao de la
memoria de control motivado por el hecho de que cada seal de control ocupa un
4

Sistemas Operativos I
bit. En este apartado vamos a ver las distintas formas de codificacin de la palabra
de control que nos permitirn disear memorias de control de diferentes tamaos.
Codificacin 1 bit- 1 seal de control: Es la que hemos estudiado en el apartado
anterior.
Codificacin por campos: Consiste en agrupar las seales de control que no se
puedan activar simultneamente, cada uno de estos grupos se codifican de modo
que la palabra de control consta de varios campos, en cada uno de los cuales se
codifican seales del mismo tipo. Evidentemente esto exige que para generar las
seales de control necesitemos un decodificador a la salida de cada campo.
Codificacin tipo instruccin: Consiste en que el formato de microinstruccin sea
similar al formato de instruccin en lenguaje mquina con un cdigo de operacin
y direccin del operando, en este caso se precisa de un decodificador que a partir
del campo de cdigo de operacin obtenga las micrordenes. Tiene la ventaja de
que al escribir un microprograma se trabaja de forma similar a la programacin de
nivel mquina. Como vemos los mtodos de codificacin que comprimen la
palabra de control nos llevan a incrementar el nmero de lneas de los
microprogramas. Por ello se habla de dos tipos de microprogramacin segn el
grado de codificacin de la palabra de control: microprogramacin horizontal y
microprogramacin vertical.

Secuenciamiento en los microprogramas


Otro de los problemas fundamentales en el diseo de una unidad de control
microprogramada es el referente a cmo localizar la siguiente microinstruccin.
Tenemos dos tcnicas posibles:

Secuenciamiento explcito: Es el usado por el modelo de Wilkes, cada


microinstruccin contiene un campo con la direccin de la siguiente
microinstruccin.
Secuenciamiento implcito: A semejanza del comportamiento de un
programa ordinario, lo normal es que la microinstruccin siguiente est
situada fsicamente a continuacin de la que se est ejecutando. en este
modelo se necesita la presencia de un contador de microprograma que se
vaya incrementando con la ejecucin de cada microinstruccin. En el caso
de que se presente un salto en el microprograma, la tcnica a utilizar es la
llamada de formato mltiple consistente en que existe un bit que cuando la
microinstruccin es una bifurcacin cambia el significado de algunos
5

Sistemas Operativos I
campos de modo que contengan una direccin. Este modelo implica un
tamao de microinstruccin mas pequeo pero relentiza el funcionamiento
del sistema al exigir ciclos adicionales en las bifurcaciones.
En los dos casos anteriores vemos que la necesidad de realizar saltos en la
secuencia de microinstrucciones se traduce en la existencia de un campo en el
formato de microinstruccin especfico para saltos donde se codifican las
posibilidades que se puedan presentar (saltos incondicionales, secuencia habitual,
distintos tipos de saltos condicionales)

Obtencin de la direccin inicial


El contenido de la memoria de control consiste generalmente en una parte comn
a todas las instrucciones que es la fase de bsqueda de las instrucciones,
despus se pasa a la fase de decodificacin para conocer de qu instruccin se
trata lo que se traduce por microprogramas especficos para cada una de ellos.
Las tcnicas que se utilizan para localizar la direccin inicial de cada
microprograma son las siguientes:

Arbol de decodificacin: Consiste en analizar uno a uno los bits del


cdigo de operacin de la instruccin que estn almacenados en el registro
de instruccin IR, para ello puede utilizar o un decodificador o realizar la
decodificacin por software, en este caso la forma en que estn codificadas
determina la eficiencia de la decodificacin. Un esquema del rbol de
decodificacin es el siguiente:

Sistemas Operativos I
Tabla de saltos: Otro mtodo a utilizar es generar un microsalto en el
microprograma de forma que sumando el cdigo de operacin a una direccin
dada se obtiene la direccin de los distintos microprogramas.

Memoria de traslacin: Un mtodo adicional consiste en el uso de una


memoria ROM que tomando como entrada el cdigo de operacin nos d
como salida la direccin de cada microprograma.

Hardware de la unidad de control microprogramada


Los elementos bsicos que aparecen en una unidad de control microprogramada
son los siguientes:

Memoria de control: contiene los microprogramas

Contador de microprograma: Es el registro de direccin de memoria


correspondiente a la memoria de control

Registro de Microinstruccin: contiene la microinstruccin que se est


ejecutando, equivale al registro buffer de memoria.

Circuito para la toma de decisiones: es un multiplexor que en funcin del


cdigo que suministra el campo de bifurcaciones de la microinstruccin en
curso y de las condiciones externas decide cul es la entrada siguiente al
contador de microprograma.

Ejemplo de un sistema microprogramado:


7

Sistemas Operativos I
Con el fin de comparar la microprogramacin con la unidad de control cableada
vamos a repetir el diseo de una unidad de control para un multiplicador de Booth
utilizando ahora microprogramacin:

Recordamos que el programa de control era el siguiente:


0

A 0 , B Inbus , L 4

Q[4:1] Inbus , Q[0] 0

Bucle: Si Q[1:0] = 01 saltar a suma;

Si Q[1:0] = 10 saltar a resta;

Saltar a desplaza ;

5
6
7
8

Suma: A A+ B ;
Saltar a desplaza ;
Resta: A A- B ;
Desplaza: ASR(A&Q) , L L- 1 ;

Si L<>0 saltar a Bucle;

10

Outbus A ;

11

Ourbus Q[4:1] ;

12

Alto: Saltar a Alto;

Las seales de control son las siguientes:


8

Sistemas Operativos I
C0 = A 0 ; C1 = B Inbus ; C2 = L 4 ; C3 = Q[4:1] Inbus ;
C4 = F = L + R ; C5 = A F ; C6 = ASR(A&Q) ; C7 = L L -1 ;
C8 = Outbus A ; C9 = Outbus Q[4:1] ;
La memoria de control tiene 13 palabras, luego necesita un campo de direccin de
salto de 4 bits.
Los saltos presentan 5 casos posibles:
000

no saltar

001

saltar si Q[1] = 0 y Q[0] = 1

010

saltar si Q[1] = 1 y Q[0] = 0

011

saltar si Z = 0

100

salto incondicional

El formato de microinstruccin ser el siguiente:


Seleccin de condicin (3)

Funciones de control (10)

Direccin saltos (4)

Luego el tamao de la memoria de control es de 13x17 bits

Sistemas Operativos I
Un esquema del hardware de la unidad de control microprogramada sera el
siguiente:

El contenido de la memoria de control sera el siguiente:

10

Sistemas Operativos I
En la mayor parte de los casos es conveniente optimizar el tamao de la memoria
de control, una de las tcnicas posibles a utilizar es el uso de formatos mltiples.
En el caso anterior vemos que en los casos en que tenemos saltos no se generan
seales de control, por lo que podemos utilizar el campo de funciones de control
para indicar la direccin del salto, con ello logramos reducir el tamao de la
memoria de control a 13x13 bits, aunque necesitamos alguna circuitera adicional.
Ejemplo de microprocesador microprogramado
Consideremos una ruta de datos correspondiente a una arquitectura en triple bus
con los registros habituales (contador de programa, registro de instruccin,
puntero de pila, MAR, MBR, acumulador, y otros registros de uso particular
(registro instruccin temporal, registros que contienen constantes como el 0,1.-1,
registros que contienen mscaras para aislar partes de la palabra de instruccin) y
tambin registros generales (A,B,C,D,E,F)
La unidad aritmtico-lgica permite realizar cuatro operaciones y dispone de un
desplazador adicional.
Con esta ruta de datos podemos pasar a disear el formato de microinstruccin a
partir de las seales de control necesarias para controlar la arquitectura.
Una vez diseado el formato de microinstruccin podemos pasar a ver la
arquitectura global (que incluye la microarquitectura de control)
La macroarquitectura a controlar incluye el formato de instruccin y el conjunto de
instrucciones y modos de direccionamiento.
Hemos visto hasta ahora dos tipos de memorias: la memoria principal y la
micromemoria, podemos aadir un nuevo tipo llamado nanomemoria que
contendr aquellas microinstrrucciones que aparezcan muy repetidas.
De esta forma pasamos a la situacin de la figura:

11

Sistemas Operativos I

Al repasar el microprograma inicial nos encontramos con que de las n lneas hay
m que son diferentes entre si. Esas lneas con microinstrucciones distintas se
almacenan en la nanomemoria. Podemos codificar esas m nanoinstrucciones y el
cdigo resultante ocupar log2 m y entonces usando microprogramacin vertical
con las microinstrucciones codificadas segn el modelo anterior tendremos un
microprograma con las mismas n lneas pero que ahora tienen un tamao de log2
m bits.
Esta tcnica se usa en el microprocesador Motorola 68000 y en funcin de los
valores de m, n y p puede traer consigo un ahorro de memoria considerable
aunque siempre tendr la dificultad de un mayor retardo en la ejecucin de las
instrucciones.

12

Sistemas Operativos I

CONJUNTOS DE INSTRUCCIONES

n este captulo estudiaremos los distintos tipos de instrucciones de que


constan los juegos de instrucciones de los ordenadores. Se vern con
especial inters las instrucciones de control del ujo del programa
(bifurcaciones, bucles, procedimientos, etc.).

Tambin se estudiarn los principios y losofa de diseo de los ordenadores con


conjunto reducido de instrucciones (RISC).

Caractersticas generales de los conjuntos de instrucciones.


Ante el diseo de un nuevo ordenador de propsito general hay que plantearse la
siguiente cuestin: Qu tipos de instrucciones deben ser incluidos en su
conjuntos de instrucciones? Antes de responder a esta pregunta, analizaremos las
caractersticas que deben tener los juegos de instrucciones de las mquinas.
Los conjuntos de instrucciones de las mquinas deben tender a poseer una serie
de propiedades, bastante ideales e imprecisas, que pueden resumirse en las
siguientes:

El conjunto de instrucciones de un computador debe ser completo en el


sentido de que se pueda construir un programa para evaluar una funcin
computable usando una cantidad de memoria razonable y empleando un
tiempo moderado, es decir, el nmero de instrucciones de ese programa no
debe ser demasiado elevado.

Los juegos de instrucciones tambin tienen que ser ecientes, esto signica
que las funciones ms necesarias deben poder realizarse usando pocas
instrucciones.

El conjunto de instrucciones de una mquina debe ser regular, es decir


debe ser simtrico (por ejemplo, si existe una instruccin de
desplazamiento a la izquierda, debe haber otra de desplazamiento a la
derecha, etc.) y ortogonal, es decir, deben poder combinarse, en la medida
de lo posible, todos las operaciones con todos los tipos de datos y modos
de direccionamiento.

13

Sistemas Operativos I

En muchas ocasiones, tambin se le debe exigir a un computador que su


juego de instrucciones sea compatible con modelos anteriores.

Tipos de instrucciones
Una mquina puede llegar a funcionar con un juego de instrucciones muy limitado
(recurdese, por ejemplo, la mquina de Turing que slo tiene 4 instrucciones,
incluso se han diseado mquinas tericas con menos instrucciones), esto
simplicara mucho los circuitos de la mquina. Sin embargo, un conjunto de
instrucciones demasiado simplicado origina, como consecuencia, unos
programas demasiado complejos e inecientes. Es necesario encontrar un
compromiso entre la simplicidad del hardware y del software. Un mnimo para
llegar a ese compromiso se consigue con los tipos de instrucciones siguientes:

Instrucciones de transferencia de datos.


Instrucciones aritmticas.
Instrucciones lgicas.
Instrucciones de control del ujo del programa (bifurcaciones, bucles,
procedimientos, etc.)
Instrucciones de entrada y salida.

Si bien es cierto que el conjunto de instrucciones debe de cumplir unos mnimos


para conseguir una mnima eciencia en los programas, tambin se ver que sta
no se aumenta indenidamente al incrementar el nmero de instrucciones de la
mquina.

Instrucciones de transferencia de datos


La operacin de copiar datos de un lugar a otro es la operacin ms simple y a la
vez importante. Las palabras mover o cargar que aparecen en los juegos de
instrucciones de muchos ordenadores pueden dar lugar a confusin porque no se
trata de mover o cargar sino de copiar (generalmente, en Informtica, la palabra
mover tiene el signicado de copiar borrando el original). Las instrucciones de
transferencia de datos necesitan que se especiquen el original (fuente u origen) y
el lugar donde se desea la copia (destino). Esta especicacin variar segn sean
14

Sistemas Operativos I
estos lugares que pueden estar en tres sitios: registros del procesador, memoria o
cima de pila. Si el acceso es a una direccin de memoria habr que especicarla
de forma explcita, si se trata de la cima de pila normalmente la especicacin ser
implcita, lo mismo ocurrir si se trata del acumulador.
Existen algunas variantes de instrucciones de transferencia de datos que dieren
de la idea anterior de copiar informaciones de un lugar a otro. Por ejemplo, la
instruccin POP saca un dato de la cima de pila modicando el valor del apuntador
de pila, lo que signica que, si bien no destruye fsicamente el dato fuente, anula
su validez. Por otro lado, la mayora de las mquinas tambin disponen de
instrucciones de intercambio (SWAP). Tambin, en muchas mquinas, existen
instrucciones de transferencia de informacin entre bloques o cadenas en la que
deben especicarse las direcciones de fuente y destino y la longitud del bloque o
cadena.
En general, el dato a transferir podramos denirlo como una terna con las
siguientes componentes:

Direccin
Tipo
Valor

Normalmentelacomponentedeldatoquesetransereeselvalorperoexisteninstruccion
es especiales para transferir las dems componentes, en especial la direccin. La
extraccin de la direccin de un dato se hace necesaria para facilitar la
relocalizacin de los programas. Para aplicar muchos modos de direccionamiento
(indexados, autoindexados, etc.) es necesaria la transferencia de una direccin a
un registro. En muchos ordenadores esta direccin no se conoce a la hora de
compilar el programa (precisamente porque el programa es relocalizable), por
tanto, son necesarias instrucciones que calculen la direccin de un dato para
transferirla a un registro, actualmente la mayora de las mquinas poseen este tipo
de instruccin bajo el nombre de move address.
Dependiendo del nivel de ortogonalidad de la mquina, podemos tener ms o
menos instrucciones de transferencia. Por ejemplo el IBM-370 tiene ms de 20
instrucciones de transferencia por su falta de ortogonalidad; sin embargo, el PDP11 slo tiene 2 para datos enteros (MOV y MOVB) y 4 ms para datos en punto
otante, ya que en las instrucciones de punto otante se prescindi bastante de la
ortogonalidad por falta de espacio para la codicacin. El MC68000 est en un
punto intermedio, tiene varios formatos distintos dependiendo del direccionamiento
utilizado. El Z-80 en cuanto a instrucciones de transferencia entre registros es
15

Sistemas Operativos I
bastante ortogonal, pero esa ortogonalidad se pierde cuando se trata de otros
direccionamientos.
Instrucciones aritmticas y lgicas
Todos los ordenadores incorporan instrucciones aritmticas en sus juegos de
instrucciones; la utilidad de este tipo de operaciones es evidente y no la
comentaremos. En cuanto a las operaciones lgicas (AND, OR, NOT y XOR)
tienen un uso muy variado: desde operaciones con bits individuales (TEST, SET,
RESET y CHANGE) hasta el empaquetamiento y desempaquetamiento de
caracteres. Tambin pueden considerarse dentro de este grupo los
desplazamientos y rotaciones cuya utilidad queda fuera de toda duda.
En primer lugar, veremos cmo se emplean las instrucciones lgicas para realizar
operaciones de bit individual. La utilidad de estas operaciones es muy variada,
probablemente su aplicacin ms importante sea empaquetar en un byte varias
variables booleanas, ocupando cada una de ellas un solo bit.
Para analizar un determinado bit se debe tener en cuenta las siguientes
propiedades de la operacin AND (. o):
0 ... 0 1 0 ... 0
x ... x a x ... x
0 ... 0 a 0 ... 0

Mscara
Dato
Resultado
=0 si a =0 Z =1
=0 si a =1 Z =0

Anlisis de un bit.
1 ... 1 0 1 ... 1
x ... x x x ... x
x ... x0 x ... x

Mscara
Dato

Puesta a 0 de un bit.
1 x = x, x
0 x = 0, x

Para aplicarlas, se realiza una operacin AND del dato que se quiere analizar con
una mscara que tenga un 1 en el lugar cuyo bit se quiere probar con el resto de
16

Sistemas Operativos I
la mscara a 0. El resultado de la operacin ser 0 si el bit en cuestin es 0, o
distinto de 0 si el bit que se quiere probar es 1; por tanto, el resultado de la prueba
quedar en el ag Z en forma complementada como se muestra en la gura 4.1.
Muchas mquinas tienen esta operacin bajo el nombre de BITTEST.
Para poner a 0 un bit de un dato, se aprovechan las mismas propiedades del
operador AND. Para aplicarlas, se construye una mscara que tenga a 1 todos los
bits excepto el correspondiente al lugar que se quiere borrar que se pone a 0 y se
hace un AND de esta mscara con el dato que se quiere tratar; como resultado de
la operacin tendremos el mismo dato pero con el bit puesto a cero. El proceso se
muestra en la gura 4.2. Esta operacin puede realizarse con varios bits a la vez,
basta poner en la mscara 0 todos los bits que se quieran borrar. Muchos
ordenadores poseen esta instruccin con el nombre de BIT CLEAR o BIT RESET.
Para poner un bit a 1 en un dato, aplicaremos las propiedades de la operacin OR
(+ o):
0 x = x, x
1 x = 1, x

En este caso, se construye una mscara con un 1 en el lugar del bit que se quiera
poner a 1 y 0 en el resto. Se realiza la operacin OR entre esta mscara y el dato
y el resultado ser el mismo dato pero con el bit en cuestin puesto a 1 (gura
4.3). Esta operacin puede realizarse con varios bits a la vez poniendo a 1 en la
mscara todos los bits que se quieran poner a 1. Muchos ordenadores tienen esta
operacin con el nombre de BITSET.
Para complementar bits en un dato aplicaremos las propiedades de la operacin
OR exclusivo o XOR ():
0 ... 0 1 0 ... 0
V x ... x x x ... x
x ... x 1 x ... x

Mscara
Dato

Fig.4.3. Puesta a 1 de un bit.


0 ... 0 1 0 ... 0
x ... x x x ... x
17

Mscara
Dato

Sistemas Operativos I
x ... x x x ... x

Fig.4.4. Complemento de un bit.


0 x = x, x
1 x = x, x

Para ello se construye una mscara con un 1 en el bit que se quiere complementar
y 0 en el resto de las posiciones. Despus de hacer un XOR de la mscara con el
dato se tendr el mismo dato con el bit complementado (gura 4.4). Esta
operacin tambin se puede hacer con varios bits a la vez poniendo a 1 en la
mscara todos los bits que se quieran complementar. Algunas mquinas tienen
esta operacin en su juego de instrucciones como BITCHANGE.
Otra utilidad de la operacin XOR es la determinacin de los bits diferentes que
hay entre dos datos, para ello se hace un XOR entre ellos y los lugares que
queden a 1 son los bits diferentes entre los dos datos. Esto es debido a que la
tabla de verdad de XOR es la complementaria a la de la igualdad entre dos bits.
Esta propiedad tambin es til para determinar cundo dos datos son iguales en
todos sus bits: en este caso el OR exclusivo entre ellos nos dar 0 y, en caso
contrario, tendremos un nmero no nulo; este resultado puede luego ser analizado
mediante el ag Z. De aqu tambin se puede deducir que haciendo la operacin
XOR de un operando consigo mismo el resultado da 0. Esta es una forma muy
rpida de poner a 0 los registros en algunos procesadores.
Otra propiedad muy til del operador XOR es que si se opera dos veces con el
mismo operando se regenera el dato inicial, es decir,
(xy) y = x, x, y

[4.1]

Esta propiedad es til en aplicaciones grcas para mover cursores por pantalla.
Una utilidad directa de las operaciones lgicas es el manejo de conjuntos tal y
como se hace en el lenguaje Pascal. Supongamos el conjunto universal,
U = {x0,x1,x2,...,xn1}
Si A es un conjunto, contenido en este conjunto universal, puede representarse
internamente en la memoria de la mquina mediante la cadena de n bits
an1an2 ...a1a0
18

Sistemas Operativos I

en que el valor del bit i indicar la pertenencia del elemento xi al conjunto A. En


otras palabras,
1 si xi A
ai =
0 si xi /A
A partir de lo anterior resulta bastante evidente que la unin e interseccin de dos
conjuntos vendr representada respectivamente por las operaciones OR y AND
sobre sus cadenas de bits. De la misma forma el complemento de un conjunto se
representa mediante la negacin de la cadena de bits que le corresponde.
Mediante esta tcnica puede determinarse:

La igualdad de dos conjuntos, analizando si sus cadenas de bits son


iguales.

La pertenencia de un elemento x a un conjunto A, realizando un test del bit


correspondiente a x en la cadena de bits que representa al conjunto A.

Si un conjunto es vaco, analizando si su cadena de bits es nula.

La inclusin de un conjunto A en otro B; esto podra hacerse analizando en


un bucle si todos los bits activados en la cadena correspondiente a A
tambin lo estn en la cadena que corresponde a B. Esto sera algo
complicado en cuanto a la programacin y llevara un tiempo de clculo
desproporcionado. Sin embargo, se puede realizar la misma comprobacin
de una forma ms simple aplicando alguna de las tres propiedades
siguientes:
A B AB = B, A B AB = AoA B AB =

Evidentemente, comprobar cualquiera de estas propiedades se reduce a una


operacin lgica y una comparacin, lo que resulta mucho ms simple que el
procedimiento anterior.
Curiosamente, la tarea de inicializar la cadena de bits correspondiente a un
conjunto es ms complicada que las operaciones sobre los conjuntos y depende
de cada caso. Normalmente hay que construir una mscara individualizada para
cada elemento con el n de poner a 1 los bits que correspondan en la cadena.

19

Sistemas Operativos I
Dentro de las operaciones lgicas tambin deben
desplazamientos, que pueden denirse mediante la expresin

considerarse

los

di di+k
donde di representa a cada uno de los bits del operando y k es el nmero de
lugares que se desplaza. En funcin del signo de k, el desplazamiento puede ser a
la izquierda (k negativo) o a la derecha (k positivo), donde se est suponiendo que
los bits se numeran de derecha a izquierda.
Los desplazamientos pueden ser de tres tipos: lgicos, aritmticos y rotaciones o
desplazamientos circulares dependiendo del bit entrante. El desplazamiento lgico
a la derecha diere del aritmtico en que el bit entrante es, en ste ltimo, el
mismo bit de mayor peso (bit de signo), mientras que en aqul es siempre un 0;
As se consigue que los desplazamientos aritmticos sean equivalentes a
multiplicaciones (izquierda) y divisiones (derecha) por 2. En las rotaciones el valor
del bit entrante es el mismo que el del saliente.

Instrucciones de control del ujo de programa


Las instrucciones de control de ujo son las que modican el secuenciamiento de
la ejecucin de las instrucciones del programa. En general, el secuenciamiento es
implcito, es decir,
PC

t
Fig.4.7. Secuencia lineal de ejecucin de instrucciones.
PC

20

Sistemas Operativos I

t
Fig.4.8. Secuencia con puntos de discontinuidad en la ejecucin de instrucciones.
la siguiente instruccin en ejecutarse es la que est fsicamente detrs en el
programa. Cuando esto no es as es por la accin de una instruccin de control de
ujo. Todas las instrucciones que modican el ujo de la ejecucin manejan el
contador
de
programa.Tambin,silamodicacindelujodeinstruccionessehacedeformacondicio
nal,esta condicin vendr dada por los bits de estado (N, Z, V y C). Vemos, por
tanto, que para las instrucciones de control de ujo hay dos variables
fundamentales: el contadordeprograma y los bitsdecondicin. Las instrucciones de
control de ujo suponen discontinuidades en la secuencia lineal de ejecucin de
las instrucciones (guras 4.7 y 4.8).
Instrucciones de bifurcacin
La mayora de los programas requieren de los ordenadores en que se ejecutan la
capacidad de examinar datos y luego alterar la evolucin del programa en funcin
de los resultados de esa comprobacin (gura4.9); esto nos lleva a la necesidad
de la existencia de instrucciones de salto o bifurcacin que pueden ser de dos
tipos: condicionales e incondicionales. Las bifurcaciones incondicionales se
realizan siempre, mientras que las bifurcaciones condicionales se realizan o no en
funcin del valor de uno o varios de los bits de estado o condicin,
simblicamente, de forma general:
Condicin cumplida

PC

Condicin no cumplida

Fig.4.9. Bifurcacin condicional.


21

Sistemas Operativos I
if (Condicin)
PC Direccin de bifurcacin;
else
PC++;

En esta representacin, Condicin simboliza una expresin que involucra a


uno o ms bits de condicin. Los bits de condicin ms usuales son:

N: Bit que indica si el resultado de la ltima operacin ha sido

negativo.
Z: Bit que indica si el resultado de la ltima operacin ha sido cero.
V: Bit que indica si en la ltima operacin hubo desbordamiento.
C: Bit que indica si en la ltima operacin se produjo acarreo o
llevada.

Algunas mquinas incluyen otros bits de estado adicionales. Es importante


distinguirla diferencia entre los bits C y V: mientras C indica que ha habido llevada
en el bit de orden ms alto, V seala que el resultado de una operacin tiene
demasiados bits para ser representado. En las operaciones realizadas en binario
natural ambos conceptos coinciden, sin embargo, en aritmtica de complemento a
2 son conceptos diferentes ya que la llevada en el bit de orden ms alto no es, en
este caso, una situacin incorrecta y se produce con mucha frecuencia sin que
haya desbordamiento. Veremos a continuacin cmo se realiza la deteccin de
desbordamiento para dar el valor correcto al bit V. La operacin que puede dar
ms problemas de desbordamiento es la suma (o derivados, como, por ejemplo, el
incremento). En principio, el desbordamiento se produce, en una operacin en
complemento a 2, cuando se suman dos operandos del mismo signo y el resultado
de la suma es de signo contrario. Esto se origina porque, al desbordarse la
capacidad del registro, se invade el bit de signo; por otra parte, no habr peligro de
desbordamiento si se suman dos operandos de signo contrario ya que, si ambos
operandos caben en un registro su diferencia tambin cabr.
.

22

Sistemas Operativos I

Entrada y salida mediante interrupciones

l problema con E/S programada es que el CPU tiene que esperar un


tiempo considerable a que el mdulo de E/S en cuestin est preparado
para recibir o transmitir los datos. El CPU debe estar comprobando
continuamente el estado del mdulo de E/S. Se degrada el desempeo
del sistema.
Una alternativa es que el CPU tras enviar una orden de E/S continu realizando
algn trabajo til. El mdulo de E/S interrumpir al CPU para solicitar su servicio
cuando est preparado para intercambiar datos. El CPU ejecuta la transferencia
de datos y despus contina con el procesamiento previo.
Se pueden distinguir dos tipos: E/S sncrona y E/S asncrona

E/S Sncrona: cuando la operacin de E/S finaliza, el control es retornado al


proceso que la gener. La espera por E/S se lleva a cabo por medio de una
instruccin wait que coloca al CPU en un estado ocioso hasta que ocurre
otra interrupcin. Aquellas mquinas que no tienen esta instruccin utilizan
un loop. Este loop contina hasta que ocurre una interrupcin transfiriendo
el control a otra parte del sistema de operacin. Slo se atiende una
solicitud de E/S por vez. El sistema de operacin conoce exactamente que
dispositivo est interrumpiendo. Esta alternativa excluye procesamiento
simultneo de E/S.

E/S Asncrona: retorna al programa usuario sin esperar que la operacin de


E/S finalice. Se necesita una llamada al sistema que le permita al usuario
esperar por la finalizacin de E/S (si es requerido). Tambin es necesario
llevar un control de las distintas solicitudes de E/S. Para ello el sistema de
operacin utiliza una tabla que contiene una entrada por cada dispositivo de
E/S (Tabla de Estado de Dispositivos).

La ventaja de este tipo de E/S es el incremento de laeficiencia del sistema.


Mientras se lleva a cabo E/S, el CPU puede ser usado para procesar o para
planificar otras E/S. Como la E/S puede ser bastante lenta comparada con la
velocidad del CPU, el sistema hace un mejor uso de las facilidades.

23

Sistemas Operativos I
DMA (Direct Memory Access)
La E/S con interrupciones, aunque ms eficiente que la E/S programada, tambin
requiere la intervencin del CPU para transferir datos entre la memoria y el mdulo
de E/S.
Consideren el siguiente ejemplo. Cuando se va a leer una lnea desde un
Terminal, el primer carcter escrito es enviado al computador. Cuando el carcter
es recibido por el controlador, ste interrumpe al CPU. El CPU le da servicio a la
interrupcin y luego continua con el proceso que estaba ejecutando. Esto es
posible cuando el dispositivo es muy lento comparado con el CPU. Entre un
carcter y otro el CPU lleva a cabo gran cantidad de procesamiento. Pero qu
sucede cuando estamos trabajando con dispositivos de E/S ms veloces;
Tendramos interrupciones muy seguidas y se estara desperdiciando mucho
tiempo.
Se utiliza DMA para dispositivos de E/S de alta velocidad. E1 controlador del
dispositivo transfiere un bloque de datos desde o para sus buffers de
almacenamiento a memoria directamente sin intervencin del CPU. Solo se
produce una interrupcin por bloque en lugar de tener una interrupcin por cada
byte (o palabra).
Por ejemplo, un programa solicita una transferencia de datos. El Sistema de
Operacin busca un buffer disponible. El controlador de DMA tiene sus registros
actualizados con las direcciones de la fuente y del destino y la longitud de la
transferencia. Por lo general esta actualizacin es realizada por el manejador de
dispositivo (rutina). Se indica al controlador de DMA a travs de bits de control en
un registro de control pare que inicie la operacin de E/S. Mientras tanto el CPU
puede llevar a cabo otras operaciones. El controlador de DMA interrumpe el CPU
cuando la transferencia ha sido terminada. El CPU interviene solo al comienzo y al
final de la transferencia.
La transferencia de datos bajo E/S programada es entre la CPU y un perifrico
transfiere datos hacia adentro y hacia fuera de la unidad de memoria por medio
del canal de memoria, DMA solicita ciclos de memoria concede la solicitud, el DMA
transfiere los datos directamente a la memoria. La CPU solo retrasa su operacin
de acceso de memoria para transferencia directa.

24

Sistemas Operativos I

Jerarqua de almacenamiento

as computadoras que siguen la arquitectura von Neumann, esto es,


prcticamente la totalidad hoy en da,1 podran resumir su operacin
general a alimentar una unidad de proceso (CPU) con los datos e
instrucciones almacenados en memoria, que pueden incluir llamadas a
servicio (y respuestas a eventos) originados en medios externos. Una
computadora von Neumann signica bsicamente que es una computadora de
programa almacenado en la memoria primaria esto es, se usa el mismo
almacenamiento para el programa que est siendo ejecutado y para sus datos,
sirvindose de un registro especial para indicar al CPU cul es la direccin en
memoria de la siguiente instruccin a ejecutar.
La arquitectura von Neumann fue planteada, obviamente, sin considerar la
posterior diferencia entre la velocidad que adquirira el CPU y la memoria. En
1977, John Backus present al recibir el premio Turing un artculo describiendo el
cuello de botella de von Neumann. Los procesadores son cada vez ms rpidos
(se logr un aumento de 1 000 veces tanto entre 1975 y 2000 tan slo en el reloj
del sistema), pero la memoria aument su velocidad a un ritmo mucho menor;
aproximadamente un factor de 50 para la tecnologa en un nivel costo-benecio
suciente para usarse como memoria primaria. Una respuesta parcial a este
problema es la creacin de una jerarqua de almacenamiento, yendo de una
pequea rea de memoria mucho ms cara pero extremadamente rpida y hasta
un gran espacio de memoria muy econmica, aunque mucho ms lenta.
En particular, la relacin entre las capas superiores est administrada por
hardware especializado de modo que su existencia resulta transparente al
programador. Ahora bien, aunque la relacin entre estos medios de
almacenamiento puede parecer natural, para una computadora tiene una realidad
completamente distinta: los registros son parte integral del procesador, y la
memoria est a slo un paso de distancia (el procesador puede referirse a ella
directamente, de forma transparente, indicando la direccin desde un programa).
Para efectos prcticos, el cach no se maneja explcitcamente: el procesador no
hace referencia directa a l, sino que es manejado por los controladores de
acceso a memoria. Y por ltimo, el acceso o modicacin de cualquier dato
almacenado en disco requiere en primer trmino de la transferencia a la memoria,
y solamente cuando sta haya nalizado, el llamado a las rutinas.

25

Sistemas Operativos I

Registros
La memoria ms rpida de la computadora son los registros, ubicados en cada
uno de los ncleos de cada CPU. Las arquitecturas tipo RISC (Reduced
Instruction Set Computer) slo permiten la ejecucin de instrucciones entre
registros (excepto, claro, las de carga y almacenamiento a memoria primaria).
Los primeros CPU trabajaban con pocos registros, muchos de ellos de propsito
especco, se regan ms bien con una lgica de registro acumulador. Por
ejemplo, el MOS 6502 (en el cual se basaron las principales computadoras de
ocho bits) tena un acumulador de ocho bits (A), dos registros ndice de ocho
bits(X e Y),un registro de estado del procesador de ocho bits(P),un apuntador al
stack de ocho bits (S), y un apuntador al programa de 16 bits (PC). El otro gran
procesador de su era, el Zilog Z80, tena 14 registros (tres de ocho bits y el resto
de 16), pero slo uno era un acumulador de propsito general.
El procesador Intel 8088, en el cual se bas la primer generacin de la
arquitectura PC, ofreca cuatro registros de uso casi general. En los ochenta
comenzaron a producirse los primeros procesadores tipo RISC, muchos de los
cuales ofrecan 32 registros, todos ellos de propsito general. El compilador2
busca realizar muchas operaciones que deben ocurrir reiteradamente, donde la
rapidez es fundamental, con sus operadores cargados en los registros. El estado
del CPU a cada momento est determinado por el contenido de los registros. El
contenido de la memoria, obviamente, debe estar sincronizado con lo que ocurre
dentro de ste pero el estado actual del CPU, lo que est haciendo, las
indicaciones respecto a las operaciones recin realizadas que se deben entregar
al programa en ejecucin, estn todas representadas en los registros. Se debe
mantener esto en mente cuando posteriormente se habla de todas las situaciones
en que el ujo de ejecucin debe ser quitado de un proceso y entregado a otro.

26

Sistemas Operativos I

Metodologa de diseo

xisten autores que son partidarios de un enfoque jerrquico para el


diseo de sistemas operativos. En la base de la jerarqua se encuentra el
hardware del computador, a veces denominado simplemente mquina
pura o los hierros desnudos. En el siguiente nivel de la jerarqua (o en
varios de los siguientes niveles en algunos diseos) estn las diferentes funciones
del ncleo, las cuales se ven como si formaran una mquina ampliada, es decir,
un computador que ofrece no slo su lenguaje de mquina como apoyo al sistema
operativo y a sus usuarios, sino tambin un grupo de funciones adicionales
proporcionadas por el ncleo. Estas posibilidades adicionales se denominan a
menudo primitivas.
Arriba del ncleo, en jerarqua, se encuentran los diferentes procesos del sistema
operativo que trabajan en apoyo de los procesos de usuario; por ejemplo, los
procesos de administracin de los dispositivos, que se encargan en la prctica de
supervisar las operaciones de entrada/salida de los dispositivos del sistema para
beneficio de los diversos usuarios. En la cima de la jerarqua se encuentran los
procesos de usuario.
Se ha visto que los diseos jerrquicos son ms fciles de depurar, modificar y
verificar. En los diseos en que el ncleo est distribuido en varios niveles de
jerarqua, elegir qu funcin colocar en cada nivel requiere un anlisis cuidadoso.
En tales diseos, con frecuencia slo se permite hacer llamadas a funciones
situadas jerrquicamente por debajo de quin hace la llamada; es decir, cada nivel
slo puede llamar a las funciones que estn colocadas en el nivel inmediato
inferior.
En los sistemas ms recientes existe la tendencia de colocar gran parte del ncleo
en micro cdigo. sta es una tcnica de seguridad efectiva, pues impide la
alteracin del ncleo y con una cuidadosa codificacin se puede lograr que se
ejecuten ms eficientemente las funciones del ncleo.

27

Sistemas Operativos I

Ncleo o Kernel y niveles de un sistema


operativo
El Kernel consiste en la parte principal del cdigo del sistema operativo, el cual se
encargan de controlar y administrar los servicios y peticiones de recursos y de
hardware con respecto a uno o varios procesos, este se divide en 5 capas:

Nivel 1. Gestin de Memoria: que proporciona las facilidades de bajo nivel


para la gestin de memoria secundaria necesaria para la ejecucin de
procesos.
Nivel 2. Procesador: Se encarga de activar los cuantums de tiempo para
cada uno de los procesos, creando interrupciones de hardware cuando no
son respetadas.
Nivel 3. Entrada/Salida: Proporciona las facilidades para poder utilizar los
dispositivos de E/S requeridos por procesos.
Nivel 4. Informacin o Aplicacin o Interprete de Lenguajes: Facilita la
comunicacin con los lenguajes y el sistema operativo para aceptar las
ordenes en cada una de las aplicaciones. Cuando se solicitan ejecutando
un programa el software de este nivel crea el ambiente de trabajo e invoca
a los procesos correspondientes.
Nivel 5. Control de archivos: Proporciona la facilidad para el
almacenamiento a largo plazo y manipulacin de archivos con nombre, va
asignando espacio y acceso de datos en memoria.

El ncleo y los procesos


El ncleo (Kernel) de un sistema operativo es un conjunto de rutinas cuya misin
es la de gestionar el procesador, la memoria, la entrada/salida y el resto de
procesos disponibles en la instalacin. Toda esta gestin la realiza para atender al
funcionamiento y peticiones de los trabajos que se ejecutan en el sistema.
Los procesos relacionados con la entidad bsica de los sistemas operativos
actuales: Los procesos.

El esquema general del mismo es el siguiente:


Definicin y concepto de proceso.
28

Sistemas Operativos I

El Bloque de Control de Proceso (PCB) como imagen donde el sistema


operativo ve el estado del proceso.
Estados por los que pasa un proceso a lo largo de su existencia en la
computadora.
Operaciones que se pueden realizar sobre un proceso.
Clasificacin de los procesos segn su forma de ejecucin, de carga, etc.

Procesos
Uno de los conceptos mas importantes que gira entorno a un sistema operativo es
el de proceso. Un proceso es un programa en ejecucin junto con el entorno
asociado (registros, variables ,etc.).
El corazn de un sistema operativo es el ncleo, un programa de control que
reacciona ante cualquier interrupcin de eventos externos y que da servicio a los
procesos, crendolos, terminndolos y respondiendo a cualquier peticin de
servicio por parte de los mismos.
Un proceso es una actividad que se apoya en datos, recursos, un estado en cada
momento y un programa.

El Bloque de Control de Procesos (PCB)


Un proceso se representa desde el punto de vista del sistema operativo, por un
conjunto de datos donde se incluyen el estado en cada momento, recursos
utilizados, registros, etc., denominado Bloque de Control de Procesos (PCB).
Los objetivos del bloque de control de procesos son los siguientes:

Localizacin de la informacin sobre el proceso por parte del sistema


operativo.
Mantener registrados los datos del proceso en caso de tener que suspender
temporalmente su ejecucin o reanudarla.

La informacin contenida en el bloque de control es la siguiente:

Estado del proceso. Informacin relativa al contenido del controlador del


programa (Program Counter, PC), estado de procesador en cuanto a
29

Sistemas Operativos I

prioridad del proceso, modo de ejecucin, etc., y por ultimo el estado de los
registros internos de la computadora.
Estadsticas de tiempo y ocupacin de recursos para la gestin de la
planificacin del procesador.
Ocupacin de memoria interna y externa para el intercambio (swapping).
Recursos en uso (normalmente unidades de entrada/salida).
Archivos en uso.
Privilegios.

Estas informaciones se encuentran en memoria principal en disco y se accede a


ellas en los momentos en que se hace necesaria su actualizacin o consulta. Los
datos relativos al estado del proceso siempre se encuentran en memoria principal.
Existe un Bloque de Control de Sistema (SCB) con objetivos similares al anterior y
entre los que se encuentra el enlazado de los bloques de control de procesos
existentes en el sistema.
El cambio de contexto se producir en caso de ejecucin de una instruccin
privilegiada, una llamada al sistema operativo o una interrupcin, es decir, siempre
que se requiera la atencin de algn servicio del sistema operativo.
Estado de los procesos
Los bloques de control de los procesos se almacenan en colas, cada una de las
cuales representa un estado particular de los procesos, existiendo en cada bloque,
entre otras informaciones. Los estados de los procesos son internos del sistema
operativo y transparentes al usuario.
Los estados de los procesos se pueden dividir en dos tipos: activos e inactivos.
1. Estados activos: Son aquellos que compiten con el procesador o estn en
condiciones de hacerlo. Se dividen en:
Ejecucin. Estado en el que se encuentra un proceso cuando tiene el
control del procesador. En un sistema monoprocesador este estado slo
lo puede tener un proceso.
Preparado. Aquellos procesos que estn dispuestos para ser
ejecutados, pero no estn en ejecucin por alguna causa (Interrupcin,
haber entrado en cola estando otro proceso en ejecucin, etc.).
Bloqueado. Son los procesos que no pueden ejecutarse de momento
por necesitar algn recurso no disponible (generalmente recursos de
entrada/salida).
30

Sistemas Operativos I

2. Estados inactivos: Son aquellos que no pueden competir por el procesador,


pero que pueden volver a hacerlo por medio de ciertas operaciones. En
estos estados se mantiene el bloque de control de proceso aparcado hasta
que vuelva a ser activado. Se trata de procesos que no han terminado su
trabajo que lo han impedido y que pueden volver a activarse desde el punto
en que se quedaron sin que tengan que volver a ejecutarse desde el
principio.
Son de dos tipos:

Suspendido bloqueado. Es el proceso que fue suspendido en espera de un


evento, sin que hayan desaparecido las causas de su bloqueo.
Suspendido programado. Es el proceso que han sido suspendido, pero no
tiene causa parta estar bloqueado.

Transacciones de estado
Todo proceso a lo largo de su existencia puede cambiar de estado varias veces.
Cada uno de estos cambios se denomina transaccin de estado. Estas
transacciones son las siguientes:

Comienzo de la ejecucin. Todo proceso comienza al ser dada la orden de


ejecucin del programa insertndose en la cola de preparados. El
encolamiento depender de la poltica de gestin de dicha cola.
Paso de estado de ejecucin. Cuando el procesador se encuentra inactivo
y en la cola de preparados exista algn proceso en espera de ser
ejecutado, se pondr en ejecucin el primero de ellos.
Paso a estado bloqueado. Un proceso que se encuentre en ejecucin y
que solicite una operacin a un dispositivo externo, teniendo que esperar a
que dicha operacin finalice, ser pasado de estado de ejecucin a estado
bloqueado insertndose su PCB en la cola correspondientes de bloqueado.
A partir de este momento el procesador pone en ejecucin el siguiente
proceso, que ser el primero de la cola de preparados.
Paso a estado preparado. Este paso puede ser producido por alguna de las
siguientes causas.

31

Sistemas Operativos I

Orden de ejecucin de un programa, con la cual, ya se ha mencionado, el proceso


pasa a la cola de preparados.
Si un proceso est en estado bloqueado por causa de una operacin de
entrada/salida y est finaliza, pasar de la cola de bloqueados a la de preparados.
Si un proceso est en ejecucin y aparece una interrupcin que fuerza al sistema
operativo a ejecutar otro proceso, el primero pasar al estado de preparado y su
PCB a la cola de preparados.
Activacin. Un proceso suspendido previamente sin estar bloqueado pasar al
estado preparado al ser activado nuevamente.

Paso a estado suspendido bloqueado. Si un proceso est bloqueado y el


sistema operativo recibe la orden de suspenderlo, su PCB entrar en la cola
de procesos suspendidos bloqueados.

Paso a estado suspendido preparado.

Este paso se puede producir bajo tres circunstancias:

Suspensin de un proceso preparado pasando ste de la cola de procesos


preparados a la de suspendidos preparados.
Suspensin de un proceso en ejecucin, con lo cual el proceso pasa a la
cola de suspendidos preparados.
Desbloqueo de un proceso suspendido bloqueado por desaparecer la
causa que impeda el ser activado de nuevo.

Operaciones sobre procesos


Los sistemas operativos actuales poseen una serie de funciones cuyo objetivo es
el de la manipulacin de los procesos. Las operaciones que se pueden hacer
sobre un proceso son las siguientes:

32

Sistemas Operativos I
Crear el proceso. Se produce con la orden de ejecucin del programa y suele
necesitar varios argumentos, como el nombre y la prioridad del proceso. Aparece
en este momento el PCB, que ser insertado en la cola de procesos preparados.
La creacin de un proceso puede ser de dos tipos:

Jerrquica. En ella, cada proceso que se crea es hijo del proceso creador y
hereda el entorno de ejecucin de su padre. El primer proceso que ejecuta
un usuario ser hijo del intrprete de comandos con el que interacta.
No jerrquica.
Cada proceso creado por otro proceso se ejecuta
independientemente de su creador con un entorno diferente. Es un tipo de
creacin que no suele darse en los sistemas operativos actuales.
Destruir un proceso. Se trata de la orden de eliminacin del proceso con la
cual el sistema operativo destruye su PCB.
Suspender un proceso. Es un proceso de alta prioridad que paraliza un
proceso que puede ser reanudado posteriormente. Suele utilizarse en
ocasiones de mal funcionamiento o sobrecarga del sistema.
Reanudar un proceso. Trata de activar un proceso que a sido previamente
suspendido.
Cambiar la prioridad de un proceso.
Temporizar la ejecucin de un proceso. Hace que un determinado proceso
se ejecute cada cierto tiempo (segundos, minutos, horas...) por etapas de
una sola vez, pero transcurrido un periodo de tiempo fijo.
Despertar un proceso. Es una forma de desbloquear un proceso que habr
sido bloqueado previamente por temporizacin o cualquier otra causa.

Prioridades
Todo proceso por sus caractersticas e importancia lleva aparejadas unas
determinadas necesidades de ejecucin en cuanto a urgencia y asignacin de
recursos.
Las prioridades segn los sistemas operativos se pueden clasificar del siguiente
modo:

Asignadas por el sistema operativo. Se trata de prioridades que son


asignadas a un proceso en el momento de comenzar su ejecucin y
dependen fundamentalmente de los privilegios de su propietario y del modo
de ejecucin.
33

Sistemas Operativos I

Asignadas por el propietario.


Estticas.
Dinmicas.

El Ncleo del Sistema Operativo


Todas las operaciones en las que participan procesos son controladas por la parte
del sistema operativo denominada ncleo (nucleus, core o kernel, en ingls).
El ncleo normalmente representa slo una pequea parte de lo que por lo
general se piensa que es todo el sistema operativo, pero es tal vez el cdigo que
ms 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 slo cuando se necesitan.
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.
Resumen de las Funciones del Ncleo
El ncleo de un sistema operativo normalmente contiene el cdigo necesario para
realizar las siguientes funciones:

Manejo de interrupciones.
Creacin y destruccin de procesos.
Cambio de estado de los procesos.
Despacho.
Suspensin y reanudacin de procesos.
Sincronizacin de procesos.
Comunicacin 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 procedimiento.
Apoyo para ciertas funciones de contabilidad del sistema.

Estructura Jerrquica del Sistema

34

Sistemas Operativos I
Un computador que ofrece no slo su lenguaje de mquina como apoyo al sistema
operativo y a sus usuarios, sino tambin un grupo de funciones adicionales
proporcionadas por el ncleo.
Arriba del ncleo, en jerarqua, se encuentran los diferentes procesos del sistema
operativo que trabajan en apoyo de los procesos de usuario, que se encargan en
la prctica de supervisar las operaciones de entrada/salida de los dispositivos del
sistema para beneficio de los diversos usuarios.
En los diseos en que el ncleo est distribuido en varios niveles de jerarqua,
elegir qu funcin colocar en cada nivel requiere un anlisis cuidadoso. En tales
diseos, con frecuencia slo se permite hacer llamadas a funciones situadas
jerrquicamente por debajo de quien hace la llamada; es decir, cada nivel slo
puede llamar a las funciones que estn colocadas en el nivel inmediato inferior.
Migracin del ncleo a micro cdigo
En los sistemas ms recientes existe la tendencia de colocar gran parte del ncleo
en micro cdigo. Esta es una tcnica de seguridad efectiva, pues impide la
alteracin del ncleo y con una cuidadosa codificacin se puede lograr que se
ejecuten ms eficientemente las funciones del ncleo.
El bloque de control de proceso (PCB) es una estructura de datos que contiene la
informacin que permite al sistema operativo localizar toda la informacin
importante sobre un proceso, incluyendo su estado actual, identificacin, prioridad,
memoria, recursos, valores de los registros, etctera. El PCB define el proceso al
sistema operativo.
Los sistemas operativos contienen mecanismos para realizar diversas operaciones
sobre los procesos, como crear, destruir, reanudar, cambiar la prioridad, bloquear,
despertar y despachar.
El kernel de UNIX
UNIX es el kernel (ncleo) de un sistema operativo de tiempo compartido. El
ncleo del sistema es un programa que siempre est residente en memoria y entre
otros, brinda los siguientes servicios:

Controla los recursos del hardware


Controla los dispositivos perifricos (discos, terminales, impresoras, etc.)
Permite a distintos usuarios compartir recursos y ejecutar sus programas.
Proporciona un sistema de archivos que administra el almacenamiento de
informacin (programas, datos, documentos, etc.)
35

Sistemas Operativos I

En un sentido ms amplio, UNIX abarca tambin un conjunto de programas


estndar, como pueden ser:

Compilador de lenguaje C (cc).


Editor de texto (vi).
Intrprete de rdenes (sh, ksh, csh)
Programas de gestin de archivos y directorios (cp, rm, mv, mkdir, rmdir,
etc.)

Los niveles dentro de la arquitectura de UNIX


El nivel ms interno no pertenece realmente al sistema operativo, si no que es el
hardware, la mquina sobre la que est implementado el sistema y cuyos recursos
queremos gestionar. Directamente en contacto con el hardware se encuentra el
kernel del sistema. Este kernel est escrito el lenguaje C en su mayor parte,
aunque coexistiendo con cdigo ensamblador.
En el tercer nivel de nuestra estructura se encuentran programas estndar de
cualquier sistema UNIX (vi, grep, sh, who, etc.) y programas generados por el
usuario (a.out programa ejecutable estndar creado por defecto por el compilador
cc, o cualquier otro programa ejecutable). Hay que hacer notar que estos
programas del tercer nivel nunca van a actuar sobre el hardware de forma directa.
Por lo tanto, debe existir algn mecanismo que nos permita indicarle al kernel que
necesitamos operar sobre un determinado recurso hardware. Este mecanismo es
lo que se conoce como llamadas al sistema (system calls).
Por encima del tercer nivel tenemos aplicaciones que se sirven de otros
programas ya creados para llevar a cabo su funcin. Estas aplicaciones no se
comunican directamente con el kernel.
Los bloques funcionales bsicos de que consta el kernel de UNIX
Las llamadas al sistema y su librera asociada representan la frontera entre los
programas del usuario y el kernel. La librera asociada a las system calls es el
mecanismo mediante el cual podemos invocar una system call desde un programa
C y se encuentra en el fichero /usr/lib/libc.a.
Las llamadas al sistema se ejecutan en modo kernel (para muchos
microprocesadores, modo supervisor) y para entar en este modo hay que ejecutar
una sentencia en cdigo mquina conocida como trap (o interrupcin software)
36

Sistemas Operativos I
El kernel est dividido en dos subsistemas principales: subsistema de ficheros y
subsistema de control de procesos.
El subsistema de ficheros controla los recursos del sistema de archivos y tiene
funciones como reservar espacio para los archivos, administrar el espacio libre,
controlar el acceso a los archivos, permitir el intercambio de datos entre los
archivos y el usuario, etc.
El subsistema de control de procesos es el responsable de la planificacin de los
procesos (scheduler), su sincronizacin, comunicacin entre los mismos (IPC
inter process comunication) y del control de la memoria principal.
Al mdulo gestor de memoria (swapping) se le conoce tambin como swapper.
El planificador o scheduler se encarga de gestionar el tiempo de CPU que tiene
asignado cada proceso. El scheduler entra en ejecucin cada cuanto de tiempo y
decide si el proceso actual tiene derecho a seguir ejecutndose (esto depende de
la prioridad y de sus privilegios).
La comunicacin entre procesos puede realizarse de forma asncrona (seales) o
sncrona (colas de mensajes, semforos).
Por ltimo, el mdulo de control del hardware es la parte del kernel encargada del
manejo de las interrupciones y de la comunicacin con la mquina. Los
dispositivos pueden interrumpir a la CPU mientras est ejecutando un proceso. Si
esto ocurre, el kernel debe reanudar la ejecucin del proceso despus de atender
a la interrupcin. Las interrupciones no son atendidas por procesos, sino por
funciones especiales, codificadas en el kernel, que son invocadas durante la
ejecucin de cualquier proceso.
Interrupciones de Entrada y Salida
Son iniciadas por hardware de entrada y salida. Estas interrupciones indican a la
UCP el cambio de estado de un canal o dispositivo. Las interrupciones de E/S se
producen cuando finaliza una operacin de E/S o cuando un dispositivo pasa al
estado listo.

37

Sistemas Operativos I
Interrupciones del procesador
Una interrupcin es un evento que altera la secuencia en que el procesador
ejecuta las instrucciones. La interrupcin es generada por el hardware del sistema
de cmputo. Cuando ocurre una interrupcin:

El sistema operativo toma el control (es decir, el hardware pasa el control al


sistema operativo).
El sistema operativo guarda el estado del proceso interrumpido. En muchos
sistemas esta informacin se guarda en el bloque de control de proceso
interrumpido.
El sistema operativo analiza la interrupcin y transfiere el control a la rutina
apropiada para atenderla; en muchos sistemas actuales el hardware se
encarga de esto automticamente.
La rutina del manejador de interrupciones procesa la interrupcin.
Se restablece el estado del proceso interrumpido (o del siguiente
proceso).
Se ejecuta el proceso interrumpido (o el siguiente proceso).

Una interrupcin puede ser iniciada especficamente por un proceso en ejecucin


(en cuyo caso se suele denominar trampa (trap), y se dice que est sincronizada
con la operacin del proceso) o puede ser causada por algn evento que puede
estar relacionado o no con el proceso en ejecucin (en cuyo caso se dice que es
asncrona con la operacin del proceso).
Los sistemas orientados hacia las interrupciones pueden sobrecargarse. Si ests
llegan con mucha frecuencia, el sistema no ser capaz de atenderlas. En algunos
sistemas orientados hacia el teclado, cada tecla presionada almacena en la
memoria un cdigo de un byte y genera un interrupcin para informar a la UCP
que un carcter est listo para ser procesado. Si la UCP no puede procesar el
dato antes de que se presione la siguiente tecla, se pierde el primer carcter.
Clases de Interrupciones
Existen seis clases de interrupciones:

Interrupciones SVC (supervisor call, llamadas al supervisor). Son iniciadas


por un proceso en ejecucin que ejecute la instruccin SVC. Una SVC es
una peticin generada por el usuario de un servicio particular del sistema,
38

Sistemas Operativos I

como realizar una operacin de entrada/salida, obtener ms memoria o


comunicarse con el operador del sistema. El mecanismo de las SVC ayuda
a proteger el sistema operativo de las acciones de los usuarios. Un usuario
no puede entrar arbitrariamente al sistema operativo, sino que debe solicitar
un servicio por medio de una SVC. El sistema operativo est al tanto de
todos los usuarios que intentan rebasar sus limites y puede rechazar ciertas
peticiones si el usuario no tiene los privilegios necesarios.
Interrupciones de E/S. Son iniciadas por hardware de entrada y salida.
Estas interrupciones indican a la UCP el cambio de estado de un canal o
dispositivo. Las interrupciones de E/S se producen cuando finaliza una
operacin de E/S o cuando un dispositivo pasa al estado listo.
Interrupciones externas. Son causadas por diversos eventos, incluyendo la
expiracin de un cuanto de un reloj que interrumpe, la pulsacin de la tecla
de interrupcin de la consola o la recepcin de una seal procedente de
otro procesador en un sistema de mltiples procesadores.
Interrupciones de Reinicio. Se produce cuando se presiona el botn de
reinicio de la PC o cuando llega de otro procesador una instruccin de
reinicio en un sistema de multiprocesamiento
Interrupciones de verificacin del programa. Son causadas por una amplia
clase de problemas que pueden ocurrir cuando se ejecutan las
instrucciones en lenguaje mquina de un programa. Dichos problemas
incluyen la divisin entre cero, el exceso o defecto de los nmeros que
pueden ser manejados por las operaciones aritmeticas, el intento de hacer
referencia a una localidad de memoria que est fuera de los lmites de la
memoria real. Muchos sistemas ofrecen a los usuarios la opcin de
especificar las rutinas que deben ejecutarse cuando ocurra una interrupcin
de verificacin del programa.
Interrupciones de verificacin de la mquina. Son ocasionadas por el mal
funcionamiento del hardware.

39

Sistemas Operativos I

LLAMADAS AL SISTEMA
Comunicaciones Establecer una comunicacin con determinado proceso (local o
remoto), aceptar una solicitud de comunicacin de otro proceso, intercambiar
informacin sobre un canal establecido.
Proteccin Consultar o modicar la informacin relativa al acceso de objetos en el
disco, otros procesos, o la misma sesin de usuario.
Cada sistema operativo expone una serie de llamadas al sistema. stas son, a su
vez, expuestas al programador mediante de las interfaces de aplicacin al
programador(API), que se alnean de forma cercana (pero no exacta). Del mismo
modo que cada sistema operativo ofrece un conjunto de llamadas al sistema
distinto, cada implementacin de un lenguaje de programacin puede ofrecer un
API ligeramente distinto de otros.

Llamadas al sistema, arquitecturas y API


Cada familia de sistemas operativos provee distintas llamadas al sistema, y sus
lenguajes/bibliotecas implementan distintos API. Esto es el que distingue
principalmente a uno de otro.
Por
ejemplo,
los
sistemas
Windows
95
en
adelanteimplementanWin32,Win16(compatibilidad con Windows previos)y MSDOS; MacOS implementa Cocoa (aplicaciones MacOS X) y Carbon
(compatibilidad con aplicaciones de MacMACOS previos), y Linux, los BSDS, Y
VARIOS OTROS SISTEMAS, *POSIX (el estndar que dene a Unix).El caso de
MacOS X es interesante, porque tambin implementa POSIX ofreciendo la
semntica de dos sistemas muy distintos entre s. Los lenguajes basados en
mquinas virtuales abstractas, como Java o la familia .NET (vase la seccin
B.2.1), exponen un API con mucha mayor distancia respecto al sistema operativo;
40

Sistemas Operativos I
la mquina virtual se presenta como un pseudo sistema operativo intermedio que
se ejecuta dentro del real, y esta distincin se hace especialmente notoria cuando
se busca conocer los detalles del sistema operativo.

Relacin con el Hardware


Depuracin por trazas (trace) La mayor parte de los sistemas operativos ofrecen
programas que, para nes de depuracin, envuelven al API del sistema y permiten
ver la traza de las llamadas al sistema que va realizando un proceso. Algunos
ejemplos de estas herramientas son strace en Linux, truss en la mayor parte de
los Unixes histricos o ktrace y kdump en los *BSD. A partir de Solaris 10 (2005),
Sun incluye una herramienta mucho ms profunda y programable para esta tarea
llamada dtrace, que al paso del tiempo ha sido portada a otros Unixes (*BSD,
MacOS). La salida de una traza brinda amplio detalle acerca de la actividad
realizada por un proceso, y permite comprender a grandes rasgos su interaccin
con el sistema. El nivel de informacin que da es, sin embargo, a veces
demasiado; eso se puede ver si se considera la siguiente traza, ante uno de los
comandos ms sencillos: pwd (obtener el directorio actual)

41

Sistemas Operativos I

Servicios del Sistema Operativo

omo ya se indic, una de las dos funciones principales de un sistema


operativo es servir de mquina ampliada o virtual, brindando facilidades
a los programas de los usuarios y a estos. Para lograr este objetivo, los
sistemas operativos se encargan de programar el trabajo con los
diferentes dispositivos existentes en el sistema de cmputo, separando a los
usuarios y programas de esta tarea compleja y tediosa.
Los servicios a usuarios se brindan, bsicamente, por medio de los llamados
Programas del Sistema, mientras que a los programas se les brindan a travs de
las Llamadas al Sistema.
Los programas del sistema constituyen una coleccin ms o menos grande de
programas (no funciones o subrutinas) suministradas por el fabricante (u otra
empresa) que permite realizar operaciones que son comunes a diferentes
usuarios, brindando un ambiente ms adecuado para el desarrollo y explotacin
de aplicaciones.
Los programas del sistema pueden ser divididos en varias categoras, aunque esto
tambin depende de cada sistema operativo. Algunos posibles grupos serian :
Manipulacin de ficheros (crear, eliminar, renombrar, imprimir, etc.), obtencin de
informacin de estado (fecha, hora, memoria disponible, espacio en disco, etc.),
editores de texto, etc.
En resumen, los programas del sistema son aquellos que ejecutan las acciones
descritas en los comandos de ste o que aparecen en los mens en el caso de las
interfaces grficas.
Las llamadas al sistema constituyen la interface entre el sistema de operacin y
los procesos. Estas generalmente se hacen por medio de instrucciones en
lenguaje ensamblador, aunque en algunos casos existen facilidades que permiten
se realicen desde lenguajes de alto nivel.
En el segundo caso antes indicado, se dan las variantes de que existan funciones
o procedimientos predefinidos en biblioteca que realicen las llamadas al sistema
como tal (UNIX, Windows) o el compilador genera directamente las instrucciones
necesarias para esto.

42

Sistemas Operativos I
Los mecanismos que ponen en ejecucin las llamadas al sistema operativo
difieren de uno a otro:

En el OS/360 existe una instruccin especial (SVC) que provoca una


trampa hacia el sistema. El nmero de la llamada se da en la instruccin.
En el CP/M no existe una instruccin especial y por ello el nmero de la
llamada se pone en el registro C y se salta a la direccin 5 de la memoria.
En MS-DOS se utiliza la instruccin INT seguida de un nmero de
interrupcin (21H).

En todos los casos antes indicados, se requiere de la transferencia de parmetros


desde o haca el procedimiento que instrumenta la llamada. Este pase de
parmetros se ejecuta a travs de los registros del procesador o por medio de un
bloque o tabla de memoria (pasndose la direccin en un registro).
El nmero de llamadas, la forma y tipo de cada una y los posibles agrupamientos
de estas dependen de cada sistema de operacin en especfico, aunque en forma
general se pudieran catalogar en 4 grupos:
Control de procesos.
Incluyen operaciones con los procesos tales como: Crear, eliminar, finalizar,
abortar, ejecutar, enviar seal, esperar por seal, etc.
Manipulacin de ficheros.
Incluyen operaciones con los ficheros tales como: Crear, eliminar, abrir, cerrar,
renombrar, leer, escribir, etc.
Manipulacin de dispositivos.
Incluyen operaciones con los dispositivos tales como: Solicitar, liberar, leer,
escribir, etc.
Intercambio de informacin.
Incluyen operaciones tales como: Conocer la fecha, conocer la hora, conocer
atributos de ficheros, fijar atributos de ficheros, fijar la fecha, etc.
Adems de los grupos antes indicados podra haber otros u otras operaciones
dentro de estos. Otros conjuntos podran ser:

Manipulacin de directorios y sistemas de ficheros.


Proteccin.
Sealizacin.

43

Sistemas Operativos I
La mejor manera de entender la esencia de las llamadas al sistema consiste en
hacer una revisin detallada de las que estn presentes en uno o varios sistemas
operativos y por ello se recomienda revisar las pginas de la 23 a la 36 del
segundo libro de Tanenbaum, donde se presenta la explicacin de las ms
importantes presentes en la versin 7 del UNIX.

44

Sistemas Operativos I

Bibliografa
Baase, S. 1983. VAX-11 Assembly Language Programming. Prentice-Hall.
Brown, F. 1991. Processeurs RISC. Lexample de lAm29000. Masson.
De Blasi, M. 1990. Computer Architecture. Addison Wesley.
Hennessy, J.L., & Patterson, D.A. 2003. Computer Architecture. A Quantitative
Approach. 3 edn. Morgan Kaufmann Publishers.
Heudin, J.C., & Panetto, C. 1990. Les architectures RISC. Dunod Informatique.
Tanenbaum, A.S. 2006. Structured Computer Organization. 5 edn. Prentice-Hall
International. Existe traduccin al castellano de la edicin anterior: Organizacin
de computadores: un enfoque estructurado, 4a edicin, Prentice-Hall
Hispanoamericana, 2000.
http://reynaldo-entrada-salida.es.tl/Entrada-y-salida-mediante-interrupciones.htm
http://www.infor.uva.es/~fernando/asignaturas/estruct/leccion10.pdf

45