Está en la página 1de 91

UNIDAD I

INTRODUCCION Y TIPOS DE SISTEMAS OPERATIVOS

1.1 DEFINICIONES DE UN SISTEMA OPERATIVO

A continuación se analizaran algunas definiciones sobre lo que es un sistema operativo:

Los sistemas operativos son los programas de gestión del hardware de un sistema de computación electrónico, así como de establecimiento de su relación con el usuario. Es por tanto uno de los elementos software de bajo nivel más importante, y hace de puente entre el software, el hardware y el usuario.

Intermediario entre el usuario y los programas de aplicación y el hardware

– Proporciona una capa de aislamiento

– Determina la compatibilidad de los programas

Las tareas principales

– Facilitar el manejo del ordenador

– Utilizar el hardware de forma eficiente

Se ejecuta continuamente desde que arranca el ordenador

Un sistema operativo (S.O.) es el conjunto de programas responsable de la administración y coordinación de los recursos en un sistema de computadoras.

Un sistema de computadoras se compone de:

Hardware – CPU, memoria y dispositivos de entrada/salida (E/S)

Software – aplicaciones, herramientas de programación y programas utilitarios

Los usuarios son personas, máquinas o programas que usan los servicios del sistema operativo.

Es el software que controla la computadora, sirve de interfaz hombre-máquina y administra los recursos de un sistema de cómputo hardware y software.

Lo importante es que el sistema operativo debe:

Proveer un mecanismo conveniente para que los usuarios ejecuten las aplicaciones y manejen el hardware, decidiendo quién y cómo se utilizan los recursos. Permitir la operación eficiente del sistema de computadoras, especialmente en sistemas multitareas y multiusuarios.

1.2

FUNCIONES DE UN SISTEMA OPERATIVO

Las tareas que desempeña un sistema operativo dependen en cierta medida del tipo de las características de cada ordenador. Así las funciones de un sistema operativo multitarea, en un gran ordenador, son diferentes de las de un

ordenador personal. Sin embargo, existen ciertos puntos en común que permiten identificar de forma muy general las tareas principales de un sistema operativo en:

Proporcionar una interfaz de usuario, para que este último se pueda comunicar con la computadora

Administrar y controlar los dispositivos de hardware del computador

Administrar y mantener los sistemas de archivo de disco

Apoyar la ejecución de otros programas

de disco  Apoyar la ejecución de otros programas Figura1: Funciones de un sistema operativo Fuente:

Figura1: Funciones de un sistema operativo

Fuente: http://cert.inteco.es/extfrontinteco/img/Image/intecocert/Formacion/software/so.jpg

1.3

LOS

COMPUTADORAS

SISTEMAS

OPERATIVOS

Y

LOS

SISTEMAS

DE

La siguiente figura muestra la relación entre los sistemas operativos y el resto del sistema de computadoras:

Usuario 1 Usuario 2 … Usuario n
Usuario 1
Usuario 2
Usuario n

Interfaz de Comandos o Aplicaciones (procesadores de palabras, hojas de cálculo, sistemas de bases de datos)

Sistema

Operativo

Hardware

Figura 2: Relación entre los sistemas operativos y el resto del sistema de computadoras

Fuente: http://www.fing.edu.uy/inco/cursos/sistoper/recursosTeoricos/SO-Teo-Introduccion.pdf

Los usuarios se comunican con el sistema operativo mediante la invocación de las aplicaciones o el uso de una interfaz de comandos:

Interfaz de la Línea de Comandos (CLI, Command-Line Interface) comandos, opciones y argumentos como texto

Interfaz Gráfica para Usuarios (GUI, Graphical User Interface) ventanas, íconos, menús y dispositivos apuntadores

Las aplicaciones se comunican con el sistema operativo mediante:

Llamadas del sistema (system calls) – funciones que el sistema operativo provee para que las aplicaciones soliciten servicios

API(Application Programming Interface) - conjunto de funciones, procedimientos o clases que un sistema operativo o un lenguaje de programación provee para atender solicitudes de los programas

El sistema operativo se comunica con el hardware mediante el uso de interrupciones (interrupts)

Una interrupción es una señal que un dispositivo de hardware envía al

sistema operativo para indicar que éste necesita ser atendido

1.4 COMPONENTES DE UN SISTEMA OPERATIVO

De manera esquemática, un sistema operativo se compone de:

a. Núcleo (Kernel): responsable de la gestión de memoria, de disco y de procesos.

b. Shell (Intérprete de comandos): es el proceso encargado de traducir los comandos que los usuarios introducen, a instrucciones que el sistema operativo entiende.

c. Servicios (API: Aplication Program Interface): mediante estos servicios las aplicaciones pueden realizar peticiones al sistema operativo para acceder a los recursos hardware del sistema.

operativo para acceder a los recursos hardware del sistema. Figura 3: Componentes de un sistema operativo

Figura 3: Componentes de un sistema operativo

Fuente: http://www.scribd.com/doc/98644/GUIA-DE-SISTEMA-OPERATIVO

1.4.1 Núcleo del sistema operativo (Kernel)

Es lo primero que se carga del sistema operativo al arrancar el ordenador. Reside permanentemente en memoria y atiende las llamadas al sistema. Tiene las siguientes funciones básicas:

Carga inicial (programa de arranque)

Administración de memoria

Administración del procesador

Administración de dispositivos

Administración de los archivos

El administrador de la memoria (memory manager) está a cargo de la memoria principal (RAM).

Responsabilidades del administrador de la memoria:

o

Preserva el espacio que ocupa el sistema operativo de forma tal que no pueda ser alterado accidental o intencionalmente.

o

Determina la localización en RAM de los programas que se ejecutan.

o

Asigna y/o libera espacio en memoria de acuerdo a solicitudes de los programas.

o

En los sistemas multiusuarios, monitorea las porciones de RAM asignadas a cada usuario.

El administrador del procesador (processor manager) está a cargo de asignar el CPU a los programas que se ejecutan (los procesos).

o

Un programa es una entidad pasiva, es un conjunto de instrucciones.

o

Un proceso es una entidad activa que contiene una imagen del código, memoria asignada, atributos de seguridad y el estado del CPU (registros).

o

Un programa puede crear uno o más procesos cuando se ejecuta.

Responsabilidades del administrador del procesador:

o

Monitorea el estado del CPU para determinar si el CPU está ejecutando un proceso o espera por una operación de lectura o escritura.

o

Planifica cómo se ejecutan los procesos por parte del CPU:

Decidiendo si se acepta o rechaza cada proceso

Decidiendo a qué proceso se le asignan los recursos del CPU y por cuánto tiempo

o

Provee mecanismos para la sincronización y la comunicación entre los procesos.

o

Provee mecanismos para el manejo de procesos concurrentes.

El administrador de los dispositivos (device manager) está a cargo de

manejar dispositivos tales como teclado, mouse, pantalla, impresora y las unidades de disco.

o Le esconde las peculiaridades de estos dispositivos al usuario.

Responsabilidades del administrador de los dispositivos:

o

Asigna y libera recursos para los dispositivos mediante políticas de planificación.

o

Comienza la operación de los dispositivos.

o

Permite la comunicación entre dispositivos.

El administrador de los archivos (file manager) está a cargo de monitorear cada archivo en el sistema.

o Provee una visión lógica y uniforme del almacenamiento de la información en la memoria secundaria.

Responsabilidades del administrador de los archivos:

o

Provee mecanismos para crear y eliminar archivos.

o

Provee mecanismos para organizar archivos relacionados en directorios.

o

Controla el acceso y la modificación de los directorios y archivos.

o

Asigna y libera recursos para la utilización de los archivos.

En la actualidad los sistemas operativos incluyen un componente conocido como el administrador de la red.

El administrador de la red (network administrator) está a cargo de proveer mecanismos para que distintos usuarios utilicen y compartan los recursos de la red de forma controlada y segura.

o

Es importante recalcar que los componentes de un sistema operativo deben interactuar armoniosamente unos con otros.

o

Estos componentes no actúan aisladamente.

Ejemplo de orden en el arranque de un computador Como ejemplo, consideremos lo que ocurre cuando se quiere ejecutar un programa:

o

El administrador de dispositivos recibe e interpreta las señales eléctricas del teclado o el mouse y le envía un comando al administrador del procesador.

o

El administrador del procesador determina si el programa está ya en memoria o si hay que leerlo de disco.

o

Si hay que leer el programa de disco, el administrador del procesador le envía un comando al administrador de archivos para que éste determine su localización en disco.

o

El administrador de archivos le envía un comando al administrador de dispositivos para que cargue el programa y éste último le envía un comando

al administrador de memoria para que encuentre espacio en RAM, coloque el programa y registre su localización en RAM.

o

Una vez que el programa está en memoria, el administrador del procesador determina la prioridad y los recursos que le corresponde.

o

Mientras el programa ejecuta, los administradores manejan los recursos que el proceso necesita.

o

Cuando el programa termina de ejecutar, los administradores liberaran los recursos.

1 2 3 Comando Señales Ad.dispositivos Ad.procesador Si lee del disco Teclado eléctricas Encuentre espacio
1
2
3
Comando
Señales
Ad.dispositivos
Ad.procesador
Si lee del
disco
Teclado
eléctricas
Encuentre espacio
Hay que leerlo de disco
o si está ya en memoria
Ad.archivos
5
en RAM
Cargue el
programa
Ad.memoria
4
Determine
prioridad
6

Figura 4: Orden de arranque en un computador

Fuente: Autor

1.4.2 Shell (Interprete de comandos)

Para que un usuario pueda dialogar directamente con el sistema operativo, se proporciona una interfaz de usuario básica para:

Cargar programas

Abortar programas

Introducir datos a los programas

Trabajar con archivos

Trabajar con redes

Ejemplos de intérprete de comandos:

JCL en sistemas por lotes

COMMAND.COM en MS-DOS

Shell en UNIX

a. Interprete de comandos del sistema operativo Windows

Algunos sistemas operativos incluyen el intérprete de comandos en el kernel. Otros lo ejecutan como un programa especial que se ejecuta cuando se inicia un trabajo o cuando un usuario inicia sesión. La función principal del intérprete de comandos es obtener y ejecutar en el sistema, el comando especificado por el usuario. Uno de los métodos consiste en que el propio intérprete de comandos contiene el código que el comando tiene que ejecutar.

Figura 5: Interprete de comandos Fuente: http://www.programasok.com/wp-content/uploads/2009/06/fileidentifier.jpg En la

Figura 5: Interprete de comandos

Fuente: http://www.programasok.com/wp-content/uploads/2009/06/fileidentifier.jpg

En la actualidad, e inicialmente orientadas al gran público, son más utilizadas las GUI (Graphics User Interface) que el clásico interprete de comandos textual.

Estas interfaces gráficas permiten al usuario dar órdenes y trabajar con el sistema operativo de manera sencilla, sin necesidad de un gran conocimiento de los comandos del sistema operativo.

b. GUI del sistema operativo Windows XP

sistema operativo. b. GUI del sistema operativo Windows XP Figura 6: GUI del sistema operativo Windows

Figura 6: GUI del sistema operativo Windows XP

Fuente: http://upload.wikimedia.org/wikipedia/en/b/ba/Windows_XP.PNG

1.5

ARRANQUE DE LA COMPUTADORA

El arranque de una computadora actual tiene 2 fases: la fase de arranque hardware y la fase de arranque del sistema operativo.

1.5.1 Arranque hardware

Como se indico anteriormente la computadora solo es capaz de realizar actividades útiles si cuenta con un programa cargado en memoria principal. Puesto que la memoria de las computadoras es volátil, cuando se enciende la máquina no contiene ninguna información útil.

Para resolver esta situación, las computadoras cuentan con un programa permanente grabado en una memoria no volátil denominada comúnmente BIOS en los PC.

La BIOS realiza 3 funciones:

1. Hace una comprobación del sistema para detectar sus características y comprobar si todos los componentes funcionan correctamente.

2. Busca el dispositivo de almacenamiento secundario donde se encuentra el sistema operativo y carga en memoria el programa cargador de este.

3. Finalmente da paso a este programa bifurcando a la dirección de memoria donde está este cargado.

El programa cargador del sistema operativo suele encontrarse en los primeros sectores del disco y tienen un tamaño prefijado por convenio.

1.5.2 Arranque software

El programa cargador tiene por misión traer a memoria principal algunos de los componentes del sistema operativo. Una vez cargados estos componentes se pasa a la fase de inicialización, que incluye las siguientes operaciones:

Comprobación del sistema

Se establecen las estructuras de información propias del sistema operativo como la tabla de procesos, las tablas de memoria y las de E/S.

Se crea un proceso de inicio o login por cada terminal definido en el sistema, así como una serie de procesos auxiliares y de demonios (o servicios).

1.6 ¿CÓMO FUNCIONA EL ARRANQUE DE UN COMPUTADOR?

Al poner en funcionamiento el computador, los circuitos y la memoria toman valores determinados. Mediante una señal de RESET, los registros y los biestables se pueden poner en valores predeterminados, pero no sucede lo mismo con la memoria principal, que no contiene ninguna información válida, es decir, que no contiene ningún programa.

Como sabemos, cualquier función que queramos que el computador lleve a cabo se tiene que hacer mediante el correspondiente programa de máquina.

Por tanto, para llevar un programa del disco duro a la memoria se necesita un programa, que en este caso se denomina cargador.

Esta situación, en la que no se dispone de un programa en memoria principal y en la cual, por tanto, el computador no puede hacer nada, se resuelve de la siguiente forma: parte de la memoria principal se construye con pastillas del tipo ROM, como se puede apreciar en el siguiente esquema:

Unidad de memoria Celdas

Unidad de memoria Celdas

Zona

ROM

Dirección

Zona

ROM

Dirección

0

0

2.023

1.048.575

1.046.526

1.048.575

Figura 7: Conformación de la memoria principal

Fuente: http://www.iearobotics.com/proyectos/comunica/Comunica_archivos/imagen1.png

En estas pastillas se registran unos programas que están siempre disponibles, ya que las pastillas ROM conservan siempre todo su contenido. En general, la zona ROM ocupa las direcciones menores o las mayores. Cuando arrancamos el computador, la señal RESET carga la dirección de esta zona de memoria en el contador del programa, de forma que se empieza a ejecutar el programa almacenado en esta posición. Los programas que se suelen incluir en esta zona de memoria son los siguientes:

a) Programa de test, que lleva a cabo una prueba del comportamiento del computador.

b) Programa cargador, que puede cargar otros programas residentes en disco o en disquete.

La memoria BIOS del PC es una memoria ROM que tiene varias funciones. Sirve para arrancar el PC, por lo que incluye un programa de test, que comprueba el funcionamiento del procesador y de la memoria principal, y un programa cargador, que carga programas desde disquete o disco duro. Además, tiene una serie de programas que llevan a cabo tareas de bajo nivel relacionadas con la entrada/salida.

1.7 PROCESO DE ARRANQUE DEL PC Encendido POST Carga BIOS Lectura CMOS Carga Sector de
1.7 PROCESO DE ARRANQUE DEL PC
Encendido
POST
Carga BIOS
Lectura
CMOS
Carga
Sector de arranque
Partición activa
Carga
SO
MBR

Figura 8: Proceso de arranque

Fuente: http://apuntesacademia.blogspot.com/2007_12_16_archive.html

1.8

BIOS: CONCEPTOS Y CONFIGURACION

1.8 BIOS: CONCEPTOS Y CONFIGURACION Figura 9: La BIOS Fuente:

Figura 9: La BIOS

Fuente: https://belenus.unirioja.es/~alortiz/imagenes/chip_bios.jpg

El BIOS (Basic Input Output System – Sistema Básico de Entrada Salida) es un programa que se encuentra grabado en un chip de la placa base, concretamente en una memoria de tipo ROM (Read-Only Memory). Este programa es el que se encarga de comprobar el hardware instalado en el sistema, ejecutar un test inicial de arranque, inicializar circuitos, manipular periféricos y dispositivos a bajo nivel y cargar el sistema de arranque que permite iniciar el sistema operativo. En resumen, es lo que permite que el ordenador arranque correctamente en primera instancia.

Inicialmente era muy complicado modificar la información del BIOS en el ROM, pero hoy en día la mayoría de los BIOS están almacenados en una memoria flash capaz de ser reescrita, esto es lo que permite que se pueda actualizar. El BIOS se apoya en otra memoria, llamada CMOS porque se construye con esa tecnología, en ella carga y almacena los valores que necesita y que son susceptibles de ser modificados (cantidad de memoria instalada, numero de discos duros, fecha y hora, etc.). A pesar de que apaguemos el ordenador, los valores de la memoria de BIOS se mantienen intactos, ¿cómo es posible?, pues gracias a una pila que la alimenta. Puesto que el consumo es muy bajo y se recarga al encender el ordenador, la pila puede durar varios años.

Cuando hay problemas con la pila, los valores de dicha memoria tienden a perderse, y es cuando pueden surgir problemas en el arranque del tipo: pérdida de fecha y hora, necesidad de reconfigurar dispositivos en cada arranque, y otros. En caso de problemas sustituir la pila es trivial, basta con comprar una de iguales características, retirar la vieja y colocar la nueva en su lugar.

En condiciones normales no es necesario acceder al BIOS ya que al instalar un dispositivo, siempre que hayamos tenido la precaución de asegurarnos que es compatible o aceptable por nuestra placa base, éste es reconocido inmediatamente y configurado por BIOS para el arranque. No obstante, hay ocasiones en las que se hace necesario acceder a su configuración, veremos cómo hacerlo y algunos ejemplos.

1.9

ACCESO Y MANIPULACIÓN DEL BIOS:

Para acceder al programa de configuración del BIOS, generalmente llamado CMOS Setup, tendremos que hacerlo pulsando un botón durante el inicio del arranque del ordenador. Generalmente suele ser la tecla Supr aunque esto varía según los tipos de placa y en portátiles. Otras teclas empleadas son: F1, Esc, o incluso una combinación, para saberlo con exactitud bastará con una consulta al manual de su placa base o bien prestando atención a la primera pantalla del arranque, ya que suele figurar en la parte inferior un mensaje similar a este:

''Press DEL to enter Setup'' El aspecto general del BIOS dependerá de qué tipo en concreto tenga en su

placa, las más comunes son: Award, Phoenix (se han unido) y AMI. Bastante similares pero no iguales. El programa del BIOS suele estar en un perfecto inglés

y además aparecen términos que no son realmente sencillos, si no sabe lo que está tocando consulte el manual o a un especialista, de lo contrario se encontrará con problemas.

Aunque tengan nombres diferentes, existen algunos apartados comunes a todos los tipos de BIOS.

Una clasificación puede ser:

1. Configuración básica de parámetros - Standard CMOS Setup.

2. Opciones de BIOS - BIOS Features, Advanced Setup.

3. Configuración avanzada y chipset - Chipset features.

4. Password, periféricos, discos duros, etc.

5. Otras utilidades.

Bajo el 1er punto se puede encontrar la configuración de la fecha y hora, los discos duros conectados (IDE) y la memoria detectada, entre otras cosas.

En el punto 2º existen muchos parámetros modificables, suelen aparecer:

caché, secuencia de arranque (Boot sequence), intercambio de disqueteras, etc.

En el punto 3 podemos encontrar parámetros relativos a las características del chipset, memoria RAM, buses y controladores.

Bajo el punto 4 hemos reunido una serie de opciones que suelen estar distribuidas, gracias a ellas podemos insertar una contraseña de acceso al programa del BIOS, modificar parámetros relativos a los periféricos integrados, control de la administración de energía, control de la frecuencia y el voltaje, etc.

Y finalmente en el punto 5 reunimos las opciones que nos permiten guardar los

cambios efectuados, descartarlos, cargar valores por defecto, etc.

En la parte inferior de la interfaz del programa podremos ver el inventario de teclas necesarias para navegar entre las opciones y modificarlas, es importante leerlo y tenerlo en cuenta.

Además es importante aclara que dependiendo del tipo de placa base o del modelo la presentación del setup puede variar.

Figura 10: Imagen de la interfaz más común de BIOS (Award y Phoenix) Fuente:

Figura 10: Imagen de la interfaz más común de BIOS (Award y Phoenix)

Fuente: http://tpq70a.vtrbandaancha.net/imagenes/Blog005_Fig02.jpg

Modificaciones comunes: ejemplos. Existen una serie de parámetros que son susceptibles de ser modificados en algún momento, de hecho en la mayoría de foros de soporte técnico se plantean esas dudas. Vamos a explicar cuáles son y usarlos como ejemplo:

1.9.1 Secuencia de arranque:

Esto le indica al BIOS a qué unidad ha de ir para buscar el arranque del sistema operativo. La secuencia indica el orden de izquierda a derecha en que se buscará en las unidades. Antiguamente el orden solía marcar A C SCSI/otros lo cual indicaba que primero que debía mirar en la unidad A (disquetera) y posteriormente en C (disco duro principal), gracias a esto se podía arrancar el ordenador con un disco de arranque antes que el sistema operativo. Hoy en día esto ha cambiado en muchos casos, cuando se necesita arrancar desde un CD (instalación de sistemas operativos (Windows XP, Linux)) hay que modificar la secuencia de arranque (a menos que el sistema sea tan nuevo que ya venga de fábrica) para que inicialmente apunte a la unidad lectora de CD. Supongamos que la unidad tiene la letra D, el orden podría ser D A C o D C A, por ejemplo.

La opción suele encontrarse en BIOS Features >> Boot Sequence para las BIOS Award. En algunos casos en vez de integrarse en una sola opción, esto se realiza en varias, suelen referirse al orden de arranque de dispositivos y se llaman: First Boot Device, Second Boot Device, Third Boot Device y Boot Other Device. Basta especificar en cada una cuál es el dispositivo que arrancará en ese orden (First = primero, Second = segundo, Third = tercero, Other = otro).

Figura 11: Secuencia de arranque Fuente: http://tpq70a.vtrbandaancha.net/imagenes/Blog005_Fig06.jpg 1.9.2 ¿Cómo se
Figura 11: Secuencia de arranque Fuente: http://tpq70a.vtrbandaancha.net/imagenes/Blog005_Fig06.jpg 1.9.2 ¿Cómo se

Figura 11: Secuencia de arranque

Fuente: http://tpq70a.vtrbandaancha.net/imagenes/Blog005_Fig06.jpg

1.9.2 ¿Cómo se inicia en este caso un sistema operativo básico como el MS-DOS?

Veamos, en el caso anterior, como se iniciaría un sistema operativo como MSDOS.

Al realizar el primer FDISK al disco duro, se creará el MBR del disco, el cual es un programa que contiene a su vez los datos de las posiciones de inicio / final de cada partición y el tipo de partición.

Creamos ahora una partición primara. Al formatearla, el MS-DOS, crea el sector de boot de la partición. Es similar al programa anterior del MBR, excepto que este sector de boot tiene “dentro” el nombre de un fichero que cargará: el IO.SYS. Este nombre es ‘hardcoded’, es decir, codificado en el interior de este sector de boot.

1. Cuando encendemos el PC, la BIOS de la maquina lee el cilindro cero, cabeza cero, sector 1 del disco duro y lo carga en memoria. Es decir, acaba de leer el MBR.

2. Le cede control para que se ejecute.

3. Al ejecutarse, el programa ‘lee’ de sus datos internos cual es la partición activa. Una vez localizada lee el primer sector de dicha partición y lo carga en memoria.

4. Le cede control para que se ejecute.

5. En este momento, en memoria está el programa correspondiente al sector de boot de una partición formateada MS-DOS. Este programa es ligeramente diferente al del MBR. En su interior, tiene las instrucciones para localizar el archivo IO.SYS

6. Una vez localizado, lo carga en memoria.

7.

Le cede el control para su ejecución…

y así comienza la carga de un

MSDOS: el IO.SYS lee el fichero MSDOS.SYS, el cual es de parámetros en los sistemas operativos W95, W98, ME. Posteriormente y una vez ejecutadas las tareas básicas e instaladas las rutinas del sistema operativo, carga el interprete de comandos: el ‘command.com’

8. Si nuestro sistema operativo fuese MS-DOS, aquí terminaría la carga. Si es W9X, busca el win.com para iniciar la carga de Windows.

Lo anterior, no es válido para sistemas operativos basados en núcleo NT (NT 4, W2000 o XP). Pero es necesario entender lo anterior como punto de referencia, para poder entender posteriormente y tal y como veremos a continuación, la carga de uno de estos sistemas operativos y la posibilidad y funcionamiento del gestor de inicio de estos sistemas el cual soporta la posibilidad de arrancar hasta 10 sistemas operativos en la misma máquina.

1.9.3 Posibles problemas en este inicio básico

Recordemos que el MBR tiene un doble contenido: un programa y los datos de las particiones. Al arrancar el PC, y una vez que la BIOS ha comprobado nuestra maquina, lo carga en memoria y lo ejecuta. Es el primer programa que se ejecuta en la máquina al encenderla. Por tanto, es lo más simple para “colar” en su lugar un virus.

1.10 SECUENCIA DE ARRANQUE DE WINDOWS XP

La BIOS, carga el MBR del disco duro, el cual comienza su ejecución y

determina cual es la partición activa.

Carga en memoria el primer sector de la partición activa (sector de boot de la partición) y le cede control para su ejecución.

El sector de boot, busca en el disco el programa NTLDR y lo carga en memoria cediéndole control para su ejecución.

El programa NTLDR, busca el archivo boot.ini, y en función de su contenido, muestra un menú para que seleccionemos el sistema a cargar.

Si teníamos un MS-DOS, W9X o ME, previo, nos parecerá también en dicho menú la opción de su carga. Si seleccionamos esta última opción buscará en el disco el

archivo bootsect.dos, el cual es el antiguo sector de boot de la partición del sistema operativo previo. Lo carga en memoria y le cede control.

Este, a su vez, buscará en el disco el archivo IO.SYS

correspondiente al MS-DOS, o W9X, lo cargará en memoria y le cederá control para iniciar ya el sistema operativo previo.

Si seleccionamos la entrada correspondiente a un NT / W2000 o XP, buscará en la propia línea del boot.ini, tal y como veremos a continuación, la partición de instalación del sistema operativo (de núcleo NT) y comenzará la carga real.

Tabla 1. Titulo: Resumen del arranque del computador

Fase

Operación

Iniciador ROM

Test del hardware

Carga del cargador del S.O.

Cargador del S.O.

Carga en memoria de componentes del S.O.

Inicialización S.O.

Test del sistema de archivos

Creación de estructuras de datos internas

Arranque de procesos del sistema(demonios)

Funcionamiento normal

 

Fuente: http://www.scribd.com/doc/98644/GUIA-DE-SISTEMA-OPERATIVO

1.11 MBR (Master Boot Record)

El MBR (Master Boot Record) está ubicado en los primeros 512 bytes del disco rígido. Es el encargado de almacenar el cargador de arranque y la tabla de particiones.

El cargador de arranque es un programa encargado de llevar el núcleo del sistema operativo a la memoria principal y cederle el control para éste se ejecute.

Un disco duro puede tener hasta 4 particiones primarias. Si deseamos más particiones debemos sacrificar una partición primaria y crear una partición extendida, dentro de la cual se pueden crear, como máximo, 4 particiones lógicas.

Aclaración: no se pueden guardar datos directamente en una partición extendida, sino que, los datos se guardan dentro de las particiones lógicas que ella alberga.

1.12 HISTORIA DE LOS SISTEMAS OPERATIVOS

La evolución de los sistemas operativos es paralela a la de las computadoras.

En los 1940s:

Primera generación de computadoras (tubos al vacío)

Las aplicaciones eran científicas, matemáticas y militares.

No había sistemas operativos ya que cada programa incluía las instrucciones para manejar los recursos necesarios.

Se programaba en lenguaje de máquina.

Las máquinas eran operadas por los programadores que reservaban tiempo de operación (se perdía tiempo).

El proceso de depuración era manual (el programador detenía el programa y examinaba el estado del CPU y RAM).

Los programas se diseñaban pensando en la utilización de recursos primero y la claridad del código después.

En la primera mitad de los 1950s:

Surgen bibliotecas (libraries) con subrutinas y macros que le permitían a los programadores manejar más fácilmente dispositivos de entrada/salida.

Estas bibliotecas son la génesis de los sistemas operativos ya que se fueron haciendo más complejas y podían controlar la ejecución de varios trabajos en secuencia.

En la segunda mitad de los 1950s:

Segunda generación de computadoras (transistores)

Comienzan a surgir las aplicaciones comerciales.

Surgen los primeros ensambladores (1954 por la IBM)

Surgen los compiladores y lenguajes de alto nivel, tales como FOTRAN (1954), ALGOL (1958) y COBOL (1959).

IBM comienza a desarrollar mainframes en masa.

General Motors, en 1956, crea lo que se considera el primer sistema operativo, el GM-NAA I/O System, un sistema operativo en lote.

Se contratan operadores que liberan de trabajo a los programadores.

Se comienza con la planificación de trabajos (job scheduling) que permite

agrupar varios programas que tengan requisitos semejantes y decidir la forma más adecuada de ejecutarlos.

Ej.: Compilar varios programas en COBOL

Surgen los lenguajes de control de trabajos (JCL, Job Control Language) para crear libretos que indican los pasos necesarios para ejecutar un trabajo.

La diferencia en velocidad entre el CPU y los dispositivos E/S se redujo.

Se creó el concepto de bloques de récords (record blocks) que permite agrupar varios récords lógicos en uno físico y disminuir las operaciones E/S.

Se crean memorias intermedias (buffers) para aligerar las operaciones E/S.

También se desarrollan métodos de organización de archivos tales como el acceso indexado y el aleatorio.

En los 1960s:

Tercera generación de computadoras (circuitos integrados)

Surgen las minicomputadoras.

La diferencia en velocidad entre el CPU y los dispositivos E/S es todavía un problema.

Para ayudar se crea la multiprogramación (multiprogramming) que permite que varios trabajos compartan la atención del CPU.

En la multiprogramación pasiva, el CPU cambia de un trabajo al próximo cuando el trabajo necesita esperar por un evento externo (normalmente una operación E/S).

En la multiprogramación activa, el sistema operativo le otorga a cada trabajo un pedazo de tiempo. Cuando expira el tiempo, se interrumpe el trabajo momentáneamente y se continúa con el próximo trabajo.

La multiprogramación requirió la optimización de métodos de planificación de trabajos (job scheduling) y de administración de la memoria.

La idea de otorgar pedazos de tiempo a los trabajos y de atender varios trabajos simultáneamente evolucionó hacia el time sharing (tiempo compartido) y las multitareas en los sistemas interactivos.

En los 1970s:

Se modifican algunos sistemas operativos en lote para que apoyen el concepto de tiempo compartido y permitan interactividad con varios usuarios a la vez.

Surgen los primeros sistemas operativos puramente interactivos, tales como UNIX a principios de los 1970s.

UNIX es multiusuarios y multitareas (multitasking).

Se desarrolló la memoria virtual, lo cual permitía que el CPU atendiera más programas utilizando parte de la memoria secundaria como memoria primaria.

Se crean los primeros sistemas administradores de bases de datos.

A mediados de los 1970s surgen las primeras computadoras personales (Apple, Tandy/Radio Shack, Commodore).

En esta década se crean las primeras supercomputadoras.

Surgen lenguajes de alto nivel tales como Pascal y C.

En los 1980s:

Disminuyen dramáticamente los costos de los componentes de las computadoras.

Las computadoras personales se vuelven más comunes.

Surgen lenguajes orientados a objetos tales como C++.

Mejora la infraestructura de comunicación de datos y surgen las redes de cobertura local (LAN, Local Area Network).

Surgen sistemas operativos y lenguajes de programación que apoyan el multiprocesamiento (tener más de un procesador).

Surgen los sistemas operativos de redes y sistemas distribuidos.

Sistemas distribuidos – el usuario trabaja con un grupo (cluster) de computadoras conectada en red como si fuera una sola.

En los 1990s:

Se popularizan las computadoras personales debido a las aplicaciones y sistemas operativos con GUIs.

Surge el World Wide Web y las aplicaciones de multimedios.

Los sistemas operativos en las computadoras personales se crean pensando en la conectividad con redes.

La seguridad en los sistemas se convierte en una prioridad.

En los 2000s:

Se crean sistemas operativos que apoyan procesadores con núcleos múltiples (multi-core processors).

Se desarrolla el concepto de virtualización que permite particionar una computadora en varias máquinas virtuales, cada una de ellas con su propio sistema operativo y aplicaciones.

Las aplicaciones multimedios que ejecutan en el Web se vuelven comunes.

Se habla de la tecnología ubicua (en todo lugar en todo momento) ya que dispositivos de uso común (celulares, PDAs, etc.) contienen computadoras que requieren sistemas operativos empotrados.

Tabla 2. Titulo: Evolución de los sistemas operativos

S.O

AÑO

 

AUTOR

GESTION DE

ARQUITECTURA

 

PROCESOS

Atlas

50 -60

University

of

Lotes

Monolítico

Manchester

The

 

Universidad

de

Lotes

Modular

Eindhoven

RC4000

 

Brinch

Hansen

de

S.O. Completo

Modular

Regenecentralen

Solo

 

Brinch

Hansen

de

Multiprogramado

Modular

Regenecentralen

CTSS

 

MIT

Multiprogramado

Monolítico

/

tiempo

compartido

Multics

 

MIT

Multiprogramado

Modular

/

tiempo

compartido

Unix

1969

Ritchie/Thompson

 

Multiprogramado

Monolítico

 

/

tiempo

compartido

Sprite

1984

 

Lotes

Monolítico

Merlin

1984

 

Multiprogramado

Modular

Windows

1985

Microsoft

 

Multiprogramado

Modular

NT

 

Match

1986

Darpa

Multiprogramado

Monolítico

Amoeba

1994

 

Distribuido

Microkernel

Windows

1995/98

Microsoft

 

Multiprogramado

Monolítico

95/98

 

Coyote

1996

Trinity

College

Distribuido

Modular

Dublin

Exokernel

   

Micro_kernel

Monolítico

Fuente: http://so.fciencias.unam.mx/presentaciones/ch8.pdf

Algunas tendencias en los sistemas operativos actuales son las siguientes:

El uso de hebras (threads). Una hebra es una porción de un proceso que puede ser ejecutada independientemente de las otras porciones. Un proceso puede crear varias hebras y éstas pueden ser ejecutadas por los núcleos de un CPU multi-core

La redefinición del kernel para que ocupe menos espacio en RAM. Originalmente, los sistemas operativos eran monolíticos y todos los componentes se cargaban a RAM. Actualmente, sólo el kernel permanece en RAM y éste carga los componentes que estime necesario

El diseño y programación orientada a objetos es usado para modularizar el sistema operativo y manejar su complejidad. Esto permite modificar piezas del sistema operativo sin afectar la integridad del resto del sistema

1.13 TIPOS DE SISTEMAS OPERATIVOS

Los sistemas operativos se categorizan de acuerdo al tiempo de respuesta y a cómo los datos entran al sistema

Los tipos principales de sistemas operativos son:

Sistemas en lote

Sistemas interactivos

Sistemas en tiempo real

1.13.1 Sistemas en lote

Los sistemas en lote (batch systems) se encontraban en las mainframes originales

Estos sistemas obtenían los datos e instrucciones de tarjetas perforadas o cintas que definían trabajos

Un trabajo (job) es un conjunto de tareas que se ejecutan sin intervención humana

Los sistemas en lote se medían por su rendimiento

El rendimiento (throughput) es la cantidad de trabajos completados en una cantidad dada de tiempo (normalmente horas)

1.13.2 Sistemas interactivos

Los sistemas interactivos (interactive systems) son los más comunes

actualmente y se encuentran en todo tipo de computadoras.

En estos sistemas los usuarios interactúan con el sistema operativo mediante interfaces de comandos

El tiempo de respuesta se mide en fracciones de segundos

Los sistemas interactivos permiten que varios usuarios y procesos compartan los recursos mediante la técnica de tiempo compartido (time sharing)

La mayoría de los sistemas interactivos son, por lo tanto, multiusuarios y multitareas (multitasking)

En los sistemas interactivos se pueden someter trabajos que se ejecutan en lote mediante el uso de libretos

Un libreto (script) es un archivo de texto que contiene un conjunto de comandos del sistema operativo

1.13.3 Sistemas de tiempo real

Los sistemas de tiempo real (real-time systems) son usados en ambientes especializados donde el tiempo de respuesta es crítico para la toma de decisiones.

Estos sistemas se encuentran en las computadoras de los transbordadores

espaciales, en sistemas de control de tráfico aéreo, en equipo médico sofisticado, robots industriales, en sistemas distribución de electricidad y en sistemas de conmutación telefónica, entre otros

En los sistemas de tiempo real el tiempo de respuesta es crítico

– 100% responsivo, 100% del tiempo

Estos sistemas están presentes en computadoras que poseen sensores que detectan eventos a los que se debe responder dentro de un plazo de tiempo definido (el deadline)

Hay dos tipos de sistemas de tiempo real:

Sistemas estrictos (hard real-time systems) – el sistema se cae si no se responde inmediatamente Por ejemplo, marcapasos, expulsión de bolsas de aire (air bags) en los autos, control de vuelo

Sistemas flexibles (soft real-time systems) – el sistema sufre una degradación en su desempeño si no se responde en el deadline pero no se cae: Por ejemplo, lavadoras, cámaras de vídeo

Otros tipos de sistemas que también se reconocen son:

Los sistemas empotrados (embedded systems) se colocan en

computadoras diseñadas para desempeñar unas pocas funciones definidas, comúnmente con restricciones de tiempo real

Es posible convertir un sistema operativo de propósito general en un sistema empotrado

Las computadoras y sistemas empotrados se colocan en productos a los cuales se les quiere añadir capacidades de procesamiento Sistemas tales como los de los motores y frenos de automóviles, marcapasos y elevadores son sistemas empotrados que también son de tiempo real Sistemas para equipos que tocan música, PDAs y consolas de juegos de vídeo son sistemas empotrados que no son de tiempo real

Los sistemas híbridos (hybrid systems) son una combinación de sistemas en lote e interactivos

Estos sistemas permiten interactividad con los usuarios pero ejecutan trabajos en lote cuando no hay muchos usuarios que atender

Se encuentran en mainframes modernos

1.13.4 Algunos sistemas operativos comerciales

Windows. Distintos tipos:

Para servidores: NT Server, 2000 Server, Server 2003, XP

profesional

Para clientes o domésticos: 2000, XP Home, Vista Home

Para equipos especiales (PDA’s, móviles, etc.): CE, Mobile

UNIX. Distintas versiones y distribuciones:

Unix (SUN)

Linux (Gratis)

Aix (IBM)

1.14 SISTEMAS OPERATIVOS POR SERVICIOS

Una de las clasificaciones más difundidas de los sistemas operativos se resume en la siguiente figura:

Figura 12: Sistemas operativos por servicios Fuente: http://www.dspace.espol.edu.ec/bitstream/123456789/1416/6/2757.pdf

Figura 12: Sistemas operativos por servicios

Fuente: http://www.dspace.espol.edu.ec/bitstream/123456789/1416/6/2757.pdf

1.15 PERSPECTIVAS DE UN SISTEMA OPERATIVO

A la hora de profundizar un poco más en este concepto de sistema operativo, se puede enfocar el sistema operativo de dos formas:

El sistema operativo como un manejador de recursos

El sistema operativo como una máquina ampliada

1.16 EL SISTEMA OPERATIVO COMO MANEJADOR DE RECURSOS

Cuando vemos el sistema operativo como un manejador de recursos, estamos pensando en las tareas y funcionalidad típica que ofrece. Como veremos en seguida, entre las funciones del sistema operativo está el gestionar los recursos del ordenador: la memoria, los ficheros, los puertos de entrada/salida, etc.

1.17 EL SISTEMA OPERATIVO COMO MÁQUINA AMPLIADA

La otra forma de ver un sistema operativo es como una máquina ampliada o máquina virtual. El sistema operativo hace de primera capa de software por encima del hardware. El resto del software obtiene las mismas funciones y de la misma forma, con independencia del hardware subyacente. Como ejemplo, no importa que la máquina sea un servidor Sun o HP, un PC Dell o Compaq. Si ejecutan, por ejemplo, el sistema operativo LINUX en alguna de sus distribuciones, el resto de programas ‘verán’ lo mismo como forma de interacción con los recursos, con independencia de cuál de las máquinas citadas esté ejecutando el LINUX. Es como si hubiésemos creado un hardware nuevo que se programa siempre igual.

Figura 13: Modelo de máquina virtual Fuente:

Figura 13: Modelo de máquina virtual

Fuente: http://blogs.utpl.edu.ec/sistemasoperativos/files/2009/03/capitulo-ii_so1.pdf

1.17.1 Ventajas y desventajas de las máquinas virtuales

Tabla 3. Titulo: Ventajas y desventajas de las máquinas virtuales

 

Ventajas

 

Desventajas

El concepto de máquina virtual provee protección total de los recursos del sistema ya que cada máquina virtual está aislada de las demás máquinas virtuales

No permite compartición directa de los recursos

Una

máquina

virtual

es

una

El concepto de máquina virtual es difícil de implementar debido al esfuerzo requerido para proveer una copia exacta de la máquina

herramienta perfecta para

el

desarrollo

e

investigación

de

sistemas operativos por ser que

el desarrollo

se

hace

en

una

 

máquina

virtual en

vez

de una

máquina física

 

Fuente: Autor

Beneficios.- El concepto de maquina virtual presenta varias ventajas. Observe que, en este tipo de entornos, existe una protección completa de los diversos recursos del sistema. Cada máquina virtual está completamente aislada de las demás, por lo que no existe problema de protección. Sin embargo no es posible la compartición directa de recursos. Se han implementado dos métodos para permitir dicho comportamiento. El primero es posible compartir un minidisco y por tanto compartir los archivos. En segundo lugar es posible definir una red de maquinas virtuales, pudiendo cada una de ellas enviar información a través de una red de comunicaciones virtuales.

1.18 EL

SISTEMA

ÓRDENES

OPERATIVO

USADO

CON

EL

LENGUAJE

DE

Básicamente podemos dividir a los usuarios de los servicios de los sistemas operativos en dos amplias clases: usuarios del lenguaje de órdenes y usuarios de las llamadas al sistema.

Informalmente, los usuarios del lenguaje de órdenes son aquellos que obtienen los servicios del sistema operativo mediante órdenes, ya sean tecleadas en el terminal o insertadas en un archivo de procesamiento (llamados scripts o batch). Estos lenguajes de órdenes suelen ser específicos del sistema, aunque, en general, las funciones suelen ser parecidas en todos ellos. Algunas de las clases funcionales típicas de las órdenes del sistema operativo son: las relacionadas con la conexión y desconexión, con la activación y control de programas, con la gestión de archivos, las que muestran información de estado, las que permiten la comunicación entre los usuarios y las relacionadas con la gestión del sistema.

Los usuarios de las llamadas al sistema invocan los servicios del sistema operativo mediante llamadas al sistema en tiempo de ejecución. Estos usuarios, conocidos como programadores de sistemas y aplicaciones, invocan a las llamadas al sistema desde sus programas. Además de proporcionar la mayoría de la funcionalidad accesible a los usuarios del lenguaje de órdenes, las llamadas al sistema suelen permitir un mayor control sobre las operaciones del sistema y un acceso más directo a las facilidades del hardware, especialmente a las de entrada/salida; por este motivo, las llamadas al sistema representan un superconjunto de las funciones accesibles a nivel de orden.

Ejemplo: la orden dar formato a un disco

Esta orden es captada por el intérprete de órdenes (shell), que es un programa independiente del sistema operativo.

El intérprete se encarga de traducir o descomponer la orden en llamadas al sistema, de forma que se realicen las operaciones asociadas a la ejecución de la orden.

Una vez ejecutada la orden, el intérprete visualiza el indicador de petición de entrada (<<promt>>) a la espera de que el usuario proporcione una orden nueva.

1.19 DISEÑO E IMPLEMENTACIÓN DEL SISTEMA OPERATIVO

Los problemas a los que nos enfrentamos al diseñar e implementar un sistema operativo son:

Objetivos del diseño.- el primer problema es la definición concreta de los objetivos y especificaciones, este se puede dividir en dos grupos básicos: objetivos del usuario y objetivos del sistema.

Mecanismos y políticas.- Es importante separar las políticas de los mecanismos. Los mecanismos determinan como hacer algo; las políticas determinan que hacer. El temporizador en un mecanismo para asegurar la protección de la CPU, pero la decisión de cuáles deben ser los datos de temporización para un usuario concreto es una decisión de políticas.

Implementación.- Una vez que se ha diseñado un sistema operativo debe implementarse. Tradicionalmente los sistemas operativos tenían que

escribirse en lenguajes ensambladores. Sin embargo hoy se escriben en lenguajes de alto nivel como C o C++.

1.20 ESTRUCTURA DEL SISTEMA OPERATIVO

El sistema operativo se divide en capas, cada una construida sobre las capas inferiores

La capa más baja (capa 0) es el hardware

La capa más alta (capa N) es la interface con el usuario

Modularidad

Las capas usan funciones y servicios de las capas inferiores.

capas usan funciones y servicios de las capas inferiores. Figura 14: Capas de un sistema operativo

Figura 14: Capas de un sistema operativo

Fuente: http://blogs.utpl.edu.ec/sistemasoperativos/files/2009/03/capitulo-ii_so1.pdf

Tabla 4. Titulo: Estructura de capas del sistema operativo

Nivel 5

Programas de usuario

Nivel 4

Almacenamientos intermedios de e/s

Nivel 3

Manejador de dispositivo de la consola del operador

Nivel 2

Manejo de la memoria

Nivel 1

Planificación del CPU

Nivel 0

Hardware

Fuente: http://blogs.utpl.edu.ec/sistemasoperativos/files/2009/03/capitulo-ii_so1.pdf

UNIDAD II

PROCESOS Y MULTITAREA

2.1 INTRODUCCIÓN A LOS PROCESOS

El concepto central de cualquier sistema operativo es el de proceso: una abstracción de un programa en ejecución también llamada tarea.

El usuario pide ejecutar programas o segmentos de programas al computador para ejecución, solicitando de esta manera acceso al procesador y recursos del computador. Mientras que esto es más palpable en computadores grandes y medianos, también puede hallarse en computadores pequeños. Si el computador fuera a ejecutar un programa a la vez hasta su terminación, el resto de los programas tendrían que aguardar ociosamente. Para finalizar todos los programas en un tiempo razonable, el sistema operativo debe organizar las operaciones sobre el hardware de una manera eficiente.

Todas las computadoras modernas pueden realizar varias tareas al mismo tiempo. En estos sistemas de multiprogramación la CPU debe cambiar de un programa a otro, ejecutando cada uno en decenas o cientos de milisegundos. Pero en cualquier instante de tiempo la CPU puede estar ejecutando solo un programa.

2.2 PROCESOS

Todo el software ejecutable en la computadora, que con frecuencia incluye al sistema operativo, se organiza en varios procesos secuenciales. Un proceso es básicamente un programa ejecutante donde intervienen los valores corrientes del contador de programa, registros y variables.

No hay un acuerdo universal sobre una definición de proceso, pero sí algunas definiciones aceptadas

Un programa que se está ejecutando.

Una actividad asincrónica.

El emplazamiento del control de un procedimiento que está siendo ejecutado.

Aquello que se manifiesta por la existencia en el sistema operativo de un bloque de control de proceso.

Aquella entidad a la cual son asignados los procesadores.

La unidad despachable.

2.3 RELACIONES ENTRE PROCESOS

Existen dos relaciones fundamentales entre los procesos concurrentes:

Competencia

Cooperación

La cooperación es habitual entre los procesos creados como resultado de una división explícita en tareas. Los procesos cooperativos intercambian datos y señales de sincronización necesarias para orquestar su progreso colectivo.

Los procesos cooperativos comparten típicamente algunos recursos y atributos, además de interactuar unos con otros.

Con frecuencia se agrupan en lo que se denomina una familia de procesos. Aunque dentro de una familia son posibles relaciones complejas, la más frecuentemente soportada por los sistemas operativos es la relación padre-hijo. Los procesos hijos heredan generalmente los atributos de sus padres en el momento de la creación del proceso, y también pueden heredar o compartir recursos con sus padres y hermanos.

2.4 LOS PROCESOS DESDE LA PERSPECTIVA DEL PROGRAMADOR DE SISTEMAS

Los programadores de sistemas tienen que tratar frecuentemente con procesos de forma explícita. El sistema operativo, o en ocasiones un lenguaje de implementación de sistemas, les proporciona facilidades para definir los confines de un proceso, sus atributos, la naturaleza de su residencia en memoria, etc.

2.5 EJEMPLO DE MULTITAREA

Supongamos un sistema simplificado de adquisición de datos. Se supone que supervisa continuamente un cierto proceso físico, para registrar su comportamiento, y para identificar e informar sobre cambios significativos a un operador, o quizás a un robot, el cual puede efectuar alguna acción adicional. Esos cambios pueden ser ciertas desviaciones estadísticamente significativas de valores medidos de las variables del proceso con respecto a rangos esperados o deseables.

Desde la perspectiva del programador del sistema, el programa en cuestión debe recoger los datos de entrada desde un sensor externo, digamos, por medio de un conversor A/D, debe archivarlo en disco, efectuar alguna operación estadística para identificar cambios significativos con respecto a la muestra anterior e informar de ellos mediante, digamos, su impresión o el envío de un mensaje a un robot que lo espera. Supongamos que esta secuencia de actividades se efectúa repetidamente durante el tiempo de vida del sistema. Aunque la descripción está bastante simplificada, este ejemplo tipifica la naturaleza de las operaciones que aparecen en los sistemas de adquisición de datos.

Dado que, al parecer, las actividades listadas requieren procesamiento secuencial, el método más sencillo es escribir un único programa para llevarlas a cabo una tras otra.

Programa una_tarea;

begin

 

while true do begin

recoger_ad;

guardar_d;

calcular_e;

imprimir_i;

end

end.

2.6 SINCRONIZACIÓN ENTRE PROCESOS

Veamos el siguiente programa:

Program/module multitarea;

Process recoger; Begin

While true do Begin

Esperar_señal_de(guardar, calcular); Recoger_ad; Enviar_señal_a(guardar, calcular)

End;

End Process guardar; Begin

While true do Begin

Esperar_señal_de(recoger);}

Guardar_d;

Enviar_señal_a(recoger)

End;

End; Process calcular; Begin

While true do

Begin Esperar_señal_de(recoger, imprimir); calcular_e; Enviar_señal_a(recoger, imprimir)

End

End Process Imprimir; Begin

While true do Begin

Esperar_señal_de(calcular);

Imprimir_I;

Enviar_señal_a(calcular)

End;

End; {proceso padre} Begin

Inicializar_entorno; Enviar_señal_a(recoger, calcular);{para la primera pasada} initiate recoger, guardar, calcular, imprimir end{multitarea}

Process Imprimir; Begin

While true do

Begin Esperar_señal_de(calcular); Imprimir_I; Enviar_señal_a(calcular)

End

End;

Aquí se presenta el concepto de envío y recepción de señales. Su objetivo es proporcionar la sincronización necesaria para forzar el cumplimiento de las relaciones de precedencia indicadas dentro de nuestro conjunto de procesos cooperativos. Las señales son uno de los mecanismos de sincronización entre procesos que, como grupo, se encuentran entre los servicios más importantes proporcionados por los sistemas operativos multitarea.

Supongamos un proceso que espera uno ó más señales de suspendido por el sistema operativo, es decir, no es elegible para ejecución hasta que le lleguen todas las señales requeridas. Se supone que una señal llega después de ser enviada por otro proceso. El envío de una señal no ocasiona la suspensión del proceso emisor.

Una observación importante es que con el problema dividido en cuatro procesos, cada proceso ejecuta su propio flujo secuencial de instrucciones, más o menos independiente. La multiplexación es llevada a cabo por el sistema operativo de modo en gran medida transparente a los propios procesos concurrentes. Un proceso individual no tiene modo de conocer el estado o el progreso de cualquier otro proceso, a menos que sea específicamente informado de ello por una señal. El programador de sistemas controla este aspecto de la sincronización entre procesos definiendo la identidad y el significado de las señales intercambiadas entre los procesos cooperativos.

El proceso padre, al cual el sistema operativo transfiere control cuando se arranca el sistema, también está a cargo de la inicialización del entorno y de la activación de los cuatro procesos hijos. En otras palabras, el proceso padre crea el entorno en tiempo de ejecución para la ejecución de la aplicación. La inicialización de un proceso implica crearlo y hacerlo conocido al sistema operativo.

La sincronización entre procesos concurrentes cooperativos es esencial para preservar las relaciones de precedencia y para evitar los problemas de temporización relacionados con la concurrencia. Los procesos cooperativos deben sincronizarse unos con otros cuando va a utilizar recursos compartidos, tales como estructuras de datos comunes o dispositivos físicos. Los sistemas operativos multitarea e incluso algunos lenguajes de programación proporcionan una colección de primitivas de sincronización entre procesos.

Hay tres formas esenciales de interacción explícita entre procesos:

Sincronización entre procesos: Un conjunto de protocolos y mecanismos utilizados para preservar la integridad y consistencia del sistema cuando varios procesos concurrentes comparten recursos que son reutilizables en serie. Un recurso reutilizable en serie solo puede ser utilizado por un proceso cada vez. Su estado, y posiblemente su operación, pueden resultar corrompidos si son manipulados concurrentemente y sin sincronización por más de un proceso. Ejemplo:

variables compartidas para lectura/escritura y dispositivos tales como las impresoras.

Señalización entre procesos: El intercambio de señales de temporización entre procesos utilizado para coordinar su progreso colectivo.

Comunicación entre procesos: Los procesos cooperativos concurrentes deben comunicarse con propósitos tales como intercambiar datos, transmitir información sobre los progresos respectivos y acumular resultados colectivos. Una memoria compartida, accesible a todos los participantes, proporciona un medio sencillo y habitual de comunicación entre procesos. Para evitar errores de temporización, los procesos concurrentes deben sincronizar sus accesos a la memoria compartida.

Necesidad de sincronización entre procesos El uso de variables compartidas es una forma sencilla y habitual de comunicación entre procesos cooperativos. Cuando un conjunto de procesos tiene acceso a un espacio común de direcciones, puede utilizar variables compartidas para una serie de cometidos, por ejemplo, indicadores de señalización y para acumulación de resultados colectivos.

Ejemplo: Consideremos dos procesos cooperativos que pueden existir en un gestor de terminal. Supongamos que los procesos TECLADO y PANTALLA tienen a su cargo aceptar entradas del teclado y visualizarlas en pantalla respectivamente. Supongamos que los dos procesos comparten un buffer común en el cual se almacenan los caracteres de entrada para ser visualizados y para algún otro procesamiento subsiguiente. El proceso teclado responde a las interrupciones de teclado, recibe la entrada y la coloca en el buffer. El proceso PANTALLA hace el eco de los caracteres que hay en el buffer mostrándolos en la pantalla. Supongamos también que cada proceso mantiene un puntero privado para marcar su posición actual de trabajo en el búfer, y que se utiliza la variable compartida ECO para llevar la cuenta del número actual de caracteres en espera de visualización. TECLADO incrementa la variable ECO cada vez que se introduce un carácter

eco:=eco + 1

y PANTALLA decrementa ECO cada vez que visualiza un carácter:

eco:=eco - 1

Las situaciones en las que dos o más procesos leen o escriben en ciertos datos compartidos y el resultado final depende de quién ejecuta qué y en qué momento, reciben el nombre de condiciones de competencia

2.7 ESTADOS DE UN PROCESO

Un proceso puede variar entre 5 distintos estados:

New: cuando el proceso está siendo creado. Running: cuando el proceso se está ejecutando. Waiting: cuando el proceso está esperando que se cumpla algún otro evento. Ready: cuando el proceso esta pronto para ejecutar, esperando por la CPU. Terminated: cuando el proceso está terminado.

Debido a ello se puede establecer una “Lista de Listos” para los procesos “listos” y una “Lista de Bloqueados” para los “bloqueados”. La “Lista de Listos” se mantiene en orden prioritario y la “Lista de Bloqueados” está desordenada, ya que los procesos se desbloquean en el orden en que tienen lugar los eventos que están esperando.

Al admitirse un trabajo en el sistema se crea un proceso equivalente y es insertado en la última parte de la “Lista de Listos”. La asignación de la CPU al primer proceso de la “Lista de Listos” se denomina “Despacho”, que es ejecutado por una entidad del sistema operativo llamada “Despachador”.

El “Bloqueo” es la única transición de estado iniciada por el propio proceso del usuario, puesto que las otras transiciones son iniciadas por entidades ajenas al proceso.

transiciones son iniciadas por entidades ajenas al proceso. Figura 15: Transiciones entre los distintos estados de

Figura 15: Transiciones entre los distintos estados de un proceso

Fuente: www.monografias.com/trabajos6/mono/mono.shtml

Es importante observar que en un momento determinado solo un proceso puede encontrarse en ejecución, aunque varios procesos pueden estar listos o en espera.

Se puede observar que hay cuatro transiciones posibles entre los distintos estados. Las transiciones 1 y 4 las lleva a cabo el planificador de procesos, que forma parte del sistema operativo, sin intervención alguna de los procesos. La transición 1 puede suceder cuando el planificador encuentra al procesador ocioso, o bien porque considera que el proceso que se encuentra en ejecución ha dispuesto del procesador durante un tiempo suficiente, con lo cual realizará previamente la transición 4 para posteriormente llevar a cabo la transición 1. La transición 2 ocurre cuando un proceso descubre que no puede continuar debido a que demanda algún recurso de E/S, o bien que el sistema operativo lo bloquea momentáneamente. Cuando el proceso en estado de espera ha finalizado el evento externo que estaba esperando, o bien que el sistema lo desbloquea, se producirá la transición 3, pasando el proceso nuevamente a estado de listo.

2.8

LOS

OPERATIVO

PROCESOS

DESDE

LA

PERSPECTIVA

2.8.1 PBC (Process Control Block)

DEL

SISTEMA

La manifestación de un proceso en un sistema operativo es un “Bloque de Control de Proceso” (PCB) con información que incluye:

Estado actual del proceso.

Identificación única del proceso.

Prioridad del proceso.

Apuntadores para localizar la memoria del proceso.

Apuntadores para asignar recursos.

Área para preservar registros.

Cuando el sistema operativo cambia la atención de la CPU entre los procesos, utiliza las áreas de preservación del PCB para mantener la información que necesita para reiniciar el proceso cuando consiga de nuevo la CPU.

Los sistemas que administran los procesos deben poder crear, destruir, suspender, reanudar, cambiar la prioridad, bloquear, despertar y despachar un proceso.

La “creación” de un proceso significa:

Dar nombre al proceso.

Insertar un proceso en la lista del sistema de procesos conocidos.

Determinar la prioridad inicial del proceso.

Crear el bloque de control del proceso.

Asignar los recursos iniciales del proceso.

Un proceso puede “crear un nuevo proceso”, en cuyo caso el proceso creador se denomina “proceso padre” y el proceso creado “proceso hijo” y se obtiene una “estructura jerárquica de procesos”. La “destrucción” de un proceso implica:

Borrarlo del sistema.

Devolver sus recursos al sistema.

Purgarlo de todas las listas o tablas del sistema.

Borrar su bloque de control de procesos.

Un proceso “suspendido” no puede proseguir hasta que otro proceso lo reanude.

Reanudar (reactivar) un proceso implica reiniciarlo en el punto donde fue suspendido.

La “destrucción” de un proceso puede o no significar la destrucción de los procesos hijos, según el sistema operativo.

Generalmente se denomina “Tabla de Procesos” al conjunto de información de control sobre los distintos procesos.

2.9 PROCESAMIENTO DE INTERRUPCIONES

Una “interrupción” es un evento que altera la secuencia en que el procesador ejecuta las instrucciones; es un hecho generado por el hardware del computador.

Cuando ocurre una interrupción, el sistema operativo:

o

Obtiene el control.

o

Salva el estado del proceso interrumpido, generalmente en su bloque de control de procesos.

o

Analiza la interrupción.

o

Transfiere el control a la rutina apropiada para la manipulación de la interrupción.

Una interrupción puede ser iniciada por un proceso en estado de ejecución o por un evento que puede o no estar relacionado con un proceso en ejecución.

Generalmente las interrupciones se pueden clasificar por tipos según el siguiente detalle:

Tabla 5. Titulo: Tipos de interrupciones

Interrupción

Descripción

SVC

Llamada al sistema operativo

Entrada / Salida

Cambio de estado de un canal o dispositivo

Externa

Evento externo al sistema

De Reinicio

Reinicio del procesamiento

De Verificación de Programa

Errores de procesos

De Verificación de Máquina

Errores de hardware

Fuente: http://www.zator.com/Hardware/H2_4.htm

2.10 ESTADOS DEL SISTEMA Y LISTAS DE PROCESOS

Un estado de un proceso es sólo un componente del estado global del sistema que incluye a todos los procesos y recursos. Para controlar la evolución de todos los procesos, el sistema operativo mantiene listas de PBCs clasificadas por el estado actual de los procesos aceptados.

En general, existirá una lista con los PBCs de todos los procesos en situación de preparado y una lista con todos los PBCs en situación de suspendido. Mediante estas listas el sistema operativo forma colecciones de procesos en estados análogos y serán examinadas por las rutinas de asignación de recursos del sistema operativo.

Ejemplo: El planificador buscará el siguiente proceso a ejecutar en la lista de los PBCs de procesos preparados.

El rendimiento del sistema operativo puede mejorar ordenando y actualizando estas listas de la manera más conveniente para las rutinas del sistema operativo que operan con ellas. Las transiciones de estado de un proceso quedarán reflejadas en el cambio de su PBCs de una lista a otra.

2.11 CONMUTACIÓN DE PROCESOS

Una transición entre dos procesos residentes en memoria en un sistema multitarea se denomina conmutación de procesos o conmutación de tareas. Las principales operaciones implicadas en una conmutación de procesos están resumidas en la siguiente figura:

de procesos están resumidas en la siguiente figura: Figura 16: Esquema de conmutación de recursos Fuente:

Figura 16: Esquema de conmutación de recursos

Fuente: http://www.mundointernet.es/IMG/pdf/ponencia50.pdf

La figura se interpreta de la siguiente manera:

Estamos en modo usuario con un proceso P x ejecutándose. Ocurre un suceso.

Pasamos a modo supervisor (ejecutamos sistema operativo).

o

Guarda el estado del proceso interrumpido en su PBC correspondiente

o

Actualiza el estado de P x (en función del suceso que haya tenido lugar, el estado será uno u otro) y los datos de planificación (Algunos sistemas operativos tienen ciertas consideraciones para re-calcular estos datos de planificación para un proceso. Por ejemplo, restar prioridad a procesos largos.

o

Atendemos al suceso dependiendo de cada caso (no incluimos esta operación en lo que consideramos proceso de conmutación)

o

Planificamos cuál va a ser el siguiente proceso a ejecutar (que podría ser mismo de inicio).

o

Una vez elegido el nuevo proceso a ejecutar, llamémosle P y , hay que restaurar su estado hardware y recuperamos sus atributos gracias a su PBC.

Una vez elegido el nuevo proceso, realizamos un cambio de modo.

La conmutación de procesos es una operación considerablemente más compleja y costosa que la conmutación del contexto de interrupción y puede ser bastante complicada en sistemas operativos grandes que disponen de un mantenimiento preciso de recursos y de sofisticados esquemas de planificación. Dada su complejidad y su relativamente alta frecuencia de ocurrencia, la implementación de la conmutación de procesos puede afectar significativamente al rendimiento de un sistema operativo de multiprogramación.

Es especialmente importante en sistemas donde el tiempo es un factor crítico tales como los sistemas en tiempo real. La eficiencia de la conmutación de procesos puede ser mejorada con ayuda del hardware y una estructura de software especial conocida como hebra o hilo.

Un esquema hardware habitualmente empleado para acelerar la conmutación de procesos es disponer de múltiples conjuntos estructuralmente idénticos de registros del procesador. Un conjunto para el sistema operativo y otro para los procesos de usuario. Un bit dedicado en la única copia de la palabra del estado del procesador indica el estado actual de operación supervisor o usuario y el conjunto de registros activos. Este método reduce el gasto software por conmutación de modo y la mayor parte del proceso de almacenamiento del estado hardware a la ejecución de unas pocas instrucciones de manipulación de bits.

Si se dispone de más de dos conjuntos de registros, se pueden aplicar ahorros similares a los procesos de usuario hasta alcanzar el número de conjuntos de registros disponibles

2.12 PROCESOS Y HEBRAS

En los sistemas operativos tradicionales, el concepto de proceso incluye como característica:

Unidad a la que se le asigna recursos: espacio de direcciones, canales de entrada/salida, canales de comunicaciones, ficheros, etc.

Los procesos son entidades que son relativamente costosas de crear y manipular por parte del sistema operativo. En cambio, las hebras comparten los recursos de los procesos y su manipulación es mucho menos costosa que la de éstos. La principal ventaja de tener varias hebras de ejecución es permitir la ejecución concurrente de actividades relacionadas dentro de un proceso.

Como las hebras de un proceso comparten el mismo espacio de direcciones, no existe ningún tipo de protección por parte del sistema operativo ante el hecho de que una hebra pueda leer o escribir en la pila de otra. Sin embargo, esta protección no debería de ser necesaria, ya que mientras que los procesos pueden pertenecer a varios usuarios, las hebras de un proceso pertenecen a un mismo usuario, por lo que se asume que estará diseñado para colaborar, no para competir. Esto no significa que exista la necesidad de proporcionar mecanismos para que las hebras de un proceso se puedan sincronizar. La programación de procesos multihebra se ajusta a la programación concurrente sobre sistemas que comparten memoria, por lo que suelen usar semáforos o monitores para

sincronización, aunque también existen sistemas que incorporan primitivas de paso de mensajes.

sistemas que incorporan primitivas de paso de mensajes. Figura 17: THREADS y procesos Fuente:

Figura 17: THREADS y procesos

Fuente: http://www.ac.uma.es/~sromero/so/Capitulo4.pdf

2.13 PLANIFICACIÓN DE PROCESOS

En un sistema multiprogramado, múltiples procesos son mantenidos en memoria principal. Multiprogramación surgió con la idea de tener algún proceso ejecutándose en todo momento con la finalidad de maximizar el uso del CPU. Tiempo Compartido fue concebido con la idea de conmutar o cambiar continuamente el CPU entre procesos de forma tal que los usuarios puedan interactuar con sus programas mientras están corriendo.

Con multiprogramación, un proceso ejecuta hasta que debe esperar por algún evento. En un sistema simple sin multiprogramación el CPU estaría ocioso.

Cuando un proceso entra al sistema es colocado en una cola de trabajos. Una vez que el proceso se encuentra en memoria principal y está listo para ejecutar, este es colocado en la cola de procesos listos (ready). Cuando al proceso se le asigna el CPU, ejecuta por un tiempo y eventualmente el proceso terminará, o será interrumpido o esperará por la ocurrencia de algún evento. Con frecuencia nos encontraremos con situaciones en las que dos o más procesos son ejecutables desde el punto de vista lógico. En estos casos el sistema de operación debe decidir cuál de ellos debe ejecutarse primero. La parte del sistema de operación que lleva a cabo esta decisión se llama Planificador y el algoritmo que se utiliza se conoce como Algoritmo de Planificación.

Con la planificación de procesos se busca:

Garantizar que cada proceso obtenga una proporción justa de tiempo de CPU.

Mantener ocupado el CPU.

Minimizar el tiempo de respuesta de los procesos interactivos.

Maximizar el número de tareas procesadas por hora.

2.14 TIPOS DE PLANIFICACIÓN

La clave de la multiprogramación está en la planificación. De hecho, son cuatro las clases de planificación que pueden entrar en juego normalmente:

Planificación a largo plazo: Decisión de añadir procesos a la reserva de procesos a ejecutar.

Planificación a medio plazo: Decisión de añadir procesos al conjunto de procesos que se encuentran parcial o completamente en memoria.

Planificación a corto plazo: Decisión sobre qué proceso disponible será ejecutado en el procesador.

Planificación de E/S: Decisión sobre qué solicitud de E/S pendiente será tratada por un dispositivo de E/S disponible.

El nombre de largo, medio y corto plazo hace referencia a la frecuencia relativa con la que son ejecutadas dichas funciones.

2.14.1 Planificación a largo plazo

Esta planificación determina cuáles son los programas admitidos en el sistema. De este modo se controla el grado de multiprogramación. Una vez admitido el programa se convierte en proceso y es añadido a la cola del planificador a corto plazo.

La decisión de cuándo crear un nuevo proceso viene dada, en general, por el grado de multiprogramación. Cuantos más procesos se crean, menor será el porcentaje de tiempo en el que cada proceso puede ejecutar simultáneamente. Con lo cual el planificador a largo plazo puede limitar el grado de multiprogramación para ofrecer un buen servicio al conjunto de procesos activos.

La decisión de cuál va a ser el siguiente proceso a admitir puede basarse en un simple algoritmo primero en llegar primero en ser servido (FCFS) o bien se puede elaborar una política más elaborada, en función del sistema. Por ejemplo, el planificador puede intentar mantener una combinación de procesos con mayor carga de procesador y con mayor carga de E/S.

2.14.2 Planificación a medio plazo

Algunos sistemas operativos, como los de tiempo compartido, pueden presentar un nivel intermedio adicional de planificación. La idea clave de un planificador a medio plazo es que en ocasiones puede interesar eliminar procesos de la memoria y reducir de este modo el grado de multiprogramación. Posteriormente se volverá a introducir el proceso en memoria y continuar con su ejecución. Se le suele denominar comúnmente intercambio (swapping). En la figura se muestra dicho planificador a medio plazo.

Los intercambios de procesos pueden ser necesarios para mejorar la mezcla de procesos.

Figura 18: Planificación y transiciones de estado de los procesos Fuente:

Figura 18: Planificación y transiciones de estado de los procesos

Fuente: http://blogs.utpl.edu.ec/sistemasoperativos/files/2009/04/proceso4-300x151.jpg

2.14.3 Planificación a corto plazo (planificación del procesador)

Como hemos mencionado anteriormente, la planificación es una función fundamental de los sistemas operativos. Casi todos los recursos de una computadora se planifican antes de usarse. Por supuesto, el procesador es uno de los principales recursos de la computadora, de modo que su planificación es parte medular en el diseño de los sistemas operativos.

La ejecución de un proceso consiste en un ciclo de ejecución del procesador y una espera de E/S, y los procesos se alternan entre estos dos estados. La ejecución del proceso se inicia con una ráfaga de procesador y a ésta le sigue una ráfaga de E/S, le sigue una ráfaga de procesador y una más de E/S, etc. Finalmente la última ráfaga de procesador terminará con una solicitud al sistema para que concluya la ejecución del proceso.

La duración de estas ráfagas de procesador y de E/S va a determinar el tipo de carga al sistema que proporciona cada proceso. Así por ejemplo un programa limitado por E/S, tendrá muchas ráfagas cortas de procesador, mientras que un programa limitado por el procesador tendrá pocas ráfagas de larga duración de procesador. La distribución de estos procesos puede ser muy importante al seleccionar un algoritmo de planificación de corto plazo.

Siempre que el procesador quede inactivo, el sistema operativo debe seleccionar para su ejecución uno de los procesos de la cola de procesos listos. El proceso de selección es realizado por el planificador a corto plazo.

El planificador selecciona uno de los procesos en memoria que están listos y se lo asigna al procesador.

La cola de procesos listos puede ser implementada de formas diferentes. Sin embargo, conceptualmente todos los procesos de la cola de procesos listos están en fila esperando la oportunidad de ejecutarse en el procesador.

2.15

NIVELES DE PLANIFICACIÓN DEL PROCESADOR

Se consideran tres niveles importantes de planificación, los que se detallan a continuación.

2.15.1 Planificación de alto nivel:

También se denomina planificación de trabajos. Determina a qué trabajos se les va a permitir competir activamente por los recursos del sistema, lo cual se denomina planificación de admisión.

2.15.2 Planificación de nivel intermedio:

Determina a qué procesos se les puede permitir competir por la CPU. Responde a fluctuaciones a corto plazo en la carga del sistema y efectúa “suspensiones” y “activaciones” (“reanudaciones”) de procesos.

Debe ayudar a alcanzar ciertas metas en el rendimiento total del sistema.

2.15.3 Planificación de bajo nivel:

Determina a qué proceso listo se le asigna la CPU cuando esta queda disponible y asigna la CPU al mismo, es decir que “despacha” la CPU al proceso. La efectúa el despachador del sistema operativo, el que opera muchas veces por segundo y reside siempre en el almacenamiento primario.

por segundo y reside siempre en el almacenamiento primario. Figura 19: Niveles de planificación Fuente:

Figura 19: Niveles de planificación

Fuente: http://blogs.utpl.edu.ec/sistemasoperativos/files/2009/04/image21.gif

2.16 OBJETIVOS DE LA PLANIFICACIÓN

Los objetivos de la planificación del procesador son los siguientes e involucran a los conceptos detallados seguidamente.

Ser justa:

Todos los procesos son tratados de igual manera.

Ningún proceso es postergado indefinidamente.

Maximizar la capacidad de ejecución:

Maximizar el número de procesos servidos por unidad de tiempo.

Maximizar el número de usuarios interactivos que reciban unos tiempos de respuesta aceptables:

En un máximo de unos segundos.

Ser predecible:

Un trabajo dado debe ejecutarse aproximadamente en la misma cantidad de tiempo independientemente de la carga del sistema.

Minimizar la sobrecarga:

No suele considerarse un objetivo muy importante.

Equilibrar el uso de recursos:

Favorecer a los procesos que utilizarán recursos infrautilizados.

Equilibrar respuesta y utilización:

La mejor manera de garantizar buenos tiempos de respuesta es disponer de los recursos suficientes cuando se necesitan, pero la utilización total de recursos podrá ser pobre.

Evitar la postergación indefinida:

Se utiliza la estrategia del “envejecimiento”.

Mientras un proceso espera por un recurso su prioridad debe aumentar, así la prioridad llegará a ser tan alta que el proceso recibirá el recurso esperado.

Asegurar la prioridad:

Los mecanismos de planificación deben favorecer a los procesos con prioridades más altas.

Dar preferencia a los procesos que mantienen recursos claves:

Un proceso de baja prioridad podría mantener un recurso clave, que puede ser requerido por un proceso de más alta prioridad.

Si el recurso es no apropiativo, el mecanismo de planificación debe otorgar al proceso un tratamiento mejor del que le correspondería normalmente, puesto que es necesario liberar rápidamente el recurso clave.

Dar

los

“comportamiento deseable”:

Un ejemplo de comportamiento deseable es una tasa baja de paginación.

mejor

tratamiento

a

procesos

que

muestren un

Degradarse suavemente con cargas pesadas:

Un mecanismo de planificación no debe colapsar con el peso de una exigente carga del sistema.

Se debe evitar una carga excesiva mediante las siguientes acciones:

o

No permitiendo que se creen nuevos procesos cuando la carga ya es pesada.

o

Dando servicio a la carga más pesada al proporcionar un nivel moderadamente reducido de servicio a todos los procesos.

Muchas de estas metas se encuentran en conflicto entre sí, por planificación se convierte en un problema complejo.

lo

que

la

2.17 PLANIFICACIÓN APROPIATIVA VERSUS NO APROPIATIVA

Las disciplinas de planificación pueden ser Apropiativas o No Apropiativas.

Tabla 6. Titulo: Planificación Apropiativa Versus No Apropiativa

Disciplina

Descripción

“Apropiativa”

Una vez que se le ha otorgado la CPU a un proceso, le puede ser retirada

“No

Una vez que se le ha otorgado la CPU a un proceso, no le puede ser retirada

Apropiativa”

Fuente:

http://wwwdi.ujaen.es/~lina/TemasSO/PLANIFICACIONDEPROCESOS/2y3Obj.,Crit.yTiposdePlanific

acion.htm

Las principales características de la planificación apropiativa son las siguientes:

Es útil cuando los procesos de alta prioridad requieren atención rápida.

Es importante para garantizar buenos tiempos de respuesta en sistemas interactivos de tiempo compartido.

Tiene su costo en recursos, ya que el intercambio de contexto implica sobrecarga y además requiere mantener muchos procesos en el almacenamiento principal, en espera de la CPU, lo que también implica sobrecarga.

Las principales características de la planificación no apropiativa son las siguientes:

Significa que los trabajos “largos” hacen esperar a los trabajos “cortos”.

Logra más equidad en el tratamiento de los procesos.

Logra hacer más predecibles los tiempos de respuesta puesto que los trabajos nuevos de prioridad alta no pueden desplazar a los trabajos en espera.

El diseño de un mecanismo apropiativo hace necesario considerar las arbitrariedades de casi cualquier esquema de prioridades, en razón de que muchas veces las propias prioridades no son asignadas de forma significativa.

El mecanismo debería ser sencillo pero efectivo y significativo.

2.18 ALGORITMOS DE PLANIFICACIÓN

Cuando más de un proceso es ejecutable desde el punto de vista lógico, el sistema operativo debe decidir cuál de ellos debe ejecutarse en primer término.

El planificador es la porción del sistema operativo que decide y el algoritmo de planificación es el utilizado.

Los principales “criterios” respecto de un buen algoritmo de planificación son la equidad, la eficacia, el tiempo de respuesta, el tiempo de regreso y el rendimiento.

Tabla 7. Titulo: Criterios de un buen algoritmo de planificación

Criterio

 

Descripción

 

Equidad

Garantizar que cada proceso obtiene su proporción justa de la CPU

Eficacia

Mantener ocupada la CPU el ciento por ciento del tiempo

Tiempo

de

Minimizar

el

tiempo

de

respuesta

para

los

usuarios

respuesta

interactivos

Tiempo

de

Minimizar el tiempo que deben esperar los usuarios por lotes (batch) para obtener sus resultados

regreso

Rendimiento

Maximizar el número de tareas procesadas por hora

 

Fuente: Autor

Criterios orientados al usuario:

Tiempo de retorno: Es el intervalo de tiempo desde que el proceso se ofrece hasta el momento que termina, es decir, la suma de los periodos de tiempo transcurridos esperando entrar en memoria, esperando en la cola de procesos listos, ejecutándose en el procesador y efectuando alguna solicitud de E/S. En resumen, es el tiempo que tarda en ejecutarse un proceso.

Tiempo de respuesta: Es el tiempo transcurrido desde la presentación de una solicitud hasta que se produce la primera respuesta. Este criterio es la cantidad de tiempo para comenzar a responder, pero no el tiempo necesario para mostrar esa respuesta. Este tiempo es independiente del dispositivo de salida, mientras que el tiempo de retorno depende del dispositivo de salida.

Criterios orientados al sistema:

Tiempo de espera: Es la cantidad de tiempo que un proceso espera en la cola de procesos listos.

Tiempo de retorno normalizado: Es la razón entre el tiempo de retorno y el tiempo de servicio. Este valor indica el retardo relativo que ha experimentado un proceso. Este valor es más interesante que el tiempo de retardo, ya que es un valor que es independiente a la duración del proceso.

Utilización del procesador: Es el porcentaje de tiempo que el procesador está ocupado.

Productividad: Es una medida del número de procesos que se completan por unidad de tiempo.

2.18.1 First-Come, First Served (FCFS)

Este algoritmo también llamado FCFS (First-Come, First-served), es el algoritmo más sencillo de implementar. Con este esquema, el proceso que primero solicita el procesador es el primero al que se le asigna. Esta política se implementa muy fácilmente con una cola FIFO. Cuando un proceso entra en la cola de procesos listos su PCB se enlaza con el proceso que está al final de la cola. Cuando el procesador está libre se asigna el proceso colocado al inicio de la cola de procesos listos, esto es, se selecciona el proceso más antiguo de la cola.

Este algoritmo de planificación es no apropiativo. Una vez que se ha asignado el procesador a un proceso, éste lo conserva hasta que desee liberarlo, ya sea por terminación o bien porque solicita un recurso de E/S.

Este algoritmo es especialmente problemático en los sistemas de tiempo compartido, donde es importante que cada usuario reciba una porción del procesador a intervalos regulares. El tiempo promedio de espera es bastante largo en este algoritmo.

FCFS tiene un mejor rendimiento en cómputo global con procesos largos que con procesos cortos, ya que si por ejemplo un proceso corto llega siempre después de un proceso largo, el tiempo de retorno normalizado para dicho proceso corto será considerablemente mayor que el del proceso largo.

Otro problema que presenta este algoritmo, es que tiende a favorecer a los procesos con carga de procesador frente a los procesos con carga de E/S, ya que cuando un proceso con carga de procesador se está ejecutando, todos los procesos con carga de E/S deben esperar (si han finalizado la correspondiente ráfaga de E/S) la siguiente ráfaga de procesador, mientras que los dispositivos de E/S estarán ociosos. Así pues, FCFS puede dar como resultado un uso ineficiente tanto del procesador como de los dispositivos de E/S.

Ejemplo:

En un cierto instante se tiene los siguientes procesos, cuyo orden de llegada es el indicado:

Trabajo

Ráfaga CPU

A

1

B

100

C

1

D

100

Indicar los valores de:

Tiempo de espera y tiempo de retorno de cada trabajo, tiempo medio de espera y retorno, cuando la planificación se realiza mediante el algoritmo FCFS.

SOLUCIÓN: 1

Tabla 8. Titulo: Algoritmo FCFS ejemplo 1

Proceso

Tiempo de

Tiempo

Tiempo

Tiempo de

Turnaround

Tiempo de

llegada

de

de

Finalización

Espera

Servicio

Comienzo

A 0

 

1

0

1

1

0

B 1

 

100

1

101

100

0

C 2

 

1

101

102

100

101-2=99

D 3

 

100

102

202

199

102-3=99

Promedio

 

100

49.50

Fuente: Autor

SOLUCIÓN: 2

Tabla 9. Titulo: Algoritmo FCFS con procesos ordenados por tiempo de servicio

Proceso

Tiempo de

Tiempo

Tiempo

Tiempo de

Turnaround

Tiempo de

llegada

de

de

Finalización

Espera

Servicio

Comienzo

B

0

100

0

100

100

0

D

1

100

100

200

199

100-1=99

A

2

1

200

201

201-

200-

2=199

2=198

C

3

1

201

202

202-

201-

3=199

3=198

Promedio

 

174.25

123.50

Fuente: Autor

El tiempo promedio de espera bajo una política FCFS generalmente no es mínimo y puede variar sustancialmente si hay mucha diferencia entre las duraciones de ciclo de los procesos.

En el segundo ejemplo, se presenta un efecto convoy donde los procesos esperan a que un proceso grande deje el CPU.

2.18.2 Shortest-Job-First (SJF) "Primero el trabajo más corto"

Este algoritmo selecciona al proceso con el próximo tiempo de ejecución más corto. Un proceso corto saltará a la cabeza de la cola. La ejecución de un proceso consiste en ciclos de ejecución de CPU y ciclos de espera por E/S. El algoritmo selecciona aquel proceso cuyo próximo ciclo de ejecución de CPU sea menor. El problema está en conocer dichos valores, pero podemos predecirlos usando la información de los ciclos anteriores ejecutados.

Se puede comprobar que el algoritmo SJF es óptimo, ya que ofrece el mínimo tiempo promedio de espera para un conjunto de procesos dado. La comprobación muestra que poniendo un proceso breve antes de uno largo se reduce el tiempo de espera del proceso corto más de lo que aumenta el tiempo de espera del proceso largo, por lo tanto se reduce el tiempo de espera promedio.

Ejemplo:

En un cierto instante se tiene los siguientes procesos, cuyo orden de llegada es el indicado:

Trabajo

Ráfaga CPU

 

A 8

 

B 4

 

C 9

 

D 5

Indicar los valores de:

Tiempo de espera y tiempo de retorno de cada trabajo, tiempo medio de espera y retorno, cuando la planificación se realiza mediante los algoritmos SJF y FCFS.

SOLUCIÓN: 1

Tabla 10. Titulo: Algoritmo SJF

Proceso

Tiempo de

Tiempo

Tiempo

Tiempo de

Turnaround

Tiempo de

llegada

de

de

Finalización

Espera

Servicio

Comienzo

A

0 8

 

0

8

8

0

B

1 4

 

8

12

12-1=11

8-1=7

C

2 9

 

17

26

26-2=24

17-2=15

D

3 5

 

12

17

17-3=14

12-3=9

Promedio

 

14.25

7.75

Fuente: Autor

Tabla 11. Titulo: Algoritmo FCFS ejemplo 2

Proceso

Tiempo de

Tiempo

Tiempo

Tiempo de

Turnaround

Tiempo de

llegada

de

de

Finalización

Espera

Servicio

Comienzo

A

0 8

 

0

8

8

0

B

1 4

 

8

12

12-1=11

8-1=7

C

2 9

 

12

21

21-2=19

12-2=10

D

3 5

 

21

26

26-3=23

21-3=18

Promedio

 

15.25

8.75

Fuente: Autor

El problema real de este algoritmo es conocer o, por lo menos estimar el tiempo de ejecución para cada proceso. Para procesos por lotes, el sistema puede solicitar al usuario que estime el valor de ejecución de dicho proceso y de esta forma podérselo pasar al sistema operativo, sin embargo en la planificación a corto plazo esta política no se puede emplear ya que no se sabe a priori la duración de un proceso, a no ser que podamos predecir la duración de cada proceso mediante técnicas estadísticas.

2.18.3

SRT (Shortest Remaining Time) "Primero el menor tiempo restante"

La política de menor tiempo restante, también llamada SRT (Shortest Remaining Time) es una versión apropiativa del SJF, en la que el planificador siempre elige al proceso que le queda menos tiempo esperado de ejecución. La idea es la siguiente, cuando un proceso es añadido a la cola de listos, puede quedarle un tiempo esperado de ejecución menor que al proceso que está ejecutándose en ese momento en el procesador, por consiguiente el planificador puede apropiarse del procesador para desalojar al proceso en ejecución y asignárselo al nuevo proceso, que tendrá un menor tiempo restante de ejecución. Al igual que el algoritmo SJF, el planificador debe disponer de una estimación de tiempo para cada proceso con el fin de poder llevar a cabo la función de seleccionar el

siguiente proceso, existiendo igualmente que en el SJF peligro de inanición para los procesos largos.

Ambos algoritmos, el SJF y el SRT, no presentan un sesgo favorable a los procesos largos como ocurre con el FCFS y tampoco se generan interrupciones adicionales como en el Round-Robin, por el contrario se deben llevar una cuenta de los tiempos de servicio transcurridos con el fin de que la función estadística estime de la forma más veraz los tiempos de ejecución para cada proceso. El algoritmo SRT produce unos tiempos de retorno mejores que el SJF, ya que los trabajos cortos reciben atención inmediata y preferente a los procesos largos.

2.18.4

Prioridad

En muchos sistemas, los procesos tienen prioridades asignadas, y el planificador escogerá aquel proceso con mayor prioridad.

Cuando un proceso debe ser seleccionado, el planificador por prioridades seleccionará aquel proceso que tenga mayor prioridad. Si hay más de un proceso entonces se deberá seguir alguna política de selección. Un problema que presenta un esquema de planificación por prioridades puro es que los procesos con la prioridad más baja pueden sufrir de inanición o bloqueo indefinido. Un proceso que está listo para correr pero espera porque siempre hay procesos con prioridad más alta. Para evitar este problema, se puede ir incrementando gradualmente la prioridad de los procesos (envejecimiento).

SJF es un caso especial de planificación por prioridad, donde la prioridad es el inverso del valor estimado del próximo ciclo de CPU (a menor ciclo, mayor prioridad).

Ejemplo:

Sea la siguiente descripción de carga:

Trabajo

Ráfaga CPU

Prioridad

 

A 8

2

 

B 4

1

 

C 9

4

 

D 5

2

Suponer el orden de llegada el indicado.

Calcular tiempo de espera y tiempo de retorno de cada trabajo, tiempo medio de espera y retorno, cuando la planificación se realiza mediante el algoritmo de prioridades y del tipo no apropiativo.

SOLUCIÓN:

Tabla 12. Titulo: Algoritmo por Prioridades

Proceso

Tiempo

Priori

Tiempo

Tiempo de

Tiempo de

Turnaroun

Tiempo de

de lleg.

dad

de

Comienzo

Finalizaci

d

Espera

Servicio

ón

A 0

 

2

8

0

8

8

0

B 1

 

1

4

22

26

26-1=25

22-1=21

C 2

 

4

9

8

17

17-2=15

8-2= 6

D 3

 

2

5

17

22

22-3=19

17-3=14

Promedio

 

16.75

10.25

Fuente: Autor

Este algoritmo puede ser apropiativo y no apropiativo. En el caso de apropiativo, cuando un proceso llega a la cola de procesos listos, su prioridad es comparada con la prioridad del proceso que está corriendo. Si la prioridad del nuevo proceso es mayor, entonces se atiende al nuevo proceso.

2.18.5 Algoritmo SRTF

El algoritmo SRT, Shortest Remaining Time o Primero el menor tiempo restante, es la versión expulsiva del algoritmo SJF conocido como “trabajo más corto primero” que maneja los trabajos con base en la duración de su ciclo del CPU. Se diferencia del SJF en que si un nuevo proceso pasa a listo se activa el dispatcher para ver si es más corto que lo que queda por ejecutar del proceso en ejecución. Si es así el proceso en ejecución pasa a listo y su tiempo de estimación se decrementa con el tiempo que ha estado ejecutándose. Este algoritmo tiene mayor ventaja del SJF ya que es óptimo para las ráfagas que llegan indistintamente ya que prefiere los procesos cortos y tiene la opción de suspender el que se está ejecutando para dar paso al nuevo.

Uso del quantum En este caso se usa un Quantum, que es un tiempo determinado en el que pasa un proceso por el CPU que no puede ser modificado por el usuario.

Ejemplo:

En un cierto instante se tiene los siguientes procesos:

Proceso

Tiempo de

Tiempo de

llegada

servicio

P1

0

7

P2

2

4

P3

4

1

P4

5

4

Indicar los valores de:

Tiempo de espera y tiempo de retorno de cada trabajo, tiempo medio de espera y retorno, cuando la planificación se realiza mediante el algoritmo SRTF con un quantum de 2.

SOLUCIÓN:

Tabla 13. Titulo: Algoritmo SRTF

Ejemplo: quantum =2;

Proces

Tiempo

Priori

 

Tiempo de

Tiemp

Tiempo

Turna.

Tiempo

o

de lleg.

dad

Servicio

 

de

de Fin

de Espera

 

Com.

P1

0

7

7

5

3

1

 

0 4c

0,11,1

2,13,15,1

16-0=16

16-7=9

3,15

6

P2

2

4

4

2

0

   

2c

2,5

4,7

7-2=5

5-4=1

P3

4

1

1

0

     

2c

4

5

5-4=1

1-1=0

P4

5

4

4

2

0

   

2c

7,9

9,11

11-5=6

6-4=2

Promedio

 

7

3

Fuente: Autor

NOTA: cuando termina una corrida se vuelve a buscar desde arriba los más cortos excepto los que ya terminaron

2.18.6 Round Robin "Turno rotatorio"

Una manera rápida de reducir la penalización que los procesos cortos sufren con FCFS es usar expropiación basada en un reloj. Una interrupción de reloj es generada a intervalos periódicos. Cuando ocurre la interrupción, el proceso en ejecución es colocado en la cola de procesos listos y el próximo trabajo es seleccionado basado en el esquema FCFS. A cada proceso se le da un trozo de tiempo.

La principal decisión de diseño que surge con Round Robin es el tamaño del trozo

o quantum. Si el quantum es muy corto, entonces los procesos se moverán a

través del sistema rápidamente. Por otro lado, hay un cierto overhead o desperdicio de tiempo envuelto con el manejo de la interrupción de reloj y las funciones de planificación y despacho. Por lo tanto quanta muy pequeños deberían evitarse. Una alternativa es usar un quantum de tiempo que sea un poco más grande que el tiempo promedio requerido para una interacción típica.

Round Robin es particularmente efectivo para sistemas generales de tiempo compartido. Se implementa con una cola FIFO de procesos. Nuevos procesos son

agregados al final de la cola, y toma el proceso que se encuentra en la cabeza de

la cola. Actualiza el timer para que interrumpa después del quantum de tiempo.

Si tenemos n procesos en la cola de listos y el quantum es de q unidades de tiempo, entonces cada proceso recibe 1/n tiempos de procesador en trozos de q unidades de tiempo como máximo, y además ningún proceso debe esperar más de (n-1) x q unidades de tiempo antes de recibir su siguiente quantum.

El desempeño de este algoritmo dependerá del tamaño del quantum. Si el quantum es infinito entonces degenera en FCFS. Si el quantum es muy pequeño entonces Round Robin es llamado compartición de CPU y en teoría pareciera que cada proceso tiene su propio procesador corriendo a 1/n la velocidad del procesador real.

Bajo este esquema es importante considerar el efecto del cambio de contexto.

Ejemplo:

En un cierto instante se tiene los siguientes procesos:

Proceso

Tiempo de

Tiempo de

llegada

servicio

 

A 0

8

 

B 1

4

 

C 2

9

 

D 3

5

Indicar los valores de:

Tiempo de espera y tiempo de retorno de cada trabajo, tiempo medio de espera y retorno, cuando la planificación se realiza mediante el algoritmo Round Robin con un quantum de 3.

SOLUCIÓN:

Tabla 14. Titulo: Algoritmo Round Robin

Proceso

Tiempo de

Tiempo

Tiempo

Tiempo de

Turnaround

Tiempo de

llegada

de

de

Finalización

Espera

Servicio

Comienzo

A

0 8

 

0, 12, 21

3, 15, 23

23

15

B

1 4

 

3, 15

6, 16

16-1=15

11

C

2 9

 

6, 16, 23

9, 19, 26

26-2=24

15

D

3 5

 

9, 19

12,21

21-3=18

13

Promedio

 

20

13

Fuente: Autor

2.19 PLANIFICACIÓN DE COLAS MÚLTIPLES

Los algoritmos vistos hasta este momento forman parte de un conjunto de políticas de planificación en las que el denominador común es que tienen una sola cola de procesos listos, esto es, planificadores monocola, pero se han creado otra clase de algoritmos de planificación para aquellas situaciones donde los procesos se pueden clasificar fácilmente en distintos grupos; por ejemplo diferenciar aquellos procesos que se ejecutan en primer plano (llamados procesos interactivos) de los que se ejecutan en segundo plano (los procesos por lotes). Estos dos tipos de procesos tienen requisitos de tiempos de respuesta diferentes, por lo que presentarán distintas necesidades de planificación, así como cada grupo de procesos tendrá unas prioridades sobre el otro grupo.

Un algoritmo de planificación de colas múltiples divide la cola de procesos listos en diversas colas (ver figura). Los procesos se podrán asignar de forma permanente a una de las colas de planificación, o bien podrán cambiar de cola de planificación, todo dependerá del algoritmo que se esté empleando. Así como cada cola tendrá su propio algoritmo de planificación.

Figura 20: Planificación de colas múltiples Fuente: http://www3.uji.es/~redondo/so/capitulo2_IS11.pdf 2.20
Figura 20: Planificación de colas múltiples Fuente: http://www3.uji.es/~redondo/so/capitulo2_IS11.pdf 2.20
Figura 20: Planificación de colas múltiples Fuente: http://www3.uji.es/~redondo/so/capitulo2_IS11.pdf 2.20
Figura 20: Planificación de colas múltiples Fuente: http://www3.uji.es/~redondo/so/capitulo2_IS11.pdf 2.20

Figura 20: Planificación de colas múltiples

Fuente: http://www3.uji.es/~redondo/so/capitulo2_IS11.pdf

2.20 PLANIFICACIÓN CON MÚLTIPLES COLAS

Debe existir una planificación entre las colas, la cual generalmente es una planificación apropiativa de prioridad fija, esto es, podrá existir una jerarquía de prioridades entre las colas de procesos listos del planificador. Nosotros veremos dos tipos de planificación de múltiples colas, planificación de colas múltiples con realimentación y la planificación de colas múltiples por prioridad.

2.20.1 Planificación de colas múltiples con realimentación

La planificación de colas múltiples con realimentación (ver figura) permite a un proceso moverse de una cola a otra de procesos listos. La forma de llevar a cabo

dicha planificación es la siguiente; en principio es una planificación apropiativa y se emplea un mecanismo dinámico de prioridades. Cuando un proceso entra por primera vez en el sistema se sitúa en la primera cola de procesos listos, cuando vuelva el proceso a la cola de listos después de su primera ejecución retornará a

la segunda cola de procesos listos.

La idea es que después de cada ejecución al proceso se le degradará a un nivel inmediatamente inferior de prioridad. De esta forma un proceso corto terminará rápidamente, sin descender demasiado en la jerarquía de colas de listos. Los procesos largos serán gradualmente llevados hacia colas inferiores. Cuando un proceso llega a la cola de menor prioridad, ya no podrá seguir descendiendo, con lo que dicho proceso volverá a la misma cola de procesos listos repetidamente hasta completar su ejecución.

El planificador seleccionará siempre un proceso que se encuentre en una cola de mayor prioridad, con lo que se le asigna a cada cola de listos una prioridad, y cada nuevo proceso que entra al sistema se le asignará la cola de mayor prioridad.

Esta política favorece a los procesos nuevos, ya que entran siempre los primeros antes de cualquier otro proceso que se encuentre en otra cola, también favorece

a los procesos cortos, que no les da tiempo a que dichos procesos se degraden mucho en la jerarquía de las colas de procesos listos.

Dentro de cada cola se podrá usar cualquier planificador monocola de los definidos anteriormente, con lo que se flexibiliza aún más este algoritmo de planificación.

Un problema que presenta este algoritmo, es que los procesos largos pueden sufrir de inanición si llegan regularmente nuevos procesos al sistema. Para compensar este problema se puede limitar el tiempo de espera en una cola de menor prioridad. El remedio consiste en permitir que un proceso que se encuentre en una cola de menor prioridad pueda promocionar a una cola de mayor prioridad, si ha consumido cierta cantidad de tiempo en espera de servicio.

consumido cierta cantidad de tiempo en espera de servicio. Figura 21: Planificación con realimentación Fuente:

Figura 21: Planificación con realimentación

Fuente: http://www3.uji.es/~redondo/so/capitulo2_IS11.pdf

Por lo general, un planificador de colas múltiples con realimentación se define con los siguientes parámetros:

El número de colas.

El algoritmo de planificación para cada cola.

El método utilizado para determinar cuándo promover un proceso a una cola de mayor prioridad.

El método utilizado para determinar cuándo degradar un proceso a una cola de menor prioridad.

Este algoritmo de planificación se puede configurar para ajustarse a un sistema específico que se esté diseñando, pero tiene como inconveniente que es complejo realizar un diseño a medida.

2.20.2 Planificación de colas múltiples con prioridades

Mediante este algoritmo de planificación (ver figura) se le asigna a cada proceso una prioridad que deberá coincidir con alguna de las prioridades asignadas a las colas de procesos listos. Cuando un proceso entre en el sistema se dirigirá a la cola que le corresponda, no pudiendo cambiar de cola de procesos listos mientras esté en el sistema, al contrario que la planificación con realimentación.

El planificador seleccionará el proceso que tenga mayor prioridad, esto es, el proceso que se encuentre en la cola de mayor prioridad, y dentro de cada cola se seleccionará el proceso de acuerdo a la política de planificación específica a dicha cola.

Un problema que presentan estos algoritmos de planificación es que los procesos de prioridad más baja pueden sufrir de inanición. Este problema ocurre, como

era de esperar, si hay un flujo continuo de procesos listos de alta prioridad. Para superar este problema, se puede pensar en diseñar un método que pueda cambiar la prioridad del proceso en función de su edad, esto es, aumentar la prioridad por envejecimiento.

su edad, esto es, aumentar la prioridad por envejecimiento. Figura 22: Planificación por prioridades Fuente:

Figura 22: Planificación por prioridades

Fuente: http://www3.uji.es/~redondo/so/capitulo2_IS11.pdf

UNIDAD III

GESTIÓN DE MEMORIA: ASIGNACIÓN CONTINUA Y ASIGNACIÓN NO CONTINUA: PAGINACIÓN Y MEMORIA VIRTUAL

3.1 PANORAMA GENERAL

Un vistazo al material que se va a cubrir en esta sección se muestra en la figura siguiente. Es una gráfica en donde se especifican, en términos generales, los conceptos más importantes en cuanto a las técnicas empleadas en el manejo de memoria.

en cuanto a las técnicas empleadas en el manejo de memoria. Figura 23: Panorama del manejo

Figura 23: Panorama del manejo de memoria

Fuente:

http://www.elprisma.com/apuntes/ingenieria_de_sistemas/sistemasoperativosfundamentos/defaul

t2.asp

La memoria es uno de los principales recursos de la computadora, la cual debe de administrarse con mucho cuidado. Aunque actualmente la mayoría de los sistemas de cómputo cuentan con una alta capacidad de memoria, de igual manera las aplicaciones actuales tienen también altos requerimientos de memoria, lo que sigue generando escasez de memoria en los sistemas multitarea y/o multiusuario.