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:
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:
1.4. Ejecución de instrucciones
Un ciclo para la ejecución de instrucciones posee cuatro etapas:
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:
...... .......
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:
O sea, el valor que está en 940 se carga en AX. ( AX = 3 )
O sea, al valor de AX se le suma el que está en 941. ( AX = 5 )
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:
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):
1.6. Sistemas de transmisión de datos
Clasificación de las transferencias de datos
Operaciones en una transferencia de datos
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:
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:
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:
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:
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:
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:
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:
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:
2.2. DEFINICIONES PREVIAS
2.3. DEFINICION DE SISTEMA OPERATIVO
. 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:
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:
Características de los S.O. con tolerancia de fallas:
Características de los S.O. virtuales:
2.5. COMPONENTES DE UN SISTEMA OPERATIVO
Planificador de Trabajos (Job Scheduler) o Shell
Sus funciones principales son:
Existen dos tipos de Shell:
Núcleo o Kernel
Es un conjunto de códigos usados por todos los programas en el más bajo nivel. Está compuesto por:
Se encarga de:
Las características de sus funciones (del nivel cero de la estructura de un S.O.) son:
Administradores
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:
Máquina extendida (Interfase hombre – máquina)
Las funciones principales de la máquina extendida son:
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.:
Administración de recursos
Sus funciones principales son:
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:
2.7. REQUERIMIENTOS PARA EL DISEÑO DE UN SISTEMA OPERATIVO
. 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
2.8. ARQUITECTURA DE UN SISTEMA OPERATIVO
Estructura tradicional o monolítica
Estructura en estratos o jerárquica
Estructura cliente-servidor
Procedimiento del Message passing (Paso de mensajes)
Máquinas virtuales
2.9. SERVICIOS QUE BRINDA UN S.O.
2.10. PROGRAMAS RELACIONADOS CON EL SISTEMA OPERATIVO
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:
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:
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:
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:
3.3. MODELO DE PROCESOS CON CINCO ESTADOS
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:
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:
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:
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:
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:
. 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:
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 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.
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:
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:
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:
Algunas características de los threads
Los threads poseen las siguientes características:
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:
Trabajos relacionados
Ver mas trabajos de Sistemas Operativos |
|
Nota al lector: es posible que esta página no contenga todos los componentes del trabajo original (pies de página, avanzadas formulas matemáticas, esquemas o tablas complejas, etc.). Recuerde que para ver el trabajo en su versión original completa, puede descargarlo en formato DOC desde el menú superior.