Professional Documents
Culture Documents
Dijimos que un SO provee el ambiente para que los programas puedan ser ejecutados.
Como el SO es el único que puede realizar operaciones de E/S, el usuario debe pedir la
realización de las mismas al SO. Veremos qué servicios brinda el SO y cómo los realiza.
Sistemas Operativos - I.S.I. Servicios del Sistema Operativo - Página 1 Prof. Exp. Mario R. Iribas
usa. Qué bloques de memoria están libres.
* En multiprogramación, decidir el proceso que obtiene el control de la memoria, cuándo
y cómo.
* Asignar el recurso cuando los procesos lo solicitan, de acuerdo a una política
predeterminada.
* Recuperar el recurso cuando el proceso ya no lo necesita o ha abortado.
* Llevar control de los procesos y de su estado. Al programa se lo llama controlador de
tráfico.
2) Administrador de cpu:
* Decidir quién tendrá la oportunidad de utilizar la cpu; el planificador de trabajos
escoge uno y decide a quién se le permite entrar al sistema. En multiprogramación
decidir el proceso que obtiene la cpu, cuándo y cuánto: a este programa se lo llama
planeador de procesos.
* Asignar el recurso de proceso posicionando los registros necesarios de hardware; a
este programa a menudo se lo llama despachador.
* Recuperar el recurso cuando el proceso cede el uso del procesador, aborta si excede la
cantidad permisible de utilización.
3) Administrador de dispositivos (o de E/S):
* Mantener el control del recurso (dispositivo, canales y unidades de control)
típicamente se le llama el controlador de trafico de E/S.
* Decidir cuál es la forma eficiente de asignar el recurso. En caso de compartirse, decidir
quién lo recibe y cuanto recibirá; se lo llama planificador d E/S.
* Asignar el recurso y arrancar la operación de E/S.
* Recuperar el recurso. En la mayoría de los casos la E/S termina automáticamente.
4) Administrador de información (o de archivos).
* Mantener el control del recurso, su posición, estado, etc. A estas facilidades se llama
sistema de archivos.
* Decidir quién utiliza los recursos, imponer los procedimientos de protección y
proporcionar rutinas de acceso.
* Asignar el recurso, por ejemplo abrir archivo.
* Desasignar el recurso, por ejemplo cerrar archivo.
Sistemas Operativos - I.S.I. Servicios del Sistema Operativo - Página 2 Prof. Exp. Mario R. Iribas
2.2. PUNTO DE VISTA DEL USUARIO
Los servicios de SO se proveen de muchas formas. Dos métodos básicos de dar servicios
son las llamadas al sistema y los programas del sistema. Cada método tiene sus
ventajas.
2.2.1. Llamadas al Sistema:
El nivel fundamental de servicios se maneja a través del uso de llamadas al sistema. Estas
proveen una interfaz entre el programa del usuario y el SO. Estas generalmente están
disponibles como instrucciones en assembler y puede agruparse básicamente en 3
categorías: control de trabajos o procesos, manejo de archivos y dispositivos y
mantenimiento de información.
Control de trabajos y procesos
Un programa en ejecución necesita terminar normalmente (end) o anormalmente
(abort). Si el programa encuentra un error en sus entradas y debe terminar
anormalmente, puede ser necesario definir un nivel de error o gravedad. Errores más
severos, por ejemplo, pueden indicarse con un nivel mayor. Es común definir el fin de un
programa en forma normal como error de nivel cero. Un proceso o trabajo ejecutando un
programa puede requerir cargar y ejecutar otros programas. Para esto tenemos llamadas
al sistema especificas como ser create process o submit job.
Si creamos nuevos trabajos o procesos debemos controlar su ejecución.
Esto requiere la posibilidad de determinar atributos de un trabajo, prioridad, máximo
tiempo de ejecución permitido, etc. (get process attributes y set process attributes).
Podremos también terminarlos cuando ya no sean necesarios (terminate process).
Luego de crearlos podemos desear esperar su terminación por un cierto tiempo (wait
time) o por la ocurrencia de un cierto evento (wait event). Llamadas de este tipo lo
veremos al estudiar Procesos Concurrentes.
Otro conjunto de llamadas son útiles para la depuración de programas. Muchos sistemas
poseen llamadas para realizar un vuelco (dump) de memoria. Esto es útil en assembler.
Otros sistemas permiten visualizar cada instrucción a medida que se ejecuta (trace).
Manejo de archivos
Lo que primero necesitaremos son llamadas al sistema para crear y borrar archivos. Para
ello usaremos nombre del archivo y quizás algún atributo. Un vez creado el archivo se
debe abrir para su uso. Luego podremos leer, escribir o reposicionar. (ir al comienzo o
final del archivo). Finalmente debemos cerrar el archivo para indicar que no lo usaremos
más.
Necesitaremos el mismo conjunto de llamadas al sistema para directorios si estamos en
un sistema con estructura de directorios. Los atributos de directorio y archivos incluyen
nombre, tipo, códigos de protección, información de contabilidad, etc. Necesitamos
2 llamados para esto: get file attribute y set file attribute.
Manejo de dispositivos
Los archivos pueden tratarse como dispositivos virtuales o abstractos. Por lo tanto
muchas de las llamadas al sistema para archivos también son necesarias para el manejo de
dispositivos. Si existen varios usuarios en el sistema primero debemos pedir (request) el
dispositivo. Luego debemos liberar (release).
Una vez obtenido el dispositivo podremos leer, escribir o reposicionar, igual que en
manejo de archivos. Las similitudes entre archivos y dispositivos son tan grandes (en su
Sistemas Operativos - I.S.I. Servicios del Sistema Operativo - Página 3 Prof. Exp. Mario R. Iribas
tratamiento) que muchos SO mezclan ambos en una estructura archivos/dispositivos
combinada. En este caso, los dispositivos de E/S se identifican con nombres especiales.
Mantenimiento de información
Muchos SO poseen llamadas al solo efecto de transferir información entre programas de
usuario y el SO. Por ejemplo tendremos llamadas al sistema para obtener la información
de la hora y fecha.
* Process Control
o End, Abort
o Load, Execute
o Create Process, Terminate Process
o Get Process Attributes, Set Process Attributes
o Wait for Time
o Wait Event, Signal Event
* File Manipulation
o Create File, Delete File
o Open, Close
o Read, Write, Reposition
o Get File Attributes, Set File Attributes
* Device Manipulation
o Request Device, Release Device
o Read, Write, Reposition
o Get Device Attributes, Set Device Attributes
* Information Maintenance
o Get Time or Date, Set Time or Date
o Get System Data, Set System Data
o Get Process, File, or Device Attributes, Set Process, File, or Device Attributes
Sistemas Operativos - I.S.I. Servicios del Sistema Operativo - Página 4 Prof. Exp. Mario R. Iribas
X
Registro
X:parám. p/call
Sistemas Operativos - I.S.I. Servicios del Sistema Operativo - Página 5 Prof. Exp. Mario R. Iribas
* Manejo de archivos: estos programas crean, borran, copian, renombran,
imprimen, listan y generalmente manejan archivos y directorios
* Información de estados: simplemente preguntan al SO por fecha, hora, espacio en
disco disponible, número de usuarios, etc. Luego esta información es presentada en papel
o sobre pantalla.
* Modificación de archivos: se dispone de varios editores de textos para crear y
modificar archivos grabados en disco.
* Soporte de lenguajes de programación: Compiladores, ensambladores e intérpretes.
* Ejecución y carga de programas: una vez compilado y ensamblado un programa
debe cargarse en memoria para su ejecución. El sistema debe proveer de cargadores
absolutos y reubicables, link-editores y cargadores de overlays. También se necesitan
depuradores de lenguajes.
* Programas de aplicación: Programas que resuelven problemas particulares tales
como paquetes para graficación, análisis estadístico, bases de datos, etc. Quizás el
programa más importante de un SO es su INTERPRETE DE COMANDOS, que se
inicia en un sistema de tiempo compartido, al ingresar el usuario a la terminal. Los
comandos son los equivalentes a las tarjetas de control de un sistema batch.
A este programa se lo conoce con varios nombres de acuerdo al sistema: 1) Intérprete de
tarjetas de control; 2) Intérprete de líneas de comando (CLI); 3 Procesador de comandos
de consola (en CP/M) y 4) Shell (en Unix). Su función es muy simple: tome el próximo
comando y ejecútelo. Muchos de estos comandos manejan archivos: crear, borrar, listar,
imprimir, copiar, ejecutar, etc.
Existen 2 maneras de implementar estos comandos:
1) El programa CLI contiene el código para ejecutar estos comandos: ante un
comando, el programa salta a la dirección del mismo dentro del programa que toma los
parámetros necesarios y hace las llamadas al sistema para su ejecución. Aquí el número
de comandos determina la longitud del programa, y que cada comando requiere su
propio código.
2) Cada comando es un programa separadamente: En este caso el CLI no entiende el
comando directamente, sino que usa el nombre del comando para buscar un archivo con
ese nombre, lo carga en memoria y lo ejecuta. Así el comando BORRA PEPE, buscará
un archivo BORRAR, lo carga en memoria pasándole el parámetro PEPE. Aquí el CLI
propiamente dicho es bastante chico y el agregado de nuevos comandos es fácil de
implementar, pues es el agregado de nuevos archivos solamente. Pero como
contrapartida, el diseño del programa CLI es más complicado ya que debe existir un
mecanismo para pasar parámetros del CLI al programa que ejecuta el comando, lo que
en algunos casos puede acarrear problemas especialmente si ambos no se encuentran en
memoria simultáneamente.
Otro problema de esta solución es que la interpretación de parámetros la fija totalmente
el programador de los programas de comando, pudiendo surgir inconsistencia en el uso
de parámetros para los mismos usuarios, si los programas de comandos fueron escritos
por distintos programadores.
Lo que el usuario ve del SO es entonces sus programas de comandos y no la
llamadas al SO.
Sistemas Operativos - I.S.I. Servicios del Sistema Operativo - Página 6 Prof. Exp. Mario R. Iribas
2.3. EL PUNTO DE VISTA DEL SO
El usuario, entonces, ve del SO solo los programas de comandos, especialmente el CLI.
Desde el punto de vista opuesto, el diseñador del SO ve al mismo como un conjunto de
recursos físicos y dispositivos y debe convertirlos en disponibilidades lógicas para el
usuario. Veamos como se estructura un SO. El SO consiste en programas que son
manejados por EVENTOS. Si no hay programa para ejecutar ni dispositivos de E/S
sirviendo pedidos ni usuarios para responder, el SO no realiza ninguna acción: queda
esperando plácidamente que algo ocurra.
Los eventos casi siempre están producidos por interrupciones o traps. Por lo tanto un
SO está manejado por interrupciones. Esta naturaleza (manejo por interrupciones) del
SO define su estructura interna. Cuando ocurre una interrupción, el hardware transfiere
el control al SO. Primeramente, el SO salva los registros y el contador de programa;
luego determina el tipo de interrupción arribada, que puede ser:
* Una llamada al sistema
* Una interrupción de un dispositivo de E/S
* Un error de programa
Para cada tipo de interrupción, un segmento separado de código del SO determinará la
acción a tomar.
2.3.1. Llamadas al Sistema
Las llamadas se clasifican de acuerdo a su tipo. Cada una tiene su propio segmento de
código para implementarla. Podemos considerar los siguientes tipos:
* Terminación normal: si se realiza una llamada de terminación normal de un
programa, el SO debe transferir el control al CLI. Este lee el próximo comando y toma la
acción adecuada.
* Terminación anormal: Un programa que encuentre un error en su ejecución o en sus
datos de entrada y decide terminar anormalmente, puede necesitar un vuelco de memoria
y el envío de un mensaje de error. Luego se llama al CLI. En un sistema interactivo, el
CLI simplemente continúa ejecutando el próximo comando. En un sistema batch, el SO
termina el trabajo totalmente y continúa con el próximo.
* Pedidos de estado: Este tipo de llamadas simplemente preguntan al SO por
determinada información: fecha, atributos de archivos, estados de recursos. Se computa
esa información solicitada y continua la ejecución del programa.
* Pedido de recursos: Un programa en ejecución puede necesitar un recurso para poder
continuar, por ejemplo más memoria, cinta, acceso a archivos, etc. Si los recursos están
disponibles, el SO los otorga y el control vuelve al usuario; de lo contrario el programa
debe esperar hasta que logre los recursos necesarios.
* Pedidos de E/S: El mayor número de pedidos serán de este tipo, ya que la mayoría de
los programas requerirán lectura o grabación de archivos durante s ejecución.
2.3.2. Interrupciones de E/S
Es una categoría importante de interrupciones que un SO debe manejar. Un dispositivo
de E/S produce una interrupción cuando ha terminado un pedido de E/S.
Esto se produce, en general, como consecuencia del pedido de E/S de un usuario (vía
una llamada al sistema). Una vez comenzada la operación de E/S existen cursos de
acción: en el caso más simple, se comienza un pedido de E/S y se espera la terminación
Sistemas Operativos - I.S.I. Servicios del Sistema Operativo - Página 7 Prof. Exp. Mario R. Iribas
antes de retornar el control al usuario; la otra posibilidad es devolver el control al usuario
antes de completada la operación de E/S. La espera de la terminación de una operación
de E/S puede realizarse a su vez de 2 formas: máquinas como la IBM 370 y PDP-11
poseen una instrucción especial WAIT, que para la cpu hasta la próxima interrupción.
Los equipos que no poseen esta instrucción entrarán en un loop de espera por programa,
que continuará hasta que llegue la interrupción, transfiriendo control a otra parte del SO.
La primera solución parece mejor pues evita trabajo inútil de cpu, acceso a memoria, etc.
Una ventaja de esperar la terminación de la operación de E/S es que siempre tendrá solo
una operación de E/S ejecutándose al mismo tiempo y así cuando llega la interrupción el
SO ya conoce de qué dispositivo proviene. Sin embargo esta solución limita severamente
la cantidad de operaciones simultánea de E/S que pueden realizarse
Una alternativa es retornar el control al usuario inmediatamente después del comienzo de
una operación de E/S. Necesitamos una nueva llamada al sistema para permitir al usuario
que espera por la terminación de la operación de E/S. También necesitamos saber todas
las operaciones de E/S que se están ejecutando simultáneamente. Para esto el SO tiene
una tabla con una entrada por cada dispositivo de E/S: la tabla de estado de dispositivos.
Device: Card RDR #1
Status: Idle Request for Line
Device: Line PRT #3 Printer
Status: Busy Address: 38546
Device: Disk Unit #1
Status: Idle
Device: Disk Unit #2
Status: Idle
Device: Disk Unit #3 Request for Disk Request for Disk
Status: Busy Unit #3 Unit #3
File: xxx File: yyy
Operation: Read Operation: Write
Address: 43046 Address: 03458
Sistemas Operativos - I.S.I. Servicios del Sistema Operativo - Página 8 Prof. Exp. Mario R. Iribas
Interrupción
Salvar Registros
¿Qué Clase?
Retorno
Wait
Retorno al Usuario
Sistemas Operativos - I.S.I. Servicios del Sistema Operativo - Página 9 Prof. Exp. Mario R. Iribas