Sistemas Informáticos
- Introducción a los
sistemas informáticos. Repaso de arquitectura de
computadores - Conceptos fundamentales sobre
sistemas operativos - Procesos
- Concurrencia: exclusión
mutua y sincronización - Concurrencia.
Interbloqueo (Deadlock) e inanición
(Starvation) - Gestión de
memoria - Memoria
virtual - Planificación de
monoprocesadores - Planificación de
multiprocesadores - Gestión de e/s.
Planificación de discos - Gestión de
archivos - File system en Unix.
I-nodos - Redes y proceso
distribuido
CAPITULO 1:
INTRODUCCIÓN A LOS SISTEMAS
INFORMÁTICOS
REPASO DE ARQUITECTURA DE
COMPUTADORES
1.1. Elementos básicos
En un alto nivel, un sistema
informático consta:
- Procesador
- Memoria
- Módulos de E/S
- Interconexión de sistemas: mecanismos y
estructuras que permiten la
comunicación entre procesadores, memoria
principal y los módulos de E/S.
El procesador es
normalmente quien lleva el control. Una de
sus funciones es
intercambiar los datos con
la memoria.
Para este propósito, hace uso de dos registros
internos:
MAR: Memory Adress Register. Especifica la dirección en memoria de la próxima
lectura o
escritura.
MBR / MDR: Memory Buffer/Data Register. Contiene los
datos que van a ser escritos a memoria o que fueron leídos
desde ella.
IOAR: Input Output Adress Register. Especifica un
dispositivo particular de E/S.
IOBR: Input Output Buffer Register. Permite intercambiar
datos entre un módulo de E/S y el procesador.
1.2. Conceptos varios
Definiciones varias
Byte: equivale a un término binario
(Binary termin) generalmente compuesto por 8
bits.
Carácter: es el conjunto de bits
necesarios para representar un símbolo de un código
(alfabético, numérico, especial, etc.)
Palabra: es una unidad lógica
de información. Generalmente está
compuesto por un número entero de bytes o
caracteres.
Frecuencia / Período
El tiempo de
transmisión de estados o tiempos de cada ciclo de un
computador es
el tiempo que se requiere para modificar los valores de un
conjunto de registros y está determinado por la frecuencia
del reloj. El período se calcula como la inversa de la
frecuencia:
Período * Frecuencia = 1
[ Período ] = s (segundo)
[ Frecuencia ] = Hz (Hertz).
Equivalencia de unidades
1 KB (kilobyte) = 210 bytes = 1024
bytes
1 MB (megabyte) = 220 bytes = 1024
KB
1 GB (gigabyte) = 230 bytes = 1024
MB
1 TB (terabyte) = 240 bytes = 1024
GB
1 ms (milisegundo) = 10-3
segundos
1 m s
(microsegundo) = 10-6 segundos
1 ns (nanosegundo) = 10-9 segundos
1 ps (picosegundo) = 10-12
segundos
1.3. Registros del procesador
Dentro del procesador, hay un conjunto de
registros que ofrecen un nivel de memoria que es más
rápido y pequeño que la memoria principal. Los
registros del procesador sirven para dos funciones:
- Registros visibles del usuario (o Registros para el
programador de sistemas) - Registros de control y de estado (o
Registros para el programador de sistemas)
1.4. Ejecución de instrucciones
Un ciclo para la ejecución de
instrucciones posee cuatro etapas:
- Búsqueda de la instrucción (BI) (fase
fetch) - Decodificación (D)
- Búsqueda de operandos (BO)
- Ejecución (E)
Los microprocesadores
de INTEL trabajan con un sistema llamado Cascada o Pipeline que
consiste en poder trabajar
con cuatro instrucciones en forma simultánea. Cuando se
ejecuta una serie de instrucciones al ritmo de los impulsos de un
reloj, con el primero de dichos impulsos se realiza la BI de la
primera instrucción (11). Con el segundo impulso, 11 pasa
a la fase D y 12 pasa a BI. Y así
sucesivamente.
Ejemplo de ejecución de
instrucciones
A continuación veremos la ejecución de
instrucciones de un fragmento de programa que suma
el contenido de la dirección 940 al contenido de la
dirección 941 y almacena el resultado en esta
última dirección.
Conociendo el siguiente mapeo de memoria:
- 1940
- 5941
- 2941
…… …….
- 0003
- 0002
Conociendo los siguientes códigos de
operación (que serán cargados en el Registro de
Instrucciones IR) :
0001 : Cargar de la memoria al AX
0010 : Almacenar el AX en memoria
0101 : Sumar al AX el contenido de la memoria
Y sabiendo que IP = 0300.
Entonces la secuencia de ejecución de las instrucciones es
la siguiente:
- Se carga el contenido de la ubicación 300 en el
IR. ( IR = 1940 )O sea, el valor que
está en 940 se carga en AX. ( AX = 3 ) - Los primeros 4 bits del IR indican la
operación a realizar (Código de operación
0001 – Cargar de memoria al AX). Los 12 bits restantes
indican la dirección de memoria. - Se incrementa el IP y se lee la instrucción
siguiente. ( IP = 0301 ) - Se carga el contenido de la ubicación 301 en el
IR. ( IR = 5941 )O sea, al valor de AX se le suma el que está
en 941. ( AX = 5 ) - Los primeros 4 bits del IR indican la
operación a realizar (Código de operación
0101 – Sumar al AX el contenido de la memoria). Los 12
bits restantes indican la dirección de
memoria. - Se incrementa el IP y se lee la instrucción
siguiente. ( IP = 0302 ) - Los primeros 4 bits del IR indican la
operación a realizar (Código de operación
0010 – Almacenar el AX en memoria). Los 12 bits restantes
indican la dirección de memoria.
O sea, el valor de AX se carga en la dirección
941. ( [941] = 0005)
El registro IP (Instruction Pointer) también
puede ser llamado PC (Program Counter).
1.5. Interrupciones
Existen cuatro clases de interrupciones:
- De programa: generadas por alguna
condición que se produce como resultado de la
ejecución de una instrucción, como el
desbordamiento aritmético, división por cero o
una referencia a un espacio de memoria no accesible al
usuario. - De reloj: generadas por un reloj interno del
procesador. Permite al S.O. llevar a cabo ciertas funciones
con determinada regularidad. - De E/S: generadas por un controlador de E/S
para indicar que una operación ha terminado
normalmente o para indicar diversas condiciones de
error. - Por fallo del hardware:
generadas por fallos tales como un corte de energía o
un error de paridad de la memoria.
Tratamiento de Interrupciones
El acontecimiento de una interrupción desencadena
una serie de sucesos, tanto en el HW del procesador como en el
SW. Cuando un dispositivo de E/S completa una operación de
E/S, se produce en el HW la siguiente secuencia de sucesos
(aunque deberá tenerse en cuenta si la interrupción
es enmascarable, no enmascarable o una
excepción):
- El dispositivo emite una señal de
interrupción al procesador. - El procesador finaliza la ejecución de la
instrucción en curso. - El procesador pregunta por la interrupción,
comprueba que ésta existe y envía una
señal de reconocimiento al dispositivo que generó
dicha interrupción. - El procesador se prepara para transferir el control a
la rutina de interrupción. Para ello, salva la
información necesaria para reanudar la ejecución
del programa en curso en el punto de la
interrupción. - El procesador carga en el contador de programa la
ubicación de entrada del programa de tratamiento de la
interrupción. - Se transfiere el control a la rutina que
tratará la interrupción. Dicha rutina
procederá a procesar la interrupción. - Cuando se completa la ejecución de la rutina
de interrupción, se recuperan de la pila los valores
de los registros que se salvaron y se restauran los registros.
Luego, se continúa con la normal ejecución del
programa.
1.6. Sistemas de transmisión de
datos
Clasificación de las transferencias de
datos
- Monodireccional o Simplex: se
efectúa en un solo sentido. - Bidireccional Duplex o Full Duplex: se
efectúa en ambos sentidos al mismo tiempo. - Bidireccional Half Duplex: se
efectúa en ambos sentidos, pero no al mismo
tiempo.
Operaciones en una transferencia de
datos
- Codificación: vuelco de la
información al código apropiado para
transmisión. - Emisión: se envía a la
línea de comunicación los impulsos
correspondientes a las señales preparadas y codificadas por el
elemento transmisor. - Registración: memorización de
los impulsos recibidos. - Traducción o Descodificación: la
inversa de la codificación.
Velocidades de transmisión
Las velocidades en la transmisión se miden en
Baudios. En algunos casos, esta unidad coincide con los bits que
se envían en la unidad de tiempo, pero generalmente
incluye la información de control.
Sistemas de transmisión
Los sistemas de transmisión pueden ser
sincrónicos (los bits se transmiten a un ritmo determinado
por un reloj) o asincrónicos (no tiene ritmo determinado).
La transmisión de bits puede hacerse en paralelo o en
serie.
Con respecto a la alimentación de los
sistemas de transmisión, ésta puede realizarse de
las siguientes formas:
- Corriente continua simple: la corriente se
transmite en un solo sentido. Los estados se representan con
emisión / reposo. - Corriente continua doble: los estados son
representados con el sentido en que circula la
corriente. - Corriente alternada: la corriente invierte el
sentido tantas veces como sea su frecuencia en un
segundo.
1.7. Jerarquía de memoria
Las limitaciones de diseño
de la memoria de un computador se resumen en tres conceptos:
capacidad, coste y velocidad.
El dilema que se plantea el diseñador es
evidente. El diseñador desearía usar
tecnologías de memoria que le ofrezcan una gran capacidad
(buscando que el coste por bit sea bajo). Sin embargo, para
cumplir con los requisitos de rendimiento puede necesitar una
memoria cara, de capacidad relativamente menor y con tiempos de
acceso rápidos.
La salida a este dilema es emplear una jerarquía
de memoria. A medida que se desciende por la jerarquía se
tienen las siguientes condiciones:
- Disminución del coste por bit
- Aumento de la capacidad
- Aumento del tiempo de acceso
- Disminución de la frecuencia de acceso a la
memoria por parte del procesador
Jerarquía tradicional de
memoria
Registros
Memoria caché
Memoria principal
Disco magnético
Cinta magnética
Jerarquía moderna de memoria
Registros
Memoria caché
Memoria principal
Caché de disco
Disco magnético
Cinta magnética y Disco óptico
Mencionamos como uno de los niveles a la caché de
disco. Ésta es una parte de la memoria principal que se
utiliza como un buffer para guardar temporalmente los datos
transferidos con el disco. La caché de disco mejora el
rendimiento de dos formas:
- Las escrituras a disco se agrupan. En lugar de muchas
transferencias pequeñas de datos, se tienen unas pocas
transferencias grandes de datos. Esto mejora el rendimiento del
disco y reduce la utilización del
procesador. - Algunos datos destinados a la salida pueden ser
referenciados por un programa antes del próximo volcado
a disco.
Se pueden incluir otras formas de memoria en la
jerarquía. Por ejemplo, los grandes computadores centrales
(mainframe) de IBM incluyen una forma de memoria conocida como
memoria expandida. Realmente, esta tecnología no
pertenece a la jerarquía de memoria sino que constituye
una rama paralela.
1.8. Memoria caché
La memoria caché intenta obtener una
velocidad cercana a la de las memorias
más rápidas y, al mismo tiempo, aportar una memoria
grande al precio de las
memorias de semiconductores,
que son menos costosas.
Hay una memoria principal más lenta y
relativamente grande, junto a una memoria caché más
pequeña y rápida. La caché contiene una
copia de parte de la memoria principal.
El diseño de una memoria caché debe
abordar algunas cuestiones:
- Tipo de conexión de la memoria caché
con respecto a la memoria principal. Pueden encontrarse en
serie o en paralelo. - Tamaño de caché. Cuanto mayor
sea el tamaño de la caché, mayor será la
probabilidad de
presencia, pero almacenar gran cantidad de códigos y
datos que no están próximos a los referenciados
recientemente no mejoras el rendimiento, ya que sale fuera del
entorno de vecindad y no es probable que sean requeridos. El
tamaño ideal de una memoria caché es de 4 a 256
KB. - Tamaño del bloque. Un bloque es la
unidad de intercambio de datos entre la caché y la MP. A
medida que el tamaño del bloque crece, pasan a la
caché más datos útiles; sin embargo, la
tasa de aciertos comenzará a bajar. - Algoritmos de anticipación. Caching. La
caché se actualiza desde la RAM
utilizando los principios
de: - Vecindad espacial: los programas solicitan datos o instrucciones
ubicados en posiciones de memoria cercanas a los datos o
instrucciones últimos direccionados. Suele
cumplirse debido a que los programas se escriben y
ejecutan en forma secuencial. - Vecindad temporal: los programas tienden a usar
los datos más reciente. Cuanto más antigua
es la información, más improbable es que se
la solicite.
- Vecindad espacial: los programas solicitan datos o instrucciones
- Algoritmos de reemplazo. Cuando se produce
ausencia en la caché y debe actualizarse ésta,
surge el problema de qué posición de la
caché sustituir. Para ello se utilizan algunos algoritmos,
siendo los más usados RANDOM, FIFO y LRU. - Políticas de escritura y
actualización de la memoria principal. Existen tres
métodos: - Escritura inmediata (Write Through): se
actualiza la memoria caché y la memoria principal
al mismo tiempo. - Escritura diferida (Post Write Through): la
caché incorpora algunos registros. Las escrituras
en caché se envían a estos registros,
liberando el procesador. La memoria principal va siendo
actualizada desde los registros. - Escritura obligada (Write Back): las escrituras
se realizan en la memoria caché y sólo se
hacen en memoria principal si resulta estrictamente
necesario.
- Escritura inmediata (Write Through): se
1.9. Técnicas
de comunicación de E/S
Entrada / Salida Programada
Cuando el procesador está ejecutando un
programa y encuentra una instrucción de E/S ejecuta dicha
instrucción, enviando una orden al módulo apropiado
de E/S.
Con esta técnica, el procesador es el
responsable de extraer los datos de la memoria principal cuando
va a hacer una salida o poner los datos en la memoria principal
cuando se hace una entrada. El SW de E/S se escribe de manera que
el procesador ejecute unas instrucciones que le otorguen el
control directo sobre la operación de E/S.
Entrada / Salida dirigida por
interrupciones
El problema de E/S programada es que el
procesador tiene que esperar un largo rato a que el módulo
de E/S en cuestión esté listo para recibir o
transmitir más datos.
Una alternativa es que el procesador envíe una
orden de E/S al módulo y se dedique a hacer alguna otra
tarea útil. El módulo de E/S interrumpirá
entonces al procesador para requerir sus servicios
cuando esté listo para intercambiar los datos. El
procesador ejecuta entonces la transferencia de datos y reanuda
el procesamiento anterior.
Acceso Directo a Memoria
La E/S dirigida por interrupciones, aunque es más
eficiente que la E/S programada, todavía requiere de la
intervención activa del procesador para transferir los
datos entre la memoria y un módulo de E/S y,
además, cualquier transferencia de datos debe recorrer un
camino que pasa por el procesador.
Cuando se tienen que mover grandes volúmenes de
datos se utiliza la técnica de DMA, que se puede llevar a
cabo por medio de un módulo separado sobre el bus del sistema o puede
estar incorporada dentro de un módulo de E/S.
Cuando el procesador desea leer o escribir un bloque de
datos, emite una orden hacia el módulo de DMA
enviándole la información necesaria:
- Si lo que se solicita es una lectura o
escritura - La dirección del dispositivo de E/S
involucrado - La dirección inicial de memoria desde/a la que
se va a leer/escribir - El número de palabras a leer o
escribir
El procesador continúa entonces con otro trabajo.
Habrá delegado la operación de E/S en el
módulo de DMA. El módulo de DMA transfiere un
bloque entero, una palabra cada vez, directamente hacia/desde la
memoria, sin pasar por el procesador. Cuando se completa la
transferencia, el módulo de DMA envía una
señal de interrupción al procesador. De esta
manera, el procesador se ve involucrado sólo al inicio y
al final de la transferencia.
CAPITULO 2:
CONCEPTOS FUNDAMENTALES SOBRE SISTEMAS
OPERATIVOS
2.1. EVOLUCION DE LOS SISTEMAS
OPERATIVOS
Proceso en serie
En los primeros computadores, a fines de los 40
hasta mediados de los 50, el programador interactuaba
directamente con el hardware; no había sistema
operativo. La operación con estas máquinas
se efectuaba desde una consola consistente en unos indicadores
luminosos, unos conmutadores, algún dispositivo de entrada
y una impresora. Los
programas en código de máquina se cargaban a
través del dispositivo de entrada. Si se detenía el
programa por un error, la condición de error se indicaba
mediante los indicadores luminosos. El programador podía
examinar los registros y la memoria principal para determinar la
causa del error. Si el programa continuaba hasta su
culminación normal, la salida aparecería en la
impresora.
Estos sistemas presentaban dos problemas
principales:
- Planificación: la mayoría de las
instalaciones empleaban un formulario de reserva de tiempo de
máquina. Un usuario podía reservar una hora y
terminar a los 45 minutos (produciendo un desperdicio del
tiempo de computador) o, bien no alcanzarle el tiempo reservado
(dejando trabajos inconclusos). - Tiempo de preparación: un programa sencillo
cargaba un compilador y un programa fuente, salvaba el programa
compilado (programa objeto) y luego montaba y cargaba el
programa objeto junto con las funciones comunes. Cada uno de
estos pasos podía implicar montar y desmontar cintas o
preparar paquetes de tarjetas.
Este modo de operación podría denominarse
proceso en
serie porque refleja el hecho de que los usuarios tenían
que acceder al computador en serie.
Sistemas sencillos de proceso por
lotes
Para mejorar el uso, se desarrolló el concepto de
sistema operativo por lotes (batch). El primer S.O. por lotes fue
desarrollado a mediados de los 50 por General Motors.
La idea central que está detrás del
esquema sencillo de proceso por lotes es el uso de un elemento SW
conocido como monitor. Para entender cómo funciona
este esquema, se va a ver desde dos puntos de vista: el del
monitor y el
del procesador.
Desde el punto de vista del monitor, él es quien
controla la secuencia de sucesos. Para que esto sea posible, gran
parte del monitor debe estar siempre en memoria principal y
disponible para su ejecución. Esta parte del monitor se
conoce como monitor residente. El resto del monitor consta
de utilidades y funciones comunes que se cargan como subrutinas
en los programas de los usuarios al comienzo de cualquier trabajo
que las necesite.
El monitor lee los trabajos uno a uno del dispositivo de
entrada y, a medida que los lee, el trabajo
actual se ubica en la zona del programa de usuario y toma el
control. Cuando el trabajo termina, se devuelve el control al
monitor, quien lee el siguiente trabajo. Los resultados de cada
trabajo se imprimen y entregan al usuario.
Consideremos ahora desde el punto de vista del
procesador. El procesador ejecuta las instrucciones del programa
de usuario hasta que encuentre una condición de
finalización o de error, tras lo cual va en
búsqueda de la instrucción siguiente del programa
monitor.
Debe quedar claro que es el monitor el que gestiona el
problema de la planificación. Con respecto a la
preparación de los trabajos, también el monitor se
encarga de ello. Con cada trabajo se incluyen instrucciones de
una forma primitiva de lenguaje de
control de trabajos (JCL – Job Control Language), que es un tipo
especial de lenguaje de
programación empleado para dar instrucciones al
monitor.
Durante la ejecución del programa de usuario,
cada instrucción de entrada origina la lectura de
una tarjeta de datos. La instrucción de entrada en el
programa del usuario hace que se invoque una rutina de entrada,
que forma parte del sistema operativo. La rutina de entrada se
asegura de que el programa de usuario no ha leído
accidentalmente una tarjeta JCL; si esto sucede, se produce un
error y el control se transfiere al monitor.
Los sistemas sencillos por lotes también poseen
las siguientes características:
- Protección de memoria: mientras el programa
del usuario esté ejecutándose, no debe modificar
la zona de memoria en la que está el monitor. Si se hace
un intento tal, el HW del procesador deberá detectar el
error y transferir el control al monitor, quien abortará
entonces el trabajo, imprimirá el mensaje de error y
cargará el siguiente trabajo. - Uso de temporizador: impide que un solo trabajo
monopolice el sistema. El temporizador se larga al comenzar
cada trabajo y si expira el tiempo, se producirá una
interrupción y el control volverá al
monitor. - Instrucciones privilegiadas: ciertas instrucciones
son designadas como privilegiadas y pueden ser ejecutadas
sólo por el monitor. Si el procesador, al ejecutar el
programa del usuario, encuentra una instrucción tal,
entonces se produce una interrupción de
error.
En un S.O. por lotes, el tiempo de máquina se
reparte entre la ejecución de programas de usuario y la
ejecución del monitor. Así se tienen dos
pérdidas: se entrega al monitor cierta cantidad de memoria
principal y éste consume cierto tiempo de
máquina.
Sistemas por lotes con
multiprogramación
Aún con el secuenciamiento
automático de los trabajos ofrecido por un S.O. por lotes,
el procesador está desocupado a menudo. El problema es que
los dispositivos de E/S son lentos comparados con el
procesador.
Esta ineficiencia no es necesaria. Se sabe que hay
memoria suficiente para almacenar el S.O. (el monitor residente)
y un programa de usuario. Supóngase que hay espacio
suficiente para el sistema operativo y dos programas usuarios.
Ahora, cuando un trabajo necesite esperar una E/S, el procesador
puede cambiar al otro trabajo que probablemente no estará
esperando a la E/S. Además se podría ampliar la
memoria para almacenar tres, cuatro o más programas y
conmutar entre todos ellos. Este proceso es conocido como
multiprogramación o multitarea. Éste es el
punto central de los sistemas
operativos modernos.
Sistemas de tiempo compartido
Con el uso de la multiprogramación, el
tratamiento por lotes puede llegar a ser bastante eficiente. Sin
embargo, para muchas tareas, es conveniente suministrar un modo
en que el usuario interactúe directamente con el
computador.
Al igual que la multiprogramación permite al
procesador manejar varias tareas por lotes al mismo tiempo, la
multiprogramación puede también utilizarse para
manejar varias tareas interactivas. En este último caso,
la técnica se conoce como tiempo compartido, porque
refleja el hecho de que el tiempo del procesador es compartido
entre los diversos usuario. La técnica básica de un
sistema de tiempo compartido es tener a varios usuarios
utilizando simultáneamente el sistema mediante terminales,
mientras que el sistema operativo intercala la ejecución
de cada programa de usuario en ráfagas cortas de
cómputo (quantum). De esta manera si hay n usuario
que solicitan el servicio a la
vez, cada usuario sólo dispondrá, en promedio, de
1 / n de la atención efectiva del computador, sin
contar con la sobrecarga del sistema operativo.
Uno de los primeros sistemas de tiempo compartido que se
desarrollaron fue el Sistema Compatible de Tiempo Compartido
(CTSS, Compatible Time-Sharing System) en 1961. Su funcionamiento
básico es fácil de explicar. El sistema se
ejecutaba en una máquina con una memoria de 32 K palabras
de 36 bits, con un monitor residente que consumía 5 K del
total. Cuando había que asignar el control a un usuario
interactivo, el programa del usuario y los datos eran cargados en
los restantes 27 K de la memoria principal. Un reloj del sistema
generaba interrupciones a razón de aprox. una cada 0,2
segundos. En cada interrupción del reloj, el S.O. se
adueñaba del control y le podía asignar el
procesador a otro usuario. De esta manera, a intervalos
regulares, el usuario en curso era expulsado y se cargaba otro
usuario en su lugar. Para conservar el estado del
usuario anterior, para su reanudación posterior, los
programas del usuario anterior y sus datos eran escritos en el
disco antes de leer los programas del nuevo usuario y sus datos.
En consecuencia, el espacio de memoria del usuario anterior
debía ser restaurado cuando le llegara de nuevo su
turno.
Sistemas distribuidos
Un sistema de procesamiento de
datos en que todas las funciones están centralizadas
en una CPU y un S.O.
se llama procesamiento centralizado.
En cambio, un
procesamiento distribuido es aquel en que se ejecutan los datos
en distintos nodos, dispersos geográficamente,
interconectados mediante una red. Las
características principales de un sistema distribuido
son:
- Fragmentación de los elementos que componen
una aplicación, en dos o más sistemas
interconectados, de igual o diferente arquitectura
operativa. - Los recursos de los
sistemas se controlan y administran en forma
independiente - La relación entre ambos sistemas puede tomas
diferentes formas. Por ejemplo: Client-Server y Peer to Peer
(Un nodo es par de otro y ambos nodos ofrecen los mismos
servicios).
2.2. DEFINICIONES PREVIAS
- Software: es la parte lógica. Se
refiere a programas y a la gestión del computador. - Hardware: todo lo referente a la
computadora que pueda ser "tocado" - Firmware: programa grabado sobre un componente
del sistema y que está integrado a él en su
funcionamiento. - Orgware: todo lo relacionado con la
organización, ya sea lógica, física o sobre su
uso. - Peopleware: se refiere a lo relacionado con
los usuarios.
2.3. DEFINICION DE SISTEMA OPERATIVO
- Según sus procedimientos: "Un S.O. es
un conjunto de programas, rutinas y procedimientos
manuales y
automáticos que administran los recursos de un sistema
de cómputo" - Según sus funciones: "Un programa o
conjunto de programas es llamado S.O. si cumple las funciones
de:
. Inicialización de la máquina
. Servir de interfase hombre-máquina (máquina
extendida)
. Administración de recursos del sistema
"
2.4. CLASIFICACION DE LOS SISTEMAS
OPERATIVOS
Según la cantidad de usuarios que soporta, un
S.O. se clasifica en Monousuario o Multiusuario. Y según
las aplicaciones que ejecutan, en S.O. de Propósito
General y S.O. de Propósito Especial.
Según la cantidad de usuarios que
soporta
S.O. Mono-Usuario
Son sistemas que se basan en máquinas virtuales
que admiten a un solo usuario, el cual utiliza todos los recursos
sin compartirlos con otros. Éste es el caso de las
computadoras
personales (PC) o estaciones de trabajos específicas
(Workstation). El énfasis de su diseño está
puesto en una interfase amigable entre el usuario y el equipo, un
lenguaje de control sencillo y periféricos.
S.O. Multi-Usuarios
Los S.O. Multiusuarios son aquellos que aceptan
más de un usuario trabajando simultáneamente con el
computador.
Según las aplicaciones que
ejecutan
S.O. de Propósito General
Están diseñados para mantener un
flujo constante de trabajo (Work-flow) en forma de tareas a ser
ejecutadas por la máquina. Debido al gran número (y
diversidad) de trabajos, el Sistema debe proveer soportes
utilitarios y facilidades para soportar una gran cantidad de
unidades periféricas.
Se clasifican en Sistemas Batch y Sistemas de accesos
múltiples (Multiaccess). Los Sistemas Batch se
caracterizan por el hecho de que una vez introducida una tarea en
la máquina, el usuario no mantiene contacto con la misma
hasta que concluye su ejecución. Hay dos modos de trabajar
proponiendo las tareas al sistema:
- A través del operador: el operador recibe el
trabajo y lo pone a ejecutar. Al finalizar la ejecución,
devuelve los resultados al usuario. - Remote Job Entry: permite ordenar ejecución de
trabajos mediante dispositivos E/S.
En los Sistemas Multiaccess el usuario puede
iniciar, vigilar, controlar o suspender la ejecución de su
programa desde cualquier terminal del sistema.
S.O. de Propósito Especial
Están diseñados para aplicaciones
y/o arquitecturas especiales. Se clasifican en: Tiempo real,
Fault Tolerance (Tolerancia de
Fallas) y Virtuales.
Características de los S.O. de tiempo
real:
- Usados como dispositivos de control de aplicaciones
que deben realizarse en un tiempo determinado. - Realiza la respuestas a eventos en
tiempo preestablecidos. - Sus parámetros más importantes son los
tiempos de espera, procesamiento y almacenamiento. - Pueden tener un tiempo de respuesta crítico
(Ej: control de procesos
industriales) o no crítico (Ej: reserva de
pasajes).
Características de los S.O. con tolerancia de
fallas:
- Usado en aplicaciones donde se debe proveer un
servicio continuo o cuyo mantenimiento es dificultoso o muy
costoso. - Detecta y corrige errores, y recupera el sistema
habilitando reemplazos de los componentes en mal funcionamiento
o vuelve atrás operaciones que
motivaron pérdidas de datos.
Características de los S.O. virtuales:
- Especialmente diseñados para ejecutar varios
S.O. (o distintas versiones de uno mismo) concurrentemente en
una máquina creando la ilusión de varias
máquinas virtuales idénticas. - Todos los S.O. trabajan en modo usuario respecto S.O.
virtual, pero están en modo privilegiado con respecto a
los programas que corren bajos ese S.O.
2.5. COMPONENTES DE UN SISTEMA
OPERATIVO
Planificador de Trabajos (Job Scheduler) o
Shell
Sus funciones principales son:
- Se encarga de hacer de interfase
hombre-máquina - Administra pedidos de recursos
- Carga los programas
- Crea procesos
- Controla accesos de usuarios
- Controla protecciones del sistema
Existen dos tipos de Shell:
- Uno provee una interfase basada en comandos u
órdenes llamadas C.L.I. (Command Line Interface) que
permite ingresar un conjunto de caracteres que el S.O.
interpretará como comandos u órdenes - Conocido como G.I.U. (Graphical User Interface) que
permite accesos a través de iconos o gráficos.
Núcleo o Kernel
Es un conjunto de códigos usados por todos los
programas en el más bajo nivel. Está compuesto
por:
- Una extensión del set de instrucciones del
procesador - Una extensión del mecanismo de secuenciamiento
del HW (Switcher o Dispatcher) - Un manejador de Interrupciones (Interrupt
Handler) - Un manejador de errores (Error Handler)
- Un manejador de E/S (I/O Handler)
- Un mecanismo de acceso a memoria central
(Direccionamiento) - Un Clock (Timer)
- Comunicación entre procesos (IPC)
Se encarga de:
- Interfases con HW
- Administración de interrupciones y
excepciones - Multiprogramación (Low Scheduler)
- Comunicación entre procesos
- Gestión del HW
Las características de sus funciones (del nivel
cero de la estructura de
un S.O.) son:
- Residentes en Memoria Principal
- Deben ejecutarse en el mayor nivel de prioridad
(Nivel Supervisor) - Escritas en lenguaje ensamblador
Administradores
- Administración del procesador: consta
de dos módulos: Dispatcher (decide a qué
procesador asignar el proceso que tiene que ser ejecutado) y
Controlador de Tráfico (se encarga de crear, modificar y
actualizar el contexto asociado a un proceso) - Administración de memoria (Memory
Manager): se encarga de asignar a los procesos la memoria
necesaria para su ejecución. - Administración de periféricos (I/O
System): posee todos los módulos necesarios para la
utilización de los periféricos. - Administración de información (File
System): rutinas que permite manipular y manejar el sistema
de archivos. - Administración de comunicaciones (Communication Manager):
responsable de compartir los recursos distribuidos mediante una
red de
computadoras.
2.6. FUNCIONES DE UN SISTEMA OPERATIVO
Inicialización
Esta tarea es llevada a cabo por el Kernel, con rutinas
residentes en memoria más otras residentes en el disco del
sistema. La inicialización tiene por objetivo
preparar la máquina real y llevarla a un estado tal que
pueda ejecutar el primer trabajo.
Hay dos tipo de inicialización:
- Inicialización Total: es un proceso que
se ejecuta al encender la máquina. Los pasos en que se
realiza son los siguientes:
- Verificación de los recursos del
sistema - Creación de las tablas de
recursos - Almacenamiento de la dirección del
procesador - Búsqueda del código de la rutina de
inicialización - El I.P.L. carga el núcleo del S.O. en
memoria - El programa cargador (Loader) carga el S.O.
completo - Finalización del booteo
- Máquina preparada para ejecución de
primer trabajo - Prompt en pantalla
- Máquina utilizable
- Inicialización Parcial: no crea ni
localiza las tablas generadas por el proceso de
Verificación de Recursos en el instante del
"booteo".
Máquina extendida (Interfase hombre –
máquina)
Las funciones principales de la máquina
extendida son:
- Separar la complejidad de la máquina. Una
parte del S.O. se ocupa de separar la complejidad de HW y lo
transforma en una máquina virtual mas fácil de
usar - Actuar como interfase de E/S y controlar el manejo de
los dispositivos E/S - Facilitar la comunicación con el
usuario - Aceptar entradas de nuevos trabajos.
La comunicación con el usuario es a través
de algún lenguaje de comandos. Esta interfase con el
usuario presenta dos visiones del S.O.:
- Visión del usuario: para el usuario
común. Provee una interfase que proporciona el
ocultamiento de HW, cuyos objetivos
principales son la abstracción (para ocultar la
complejidad) y seguridad
(proteger uso de recursos entre los usuarios y el
sistema) - Visión del System Manager: para el
administrador del sistema de cómputo
(super usuario). El System Manager es el responsable de que el
Sistema de Cómputos funcione en forma adecuada y
configura el S.O. para que los usuarios compartan los recursos
en forma eficiente.
Administración de
recursos
Sus funciones principales son:
- Facilitar al usuario la creación,
recuperación y eliminación de objetos - Facilitar al usuario compartir y proteger
recursos - Crear ambiente
necesario para ejecución de programas - Optimizar el uso de recursos
Para ello, el S.O. controla todos los objetos de un
sistema de cómputos en cuanto a quién usa
cuál recurso y su respectiva planificación del
reparto. De esta forma va asignando y desasignando recursos
según considere conveniente, transformándose en un
árbitro imparcial en los conflictos
generados entre programas o usuarios. Para ser un arbitro
imparcial, el S.O. implementa:
- Política: asigna
prioridades - Estrategia: ordena accesos y
conflictos - Autoridad: debe recuperar los recursos
otorgados a los procesos y ordenar su uso. - Protección: brinda seguridad a los
usuarios entre sí y preserva la integridad de los
recursos. - Contabilidad: lleva el control del uso y
disponibilidad de los recursos.
2.7. REQUERIMIENTOS PARA EL DISEÑO DE UN
SISTEMA OPERATIVO
- Eficiencia en los siguientes
puntos:
. Tiempo transcurrido entre tareas y procesos
. Tiempo ocioso del procesador central
. Tiempo de ejecución utilizado por
procesos
. Tiempo de respuesta en los accesos de los
recursos
. Grado de utilización de recursos
. Rendimiento ® Trabajos ejecutados por hora
- Modularidad: estructurado en
módulos - Documentación de interfases
- Portabilidad
- Confiable: debe resolver todos los conflictos
que se generan y debe estar libre de errores y
fallas - Soporte de múltiples usuarios o
procesos y de red - Tamaño reducido: el objetivo es que no
utilice o monopolice grandes cantidades de recursos
restándolos a los requerimientos de la producción debido a su condición
de competidor privilegiado frente a los
demás.
2.8. ARQUITECTURA DE UN SISTEMA
OPERATIVO
Estructura tradicional o
monolítica
- Constituido por un solo programa compuestos de un
conjunto de rutinas entrelazadas de tal forma que cada una
puede llamar a cualquier otra. - Estructura interna indefinida. Los niveles de
funcionalidad no están bien separados. - Estos S.O. tienen difícil configuración
y actualización y falta de protecciones y
privilegios.
Estructura en estratos o
jerárquica
- El S.O. está compuesto por módulos
organizados en niveles. - Cada módulo no conoce la implementación
de los otros módulos, sólo conoce las
interfases. - El módulo de nivel N funciona utilizando los
servicios del nivel N – 1. - Esta estructura facilita la protección y el
acceso. - Son S.O. de baja velocidad y de difícil
definición de niveles. - Esta estructura puede representarse mediante anillos
concéntricos (rings). Cada anillo tiene una apertura
(trap) por donde accede a otras capas (niveles). Las capas
internas son las de mayor privilegio.
Estructura cliente-servidor
- Se remueve la mayor parte del código del S.O.,
dejando un Kernel mínimo. - Las funciones del S.O. son implementadas como
programas usuario. - Los servicios se efectúan mediante la
técnica de message passing. - Sistemas altamente modulares. Los módulos del
sistema no tienen acceso directo al HW.
Procedimiento del Message passing (Paso de
mensajes)
- El Proceso Cliente solicita al Kernel, mediante un
mensaje, un servicio. - El Kernel recibe el mensaje, toma las decisiones de
planificación y envía el mensaje al Proceso
Servidor. - El Proceso Servidor ejecuta la función
solicitada y devuelve al Kernel un mensaje con el resultado de
la operación. - El Kernel reenvía el mensaje al Proceso
Cliente indicando que el servicio se ha cumplido.
Máquinas virtuales
- Posee una copia del HW base
- Las características de la máquina
virtual es igual a las de la real - Cada máquina virtual permite la
ejecución de cualquier S.O. - Son de difícil implementación y de
costosos recursos.
2.9. SERVICIOS QUE BRINDA UN S.O.
- Creación de programas: el S.O. ofrece
una variedad de características y servicios, tales como
los editores y los depuradores (debuggers), para ayudar al
programador en la creación de programas. - Ejecución de programas: para ejecutar
un programa se necesita un cierto número de tareas. El
S.O. administra todas estas tareas para el usuario. - Acceso a los dispositivos de E/S: cada
dispositivo de E/S requiere un conjunto propio y peculiar de
instrucciones o de señales de control para su
funcionamiento. El S.O. tiene en cuenta estos
detalles. - Acceso controlado a los archivos: en el caso
de archivos, el control debe incluir una comprensión, no
sólo de la naturaleza
del dispositivo de E/S sino del formato de los archivos y del
medio de almacenamiento. Una vez más, es el S.O. el que
se encarga de los detalles. - Acceso al sistema: en el caso de un sistema
compartido o público, el S.O. controla el acceso al
sistema como un todo y a los recursos específicos del
sistema. Las funciones de acceso pueden brindar
protección a los recursos y los datos, ante usuarios no
autorizados y debe resolver los conflictos en la propiedad de
los recursos. - Detección y respuesta a
errores - Contabilidad: el S.O. debe recoger estadísticas de utilización de los
diversos recursos y supervisar los parámetros de
rendimiento tales como el tiempo de respuesta.
2.10. PROGRAMAS RELACIONADOS CON EL SISTEMA
OPERATIVO
- Cargadores: SW que coloca las instrucciones
del programa a ejecutar con sus datos en Memoria
Principal. - Intérprete de mandatos o comandos: su
función es obtener desde el teclado, el
siguiente mandato especificado por el usuario y ejecutarlo.
Hace de interfase usuario – sistema. Ej: Command.com en
MS-DOS. - Compiladores: conjunto de programas que
permiten la traducción de los lenguajes de alto nivel
al lenguaje de máquina. - Intérpretes: traductores de
instrucción de programa fuente a instrucción del
lenguaje de máquina. No producen programas
objetos. - Link-Editors: son los responsables de ubicar
en el programa ejecutable las rutinas de bibliotecas
(library). - Debuggers: son programas que permiten
encontrar y depurar fácilmente errores en otros
programas.
2.11. JERARQUIA DE DISEÑO DE UN SISTEMA
OPERATIVO
Para ver la tabla seleccione la
opción "Descargar" del menú superior
2.12. SIMMETRIC MULTIPROCESSING (SMP)
Últimamente, se han creado diseños (como
por ejemplo el SMP) que posibilitan la ejecución en
paralelo.
Los procesadores en paralelo se dividen en SIMD
(single instruction multiple data) y MIMD (multiple instruction
multiple data). MIMD es un set de procesadores que
simultáneamente ejecutan secuencias de instrucciones
distintas en distintos sets de datos. Estos últimos pueden
usar memoria compartida o memoria distribuida. Dentro del sistema
de memoria compartida encontramos dos tipos de arquitecturas:
master/slave (amo/esclavo) o SMP.
La arquitectura master/slave corre el kernel en
un procesador en particular, el master esta encargado de los
procesos estimados y los hilos. La ventaja de esta arquitectura
se da en que un proceso controla toda la memoria y los recursos
de I/O. La desventaja se produce cuando una falla en el master
produce una caída de todo el sistema. Además puede
ocurrir un cuello de botella ya que el master se ocupa de todos
los procesos estimados y la
administración de los restantes.
La arquitectura SMP corre su kernel en cualquier
procesador. El kernel es construido como múltiples
procesos o múltiples hilos. Esta arquitectura debe
garantizar que dos procesadores no elijan el mismo proceso ya que
ocurriría una falla. En SMP hay múltiples
procesadores y cada uno de ellos tiene una unidad de control,
unidad aritmetica-logica y registros propios. Cada procesador
tiene acceso a memoria compartida y a dispositivos de I/O a
través de un bus compartido. En maquinas modernas, el
procesador tiene generalmente un nivel de memoria cache
privada.
2.13. MICROKERNELS
La filosofía del microkernel es que solamente las
funciones esenciales del sistema operativo deben estar en el
kernel. Los componentes del sistema operativo externos al
microkernel son implementados como procesos servidores; estos
interactuan entre ellos sobre una misma base, mediante mensajes a
través del microkernel. La función del microkernel
con respecto al intercambio de mensajes, es la de validarlos,
pasarlos entre componentes y conceder acceso al hardware. (El
microkernel pasa a tener una arquitectura del tipo
cliente/servidor).
Los beneficios del microkernel son, entre otros,
extensibilidad, portabilidad, flexibilidad y fiabilidad, siendo
recomendado para sistemas
operativos orientado a objetos. Una de las principales
desventajas es la performance. Cuesta mucho el crear y enviar un
mensaje, aceptar, decodificar y responder entre otras
cosas.
Administración de memoria
primitiva
El microkernel debe controlar el direccionamiento de
memoria libre en el orden de hacer posible la implementacion de
los niveles de protección. Es responsable del mapeo de
cada pagina virtual a una pagina física. El volumen de
administración de memoria, incluyendo la
protección entre procesos, puede ser implementada fuera
del kernel.
I/O y administración de
interrupciones
La arquitectura del microkernel puede manejar las
interrupciones del hardware mediante mensajes e incluir puertos
I/O en espacios direccionables. El microkernel reconoce la
interrupción pero no puede manejarla. Para esto genera un
mensaje al proceso de nivel usuario que se encuentra asociado con
las interrupciones. El transformar interrupciones en mensajes
debe ser realizado por el microkernel.
3.1. CONCEPTOS GENERALES SOBRE LOS
PROCESOS
Todos los sistemas operativos de
multiprogramación están construidos en torno al concepto
de proceso. Por lo tanto, los requisitos principales que deben
satisfacer un S.O. están expresados haciendo referencia a
procesos:
- Debe intercalar la ejecución de un conjunto de
procesos para maximizar la utilización del procesador
ofreciendo a la vez un tiempo de respuesta
razonable. - Debe asignar los recursos a los procesos en
conformidad con un política
específica - Podría tener que dar soporte a la
comunicación entre procesos y la creación de
procesos por parte del usuario
El procesador ejecutará instrucciones de entre un
repertorio en una secuencia dictada por los valores cambiantes
del IP. A lo largo del tiempo, este contador puede apuntar a
códigos de programas diferentes que son parte de
diferentes aplicaciones. Desde el punto de vista de un programa
individual, su ejecución involucra una secuencia de
instrucciones del programa. La ejecución de un programa
individual se conoce como proceso o
tarea.
El comportamiento
de un proceso individual puede caracterizarse por la
traza, que es un listado de la secuencia de instrucciones
que se ejecutan para dicho proceso. El comportamiento del
procesador puede caracterizarse mostrando la forma en que se
intercalan las trazas de varios procesos. Todo sistema operativo
permite a un proceso continuar su ejecución sólo
por un cantidad máxima determinada de ciclos,
después de los cuales es interrumpido (time-out); esto
impide que un solo proceso monopolice el tiempo del
procesador.
3.2. MODELO DE
PROCESOS CON DOS ESTADOS
El modelo más sencillo que puede
construirse tiene en cuenta que, en un momento dado, un proceso
puede estar ejecutándose o no. Entonces, un proceso puede
estar en uno de dos estados: Ejecución y No
Ejecución. Cuando el sistema operativo crea un nuevo
proceso, éste entra en el sistema en el estado de No
Ejecución. De este modo, el proceso existe, es conocido
por el sistema operativo y está esperando la oportunidad
de ejecutarse. Aquellos procesos que no están
ejecutándose tienen que guardarse en algún tipo de
cola, para que esperen su turno de ejecución.
Creación de procesos
Cuando se añade un proceso a los que ya
está administrando el sistema operativo, hay que construir
las estructuras de datos que se utilizan para administrar el
proceso y asignar el espacio de direcciones que va a utilizar el
proceso.
Cuatro sucesos comunes llevan a la creación de un
proceso:
- En un entorno de trabajo por lotes, un proceso se
crea como respuesta a la remisión de un
trabajo. - En un entorno interactivo, cuando un nuevo usuario
intenta conectarse. - Por una aplicación. Por ejemplo, si un usuario
solicita la impresión de un archivo, el
S.O. creará un proceso que gestionará dicha
impresión. - Por solicitud de otro proceso.
Cuando un proceso es creado por el sistema operativo
tras la solicitud explícita de otro proceso, la acción
se conoce como generación de procesos (process
spawning). Cuando un proceso genera otro, el proceso generador se
conoce como proceso padre y el proceso generado es el
proceso hijo.
Existen dos tipos de creación:
- Jerárquica: cada proceso que se crea es
hijo del proceso creador y hereda el entorno de su
ejecución de su padre. Un proceso durante su
ejecución puede crear varios procesos hijos a
través de llamadas al sistema para creación de
procesos. Al restringirse un proceso hijo a un subconjunto de
recursos del padre, se evita que éste sature al sistema
creando demasiados procesos hijos. Al crear procesos hijos, el
padre continúa ejecutando concurrentemente con sus hijos
o espera a que todos sus hijos hayan terminado y luego
continúa él. - No jerárquica: cada proceso creado se
ejecuta en forma independiente de su creador en un entorno
diferente.
Terminación de procesos
En cualquier sistema informático, debe
haber alguna forma de que un proceso pueda indicar que ha
terminado. Las formas existentes para terminar un proceso
son:
- En un entorno de trabajo por lotes, inclusión
de una instrucción de detención (HALT). Esta
instrucción generará una interrupción para
avisar al S.O. que el proceso ha concluido. - En un entorno de trabajo por lotes, puede finalizarse
por la llamada explícita a un servicio del S.O. para la
terminación. - En una aplicación interactiva, es la
acción del usuario la que indica terminación. Por
ejemplo, en un sistema de tiempo compartido, el proceso de un
usuario particular terminará cuando éste se
desconecte del sistema o apague el terminal y en una PC o
WorkStation cuando el usuario abandona una
aplicación. - Cuando ocurren una serie de errores o condiciones de
fallos - Un proceso puede ser eliminado por el proceso que lo
creó o al terminar el proceso padre
3.3. MODELO DE PROCESOS CON CINCO
ESTADOS
- Ejecución: si suponemos un computador
con un único procesador, entonces sólo
podrá haber un proceso en este estado. - Listo: proceso que está preparado para
ejecutar, en cuanto se le dé la oportunidad - Bloqueados: proceso que no puede ejecutar
hasta que se produzca cierto suceso, como la terminación
de una operación de E/S. - Nuevo: proceso que se acaba de crear, pero que
aún no ha sido admitido por el sistema operativo en el
grupo de
procesos ejecutables. - Terminado: un proceso que ha sido excluido del
grupo de procesos ejecutables, porque se detuvo o porque fue
abandonado por alguna razón.
Si un nuevo usuario intenta conectarse a un
sistema de tiempo compartido o si un nuevo trabajo por lotes es
remitido para su ejecución. El sistema operativo puede
definir un nuevo proceso en dos pasos. Primero, el S.O: lleva a
acabo algunas tareas necesarias de gestión interna Se le
asocia un identificador al proceso y se construyen y asignan
algunas tablas necesarias para gestionar el proceso. En este
punto, el proceso estará en el estado Nuevo. Esto
significa que se han llevado a cabo las acciones
necesarias para crear el proceso pero no se ha comprometido
aún a su ejecución.
Asimismo, un proceso sale de un sistema en dos pasos.
Primero, el proceso termina cuando llega al punto normal de
terminación, cuando se abandona debido a un error
irrecuperable o cuando otro proceso con la debida autoridad hace
que el proceso abandone. La terminación pasa el proceso al
estado Terminado. En este punto, el proceso ya no se elige
más para la ejecución. Sin embargo, las tablas y
otra información asociada con el trabajo son conservadas
temporalmente. Esto le da tiempo a otros programas auxiliares o
de soporte para extraer la información
necesaria.
Cola de Listos y Bloqueados
A medida que se admiten procesos en el sistema, se
sitúan en la cola de Listo. Cuando llega el momento de que
el S.O. escoja otro proceso para ejecutar, se selecciona uno de
la cola de Listos. En ausencia de un esquema de prioridades,
ésta puede ser una simple cola FIFO. Cuando un proceso que
está ejecutándose es apartado de la
ejecución, se lo da por terminado o se lo pone en la cola
de Listos o Bloqueados, dependiendo de las
circunstancias.
Por último, cuando se produce un suceso, todos
los procesos de la cola de Bloqueados que están esperando
a dicho suceso se pasan a la cola de Listos. Esta última
medida significa que, cuando se produce un suceso, el sistema
operativo debe recorrer toda la cola de Bloqueados, buscando
aquellos que esperaban al suceso. En un S.O. grande, puede haber
demasiada cantidad de procesos en dichas cola y, por lo tanto,
sería más eficiente tener una varias colas de
Bloqueados, una por cada suceso.
Procesos suspendidos
Consideremos un sistema que no utiliza memoria
virtual. Cada proceso que va a ejecutarse debe ser cargado
por completo en la memoria principal. La memoria contiene varios
procesos y el procesador puede dedicarse a otro proceso cuando
uno esté esperando. Pero si el procesador es tan
rápido en comparación con E/S, todos los procesos
de memoria estarán esperando este recurso. Así
pues, incluso con multiprogramación, el procesador
podría estar desocupado la mayor parte del
tiempo.
Una solución es el intercambio, que
significa mover una parte o todo el proceso de la memoria
principal a disco. Cuando ninguno de los procesos en memoria
está en estado Listo, el sistema operativo expulsa a disco
a uno de los procesos que esté Bloqueado y lo pasa a una
cola de Suspendidos. Al realizar la transferencia del proceso a
disco, entonces el espacio que se libera de la memoria principal
puede ser utilizado para traer otro proceso. En este modelo vemos
que se ha agregado un estado Suspendido.
Hemos visto dos conceptos independientes: si un proceso
está esperando un suceso (bloqueado o no) y si un proceso
ha sido expulsado de la memoria principal (suspendido o no). Para
realizar las combinaciones de estos conceptos, hacen falta los
cuatro estados siguientes:
- Listo: el proceso está en memoria
principal y listo para la ejecución. - Bloqueado: el proceso está en memoria
principal esperando un suceso - Bloqueado y suspendido: el proceso está
en memoria secundaria esperando un suceso. - Listo y suspendido: el proceso está en
memoria secundaria pero está disponible para su
ejecución tan pronto como se cargue en memoria
principal.
3.4. DESCRIPCION DE PROCESOS
Estructuras de control del sistema
operativo
Si el sistema operativo va a administrar los procesos y
los recursos, entonces tiene que disponer de información
sobre el estado actual de cada proceso y de cada recurso. El S.O.
construye y mantiene tablas de información sobre cada
entidad que esté administrando. Hay cuatro tipo de tablas
diferentes mantenidas por el sistema operativo: de memoria, de
E/S, de archivos y de procesos.
Las tablas de memoria deben incluir la
siguiente información:
- La asignación de memoria principal a los
procesos - La asignación de memoria secundaria a los
procesos - Atributos de protección de segmentos de
memoria, tales como qué procesos pueden acceder a
ciertas regiones compartidas de memoria - Cualquier información necesaria para gestionar
la memoria virtual
Las tablas de E/S son utilizadas por el
sistema operativo para administrar los dispositivos y canales de
E/S del sistema informático.
Las tablas de archivos ofrecen información
sobre la existencia de los archivos, su posición en la
memoria secundaria, su estado actual y otros atributos. Gran
parte de esta información (o toda) puede ser mantenida y
utilizada por un sistema de gestión de archivos, en cuyo
caso el sistema operativo tendrá poco o ningún
conocimiento
de los archivos.
Finalmente, el sistema operativo debe mantener tablas
de procesos para administrarlos.
Todas estas tablas deben estar enlazadas o disponer de
referencias cruzadas de alguna manera. La memoria, E/S y los
archivos son administrados en nombre de los procesos, por lo que
debe haber alguna referencia directa o indirecta a estos recursos
en las tablas de procesos.
Estructuras de control de
procesos
Los elementos típicos de una imagen de proceso
son:
- Espacio de direcciones privadas del usuario:
incluye los datos del usuario (la parte modificable del espacio
de usuario que puede guardar datos del programa, una zona para
una pila del usuario y programas que pueden modificarse) y el
programa del usuario (programa a ejecutar). - Pila del sistema: cada proceso tiene una o
más pilas LIFO
asociadas a él. Una pila se utiliza para almacenar los
parámetros y las direcciones de retorno. - Bloque de control del proceso:
información necesaria para que el sistema operativo
controle al proceso. - Espacio de direcciones compartidas con otros
procesos
Para que el sistema operativo pueda
administrar el proceso, al menos una pequeña parte de su
imagen, que contiene la información a usar por el sistema
operativo, debe mantenerse en memoria principal. Para ejecutar el
proceso, la imagen completa debe cargarse en la memoria
principal. Por tanto, el sistema operativo necesita conocer la
ubicación de cada proceso en el disco y también la
ubicación de los procesos que estén en memoria
principal.
Hay una tabla principal de procesos con una entrada para
cada proceso. Cada entrada contiene, al menos, un puntero a la
imagen de un proceso. Si la imagen del proceso contiene varios
bloques, entonces esta información estará guardada
directamente en la tabla principal o con referencias cruzadas a
entradas de las tablas de memoria.
Bloque de Control del Proceso
En un sistema de multiprogramación
sofisticado, se requiere una gran cantidad de información
de cada proceso para su administración. Como ya se dijo,
puede considerarse que esta información reside en un
bloque de control del proceso (PCB), que será de
utilidad para
poder conmutar la CPU entre los distintos programas en
ejecución. Los PCB son leídos y/o modificados por
casi todos los módulos de un S.O., incluyendo aquellos que
tienen que ver con la planificación, asignación de
recursos, tratamiento de interrupciones y análisis y supervisión del rendimiento. Puede decirse
que el conjunto de los PCB definen el estado del sistema
operativo.
Una serie de rutinas del S.O. intentarán acceder
a la información de los PCB. La dificultad no está
en el acceso, sino en la protección; existen dos
problemas:
- Un error en una sola rutina, como la de tratamiento
de interrupciones, puede dañar los PCB, lo que
destruiría la capacidad del sistema para administrar los
procesos afectados. - Un cambio de diseño en la estructura o en la
semántica del PCB podría afectar a
varios módulos del S.O.
Estos problemas planteados se pueden abordar exigiendo a
todas las rutinas del S.O. que pasen a través de una
rutina de manejo, cuya única tarea sería la de
proteger los PCB y que se constituiría en el único
árbitro para leer y escribir en estos bloques.
La información del bloque de control del proceso
puede agruparse en tres categorías generales:
- Identificación del proceso: incluye el
identificador de este proceso, el identificador del proceso que
lo creó (proceso padre) y el identificador del usuario.
A cada proceso se le asigna un identificador único, que
puede ser tan simple como un índice en la tabla
principal del proceso. Si no hay identificadores
numéricos, entonces debe existir una correspondencia que
permita al S.O. ubicar las tablas apropiadas a partir del
identificador del proceso. - Información del estado del procesador:
está formada por los registros del procesador, que son
los Registros visibles al usuario (a los que puede hacerse
referencia mediante el lenguaje
de máquina), los Registros de Control y de Estado (IP
– EFLAGS – Identificadores de
habilitación/inhabilitación) y los Punteros de
Pila (las pilas almacenan los parámetros y las
direcciones de retorno de los procedimientos y de las llamadas
al sistema; el puntero de pila apunta siempre a la cima de la
pila). Por supuesto, mientras un proceso está
ejecutándose, la información está en los
registros. Cuando se interrumpe el proceso, toda la
información de los registros debe salvarse de forma que
pueda restaurarse cuando el proceso reanude su
ejecución. - Información de control del proceso: es
la información necesaria para que el S.O. controle y
coordine los diferentes procesos activos.
Incluye:
. Información de Planificación y
Control: estado del proceso, prioridad, información
de planificación e identidad
del suceso que el proceso está esperando antes de poder
reanudarse
. Estructuración de Datos: un proceso
puede estar enlazada con otros procesos en una cola, anillos u
otra estructura. El PCB puede contener punteros a otros
procesos para dar soporte a estas estructuras.
. Comunicación entre procesos:
indicadores, señales y mensajes asociados con la
comunicación entre dos procesos
independientes.
. Privilegios de los procesos
. Gestión de Memoria
. Propiedades y utilización de los
recursos
3.5. CONTROL DE PROCESOS
Creación de procesos
El procedimiento del
sistema operativo para la creación de un nuevo proceso
incluye los pasos siguientes:
- Asignar un único identificador al nuevo
proceso. En ese momento se añade una nueva entrada a la
tabla principal de procesos, que contiene una entrada por
proceso. - Asignar espacio para el proceso. Esto incluye todos
los elementos de la imagen del proceso. - Debe inicializarse el PCB. La parte de
información del estado del procesador normalmente se
inicializa con la mayor parte de las entradas a cero, excepto
para el IP (que se prepara con el punto de entrada del
programa) y los punteros a las pilas del sistema (que
establecen los límites
de la pila del proceso). La parte de información de
control del procesador se inicializa a partir de los valores
estándares por omisión y los atributos que se han
solicitado para el proceso. La prioridad puede asignarse por
omisión al valor más bajo, a menos que se haya
hecho una solicitud explícita de un valor
mayor. - Se deben establecer los enlaces
apropiados - Puede haber otras estructuras de datos que crear o
ampliar.
Cambio de proceso
A primera vista, la función de cambio de proceso
parece sencilla. En cierto momento, un proceso que está
ejecutándose se interrumpe, el sistema operativo pone a
otro proceso en el estado de Ejecución y pasa el control a
dicho proceso. Sin embargo, surgen algunas cuestiones. Una de
esas cuestiones es cuándo cambiar de proceso.
Existen tres mecanismos para realizar un cambio de
proceso:
- Interrupción: originada por
algún suceso externo e independiente del proceso que
está ejecutándose. El control se transfiere
primero a un gestor de interrupciones, quien lleva a cabo
algunas tareas básicas y luego se salta a una rutina del
sistema operativo que se ocupa del tipo de interrupción
que se produjo. Algunos ejemplos son:
. Interrupción de reloj: el S.O.
determina si el proceso que está ejecutándose ha
estado ejecutándose durante un máximo de tiempo
permitido. Si esto ocurre, el proceso pasa al estado Listo y se
debe expedir otro proceso.
. Interrupción de E/S: cuando el S.O.
reconoce que se produjo una acción de E/S, y la
acción constituye un suceso que están esperando
uno o más procesos, entonces el S.O. traslada todos los
procesos bloqueados al estado Listo y decide si reanuda la
ejecución del proceso que está actualmente en
estado de Ejecución o se expulsa a dicho proceso en
favor de un proceso Listo de mayor prioridad.
. Fallo de memoria: cuando el procesador
encuentra una referencia a una dirección de memoria
virtual de una palabra que no está en memoria principal,
el S.O. debe traer a dicha memoria el bloque que contiene la
referencia. Después de hacer la solicitud de E/S para
traer el bloque de memoria, el S.O. puede llevar a cabo un
cambio de contexto para reanudar la ejecución de otro
proceso; el proceso que cometió el fallo de memoria se
pasa a estado Bloqueado. Después de que el bloque en
cuestión se carga en memoria, dicho proceso se pone en
estado Listo.
- Cepo: tiene que ver con una condición
de error o de excepción generada dentro del proceso que
está ejecutándose, como un intento ilegal de
acceso a un archivo. El sistema operativo determina si el error
ocurrido es fatal. Si lo es, el proceso que estaba
ejecutándose pasa al estado de Terminado y se produce un
cambio de proceso. Si no es fatal, se puede intentar
algún procedimiento de recuperación o,
simplemente, notificarlo al usuario. Se puede hacer un cambio
de proceso o, simplemente, reanudar el mismo proceso que se
estaba ejecutando. - Llamada del supervisor: se producen desde el
programa que estaba ejecutándose. Por ejemplo, se
está ejecutando un proceso de usuario y se llega a una
instrucción que solicita una operación de E/S,
tal como abrir un archivo. Esta llamada provoca la
transferencia a una rutina que forma parte del código
del sistema operativo. Por lo general, el uso de una llamada al
sistema hace que el proceso de usuario pase al estado
Bloqueado.
Cambio de contexto
Durante un ciclo de instrucción, el
procesador comprueba si se ha producido alguna
interrupción. Si no hay interrupción pendiente,
continúa con el ciclo de lectura de la instrucción
siguiente del programa en curso del proceso actual.
Si hay alguna interrupción pendiente, el
procesador salva el contexto del programa que está
ejecutándose y asigna al IP el valor de la
dirección de comienzo de un programa de tratamiento de la
interrupción. El procesador continúa entonces con
el ciclo de lectura de instrucción y trae la primera
instrucción del programa de tratamiento de interrupciones,
que atenderá a la interrupción. Al salvar el
contexto, se debe incluir cualquier información que pueda
alterarse por la ejecución de la rutina de tratamiento de
la interrupción y que pueda ser necesaria para reanudar el
programa que fue interrumpido. Así pues, deberá
salvarse la parte de información de estado del procesador
del PCB. El resto de la información del PCB depende de la
influencia del tratamiento de la interrupción en el
proceso.
Cambio de estado de los
procesos
Está claro que el cambio de contexto es un
concepto distinto del cambio de proceso. En los cambios de estado
del proceso, por ejemplo, si el proceso que estaba
ejecutándose pasa a otro estado (Listo, Bloqueado, etc)
los pasos que se llevan a cabo son:
- Salvar el contexto del procesador
- Actualizar el PCB que estaba en estado de
Ejecución. Esto implica cambiar el estado del proceso a
alguno de los otros estados. - Mover el PCB a la cola apropiada (Listos, Bloqueados,
etc.) - Seleccionar otro proceso para
ejecución - Actualizar el PCB del proceso seleccionado. Esto
incluye cambiar el estado del proceso a
Ejecución. - Actualizar las estructuras de datos de gestión
de memoria. - Restaurar el contexto del proceso a aquél que
existía en el momento en el que el proceso seleccionado
dejó por última vez el estado de
Ejecución.
Ejecución del sistema
operativo
El S.O. es un conjunto de programas y es ejecutado por
el procesador, entonces ¿es el sistema operativo un
proceso?. Existen tres enfoques referidos a la ejecución
de los S.O.:
Núcleo fuera de todo proceso
Un enfoque bastante tradicional y habitual en muchos de
los sistemas operativos más antiguos es ejecutar el
núcleo del sistema operativo fuera de cualquier proceso.
Cuando el proceso en ejecución es interrumpido o hace una
llamada de supervisor, se salva el contexto del procesador para
este proceso y se pasa el control al núcleo. El S.O. tiene
su propia región de memoria y su propia pila del sistema
para controlar las llamadas y retornos de procedimientos. El S.O.
puede llevar a cabo cualquier función deseada y luego
restaurar el contexto del proceso interrumpido para
reanudarlo.
El punto clave es que se considera que el concepto de
proceso se aplica sólo a los programas de usuario. El
código del S.O. se ejecuta como una entidad separada que
opera en modo privilegiado.
Ejecución dentro de los procesos de
usuario
Ejecuta casi todo el software del sistema
operativo en el contexto de un proceso de usuario. El enfoque es
que el S.O. es principalmente una colección de rutinas que
el usuario llama para llevar a cabo varias funciones y que son
ejecutadas dentro del entorno del proceso de usuario. Una pila
del núcleo separada se utiliza para gestionar las llamadas
y los retornos mientras que el proceso esté en el modo del
núcleo. El código y los datos del sistema operativo
están en el espacio de direcciones compartidas y son
compartidos por todos los procesos de usuario.
Cuando se produce una interrupción, un cepo o una
llamada del supervisor, el procesador se pone en modo del
núcleo y el control pasa al S.O. Con tal fin, se salva el
contexto del procesador y tiene lugar un cambio de contexto hacia
una rutina del S.O. Sin embargo, la ejecución
continúa dentro del proceso de usuario en
curso.
Si el sistema operativo, al completar su trabajo,
determina que el proceso en curso debe continuar
ejecutándose, entonces se lleva a cabo un cambio de
contexto para reanudar el programa interrumpido del proceso en
curso.
Sistema operativo basado en procesos
Consiste en implementar el sistema operativo como
una colección de procesos del sistema. Al igual que en las
otras opciones, el software que forma parte del núcleo
ejecutará en modo núcleo. En este caso, sin
embargo, las funciones más importantes del núcleo
se organizan en procesos separados. Impone unas normas de
diseño de programas que promueven el uso de un S.O.
modular con interfases intermódulos mínimas y
claras. Además, algunas funciones no críticas del
S.O. se pueden implementar como procesos separados. Como un
proceso, la función podrá ejecutar con un nivel de
prioridad asignado y ser intercalada con otros procesos bajo el
control del distribuidor. Por último, implementar el S.O.
como un conjunto de procesos es útil en un entorno
multiprocesador o multicomputador, en el cual algunos de los
servicios del S.O. pueden enviarse a procesadores dedicados,
mejorando así el rendimiento.
3.6. THREADS, HILOS O PROCESOS
LIVIANOS
Se ha presentado el concepto de proceso incluyendo las
dos características siguientes:
- Unidad de propiedad de los recursos: a cada
proceso se le asigna un espacio de direcciones virtuales para
albergar a la imagen del proceso y, de cuando en cuando, al
proceso se le puede asignar memoria virtual y otros recursos,
tales como canales de E/S, dispositivos de E/S y
archivos. - Unidad de expedición: un proceso es un
camino de ejecución (traza) a través de uno o
más programas. Esta ejecución puede ser
intercalada con la de otros procesos. De este modo, un proceso
tiene un estado (Ejecución, Listo, etc.) y una prioridad
de expedición. La unidad planificada y expedida por el
S.O. es el proceso.
En la mayoría de los sistemas operativos, estas
dos características son, de hecho, la esencia de un
proceso. Para distinguir estas dos características, la
unidad de expedición es llamada thread y la unidad
de propiedad de los recursos, task. Un thread
(también llamado hilo, hebra o proceso liviano) es,
básicamente, la unidad de utilización de la
CPU.
Multi-threading
Algunos sistemas operativos soportan
múltiples hilos en la ejecución dentro de un
proceso simple. Esto es conocido como multi-threading. Los
procesos continúan teniendo un PCB y una cantidad de
memoria para el usuario, pero cada hilo que pertenece a dicho
proceso tiene un bloque de control de hilos, una pila de usuario
y una pila de kernel propias.
Implementación de los
hilos
Existen dos características generales en la
implementación de los hilos:
- Hilos de nivel usuario: en este nivel todo el
trabajo de los hilos es realizado por la aplicación y el
kernel no se percata de la existencia de dichos hilos. Una
aplicación (que puede ser programada para ser
multithread usando bibliotecas de hilos) comienza con un hilo
simple. La aplicación y su hilo son localizados en un
proceso simple administrado por el kernel. La generación
de nuevos hilos es realizada invocando al utilitario que se
encuentra en la biblioteca
de hilos. - Hilos de nivel kernel: tiene la desventaja de
que el cambio de hilos requiere siempre la intervención
del kernel. No hay un código de administración de
hilos en el área de la aplicación, sino
simplemente una interface de una aplicación programada
(API) para el kernel. El kernel mantiene la información
del contexto del proceso entero y de cada uno de los procesos
hilos que se encuentran dentro del mismo. La ventaja que
presenta es que si uno de estos procesos hilos se encuentra en
estado bloqueado, el kernel puede ejecutar otro proceso hilo
del mismo padre.
Algunas características de los
threads
Los threads poseen las siguientes
características:
- Tienen un pequeño estado no
compartido - Un threads individual tiene su propio registro de
estado y generalmente su propio Stack - Los hilos pueden estar en uno de los siguientes
estados: listos, bloqueados, ejecutando o terminados. O sea,
igual que un proceso tradicional. Los hilos comparten CPU, por
lo que un solo hilo puede estar
ejecutándose. - Un hilo dentro de un proceso se ejecuta
secuencialmente. - Los hilos pueden crear hilos hijos.
- Un hilo puede leer o escribir sobre cualquier otra
pila de otro hilo. No se provee protección porque no es
necesaria, ya que solo un usuario puede tener una tarea
individual con múltiples hilos. - Una tarea no hace nada sin hilos y un hilo debe estar
en una tarea - Un cambio de contexto en el hilo requiere un cambio
en el juego de
registros, pero el trabajo relacionado con manejo de memoria no
es necesario hacerlo. - Un hilo único a nivel usuario ejecutando un
System Call causará a la tarea entera esperar hasta que
el System Call sea devuelto.
CAPITULO 4.
CONCURRENCIA: EXCLUSIÓN MUTUA Y
SINCRONIZACIÓN. (*)
4.1. CONCEPTOS GENERALES
4.2. EXCLUSIÓN MUTUA: SOLUCIONES POR
SOFTWARE.
4.3. EXCLUSIÓN MUTUA: SOLUCIONES POR
HARDWARE.
4.4. SEMÁFOROS.
4.5. MONITORES.
4.6. PASO DE MENSAJES
CAPITULO 5: CONCURRENCIA.
INTERBLOQUEO (Deadlock) E INANICION (Starvation).
(*)
5.1. DEADLOCK
5.2. CONDICIONES DE COFFMAN
5.3. PREVENCIÓN DEL INTERBLOQUEO
5.4. PREDICCION DEL INTERBLOQUEO (AVOIDANCE)
5.5. DETECCIÓN DEL INTERBLOQUEO
CAPITULO 6:
GESTION DE MEMORIA. (*)
6.1. GESTION DE MEMORIA
6.2. OBJETIVOS DE LA ADMINISTRACIÓN DE
MEMORIA
6.3. CARGA DE PROGRAMAS EN MEMORIA
CAPITULO 7:
MEMORIA VIRTUAL. (*)
7.1. CONCEPTOS SOBRE MEMORIA VIRTUAL
7.2. PAGINACIÓN
7.3. SEGMENTACIÓN
7.4. SEGMENTOS PAGINADOS
7.5. SOFTWARE DEL SISTEMA OPERATIVO
7.6. TIEMPOS DE ACCESOS A MEMORIA
CAPITULO 8:
PLANIFICACIÓN DE MONOPROCESADORES
(*)
8.1. PLANIFICACIÓN A LARGO PLAZO
8.2. PLANIFICACIÓN A MEDIO PLAZO
8.3. PLANIFICACION A CORTO PLAZO
8.4. CRITERIOS PARA LA PLANIFICACION A CORTO
PLAZO
8.5. ALGORITMOS PARA LA PLANIFICACION A CORTO
PLAZO
CAPITULO 9. PARTE I:
PLANIFICACIÓN DE MULTIPROCESADORES
(*)
9.1.1. SISTEMAS MULTIPROCESADORES
9.1.2. GRANULARIDAD
9.1.3. PLANIFICACIÓN DE UN
MULTIPROCESADOR
9.1.4. PLANIFICACIÓN DE PROCESOS
9.1.5. PLANIFICACION DE HILOS
CAPITULO 9. PARTE II: PLANIFICACIÓN EN TIEMPO
REAL (*)
9.2.1. SISTEMAS DE TIEMPO REAL
9.2.2. PLANIFICACIÓN EN TIEMPO REAL
CAPITULO
10: GESTION DE E/S. PLANIFICACIÓN DE DISCOS.
(*)
10.1. DISPOSITIVOS DE E/S
10.2. CONTROLADORES DE E/S
10.3. OBJETIVOS EN EL DISEÑO DE E/S
10.4. TÉCNICAS PARA LA ORGANIZACIÓN DE LA
FUNCIÓN DE E/S
10.5. CANALES DE E/S
10.6. ESTRUCTURA LÓGICA DE LAS FUNCIONES DE
E/S
10.7. ALMACENAMIENTO INTERMEDIO DE E/S
10.8. ENTRADA / SALIDA A DISCO
10.9. TIPOS DE DISCOS
CAPITULO 11. PARTE I: GESTION DE
ARCHIVOS. (*)
11.1.1. SISTEMAS DE GESTION DE ARCHIVOS
11.1.2. FUNCIONES DEL FILE SYSTEM
11.1.3. ARQUITECTURA DE UN FILE SYSTEM
11.1.4. ORGANIZACIÓN Y ACCESO A
ARCHIVOS
11.1.5. OPERACIONES SOBRE UN ARCHIVO
11.1.6. DIRECTORIOS DE ARCHIVOS
11.1.7. COMPARTICIÓN DE ARCHIVOS
11.1.8. AGRUPACIÓN DE REGISTROS
11.1.9. CATALOGACION DE LOS ARCHIVOS EN EL
SOPORTE
11.1.10. GESTIÓN DEL ALMACENAMIENTO
SECUNDARIO
11.1.11. INTERCALADO DE DISCOS
CAPITULO 11. PARTE II:
FILE SYSTEM EN UNIX.
I-NODOS. (*)
11.2.1. SISTEMA DE ARCHIVOS EN LINUX
11.2.2. TIPOS DE ARCHIVOS
11.2.3. INODOS
11.2.4. ASIGNACIÓN DE ARCHIVOS
11.2.5. ESTRUCTURA FÍSICA DEL FILE
SYSTEM
11.2.6. RESIDENCIA DEL FILE SYSTEM
11.2.7. MONTAJE DE UN FILE SYSTEM
CAPITULO 12: REDES Y PROCESO
DISTRIBUIDO. (*)
12.1. REDES Y PROCESO DISTRIBUIDO
12.2. ARQUITECTURA DE COMUNICACIONES
12.3. PROCESO CLIENTE / SERVIDOR
12.4. PROCESO DISTRIBUIDO MEDIANTE ENVIO DE
MENSAJES
12.5. PROCESO DISTRIBUIDO MEDIANTE LLAMADAS A
PROCEDIMIENTOS REMOTOS
APENDICE 1:
JERARQUIAS DE MEMORIA (*)
APENDICE 2:
CONTROL DE PROCEDIMIENTOS (*)
APENDICE 3: GESTION DE MEMORIA. CARGA Y
MONTAJE. (*)
APENDICE 4: COMPARACION DE FILE SYSTEMS EN DISTINTOS
SISTEMAS OPERATIVOS (*)
APENDICE 5: WINDOWS
NT (*)
APENDICE 6: UNIX (*)
APENDICE 7: MVS (Multiple Virtual Storage)
(*)
(*)Para ver el
texto completo
seleccione la opción "Descargar" del menú
superior
Universidad Tecnológica
Nacional
Realizado entre marzo y mayo de 2005.
Enviado por: