SlideShare una empresa de Scribd logo
1 de 23
SISTEMAS OPERATIVOS
UNIDAD I: Definición y concepto.
El sistema operativo es el programa (o software) más importante de un ordenador. Para
que funcionen los otros programas, cada ordenador de uso general debe tener un sistema
operativo. Los sistemas operativos realizan tareas básicas, tales como reconocimiento de
la conexión del teclado, enviar la información a la pantalla, no perder de vista archivos
y directorios en el disco, y controlar los dispositivos periféricos tales como impresoras,
escáner, etc.
En sistemas grandes, el sistema operativo tiene incluso mayor responsabilidad y poder,
es como un policía de tráfico, se asegura de que los programas y usuarios que están
funcionando al mismo tiempo no interfieran entre ellos. El sistema operativo también es
responsable de la seguridad, asegurándose de que los usuarios no autorizados no tengan
acceso al sistema.
Se puede definir el sistema operativo como el software básico que permite al usuario
interactuar con el ordenador, administrando sus recursos, coordinando los sucesos y
proporcionando la ayuda y los servicios necesarios para la mayoría de los programas.
Todas las actividades que puede realizar el ordenador son dirigidas y coordinadas por el
sistema operativo; por ejemplo, facilita la comunicación entre los diferentes periféricos
que estén conectados a la unidad central. Como el sistema operativo es el que coordina
todos los elementos del sistema, es éste el primero que se carga en la memoria del
ordenador al ponerlo en funcionamiento, cargándose después todos los programas que
desee ejecutar el usuario.
El sistema operativo se encarga de dirigir los procesos cada vez que se ejecuta un
programa de usuario, por lo que funciona como intermediario entre el hardware del
sistema y el programa o software y, a la vez, como el vínculo entre el ordenador y el
usuario que lo utiliza. Es decir, el usuario no podrá interactuar con el ordenador ni
ejecutar ningún programa de aplicación si no existe un sistema operativo.
En la década de los setenta se produjeron grandes cambios en la programación de estos
sistemas, de manera que se rompieron las normas clásicas del proceso informático. A
partir de esta década, los sistemas operativos de Microsoft (Windows) y los de otras
empresas que aparecieron en el mercado han ido desarrollándose y mejorando. Como
ejemplo de sistemas operativos están: Pick, Prologue, Theos, Unix, Linux, Dos y
Windows.
El sistema operativo Windows se caracteriza por el uso de ventanas, y es multiusuario y
multitarea. Desde hace unos años, la popularización de los entornos gráficos en los
ordenadores ha sido el factor decisivo para la enorme difusión que han alcanzado.
Microsoft consiguió que su entorno operativo Windows 3 se convirtiese en el más
importante de los entornos gráficos de usuario, pero siguió trabajando en nuevas
versiones y surgió así Windows 95, que desbancó a DOS como sistema operativo por
excelencia, aunque puede ejecutar los programas escritos para DOS. Windows 98 surgió
como adaptación de Windows 95, con algunas mejoras. En el año 2000 apareció
Windows Millennium, con novedades respecto a versiones anteriores como cambios
estéticos, distinta ubicación de determinadas carpetas, nueva organización de la ayuda,
etc. También en el año 2000 apareció Windows 2000, en su versión cliente, o Windows
2000 Professional, como en su versión de servidor, o Windows 2000 Server. En el año
2001 apareció Windows XP, con numerosas novedades orientadas a multimedia,
Internet y redes. Por último, en el año 2003 apareció el último sistema operativo de
Windows, hasta la fecha, un sistema operativo de red denominado Windows Server
2003.
--------------------.-…………………………………………------
1.2Funciones y características.
El sistema operativo cumple varias funciones:
Administración del procesador: el sistema operativo administra la distribución
del procesador entre los distintos programas por medio de un algoritmo de
programación. El tipo de programador depende completamente del sistema
operativo, según el objetivo deseado.
Gestión de la memoria de acceso aleatorio: el sistema operativo se encarga de
gestionar el espacio de memoria asignado para cada aplicación y para cada
usuario, si resulta pertinente. Cuando la memoria física es insuficiente, el
sistema operativo puede crear una zona de memoria en el disco duro,
denominada "memoria virtual". La memoria virtual permite ejecutar
aplicaciones que requieren una memoria superior a la memoria RAM disponible
en el sistema. Sin embargo, esta memoria es mucho más lenta.
Gestión de entradas/salidas: el sistema operativo permite unificar y controlar
el acceso de los programas a los recursos materiales a través de los drivers
(también conocidos como administradores periféricos o de entrada/salida).
Gestión de ejecución de aplicaciones: el sistema operativo se encarga de que
las aplicaciones se ejecuten sin problemas asignándoles los recursos que éstas
necesitan para funcionar. Esto significa que si una aplicación no responde
correctamente puede "sucumbir".
Administración de autorizaciones: el sistema operativo se encarga de la
seguridad en relación con la ejecución de programas garantizando que los
recursos sean utilizados sólo por programas y usuarios que posean las
autorizaciones correspondientes.
Gestión de archivos: el sistema operativo gestiona la lectura y escritura en el
sistema de archivos, y las autorizaciones de acceso a archivos de aplicaciones y
usuarios.
Gestión de la información: el sistema operativo proporciona cierta cantidad de
indicadores que pueden utilizarse para diagnosticar el funcionamiento correcto
del equipo.
El sistema operativo tiene las siguientes características:
1. Conveniencia: un sistema operativo hace más conveniente el uso de una
computadora.
2. Eficiencia: el sistema operativo permite que los recursos de la computadora se
usen de manera correcta y eficiente.
3. Habilidad para evolucionar: un sistema operativo debe de ser capaz de aceptar
nuevas funciones sin que tenga problemas.
4. Encargado de administrar el hardware: el sistema operativo debe de ser
eficaz.
5. Relacionar dispositivos
………………………..-----------------------------------------------………………………….
1.3Evolución histórica.
Los primeros sistemas operativos fueron desarrollados por cada usuario para adecuar el
uso de su propia computadora central,[]
y es en 1956 que la General Motors desarrolla lo
que es hoy considerado el primer sistema, el GM-NAA I/O,[]
para su IBM 704.
La década de 1940
A finales de la década de 1940, con lo que se podría considerar la aparición de la
primera generación de computadoras, se accedía directamente a la consola de la
computadora desde la cual se actuaba sobre una serie de micro interruptores que
permitían introducir directamente el programa en la memoria de la computadora (en
realidad al existir tan pocas computadoras todos podrían considerarse prototipos y cada
constructor lo hacía sin seguir ningún criterio predeterminado). Por aquel entonces no
existían los sistemas operativos, y los programadores debían interactuar con el hardware
del computador sin ayuda externa. Esto hacía que el tiempo de preparación para realizar
una tarea fuera considerable. Además para poder utilizar la computadora debía hacerse
por turnos. Para ello, en muchas instalaciones, se rellenaba un formulario de reserva en
el que se indicaba el tiempo que el programador necesitaba para realizar su trabajo. En
aquel entonces las computadoras eran máquinas muy costosas lo que hacía que
estuvieran muy solicitadas y que sólo pudieran utilizarse en periodos breves de tiempo.
Todo se hacía en lenguaje de máquina.
La década de 1950
A principios de los años 50 con el objeto de facilitar la interacción entre persona y
computadora, los sistemas operativos hacen una aparición discreta y bastante simple,
con conceptos tales como el monitor residente, el proceso por lotes y el almacenamiento
temporal.
Monitor residente
Su funcionamiento era bastante simple, se limitaba a cargar los programas a memoria,
leyéndolos de una cinta o de tarjetas perforadas, y ejecutarlos. El problema era
encontrar una forma de optimizar el tiempo entre la retirada de un trabajo y el montaje
del siguiente.
Procesamiento por lotes
Como solución para optimizar, en una misma cinta o conjunto de tarjetas, se cargaban
varios programas, de forma que se ejecutaran uno a continuación de otro sin perder
apenas tiempo en la transición.
Almacenamiento temporal
Su objetivo era disminuir el tiempo de carga de los programas, haciendo simultánea la
carga del programa o la salida de datos con la ejecución de la siguiente tarea. Para ello
se utilizaban dos técnicas, el buffering y el spooling.
La década de 1960
En los años 60 se produjeron cambios notorios en varios campos de la informática, con
la aparición del circuito integrado la mayoría orientados a seguir incrementando el
potencial de los ordenadores. Para ello se utilizaban técnicas de lo más diversas.
Multiprogramación
En un sistema multi programado la memoria principal alberga a más de un programa de
usuario. La CPU ejecuta instrucciones de un programa, cuando el que se encuentra en
ejecución realiza una operación de E/S; en lugar de esperar a que termine la operación
de E/S, se pasa a ejecutar otro programa. Si éste realiza, a su vez, otra operación de E/S,
se mandan las órdenes oportunas al controlador, y pasa a ejecutarse otro. De esta forma
es posible, teniendo almacenado un conjunto adecuado de tareas en cada momento,
utilizar de manera óptima los recursos disponibles.
Tiempo compartido
En este punto tenemos un sistema que hace buen uso de la electrónica disponible, pero
adolece la falta de interactividad; para conseguirla debe convertirse en un sistema
multiusuario, en el cual existen varios usuarios con un terminal en línea, utilizando el
modo de operación de tiempo compartido. En estos sistemas los programas de los
distintos usuarios residen en memoria. Al realizar una operación de E/S los programas
ceden la CPU a otro programa, al igual que en la multiprogramación. Pero, a diferencia
de ésta, cuando un programa lleva cierto tiempo ejecutándose el sistema operativo lo
detiene para que se ejecute otra aplicación. []
Tiempo real
Estos sistemas se usan en entornos donde se deben aceptar y procesar en tiempos muy
breves un gran número de sucesos, en su mayoría externos al ordenador. Si el sistema
no respeta las restricciones de tiempo en las que las operaciones deben entregar su
resultado se dice que ha fallado. El tiempo de respuesta a su vez debe servir para
resolver el problema o hecho planteado. El procesamiento de archivos se hace de una
forma continua, pues se procesa el archivo antes de que entre el siguiente, sus primeros
usos fueron y siguen siendo en telecomunicaciones.
Multiprocesador
Diseño que no se encuentran en ordenadores monoprocesador. Estos problemas derivan
del hecho de que dos programas pueden ejecutarse simultáneamente y, potencialmente,
pueden interferirse entre sí. Concretamente, en lo que se refiere a las lecturas y
escrituras en memoria. Existen dos arquitecturas que resuelven estos problemas:
La arquitectura NUMA, donde cada procesador tiene acceso y control exclusivo a una
parte de la memoria. La arquitectura SMP, donde todos los procesadores comparten
toda la memoria. Esta última debe lidiar con el problema de la coherencia de caché.
Cada microprocesador cuenta con su propia memoria cache local. De manera que
cuando un microprocesador escribe en una dirección de memoria, lo hace únicamente
sobre su copia local en caché. Si otro microprocesador tiene almacenada la misma
dirección de memoria en su caché, resultará que trabaja con una copia obsoleta del dato
almacenado.
Para que un multiprocesador opere correctamente necesita un sistema operativo
especialmente diseñado para ello. La mayoría de los sistemas operativos actuales poseen
esta capacidad.
Sistemas operativos desarrollados
Además del Atlas Supervisor y el OS/360, los años 1970 marcaron el inicio de UNIX, a
mediados de los 60 aparece Multics, sistema operativo multiusuario - multitarea
desarrollado por los laboratorios Bell de AT&T y Unix, convirtiéndolo en uno de los
pocos SO escritos en un lenguaje de alto nivel. En el campo de la programación lógica
se dio a luz la primera implementación de Prolog, y en la revolucionaria orientación a
objetos, Smalltalk.
Inconvenientes de los Sistemas operativos
Se trataba de sistemas grandes, complejos y costosos, pues antes no se había construido
nada similar y muchos de los proyectos desarrollados terminaron con costos muy por
encima del presupuesto y mucho después de lo que se marcaba como fecha de
finalización. Además, aunque formaban una capa entre el hardware y el usuario, éste
debía conocer un complejo lenguaje de control para realizar sus trabajos. Otro de los
inconvenientes es el gran consumo de recursos que ocasionaban, debido a los grandes
espacios de memoria principal y secundaria ocupados, así como el tiempo de procesador
consumido. Es por esto que se intentó hacer hincapié en mejorar las técnicas ya
existentes de multiprogramación y tiempo compartido.
Características de los nuevos sistemas
Sistemas operativos desarrollados
MULTICS (Multiplexed Information and Computing Service): Originalmente
era un proyecto cooperativo liderado por Fernando Corbató del MIT, con
General Electric y los laboratorios Bell, que comenzó en los 60, pero los
laboratorios Bell abandonaron en 1969 para comenzar a crear el sistema UNIX.
Se desarrolló inicialmente para el mainframe GE-645, un sistema de 36 bits;
después fue soportado por la serie de máquinas Honeywell 6180.
Fue uno de los primeros. Además, los traducía a instrucciones de alto nivel destinadas a
BDOS.
BDOS (Basic Disk Operating System): Traductor de las instrucciones en
llamadas a la BIOS.
El hecho de que, años después, IBM eligiera para sus PC a MS-DOS supuso su mayor
fracaso, por lo que acabó desapareciendo.
La década de 1980
Con la creación de los circuitos LSI -integración a gran escala-, chips que contenían
miles de transistores en un centímetro cuadrado de silicio, empezó el auge de los
ordenadores personales. En éstos se dejó un poco de lado el rendimiento y se buscó más
que el sistema operativo fuera amigable, surgiendo menús, e interfaces gráficas. Esto
reducía la rapidez de las aplicaciones, pero se volvían más prácticos y simples para los
usuarios. En esta época, siguieron utilizándose lenguajes ya existentes, como Smalltalk
o C, y nacieron otros nuevos, de los cuales se podrían destacar: C++ y Eiffel dentro del
paradigma de la orientación a objetos, y Haskell y Miranda en el campo de la
programación declarativa. Un avance importante que se estableció a mediados de la
década de 1980 fue el desarrollo de redes de computadoras personales que corrían
sistemas operativos en red y sistemas operativos distribuidos. En esta escena, dos
sistemas operativos eran los mayoritarios: MS-DOS (Micro Soft Disk Operating
System), escrito por Microsoft para IBM PC y otras computadoras que utilizaban la
CPU Intel 8088 y sus sucesores, y UNIX, que dominaba en los ordenadores personales
que hacían uso del Motorola 68000.
Mac OS
El lanzamiento oficial del ordenador Macintosh en enero de 1984, al precio de US
$1,995 (después cambiado a $2,495 dólares)[1]. Incluía su sistema operativo Mac OS
cuya características novedosas era una GUI (Graphic User Interface), Multitareas y
Mouse. Provocó diferentes reacciones entre los usuarios acostumbrados a la línea de
comandos y algunos tachando el uso del Mouse como juguete.
MS-DOS
En 1981 Microsoft compró un sistema operativo llamado QDOS que, tras realizar unas
pocas modificaciones, se convirtió en la primera versión de MS-DOS (Micro Soft Disk
Operating System). A partir de aquí se sucedieron una serie de cambios hasta llegar a la
versión 7.1, versión 8 en Windows Milenium, a partir de la cual MS-DOS dejó de
existir como un componente del Sistema Operativo.
Microsoft Windows
A mediados de los años 80 se crea este sistema operativo, pero no es hasta la salida de
(Windows 95) que se le puede considerar un sistema operativo, solo era una interfaz
gráfica del (MS-DOS) en el cual se disponía de unos diskettes para correr los
programas. Hoy en día es el sistema operativo más difundido en el ámbito doméstico
aunque también hay versiones para servidores como Windows NT. (Microsoft) ha
diseñado también algunas versiones para superordenadores, pero sin mucho éxito. Años
después se hizo el (Windows 98) que era el más eficaz de esa época. Después se crearía
el sistema operativo de (Windows ME) (Windows Millenium Edition)
aproximadamente entre el año 1999 y el año 2000. Un año después se crearía el sistema
operativo de (Windows 2000) en ese mismo año. Después le seguiría el sistema
operativo más utilizado en la actualidad, (Windows XP) y otros sistemas operativos de
esta familia especializados en las empresas. Ahora el más reciente es (Windows 7)
(Windows Seven) que salió al mercado el 22 de octubre del 2009, dejando atrás al
(Windows Vista), que tuvo innumerables críticas durante el poco tiempo que duró en el
mercado.
La década de 1990
GNU/Linux
Este sistema al parecer es una versión mejorada de Unix, basado en el estándar POSIX,
un sistema que en principio trabajaba en modo comandos. Hoy en día dispone de
Ventanas, gracias a un servidor gráfico y a gestores de ventanas como KDE, GNOME
entre muchos. Recientemente GNU/Linux dispone de un aplicativo que convierte las
ventanas en un entorno 3D como por ejemplo Beryl o Compiz. Lo que permite utilizar
Linux de una forma visual atractiva.
Existen muchas distribuciones actuales de Gnu/Linux (Debian, Fedora, Ubuntu,
Slackware, etc.) donde todas ellas tienen en común que ocupan el mismo núcleo Linux.
Dentro de las cualidades de Gnu/Linux se puede caracterizar el hecho de que la
navegación a través de la web es sin riegos de ser afectada por virus, esto debido al
sistema de permisos implementado, el cual no deja correr ninguna aplicación sin los
permisos necesarios, permisos que son otorgados por el usuario. A todo esto se suma
que los virus que vienen en dispositivos desmontables tampoco afectan al sistema,
debido al mismo sistema de permisos.
ReactOS
ReactOS (React Operating System) es un sistema operativo de código abierto destinado
a lograr la compatibilidad binaria con aplicaciones de software y controladores de
dispositivos hechos para Microsoft Windows NT versiones 5.x en adelante (Windows
XP y sus sucesores).
En 1996 un grupo de programadores y desarrolladores de software libre comenzaron un
proyecto llamado FreeWin95 el cual consistía en implementar un clon de Windows 95.
El proyecto estuvo bajo discusión por el diseño del sistema ya habiendo desarrollado la
capa compatible con MS-DOS, pero lamentablemente esta fue una situación que no se
completó. Para 1997 el proyecto no había lanzado ninguna versión, por lo que los
miembros de éste, coordinados por Jason Filby, pudieron revivirlo. Se decidió cambiar
el núcleo del sistema compatible con MS-DOS y de ahora en adelante basarlo en uno
compatible con Windows NT y así el proyecto pudo seguir adelante con el nombre
actual de ReactOS, que comenzó en febrero de 1998, desarrollando las bases del kernel
y algunos drivers básicos.
…………………………..-------------------------------------------………….
1.4Clasificación.
Los sistemas operativos los podemos clasificar en:
• Sistemas operativos monotarea: Sólo pueden manejar un proceso, es decir , las
tareas deben ejecutarse una tras otra. Por ejemplo, el sistema DOS es monotarea,
al no poder ejecutar varias aplicaciones simultáneamente, aunque existieron varios
intentos de añadirle esta capacidad.
• Sistemas operativos multitarea:
La computadora puede procesar varias tareas al mismo tiempo. Podemos distinguir:
• Conmutación de contextos: Es un tipo simple de multitarea en el que
dos o más aplicaciones se cargan al mismo tiempo, pero sólo se procesa la que
se encuentra en primer plano, que es la que está utilizando el usuario. Cuando el
usuario cambia de aplicación , se produce un intercambio entre ambas tareas, pasando
la aplicación activa a segundo plano, efectuándose un almacenamiento del estado en el que
se encuentra. Por otro lado la aplicación que estaba en segundo plano pasa a reanudar
su procesamiento recuperando la situación en la que se había detenido.
• Multitarea cooperativa: Las tareas en segundo plano reciben tiempo de proceso
durante los tiempos muertos de la tarea que se encuentra en primer plano. Esto ocurre
cuando dicha aplicación espera información del usuario para poder continuar.
• Multitarea de tiempo compartido: Cada tarea recibe un tiempo de procesamiento
durante una fracción de segundo. Se puede establecer un orden de prioridades entre las tareas
o simplemente seguir un orden secuencial. Dado que el sentido temporal del usuario es
mucho más lento que la velocidad de procesamiento del ordenador , las operaciones de
multitarea en tiempo compartido parecen ser simultáneas. Todos los sistemas operativos
actuales (Linux, toda la familia Windows, Mac OS, OS/2 de IBM ) utilizan esta técnica.
En concreto, el sistema operativo Windows, y alguno de los mencionados anteriormente,
crean un entorno de ejecución propio e independiente para cada tarea, como si cada
aplicación corriese en una máquina independiente llamada máquina virtual. Cada una de
de estas máquinas virtuales posee sus correspondientes dispositivos virtuales, que
representan a cada uno de los recursos del ordenador (memoria, disco duro, impresora ).
Por ejemplo , cuando un programa ejecuta la instrucción de impresión , se realiza
sobre laimpresora virtual de su máquina virtual. Esta petición es recibida por el sistema operativo,
que está coordinando todos los dispositivos virtuales y lanza el comando sobre la
impresora real. Esto facilita enormemente la programación de aplicaciones, ya que se
realiza sobre dispositivos virtuales, siendo el sistema operativo el encargado final de realizar la
operación.
• Sistemas operativos monousuario: Sólo pueden atender a un único usuario, que es el
que haya iniciado sesión en el sistema. Esto ocurre en el sistema operativo DOS e incluso en el
actual Windows XP y sus predecesores.
• Sistemas operativos multiusuario:
Pueden atender simultáneamente las peticiones de dos o más usuarios, que comparten los
recursos del sistema informático al que se conectan.
Este tipo de sistemas se emplean especialmente en redes, ya que cada usuario necesita
de un terminal independiente para conectarse con el equipo que tiene instalado el sistema.
………………………------------------------------------……………
1.5Estructura: niveles o estratos de diseño.
El nucleo o kernel se divide en 5 capas o niveles:
Nivel 1. Gestion de Memoria:Proporciona las facilidades de bajo nivel para la gestion de
memoria secundaria necesaria para la ejecucion de procesos.
Nivel 2. Procesador: Se encarga de activar los cuantums de tiempo para cada uno de los
procesos, creando interrupciones de hardware cuando no son respetadas.
Nivel 3. Entrada/Salida: Proporciona las facilidades para poder utilizar los dispositivos de E/S
requeridos por los procesos.
Nivel 4. Informacion o Aplicacion o Interprete de Lenguajes: Facilita la comunicacion con
los lenguajes y el sistema operativo para aceptar las ordenes en cada una de las aplicaciones.
Ejecutando un programa el software de este nivel crea el ambiente de trabajo e invoca a los
procesos correspondientes.
Nivel 5. Control de Archivos: Proporciona la facilidad para el almacenamiento a largo plazo y
manipulacion de archivos con nombre, va asignando espacio y acceso de datos en memoria.
El nucleo o kernel realiza diferentes funciones tales como:
Manejo de interrupciones.
Creacion y destruccion de procesos.
Cambio de estado de los procesos.
Despacho
Suspension y reanudacion de procesos.
Sincronizacion de procesos.
Comunicacion entre procesos.
Manipulacion de los bloques de control de procesos.
Apoyo para las actividades de entrada/salida.
Apoyo para asignacion y liberacion de memoria.
Apoyo para el sistema de archivos.
Apoyo para el mecanismo de llamada y retorno de un procedimiento.
Apoyo para ciertas funciones de contabilidad del sistema.
El nucleo y los procesos
Una definicion mas especifica de lo que es el nucleo ( Kernel ) de un sistema operativo es: un
conjunto de rutinas cuya mision es la de gestionar el procesador, la memoria, la entrada/salida
y el resto de procesos disponibles en la instalacion. Toda esta gestion la realiza para atender al
funcionamiento y peticiones de los trabajos que se ejecutan en el sistema.
El esquema general de la gestion del procesador, es el siguiente:
Definicion y concepto de proceso.
El Bloque de Control de Proceso (PCB) como imagen donde el sistema operativo ve el
estado del proceso.
Estados por los que pasa un proceso a lo largo de su existencia en la computadora.
Operaciones que se pueden realizar sobre un proceso.
Clasificacion de los procesos segun su forma de ejecucion, de carga, etc.
Por proceso debe entenderse: un programa en ejecucion junto con el entorno asociado
(registros, variables ,etc.).
Publicado por NickDevol Hernandez en 09:17No hay comentarios:
Enviar por correo electrónicoEscribe un blogCompartir con TwitterCompartir con
Facebook
UNIDAD II: Concepto de proceso.
Un proceso puede informalmente entenderse como un programa en ejecución.
Formalmente un proceso es "Una unidad de actividad que se caracteriza por la ejecución
de una secuencia de instrucciones, un estado actual, y un conjunto de recursos del
sistema asociados".1
Para entender lo que es un proceso y la diferencia entre un programa y un proceso, A. S.
Tanenbaum propone la analogía "Un científico computacional con mente culinaria
hornea un pastel de cumpleaños para su hija; tiene la receta para un pastel de
cumpleaños y una cocina bien equipada con todos los ingredientes necesarios, harina,
huevo, azúcar, leche, etcétera." Situando cada parte de la analogía se puede decir que la
receta representa el programa (el algoritmo), el científico computacional es el
procesador y los ingredientes son las entradas del programa. El proceso es la actividad
que consiste en que el científico computacional vaya leyendo la receta, obteniendo los
ingredientes y horneando el pastel.
Cada proceso tiene su contador de programa, registros y variables, aislados de otros
procesos, incluso siendo el mismo programa en ejecución 2 veces. Cuándo este último
caso sucede, el sistema operativo usa la misma región de memoria de código, debido a
que dicho código no cambiará, a menos que se ejecute una versión distinta del
programa.
Los procesos son gestionados por el sistema operativo y están formados por:
Las instrucciones de un programa destinadas a ser ejecutadas por el
microprocesador.
Su estado de ejecución en un momento dado, esto es, los valores de los registros
de la unidad central de procesamiento para dicho programa.
Su memoria de trabajo (memoria crítica), es decir, la memoria que ha reservado
y sus contenidos.
Otra información que permite al sistema operativo su planificación.
Un proceso se rige en pequeñas porciones, conocidas como páginas, y cada proceso
tiene su propia tabla de paginación, fungiendo como una optimización del sistema
operativo ante los fallo de página.
Esta definición varía ligeramente en el caso de sistemas operativos multihilo, donde un
proceso consta de uno o más hilos, la memoria de trabajo (compartida por todos los
hilos) y la información de planificación. Cada hilo consta de instrucciones y estado de
ejecución.
Los procesos son creados y eliminados por el sistema operativo, así como también éste
se debe hacer cargo de la comunicación entre procesos, pero lo hace a petición de otros
procesos (interrupción o tiempo de reloj). El mecanismo por el cual un proceso crea otro
proceso se denomina bifurcación (fork). El proceso de arranque de GNU/Linux inicia
con un sólo proceso (init) y después comienza a crear los hilos necesarios para tener el
sistema listo para su uso. Los nuevos procesos pueden ser independientes y no
compartir el espacio de memoria con el proceso que los ha creado o ser creados en el
mismo espacio de memoria.
En los sistemas operativos multihilo es posible crear tanto hilos como procesos. La
diferencia estriba en que un proceso solamente puede crear hilos para sí mismo y en que
dichos hilos comparten toda la memoria reservada para el proceso.
Los procesos pueden ser cooperativos o independientes. Dos o más procesos pueden
cooperar mediante señales de forma que uno obliga a detenerse a los otros hasta que
reciban una señal para continuar.
Se usa una variable de tipo semáforo para sincronizar los procesos.
Si un proceso está esperando una señal, se suspende hasta que la señal se envíe.
Se mantiene una cola de procesos en espera en el semáforo.
La forma de elegir los procesos de la cola en espera es mediante una política
first in first out.
La sincronización explícita entre procesos es un caso particular del estado "bloqueado".
En este caso, el suceso que permite desbloquear un proceso no es una operación de
entrada/salida, sino una señal generada a propósito por el programador desde otro
proceso.
Hay cuatro eventos principales que provocan la creación de procesos:
El arranque del sistema.
La ejecución, desde un proceso, de una llamada al sistema para la creación de
otro proceso.
Una petición de usuario para crear un proceso.
El inicio de un trabajo por lotes.
Los procesos pueden contener uno o más hilos, haciendo más eficiente las tareas,
asimismo la complejidad de los algoritmos de sincronización, ya que podría ocurrir la
condición de carrera muy a menudo, inclusive los indeseados interbloqueos.
2.2 Estados y transiciones de los procesos
Como se indico anteriormente, el proceso es la unidad de procesamiento gestionada por el
sistema operativo. Para poder realizar este cometido, el proceso tiene asociado una serie de
elementos de informacion, que se resumen en la Figura 3.8, que se analizan seguidamente.
Estos elementos se organizan en tres grupos: estado del procesador, imagen de memoria y
tablas del sistema operativo.
Estado del procesador
El estado del procesador esta formado por el contenido de todos sus registros, que se
enumeran seguidamente:
Registros generales. De existir registros especificos de coma flotante tambien se
incluyen aqui.
Contador de programa.Informacion del proceso
Puntero de pila.
Registro o registros de estado.
Registros especiales. Como puede ser el RIED (registro identificador de
espacio de direccionamiento).
El estado del procesador de un proceso reside en los registros del procesador, cuando
el proceso esta en ejecucion, o en el bloque de control de proceso (BCP), cuando el
proceso no esta en ejecucion.
Cuando el proceso esta ejecutando, el estado del procesador varia de acuerdo al flujo
de instrucciones maquina ejecutado. En este caso, la copia del estado del procesador
que reside en el BCP no esta actualizada. Tengase en cuenta que los registros de la
maquina se utilizan para no tener que acceder a la informacion de memoria, dado que
es mucho mas lenta. Por tanto, no tiene sentido plantear que, en cada modificacion de
un registro, se actualice su valor en el BCP, puesto que esta en memoria.
Sin embargo, cuando se detiene la ejecucion de un proceso, como consecuencia de la
ejecucion de una interrupcion, es muy importante que el sistema operativo actualice la
copia del estado del procesador en su BCP. En terminos concretos, la rutina del
sistema operativo que trata las Interrupciones lo primero que ha de hacer es salvar el
estado del procesador en el BCP del proceso interrumpido.
2.3 Procesos ligeros: Hilos o hebras.
Un proceso ligero, o thread, es un programa en ejecucion (flujo de ejecucion) que
comparte la imagen de memoria y otras informaciones con otros procesos ligeros.
Como muestra la Figura , un proceso puede contener un solo flujo de ejecucion, como
ocurre en los procesos clasicos, o mas de un flujo de ejecucion (procesos ligeros).
Desde el punto de vista de la programacion, un proceso ligero se define como una
funcion cuya ejecucion se puede lanzar en paralelo con otras. El hilo de ejecucion
primario, o proceso ligero primario, corresponde a la funcion main.
Cada proceso ligero tiene informaciones que le son propias y que no comparte con
otros procesos ligeros. Las informaciones propias se refieren fundamentalmente al
contexto de ejecucion, pudiendose destacar las siguientes:
Contador de programa.
Pila.
Registros.
Estado del proceso ligero (ejecutando, listo o bloqueado).
Todos los procesos ligeros de un mismo proceso comparten la informacion del mismo.
En concreto, comparten:
Espacio de memoria.
Variables globales.
Archivos abiertos.
Procesos hijos.
Temporizadores.
Senales y semaforos.
Contabilidad.
Es importante destacar que todos los procesos ligeros de un mismo proceso comparten
el mismo espacio de direcciones de memoria, que incluye el codigo, los datos y las
pilas de los diferentes procesos ligeros. Esto hace que no exista proteccion de memoria
entre los procesos ligeros de un mismo proceso, algo que si ocurre con los procesos
convencionales.
El proceso ligero constituye la unidad ejecutable en Windows NT. La Figura representa
de forma esquematica la estructura de un proceso de Windows NT con sus procesos
ligeros.
2.4 Concurrencia y secuenciabilidad.
Los procesos son concurrentes si existen simultaneamente. Los procesos concurrentes pueden
funcionar en forma totalmente independiente unos de otros, o pueden ser asincronos, lo cual
significa que en ocasiones requieren cierta sincronizacion o cooperacion.
Cuando dos o mas procesos llegan al mismo tiempo a ejecutarse, se dice que se ha presentado
una concurrencia de procesos. Es importante mencionar que para que dos o mas procesos sean
concurrentes , es necesario que tengan alguna relacion entre ellos como puede ser la cooperacion
para un determinado trabajo o el uso de informacion o recursos compartidos, por ejemplo: en un
sistema de un procesador , la multiprogramacion es una condicion necesaria pero no suficiente
para que exista concurrencia, ya que los procesos pueden ejecutarse de forma totalmente
independiente.
Por otro lado en un sistema de varios procesos se puede presentar la concurrencia siempre y
cuando las actividades necesiten actuar entre si ya sea para utilizar informacion en comun o para
cualquier otra cosa.
Existen tres formas modelos de computadora en los que se puede pueden ejecutar procesos
concurrentes:
Multiprogramacion con un unico procesador.
En este modelo todos los procesos concurrentes ejecutan sobre un unico procesador. El sistema
operativo se encarga de ir repartiendo el tiempo del procesador entre los distintos procesos,
intercalando la ejecucion de los mismos para dar asi una apariencia de ejecucion simultanea.
Multiprocesador.
Un multiprocesador es una maquina formada por un conjunto de procesadores que comparten
memoria principal. En este tipo de arquitecturas, los procesos concurrentes no solo pueden
intercalar su ejecucion sino tambien superponerla. En este caso si existe una verdadera ejecucion
simultanea de procesos, al coincidir las fases de procesamiento de distintos procesos. En un
instante dado se pueden ejecutar de forma simultanea tantos procesos como procesadores haya.
Multicomputadora.
Una multicomputadora es una maquina de memoria distribuida, en contraposicion con el
multiprocesador que es de memoria compartida. Esta formada por una serie de computadoras
completas con su UCP, memoria principal y, en su caso, periferia. Cada uno de estos
procesadores completo se denomina nodo. Los nodos se encuentran conectados y se comunican
entre si a traves de una red de interconexion, empleando el metodo de paso de mensajes. En este
tipo de arquitecturas tambien es posible la ejecucion simultanea de los procesos sobre los
distintos procesadores.
En general la concurrencia sera aparente siempre que el numero de procesos sea mayor que el de
procesadores disponibles, es decir, cuando haya mas de un proceso por procesador. La
concurrencia sera real cuando haya un proceso por procesador.
2.5 Niveles, objetivos y criterios de planificación.
En epocas pasadas de los sistemas de procesamiento por lotes, con una entrada en forma de
imagenes de tarjetas en una cinta magnetica, el algoritmo de planificacion era sencillo: solo
habia que ejecutar el siguiente trabajo en la cinta.
En los sistemas de multiusuario de tiempo compartido, que se combinaban con un fondo de
trabajos procesados en lote, el algoritmo era mas complejo. En forma invariable, existian varios
usuarios en espera de servicio y podian existir tambien otros trabajos para ser procesados en lote.
Incluso en los sistemas puros de tiempo compartido existen con frecuencia los trabajos
colaterales, como el sistema de correo electronico, que a menudo se ejecuta todo el tiempo para
enviar o recibir correo o noticias.
Cuando mas de un proceso es ejecutable, el Sistema Operativo debe decidir cual de ellos debera
ejecutarse primero. Hay que tener una planificacion de los procesos que quieren ejecutarse en el
sistema.La planificacion es una funcion primordial del Sistema Operativo. La mayoria de los
recursos, si no es que todos, se planifican antes de que se utilicen. La asignacion de procesadores
fisicos a los procesos hace posible que estos realicen su trabajo, y tal asignacion es un problema
complejo manejado por el Sistema Operativo.
Concepto de Planificacion
La planificacion hace referencia a un conjunto de politicas y mecanismos incorporados al
sistema operativo que gobiernan el orden en que se ejecutan los trabajos que deben ser
cumplimentados por el sistema informatico.
Objetivo de la Planificacion
El objetivo principal de la planificacion es optimizar el rendimiento del sistema y proporcionar
un buen servicio a todos los procesos que se encuentren en el. En general, la planificacion trata
de cubrir los siguientes objetivos:
Justicia. La planificacion debe ser lo mas justa posible con todos los procesos, sin
favorecer a unos y perjudicar a otros.
Maxima capacidad de ejecucion. Debe dar un servicio eficiente para que todos los
trabajos se realicen lo mas rapidamente posible. Esto se puede lograr disminuyendo el
numero de cambios de proceso.
Maximo numero de usuarios interactivos. En los sistemas de tiempo compartido se
tratara de que puedan estar trabajando el mayor numero de usuarios al mismo tiempo.
Predecibilidad. La planificacion debe realizarse de tal forma que en todo momento
pueda saberse como sera su ejecucion.
Minimizacion de la sobrecarga. La computadora debe tener poca sobrecarga ya que esta
afecta directamente al rendimiento final del sistema: a menor sobrecarga mayor
velocidad de proceso.
Equilibrio en el uso de recursos. Para obtener un mayor rendimiento en el uso de los
recursos y que estos esten ocupados equitativamente el mayor tiempo posible.
Seguridad de las prioridades. Si un proceso tiene mayor prioridad que otro, este debe
ejecutarse mas rapidamente.
Evitar la postergacion indefinida. Esto se logra aumentando la prioridad de un proceso
mientras espere por un recurso. La prioridad llegara a ser tan alta que al proceso le sera
asignado el recurso que pidio.
Criterios de planificacion
Para realizar los objetivos de la planificacion, un mecanismo de planificacion debe considerar lo
siguiente:
La limitacion de un proceso a las operaciones de Entrada / Salida: cuando un proceso
consigue la cpu, ?la utiliza solo brevemente antes de generar una peticion de Entrada /
Salida?
La limitacion de un proceso a la cpu: cuando un proceso obtiene la cpu, ?tiende a usarla
hasta que expira su tiempo?
Si un proceso es por lote (batch) o interactivo: los usuarios interactivos deben recibir
inmediato servicio para garantizar buenos tiempos de respuesta.
?Que urgencia tiene una respuesta rapida?: por ejemplo, un proceso de tiempo real de
un sistema de control que supervise una refineria de combustible requiere una respuesta
rapida, mas rapida que la respuesta requerida por un proceso en lotes (batch) que debera
entregarse al dia siguiente.
La prioridad de un proceso: a mayor prioridad mejor tratamiento.
Frecuentemente un proceso genera fallos (carencias) de pagina:
o Probablemente los procesos que generan pocos fallos de pagina hayan
acumulado sus “conjuntos de trabajo” en el almacenamiento principal.
o Los procesos que experimentan gran cantidad de fallos de pagina aun no han
establecido sus conjuntos de trabajo.
o Un criterio indica favorecer a los procesos que han establecido sus conjuntos
de trabajo.
o Otro criterio indica favorecer a los procesos con una tasa alta de fallos de
pagina ya que rapidamente generaran una peticion de Entrada / Salida.
Frecuentemente un proceso ha sido apropiado por otro de mas alta prioridad, lo cual
significa lo siguiente:
o A menudo los procesos apropiados deben recibir un tratamiento menos
favorable.
o Cada vez que el Sistema Operativo asume la sobrecarga para hacer ejecutar
este proceso, el corto tiempo de ejecucion antes de la apropiacion no justifica
la sobrecarga de hacer ejecutar al proceso en primer lugar.
Cuanto tiempo de ejecucion real ha recibido el proceso?: un criterio considera que debe
ser favorecido un proceso que ha recibido muy poco tiempo de cpu.
Cuanto tiempo adicional va a necesitar el proceso para terminar?: los tiempos promedio de
espera pueden reducirse priorizando los procesos que requieren de un tiempo de ejecucion
minimo para su terminacion, pero pocas veces es posible conocer la cantidad de tiempo adicional
que cada proceso necesita para terminar.
2.6 Técnicas de administración del planificador.
Introducción
La cuestión de la planificación del procesador aborda el problema de decidir a
qué proceso de la cola de procesos preparados debe asignársele al procesador.
Existen distintos algoritmos de planificación del procesador, a continuación
analizaremos algunos de ellos.
Planificación FCFS
Este es el algoritmo más simple de planificación (First Come, First Served;
primero en llegar, primero servido). En este esquema se asigna el CPU al primer
proceso que lo solicite. La implementación de esta política se gestiona con una
cola FIFO (First In, First Out; primero en entrar, primero en salir). Cuando un
proceso entra en la cola de procesos preparados, su PCB se coloca al final de la
cola. Cuando el procesador queda libre, se le asigna al siguiente proceso de la
cola y al pasar a ejecutarse se elimina de la cola.
El tiempo medio de espera con el algoritmo FCFS es normalmente bastante
largo. Suponiendo que el siguiente conjunto de procesos llega en el instante 0,
estando la ráfaga de CPU especificada en milisegundos:
Si lo procesos llegan en el orden P1, P2, P3 y se sirven según el orden FCFS,
obtendremos el resultado.
El tiempo de espera es de 10 milisegundos para el proceso P1, de 24
milisegundos para el proceso P2 y de 27 milisegundos para P3. Por tanto el
tiempo medio de espera es de (0+24+27)/3 = 17 milisegundos. Sin embargo, si
los procesos llegan en el orden P2, P3, P1.
Ahora el tiempo de espera es de (6+0+3)/3 = 3 milisegundos. Esta reducción es
sustancial. Por tanto, el tiempo medio de espera con una política FCFS no es,
generalmente, mínimo y puede variar si la duración de las ráfagas del CPU de
los procesos es muy variable.
El algoritmo de planificación FCFS es cooperativo. Una vez que el CPU ha sido
asignado a un proceso, dicho proceso conserva el CPU hasta que lo libera, ya
sea por que termina su ejecución o por que realiza una petición de E/S. El
algoritmo FCFS resulta, especialmente problemático en los sistemas de tiempo
compartido, donde es importante que cada usuario obtenga una cuota del CPU a
intervalos regulares. Sería desastroso que un proceso mantuviera el CPU durante
un periodo largo de tiempo.
Planificación SJF
Shortest-job-First (Trabajo más corto Primero), este algoritmo asocia con cada
proceso la duración de la siguiente ráfaga de CPU del proceso. Cuando el CPU
esta disponible, se asigna al proceso que tiene la siguiente ráfaga de CPU más
corta. Cuando las siguientes ráfagas de CPU de dos procesos son iguales, se usa
la planificación FCFS para romper el empate. Un término más apropiado sería el
de “algoritmo de la siguiente ráfaga de CPU más corta”, ya que la planificación
depende de la duración de la siguiente ráfaga de CPU, en lugar de depender de la
duración total.
Como ejemplo de planificación SFJ, tenemos el siguiente conjunto de procesos,
estando especificada la duración de la ráfaga de CPU en milisegundos:
El tiempo de espera es de 3 milisegundos para el proceso P1, de 16 milisegundos
para el proceso P2, de 9 milisegundos para el proceso P3 y de 0 milisegundos
para el proceso P4. Por tanto, el tiempo medio de espera es de (3+16+9+0)/4 = 7
milisegundos. Por comparación, si estuviéramos usando el esquema de
planificación FCFS, el tiempo de espera seria de 10.25 milisegundos
El algoritmo de planificación SJF es probablemente óptimo, ya que proporciona
el tiempo medio de espera mínimo para un conjunto de procesos. Al anteponer
un proceso corto a uno largo disminuye el tiempo de espera del proceso corto en
mayor medida de lo que incrementa el tiempo de espera del proceso largo. Por
esto, el tiempo medio de espera disminuye.
La dificultad del algoritmo SJF es conocer la duración de la siguiente solicitud
de CPU. En una planificación a largo plazo en un sistema de procesamiento por
lotes, podemos usar una duración el límite del tiempo del proceso que el usuario
especifique en el momento de enviar el trabajo. La planificación SJF se usa
frecuentemente como mecanismo de planificación a largo plazo.
Aunque el algoritmo SJF es optimo, no se puede implementar en el nivel de
planificación del CPU a corto plazo, ya que no hay forma de conocer la duración
de la siguiente ráfaga de CPU. Un método consiste en intentar aproximar la
planificación SJF: podemos no conocer la duración de la siguiente ráfaga de
CPU, pero podemos predecir su valor, por el procedimiento de confiar en que la
siguiente ráfaga de CPU sea similar en duración a las anteriores. De esta manera,
calculando una aproximación de la duración de la siguiente ráfaga de CPU,
podemos tomar el proceso que tenga la ráfaga de CPU predicha más corta.
La siguiente ráfaga de CPU se predice como una media exponencial de las
duraciones medias anteriores. Sea tn la duración de la n-ésima ráfaga de CPU y
sea τn+1 el valor predicho rapa la siguiente ráfaga de CPU. Entonces, para α,
0≤α≤1, se define: τn+1 = αtn + (1 - α)tn
Esta fórmula define un promedio exponencial. El valor de tn contiene la
información más reciente; τn almacena el historial pasado. El parámetro α
controla el peso relativo del historial reciente y pasado de nuestra predicción. Si
α=0, entonces τn+1 = τn, y el historial reciente no tiene ningún efecto; si α=1,
entonces τn+1 = τn y solo la ráfaga de CPU mas reciente importa.
Frecuentemente, α=1/2, el historial reciente y pasado tienen el mismo peso. El
valor inicial τ0 puede definirse como una constante o como un promedio global
para todo el sistema. La siguiente figura muestra el promedio exponencial como
α=1/2 y τ0 = 10.
Para entender el comportamiento del promedio exponencial, podemos
desarrollar la formula τn+1 sustituyendo el valor de τn y el de los términos
sucesivos, obteniendo
τn+1 = αtn + (1 – α) αtn-1 + … + (1 – α)jαtn-j + … + (1 – α) n-1 τ0
Dado que tanto α como 1 - α con menores o iguales a 1, cada término sucesivo
tiene menor peso que su predecesor. El algoritmo SJF puede ser cooperativo o
apropiativo. La necesidad de eligir surge se da cuando un proceso llega a la cola
de procesos preparados mientras que un proceso anterior está todavia en
ejecución. La siguiente ráfaga de CPU del proceso que acaba de llegar puede ser
más corta que lo que quede del proceso actualmente en ejecución. Un algoritmo
SJF apropiativo detendrá el proceso, mientras que un algoritmo sin desalojo
permitirá que dicho proceso termine su rafagá de CPU. La planificación SJF
apropiativa tambien es conocida como: planificación con selección del proceso
con tiempo restante más corto.
Analizaremos el siguiente ejemplo con cuatro procesos donde tenemos
especificada la duración de la ráfaga de CPU en milisegundos:
Si los procesos llegan a la cola de procesos preparados en los instantes que se
muestran y necesitan los tiempos que se muestran los tiempos de ráfaga
indicados.
El proceso P1 se inicia en el instante 0, dado que es el único proceso que hay en
la cola. El proceso P2 llega en el instante 1. El tiempo que le da al proceso P1 (7
milisegundos) es mayor que el tiempo requerido por el proceso P2 (4
milisegundos), por lo que el proceso P1 se desaloja y se planifica el proceso P2.
El tiempo medio de espera en este ejemplo es de ( (10 - 1) + (1 - 1) + (17 - 2) +
(5 - 3) )/4 = 26/4 = 6.5 milisegundos. La planificacion SJF cooperativa
proporcionaria un tiempo promedio de espera de 7.75 milisegundos.
Planificación por Prioridades
El algoritmo SJF es un caso especial del algoritmo de planificación por
prioridades general. A cada proceso se le asocia una prioridad y el CPU se le
asigna al proceso que tenga la prioridad mas alta. Los procesos con la misma
prioridad se planifican con un orden FCFS. Un algoritmo SJF es simplemente un
algoritmo por prioridades donde la prioridad (p) es el inverso de la siguiente
ráfaga de CPU (predicha). Cuanto mas larga sea la ráfaga del CPU, menor será
la prioridad y viceversa.
Se debe observar que al hablar de planificación se piensa en términos de “alta”
prioridad y “baja” prioridad. Generalmente, las prioridades se indican mediante
un rango de números fijo, como por ejemplo de 0 al 7, o del 0 al 4095. Sin
embargo, no existe un consenso sobre si 0 es la prioridad mas alta o mas baja.
Algunos sistemas usan los números bajos para representar una prioridad baja,
mientras que otros sistemas operativos manejan los números bajos como
prioridad alta; esta diferencia puede presentar confusiones. En este caso
supondremos que los números bajos son las prioridades altas.
Por ejemplo, consideremos el siguiente conjunto de procesos y supongamos que
llegan en el instante, en este orden P1, P2, … , P5, estando la duración de las
ráfagas de CPU especificada en milisegundos:
Usando la planificación por prioridades, vamos a planificar estos procesos de
acuerdo con el diagrama de Gantt:
El tiempo de espera es de 8.2 milisegundos.
Las prioridades pueden definirse interna o externamente. Las prioridades
definidas internamente usan algún valor mensurable para calcular la prioridad de
un proceso. Por ejemplo para calcular las prioridades se han usado en distintos
sistemas magnitudes tales como los límites de tiempo, los requisitos de
memoria, el numero de archivos abiertos y la relación entre la ráfaga de E/S y la
ráfaga de CPU promedio. Las prioridades definidas externamente se establecen
en función de criterios externos al sistema operativo, como por ejemplo la
importancia, el coste monetario de uso de la computadora, el departamento que
patrocina el trabajo y otros factores, a menudo de carácter político.
La planificación por prioridades puede ser apropiativa o cooperativa. Un
algoritmo de planificación por prioridades apropiativo, expulsara del CPU al
proceso actual si la prioridad del proceso que acaba de llegar es mayor. Y de
manera cooperativa simplemente pondrá el nuevo proceso al principio de la cola
de procesos preparados.
Un problema importante de los algoritmos de planificación por prioridades es el
bloqueo indefinido o la muerte por inanición. Un proceso que está preparado
apara ejecutarse pero está esperando a acceder del CPU puede considerarse
bloqueado; un algoritmo de planificación por prioridades puede dejar a algunos
procesos de baja prioridad esperando indefinidamente.
Una solución al problema del bloqueo indefinido de procesos de baja prioridad
consiste en aplicar mecanismos de envejecimiento. Esta técnica consiste en
aumentar gradualmente la prioridad de los procesos que estén esperando en el
sistema durante mucho tiempo.
Planificación por turnos
El algoritmo de planificación por turnos (RR, round robin) está diseñado
especialmente para los sistemas de tiempo compartido. Es similar a la
planificación FCFS, pero se añade la técnica de desalojo para conmutar entre
procesos. En este tipo de sistema se define una pequeña unidad de tiempo,
denominada cuanto de tiempo, franja temporal. Generalmente, el cuanto de
tiempo se encuentra en el rango comprendido entre 10 y 100 milisegundos. La
cola de procesos preparados se trata como una cola circular. El planificador del
CPU recorre la cola de procesos preparados, asignando el CPU a cada proceso
durante un intervalo de tiempo de hasta 1 cuanto de tiempo.
Para implementar esta planificación, mantenemos la cola de procesos preparados
en una cola FIFO de procesos. Los procesos nuevos se añaden al final. El
planificador del CPU toma el primer proceso de la cola, configura un
temporizador para que interrumpa pasado 1 cuanto de tiempo y despacha el
proceso.
Puede ocurrir una de dos cosas. El proceso puede tener una ráfaga de CPU cuya
duración sea menor de 1 cuanto; en este caso el propio proceso libera el CPU.
Entonces el planificador continuara con el siguiente proceso preparado de la
cola. Pero si la ráfaga es mayor a 1 cuanto de tiempo, se producirá un fin de
cuenta del temporizador y este enviara una interrupción al sistema operativo;
entonces se ejecutara un cambio de contexto y el proceso se colocara al final de
la cola. El planificador seleccionara al siguiente proceso de la cola.
El tiempo medio de espera en los sistemas por turnos es, con frecuencia, largo.
Consideremos el siguiente caso, un conjunto de procesos llega en el instante 0
especificada la duración en ráfagas de milisegundos:
Si usamos un cuanto de tiempo de 4 milisegundos, entonces el proceso P1
obtiene los 4 primeros milisegundos. Dado que necesita otros 20 milisegundos,
es desalojado después del primer cuanto de tiempo, y la CPU se concede al
siguiente proceso de la cola, proceso P2. Puesto que el proceso P2 no necesita 4
milisegundos, termine antes de que caduque su cuanto. Entonces el CPU se
proporciona al siguiente proceso, el proceso P3. Una vez que cada proceso ha
recibido un cuanto de tiempo, el CPU es devuelta al proceso P1 para un cuanto
de tiempo adicional. La planificación por turnos restante es:
El tiempo medio de espera es 17/3 = 5.66 milisegundos.
Planificación mediante colas multinivel
Un algoritmo de planificación mediante colas multinivel divide la cola de
procesos preparados en varias colas distintas.
Los procesos se asignan permanentemente a una cola en función de alguna
propiedad del proceso, por ejemplo, el tamaño de memoria, la prioridad del
proceso o el tipo de proceso. Cada cola tiene su propio algoritmo de
planificación. Por ejemplo, pueden emplearse colas distintas para los procesos
de primer plano y de segundo plano. La cola de primer plano puede planificarse
mediante un algoritmo por turnos, mientras que para la cola de segundo plano
puede emplearse un algoritmo FCFS.
Además, debe definirse una planificación entre las colas, la cual suele
implementarse como una planificación apropiativa y prioridad fija. Por ejemplo,
la cola de procesos de primer plano puede tener prioridad absoluta sobre la cola
de procesos de segundo plano.
Veamos un ejemplo de algoritmo de planificación mediante colas multinivel con
las cinco colas que se enumeran a continuación, según su orden de prioridad:
1. Procesos del sistema
2. Procesos interactivos
3. Procesos de edición interactivos
4. Procesos por lotes
5. Procesos de estudiantes
Cada cola tiene prioridad absoluta sobre las colas de prioridad más baja. Por
ejemplo, ningún proceso de la cola por lotes podrá ejecutarse hasta que se hayan
vaciando completamente las colas de los procesos del sistema, los procesos
interactivos y los procesos de edición interactivos. Si un proceso de edición
interactivo llega a la cola de procesos preparados mientras se está ejecutando un
procesos por lotes, el proceso por lotes será desalojado.
Otra posibilidad consiste en repartir el tiempo entre las colas. En este caso, cada
cola obtiene una cierta porción del tiempo del CPU, con la que puede entonces
planificar sus distintos procesos. Por ejemplo, en el caso de las colas de procesos
de primer plano y segundo plano, la cola de primer plano puede disponer del
80% del tiempo del CPU, mientras que la cola de segundo proceso obtiene el
20% para gestionar sus procesos mediante el método FCFS.
Planificación mediante colas multinivel realimentadas
El algoritmo de planificación mediante colas multinivel realimentadas permite
mover un proceso de una cola a otra. La idea es separar los procesos en función
de las características de sus ráfagas de CPU. Si un proceso utiliza demasiado
tiempo de CPU, se pasa a una cola de prioridad más baja. Este esquema deja los
procesos limitados por E/S y los procesos interactivos en las colas de prioridad
más alta. Además un proceso que esté esperando demasiado tiempo en una cola
de baja prioridad puede pasarse a una cola de prioridad más alta. Este
mecanismo de envejecimiento evita el bloqueo indefinido.
Por ejemplo, consideremos un planificador de colas multinivel retroalimentadas,
numeradas de 0 a 2 (ver figura abajo). En primer lugar, el planificador ejecuta
todos los procesos de la cola 0. Solo cuando la cola 0 este vacía ejecutara los
procesos de la cola 1. De forma similar los procesos de la cola 2 solo se
ejecutaran si las colas 0 y 1 están vacías. Un proceso que llegue a la cola 1
desalojara a un proceso de la cola 2 y este proceso de la cola 1 será, a su vez,
desalojado por un proceso que llegue de la cola 0.
Un proceso que entre en la cola de procesos preparados se coloca en la cola 0 y a
cada uno de los procesos de esa cola se le proporciona un cuanto de tiempo de 8
milisegundos. Si el proceso no termina en ese tiempo, se pasa al final de la cola
1. Si al cola 0 esta vacía, al proceso que se encuentra al principio de la cola 1 se
le asigna un cuanto de 16 milisegundos. Si no se completa en ese tiempo, se lo
desaloja y se lo incluye en la cola 2. Los procesos de la cola 2 se ejecutan
basándose en una planificación FCFS, pero solo cuando las colas 0 y 1 están
vacías.
Este algoritmo de planificación proporciona la prioridad más alta a todo proceso
que tenga una ráfaga de CPU de 0 milisegundos o menos. Tales procesos
acceden rápidamente al CPU, concluyen su ráfaga de CPU y pasan a su
siguiente ráfaga de E/S. Los procesos que necesitan más de 8 milisegundos y
menos de 24 milisegundos también son servidos rápidamente, aunque con una
prioridad más baja que los procesos más cortos. Los procesos largos terminan
yendo automáticamente a la cola 2 y se sirven, siguiendo el orden FCFS, son los
ciclos de CPU no utilizados por las colas 0 y 1.
En general, un planificador mediante colas multinivel realimentadas se define
mediante los parámetros siguientes:
El numero de colas
El algoritmo de planificación de cada cola
El método usado para determinar cuándo pasar un proceso a una cola de
prioridad más alta
El método usado para determinar cuándo pasar un proceso a una cola de
prioridad más baja
El método usado para determinar en qué cola se introducirá un proceso
cuando haya que darle servicio
La definición del planificador mediante colas multinivel realimentadas le
convierte en el algoritmo de planificación del CPU más general. Puede
configurarse este algoritmo para adaptarlo a cualquier sistema específico que se
quiera diseñar. Lamentablemente, también es el algoritmo más complejo, puesto
que definir el mejor planificador requiere disponer de algún mecanismo para
seleccionar los valores de todos los parámetros.
Planificación de sistemas multiprocesador
Cuando se cuenta con múltiples procesadores; se puede compartir la carga; sin
embargo, el problema de la planificación se hace más complejo. Presentaremos
diversas cuestiones acerca de la planificación multiprocesador. Nos
concentraremos en los sistemas homogéneos (procesadores idénticos en su
funcionalidad).
Métodos de planificación en los sistemas multiprocesador
Un método para planificar el CPU en un sistema multiprocesador consiste en
que todas las decisiones sobre la planificación, el procesamiento de E/S y otras
actividades del sistema sean gestionadas por un mismo procesador, el servidor
maestro. Los demás procesadores solo ejecutan código de usuario. Este
procesamiento asimétrico resulta simple, porque solo hay un procesador que
accede a las estructuras de datos del sistema, reduciendo la necesidad de
compartir datos.
Un segundo método utiliza el multiprocesamiento simétrico (SMP), en el que
cada uno de los procesadores se auto-planifica. Todos los procesos pueden estar
en una cola común de procesos preparados o cada procesador puede tener su
propia cola privada de procesos preparados. Independientemente de esto, la
planificación se lleva a cabo haciendo que el planificador de cada procesador
examine la cola de procesos preparados y seleccione un proceso para ejecutarlo.
Practicamente todos los Sistemas Operativos modernos soportan el
multiprocesamiento simétrico.
Afinidad al procesador
Esto significa que un proceso tiene una afinidad hacia el procesador en que esta
ejecutándose actualmente.
La afinidad al procesador toma varias formas. Cuando un sistema operativo
tiene la política de intentar mantener un proceso en ejecución en el mismo
procesador, pero no esta garantizado que lo haga, nos encontramos ante una
situación conocida como afinidad suave. En este caso, es posible que un proceso
migre entre procesadores. Algunos sistemas como Linux, también proporcionan
llamadas al sistema que soportan la afinidad dura, la cual permite a un proceso
especificar que no debe migrar a otros procesadores.

Más contenido relacionado

La actualidad más candente

Informe de sistemas operativos
Informe de sistemas operativosInforme de sistemas operativos
Informe de sistemas operativosJessy Simba
 
Guia de fase 2 ciclo de la tarea trabajo colaborativo 1
Guia de fase 2  ciclo de la tarea  trabajo colaborativo 1Guia de fase 2  ciclo de la tarea  trabajo colaborativo 1
Guia de fase 2 ciclo de la tarea trabajo colaborativo 1Stefany Verdugo
 
Sistema operativo
Sistema operativoSistema operativo
Sistema operativoanitatenem
 
Sistemas operativos 1
Sistemas operativos 1Sistemas operativos 1
Sistemas operativos 1Isa Tarazona
 
Sistema operativos yury
Sistema operativos yurySistema operativos yury
Sistema operativos yuryganditha18
 
Guia de fase 1 herramientas teleinformaticas
Guia de fase 1  herramientas teleinformaticasGuia de fase 1  herramientas teleinformaticas
Guia de fase 1 herramientas teleinformaticasStefany Verdugo
 
Sistema operativo y dipositivos de almacenamiento
Sistema operativo y dipositivos de almacenamientoSistema operativo y dipositivos de almacenamiento
Sistema operativo y dipositivos de almacenamientobrendanoemigarciaserna
 
Sistemas operativos
Sistemas operativosSistemas operativos
Sistemas operativosdiegos11
 
Sistemas operativos
Sistemas operativosSistemas operativos
Sistemas operativosIsa Tarazona
 
Sistemas operativos propio!
Sistemas operativos propio!Sistemas operativos propio!
Sistemas operativos propio!an32
 
Unidad 1 Sistemas Operativos
Unidad 1 Sistemas OperativosUnidad 1 Sistemas Operativos
Unidad 1 Sistemas OperativosNoeljg69
 
Sistemas operativos 4
Sistemas operativos 4Sistemas operativos 4
Sistemas operativos 4diegodago
 
Reporte de Sistemas operativos
Reporte de Sistemas operativosReporte de Sistemas operativos
Reporte de Sistemas operativossweetprophessor
 
Sistemas operativos (s
Sistemas operativos (sSistemas operativos (s
Sistemas operativos (ssawthemoon
 

La actualidad más candente (20)

Informe de sistemas operativos
Informe de sistemas operativosInforme de sistemas operativos
Informe de sistemas operativos
 
2
22
2
 
Guia de fase 2 ciclo de la tarea trabajo colaborativo 1
Guia de fase 2  ciclo de la tarea  trabajo colaborativo 1Guia de fase 2  ciclo de la tarea  trabajo colaborativo 1
Guia de fase 2 ciclo de la tarea trabajo colaborativo 1
 
Sistema operativo
Sistema operativoSistema operativo
Sistema operativo
 
Sistemas operativos 1
Sistemas operativos 1Sistemas operativos 1
Sistemas operativos 1
 
Sistema operativos yury
Sistema operativos yurySistema operativos yury
Sistema operativos yury
 
Guia de fase 1 herramientas teleinformaticas
Guia de fase 1  herramientas teleinformaticasGuia de fase 1  herramientas teleinformaticas
Guia de fase 1 herramientas teleinformaticas
 
Sistema operativo y dipositivos de almacenamiento
Sistema operativo y dipositivos de almacenamientoSistema operativo y dipositivos de almacenamiento
Sistema operativo y dipositivos de almacenamiento
 
Sistemas operativos
Sistemas operativosSistemas operativos
Sistemas operativos
 
Sistemas operativos
Sistemas operativosSistemas operativos
Sistemas operativos
 
MONOGRAFÍA DE SISTEMAS OPERATIVOS
MONOGRAFÍA DE SISTEMAS OPERATIVOSMONOGRAFÍA DE SISTEMAS OPERATIVOS
MONOGRAFÍA DE SISTEMAS OPERATIVOS
 
Sistemas operativos propio!
Sistemas operativos propio!Sistemas operativos propio!
Sistemas operativos propio!
 
Sistemas
SistemasSistemas
Sistemas
 
Unidad 1 Sistemas Operativos
Unidad 1 Sistemas OperativosUnidad 1 Sistemas Operativos
Unidad 1 Sistemas Operativos
 
Guia 2
Guia 2Guia 2
Guia 2
 
Sistemas operativos 4
Sistemas operativos 4Sistemas operativos 4
Sistemas operativos 4
 
sistemas-operativos
 sistemas-operativos sistemas-operativos
sistemas-operativos
 
S.O. de computadoras, villares y conde
S.O. de computadoras, villares y condeS.O. de computadoras, villares y conde
S.O. de computadoras, villares y conde
 
Reporte de Sistemas operativos
Reporte de Sistemas operativosReporte de Sistemas operativos
Reporte de Sistemas operativos
 
Sistemas operativos (s
Sistemas operativos (sSistemas operativos (s
Sistemas operativos (s
 

Similar a Sistemas operativos

Tema 1. sistemas operativos 1
Tema 1. sistemas operativos 1 Tema 1. sistemas operativos 1
Tema 1. sistemas operativos 1 NataliaCastillo86
 
Cap1
Cap1Cap1
Cap1CJAO
 
Guia de fase 2 ciclo de la tarea trabajo colaborativo 1
Guia de fase 2  ciclo de la tarea  trabajo colaborativo 1Guia de fase 2  ciclo de la tarea  trabajo colaborativo 1
Guia de fase 2 ciclo de la tarea trabajo colaborativo 1Stefany Verdugo
 
sistemas operativos
sistemas operativossistemas operativos
sistemas operativosrisas
 
SISTEMAS OPERATIVOS
SISTEMAS OPERATIVOSSISTEMAS OPERATIVOS
SISTEMAS OPERATIVOSlaura pastor
 
Guia de fase 2 ciclo de la tarea trabajo colaborativo 1
Guia de fase 2  ciclo de la tarea  trabajo colaborativo 1Guia de fase 2  ciclo de la tarea  trabajo colaborativo 1
Guia de fase 2 ciclo de la tarea trabajo colaborativo 1Stefany Verdugo
 
SOFTWARE Y SISTEMAS OPERATIVOS
SOFTWARE Y SISTEMAS OPERATIVOSSOFTWARE Y SISTEMAS OPERATIVOS
SOFTWARE Y SISTEMAS OPERATIVOSmariantonietap
 
Sistemas operativos
Sistemas operativosSistemas operativos
Sistemas operativosojlp
 
Virginia contreras so.doc
Virginia contreras so.docVirginia contreras so.doc
Virginia contreras so.docvirginiac30
 
Qué es un sistema operativo
Qué es un sistema operativoQué es un sistema operativo
Qué es un sistema operativojohnk123
 
Qué es un sistema operativo
Qué es un sistema operativoQué es un sistema operativo
Qué es un sistema operativojohnk123
 
Qué es un sistema operativo
Qué es un sistema operativoQué es un sistema operativo
Qué es un sistema operativojohnk123
 
Sistema operativo Juank Caballero
Sistema operativo Juank CaballeroSistema operativo Juank Caballero
Sistema operativo Juank CaballeroJuank_Caballero
 

Similar a Sistemas operativos (20)

Tema 1. sistemas operativos 1
Tema 1. sistemas operativos 1 Tema 1. sistemas operativos 1
Tema 1. sistemas operativos 1
 
SISTEMAS OPERATIVOS
SISTEMAS OPERATIVOSSISTEMAS OPERATIVOS
SISTEMAS OPERATIVOS
 
Cap1
Cap1Cap1
Cap1
 
Sistemas operativos
Sistemas operativosSistemas operativos
Sistemas operativos
 
Sistemas operativos
Sistemas operativosSistemas operativos
Sistemas operativos
 
Sistemas operativos tarea 3
Sistemas operativos tarea 3Sistemas operativos tarea 3
Sistemas operativos tarea 3
 
Guia de fase 2 ciclo de la tarea trabajo colaborativo 1
Guia de fase 2  ciclo de la tarea  trabajo colaborativo 1Guia de fase 2  ciclo de la tarea  trabajo colaborativo 1
Guia de fase 2 ciclo de la tarea trabajo colaborativo 1
 
Sistema operativo
Sistema operativoSistema operativo
Sistema operativo
 
sistemas operativos
sistemas operativossistemas operativos
sistemas operativos
 
SISTEMAS OPERATIVOS
SISTEMAS OPERATIVOSSISTEMAS OPERATIVOS
SISTEMAS OPERATIVOS
 
Guia de fase 2 ciclo de la tarea trabajo colaborativo 1
Guia de fase 2  ciclo de la tarea  trabajo colaborativo 1Guia de fase 2  ciclo de la tarea  trabajo colaborativo 1
Guia de fase 2 ciclo de la tarea trabajo colaborativo 1
 
SISTEMAS OPERATIVOS
SISTEMAS OPERATIVOSSISTEMAS OPERATIVOS
SISTEMAS OPERATIVOS
 
SOFTWARE Y SISTEMAS OPERATIVOS
SOFTWARE Y SISTEMAS OPERATIVOSSOFTWARE Y SISTEMAS OPERATIVOS
SOFTWARE Y SISTEMAS OPERATIVOS
 
Sistemas operativos
Sistemas operativosSistemas operativos
Sistemas operativos
 
SISTEMAS OPERATIVOS 1
SISTEMAS OPERATIVOS 1SISTEMAS OPERATIVOS 1
SISTEMAS OPERATIVOS 1
 
Virginia contreras so.doc
Virginia contreras so.docVirginia contreras so.doc
Virginia contreras so.doc
 
Qué es un sistema operativo
Qué es un sistema operativoQué es un sistema operativo
Qué es un sistema operativo
 
Qué es un sistema operativo
Qué es un sistema operativoQué es un sistema operativo
Qué es un sistema operativo
 
Qué es un sistema operativo
Qué es un sistema operativoQué es un sistema operativo
Qué es un sistema operativo
 
Sistema operativo Juank Caballero
Sistema operativo Juank CaballeroSistema operativo Juank Caballero
Sistema operativo Juank Caballero
 

Sistemas operativos

  • 1. SISTEMAS OPERATIVOS UNIDAD I: Definición y concepto. El sistema operativo es el programa (o software) más importante de un ordenador. Para que funcionen los otros programas, cada ordenador de uso general debe tener un sistema operativo. Los sistemas operativos realizan tareas básicas, tales como reconocimiento de la conexión del teclado, enviar la información a la pantalla, no perder de vista archivos y directorios en el disco, y controlar los dispositivos periféricos tales como impresoras, escáner, etc. En sistemas grandes, el sistema operativo tiene incluso mayor responsabilidad y poder, es como un policía de tráfico, se asegura de que los programas y usuarios que están funcionando al mismo tiempo no interfieran entre ellos. El sistema operativo también es responsable de la seguridad, asegurándose de que los usuarios no autorizados no tengan acceso al sistema. Se puede definir el sistema operativo como el software básico que permite al usuario interactuar con el ordenador, administrando sus recursos, coordinando los sucesos y proporcionando la ayuda y los servicios necesarios para la mayoría de los programas. Todas las actividades que puede realizar el ordenador son dirigidas y coordinadas por el sistema operativo; por ejemplo, facilita la comunicación entre los diferentes periféricos que estén conectados a la unidad central. Como el sistema operativo es el que coordina todos los elementos del sistema, es éste el primero que se carga en la memoria del ordenador al ponerlo en funcionamiento, cargándose después todos los programas que desee ejecutar el usuario. El sistema operativo se encarga de dirigir los procesos cada vez que se ejecuta un programa de usuario, por lo que funciona como intermediario entre el hardware del sistema y el programa o software y, a la vez, como el vínculo entre el ordenador y el usuario que lo utiliza. Es decir, el usuario no podrá interactuar con el ordenador ni ejecutar ningún programa de aplicación si no existe un sistema operativo. En la década de los setenta se produjeron grandes cambios en la programación de estos sistemas, de manera que se rompieron las normas clásicas del proceso informático. A partir de esta década, los sistemas operativos de Microsoft (Windows) y los de otras empresas que aparecieron en el mercado han ido desarrollándose y mejorando. Como ejemplo de sistemas operativos están: Pick, Prologue, Theos, Unix, Linux, Dos y Windows. El sistema operativo Windows se caracteriza por el uso de ventanas, y es multiusuario y multitarea. Desde hace unos años, la popularización de los entornos gráficos en los ordenadores ha sido el factor decisivo para la enorme difusión que han alcanzado. Microsoft consiguió que su entorno operativo Windows 3 se convirtiese en el más importante de los entornos gráficos de usuario, pero siguió trabajando en nuevas versiones y surgió así Windows 95, que desbancó a DOS como sistema operativo por excelencia, aunque puede ejecutar los programas escritos para DOS. Windows 98 surgió como adaptación de Windows 95, con algunas mejoras. En el año 2000 apareció Windows Millennium, con novedades respecto a versiones anteriores como cambios estéticos, distinta ubicación de determinadas carpetas, nueva organización de la ayuda, etc. También en el año 2000 apareció Windows 2000, en su versión cliente, o Windows 2000 Professional, como en su versión de servidor, o Windows 2000 Server. En el año
  • 2. 2001 apareció Windows XP, con numerosas novedades orientadas a multimedia, Internet y redes. Por último, en el año 2003 apareció el último sistema operativo de Windows, hasta la fecha, un sistema operativo de red denominado Windows Server 2003. --------------------.-…………………………………………------ 1.2Funciones y características. El sistema operativo cumple varias funciones: Administración del procesador: el sistema operativo administra la distribución del procesador entre los distintos programas por medio de un algoritmo de programación. El tipo de programador depende completamente del sistema operativo, según el objetivo deseado. Gestión de la memoria de acceso aleatorio: el sistema operativo se encarga de gestionar el espacio de memoria asignado para cada aplicación y para cada usuario, si resulta pertinente. Cuando la memoria física es insuficiente, el sistema operativo puede crear una zona de memoria en el disco duro, denominada "memoria virtual". La memoria virtual permite ejecutar aplicaciones que requieren una memoria superior a la memoria RAM disponible en el sistema. Sin embargo, esta memoria es mucho más lenta. Gestión de entradas/salidas: el sistema operativo permite unificar y controlar el acceso de los programas a los recursos materiales a través de los drivers (también conocidos como administradores periféricos o de entrada/salida). Gestión de ejecución de aplicaciones: el sistema operativo se encarga de que las aplicaciones se ejecuten sin problemas asignándoles los recursos que éstas necesitan para funcionar. Esto significa que si una aplicación no responde correctamente puede "sucumbir". Administración de autorizaciones: el sistema operativo se encarga de la seguridad en relación con la ejecución de programas garantizando que los recursos sean utilizados sólo por programas y usuarios que posean las autorizaciones correspondientes. Gestión de archivos: el sistema operativo gestiona la lectura y escritura en el sistema de archivos, y las autorizaciones de acceso a archivos de aplicaciones y usuarios. Gestión de la información: el sistema operativo proporciona cierta cantidad de indicadores que pueden utilizarse para diagnosticar el funcionamiento correcto del equipo. El sistema operativo tiene las siguientes características: 1. Conveniencia: un sistema operativo hace más conveniente el uso de una computadora. 2. Eficiencia: el sistema operativo permite que los recursos de la computadora se usen de manera correcta y eficiente. 3. Habilidad para evolucionar: un sistema operativo debe de ser capaz de aceptar nuevas funciones sin que tenga problemas. 4. Encargado de administrar el hardware: el sistema operativo debe de ser eficaz.
  • 3. 5. Relacionar dispositivos ………………………..-----------------------------------------------…………………………. 1.3Evolución histórica. Los primeros sistemas operativos fueron desarrollados por cada usuario para adecuar el uso de su propia computadora central,[] y es en 1956 que la General Motors desarrolla lo que es hoy considerado el primer sistema, el GM-NAA I/O,[] para su IBM 704. La década de 1940 A finales de la década de 1940, con lo que se podría considerar la aparición de la primera generación de computadoras, se accedía directamente a la consola de la computadora desde la cual se actuaba sobre una serie de micro interruptores que permitían introducir directamente el programa en la memoria de la computadora (en realidad al existir tan pocas computadoras todos podrían considerarse prototipos y cada constructor lo hacía sin seguir ningún criterio predeterminado). Por aquel entonces no existían los sistemas operativos, y los programadores debían interactuar con el hardware del computador sin ayuda externa. Esto hacía que el tiempo de preparación para realizar una tarea fuera considerable. Además para poder utilizar la computadora debía hacerse por turnos. Para ello, en muchas instalaciones, se rellenaba un formulario de reserva en el que se indicaba el tiempo que el programador necesitaba para realizar su trabajo. En aquel entonces las computadoras eran máquinas muy costosas lo que hacía que estuvieran muy solicitadas y que sólo pudieran utilizarse en periodos breves de tiempo. Todo se hacía en lenguaje de máquina. La década de 1950 A principios de los años 50 con el objeto de facilitar la interacción entre persona y computadora, los sistemas operativos hacen una aparición discreta y bastante simple, con conceptos tales como el monitor residente, el proceso por lotes y el almacenamiento temporal. Monitor residente Su funcionamiento era bastante simple, se limitaba a cargar los programas a memoria, leyéndolos de una cinta o de tarjetas perforadas, y ejecutarlos. El problema era encontrar una forma de optimizar el tiempo entre la retirada de un trabajo y el montaje del siguiente. Procesamiento por lotes Como solución para optimizar, en una misma cinta o conjunto de tarjetas, se cargaban varios programas, de forma que se ejecutaran uno a continuación de otro sin perder apenas tiempo en la transición. Almacenamiento temporal
  • 4. Su objetivo era disminuir el tiempo de carga de los programas, haciendo simultánea la carga del programa o la salida de datos con la ejecución de la siguiente tarea. Para ello se utilizaban dos técnicas, el buffering y el spooling. La década de 1960 En los años 60 se produjeron cambios notorios en varios campos de la informática, con la aparición del circuito integrado la mayoría orientados a seguir incrementando el potencial de los ordenadores. Para ello se utilizaban técnicas de lo más diversas. Multiprogramación En un sistema multi programado la memoria principal alberga a más de un programa de usuario. La CPU ejecuta instrucciones de un programa, cuando el que se encuentra en ejecución realiza una operación de E/S; en lugar de esperar a que termine la operación de E/S, se pasa a ejecutar otro programa. Si éste realiza, a su vez, otra operación de E/S, se mandan las órdenes oportunas al controlador, y pasa a ejecutarse otro. De esta forma es posible, teniendo almacenado un conjunto adecuado de tareas en cada momento, utilizar de manera óptima los recursos disponibles. Tiempo compartido En este punto tenemos un sistema que hace buen uso de la electrónica disponible, pero adolece la falta de interactividad; para conseguirla debe convertirse en un sistema multiusuario, en el cual existen varios usuarios con un terminal en línea, utilizando el modo de operación de tiempo compartido. En estos sistemas los programas de los distintos usuarios residen en memoria. Al realizar una operación de E/S los programas ceden la CPU a otro programa, al igual que en la multiprogramación. Pero, a diferencia de ésta, cuando un programa lleva cierto tiempo ejecutándose el sistema operativo lo detiene para que se ejecute otra aplicación. [] Tiempo real Estos sistemas se usan en entornos donde se deben aceptar y procesar en tiempos muy breves un gran número de sucesos, en su mayoría externos al ordenador. Si el sistema no respeta las restricciones de tiempo en las que las operaciones deben entregar su resultado se dice que ha fallado. El tiempo de respuesta a su vez debe servir para resolver el problema o hecho planteado. El procesamiento de archivos se hace de una forma continua, pues se procesa el archivo antes de que entre el siguiente, sus primeros usos fueron y siguen siendo en telecomunicaciones. Multiprocesador Diseño que no se encuentran en ordenadores monoprocesador. Estos problemas derivan del hecho de que dos programas pueden ejecutarse simultáneamente y, potencialmente, pueden interferirse entre sí. Concretamente, en lo que se refiere a las lecturas y escrituras en memoria. Existen dos arquitecturas que resuelven estos problemas: La arquitectura NUMA, donde cada procesador tiene acceso y control exclusivo a una parte de la memoria. La arquitectura SMP, donde todos los procesadores comparten
  • 5. toda la memoria. Esta última debe lidiar con el problema de la coherencia de caché. Cada microprocesador cuenta con su propia memoria cache local. De manera que cuando un microprocesador escribe en una dirección de memoria, lo hace únicamente sobre su copia local en caché. Si otro microprocesador tiene almacenada la misma dirección de memoria en su caché, resultará que trabaja con una copia obsoleta del dato almacenado. Para que un multiprocesador opere correctamente necesita un sistema operativo especialmente diseñado para ello. La mayoría de los sistemas operativos actuales poseen esta capacidad. Sistemas operativos desarrollados Además del Atlas Supervisor y el OS/360, los años 1970 marcaron el inicio de UNIX, a mediados de los 60 aparece Multics, sistema operativo multiusuario - multitarea desarrollado por los laboratorios Bell de AT&T y Unix, convirtiéndolo en uno de los pocos SO escritos en un lenguaje de alto nivel. En el campo de la programación lógica se dio a luz la primera implementación de Prolog, y en la revolucionaria orientación a objetos, Smalltalk. Inconvenientes de los Sistemas operativos Se trataba de sistemas grandes, complejos y costosos, pues antes no se había construido nada similar y muchos de los proyectos desarrollados terminaron con costos muy por encima del presupuesto y mucho después de lo que se marcaba como fecha de finalización. Además, aunque formaban una capa entre el hardware y el usuario, éste debía conocer un complejo lenguaje de control para realizar sus trabajos. Otro de los inconvenientes es el gran consumo de recursos que ocasionaban, debido a los grandes espacios de memoria principal y secundaria ocupados, así como el tiempo de procesador consumido. Es por esto que se intentó hacer hincapié en mejorar las técnicas ya existentes de multiprogramación y tiempo compartido. Características de los nuevos sistemas Sistemas operativos desarrollados MULTICS (Multiplexed Information and Computing Service): Originalmente era un proyecto cooperativo liderado por Fernando Corbató del MIT, con General Electric y los laboratorios Bell, que comenzó en los 60, pero los laboratorios Bell abandonaron en 1969 para comenzar a crear el sistema UNIX. Se desarrolló inicialmente para el mainframe GE-645, un sistema de 36 bits; después fue soportado por la serie de máquinas Honeywell 6180. Fue uno de los primeros. Además, los traducía a instrucciones de alto nivel destinadas a BDOS. BDOS (Basic Disk Operating System): Traductor de las instrucciones en llamadas a la BIOS. El hecho de que, años después, IBM eligiera para sus PC a MS-DOS supuso su mayor fracaso, por lo que acabó desapareciendo.
  • 6. La década de 1980 Con la creación de los circuitos LSI -integración a gran escala-, chips que contenían miles de transistores en un centímetro cuadrado de silicio, empezó el auge de los ordenadores personales. En éstos se dejó un poco de lado el rendimiento y se buscó más que el sistema operativo fuera amigable, surgiendo menús, e interfaces gráficas. Esto reducía la rapidez de las aplicaciones, pero se volvían más prácticos y simples para los usuarios. En esta época, siguieron utilizándose lenguajes ya existentes, como Smalltalk o C, y nacieron otros nuevos, de los cuales se podrían destacar: C++ y Eiffel dentro del paradigma de la orientación a objetos, y Haskell y Miranda en el campo de la programación declarativa. Un avance importante que se estableció a mediados de la década de 1980 fue el desarrollo de redes de computadoras personales que corrían sistemas operativos en red y sistemas operativos distribuidos. En esta escena, dos sistemas operativos eran los mayoritarios: MS-DOS (Micro Soft Disk Operating System), escrito por Microsoft para IBM PC y otras computadoras que utilizaban la CPU Intel 8088 y sus sucesores, y UNIX, que dominaba en los ordenadores personales que hacían uso del Motorola 68000. Mac OS El lanzamiento oficial del ordenador Macintosh en enero de 1984, al precio de US $1,995 (después cambiado a $2,495 dólares)[1]. Incluía su sistema operativo Mac OS cuya características novedosas era una GUI (Graphic User Interface), Multitareas y Mouse. Provocó diferentes reacciones entre los usuarios acostumbrados a la línea de comandos y algunos tachando el uso del Mouse como juguete. MS-DOS En 1981 Microsoft compró un sistema operativo llamado QDOS que, tras realizar unas pocas modificaciones, se convirtió en la primera versión de MS-DOS (Micro Soft Disk Operating System). A partir de aquí se sucedieron una serie de cambios hasta llegar a la versión 7.1, versión 8 en Windows Milenium, a partir de la cual MS-DOS dejó de existir como un componente del Sistema Operativo. Microsoft Windows A mediados de los años 80 se crea este sistema operativo, pero no es hasta la salida de (Windows 95) que se le puede considerar un sistema operativo, solo era una interfaz gráfica del (MS-DOS) en el cual se disponía de unos diskettes para correr los programas. Hoy en día es el sistema operativo más difundido en el ámbito doméstico aunque también hay versiones para servidores como Windows NT. (Microsoft) ha diseñado también algunas versiones para superordenadores, pero sin mucho éxito. Años después se hizo el (Windows 98) que era el más eficaz de esa época. Después se crearía el sistema operativo de (Windows ME) (Windows Millenium Edition) aproximadamente entre el año 1999 y el año 2000. Un año después se crearía el sistema operativo de (Windows 2000) en ese mismo año. Después le seguiría el sistema operativo más utilizado en la actualidad, (Windows XP) y otros sistemas operativos de esta familia especializados en las empresas. Ahora el más reciente es (Windows 7) (Windows Seven) que salió al mercado el 22 de octubre del 2009, dejando atrás al
  • 7. (Windows Vista), que tuvo innumerables críticas durante el poco tiempo que duró en el mercado. La década de 1990 GNU/Linux Este sistema al parecer es una versión mejorada de Unix, basado en el estándar POSIX, un sistema que en principio trabajaba en modo comandos. Hoy en día dispone de Ventanas, gracias a un servidor gráfico y a gestores de ventanas como KDE, GNOME entre muchos. Recientemente GNU/Linux dispone de un aplicativo que convierte las ventanas en un entorno 3D como por ejemplo Beryl o Compiz. Lo que permite utilizar Linux de una forma visual atractiva. Existen muchas distribuciones actuales de Gnu/Linux (Debian, Fedora, Ubuntu, Slackware, etc.) donde todas ellas tienen en común que ocupan el mismo núcleo Linux. Dentro de las cualidades de Gnu/Linux se puede caracterizar el hecho de que la navegación a través de la web es sin riegos de ser afectada por virus, esto debido al sistema de permisos implementado, el cual no deja correr ninguna aplicación sin los permisos necesarios, permisos que son otorgados por el usuario. A todo esto se suma que los virus que vienen en dispositivos desmontables tampoco afectan al sistema, debido al mismo sistema de permisos. ReactOS ReactOS (React Operating System) es un sistema operativo de código abierto destinado a lograr la compatibilidad binaria con aplicaciones de software y controladores de dispositivos hechos para Microsoft Windows NT versiones 5.x en adelante (Windows XP y sus sucesores). En 1996 un grupo de programadores y desarrolladores de software libre comenzaron un proyecto llamado FreeWin95 el cual consistía en implementar un clon de Windows 95. El proyecto estuvo bajo discusión por el diseño del sistema ya habiendo desarrollado la capa compatible con MS-DOS, pero lamentablemente esta fue una situación que no se completó. Para 1997 el proyecto no había lanzado ninguna versión, por lo que los miembros de éste, coordinados por Jason Filby, pudieron revivirlo. Se decidió cambiar el núcleo del sistema compatible con MS-DOS y de ahora en adelante basarlo en uno compatible con Windows NT y así el proyecto pudo seguir adelante con el nombre actual de ReactOS, que comenzó en febrero de 1998, desarrollando las bases del kernel y algunos drivers básicos. …………………………..-------------------------------------------…………. 1.4Clasificación. Los sistemas operativos los podemos clasificar en: • Sistemas operativos monotarea: Sólo pueden manejar un proceso, es decir , las tareas deben ejecutarse una tras otra. Por ejemplo, el sistema DOS es monotarea, al no poder ejecutar varias aplicaciones simultáneamente, aunque existieron varios intentos de añadirle esta capacidad. • Sistemas operativos multitarea: La computadora puede procesar varias tareas al mismo tiempo. Podemos distinguir: • Conmutación de contextos: Es un tipo simple de multitarea en el que dos o más aplicaciones se cargan al mismo tiempo, pero sólo se procesa la que
  • 8. se encuentra en primer plano, que es la que está utilizando el usuario. Cuando el usuario cambia de aplicación , se produce un intercambio entre ambas tareas, pasando la aplicación activa a segundo plano, efectuándose un almacenamiento del estado en el que se encuentra. Por otro lado la aplicación que estaba en segundo plano pasa a reanudar su procesamiento recuperando la situación en la que se había detenido. • Multitarea cooperativa: Las tareas en segundo plano reciben tiempo de proceso durante los tiempos muertos de la tarea que se encuentra en primer plano. Esto ocurre cuando dicha aplicación espera información del usuario para poder continuar. • Multitarea de tiempo compartido: Cada tarea recibe un tiempo de procesamiento durante una fracción de segundo. Se puede establecer un orden de prioridades entre las tareas o simplemente seguir un orden secuencial. Dado que el sentido temporal del usuario es mucho más lento que la velocidad de procesamiento del ordenador , las operaciones de multitarea en tiempo compartido parecen ser simultáneas. Todos los sistemas operativos actuales (Linux, toda la familia Windows, Mac OS, OS/2 de IBM ) utilizan esta técnica. En concreto, el sistema operativo Windows, y alguno de los mencionados anteriormente, crean un entorno de ejecución propio e independiente para cada tarea, como si cada aplicación corriese en una máquina independiente llamada máquina virtual. Cada una de de estas máquinas virtuales posee sus correspondientes dispositivos virtuales, que representan a cada uno de los recursos del ordenador (memoria, disco duro, impresora ). Por ejemplo , cuando un programa ejecuta la instrucción de impresión , se realiza sobre laimpresora virtual de su máquina virtual. Esta petición es recibida por el sistema operativo, que está coordinando todos los dispositivos virtuales y lanza el comando sobre la impresora real. Esto facilita enormemente la programación de aplicaciones, ya que se realiza sobre dispositivos virtuales, siendo el sistema operativo el encargado final de realizar la operación. • Sistemas operativos monousuario: Sólo pueden atender a un único usuario, que es el que haya iniciado sesión en el sistema. Esto ocurre en el sistema operativo DOS e incluso en el actual Windows XP y sus predecesores. • Sistemas operativos multiusuario: Pueden atender simultáneamente las peticiones de dos o más usuarios, que comparten los recursos del sistema informático al que se conectan. Este tipo de sistemas se emplean especialmente en redes, ya que cada usuario necesita de un terminal independiente para conectarse con el equipo que tiene instalado el sistema. ………………………------------------------------------…………… 1.5Estructura: niveles o estratos de diseño. El nucleo o kernel se divide en 5 capas o niveles: Nivel 1. Gestion de Memoria:Proporciona las facilidades de bajo nivel para la gestion de memoria secundaria necesaria para la ejecucion de procesos. Nivel 2. Procesador: Se encarga de activar los cuantums de tiempo para cada uno de los procesos, creando interrupciones de hardware cuando no son respetadas. Nivel 3. Entrada/Salida: Proporciona las facilidades para poder utilizar los dispositivos de E/S requeridos por los procesos. Nivel 4. Informacion o Aplicacion o Interprete de Lenguajes: Facilita la comunicacion con los lenguajes y el sistema operativo para aceptar las ordenes en cada una de las aplicaciones. Ejecutando un programa el software de este nivel crea el ambiente de trabajo e invoca a los procesos correspondientes. Nivel 5. Control de Archivos: Proporciona la facilidad para el almacenamiento a largo plazo y manipulacion de archivos con nombre, va asignando espacio y acceso de datos en memoria. El nucleo o kernel realiza diferentes funciones tales como: Manejo de interrupciones.
  • 9. Creacion y destruccion de procesos. Cambio de estado de los procesos. Despacho Suspension y reanudacion de procesos. Sincronizacion de procesos. Comunicacion entre procesos. Manipulacion de los bloques de control de procesos. Apoyo para las actividades de entrada/salida. Apoyo para asignacion y liberacion de memoria. Apoyo para el sistema de archivos. Apoyo para el mecanismo de llamada y retorno de un procedimiento. Apoyo para ciertas funciones de contabilidad del sistema. El nucleo y los procesos Una definicion mas especifica de lo que es el nucleo ( Kernel ) de un sistema operativo es: un conjunto de rutinas cuya mision es la de gestionar el procesador, la memoria, la entrada/salida y el resto de procesos disponibles en la instalacion. Toda esta gestion la realiza para atender al funcionamiento y peticiones de los trabajos que se ejecutan en el sistema. El esquema general de la gestion del procesador, es el siguiente: Definicion y concepto de proceso. El Bloque de Control de Proceso (PCB) como imagen donde el sistema operativo ve el estado del proceso. Estados por los que pasa un proceso a lo largo de su existencia en la computadora. Operaciones que se pueden realizar sobre un proceso. Clasificacion de los procesos segun su forma de ejecucion, de carga, etc. Por proceso debe entenderse: un programa en ejecucion junto con el entorno asociado (registros, variables ,etc.). Publicado por NickDevol Hernandez en 09:17No hay comentarios: Enviar por correo electrónicoEscribe un blogCompartir con TwitterCompartir con Facebook UNIDAD II: Concepto de proceso. Un proceso puede informalmente entenderse como un programa en ejecución. Formalmente un proceso es "Una unidad de actividad que se caracteriza por la ejecución de una secuencia de instrucciones, un estado actual, y un conjunto de recursos del sistema asociados".1 Para entender lo que es un proceso y la diferencia entre un programa y un proceso, A. S. Tanenbaum propone la analogía "Un científico computacional con mente culinaria hornea un pastel de cumpleaños para su hija; tiene la receta para un pastel de cumpleaños y una cocina bien equipada con todos los ingredientes necesarios, harina, huevo, azúcar, leche, etcétera." Situando cada parte de la analogía se puede decir que la receta representa el programa (el algoritmo), el científico computacional es el
  • 10. procesador y los ingredientes son las entradas del programa. El proceso es la actividad que consiste en que el científico computacional vaya leyendo la receta, obteniendo los ingredientes y horneando el pastel. Cada proceso tiene su contador de programa, registros y variables, aislados de otros procesos, incluso siendo el mismo programa en ejecución 2 veces. Cuándo este último caso sucede, el sistema operativo usa la misma región de memoria de código, debido a que dicho código no cambiará, a menos que se ejecute una versión distinta del programa. Los procesos son gestionados por el sistema operativo y están formados por: Las instrucciones de un programa destinadas a ser ejecutadas por el microprocesador. Su estado de ejecución en un momento dado, esto es, los valores de los registros de la unidad central de procesamiento para dicho programa. Su memoria de trabajo (memoria crítica), es decir, la memoria que ha reservado y sus contenidos. Otra información que permite al sistema operativo su planificación. Un proceso se rige en pequeñas porciones, conocidas como páginas, y cada proceso tiene su propia tabla de paginación, fungiendo como una optimización del sistema operativo ante los fallo de página. Esta definición varía ligeramente en el caso de sistemas operativos multihilo, donde un proceso consta de uno o más hilos, la memoria de trabajo (compartida por todos los hilos) y la información de planificación. Cada hilo consta de instrucciones y estado de ejecución. Los procesos son creados y eliminados por el sistema operativo, así como también éste se debe hacer cargo de la comunicación entre procesos, pero lo hace a petición de otros procesos (interrupción o tiempo de reloj). El mecanismo por el cual un proceso crea otro proceso se denomina bifurcación (fork). El proceso de arranque de GNU/Linux inicia con un sólo proceso (init) y después comienza a crear los hilos necesarios para tener el sistema listo para su uso. Los nuevos procesos pueden ser independientes y no compartir el espacio de memoria con el proceso que los ha creado o ser creados en el mismo espacio de memoria. En los sistemas operativos multihilo es posible crear tanto hilos como procesos. La diferencia estriba en que un proceso solamente puede crear hilos para sí mismo y en que dichos hilos comparten toda la memoria reservada para el proceso. Los procesos pueden ser cooperativos o independientes. Dos o más procesos pueden cooperar mediante señales de forma que uno obliga a detenerse a los otros hasta que reciban una señal para continuar. Se usa una variable de tipo semáforo para sincronizar los procesos. Si un proceso está esperando una señal, se suspende hasta que la señal se envíe. Se mantiene una cola de procesos en espera en el semáforo. La forma de elegir los procesos de la cola en espera es mediante una política first in first out. La sincronización explícita entre procesos es un caso particular del estado "bloqueado". En este caso, el suceso que permite desbloquear un proceso no es una operación de entrada/salida, sino una señal generada a propósito por el programador desde otro proceso.
  • 11. Hay cuatro eventos principales que provocan la creación de procesos: El arranque del sistema. La ejecución, desde un proceso, de una llamada al sistema para la creación de otro proceso. Una petición de usuario para crear un proceso. El inicio de un trabajo por lotes. Los procesos pueden contener uno o más hilos, haciendo más eficiente las tareas, asimismo la complejidad de los algoritmos de sincronización, ya que podría ocurrir la condición de carrera muy a menudo, inclusive los indeseados interbloqueos. 2.2 Estados y transiciones de los procesos Como se indico anteriormente, el proceso es la unidad de procesamiento gestionada por el sistema operativo. Para poder realizar este cometido, el proceso tiene asociado una serie de elementos de informacion, que se resumen en la Figura 3.8, que se analizan seguidamente. Estos elementos se organizan en tres grupos: estado del procesador, imagen de memoria y tablas del sistema operativo. Estado del procesador El estado del procesador esta formado por el contenido de todos sus registros, que se enumeran seguidamente: Registros generales. De existir registros especificos de coma flotante tambien se incluyen aqui. Contador de programa.Informacion del proceso Puntero de pila. Registro o registros de estado. Registros especiales. Como puede ser el RIED (registro identificador de espacio de direccionamiento). El estado del procesador de un proceso reside en los registros del procesador, cuando el proceso esta en ejecucion, o en el bloque de control de proceso (BCP), cuando el proceso no esta en ejecucion. Cuando el proceso esta ejecutando, el estado del procesador varia de acuerdo al flujo de instrucciones maquina ejecutado. En este caso, la copia del estado del procesador que reside en el BCP no esta actualizada. Tengase en cuenta que los registros de la maquina se utilizan para no tener que acceder a la informacion de memoria, dado que es mucho mas lenta. Por tanto, no tiene sentido plantear que, en cada modificacion de un registro, se actualice su valor en el BCP, puesto que esta en memoria. Sin embargo, cuando se detiene la ejecucion de un proceso, como consecuencia de la ejecucion de una interrupcion, es muy importante que el sistema operativo actualice la copia del estado del procesador en su BCP. En terminos concretos, la rutina del sistema operativo que trata las Interrupciones lo primero que ha de hacer es salvar el estado del procesador en el BCP del proceso interrumpido.
  • 12. 2.3 Procesos ligeros: Hilos o hebras. Un proceso ligero, o thread, es un programa en ejecucion (flujo de ejecucion) que comparte la imagen de memoria y otras informaciones con otros procesos ligeros. Como muestra la Figura , un proceso puede contener un solo flujo de ejecucion, como ocurre en los procesos clasicos, o mas de un flujo de ejecucion (procesos ligeros). Desde el punto de vista de la programacion, un proceso ligero se define como una funcion cuya ejecucion se puede lanzar en paralelo con otras. El hilo de ejecucion primario, o proceso ligero primario, corresponde a la funcion main. Cada proceso ligero tiene informaciones que le son propias y que no comparte con otros procesos ligeros. Las informaciones propias se refieren fundamentalmente al contexto de ejecucion, pudiendose destacar las siguientes: Contador de programa. Pila. Registros. Estado del proceso ligero (ejecutando, listo o bloqueado). Todos los procesos ligeros de un mismo proceso comparten la informacion del mismo. En concreto, comparten: Espacio de memoria. Variables globales. Archivos abiertos. Procesos hijos. Temporizadores. Senales y semaforos. Contabilidad. Es importante destacar que todos los procesos ligeros de un mismo proceso comparten el mismo espacio de direcciones de memoria, que incluye el codigo, los datos y las pilas de los diferentes procesos ligeros. Esto hace que no exista proteccion de memoria entre los procesos ligeros de un mismo proceso, algo que si ocurre con los procesos convencionales. El proceso ligero constituye la unidad ejecutable en Windows NT. La Figura representa de forma esquematica la estructura de un proceso de Windows NT con sus procesos ligeros.
  • 13. 2.4 Concurrencia y secuenciabilidad. Los procesos son concurrentes si existen simultaneamente. Los procesos concurrentes pueden funcionar en forma totalmente independiente unos de otros, o pueden ser asincronos, lo cual significa que en ocasiones requieren cierta sincronizacion o cooperacion. Cuando dos o mas procesos llegan al mismo tiempo a ejecutarse, se dice que se ha presentado una concurrencia de procesos. Es importante mencionar que para que dos o mas procesos sean concurrentes , es necesario que tengan alguna relacion entre ellos como puede ser la cooperacion para un determinado trabajo o el uso de informacion o recursos compartidos, por ejemplo: en un sistema de un procesador , la multiprogramacion es una condicion necesaria pero no suficiente para que exista concurrencia, ya que los procesos pueden ejecutarse de forma totalmente independiente. Por otro lado en un sistema de varios procesos se puede presentar la concurrencia siempre y cuando las actividades necesiten actuar entre si ya sea para utilizar informacion en comun o para cualquier otra cosa. Existen tres formas modelos de computadora en los que se puede pueden ejecutar procesos concurrentes: Multiprogramacion con un unico procesador. En este modelo todos los procesos concurrentes ejecutan sobre un unico procesador. El sistema operativo se encarga de ir repartiendo el tiempo del procesador entre los distintos procesos, intercalando la ejecucion de los mismos para dar asi una apariencia de ejecucion simultanea. Multiprocesador. Un multiprocesador es una maquina formada por un conjunto de procesadores que comparten memoria principal. En este tipo de arquitecturas, los procesos concurrentes no solo pueden intercalar su ejecucion sino tambien superponerla. En este caso si existe una verdadera ejecucion simultanea de procesos, al coincidir las fases de procesamiento de distintos procesos. En un instante dado se pueden ejecutar de forma simultanea tantos procesos como procesadores haya. Multicomputadora. Una multicomputadora es una maquina de memoria distribuida, en contraposicion con el multiprocesador que es de memoria compartida. Esta formada por una serie de computadoras completas con su UCP, memoria principal y, en su caso, periferia. Cada uno de estos procesadores completo se denomina nodo. Los nodos se encuentran conectados y se comunican entre si a traves de una red de interconexion, empleando el metodo de paso de mensajes. En este tipo de arquitecturas tambien es posible la ejecucion simultanea de los procesos sobre los distintos procesadores.
  • 14. En general la concurrencia sera aparente siempre que el numero de procesos sea mayor que el de procesadores disponibles, es decir, cuando haya mas de un proceso por procesador. La concurrencia sera real cuando haya un proceso por procesador. 2.5 Niveles, objetivos y criterios de planificación. En epocas pasadas de los sistemas de procesamiento por lotes, con una entrada en forma de imagenes de tarjetas en una cinta magnetica, el algoritmo de planificacion era sencillo: solo habia que ejecutar el siguiente trabajo en la cinta. En los sistemas de multiusuario de tiempo compartido, que se combinaban con un fondo de trabajos procesados en lote, el algoritmo era mas complejo. En forma invariable, existian varios usuarios en espera de servicio y podian existir tambien otros trabajos para ser procesados en lote. Incluso en los sistemas puros de tiempo compartido existen con frecuencia los trabajos colaterales, como el sistema de correo electronico, que a menudo se ejecuta todo el tiempo para enviar o recibir correo o noticias. Cuando mas de un proceso es ejecutable, el Sistema Operativo debe decidir cual de ellos debera ejecutarse primero. Hay que tener una planificacion de los procesos que quieren ejecutarse en el sistema.La planificacion es una funcion primordial del Sistema Operativo. La mayoria de los recursos, si no es que todos, se planifican antes de que se utilicen. La asignacion de procesadores fisicos a los procesos hace posible que estos realicen su trabajo, y tal asignacion es un problema complejo manejado por el Sistema Operativo. Concepto de Planificacion La planificacion hace referencia a un conjunto de politicas y mecanismos incorporados al sistema operativo que gobiernan el orden en que se ejecutan los trabajos que deben ser cumplimentados por el sistema informatico. Objetivo de la Planificacion El objetivo principal de la planificacion es optimizar el rendimiento del sistema y proporcionar un buen servicio a todos los procesos que se encuentren en el. En general, la planificacion trata de cubrir los siguientes objetivos: Justicia. La planificacion debe ser lo mas justa posible con todos los procesos, sin favorecer a unos y perjudicar a otros. Maxima capacidad de ejecucion. Debe dar un servicio eficiente para que todos los trabajos se realicen lo mas rapidamente posible. Esto se puede lograr disminuyendo el numero de cambios de proceso. Maximo numero de usuarios interactivos. En los sistemas de tiempo compartido se tratara de que puedan estar trabajando el mayor numero de usuarios al mismo tiempo. Predecibilidad. La planificacion debe realizarse de tal forma que en todo momento pueda saberse como sera su ejecucion.
  • 15. Minimizacion de la sobrecarga. La computadora debe tener poca sobrecarga ya que esta afecta directamente al rendimiento final del sistema: a menor sobrecarga mayor velocidad de proceso. Equilibrio en el uso de recursos. Para obtener un mayor rendimiento en el uso de los recursos y que estos esten ocupados equitativamente el mayor tiempo posible. Seguridad de las prioridades. Si un proceso tiene mayor prioridad que otro, este debe ejecutarse mas rapidamente. Evitar la postergacion indefinida. Esto se logra aumentando la prioridad de un proceso mientras espere por un recurso. La prioridad llegara a ser tan alta que al proceso le sera asignado el recurso que pidio. Criterios de planificacion Para realizar los objetivos de la planificacion, un mecanismo de planificacion debe considerar lo siguiente: La limitacion de un proceso a las operaciones de Entrada / Salida: cuando un proceso consigue la cpu, ?la utiliza solo brevemente antes de generar una peticion de Entrada / Salida? La limitacion de un proceso a la cpu: cuando un proceso obtiene la cpu, ?tiende a usarla hasta que expira su tiempo? Si un proceso es por lote (batch) o interactivo: los usuarios interactivos deben recibir inmediato servicio para garantizar buenos tiempos de respuesta. ?Que urgencia tiene una respuesta rapida?: por ejemplo, un proceso de tiempo real de un sistema de control que supervise una refineria de combustible requiere una respuesta rapida, mas rapida que la respuesta requerida por un proceso en lotes (batch) que debera entregarse al dia siguiente. La prioridad de un proceso: a mayor prioridad mejor tratamiento. Frecuentemente un proceso genera fallos (carencias) de pagina: o Probablemente los procesos que generan pocos fallos de pagina hayan acumulado sus “conjuntos de trabajo” en el almacenamiento principal. o Los procesos que experimentan gran cantidad de fallos de pagina aun no han establecido sus conjuntos de trabajo. o Un criterio indica favorecer a los procesos que han establecido sus conjuntos de trabajo. o Otro criterio indica favorecer a los procesos con una tasa alta de fallos de pagina ya que rapidamente generaran una peticion de Entrada / Salida. Frecuentemente un proceso ha sido apropiado por otro de mas alta prioridad, lo cual significa lo siguiente: o A menudo los procesos apropiados deben recibir un tratamiento menos favorable. o Cada vez que el Sistema Operativo asume la sobrecarga para hacer ejecutar este proceso, el corto tiempo de ejecucion antes de la apropiacion no justifica la sobrecarga de hacer ejecutar al proceso en primer lugar. Cuanto tiempo de ejecucion real ha recibido el proceso?: un criterio considera que debe ser favorecido un proceso que ha recibido muy poco tiempo de cpu.
  • 16. Cuanto tiempo adicional va a necesitar el proceso para terminar?: los tiempos promedio de espera pueden reducirse priorizando los procesos que requieren de un tiempo de ejecucion minimo para su terminacion, pero pocas veces es posible conocer la cantidad de tiempo adicional que cada proceso necesita para terminar. 2.6 Técnicas de administración del planificador. Introducción La cuestión de la planificación del procesador aborda el problema de decidir a qué proceso de la cola de procesos preparados debe asignársele al procesador. Existen distintos algoritmos de planificación del procesador, a continuación analizaremos algunos de ellos. Planificación FCFS Este es el algoritmo más simple de planificación (First Come, First Served; primero en llegar, primero servido). En este esquema se asigna el CPU al primer proceso que lo solicite. La implementación de esta política se gestiona con una cola FIFO (First In, First Out; primero en entrar, primero en salir). Cuando un proceso entra en la cola de procesos preparados, su PCB se coloca al final de la cola. Cuando el procesador queda libre, se le asigna al siguiente proceso de la cola y al pasar a ejecutarse se elimina de la cola. El tiempo medio de espera con el algoritmo FCFS es normalmente bastante largo. Suponiendo que el siguiente conjunto de procesos llega en el instante 0, estando la ráfaga de CPU especificada en milisegundos: Si lo procesos llegan en el orden P1, P2, P3 y se sirven según el orden FCFS, obtendremos el resultado. El tiempo de espera es de 10 milisegundos para el proceso P1, de 24 milisegundos para el proceso P2 y de 27 milisegundos para P3. Por tanto el tiempo medio de espera es de (0+24+27)/3 = 17 milisegundos. Sin embargo, si los procesos llegan en el orden P2, P3, P1. Ahora el tiempo de espera es de (6+0+3)/3 = 3 milisegundos. Esta reducción es sustancial. Por tanto, el tiempo medio de espera con una política FCFS no es, generalmente, mínimo y puede variar si la duración de las ráfagas del CPU de los procesos es muy variable. El algoritmo de planificación FCFS es cooperativo. Una vez que el CPU ha sido asignado a un proceso, dicho proceso conserva el CPU hasta que lo libera, ya sea por que termina su ejecución o por que realiza una petición de E/S. El algoritmo FCFS resulta, especialmente problemático en los sistemas de tiempo compartido, donde es importante que cada usuario obtenga una cuota del CPU a intervalos regulares. Sería desastroso que un proceso mantuviera el CPU durante un periodo largo de tiempo.
  • 17. Planificación SJF Shortest-job-First (Trabajo más corto Primero), este algoritmo asocia con cada proceso la duración de la siguiente ráfaga de CPU del proceso. Cuando el CPU esta disponible, se asigna al proceso que tiene la siguiente ráfaga de CPU más corta. Cuando las siguientes ráfagas de CPU de dos procesos son iguales, se usa la planificación FCFS para romper el empate. Un término más apropiado sería el de “algoritmo de la siguiente ráfaga de CPU más corta”, ya que la planificación depende de la duración de la siguiente ráfaga de CPU, en lugar de depender de la duración total. Como ejemplo de planificación SFJ, tenemos el siguiente conjunto de procesos, estando especificada la duración de la ráfaga de CPU en milisegundos: El tiempo de espera es de 3 milisegundos para el proceso P1, de 16 milisegundos para el proceso P2, de 9 milisegundos para el proceso P3 y de 0 milisegundos para el proceso P4. Por tanto, el tiempo medio de espera es de (3+16+9+0)/4 = 7 milisegundos. Por comparación, si estuviéramos usando el esquema de planificación FCFS, el tiempo de espera seria de 10.25 milisegundos El algoritmo de planificación SJF es probablemente óptimo, ya que proporciona el tiempo medio de espera mínimo para un conjunto de procesos. Al anteponer un proceso corto a uno largo disminuye el tiempo de espera del proceso corto en mayor medida de lo que incrementa el tiempo de espera del proceso largo. Por esto, el tiempo medio de espera disminuye. La dificultad del algoritmo SJF es conocer la duración de la siguiente solicitud de CPU. En una planificación a largo plazo en un sistema de procesamiento por lotes, podemos usar una duración el límite del tiempo del proceso que el usuario especifique en el momento de enviar el trabajo. La planificación SJF se usa frecuentemente como mecanismo de planificación a largo plazo. Aunque el algoritmo SJF es optimo, no se puede implementar en el nivel de planificación del CPU a corto plazo, ya que no hay forma de conocer la duración de la siguiente ráfaga de CPU. Un método consiste en intentar aproximar la planificación SJF: podemos no conocer la duración de la siguiente ráfaga de CPU, pero podemos predecir su valor, por el procedimiento de confiar en que la siguiente ráfaga de CPU sea similar en duración a las anteriores. De esta manera, calculando una aproximación de la duración de la siguiente ráfaga de CPU, podemos tomar el proceso que tenga la ráfaga de CPU predicha más corta. La siguiente ráfaga de CPU se predice como una media exponencial de las duraciones medias anteriores. Sea tn la duración de la n-ésima ráfaga de CPU y sea τn+1 el valor predicho rapa la siguiente ráfaga de CPU. Entonces, para α, 0≤α≤1, se define: τn+1 = αtn + (1 - α)tn Esta fórmula define un promedio exponencial. El valor de tn contiene la
  • 18. información más reciente; τn almacena el historial pasado. El parámetro α controla el peso relativo del historial reciente y pasado de nuestra predicción. Si α=0, entonces τn+1 = τn, y el historial reciente no tiene ningún efecto; si α=1, entonces τn+1 = τn y solo la ráfaga de CPU mas reciente importa. Frecuentemente, α=1/2, el historial reciente y pasado tienen el mismo peso. El valor inicial τ0 puede definirse como una constante o como un promedio global para todo el sistema. La siguiente figura muestra el promedio exponencial como α=1/2 y τ0 = 10. Para entender el comportamiento del promedio exponencial, podemos desarrollar la formula τn+1 sustituyendo el valor de τn y el de los términos sucesivos, obteniendo τn+1 = αtn + (1 – α) αtn-1 + … + (1 – α)jαtn-j + … + (1 – α) n-1 τ0 Dado que tanto α como 1 - α con menores o iguales a 1, cada término sucesivo tiene menor peso que su predecesor. El algoritmo SJF puede ser cooperativo o apropiativo. La necesidad de eligir surge se da cuando un proceso llega a la cola de procesos preparados mientras que un proceso anterior está todavia en ejecución. La siguiente ráfaga de CPU del proceso que acaba de llegar puede ser más corta que lo que quede del proceso actualmente en ejecución. Un algoritmo SJF apropiativo detendrá el proceso, mientras que un algoritmo sin desalojo permitirá que dicho proceso termine su rafagá de CPU. La planificación SJF apropiativa tambien es conocida como: planificación con selección del proceso con tiempo restante más corto. Analizaremos el siguiente ejemplo con cuatro procesos donde tenemos especificada la duración de la ráfaga de CPU en milisegundos: Si los procesos llegan a la cola de procesos preparados en los instantes que se muestran y necesitan los tiempos que se muestran los tiempos de ráfaga indicados. El proceso P1 se inicia en el instante 0, dado que es el único proceso que hay en la cola. El proceso P2 llega en el instante 1. El tiempo que le da al proceso P1 (7 milisegundos) es mayor que el tiempo requerido por el proceso P2 (4 milisegundos), por lo que el proceso P1 se desaloja y se planifica el proceso P2. El tiempo medio de espera en este ejemplo es de ( (10 - 1) + (1 - 1) + (17 - 2) + (5 - 3) )/4 = 26/4 = 6.5 milisegundos. La planificacion SJF cooperativa proporcionaria un tiempo promedio de espera de 7.75 milisegundos. Planificación por Prioridades El algoritmo SJF es un caso especial del algoritmo de planificación por prioridades general. A cada proceso se le asocia una prioridad y el CPU se le asigna al proceso que tenga la prioridad mas alta. Los procesos con la misma prioridad se planifican con un orden FCFS. Un algoritmo SJF es simplemente un
  • 19. algoritmo por prioridades donde la prioridad (p) es el inverso de la siguiente ráfaga de CPU (predicha). Cuanto mas larga sea la ráfaga del CPU, menor será la prioridad y viceversa. Se debe observar que al hablar de planificación se piensa en términos de “alta” prioridad y “baja” prioridad. Generalmente, las prioridades se indican mediante un rango de números fijo, como por ejemplo de 0 al 7, o del 0 al 4095. Sin embargo, no existe un consenso sobre si 0 es la prioridad mas alta o mas baja. Algunos sistemas usan los números bajos para representar una prioridad baja, mientras que otros sistemas operativos manejan los números bajos como prioridad alta; esta diferencia puede presentar confusiones. En este caso supondremos que los números bajos son las prioridades altas. Por ejemplo, consideremos el siguiente conjunto de procesos y supongamos que llegan en el instante, en este orden P1, P2, … , P5, estando la duración de las ráfagas de CPU especificada en milisegundos: Usando la planificación por prioridades, vamos a planificar estos procesos de acuerdo con el diagrama de Gantt: El tiempo de espera es de 8.2 milisegundos. Las prioridades pueden definirse interna o externamente. Las prioridades definidas internamente usan algún valor mensurable para calcular la prioridad de un proceso. Por ejemplo para calcular las prioridades se han usado en distintos sistemas magnitudes tales como los límites de tiempo, los requisitos de memoria, el numero de archivos abiertos y la relación entre la ráfaga de E/S y la ráfaga de CPU promedio. Las prioridades definidas externamente se establecen en función de criterios externos al sistema operativo, como por ejemplo la importancia, el coste monetario de uso de la computadora, el departamento que patrocina el trabajo y otros factores, a menudo de carácter político. La planificación por prioridades puede ser apropiativa o cooperativa. Un algoritmo de planificación por prioridades apropiativo, expulsara del CPU al proceso actual si la prioridad del proceso que acaba de llegar es mayor. Y de manera cooperativa simplemente pondrá el nuevo proceso al principio de la cola de procesos preparados. Un problema importante de los algoritmos de planificación por prioridades es el bloqueo indefinido o la muerte por inanición. Un proceso que está preparado apara ejecutarse pero está esperando a acceder del CPU puede considerarse bloqueado; un algoritmo de planificación por prioridades puede dejar a algunos procesos de baja prioridad esperando indefinidamente. Una solución al problema del bloqueo indefinido de procesos de baja prioridad consiste en aplicar mecanismos de envejecimiento. Esta técnica consiste en aumentar gradualmente la prioridad de los procesos que estén esperando en el sistema durante mucho tiempo.
  • 20. Planificación por turnos El algoritmo de planificación por turnos (RR, round robin) está diseñado especialmente para los sistemas de tiempo compartido. Es similar a la planificación FCFS, pero se añade la técnica de desalojo para conmutar entre procesos. En este tipo de sistema se define una pequeña unidad de tiempo, denominada cuanto de tiempo, franja temporal. Generalmente, el cuanto de tiempo se encuentra en el rango comprendido entre 10 y 100 milisegundos. La cola de procesos preparados se trata como una cola circular. El planificador del CPU recorre la cola de procesos preparados, asignando el CPU a cada proceso durante un intervalo de tiempo de hasta 1 cuanto de tiempo. Para implementar esta planificación, mantenemos la cola de procesos preparados en una cola FIFO de procesos. Los procesos nuevos se añaden al final. El planificador del CPU toma el primer proceso de la cola, configura un temporizador para que interrumpa pasado 1 cuanto de tiempo y despacha el proceso. Puede ocurrir una de dos cosas. El proceso puede tener una ráfaga de CPU cuya duración sea menor de 1 cuanto; en este caso el propio proceso libera el CPU. Entonces el planificador continuara con el siguiente proceso preparado de la cola. Pero si la ráfaga es mayor a 1 cuanto de tiempo, se producirá un fin de cuenta del temporizador y este enviara una interrupción al sistema operativo; entonces se ejecutara un cambio de contexto y el proceso se colocara al final de la cola. El planificador seleccionara al siguiente proceso de la cola. El tiempo medio de espera en los sistemas por turnos es, con frecuencia, largo. Consideremos el siguiente caso, un conjunto de procesos llega en el instante 0 especificada la duración en ráfagas de milisegundos: Si usamos un cuanto de tiempo de 4 milisegundos, entonces el proceso P1 obtiene los 4 primeros milisegundos. Dado que necesita otros 20 milisegundos, es desalojado después del primer cuanto de tiempo, y la CPU se concede al siguiente proceso de la cola, proceso P2. Puesto que el proceso P2 no necesita 4 milisegundos, termine antes de que caduque su cuanto. Entonces el CPU se proporciona al siguiente proceso, el proceso P3. Una vez que cada proceso ha recibido un cuanto de tiempo, el CPU es devuelta al proceso P1 para un cuanto de tiempo adicional. La planificación por turnos restante es: El tiempo medio de espera es 17/3 = 5.66 milisegundos. Planificación mediante colas multinivel Un algoritmo de planificación mediante colas multinivel divide la cola de procesos preparados en varias colas distintas. Los procesos se asignan permanentemente a una cola en función de alguna propiedad del proceso, por ejemplo, el tamaño de memoria, la prioridad del proceso o el tipo de proceso. Cada cola tiene su propio algoritmo de
  • 21. planificación. Por ejemplo, pueden emplearse colas distintas para los procesos de primer plano y de segundo plano. La cola de primer plano puede planificarse mediante un algoritmo por turnos, mientras que para la cola de segundo plano puede emplearse un algoritmo FCFS. Además, debe definirse una planificación entre las colas, la cual suele implementarse como una planificación apropiativa y prioridad fija. Por ejemplo, la cola de procesos de primer plano puede tener prioridad absoluta sobre la cola de procesos de segundo plano. Veamos un ejemplo de algoritmo de planificación mediante colas multinivel con las cinco colas que se enumeran a continuación, según su orden de prioridad: 1. Procesos del sistema 2. Procesos interactivos 3. Procesos de edición interactivos 4. Procesos por lotes 5. Procesos de estudiantes Cada cola tiene prioridad absoluta sobre las colas de prioridad más baja. Por ejemplo, ningún proceso de la cola por lotes podrá ejecutarse hasta que se hayan vaciando completamente las colas de los procesos del sistema, los procesos interactivos y los procesos de edición interactivos. Si un proceso de edición interactivo llega a la cola de procesos preparados mientras se está ejecutando un procesos por lotes, el proceso por lotes será desalojado. Otra posibilidad consiste en repartir el tiempo entre las colas. En este caso, cada cola obtiene una cierta porción del tiempo del CPU, con la que puede entonces planificar sus distintos procesos. Por ejemplo, en el caso de las colas de procesos de primer plano y segundo plano, la cola de primer plano puede disponer del 80% del tiempo del CPU, mientras que la cola de segundo proceso obtiene el 20% para gestionar sus procesos mediante el método FCFS. Planificación mediante colas multinivel realimentadas El algoritmo de planificación mediante colas multinivel realimentadas permite mover un proceso de una cola a otra. La idea es separar los procesos en función de las características de sus ráfagas de CPU. Si un proceso utiliza demasiado tiempo de CPU, se pasa a una cola de prioridad más baja. Este esquema deja los procesos limitados por E/S y los procesos interactivos en las colas de prioridad más alta. Además un proceso que esté esperando demasiado tiempo en una cola de baja prioridad puede pasarse a una cola de prioridad más alta. Este mecanismo de envejecimiento evita el bloqueo indefinido.
  • 22. Por ejemplo, consideremos un planificador de colas multinivel retroalimentadas, numeradas de 0 a 2 (ver figura abajo). En primer lugar, el planificador ejecuta todos los procesos de la cola 0. Solo cuando la cola 0 este vacía ejecutara los procesos de la cola 1. De forma similar los procesos de la cola 2 solo se ejecutaran si las colas 0 y 1 están vacías. Un proceso que llegue a la cola 1 desalojara a un proceso de la cola 2 y este proceso de la cola 1 será, a su vez, desalojado por un proceso que llegue de la cola 0. Un proceso que entre en la cola de procesos preparados se coloca en la cola 0 y a cada uno de los procesos de esa cola se le proporciona un cuanto de tiempo de 8 milisegundos. Si el proceso no termina en ese tiempo, se pasa al final de la cola 1. Si al cola 0 esta vacía, al proceso que se encuentra al principio de la cola 1 se le asigna un cuanto de 16 milisegundos. Si no se completa en ese tiempo, se lo desaloja y se lo incluye en la cola 2. Los procesos de la cola 2 se ejecutan basándose en una planificación FCFS, pero solo cuando las colas 0 y 1 están vacías. Este algoritmo de planificación proporciona la prioridad más alta a todo proceso que tenga una ráfaga de CPU de 0 milisegundos o menos. Tales procesos acceden rápidamente al CPU, concluyen su ráfaga de CPU y pasan a su siguiente ráfaga de E/S. Los procesos que necesitan más de 8 milisegundos y menos de 24 milisegundos también son servidos rápidamente, aunque con una prioridad más baja que los procesos más cortos. Los procesos largos terminan yendo automáticamente a la cola 2 y se sirven, siguiendo el orden FCFS, son los ciclos de CPU no utilizados por las colas 0 y 1. En general, un planificador mediante colas multinivel realimentadas se define mediante los parámetros siguientes: El numero de colas El algoritmo de planificación de cada cola El método usado para determinar cuándo pasar un proceso a una cola de prioridad más alta El método usado para determinar cuándo pasar un proceso a una cola de prioridad más baja El método usado para determinar en qué cola se introducirá un proceso cuando haya que darle servicio La definición del planificador mediante colas multinivel realimentadas le convierte en el algoritmo de planificación del CPU más general. Puede configurarse este algoritmo para adaptarlo a cualquier sistema específico que se quiera diseñar. Lamentablemente, también es el algoritmo más complejo, puesto que definir el mejor planificador requiere disponer de algún mecanismo para seleccionar los valores de todos los parámetros. Planificación de sistemas multiprocesador
  • 23. Cuando se cuenta con múltiples procesadores; se puede compartir la carga; sin embargo, el problema de la planificación se hace más complejo. Presentaremos diversas cuestiones acerca de la planificación multiprocesador. Nos concentraremos en los sistemas homogéneos (procesadores idénticos en su funcionalidad). Métodos de planificación en los sistemas multiprocesador Un método para planificar el CPU en un sistema multiprocesador consiste en que todas las decisiones sobre la planificación, el procesamiento de E/S y otras actividades del sistema sean gestionadas por un mismo procesador, el servidor maestro. Los demás procesadores solo ejecutan código de usuario. Este procesamiento asimétrico resulta simple, porque solo hay un procesador que accede a las estructuras de datos del sistema, reduciendo la necesidad de compartir datos. Un segundo método utiliza el multiprocesamiento simétrico (SMP), en el que cada uno de los procesadores se auto-planifica. Todos los procesos pueden estar en una cola común de procesos preparados o cada procesador puede tener su propia cola privada de procesos preparados. Independientemente de esto, la planificación se lleva a cabo haciendo que el planificador de cada procesador examine la cola de procesos preparados y seleccione un proceso para ejecutarlo. Practicamente todos los Sistemas Operativos modernos soportan el multiprocesamiento simétrico. Afinidad al procesador Esto significa que un proceso tiene una afinidad hacia el procesador en que esta ejecutándose actualmente. La afinidad al procesador toma varias formas. Cuando un sistema operativo tiene la política de intentar mantener un proceso en ejecución en el mismo procesador, pero no esta garantizado que lo haga, nos encontramos ante una situación conocida como afinidad suave. En este caso, es posible que un proceso migre entre procesadores. Algunos sistemas como Linux, también proporcionan llamadas al sistema que soportan la afinidad dura, la cual permite a un proceso especificar que no debe migrar a otros procesadores.