1. Introducción
El presente curso , pretende hacer que aquellos que se interesen en el, adquieran los conocimientos básicos de la programación de sistemas operativos.
La explicacione y conceptos que voy a dar , aunque en algunos casos puedan ser demasiado técnicos , todo se relaciona en un entorno bastante comun para aquello que ya conozcan los ordenadores y su software.
Con toda la teoría que tiene este curso, pretendo conseguir que se aprendan todos los conocimientos de los entornos y profundidades de los sistemas operativos.
Se debe tener en cuenta que la intencion del curso es hacer de usted un experto en sistemas operativos y todo su
sistema de conexion y control con el hardaware y sus periféricos.
Es motivo por el cual debera tener en cuenta que en algunos de lo capítulos usaremos la electrónica y sus componentes para dar explicación del control de hardware a traves del software.
Espero que al terminar el curso sea usted lo que quiero conseguir desde ahora mismo, que sea un experto en sistemas
operativos, y que usted mismo vea los conocimientos que ahora tiene y los que tendrá al terminar el presente
curso.
Sin más, espero que le sea de utilidad en su vida profesional.
2. Conceptos Básicos
Que es
El ordenador en si , es una unidad programable que esta constituida por el microprocesador, las memorias, los discos duros, y demas tarjetas o periféricos que podemos ir añadiéndole.
En realidad el ordenador en sí no es nada, si no más que solamente integrados y circuitos que por si solos no son capaces de hacer nada.
Para poder hacer algo, necesitan lo que se llaman sistemas operativos, no programas que nosotros podramos hacer, contables, juegos, etc.. si no que todo el sistema que permite hacer esos programas.
Un sistema operativo es el encargado, nada mas arrancar el ordenador, de decirle al microprocesador que es lo que tiene que hacer y como hacerlo, y las órdenes que debe seguir a lo largo de un proceso de instrucciones.
Para hacerlo más fácil de comprender, el sistema operativo es el MS-DOS, el LINUX, WINDOWS 3.1 , WINDOWS 95 o 98 , OS 2 y otros que hay en el mercado.
Podemos decir que el sistema operativo es el que realiza la funcion de intermediario entre el usuario y el sistema de procesamiento de dicho ordenador.
Que hace y para que sirve
Un sistema operativo es el conjunto de instrucciones que conocemos con el nombre de software. El se encarga de ejecutar los programas que nosotros le facilitemos.
Aunque tambien cumple unas funciones muy determinadas y especificas, como el control de la disketera cuando nosotros introducimos un disket en ella, nosotros al decir DIR o ver la unidad, en realidad de modo interno y transparente se estan procesando complejas instrucciones que dan lugar a lo que nosotros vemos una vez terminado dicho proceso.
Asu vez el sistema operativo es el encargado de mantener unos minimos controles de seguridad para permitir que el ordenador tenga unas garantias de trabajo que le permite una minima seguridad frente a usos indevidos de los perifericos, ya sean por error o por hacerlo de modo que con ello se consiga hacer funcionar mal alguno de dichos perifericos y provocar su avería.
Dentro del sistema operativo el encargado de efectuar tal seguridad es el llamado sistema protegido.
Debemos tener en cuenta que el sistema operativo al ser el mediador entre el usuario y el ordenador en si, debe facilitarnos la tarea de modo que nos sea mas sencillo y comodo efectuar operaciones muy complejas o delicadas, con ello se consigue que no sea falta ser un experto para trabajar con un ordenador, esta es otra de las funciones que cumple un sistema operativo.
3. Clases de Sistemas
Sistemas multiprocesador
Como su nombre indica son aquellos sistemas operativos que están montados sobre ordenadores que están compuestos por más de un procesador, supongamo un Pc que en vez de tener un pentium, tuviera dos o más pentium conectados entre si dentro de la misma placa base, esto sería un sistema multiprocesador.
Sistemas monoprogramados
Estos sistemas solo nos permiten la ejecución de un programa a la vez, un ejemplo seria el Ms dos o el Windows 3.1.
Estos sistemas solo permiten que un programa este usando tanto el microprocesador como la memoria en un momento determinado, y otro programa no podrá usarlos hasta que el anterior termine lo que está haciendo.Normalmente estos sistemas son muy antiguos y hoy en día están en fuera de uso.
Sistemas Multitarea o Multiprogramados
Estos sistemas nos permiten la ejecución de varios programas a la vez, o eso es lo que pensamos, por que en realidad no es así, el procedimiento es el siguiente:
Cuando ejecutamos un programa, normalmente hay puntos en que el procesador no está siendo utilizado, por ejemplo cuando cargamos un juego, mientras se carga el juego, en realidad el microprocesador no hace nada, solo interviene la unidad de disco y el gestor de la memoria pero no el microprocesador, entonces en estos casos en vez de no hacer nada el microprocesador, el sistema operativo se encarga de en esos tiempos, llamemosles muertos o inactivos, hace que otro programa siga ejecutándose, dando así la apariencia de que se están ejecutando a la vez.
Tipos de multitareas son :
Apropiativa: En el cual el sistema le quita al procesador la ejecución determinada de un programa para dársela a otro programa.
Cooperativa:En donde es el propio programa el que determina cuando puede el sistema operativo hacer que otro programa ejerza las funciones, temporalmente , del microprocesador.
4. Ejecución de Programas
Los programas se ejecutan de varios modos, entre ellos tenemos:
Procesos por lotes o batch
Este sistema es el parecido al que tiene el MS dos para los archivos bat, y digo parecido por que se trata de que el sistema operativo, lo que hace en realidad es ejecutar una serie de instrucciones seguidas, una detras de otras, hasta terminar el proceso encomendado.
Las mayores pegas que pone este sistema es que mientras que se ejecuta es independiente , osea que no responde a los parametros que nosotros le metamos mientras se ejecuta, o dicho de otro modo, es sordo y además no deja de ser sordo hasta que termina, da igual el tiempo que tarde, hasta que no termine no hace caso de lo que le ordenemos.
En tiempo Real
Esta palabra, está siendo utilizada mucho últimamente, y no responde a otra cosa que a la ejecución de un programa conforme se lo estemos ordenando y al mismo tiempo está disponible a que en cualquier momento le demos instrucciones nuevas.
En multitarea
Este en realidad lo que permite es la ejecución, como explicamos en el capítulo anterior, de varios programas a la vez, permitiendo tambien que el usuario pueda introducir datos que se le pidan.
5. Estructura de un Sistema Operativo
Los servicios generales
Estos , aún siendo trasnparentes para el usuario, son en realidad muy importantes, pues de ellos dependen muchas de las funciones encargadas de:
- La Gestión de procesos
- La Gestión de Entradas y Salidas
- La Gestión de la memoria.
- La Gestión de los ficheros , tanto del disco duro como de disketes, cdrom, zip, etc..
- La Posible existencia de errores
- La protección del propio sistema operativo
- etc...
Es más que sabido que todas las operaciones que realizemos, siempre tienen acceso a alguno de los servicios del sistema operativo, y estos servicios, normalmente creados mediante rutinas de ensamblador o C, son transparentes para nosotros.
Dependiendo de la instrucción que se ejecute, deberemos activar al peticionario el modo normal o el modo privilegiado, este último también llamado modo protegido.
El intérprete de comandos
Este lo conocemos todos, pues alguna vez hemos escribido Dir, o autoexec.bat, pues bien , desde donde se escribe eso, se le llama intéprete de comandos, y como es obvio es algo que tenemos que tener en mente a la hora de diseñar un sistema opertivo, pues debemos dotarlo de el, aun cuando creemos un sistema parecido a windows y creamos que nunca va a ser necesario.
Valores por defecto
Siempre debemos incluir los llamados valores mínimos, estos son en realidad inicializadores, pues algunas rutinas que creemos, necesitaran tener unos parámetros mínimos para poder iniciarse y empezar la carga, este es otro punto a tener en cuenta en el diseño, y que nunca debes olvidar pues es un motivo de muchos errores y alguno de ellos de muy díficil localización.
Inicio del sistema
Otro aspecto importante es el inicio o arranque.
Todos conocemos el config.sys y el autoexec.bat.
Estos son ficheros de inicio, osea, que son los que se encargan de especificar que programas, drives, sistemas, etc.. se deben cargar, y normalmente permiten que el propio usuario los pueda modificar. Esto último es algo que teneis que tener previsto, que el usuario los pueda modificar, y por lo tanto un sistema de guardar y proteger los archivos por si al tocarlos el usuario los pueda corromper o distorsionar y esto conllevaría a que la máquina al volver a arrancar o bien no lo hiciera, o lo hiciera mal.
Que debe prestar nuestro sistema operativo
Una vez vito lo anterior, nuestro sistema operativo debe como mínimo presentar los siguientes componentes:
- Que el interfaz con el usuario sea gráfico, nada de los sistemas antiguos, trabajar con iconos, dibujos, ventanas, etc...
- Que sea fácil y agradable al usuario, que es quien lo va a utilizar.
- Que sea dinámico , nada de esperar grandes tiempos en la ejecución de un comando.
- Cargar en memoria lo mínimo para poder arrancar aplicaciones, e ir cargando las librerias conforme las vayamos necesitando.
- Control total y potente de las interrupciones, tando de software como de hardware, en el siguiente capítulo se hace referencia a las interrupciones y sus usos.
- Potente y ferreo control del sistema y de llamadas erróneas, para evitar el cuelge del sistema .
- Control rápido de errores para desactivar aplicaciones que puedan producir errores de protección general y que pudieran dar consecuencias al punto anterior.
6. Evolucion de los Sistemas Operativos
Para hacernos una idea de como funcionan los sistemas operativos de modo general, antes de ver especificamente sus funciones.
Los sistemas operativos han ido evolucionando a lo largo de los años de igual manera que los ordenadores, debemos tener en cuenta que conform aumenta la tecnologia y lo que los ordenadores son capaces de hacer, al mismo tiempo para poder aprovechar todo el nuevo equipamiento del ordenador, se hace necesario que el sistema operativo aumente su rendimiento y por lo tanto debe evolucionar.
Es por esto por lo que los sistemas operativos siempre han estado ligado a la evolucion de los ordenadores.
Dentro de dicha evolucion de los sistemas operativos encontramos lo que se denomina como generacion, siendo progresiva y comprendiendo a:
1ª Generacion: Comprende los años desde 1945 al 1955 y en este periodo de tiempo no podemos decir que existieran sistemas operativos como se conocen, sino que el programador debia hacerse cada una de las rutinas que necesitara (lectura de memoria, proceso del microprocesador, lectura de datos, etc..).
2ª Generacion: Comprende los años desde 1955 al 1965 y en este periodo de tiempo aparece lo que se denomina proceso por lotes(batch) esto en realidad lo que hacia es que se podian poner una serie de instrucciones en memoria y el sistema iva ejecutando una tras otras instrucciones de forma automatica sin que fuera necesario que el programador diera la orden ¡QUE EXITO!.
3ª Generacion: Comprende los años desde 1965 al 1980 y en este periodo de tiempo fue donde se dio el gran salto, esto se debio a que la tecnologia avanzo mucho y produjeron los llamados circuitos integrados, con ellos los ordenadores pasaban de ser tan grandes como una salon de una casa a poco mas de una mesa de tamaño, con esto se hacerco mas el ordenador a la poblacion en general.
Tambien aparecio la multiprogramacion, esto lo que permitia es poner los programas en memoria e ir ejecutando uno tras otro en cada paso de tiempo, esto daba la sensacion de multitarea, osea que varios programas se ejecutan a la vez, aunque no sea asi.
4ª Generacion: Comprende los años desde 1980 hasta la actualidad y en este periodo de tiempo aparecen los sistemas operativos de red (windows(c) 3.11, 95, 98, NT y otros que dan nuevas oportunidades al maximo aprovechamiento del ordenador y su equipamiento.
7. Funciones de un Sistema operativo
El sistema operativo cumple una serie de funciones, y entre ellas estan:
La gestion de la memoria
Para que un programa se ejecute, los procesos de dicho programa se deben cargar en la memoria y como hemos mencionado antes el sistema operativo es el encargado de hacerlo todo incluso la gestion de carga en la memoria para ejecutar los procesos y de gestionar los datos que van entrando y saliendo de la memoria del ordenador (RAM: Random Acces Memory .Memoria de acceso aleatorio).
La gestion de Procesos
Hemos de tener en cuenta que en el ordenador se ejecutan los programas, y cada programa es divido en procesos que se cargan en memoria y se ejecutan uno tras otro. El sistema operativo es el encargado de hacerlo todo, la carga de los procesos en memoria y la ejecucion de dichos procesos, pues para que se ejecute un programa es necesario que el microprocesador ejecute los procesos de ese programa.
El microprocesador no hace las cosas por si solo, es el sistema operativo el que determina que proceso se debe ejecutar y cuanto tiempo debe estar ejecutandose, a todo esto se le denomina gestion de procesos.
La gestion de la memoria secundaria
Indistintamente de que hablemos de memoria principal o secundaria, el sistema necesita almacenar parte de los datos en los discos, el sistema operativo tambien se encarga de realizar todas las operaciones relacionadas con la gestion del disco, como la administracion del espacio libre, donde escribir dentro del disco, como escribir o borrar en el, etc..
La gestion de las entradas y salidas
El sistema operativo debe controlar las entradas y salidas de datos como son la impresora, comunicacion con el exterior, etc..
La gestion de los archivos
Es normal que tengamos que almacenar los datos en el disco, hemos de distinguir entre como se almacenan los datos en el disco, osea donde y que espacio ocupa y como esta grabado por que eso es gestion de disco, pero la gestion de archivos se encarga de la gestion de los nombres de los archivos y su lugar cuando se han grabado, comprobar que no se repitan, etc..
La gestion de la integridad
Hemos de tener en cuenta que cualquier programa puede aunque no sea deseable, hacer mencion a recursos, direcciones y otros accesos indebidos, si dichos accesos no son controlados, se produciria un error que daria como origen algo que no nos podriamos imaginar (reinicio del ordenador, bloqueo, etc..).
Para evitar todos estos problemas, los sistemas operativos tienen distintos niveles de seguridad:
* En la memoria: Hemos dicho que los programas se cargan en la memoria , pero imaginemos que un programa hace una escritura en una zona de memoria que es de otro programa, para evitar esto el sistema operativo realiza una gestion de la memoria entre los usuarios.
* El uso de la CPU: Los programas se dividen en procesos que se ejecutan en el microprocesador (CPU), pero y si varios procesos intentaran ejecutarse a la vez se produciria cualquier cosa, para ello el sistema operativo controla la ejecucion de los procesos, la duracion de cada uno de ellos y cuando deben entrar o salir de la ejecucion.
* El uso de las entradas y salidas (E/S) : En realidad no es que el sistema operativo controle la E/S aunque si lo haga cuando es necesario, lo que ocurre es que si hay un proceso ejecutandose en la cpu y va a imprimir en la impresora algo, el sistema operativo, bloquea el uso de la impresora hasta que el proceso no termine con ella para que no haya otro proceso enviando informacion a la impresora por que si fuera asi entonces provocaria un conflicto en la impresora, y al mismo tiempo saca del procesador el proceso que esta imprimiendo, por que sino los demas procesos tendrian que esperar a que el proceso terminara de imprimir para seguir con la cpu y entonces la cpu estaria bloqueada perdiendo tiempo inutilmente, por que el proceso consume la cpu cuando en realidad no hace nada con ella pues esta imprimiendo.
8. Estructura de un sistema operativo
Sistemas operativos monoliticos
Este tipo de sistemas operativos es de los mas antiguos, en realidad su creacion fue determinada para un trabajo muy concreto , como los cajeros automaticos, donde solo tienen que cumplir una determinada funcion siguiendo una serie de procesos ya predeterminados.
Pero debido al continuo avance de los ordenadores, estos sistemas operativos quedaban anticuados y en desuso, en realidad estos sistemas hoy en dia tienen un uso muy restringido y en desaparicion.
Sistemas operativos de capas o estratos
Se definen como de capas por que tienen jerarquias en su estructura.
La capa mas baja del sistema seria la 0 mientras la mas alta seria la que se determina por el programador. Un ejemplo claro es el MS-DOS , THE o el MULTICS.
Las capas se pueden definir y pueden ser muchas , un ejemplo seria:
Capa 0 : Hardware
Capa 1: Control de CPU
Capa 2: Control de Memoria
Capa 3: Contorl de E/S
Capa 4: Programas de Usuario
Esto conlleva, por asi decirlo, una seguridad, por que si ejecutamos un programa al que le es necesario hacer uso del Hardware, el programa no lo hace directamente sino que para ir a la capa 0 debe pasar antes por las demas capas, lo hace mas seguro pero tambien mas lento.
Sistemas operativos en maquinas virtuales
Cuando decimos maquinas virtuales, en realidad es un solo ordenador, pero en ese ordenador tenemos varios sistemas operativos, esto es para poder probar los sistemas operativos.
Podemos decir que podiamos elegir un ordenador para cada sistema operativo que vayamos a probar, pero para que nos hagamos una idea, un ordenador que se usa en los laboratorios de sistemas operativos , no es un ordenador como el que tenemos en casa, normalemente son ordenadores que suelen valer 3 o 4 millones de pesetas, el por que es bien sencillo, mientras que el ordenador que tenemos en casa, cuando lo compramos nos fijamos en que procesador tiene, un PENTIUM II 400 MHz, no veas lo rapido que ira, pues el ordenador de laboratorio puede tener aproximadamente hasta 10 o 20 pentium II a 400 Mhz simultaneamente interconectados dentro de la placa y del mismo ordenador, no muchos ordenadores juntos, hablamos de un solo ordenador con 10 o 20 microprocesadores, entonces vemos que si tenemos 10 o 15 sistemas operativos para probar, tendriamos que tener 10 o 15 ordenadores de ese tipo, no veas que paston.
¿ Por que comprar uno tan caro y no uno barato ? , esta pregunta es normal, pero imaginemos que somos MICROSOFT(c) y tenemos un sistema nuevo para comercializar, pero antes hemos de probarlo , que hacemos lo montamos en un pentium normalito a 400 o 500 Mhz y esperamos dos años a que termine de hacerle todo tipo de pruebas para encontrar y arreglar los errores o lo montamos en un ordenador de laboratorio y en 2 o 3 meses lo tenemos mas probado que el 10 años en un ordenador normal, ahora si se ve el por que ¿no?.
Estos ordenadores nos permiten tener varios sistemas operativos distintos y cada vez que lo arrancamos lo podemos hacer en uno u otro tipo de sistema operativo que tenga instalado.
Sistemas operativos Cliente-Servidor
Cuando hacemos referencia a estos sistemas no nos referimos a la redes.
Un sistema operativo cliente servidor en realidad lo que busca es separar cada una de las capas de que se componen el sistema operativo y ademas dejar el nucleo muy pequeño y alejado del resto de capas para que asi sea mas estable y seguro.
El motivo del nombre de cliente servidor es por que las capas son servicios mientras que los programas a ejecutar por el usuario son los clientes, si el programa necesita hacer una gestion de la memoria, lo que hace es pedir el servicio de gestion de memoria, por lo que el programa se convierte en cliente y el gestor de la memoria en servidor.
9. Modelos de Sistemas Operativos
Los sistemas operativos pueden ser clasificados de muy distintas formas, entre ellas:
* Segun la utilizacion de los recursos del ordenador.
Sistemas Monoprogramados
Sistemas Multiprogramador
Sistemas Multiprocesamiento.
* Segun la interactividad.
Procesamiento por lotes.
Tiempo compartido.
Tiempo real.
* Segun el numero de usuarios.
Monousuario.
Multiusuario.
* Segun el tipo de aplicaciones.
De proposito general.
De proposito especifico.
Clasificacion por uso de los recursos
Sistemas monoprogramados : Son los que solo permiten la ejecucion de un programa en el sistema, se instalan en la memoria y permanecen alli hasta que termine su ejecucion.
Sistemas multiprogramados: Son aquellos que se basan en las tecnicas de multiprogramacion, existen dos tipos:
* Multitarea apropiativa (preemptive): Se utiliza en sistemas operativos cuya gestion es quitar el control del microprocesador al programa que lo tiene.
* Multitarea cooperativa: El programa tiene el control del microprocesador, el sistema operativo no puede decidir quien usa el microprocesador.
Sistemas de multiprocesamiento: Formado por varios microprocesadores.
Segun la interactividad
Depende del tipo de trabajo y los objetivos que debe cumplir cada sistema para dar el mejor servicio al usuario, se clasifican en:
Procesamiento por lotes (batch): Cada programa realiza un conjunto de pasos secuenciales relacionados entre si.
Proceso: Identifica a cada paso de trabajo.La multiprogramacion bajo lotes debe cumplir una serie de objetivos:
No existe intervencion del usuario en la ejecucion
Procesamiento de trabajos largos
No existe restricciones de tiempo en los procesos
Tiempo compartido: En este tipo de sistema, el control lo tiene el usuario registrando su entrada y obteniendo todo el tiempo la CPU hasta que sale del sistema y entra otro usuario, pero para permitir que otro usuario pueda hacer uso tambien de la CPU, el sistema operativo cada cierto tiempo atendera a cada usuario que tenga conectado, siendo asi de tiempo compartido.
Tiempo real: Este tipo de sistemas operativos se utilizan principalemente en el control de instalaciones industriales o donde se hace necesario en control en tiempo real de determinadas funciones o circunstancias, un ejemplo claro seria el control de la temperatura del agua de una bañera, la CPU deberia controlar en tiempo real la temperatura del agua para determinar si debe o no seguir subiendo la temperatura del agua o si esta demasiado caliente entonces bajar su temperatura, es por ello que debe ser de tiempo real.
Segun el numero de usuario
Segun la cantidad de usuarios que utilicen el sistema operativo, se clasifican en:
Monousuario: Son sistemas muy simples que solo aceptan la conexion de un usuario al mismo tiempo, dichos sistemas se pueden basar en tecnicas de monoprogramacion, pudiendo ser sistemas que facilitan al usuario la ejecucion de varios programas simultaneamente.
Multiusuario: Se basan siempre en la multiprogramacion, permiten varios usuarios a la vez conectados, normalmente el tiempo es compartido, aunque tambien se puede dar en un momento dado el tiempo real si las circunstacias lo necesitaran.
Segun el tipo de aplicacion que se ejecute
Segun este tipo pueden ser:
De proposito general: Cuando la instalcion puede ser de cualquier tipo (monousuario, multiusuario, tiempo compartido, tiempo real, etc..) siempre que no requiera procedimientos especiales para ejecutar determinados programas.Es tipo de instalaciones es tipica en donde se necesiten conectar un determinado numero de usuarios con necesidades comunes o concentradas y ejecutan un determinado programa.
De proposito especifico: Cuando tienen componentes especificos para ejecutar una determinada aplicacion, este tipo de sistemas operativos normalmente no suelen ser de difusion conocida y esta centrados en determinadas empresas o gobiernos dada la especialidad del programa a ejecutar y la dedicacion de todos los recursos del ordenador a dicho programa.
10. Los procesos
Que es un proceso
Todos los ordenadores modernos hacen varias cosas al mismo tiempo, a la vez que ejecutan un programa de usuario pueden leer un disco e imprimir en un terminal o impresora. En un sistema multiprogramación, la C.P.U. también alterna de programa en programa ejecutando cada uno de ellos, unos cuantos milisegundos aunque en un sentido extricto la C.P.U. ejecuta en un cierto instante un solo programa durante todo un segundo puede trabajar con varios de ellos, lo que nos da una apariencia de paralelismo.
Los diseñadores de S.O. han desarrollado con el tiempo por modelo que facilita el uso del paralelismo. El modelo proceso, el proceso en sí es el programa ejecutándose en un momento dado con unos datos y recursos concretos. En este modelo todo el software ejecutable del ordenador inclusive el S.O. se organiza en varios procesos, de manera conceptual cada proceso tendría su propia C.P.U. virtual, donde la verdadera y posible única C.P.U. alterna los procesos, esta rápida alternancia es lo que se llama multiprogramación.
Diferencia entre proceso y programa.
Es sutil, la idea clave es que un proceso es una actividad de cierto tiempo, para poder
existir los procesos y la gestión de dichos procesos vamos a tener en cuenta dos conceptos: Las interrupciones
y el cambio de contexto.
Interrupción sería la indicación al sistema de que hay otra actividad pendiente y cambio de
contexto, se tiene que estar ejecutando un programa y producir una interrupción, consiste en que el procesador
atiende una interrupción y decide en función de unos criterios preestablecidos cambiar de proceso.
Para reanudar el trabajo por donde nos hemos quedado hay que guardar la información de lo que se estaba
haciendo y liberar parte de la memoria para la nueva actividad, al hacer este cambio de contexto el procesador
deberá anotar todos los datos importantes que había antes de la interrupción para poder reanudar
más tarde la actividad.
Representación interna de los procesos
Cada proceso se encuentra representado en el S.O. mediante una estructura denominada "Bloque de Control de Procesos" o "PCB", que contiene toda la información que se necesita saber sobre el proceso entre otras cosas debe guardar el estado actual del proceso.
Identificación única del proceso
Prioridad del proceso, punteros para localizar la memoria que usa el proceso, área para preservar registros, punteros para asignar recursos. Cuando el S.O. realiza una conmutación entre procesos utiliza las áreas de preservación del PCB para guardar la información que se va a necesitar para reiniciar el proceso cuando consiga de nuevo la C.P.U.
Estados de un proceso.
Un proceso no va a estar siempre ejecutándose, en activo o ejecución las instrucciones se encuentran
ejecutándose: en listo está listo en la C.P.U., bloqueado o en espera, se espera a que ocurra un
asunto para conseguir su ejecución.
En el estado en ejecución solo puede haber un proceso, sin embargo, varios pueden estar listos o bloqueados.
Los procesos no pueden pasar por ellos mismos de listos a ejecución, es el S.O. el que decide cuando se
pasa de listo a ejecutado. Los procesos en listo se estructuran en una lista que se mantiene en orden prioritario
(planificación). Los procesos en espera o bloqueados se encuentran desordenados (en espera de que los recursos
estén disponibles).
Para garantizar el buen funcionamiento de la concurrencia aparente, el S.O. ajusta un reloj de interrupción
del hardware para limitar el tiempo de ejecución de un proceso a un intervalo que se va a llamar QUANTUM.
Si el proceso activo no abandona la C.P.U., porque se acabe o se bloquee, antes de que termine un QUANTUM, el reloj
genera una interrupción haciendo que el S.O. recupere el control.
Operaciones básicas con procesos
Lo mínimo que se puede hacer con un proceso es:
Crearlo, darle un nombre o identificador, meterlo en la lista de procesos listos, asignarle una prioridad,
crear el PCB y darle los recursos que necesite, etc..
Destruir un proceso, liberándose todos los recursos que tenía asignado el proceso. La prioridad
del proceso sería la prioridad en el PCB.
Cambiarle la prioridad al proceso, modificar la prioridad en el PCB.
Bloquear un proceso, pasar de estado activo a bloqueado debido a que tiene que esperar a que suceda un evento.
Activar un proceso, cuando termina un evento por el que está esperando un proceso y se encontrase
este bloqueado, entonces pasa este a listo.
Despachar un proceso, el procesador asigna el primer proceso que se encuentra en la lista de listos, pasando
éste de estado listo a activo.
Planificación de procesos
La planificación de procesos tiene como objetivos obtener siempre la mayor productividad,
o la mayor cantidad de trabajos realizados en una unidad de tiempo, por Ejemplo: 77 procesos por hora.
El concepto de planificación podría llamarse al conjunto de políticas y mecanismos incorporados
al sistema operativo por el que se rige el orden en el que se completa el trabajo que hay que realizar.
Con la planificación se pretende:
1. Justicia en el reparto de la CPU entre los diferentes usuarios.
2. Evitar la postergación indefinida de los procesos siempre dentro de la seguridad de las prioridades.
3. Logra la máxima capacidad de ejecución con el mayor número de usuarios interactivos.
4. Se busca el equilibrio del uso de los recursos y de la respuesta de utilización.
5. Se pretende poder discriminar procesos de tal manera que se permita dar mayor prioridad a aquellos procesos
que tengan asignados recursos claves.
Se puede planificar a tres niveles distintos
- A alto nivel o de trabajo. Determinar a que trabajos se les va a permitir competir activamente
por los recursos del sistema.
- A nivel intermedio. Discriminamos a qué procesos se les puede permitir competir por la C.P.U., siempre
intentando conseguir el mayor rendimiento del sistema.
- A bajo nivel. Determina a que proceso de los que están listos se le va a asignar la C.P.U. al quedar ésta
disponible.
Criterios de planificación
Los algoritmos de planificación deben tener en cuenta una serie de casos:
Utilización de la C.P.U., queremos que la C.P.U. se mantenga tan ocupada como sea posible.
Productividad, una medida del trabajo es el número de procesos que se completa por unidad de tiempo.
Tiempo de Retorno, sería la suma de los periodos transcurridos esperando entrar en la memoria, esperando
en la cola de procesos listos, ejecutándose en la C.P.U. y efectuando operaciones de E/S.
La cantidad de tiempo, que el proceso espera en la cola de procesos listos.
El tiempo de respuesta, el tiempo transcurrido desde la presentación de una solicitud hasta que se
produce la primera respuesta.
Siempre vamos a intentar maximizar la productividad (el tiempo de C.P.U.) y se intenta
minimizar el tiempo de retorno, de respuesta y el de espera.
Existen dos criterios en la planificacion de los procesos:
· Utilización de Prioridades.
· Utilización de QUANTUM de tiempo.
Las prioridades consisten en asignarle a cada proceso un cualificador que determine la atención que va
a recibir del sistema, las prioridades pueden ser asignadas directamente por el Sistema Operativo (serían
las internas) o por el usuario o Administrador (serían las externas). A su vez dentro de estas prioridades
pueden ser estáticas o dinámicas.
Estáticas.- Las que no cambian durante la ejecución del proceso. Siempre el proceso va a tener
la misma prioridad. Son fáciles de implementar y sobrecarga menos el sistema (el procesador no tiene que
dedicar tiempo a administrar prioridades).
Dinámicas.- Son las que responden a cambios, al proceso se le da una prioridad inicial que en principio
será de duración corta para después pasar a ajustarse a un mejor valor.
Utilización de un QUANTUM de tiempo.- Para evitar que un proceso monopolice el sistema, éste tiene
un reloj de interrupción o temporizador de intervalos para generar una interrupción, transcurrido
un tiempo denominado QUANTUM, con el objetivo de asignar la C.P.U. al proceso siguiente.
Los que no usan QUANTUM:
1º.- FIFO (First Input First Output).- Planificación por orden de llegada. El criterio de planificación
va a ser el orden de llegada, si un proceso viejo se queda bloqueado, automáticamente el siguiente pasa
a ejecutarse pero cuando se desbloquea pasa automáticamente otra vez a situarse el primero en la cola de
listos. Este algoritmo tiene bajo rendimiento al ser injusto, no se reparte equitativamente el procesador. Es una
disciplina no apropiativa (que automáticamente o voluntariamente es la única forma de liberar el
procesador).