REPÚBLICA BOLIVARIANA DE VENEZUELA UNIVERSIDAD BICENTENARIA DE ARAGUA VICERRECTORADO ACADÉMICO FACULTAD DE INGENIERÍA
CÁTEDRA: SISTEMAS OPERATIVOS
ANTOLOGÍA DEL NÚCLEO DEL SISTEMA OPERATIVO: ¿CÓMO ES SU PROCESO DE FUNCIONAMIENTO?
Facilitador: Autor: Ing. José Zapata. Gabriel Plaza
San Felix, junio, 2023.
ii INDICE Pág. INTRODUCCIÓN………………………………………………………………..1 UNIDAD 1: Sistema operativo………………………………………………..2 1.1.- ¿Qué es un Sistema Operativo? 2 1.2.- ¿Para qué sirve un Sistema Operativo? 3 1.3.- Componentes de un Sistema Operativo 3 1.4.- Funciones de un Sistema Operativo…………………………….4 1.5.- Características de un Sistema Operativo……………………… 4 1.6.- Ejemplos de sistemas operativos………………………………..4 Actividades de aprendizaje……………………………………………6 UNIDAD 2: Definición del núcleo del Sistema Operativo……………….7 2.1.- ¿Qué es el Kernel?................……………………………………8 2.2.- ¿Para qué sirve el Kernel?… .8 Actividades de aprendizaje.………………………………………....10 UNIDAD 3: Estados y transiciones de un proceso en un Sistema Operativo……………………………………………………………………….11 3.1.- ¿Qué es un proceso?............ 12 3.2.- Modelo de tres estados…… 12 3.3.- Modelo de cinco estados… 13 3.4 - Modelo de siete estados………………………………………...15 3.5.- Descripción de un proceso……………………………………...16 Actividades de aprendizaje.………………………………………....17 UNIDAD 4: El bloque de control y operaciones sobre procesos de un Sistema Operativo………………………………………………………..18 4.1.- Bloque de control 19 4.2.- Operaciones con procesos. 20 4.3.- Suspensión y reanudación 21
iii Pág. Actividades de aprendizaje.………………………………………....22 UNIDAD 5: Procesamiento de interrupciones en un Sistema Operativo……………………………………………………………………….23 5.1.- Concepto de Interrupciones 24 5.2.- Procesamiento.…..………………………………………………24 5.3.- Clases de procesamientos.……………………………………..25 5.3.1.- Interrupciones de hardware 25 5.3.2.- Excepciones……………………………………………...25 5.3.3.- Interrupciones por software 26 Actividades de aprendizaje.………………………………………....27 UNIDAD 6: Procesos concurrentes asíncronos (exclusión mutua, sección crítica, semáforos) en Sistemas Operativos………………….28 6.1.- Concurrencia.………………………………………………...…..29 6.2.- Semáforos 29 6.3.- Funcionamiento de los semáforos……………………………..30 6.4.- Monitores 30 6.5.- Sección Crítica 31 6.6.- El Problema de la Sección Crítica 31 6.7.- Solución a la Sección Crítica……………………………………32 Actividades de aprendizaje.………………………………………... 33 REFERENCIAS………………………………………………………………..34
INTRODUCCIÓN
Las computadoras son instrumentos que se fabricaron para manejar grandes volúmenes de información a alta velocidad y no tendría sentido su existencia, si su uso implicara excesivas dificultades para el usuario. Es por ello, que fueron creados los sistemas operativos, con la firme intención de que estos facilitaran una serie de comandos que permitieran hacer uso del hardware sin preocuparse de los detalles técnicos que puedan estar involucrados. En este sentido, se puede acotar que los sistemas operativos ayudan a administrar cada uno de los recursos de un computador, tales como la UCP, las memorias, los dispositivos de almacenamiento, los datos, entre otros.
Tomando en consideración lo antes mencionado, surge el interés que motiva realizar esta Antología Digital Multimedia, la cual tiene como propósito desarrollar los aspectos más representativos de Núcleo del Sistema Operativo. Para ello, se analizarán los siguientes tópicos: Definición de Núcleo del sistema operativo; estados y transiciones de un proceso en un Sistema Operativo; bloque de control y operaciones sobre procesos en un Sistema Operativo; procesamiento de interrupciones en un Sistema Operativo; procesos concurrentes asíncronos (exclusión mutua, sección crítica, semáforos) en un Sistema Operativo.
Es indispensable señalar, que la indagación sobre los tópicos correspondientes al tema en estudio fue recolectada de fuentes arbitradas, luego fue almacenada, posteriormente se efectuó un resumen de los tópicos correspondientes a la temática antes mencionada y un arqueo bibliográfico de los mismos Por último se seleccionó el paquete Office, cuya herramienta sirvió para diseñar esta producción multimedia de la Antología Digital.
U1
Sistema Operativo Sugerencia para abordar la lectura
Para un mayor entendimiento de este capítulo, se le recomienda al lector, leer de forma consiente y no tan apresura el tema, de igual manera puede generar un reporte crítico personal sobre la lectura, con la finalidad de consolidar conocimientos sobre la temática planteada.
Presentación de la Unidad
Este capítulo inicia con la definición de Sistema Operativo y para qué sirven. También describe sus componentes, sus funciones y sus características. Al final presenta diversos ejemplos de sistemas operativos.
2
Sistema Operativo
1.1.- ¿Qué es el sistema operativo?
El sistema operativo es el software que coordina y dirige todos los servicios y aplicaciones que utiliza el usuario en una computadora, por eso es el más importante y fundamental. Se trata de programas que permiten y regulan los aspectos más básicos del sistema.
Los sistemas operativos consisten en interfaces gráficas, entornos de escritorio o gestores de ventanas que brindan al usuario una representación gráfica de los procesos en marcha. También puede ser una línea de comandos, es decir, un conjunto de instrucciones ordenado según su prioridad y que funciona en base a órdenes introducidas por el usuario.
Las primeras versiones de las computadoras no tenían sistemas operativos. En la década de los sesenta los ordenadores usaban procesamientos por lotes y fue durante estos años cuando comenzaron a desarrollarse los sistemas operativos.
Si bien a partir de los ochenta ya habían comenzado a surgir algunos muy conocidos, a partir de los noventa estos programas comenzaron a ser más flexibles y fuertes. Uno de los grandes hitos fue el lanzamiento de Windows 95.
1.2.- ¿Para qué sirve un sistema operativo?
Los sistemas operativos permiten que otros programas puedan utilizarlos de apoyo para poder funcionar. Por eso, a partir del sistema utilizado pueden ser instalados ciertos programas y otros no.
Son parte esencial del funcionamiento de los sistemas informáticos y la pieza de software central en la cadena de procesos, ya que establecen las condiciones mínimas para que todo funcione: la administración de los recursos, el método de comunicación con el usuario y con otros sistemas, las aplicaciones adicionales.
1.3.- Componentes de un sistema operativo
El sistema operativo posee tres componentes esenciales o paquetes de software que permiten la interacción con el hardware:
3
Sistema de archivos:Es el registro de archivos donde adquieren una estructura arbórea.
Interpretación de comandos: Tienen como función comunicar las órdenes dadas por el usuario en un lenguaje que el hardware pueda interpretar (sin que aquel que dé las órdenes conozca dicho lenguaje).
Núcleo: Permite el funcionamiento en cuestiones básicas como la comunicación, entrada y salida de datos, gestión de procesos y la memoria, entre otros.
1.4.- Funciones de un sistema operativo
Gestionar la memoria de acceso aleatorio y ejecutar las aplicaciones, designando los recursos necesarios.
Administrar al CPU gracias a un algoritmo de programación
Direccionar las entradas y salidas de datos (a través de drivers) por medio de los periféricos de entrada o salida
Administrar la información para el buen funcionamiento de la PC.
Dirigir las autorizaciones de uso para los usuarios.
Administrar los archivos
1.5.- Características de un sistema operativo
Es el intermediario entre el usuario y el hardware.
Es necesario para el funcionamiento de todos los computadores, tabletas y teléfonos móviles.
Otorga seguridad y protege a los programas y archivos del ordenador.
Está diseñado para ser amigable con el usuario y fácil de usar.
Permite administrar de manera eficiente los recursos del computador.
La mayoría requiere del pago de una licencia para su uso.
Permite interactuar con varios dispositivos.
Es progresivo, ya que existen constantemente nuevas versiones que se actualizan y adaptan a las necesidades del usuario.
1.6.- Ejemplos de sistemas operativos
Microsoft Windows: Inicialmente se trató de un conjunto de distribuciones o entornos operativos gráficos, cuyo rol era brindar a otros sistemas operativos más antiguos como el MS-DOS una representación visual de soporte y de otras herramientas de software. Se publicó por primera vez en 1985 y desde entonces se ha actualizado a nuevas versiones.
MS-DOS: Se trata del Sistema Operativo de Disco de MicroSoft (siglas en inglés de MicroSoft Disk Operating System), uno de los
4
sistemas operativos más comunes para computadoras personales IBM durante la década de 1980 y mediados de los 90. Contaba con una serie de comandos internos y externos mostrados en una pantalla oscura de manera secuencial.
UNIX: Fue desarrollado en 1969 para ser portable, multitarea y multiusuario. Se trata realmente de una familia entera de SO similares, algunas de cuyas distribuciones se han ofrecido comercialmente y otros en formato libre, siempre a partir del núcleo llamado Linux.
MacOS: también conocido como OSX o Mac OSX. Basado en Unix y desarrollado y vendido en computadores Apple desde 2002, se trata de la competencia más acérrima del popular Windows.
Ubuntu: Este sistema operativo es libre y de código abierto, o sea, todo el mundo puede modificarlo sin violar derechos autorales.. Basado en GNU/Linux, Ubuntu se orienta hacia la facilidad de uso y la libertad total. La empresa británica que lo distribuye, Canonical, subsiste brindando servicio técnico.
Android: Esta basado en el núcleo Linux, opera en teléfonos celulares y tablets y otros artefactos dotados de pantalla táctil. Fue desarrollado por Android Inc. y posteriormente fue comprado por Google. Es tan popular que las ventas de sistemas informáticos Android superan a las de IOS (para teléfonos celulares Macintosh) y a las de Windows Phone (para teléfonos celulares MicroSoft).
REFERENCIA
Equipo Editorial Etecé. (2021). Sistema operativo: Concepto.de Disponible en: Https://concepto.de/sistema-operativo/. Consultado 2023, junio 10.
5
ACTIVIDADES DE APRENDIZAJE
¿Qué son Sistemas Operativos?
¿Para qué sirve un sistema operativo? Identificar los componentes de un Sistema Operativo.
¿Cuáles son las funciones de un Sistema Operativo?
Establecer las características de un Sistema Operativo. Determinar los tipos de Sistemas Operativos
6
U2
Definición del núcleo del Sistema Operativo Sugerencia para abordar la lectura
Para un mayor entendimiento de este capítulo, se le recomienda al lector, leer de forma consiente y no tan apresura el tema, de igual manera puede generar un reporte crítico personal sobre la lectura, con la finalidad de consolidar conocimientos sobre la temática planteada.
Presentación de la Unidad
Este capítulo inicia con la definición de un Kernel o núcleo de Sistema Operativo. Luego explica de manera precisa y concisa cuál es su uso.
7
Definición del núcleo del Sistema Operativo
2.1.- ¿Qué es el Kernel?
El Kernel o núcleo, es una parte fundamental del sistema operativo que se encarga de conceder el acceso al hardware de forma segura para todo el software que lo solicita, el Kernel es una pequeña e invisible parte del sistema operativo, pero la más importante, ya que sin esta no podría funcionar. Todos los sistemas operativos tienen un Kernel, incluso Windows 10, pero quizá el más famoso es el Kernel de Linux, que ahora además está integrado en Windows 10 con sus últimas actualizaciones.
Este núcleo de los sistemas operativos se ejecuta en modo privilegiado con acceso especial a los recursos del sistema para poder realizar las peticiones de acceso que le va pidiendo el software que lo necesita, además como los recursos no son ilimitados, también hace de árbitro a la hora de asignarlos, decidiendo el orden de las peticiones recibidas según la prioridad e importancia de estas. Una gestión muy importante y fundamental que en la mayoría de las ocasiones pasa desapercibida aun siendo un trabajo esencial para coordinar todo el hardware con el software.
El Kernel de Windows es privado y su código lo tienen a salvo en el que solamente Microsoft puede realizar modificaciones para mejorar sus próximas versiones de Windows 10, al igual pasa con el de macOS, basado en Unix pero con licencia privada se reserva al equipo de desarrollo encargado en Apple de realizar estas modificaciones, pero Linux tiene un Kernel público bajo licencia GPL v2 y su código (o la mayor parte) está disponible para poder descargarlo, examinarlo o incluso realizar aportes y modificaciones útiles para los demás usuarios.
2.2.- ¿Para qué sirve el Kernel?
El Kernel o núcleo de un sistema operativo sirve para administrar los recursos de hardware solicitados por los diferentes elementos de software y hacer de intermediario decidiendo a que y cuando se concede este acceso evitando así sobrecarga del sistema, recursos innecesarios y acceso a software malicioso al propio Kernel y llegar a poder controlar así todo el sistema. De este modo el Kernel sirve como elemento de seguridad teniendo que pasar por varias capas antes de poder tener acceso, además tiene que distribuir los recursos de manera eficiente y ordenada para que el Hardware trabaje junto al Software de la mejor manera posible.
8
Tiene también como trabajo conceder acceso a todos los periféricos que tengamos conectados e interactuar con el software que los solicite, aunque no sean los usuales con los que trabajamos. Por ejemplo si ocasionalmente conectamos un móvil para usarlo como webcam con DroidCam, este Kernel se encarga de conceder los permisos necesarios al software para gestionar y poder tener la imagen y el audio para poder usarla en algún software de videoconferencia o reuniones si por ejemplo teletrabajamos desde casa o cualquier otro lugar.
El Kernel es el encargado de hacer funcionar básicamente todo, tiene que ser capaz de arrancar, por ejemplo, un PC desde que lo encendemos hasta que vemos visible el escritorio, todo esto comunicándose con los elementos hardware que dispone el PC y que también son necesarios para hacerlo funcionar, una vez que tengamos el escritorio deberá ser capaz de hacer funcionar los programas que nosotros queramos abrir y hacerlos funcionar en nuestro PC.
REFERENCIA
Soto, J. (2020). ¿Qué es el Kernel y para qué sirve?: Geeknetic.es.
Disponible en: Https://www.geeknetic.es/Kernel/que-es-y-para-quesirve. Consultado 2023, junio 10.
9
ACTIVIDADES DE APRENDIZAJE
¿Qué es el Kernel o núcleo de un Sistema Operativo?
¿Cuál es la utilidad de un Kernel?
10
U3
Estados y transiciones de un proceso en un Sistema Operativo Sugerencia para abordar la lectura
Para un mayor entendimiento de este capítulo, se le recomienda al lector, leer de forma consiente y no tan apresura el tema, de igual manera puede generar un reporte crítico personal sobre la lectura, con la finalidad de consolidar conocimientos sobre la temática planteada.
Presentación de la Unidad
Este capítulo inicia definiendo ¿Qué es un proceso? También establece las diferencias entre un proceso y un programa. Además describe los diferentes estados de un proceso en un Sistema Operativo junto a las transiciones que estos conllevan en su aplicación.
11
Estados y transiciones de un proceso en un Sistema Operativo
3.1.- ¿Qué es un proceso?
Un proceso es una instancia de ejecución de un programa, caracterizado por su contador de programa, su palabra de estado, sus registros del procesador, su segmento de texto, pila y datos, etc. Es posible que un programa sea ejecutado por varios usuarios en un sistema multiusuario, por cada una de estas ejecuciones existirá un proceso, con su contador de programa, registros, etc
3.2.- Modelo de tres estados
Para poder manejar convenientemente una administración de procesador es necesario contar con un cierto juego de datos. Ese juego de datos será una tabla (BCP o en inglés PCB) en la cual se reflejará en qué estado se encuentra el proceso, por ejemplo, si está ejecutando o no. Los procesos, básicamente, se van a encontrar en este caso, en tres estados:
Ejecutando.
Listos para la ejecución.
Bloqueados por alguna razón.
Sobre la base de estos estados se construye lo que se denomina Diagrama de Transición de Estado (DTE). Estar en la cola de Listos significa que el único recurso que a ese proceso le está haciendo falta es el recurso procesador. Una vez seleccionado de esta cola pasa al estado de Ejecución. Se tiene una transición al estado de Bloqueados cada vez que el proceso pida algún recurso. Una vez que ese requerimiento ha sido satisfecho, el proceso pasará al estado de Listo porque ya no necesita otra cosa más que el recurso procesador. Para manejar esa cola de Listos se requiere de una tabla, y esa tabla debe tener una identificación de los
12
procesos (Ver figura). Como los listos pueden ser muchos, hará falta un puntero al primero de esa cola de listos, y posiblemente un enganche entre los siguientes en el mismo estado. Esta tabla contiene los Bloques de Control de Procesos. En este caso se agrupan los BCP en una Tabla de Bloques de Control de Procesos (TBCP).
3.3.- Modelo de cinco estados.
El modelo anterior de tres estados funcionaría bien con una cola FIFO y planificación por turno rotatorio para los procesos que no están en ejecución, si los procesos estuvieran siempre listos para ejecutar. Los procesos utilizan datos para operar con ellos, y puede suceder que no se encuentren listos, o que se deba esperar algún suceso antes de continuar, como una operación de Entrada/Salida. Es por esto que se necesita un estado donde los procesos permanezcan bloqueados esperando hasta que puedan proseguir. Se divide entonces al estado No ejecución en dos estados: Listo y Bloqueado. Se agregan además un estado Nuevo y otro Terminado.
Los cinco estados de este diagrama son los siguientes:
Ejecución: el proceso está actualmente en ejecución.
Listo: el proceso está listo para ser ejecutado, sólo está esperando que el planificador así lo disponga.
Bloqueado: el proceso no puede ejecutar hasta que no se produzca cierto suceso, como una operación de Entrada/Salida.
Nuevo: El proceso recién fue creado y todavía no fue admitido por el sistema operativo. En general los procesos que se encuentran en este estado todavía no fueron cargados en la memoria principal.
Terminado: El proceso fue expulsado del grupo de procesos ejecutables, ya sea porque terminó o por algún fallo, como un error de protección, aritmético, etc.
Los nuevos estados Nuevo y Terminado son útiles para la de procesos. En este modelo los estados Bloqueado y Listo tienen ambos una cola de
13
espera. Cuando un nuevo proceso es admitido por el sistema operativo, se sitúa en la cola de listos. A falta de un esquema de prioridades ésta puede ser una cola FIFO Los procesos suspendidos son mantenidos en una cola de bloqueados. Cuando se da un suceso se pasan a la cola de listos los procesos que esperaban por ese suceso. Si existe un esquema con diferentes niveles de prioridad de procesos es conveniente mantener varias colas de procesos listos, una para cada nivel de prioridad, lo que ayuda a determinar cuál es el proceso que más conviene ejecutar.
Durante su existencia un proceso pasa por una serie de estados discretos. Debido a ello se puede establecer una “Lista de Listos” para los procesos “listos” y una “Lista de Bloqueados” para los “bloqueados”. La “Lista de Listos” se mantiene en orden prioritario y la “Lista de Bloqueados” está desordenada, ya que los procesos se desbloquean en el orden en que tienen lugar los eventos que están esperando. Al admitirse un trabajo en el sistema se crea un proceso equivalente y es insertado en la última parte de la “Lista de Listos”. La asignación del CPU al primer proceso de la “Lista de Listos” se denomina “Despacho”, que es ejecutado por una entidad del Sistema Operativo llamada “Despachador”. El “Bloqueo” es la única transición de estado iniciada por el propio proceso del usuario, puesto que las otras transiciones son iniciadas por entidades ajenas al proceso.
Cuando el Sistema Operativo cambia la atención del CPU entre los procesos, utiliza las áreas de preservación del PCB para mantener la información que necesita para reiniciar el proceso cuando consiga de nuevo el CPU. Los sistemas que administran los procesos deben poder crear, destruir, suspender, reanudar, cambiar la prioridad, bloquear, despertar y despachar un proceso. La “creación” de un proceso significa:
Dar nombre al proceso.
Insertar un proceso en la lista del sistema de procesos conocidos.
Determinar la prioridad inicial del proceso.
Crear el bloque de control del proceso.
Asignar los recursos iniciales del proceso.
Un proceso puede “crear un nuevo proceso”, en cuyo caso el proceso creador se denomina “proceso padre” y el proceso creado “proceso hijo” y se obtiene una “estructura jerárquica de procesos”. La “destrucción” de un proceso implica:
14
Borrarlo del sistema.
Devolver sus recursos al sistema.
Purgarlo de todas las listas o tablas del sistema.
Borrar su bloque de control de procesos.
Los eventos que llevan a un proceso a cambiar de un estado a otro son:
Null --> New: El nuevo proceso es creado para ejecutar un programa.
New --> Ready: El S.O. realiza esta transición cuando está preparado para comenzar a ejecutarse.
Ready --> Running: El S.O. hace éste cambio de estado cuando es tiempo de elegir un nuevo proceso a ejecutar.
Running --> Exit: Este cambio de estado se produce cuando el proceso actualmente en ejecución es finalizado o abortado.
Running ---> Ready: Esta transición puede ocurrir cuando se ha alcanzado el límite máximo de tiempo de ejecución ininterrumpida (técnica encontrada comúnmente en los S.O. con multiprogramación) o cuando, al trabajar con distintos niveles de prioridad, un proceso es reemplazado por otro de mayor prioridad.
Running --> Blocked: Esto ocurre cuando un proceso solicita algo por lo que deba esperar. Este pedido es realizado, por lo general, en la forma de un system call (llamado de un programa en ejecución a un procedimiento que es parte del código del S.O.).
Blocked --> Ready: Este cambio tiene lugar al ocurrir el evento por el que estaba esperando un proceso.
Ready --> Exit: Esto ocurre cuando un proceso hijo es finalizado; ya sea por pedido del proceso padre o porque el padre en sí fue finalizado.
Blocked --> Exit: Idem ready > exit.
3.4.- Modelo de siete estados
Procesos suspendidos: Una de las razones para implementar el estado Bloqueado era poder hacer que los procesos se puedan mantener esperando algún suceso, por ejemplo una Entrada/Salida. Sin embargo, al ser mucho más lentas estas operaciones, puede suceder en nuestro modelo de cinco estados que todos los procesos en memoria estén esperando en el estado Bloqueado y que no haya más memoria disponible para nuevos procesos. Podría conseguirse más memoria, aunque es probable que esto sólo permita procesos más grandes y no necesariamente nuevos procesos. Además hay un costo asociado a la memoria y de cualquier forma es probable que se llegara al mismo estado con el tiempo. Otra solución es el intercambio. Este se lleva a cabo
15
moviendo una parte de un proceso o un proceso completo desde la memoria principal al disco, quedando en el estado Suspendido. Después del intercambio, se puede aceptar un nuevo proceso o traer a memoria un proceso suspendido anteriormente. El problema que se presenta ahora es que puede ser que si se decide traer a memoria un proceso que está en el estado Suspendido, el mismo todavía se encuentre bloqueado. Sólo convendría traerlo cuando ya está listo para ejecutar, esto implica que ya aconteció el suceso que estaba esperando cuando se bloqueó. Para tener esta diferenciación entre procesos suspendidos, ya sean listos como bloqueados, se utilizan cuatro estados: Listo, Bloqueado, Bloqueado y suspendido y Listo y suspendido.
3.5.- Descripción de un proceso
Como mínimo debe incluir un programa o conjunto de programas que sean ejecutados. Asociados a estos programas hay un conjunto de ubicaciones de datos para las variables locales y globales, y las constantes definidas. Así pues, un proceso constará, al menos, de la memoria suficiente para albergar los programas y los datos del proceso. Además, en la ejecución de un programa entra en juego normalmente una pila, que se utiliza para llevar la cuenta de las llamadas a procedimientos y de los parámetros que se pasan entre los procedimientos. Por último, asociado a cada proceso hay una serie de atributos que utiliza el sistema operativo para el control del proceso. Estos atributos se recogen en una estructura de datos que se conoce como bloque de control de proceso (Process Control Block, PCB) o descriptor de proceso. A esta colección de programa, datos, pila y atributos se le llama imagen o entornos del proceso.
REFERENCIA
González, D. (s.f.). Definición y controlde procesos: Umg.blogspot. com. Disponible en: Http://sistemasoperativosumg.blogspot.com/p/ definicion-y-control-de-procesos.html. Consultado 2023, junio 10.
16
ACTIVIDADES DE APRENDIZAJE
¿Qué es un proceso?
¿Cuáles son los modelos de estados de un proceso en un sistema operativo?
Nombre los eventos que llevan a un proceso a cambiar de un estado a otro.
¿Cuál es la manifestación física de un estado?
17
U4
El bloque de control y operaciones sobre procesos de un Sistema Operativo
Sugerencia para abordar la lectura
Para un mayor entendimiento de este capítulo, se le recomienda al lector, leer de forma consiente y no tan apresura el tema, de igual manera puede generar un reporte crítico personal sobre la lectura, con la finalidad de consolidar conocimientos sobre la temática planteada.
Presentación de la Unidad
Este capítulo trata sobre un aspecto muy importante de un Sistema Operativo. Estos son: los bloques de control y las operaciones sobre sus procesos.
18
El bloque de control y operaciones sobre procesos de un Sistema Operativo
4.1.- El bloque de control.
El bloque de control de proceso es la estructura de datos central y más importante de un sistema operativo. Cada bloque de control de proceso contiene toda la información de un proceso que necesita un sistema operativo para su control. Estos bloques son leídos y/o modificados por casi todos los módulos de un sistema operativo, incluyendo aquellos que tienen que ver con la Planificación, la asignación de recursos, el tratamiento de inte y el análisis y supervisión del rendimiento. Puede decirse que el conjunto de los bloques de control de procesos definen el estado del sistema operativo. El conjunto de todos los PCB’s se guarda en una estructura del sistema operativo llamada tabla de procesos, la cual se puede implementar como un vector o una lista enlazada.
La información de los PCB’s se agrupan en tres categorías:
Identificación del proceso: en casi todos los sistemas operativos se le asigna a cada proceso un identificador numérico único (ID). Este identificador nos servirá para localizarlo dentro de la tabla de procesos. Cuando se permite que los procesos creen otros procesos, se utilizan identificadores para señalar al padre y a los descendientes de cada proceso. Además de estos, un proceso también puede tener asignado un identificador de usuario que indica a quién pertenece el proceso (UID).
Información de estado del procesador: Está formada por el contenido de los registros del procesador. Por supuesto, mientras el 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. La naturaleza y número de registros involucrados depende del diseño del procesador. Normalmente, en el conjunto de registros se incluyen los registros visibles para el usuario, los registros de control y de estado (contador de programa y palabra de estado) y los punteros a pila.
Información de control del proceso: Esta es la información adicional necesaria para que el sistema operativo controle y coordine los diferentes procesos activos. Como, por ejemplo,
19
información de planificación y estado (estado del proceso, su prioridad, información de planificación, suceso), apuntadores (punteros) a estructuras de datos (los procesos que esperan en un semáforo), punteros a zonas de memoria del proceso, recursos controlados por el proceso (ficheros abiertos), etc.
Así pues, el PCB es la entidad que define un proceso en el sistema operativo. Dado que los PCB necesitan ser manejados con eficiencia por el sistema operativo, muchos ordenadores tienen un registro Hardware que siempre apunta hacia el PCB del proceso que se está ejecutando.
4.2.- Operaciones con procesos.
Los sistemas que administran procesos deben ser capaces de realizar ciertas operaciones sobre y con los procesos. Tales operaciones incluyen:
Crear y destruir un proceso.
Suspender y reanudar un proceso.
Cambiar la prioridad de un proceso.
Bloquear y "desbloquear" un proceso.
Planificar un proceso (asignarle la CPU).
Permitir que un proceso se comunique con otro (a esto se denomina comunicación entre procesos, y se estudiará en el tema de procesos concurrentes).
Crear un proceso implica muchas operaciones, tales como:
Buscarle un identificador.
Insertarlo en la tabla de procesos.
Determinar la prioridad inicial del proceso.
Crear el PCB.
Asignar los recursos iniciales al proceso.
Un proceso puede crear un nuevo proceso. Si lo hace, el proceso creador se denomina proceso padre, y el proceso creado, proceso hijo. Sólo se necesita un padre para crear un hijo. Tal creación origina una estructura jerárquica de procesos, en la cual cada hijo tiene sólo un padre, pero un padre puede tener muchos hijos.
Destruir un proceso implica eliminarlo del sistema. Se le borra de las tablas o listas del sistema, sus recursos se devuelven al sistema y su PCB se borra (el espacio de memoria ocupado por su PCB se devuelve al
20
espacio de memoria disponible). La destrucción de un proceso es más difícil cuando éste ha creado otros procesos. En algunos sistemas un proceso hijo se destruye automáticamente cuando su padre es destruido; en otros sistemas, los procesos creados son independientes de su padre y la destrucción de este último no tiene efecto sobre sus hijos.
Un proceso suspendido o bloqueado no puede proseguir sino hasta que lo reanuda otro proceso. La suspensión es una operación importante, y ha sido puesta en práctica de diferentes formas en diversos sistemas. La suspensión dura sólo periodos breves. Muchas veces, el sistema efectúa las suspensiones para eliminar temporalmente ciertos procesos, y así reducir la carga del sistema durante una situación de carga máxima. Cuando hay suspensiones largas se debe liberar los recursos del proceso. La decisión de liberar o no los recursos dependen mucho de la naturaleza de cada recurso. La memoria principal debe ser liberada de inmediato cuando se suspenda un proceso; una unidad de cinta puede ser retenida brevemente por un proceso suspendido, pero debe ser liberada si el proceso se suspende por un periodo largo o indefinido. Reanudar (o activar) un proceso implica reiniciarlo a partir del punto en el que se suspendió. Cambiar la prioridad de un proceso normalmente no implica más que modificar el valor de la prioridad en el PCB.
4.3.- Suspensión y reanudación.
Estas operaciones son importantes por diversas razones.
Si un sistema está funcionando mal, y es probable que falle, se puede suspender los procesos activos para reanudarlos cuando se haya corregido el problema.
Un usuario que desconfíe de los resultados parciales de un proceso puede suspenderlo (en lugar de abortarlo) hasta que verifique si el proceso funciona correctamente o no.
Algunos procesos se pueden suspender como respuesta a las fluctuaciones (bajas y altas) a corto plazo de la carga del sistema, y reanudarse cuando las cargas vuelvan a niveles normales.
REFERENCIA
Gonzalez, D. (s.f.). Definición y control de procesos: Umg.blogspot. com. Disponible en: Http://sistemasoperativosumg.blogspot.com/p/ definicion-y-control-de-procesos.html. Consultado 2023, junio 10.
21
ACTIVIDADES DE APRENDIZAJE
¿Qué es un bloque de control?
¿Cuáles son las categorías que se pueden utilizar para agrupar la información de los PCB´s?
¿Qué incluyen las operaciones en procesos?
¿Por qué es importante la suspensión y reanudación de un proceso?
22
U5 Sugerencia para abordar la lectura
Para un mayor entendimiento de este capítulo, se le recomienda al lector, leer de forma consiente y no tan apresura el tema, de igual manera puede generar un reporte crítico personal sobre la lectura, con la finalidad de consolidar conocimientos sobre la temática planteada.
27
Presentación delaUnidad
Este capítulo trata sobre los procesamientos de interrupciones en un Sistema Operativo En él se explica las clases de procesamientos y sus excepciones. También expone como se produce las interrupciones en el hardware y en el software.
28
Procesamiento de interrupciones en un Sistema Operativo
Concepto de Interrupciones
Una interrupción es una suspensión temporal de la ejecución de un proceso, para pasar a ejecutar una subrutina de servicio de interrupción, la cual, por lo general, no forma parte del programa, sino que pertenece al sistema operativo o al BIOS. Una vez finalizada dicha subrutina, se reanuda la ejecución del programa. La primera técnica que se empleó para esto fue el polling, que consistía en que el propio procesador se encargara de sondear los dispositivos periféricos cada cierto tiempo para averiguar si tenía pendiente alguna comunicación para él. Este método presentaba el inconveniente de ser muy ineficiente, ya que el procesador consumía constantemente tiempo y recursos en realizar estas instrucciones de sondeo.
El mecanismo de interrupciones fue la solución que permitió al procesador desentenderse de esta problemática, y delegar en el dispositivo periférico la responsabilidad de comunicarse con él cuando lo necesitara. El procesador, en este caso, no sondea a ningún dispositivo, sino que queda a la espera de que estos le avisen (le «interrumpan») cuando tengan algo que comunicarle (ya sea un evento, una transferencia de información, una condición de error, etc.).
Procesamiento.
Terminar la ejecución de la instrucción máquina en curso.
Salvar el valor del contador de programa, IP, en la pila, de manera que en la CPU, al terminar el proceso, pueda seguir ejecutando el programa a partir de la última instrucción.
La CPU salta a la dirección donde está almacenada la rutina de servicio de interrupción (Interrupt Service Routine, o abreviado ISR) y ejecuta esa rutina que tiene como objetivo atender al dispositivo que generó la interrupción.
Una vez que la rutina de la interrupción termina, el procesador restaura el estado que había guardado en la pila en el paso 2 y retorna al programa que se estaba usando anteriormente.
29
Clases de procesamientos.
Interrupciones de hardware.
Estas son asíncronas a la ejecución del procesador, se pueden producir en cualquier momento independientemente de lo que esté haciendo el CPU en ese momento. Las causas que las producen son externas al procesador y suelen estar ligadas con los distintos dispositivos de E/S.
Las interrupciones de hardware son aquellas interrupciones que se producen como resultado de, por lo general, una operación de E/S. No son producidas por ninguna instrucción de un programa sino por las señales que emiten los dispositivos periféricos para indicarle al procesador que necesitan ser atendidos.
Cuando el microprocesador accede a un periférico (disco duro, puerto de comunicación…), puede transcurrir algún tiempo antes de que los datos sean obtenidos o transmitidos. La solución más simple es esperar hasta recibir los datos o hasta que se haya efectuado la transmisión (polling), pero esta solución bloquea todos los programas en ejecución, y eso no puede admitirse en un sistema multitarea. En los sistemas modernos se prefiere un funcionamiento mediante interrupciones, ya que éstas permiten mejorar la productividad del procesador, de forma que puedan ordenar una operación de E/S y, en lugar de tener que realizar una espera activa, se puede dedicar a atender a otro proceso o aplicación hasta que el dispositivo esté de nuevo disponible, siendo dicho dispositivo el encargado de notificar al procesador mediante la línea de interrupción que ya está preparado para continuar/terminar la operación de E/S.
Excepciones.
Son aquellas que se producen de forma síncrona a la ejecución del procesador y por tanto podrían predecirse si se analiza con detenimiento la traza del programa que en ese momento estaba siendo ejecutado en el CPU. Normalmente son causadas al realizarse operaciones no permitidas tales como la división entre 0, el desbordamiento, el acceso a una posición de memoria no permitida, etc.
Las excepciones son un tipo de interrupción sincrónica típicamente causada por una condición de error en un programa, como por ejemplo una división entre 0 o un acceso inválido a memoria en un proceso de usuario. Normalmente genera un cambio de contexto a modo supervisor para que el sistema operativo atienda el error. Así pues, las excepciones son un mecanismo de protección que permite garantizar la integridad de los datos almacenados tanto en el espacio de usuario como en el espacio Kernel. Cuando el Sistema Operativo detecta una excepción intenta
30
solucionarla, pero en caso de no poder simplemente notificará la condición de error a la aplicación/usuario y abortará la misma.
Interrupciones por software.
Las interrupciones por software son aquellas generadas por un programa en ejecución. Para generarlas, existen distintas instrucciones en el código máquina que permiten al programador producir una interrupción, las cuales suelen tener nemotécnicos tales como INT (por ejemplo, en DOS se realiza la instrucción INT 0x21 y en Unix se utiliza INT 0x80 para hacer llamadas de sistema).
La interrupción por software, también denominadas llamadas al sistema, son aquellas generadas por un programa mientras este está ejecutándose. En general, actúan de la siguiente manera:
Un programa que se venía ejecutando luego de su instrucción I5, llama al Sistema Operativo, por ejemplo para leer un archivo de disco (cuando un programa necesita un dato exterior, se detiene y pasa a cumplir con las tareas de recoger ese dato).
A tal efecto, luego de I5 existe en el programa, la instrucción de código de máquina CD21, simbolizada INT 21 en Assembler, que realiza el requerimiento del paso 1. Puesto que no puede seguir le ejecución de la instrucción I6 y siguientes del programa hasta que no se haya leído el disco y esté en memoria principal dicho archivo, virtualmente el programa se ha interrumpido, siendo, además, que luego de INT 21, las instrucciones que se ejecutarán no serán del programa, sino del Sistema Operativo. Se detiene el programa y ordena en este caso mediante INT21 (interrupción predefinida) que recoge el dato solicitado, para poder seguir el programa que la ordenó).
La ejecución de INT 21 permite hallar la subrutina del Sistema Operativo.
Se ejecuta la subrutina del Sistema Operativo que prepara la lectura del disco.
Luego de ejecutarse la subrutina del Sistema Operativo, y una vez que se haya leído el disco y verificado que la lectura es correcta, el Sistema Operativo ordenará reanudar la ejecución del programa autointerrumpido en espera.
La ejecución del programa se reanuda.
REFERENCIA
Castellanos, L. (2014). Los Sistemas Operativos: Wordpress.com
Disponible en: Https://lcsistemasoperativos.wordpress.com/tag/ interrupciones/ Consultado 2023, junio 10
31
ACTIVIDADES DE APRENDIZAJE
¿Qué son interrupciones en un Sistema Operativo?
¿Qué son procesamientos en un Sistema operativo?
Nombre las clases de procesamiento en un Sistema Operativo.
¿En qué consiste la interrupción de un hardware?
¿Qué son excepciones en un procesamiento de un Sistema Operativo?
Explique cómo se produce las interrupciones por software.
32
U6
Procesos concurrentes asíncronos (exclusión mutua, sección crítica, semáforos) en un Sistema Operativo
Sugerencia para abordar la lectura
Para un mayor entendimiento de este capítulo, se le recomienda al lector, leer de forma consiente y no tan apresura el tema, de igual manera puede generar un reporte crítico personal sobre la lectura, con la finalidad de consolidar conocimientos sobre la temática planteada.
Presentación de la Unidad
Este capítulo trata sobre los procesos concurrentes asíncronos (exclusión mutua, sección crítica, semáforos) en un Sistema Operativo. En él se define que son concurrencias y se establece sus tres contextos. También se detalla sobre los semáforos y su funcionamiento dentro de los Sistemas Operativos. De igual manera, conceptualiza sobre los monitores y establece sus características básicas. Y por último expone que es una sección crítica, sus problemas y sus soluciones.
28
en un Sistema Operativo
6.1.- Concurrencia.
La concurrencia comprende un gran número de cuestiones de diseño, incluyendo la comunicación entre procesos, compartición y competencia por los recursos, sincronización de la ejecución de varios procesos y asignación del tiempo de procesador a los procesos. La concurrencia puede presentarse en tres contextos diferentes:
La multiprogramación: Se creó para permitir que el tiempo de procesador de la máquina fuese compartido dinámicamente entre varios trabajos o aplicaciones activas.
Aplicaciones estructuradas: Como ampliación de los principios del diseño modular y la programación estructurada, algunas aplicaciones pueden implementarse eficazmente como un conjunto de procesos concurrentes.
Estructura del sistema operativo: Las mismas ventajas de estructuración son aplicables a los programadores de sistemas y se ha comprobado que algunos sistemas operativos están implementados como un conjunto de procesos
6.2.-Semáforos.
Un semáforo es un objeto que es utilizado para sincronizar el acceso a un recurso compartido. Los semáforos son una herramienta básica, pero potente y flexible, para hacer cumplir la exclusión mutua y coordinar procesos. Sin embargo, puede resultar muy difícil construir un programa correcto por medio de semáforos. La dificultad está en que las operaciones wait y signal deben distribuirse por todo el programa y no es fácil advertir el efecto global de estas operaciones sobre los semáforos a los que afectan. En los semáforos, tanto la exclusión mutua como la sincronización son responsabilidades del programador. Los semáforos permiten limitar el número de procesadores que acceden concurrentemente a un recurso compartido, estableciendo un protocolo de adquisición (wait) y liberación (signal).
29
Procesos concurrentes asíncronos (exclusión mutua, sección crítica, semáforos)
6.3.-FuncionamientodelosSemáforos.
Para lograr el efecto deseado, se pueden contemplar los semáforos como variables que tienen un valor entero sobre el que se definen las tres operaciones siguientes:
Un semáforo puede inicializarse con un valor no negativo.
La operación wait decrementa el valor del semáforo. Si el valor se hace negativo, el proceso que ejecuta el wait se bloquea.
La operación signal incrementa el valor del semáforo. Si el valor no es positivo, se desbloquea a un proceso bloqueado por una operación wait. Aparte de estas tres operaciones, no hay forma de examinar o manipular los semáforos.
6.4.- Monitores.
Los monitores son estructuras de un lenguaje de programación que ofrecen una funcionalidad equivalente a la de los semáforos y que son más fáciles de controlar. Un módulo monitor encapsula la mutua exclusión de datos y procedimientos que pueden acceder a los datos protegidos. Los usuarios pueden hacer llamadas a estos procedimientos usando al monitor como una tabla de estado para determinar cuándo proceder y cuando suspender operaciones. Los monitores ofrecen mayor seguridad (reliability), robustez y escalabilidad; complementan al encapsulamiento de un objeto, sincronizando el acceso al mismo.
Las características básicas de un monitor son las siguientes:
Las variables de datos locales están solo accesibles para los procedimientos del monitor y no para procedimientos externos.
Un proceso entra en el monitor invocando a uno de sus procedimientos
Solo un proceso puede estar ejecutando en el monitor en un instante dado; cualquier otro proceso que haya invocado al monitor quedara suspendido mientras espera a que el monitor esté disponible.
Las dos primeras características recuerdan a las de los objetos del software orientado a objetos. En realidad, un sistema operativo o lenguaje de programación orientado a objetos puede implementar un monitor fácilmente como un objeto con características especiales. Si se cumple la norma de un proceso cada vez, el monitor puede ofrecer un servicio de
30
exclusión mutua. Las variables de datos del monitor pueden ser accedidas solo por un proceso cada vez. Así pues, una estructura de datos compartida puede protegerse situándola dentro de un monitor. Si los datos del monitor representan a algún recurso, el monitor ofrecerá un servicio en exclusión mutua en el acceso a este recurso.
Un monitor proporciona sincronización por medio de las variables de condición que se incluyen dentro del monitor y que son accesibles sólo desde dentro. Hay dos funciones para operar con las variables de condición: wait(c):
Suspende la ejecución del proceso llamado bajo la condición c. El monitor está ahora disponible para ser usado por otro proceso. signal(c)
Reanuda la ejecución de algún proceso suspendido después de un wait bajo la misma condición. Si hay varios procesos, elige uno de ellos; si no hay ninguno, no hace nada.
6.5.-SecciónCrítica.
La sección critica, en programación recurrente, es la porción de código de un programa de computador en la cual se accede a un recurso compartido (estructura de datos o dispositivo) que no debe ser accedido por más de un hilo en ejecución. La sección crítica termina en un tiempo determinado y el hilo, proceso o tarea sólo tendrá que esperar un período determinado de tiempo para entrar. Se necesita un mecanismo de sincronización en la entrada y salida de la sección crítica para asegurar la utilización en exclusiva del recurso. El acceso concurrente se controla teniendo cuidado de las variables que se modifican dentro y fuera de la sección crítica. La sección crítica se utiliza por lo general cuando un programa multihilo actualiza múltiples variables sin un hilo de ejecución separado que lleve los cambios conflictivos a esos datos.
6.6.-ElProblemadelaSecciónCrítica.
El problema de la sección crítica es uno de los problemas que con mayor frecuencia aparece cuando se ejecutan procesos concurrentes. La manera en cómo se implementan las secciones puede variar dependiendo de los diversos sistemas operativos. Sólo un proceso puede estar en una sección crítica a la vez. Los procesos concurrentes entran en conflicto cuando compiten por el uso del mismo recurso, es decir, quieren acceder
31
a un recurso al mismo tiempo. Y la ejecución de un proceso puede influir en el comportamiento de los procesos que compiten y el sistema operativo le asignará el recurso a uno de ellos y el otro tendrá que esperar. Por lo que el proceso que quede esperando, se retrasará, se bloqueara y en el peor de los casos nunca se terminará con éxitos.
6.7.-SoluciónalaSecciónCrítica.
Para resolver el problema de la sección crítica es vital utilizar algún mecanismo de sincronización que permita a los procesos cooperar entre ellos sin problemas. Este mecanismo protege el código de la sección crítica y su funcionamiento es el siguiente:
Cada proceso debe solicitar permiso para entrar en la sección crítica, mediante algún fragmento de código que se denomina de forma genérica entrada en la sección crítica.
Cuando un proceso sale de la sección crítica debe indicarlo mediante otro fragmento de código que se denomina salida de la sección crítica. Este fragmento permitirá que otros procesos entren a ejecutar el código de la sección crítica.
Cualquier solución que se utilice para resolver este problema debe cumplir los tres requisitos siguientes:
Exclusión mutua: Si un proceso está ejecutando código de la sección crítica, ningún otro proceso lo podrá hacer.
Progreso: Si ningún proceso está ejecutando dentro de la sección crítica, la decisión de qué proceso entra en la sección se hará sobre los procesos que desean entrar.
Espera acotada: Debe haber un límite en el número de veces que se permite que los demás procesos entrena ejecutar código de la sección crítica después de que un proceso haya efectuado una solicitud de entrada yantes de que se conceda la suya.
REFERENCIA
Rojas, K. et al. (2015). Coordinación y sincronización de procesos: Blogspot.com. Disponible en: Http://seccion7011.blogspot.com/p/ unidad-5.html Consultado 2023, Junio 10.
32
ACTIVIDADES DE APRENDIZAJE
¿Qué son las concurrencias en un Sistema Operativo?
Identificar los contextos en que se pueden presentar una concurrencia.
¿Qué son los semáforos en un Sistema operativo?
¿Cómo se logra el funcionamiento de un semáforo?
¿Qué son monitores y cuáles son sus características básicas?
¿Cómo un monitor proporciona sincronización?
¿Qué es la sección crítica en programación concurrente?
¿Cuáles son los requisitos que se deben cumplir para dar solución a la sección crítica?
33
REFERENCIAS
Castellano, L. (2014). Los Sistemas Operativos: Wordpress.com. Disponible en: Https://lcsistemasoperativos.wordpress.com/tag/ interrupciones/. Consultado 2023, Junio 10.
Equipo Editorial Etecé (2021). Sistema Operativo: Concepto.de. Disponible en: Https://concepto.de/sistema-operativo/. Consultado 2023, Junio 10.
González, D. (s.f.). Definición y control de procesos: Umg.blogs pot.com. Disponible en: Http://sistemasoperativosumg.blogspot.c om/p/definicion-y-control-de-procesos.html. Consultado 2023, Junio 10.
Rojas, K. et al. (2015). Coordinación y sincronización de procesos: Blogspot.com. Disponible en: Http://seccion7011.blogspot.com/p/ unidad-5.html. Consultado 2023, Junio 10.
Soto, J. (2020). ¿Qué es el Kernel y para qué sirve?: Geeknetic.es. Disponible en: Https://www.geeknetic.es/Kernel/que-es-y-para-quesirve. Consultado 2023,Junio 10
34