Está en la página 1de 91

UNIDAD I

INTRODUCCION Y TIPOS DE SISTEMAS OPERATIVOS


1.1

DEFINICIONES DE UN SISTEMA OPERATIVO

A continuacin se analizaran algunas definiciones sobre lo que es un sistema


operativo:
Los sistemas operativos son los programas de gestin del hardware de un
sistema de computacin electrnico, as como de establecimiento de su
relacin con el usuario. Es por tanto uno de los elementos software de bajo
nivel ms importante, y hace de puente entre el software, el hardware y el
usuario.

Intermediario entre el usuario y los programas de aplicacin 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


administracin y coordinacin 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 programacin y programas
utilitarios
Los usuarios son personas, mquinas o programas que usan los servicios del
sistema operativo.

Es el software que controla la computadora, sirve de interfaz hombre-mquina y


administra los recursos de un sistema de cmputo hardware y software.

Lo importante es que el sistema operativo debe:

1.2

Proveer un mecanismo conveniente para que los usuarios ejecuten las


aplicaciones y manejen el hardware, decidiendo quin y cmo se utilizan
los recursos.
Permitir la operacin eficiente del sistema de computadoras,
especialmente en sistemas multitareas y multiusuarios.

FUNCIONES DE UN SISTEMA OPERATIVO

Las tareas que desempea un sistema operativo dependen en cierta medida del
tipo de las caractersticas 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 comn 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 ejecucin de otros programas

Figura1: Funciones de un sistema operativo


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

1.3

LOS
SISTEMAS
COMPUTADORAS

OPERATIVOS

LOS

SISTEMAS

DE

La siguiente figura muestra la relacin entre los sistemas operativos y el resto


del sistema de computadoras:

Usuario 1

Usuario 2

Usuario n

Interfaz de Comandos o Aplicaciones (procesadores de palabras, hojas de


clculo, sistemas de bases de datos)

Sistema
Operativo

Hardware
Figura 2: Relacin 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 invocacin de


las aplicaciones o el uso de una interfaz de comandos:
Interfaz de la Lnea de Comandos (CLI, Command-Line Interface)
comandos, opciones y argumentos como texto
Interfaz Grfica para Usuarios (GUI, Graphical User Interface)
ventanas, conos, mens 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
programacin provee para atender solicitudes de los programas
El sistema operativo se comunica con el hardware mediante el uso de
interrupciones (interrupts)
Una interrupcin es una seal que un dispositivo de hardware enva al
sistema operativo para indicar que ste necesita ser atendido

1.4

COMPONENTES DE UN SISTEMA OPERATIVO

De manera esquemtica, un sistema operativo se compone de:


a. Ncleo (Kernel): responsable de la gestin de memoria, de disco y de
procesos.
b. Shell (Intrprete 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.

Figura 3: Componentes de un sistema operativo


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

1.4.1

Ncleo 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 bsicas:
Carga inicial (programa de arranque)
Administracin de memoria
Administracin del procesador
Administracin de dispositivos
Administracin 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 localizacin 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 cdigo,
memoria asignada, atributos de seguridad y el estado del CPU (registros).
o Un programa puede crear uno o ms 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 operacin de lectura o escritura.
o Planifica cmo 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


cunto tiempo
Provee mecanismos para la sincronizacin y la comunicacin entre los
procesos.
Provee mecanismos para el manejo de procesos concurrentes.

o
o

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
planificacin.
o Comienza la operacin de los dispositivos.
o Permite la comunicacin entre dispositivos.

polticas

de

El administrador de los archivos (file manager) est a cargo de monitorear


cada archivo en el sistema.
o Provee una visin lgica y uniforme del almacenamiento de la informacin 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 modificacin de los directorios y archivos.
o Asigna y libera recursos para la utilizacin 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
o

Es importante recalcar que los componentes de un sistema operativo deben


interactuar armoniosamente unos con otros.
Estos componentes no actan 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 seales elctricas del
teclado o el mouse y le enva 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 enva
un comando al administrador de archivos para que ste determine su
localizacin en disco.
o El administrador de archivos le enva un comando al administrador de
dispositivos para que cargue el programa y ste ltimo le enva un comando

o
o
o

al administrador de memoria para que encuentre espacio en RAM, coloque el


programa y registre su localizacin en RAM.
Una vez que el programa est en memoria, el administrador del procesador
determina la prioridad y los recursos que le corresponde.
Mientras el programa ejecuta, los administradores manejan los recursos que
el proceso necesita.
Cuando el programa termina de ejecutar, los administradores liberaran los
recursos.

1
Teclado

2
Comando

Seales
elctricas

Ad.dispositivos

3
Si lee del
disco

Ad.procesador
Hay que leerlo de disco
o si est ya en memoria

Encuentre espacio
en RAM

Ad.archivos

Cargue el
programa
Ad.memoria

Determine
prioridad

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 bsica para:
Cargar programas
Abortar programas
Introducir datos a los programas
Trabajar con archivos
Trabajar con redes
Ejemplos de intrprete 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 intrprete 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 sesin. La funcin principal del intrprete de
comandos es obtener y ejecutar en el sistema, el comando especificado por el
usuario. Uno de los mtodos consiste en que el propio intrprete de comandos
contiene el cdigo 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 actualidad, e inicialmente orientadas al gran pblico, son ms utilizadas las


GUI (Graphics User Interface) que el clsico interprete de comandos textual.
Estas interfaces grficas 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

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 voltil, cuando se enciende la
mquina no contiene ninguna informacin til.
Para resolver esta situacin, las computadoras cuentan con un programa
permanente grabado en una memoria no voltil denominada comnmente BIOS
en los PC.
La BIOS realiza 3 funciones:
1. Hace una comprobacin del sistema para detectar sus caractersticas 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 direccin de memoria
donde est este cargado.
El programa cargador del sistema operativo suele encontrarse en los primeros
sectores del disco y tienen un tamao prefijado por convenio.
1.5.2

Arranque software

El programa cargador tiene por misin traer a memoria principal algunos de los
componentes del sistema operativo. Una vez cargados estos componentes se
pasa a la fase de inicializacin, que incluye las siguientes operaciones:
Comprobacin del sistema
Se establecen las estructuras de informacin 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

CMO FUNCIONA EL ARRANQUE DE UN COMPUTADOR?

Al poner en funcionamiento el computador, los circuitos y la memoria toman


valores determinados. Mediante una seal 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 informacin vlida, es
decir, que no contiene ningn programa.
Como sabemos, cualquier funcin que queramos que el computador lleve a cabo
se tiene que hacer mediante el correspondiente programa de mquina.
Por tanto, para llevar un programa del disco duro a la memoria se necesita un
programa, que en este caso se denomina cargador.

Esta situacin, 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
Direccin
0
2.023

Unidad de memoria
Celdas
Direccin
0

Zona
ROM

1.046.526
Zona
ROM
1.048.575

1.048.575

Figura 7: Conformacin de la memoria principal


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

En estas pastillas se registran unos programas que estn 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 seal RESET carga la direccin de esta zona de memoria en el
contador del programa, de forma que se empieza a ejecutar el programa
almacenado en esta posicin. 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. Adems,
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
SO

Carga BIOS

Sector de arranque
Particin activa

Lectura
CMOS

Carga
MBR

Figura 8: Proceso de arranque


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

1.8

BIOS: CONCEPTOS Y CONFIGURACION

Figura 9: La BIOS
Fuente: https://belenus.unirioja.es/~alortiz/imagenes/chip_bios.jpg

El BIOS (Basic Input Output System Sistema Bsico 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 perifricos 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 informacin del BIOS en el ROM,
pero hoy en da la mayora de los BIOS estn 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
tecnologa, 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, cmo 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 aos.
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: prdida
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 caractersticas, 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 precaucin 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 configuracin, veremos
cmo hacerlo y algunos ejemplos.

10

1.9

ACCESO Y MANIPULACIN DEL BIOS:

Para acceder al programa de configuracin del BIOS, generalmente llamado


CMOS Setup, tendremos que hacerlo pulsando un botn durante el inicio del
arranque del ordenador. Generalmente suele ser la tecla Supr aunque esto vara
segn los tipos de placa y en porttiles. Otras teclas empleadas son: F1, Esc, o
incluso una combinacin, para saberlo con exactitud bastar con una consulta al
manual de su placa base o bien prestando atencin 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 ms comunes son: Award, Phoenix (se han unido) y AMI. Bastante
similares pero no iguales. El programa del BIOS suele estar en un perfecto ingls
y adems aparecen trminos 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 clasificacin puede ser:
1.
Configuracin bsica de parmetros - Standard CMOS Setup.
2.
Opciones de BIOS - BIOS Features, Advanced Setup.
3.
Configuracin avanzada y chipset - Chipset features.
4.
Password, perifricos, discos duros, etc.
5.
Otras utilidades.
Bajo el 1er punto se puede encontrar la configuracin de la fecha y hora, los
discos duros conectados (IDE) y la memoria detectada, entre otras cosas.
En el punto 2 existen muchos parmetros modificables, suelen aparecer:
cach, secuencia de arranque (Boot sequence), intercambio de disqueteras, etc.
En el punto 3 podemos encontrar parmetros relativos a las caractersticas 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 contrasea de acceso al
programa del BIOS, modificar parmetros relativos a los perifricos integrados,
control de la administracin de energa, 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.
Adems es importante aclara que dependiendo del tipo de placa base o del
modelo la presentacin del setup puede variar.

11

Figura 10: Imagen de la interfaz ms comn de BIOS (Award y Phoenix)


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

Modificaciones comunes: ejemplos.


Existen una serie de parmetros que son susceptibles de ser modificados en
algn momento, de hecho en la mayora de foros de soporte tcnico se plantean
esas dudas. Vamos a explicar cules 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 sola marcar A C SCSI/otros lo cual
indicaba que primero que deba mirar en la unidad A (disquetera) y
posteriormente en C (disco duro principal), gracias a esto se poda arrancar el
ordenador con un disco de arranque antes que el sistema operativo. Hoy en da
esto ha cambiado en muchos casos, cuando se necesita arrancar desde un CD
(instalacin 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
fbrica) para que inicialmente apunte a la unidad lectora de CD. Supongamos
que la unidad tiene la letra D, el orden podra ser D A C o D C A, por ejemplo.
La opcin suele encontrarse en BIOS Features >> Boot Sequence para las
BIOS Award. En algunos casos en vez de integrarse en una sola opcin, 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 cul es el dispositivo que arrancar
en ese orden (First = primero, Second = segundo, Third = tercero, Other =
otro).

12

Figura 11: Secuencia de arranque


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

1.9.2

Cmo se inicia en este caso un sistema operativo bsico como


el MS-DOS?

Veamos, en el caso anterior, como se iniciara 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 particin y el tipo de particin.
Creamos ahora una particin primara. Al formatearla, el MS-DOS, crea el
sector de boot de la particin. 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 particin
activa. Una vez localizada lee el primer sector de dicha particin 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 particin 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.

13

7. Le cede el control para su ejecucin.. y as comienza la carga de un


MSDOS: el IO.SYS lee el fichero MSDOS.SYS, el cual es de parmetros en
los sistemas operativos W95, W98, ME. Posteriormente y una vez
ejecutadas las tareas bsicas e instaladas las rutinas del sistema
operativo, carga el interprete de comandos: el command.com
8. Si nuestro sistema operativo fuese MS-DOS, aqu terminara la carga. Si es
W9X, busca el win.com para iniciar la carga de Windows.
Lo anterior, no es vlido para sistemas operativos basados en ncleo 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 continuacin, 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 mquina.
1.9.3

Posibles problemas en este inicio bsico

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 mquina al encenderla. Por tanto, es lo ms 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 ejecucin y


determina cual es la particin activa.
Carga en memoria el primer sector de la particin activa (sector de boot de la
particin) y le cede control para su ejecucin.
El sector de boot, busca en el disco el programa NTLDR y lo carga en
memoria cedindole control para su ejecucin.
El programa NTLDR, busca el archivo boot.ini, y en funcin de su contenido,
muestra un men para que seleccionemos el sistema a cargar.
Si tenamos un MS-DOS, W9X o ME, previo, nos parecer tambin en
dicho men la opcin de su carga.
Si seleccionamos esta ltima opcin buscar en el disco el
archivo bootsect.dos, el cual es el antiguo sector de boot de la
particin 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 lnea del boot.ini, tal y como veremos a
continuacin, la particin de instalacin del sistema operativo (de
ncleo NT) y comenzar la carga real.

14

Tabla 1.
Titulo: Resumen del arranque del computador
Fase
Iniciador ROM
Cargador del S.O.
Inicializacin S.O.

Operacin
Test del hardware
Carga del cargador del S.O.
Carga en memoria de componentes del S.O.
Test del sistema de archivos
Creacin 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
rgido. 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 ncleo 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 ms
particiones debemos sacrificar una particin primaria y crear una particin
extendida, dentro de la cual se pueden crear, como mximo, 4 particiones
lgicas.
Aclaracin: no se pueden guardar datos directamente en una particin
extendida, sino que, los datos se guardan dentro de las particiones lgicas que
ella alberga.

1.12 HISTORIA DE LOS SISTEMAS OPERATIVOS


La evolucin de los sistemas operativos es paralela a la de las computadoras.

En los 1940s:
Primera generacin de computadoras (tubos al vaco)
Las aplicaciones eran cientficas, matemticas y militares.
No haba sistemas operativos ya que cada programa inclua las
instrucciones para manejar los recursos necesarios.
Se programaba en lenguaje de mquina.
Las mquinas eran operadas por los programadores que reservaban
tiempo de operacin (se perda tiempo).
El proceso de depuracin era manual (el programador detena el programa
y examinaba el estado del CPU y RAM).
Los programas se diseaban pensando en la utilizacin de recursos
primero y la claridad del cdigo despus.

En la primera mitad de los 1950s:


Surgen bibliotecas (libraries) con subrutinas y macros que le permitan a
los programadores manejar ms fcilmente dispositivos de entrada/salida.

15

Estas bibliotecas son la gnesis de los sistemas operativos ya que se


fueron haciendo ms complejas y podan controlar la ejecucin de varios
trabajos en secuencia.
En la segunda mitad de los 1950s:
Segunda generacin 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 planificacin de trabajos (job scheduling) que permite
agrupar varios programas que tengan requisitos semejantes y decidir la
forma ms 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 rcords (record blocks) que permite
agrupar varios rcords lgicos en uno fsico y disminuir las operaciones
E/S.
Se crean memorias intermedias (buffers) para aligerar las operaciones
E/S.
Tambin se desarrollan mtodos de organizacin de archivos tales como el
acceso indexado y el aleatorio.
En los 1960s:
Tercera generacin de computadoras (circuitos integrados)
Surgen las minicomputadoras.
La diferencia en velocidad entre el CPU y los dispositivos E/S es todava un
problema.
Para ayudar se crea la multiprogramacin (multiprogramming) que
permite que varios trabajos compartan la atencin del CPU.
En la multiprogramacin pasiva, el CPU cambia de un trabajo al prximo
cuando el trabajo necesita esperar por un evento externo (normalmente
una operacin E/S).
En la multiprogramacin activa, el sistema operativo le otorga a cada
trabajo un pedazo de tiempo. Cuando expira el tiempo, se interrumpe el
trabajo momentneamente y se contina con el prximo trabajo.
La multiprogramacin requiri la optimizacin de mtodos de planificacin
de trabajos (job scheduling) y de administracin de la memoria.
La idea de otorgar pedazos de tiempo a los trabajos y de atender varios
trabajos simultneamente 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.

16

UNIX es multiusuarios y multitareas (multitasking).


Se desarroll la memoria virtual, lo cual permita que el CPU atendiera
ms 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 dcada se crean las primeras supercomputadoras.
Surgen lenguajes de alto nivel tales como Pascal y C.
En los 1980s:
Disminuyen dramticamente los costos de los componentes de las
computadoras.
Las computadoras personales se vuelven ms comunes.
Surgen lenguajes orientados a objetos tales como C++.
Mejora la infraestructura de comunicacin de datos y surgen las redes de
cobertura local (LAN, Local Area Network).
Surgen sistemas operativos y lenguajes de programacin que apoyan el
multiprocesamiento (tener ms 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 ncleos
mltiples (multi-core processors).
Se desarrolla el concepto de virtualizacin que permite particionar una
computadora en varias mquinas 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 tecnologa ubicua (en todo lugar en todo momento) ya que
dispositivos de uso comn (celulares, PDAs, etc.) contienen computadoras
que requieren sistemas operativos empotrados.

17

Tabla 2.
Titulo: Evolucin de los sistemas operativos
S.O
Atlas

AO
50 -60

The
RC4000
Solo
CTSS

Multics

Unix

1969

Sprite
Merlin
Windows
NT
Match
Amoeba
Windows
95/98
Coyote

1984
1984
1985

Exokernel

AUTOR

University
Manchester
Universidad
de Lotes
Eindhoven
Brinch Hansen de S.O. Completo
Regenecentralen
Brinch Hansen de Multiprogramado
Regenecentralen
MIT
Multiprogramado
/
tiempo
compartido
MIT
Multiprogramado
/
tiempo
compartido
Ritchie/Thompson
Multiprogramado
/
tiempo
compartido
Lotes
Multiprogramado
Microsoft
Multiprogramado

1986
Darpa
1994
1995/98 Microsoft
1996

GESTION DE
PROCESOS
of Lotes

Trinity
Dublin

Multiprogramado
Distribuido
Multiprogramado
College Distribuido
Micro_kernel

ARQUITECTURA
Monoltico
Modular
Modular
Modular
Monoltico

Modular

Monoltico

Monoltico
Modular
Modular
Monoltico
Microkernel
Monoltico
Modular
Monoltico

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 porcin 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
ncleos de un CPU multi-core
La redefinicin del kernel para que ocupe menos espacio en RAM.
Originalmente, los sistemas operativos eran monolticos y todos los
componentes se cargaban a RAM. Actualmente, slo el kernel permanece
en RAM y ste carga los componentes que estime necesario
El diseo y programacin 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

18

1.13 TIPOS DE SISTEMAS OPERATIVOS

Los sistemas operativos se categorizan de acuerdo al tiempo de respuesta y a


cmo 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 obtenan los datos e instrucciones de tarjetas perforadas o
cintas que definan trabajos
Un trabajo (job) es un conjunto de tareas que se ejecutan sin
intervencin humana
Los sistemas en lote se medan 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 ms comunes


actualmente y se encuentran en todo tipo de computadoras.
En estos sistemas los usuarios interactan 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 tcnica de tiempo compartido (time sharing)
La mayora 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 crtico para la toma de
decisiones.
Estos sistemas se encuentran en las computadoras de los transbordadores
espaciales, en sistemas de control de trfico areo, en equipo mdico
sofisticado, robots industriales, en sistemas distribucin de electricidad y en
sistemas de conmutacin telefnica, entre otros
En los sistemas de tiempo real el tiempo de respuesta es crtico
100% responsivo, 100% del tiempo
Estos sistemas estn 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:

19

Sistemas estrictos (hard real-time systems) el sistema se cae si no se


responde inmediatamente
Por ejemplo, marcapasos, expulsin de bolsas de aire (air bags) en los
autos, control de vuelo
Sistemas flexibles (soft real-time systems) el sistema sufre una
degradacin en su desempeo si no se responde en el deadline pero no se
cae: Por ejemplo, lavadoras, cmaras de vdeo
Otros tipos de sistemas que tambin se reconocen son:
Los sistemas empotrados (embedded systems) se colocan en
computadoras diseadas para desempear unas pocas funciones definidas,
comnmente con restricciones de tiempo real
Es posible convertir un sistema operativo de propsito general en un
sistema empotrado
Las computadoras y sistemas empotrados se colocan en productos a
los cuales se les quiere aadir capacidades de procesamiento
Sistemas tales como los de los motores y frenos de
automviles, marcapasos y elevadores son sistemas
empotrados que tambin son de tiempo real
Sistemas para equipos que tocan msica, PDAs y consolas de
juegos de vdeo son sistemas empotrados que no son de
tiempo real
Los sistemas hbridos (hybrid systems) son una combinacin 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,
profesional
Para clientes o domsticos: 2000, XP Home, Vista Home
Para equipos especiales (PDAs, mviles, etc.): CE, Mobile
UNIX. Distintas versiones y distribuciones:
Unix (SUN)
Linux (Gratis)
Aix (IBM)

XP

1.14 SISTEMAS OPERATIVOS POR SERVICIOS


Una de las clasificaciones ms difundidas de los sistemas operativos se resume
en la siguiente figura:

20

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 ms 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 mquina 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 tpica 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 MQUINA AMPLIADA


La otra forma de ver un sistema operativo es como una mquina ampliada o
mquina 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 mquina 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 vern lo mismo como forma de interaccin
con los recursos, con independencia de cul de las mquinas citadas est
ejecutando el LINUX. Es como si hubisemos creado un hardware nuevo que se
programa siempre igual.

21

Figura 13: Modelo de mquina virtual


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

1.17.1

Ventajas y desventajas de las mquinas virtuales


Tabla 3.
Titulo: Ventajas y desventajas de las mquinas virtuales

Ventajas
El concepto de mquina virtual
provee proteccin total de los
recursos del sistema ya que cada
mquina virtual est aislada de
las dems mquinas virtuales
Una mquina virtual es una
herramienta perfecta para el
desarrollo e investigacin de
sistemas operativos por ser que
el desarrollo se hace en una
mquina virtual en vez de una
mquina fsica

Desventajas
No permite comparticin directa
de los recursos

El concepto de mquina virtual es


difcil de implementar debido al
esfuerzo requerido para proveer
una copia exacta de la mquina

Fuente: Autor

Beneficios.- El concepto de maquina virtual presenta varias ventajas. Observe


que, en este tipo de entornos, existe una proteccin completa de los diversos
recursos del sistema. Cada mquina virtual est completamente aislada de las
dems, por lo que no existe problema de proteccin. Sin embargo no es posible
la comparticin directa de recursos. Se han implementado dos mtodos 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 informacin a travs de
una red de comunicaciones virtuales.

22

1.18 EL SISTEMA OPERATIVO USADO CON EL LENGUAJE DE


RDENES
Bsicamente 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 especficos del sistema, aunque, en
general, las funciones suelen ser parecidas en todos ellos. Algunas de las clases
funcionales tpicas de las rdenes del sistema operativo son: las relacionadas con
la conexin y desconexin, con la activacin y control de programas, con la
gestin de archivos, las que muestran informacin de estado, las que permiten la
comunicacin entre los usuarios y las relacionadas con la gestin del sistema.
Los usuarios de las llamadas al sistema invocan los servicios del sistema
operativo mediante llamadas al sistema en tiempo de ejecucin. Estos usuarios,
conocidos como programadores de sistemas y aplicaciones, invocan a las
llamadas al sistema desde sus programas. Adems de proporcionar la mayora
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 ms 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 intrprete de rdenes (shell), que es un
programa independiente del sistema operativo.
El intrprete se encarga de traducir o descomponer la orden en llamadas al
sistema, de forma que se realicen las operaciones asociadas a la ejecucin de
la orden.
Una vez ejecutada la orden, el intrprete visualiza el indicador de peticin de
entrada (<<promt>>) a la espera de que el usuario proporcione una orden
nueva.

1.19 DISEO E IMPLEMENTACIN DEL SISTEMA OPERATIVO


Los problemas a los que nos enfrentamos al disear e implementar un sistema
operativo son:
Objetivos del diseo.- el primer problema es la definicin concreta de
los objetivos y especificaciones, este se puede dividir en dos grupos
bsicos: objetivos del usuario y objetivos del sistema.
Mecanismos y polticas.- Es importante separar las polticas de los
mecanismos. Los mecanismos determinan como hacer algo; las polticas
determinan que hacer. El temporizador en un mecanismo para asegurar la
proteccin de la CPU, pero la decisin de cules deben ser los datos de
temporizacin para un usuario concreto es una decisin de polticas.
Implementacin.- Una vez que se ha diseado un sistema operativo
debe implementarse. Tradicionalmente los sistemas operativos tenan que

23

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 ms baja (capa 0) es el hardware
La capa ms alta (capa N) es la interface con el usuario
Modularidad
Las capas usan funciones y servicios de las capas inferiores.

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
Nivel
Nivel
Nivel
Nivel
Nivel

5
4
3
2
1
0

Programas de usuario
Almacenamientos intermedios de e/s
Manejador de dispositivo de la consola del operador
Manejo de la memoria
Planificacin del CPU
Hardware

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

24

UNIDAD II
PROCESOS Y MULTITAREA
2.1

INTRODUCCIN A LOS PROCESOS

El concepto central de cualquier sistema operativo es el de proceso: una


abstraccin de un programa en ejecucin tambin llamada tarea.
El usuario pide ejecutar programas o segmentos de programas al computador
para ejecucin, solicitando de esta manera acceso al procesador y recursos del
computador. Mientras que esto es ms palpable en computadores grandes y
medianos, tambin puede hallarse en computadores pequeos. Si el computador
fuera a ejecutar un programa a la vez hasta su terminacin, el resto de los
programas tendran 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 multiprogramacin 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
bsicamente un programa ejecutante donde intervienen los valores corrientes del
contador de programa, registros y variables.
No hay un acuerdo universal sobre una definicin de proceso, pero s algunas
definiciones aceptadas
Un programa que se est ejecutando.
Una actividad asincrnica.
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.

25

La unidad despachable.

2.3

RELACIONES ENTRE PROCESOS

Existen dos relaciones fundamentales entre los procesos concurrentes:


Competencia
Cooperacin
La cooperacin es habitual entre los procesos creados como resultado de una
divisin explcita en tareas. Los procesos cooperativos intercambian datos y
seales de sincronizacin necesarias para orquestar su progreso colectivo.
Los procesos cooperativos comparten tpicamente algunos recursos y atributos,
adems 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 ms
frecuentemente soportada por los sistemas operativos es la relacin padre-hijo.
Los procesos hijos heredan generalmente los atributos de sus padres en el
momento de la creacin del proceso, y tambin 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 explcita. El sistema operativo, o en ocasiones un lenguaje de
implementacin 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 adquisicin de datos. Se supone que


supervisa continuamente un cierto proceso fsico, para registrar su
comportamiento, y para identificar e informar sobre cambios significativos a un
operador, o quizs a un robot, el cual puede efectuar alguna accin adicional.
Esos cambios pueden ser ciertas desviaciones estadsticamente 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 cuestin debe
recoger los datos de entrada desde un sensor externo, digamos, por medio de un
conversor A/D, debe archivarlo en disco, efectuar alguna operacin estadstica
para identificar cambios significativos con respecto a la muestra anterior e
informar de ellos mediante, digamos, su impresin o el envo de un mensaje a un
robot que lo espera. Supongamos que esta secuencia de actividades se efecta
repetidamente durante el tiempo de vida del sistema. Aunque la descripcin est
bastante simplificada, este ejemplo tipifica la naturaleza de las operaciones que
aparecen en los sistemas de adquisicin de datos.

26

Dado que, al parecer, las actividades listadas requieren procesamiento


secuencial, el mtodo ms 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

SINCRONIZACIN ENTRE PROCESOS

Veamos el siguiente programa:


Program/module multitarea;

Process recoger;
Begin
While true do
Begin
Esperar_seal_de(guardar, calcular);
Recoger_ad;
Enviar_seal_a(guardar, calcular)
End;
End
Process guardar;
Begin
While true do
Begin
Esperar_seal_de(recoger);}
Guardar_d;
Enviar_seal_a(recoger)
End;
End;
Process calcular;
Begin
While true do
Begin
Esperar_seal_de(recoger, imprimir);
calcular_e;
Enviar_seal_a(recoger, imprimir)
End
End
Process Imprimir;
Begin
While true do
Begin

27

Esperar_seal_de(calcular);
Imprimir_I;
Enviar_seal_a(calcular)
End;
End;
{proceso padre}
Begin
Inicializar_entorno;
Enviar_seal_a(recoger, calcular);{para la primera pasada}
initiate recoger, guardar, calcular, imprimir
end{multitarea}
Process Imprimir;
Begin
While true do
Begin
Esperar_seal_de(calcular);
Imprimir_I;
Enviar_seal_a(calcular)
End
End;
Aqu se presenta el concepto de envo y recepcin de seales. Su objetivo es
proporcionar la sincronizacin necesaria para forzar el cumplimiento de las
relaciones de precedencia indicadas dentro de nuestro conjunto de procesos
cooperativos. Las seales son uno de los mecanismos de sincronizacin entre
procesos que, como grupo, se encuentran entre los servicios ms importantes
proporcionados por los sistemas operativos multitarea.
Supongamos un proceso que espera uno ms seales de suspendido por el
sistema operativo, es decir, no es elegible para ejecucin hasta que le lleguen
todas las seales requeridas. Se supone que una seal llega despus de ser
enviada por otro proceso. El envo de una seal no ocasiona la suspensin del
proceso emisor.
Una observacin importante es que con el problema dividido en cuatro procesos,
cada proceso ejecuta su propio flujo secuencial de instrucciones, ms o menos
independiente. La multiplexacin 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 especficamente informado de ello por una seal.
El programador de sistemas controla este aspecto de la sincronizacin entre
procesos definiendo la identidad y el significado de las seales intercambiadas
entre los procesos cooperativos.
El proceso padre, al cual el sistema operativo transfiere control cuando se
arranca el sistema, tambin est a cargo de la inicializacin del entorno y de la
activacin de los cuatro procesos hijos. En otras palabras, el proceso padre crea
el entorno en tiempo de ejecucin para la ejecucin de la aplicacin. La
inicializacin de un proceso implica crearlo y hacerlo conocido al sistema
operativo.

28

La sincronizacin entre procesos concurrentes cooperativos es esencial para


preservar las relaciones de precedencia y para evitar los problemas de
temporizacin 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 fsicos. Los sistemas
operativos multitarea e incluso algunos lenguajes de programacin proporcionan
una coleccin de primitivas de sincronizacin entre procesos.
Hay tres formas esenciales de interaccin explcita entre procesos:
Sincronizacin 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
operacin,
pueden
resultar
corrompidos
si
son
manipulados
concurrentemente y sin sincronizacin por ms de un proceso. Ejemplo:
variables compartidas para lectura/escritura y dispositivos tales como las
impresoras.
Sealizacin entre procesos: El intercambio de seales de
temporizacin entre procesos utilizado para coordinar su progreso
colectivo.
Comunicacin entre procesos: Los procesos cooperativos concurrentes
deben comunicarse con propsitos tales como intercambiar datos,
transmitir informacin sobre los progresos respectivos y acumular
resultados colectivos. Una memoria compartida, accesible a todos los
participantes, proporciona un medio sencillo y habitual de comunicacin
entre procesos. Para evitar errores de temporizacin, los procesos
concurrentes deben sincronizar sus accesos a la memoria compartida.
Necesidad de sincronizacin entre procesos
El uso de variables compartidas es una forma sencilla y habitual de comunicacin
entre procesos cooperativos.
Cuando un conjunto de procesos tiene acceso a un espacio comn de
direcciones, puede utilizar variables compartidas para una serie de cometidos,
por ejemplo, indicadores de sealizacin y para acumulacin 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 comn
en el cual se almacenan los caracteres de entrada para ser visualizados y para
algn 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 mostrndolos en la
pantalla. Supongamos tambin que cada proceso mantiene un puntero privado
para marcar su posicin actual de trabajo en el bfer, y que se utiliza la variable
compartida ECO para llevar la cuenta del nmero actual de caracteres en espera
de visualizacin.
TECLADO incrementa la variable ECO cada vez que se introduce un carcter
...
eco:=eco + 1

29

...
y PANTALLA decrementa ECO cada vez que visualiza un carcter:
eco:=eco - 1
Las situaciones en las que dos o ms procesos leen o escriben en ciertos datos
compartidos y el resultado final depende de quin 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 algn 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 estn 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 asignacin 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 transicin de estado iniciada por el propio proceso del
usuario, puesto que las otras transiciones son iniciadas por entidades ajenas al
proceso.

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 ejecucin, aunque varios procesos pueden estar listos o en
espera.

30

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 intervencin alguna de los procesos. La
transicin 1 puede suceder cuando el planificador encuentra al procesador
ocioso, o bien porque considera que el proceso que se encuentra en ejecucin ha
dispuesto del procesador durante un tiempo suficiente, con lo cual realizar
previamente la transicin 4 para posteriormente llevar a cabo la transicin 1. La
transicin 2 ocurre cuando un proceso descubre que no puede continuar debido a
que demanda algn recurso de E/S, o bien que el sistema operativo lo bloquea
momentneamente. 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 transicin 3, pasando el proceso nuevamente a estado de listo.

2.8
2.8.1

LOS PROCESOS
OPERATIVO

DESDE

LA

PERSPECTIVA

DEL

SISTEMA

PBC (Process Control Block)

La manifestacin de un proceso en un sistema operativo es un Bloque de


Control de Proceso (PCB) con informacin que incluye:
Estado actual del proceso.
Identificacin 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 atencin de la CPU entre los procesos,
utiliza las reas de preservacin del PCB para mantener la informacin 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 creacin 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 jerrquica de procesos.
La destruccin 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.

31

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


suspendido.
La destruccin de un proceso puede o no significar la destruccin de los
procesos hijos, segn el sistema operativo.
Generalmente se denomina Tabla de Procesos al conjunto de informacin de
control sobre los distintos procesos.

2.9

PROCESAMIENTO DE INTERRUPCIONES

Una interrupcin 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 interrupcin, el sistema operativo:


o
o
o
o

Obtiene el control.
Salva el estado del proceso interrumpido, generalmente en su
bloque de control de procesos.
Analiza la interrupcin.
Transfiere el control a la rutina apropiada para la manipulacin de la
interrupcin.

Una interrupcin puede ser iniciada por un proceso en estado de ejecucin o por
un evento que puede o no estar relacionado con un proceso en ejecucin.
Generalmente las interrupciones se pueden clasificar por tipos segn el
siguiente detalle:
Tabla 5.
Titulo: Tipos de interrupciones
Interrupcin
SVC
Entrada / Salida
Externa
De Reinicio
De Verificacin de Programa
De Verificacin de Mquina

Descripcin
Llamada al sistema operativo
Cambio de estado de un canal o dispositivo
Evento externo al sistema
Reinicio del procesamiento
Errores de procesos
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 slo un componente del estado global del sistema
que incluye a todos los procesos y recursos. Para controlar la evolucin 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 situacin de
preparado y una lista con todos los PBCs en situacin de suspendido. Mediante
estas listas el sistema operativo forma colecciones de procesos en estados
anlogos y sern examinadas por las rutinas de asignacin de recursos del
sistema operativo.

32

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 ms conveniente para las rutinas del sistema operativo
que operan con ellas. Las transiciones de estado de un proceso quedarn
reflejadas en el cambio de su PBCs de una lista a otra.

2.11 CONMUTACIN DE PROCESOS


Una transicin entre dos procesos residentes en memoria en un sistema
multitarea se denomina conmutacin de procesos o conmutacin de tareas.
Las principales operaciones implicadas en una conmutacin de procesos estn
resumidas en la siguiente figura:

Figura 16: Esquema de conmutacin 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 Px ejecutndose. 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 Px (en funcin del suceso que haya tenido lugar,
el estado ser uno u otro) y los datos de planificacin (Algunos
sistemas operativos tienen ciertas consideraciones para re-calcular
estos datos de planificacin para un proceso. Por ejemplo, restar
prioridad a procesos largos.
o Atendemos al suceso dependiendo de cada caso (no incluimos esta
operacin en lo que consideramos proceso de conmutacin)
o Planificamos cul va a ser el siguiente proceso a ejecutar (que podra
ser mismo de inicio).
o Una vez elegido el nuevo proceso a ejecutar, llammosle Py, 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.

33

La conmutacin de procesos es una operacin considerablemente ms compleja


y costosa que la conmutacin del contexto de interrupcin y puede ser bastante
complicada en sistemas operativos grandes que disponen de un mantenimiento
preciso de recursos y de sofisticados esquemas de planificacin. Dada su
complejidad y su relativamente alta frecuencia de ocurrencia, la implementacin
de la conmutacin de procesos puede afectar significativamente al rendimiento
de un sistema operativo de multiprogramacin.
Es especialmente importante en sistemas donde el tiempo es un factor crtico
tales como los sistemas en tiempo real. La eficiencia de la conmutacin 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 conmutacin de
procesos es disponer de mltiples conjuntos estructuralmente idnticos 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 operacin supervisor o usuario y el
conjunto de registros activos. Este mtodo reduce el gasto software por
conmutacin de modo y la mayor parte del proceso de almacenamiento del
estado hardware a la ejecucin de unas pocas instrucciones de manipulacin de
bits.
Si se dispone de ms de dos conjuntos de registros, se pueden aplicar ahorros
similares a los procesos de usuario hasta alcanzar el nmero de conjuntos de
registros disponibles

2.12 PROCESOS Y HEBRAS


En los sistemas operativos tradicionales, el concepto de proceso incluye como
caracterstica:
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 manipulacin es mucho menos costosa que la de stos. La
principal ventaja de tener varias hebras de ejecucin es permitir la ejecucin
concurrente de actividades relacionadas dentro de un proceso.
Como las hebras de un proceso comparten el mismo espacio de direcciones, no
existe ningn tipo de proteccin por parte del sistema operativo ante el hecho de
que una hebra pueda leer o escribir en la pila de otra. Sin embargo, esta
proteccin no debera 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 diseado 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 programacin de
procesos multihebra se ajusta a la programacin concurrente sobre sistemas que
comparten memoria, por lo que suelen usar semforos o monitores para

34

sincronizacin, aunque tambin existen sistemas que incorporan primitivas de


paso de mensajes.

Figura 17: THREADS y procesos


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

2.13 PLANIFICACIN DE PROCESOS


En un sistema multiprogramado, mltiples procesos son mantenidos en memoria
principal. Multiprogramacin surgi con la idea de tener algn proceso
ejecutndose 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 estn corriendo.
Con multiprogramacin, un proceso ejecuta hasta que debe esperar por algn
evento. En un sistema simple sin multiprogramacin el CPU estara 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 algn evento. Con frecuencia
nos encontraremos con situaciones en las que dos o ms procesos son
ejecutables desde el punto de vista lgico. En estos casos el sistema de
operacin debe decidir cul de ellos debe ejecutarse primero. La parte del
sistema de operacin que lleva a cabo esta decisin se llama Planificador y el
algoritmo que se utiliza se conoce como Algoritmo de Planificacin.
Con la planificacin de procesos se busca:
Garantizar que cada proceso obtenga una proporcin justa de tiempo de
CPU.
Mantener ocupado el CPU.
Minimizar el tiempo de respuesta de los procesos interactivos.
Maximizar el nmero de tareas procesadas por hora.

35

2.14 TIPOS DE PLANIFICACIN


La clave de la multiprogramacin est en la planificacin. De hecho, son cuatro
las clases de planificacin que pueden entrar en juego normalmente:
Planificacin a largo plazo: Decisin de aadir procesos a la reserva de
procesos a ejecutar.
Planificacin a medio plazo: Decisin de aadir procesos al conjunto de
procesos que se encuentran parcial o completamente en memoria.
Planificacin a corto plazo: Decisin sobre qu proceso disponible ser
ejecutado en el procesador.
Planificacin de E/S: Decisin 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

Planificacin a largo plazo

Esta planificacin determina cules son los programas admitidos en el sistema.


De este modo se controla el grado de multiprogramacin. Una vez admitido el
programa se convierte en proceso y es aadido a la cola del planificador a corto
plazo.
La decisin de cundo crear un nuevo proceso viene dada, en general, por el
grado de multiprogramacin. Cuantos ms procesos se crean, menor ser el
porcentaje de tiempo en el que cada proceso puede ejecutar simultneamente.
Con lo cual el planificador a largo plazo puede limitar el grado de
multiprogramacin para ofrecer un buen servicio al conjunto de procesos activos.
La decisin de cul 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 poltica ms elaborada, en funcin del sistema. Por ejemplo,
el planificador puede intentar mantener una combinacin de procesos con mayor
carga de procesador y con mayor carga de E/S.
2.14.2

Planificacin a medio plazo

Algunos sistemas operativos, como los de tiempo compartido, pueden presentar


un nivel intermedio adicional de planificacin. 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 multiprogramacin. Posteriormente
se volver a introducir el proceso en memoria y continuar con su ejecucin. Se le
suele denominar comnmente 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.

36

Figura 18: Planificacin y transiciones de estado de los procesos


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

2.14.3

Planificacin a corto plazo (planificacin del procesador)

Como hemos mencionado anteriormente, la planificacin es una funcin


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 planificacin es
parte medular en el diseo de los sistemas operativos.
La ejecucin de un proceso consiste en un ciclo de ejecucin del procesador y
una espera de E/S, y los procesos se alternan entre estos dos estados. La
ejecucin del proceso se inicia con una rfaga de procesador y a sta le sigue
una rfaga de E/S, le sigue una rfaga de procesador y una ms de E/S, etc.
Finalmente la ltima rfaga de procesador terminar con una solicitud al sistema
para que concluya la ejecucin del proceso.
La duracin de estas rfagas 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 rfagas cortas de procesador, mientras que un
programa limitado por el procesador tendr pocas rfagas de larga duracin de
procesador. La distribucin de estos procesos puede ser muy importante al
seleccionar un algoritmo de planificacin de corto plazo.
Siempre que el procesador quede inactivo, el sistema operativo debe seleccionar
para su ejecucin uno de los procesos de la cola de procesos listos. El proceso de
seleccin es realizado por el planificador a corto plazo.
El planificador selecciona uno de los procesos en memoria que estn 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 estn
en fila esperando la oportunidad de ejecutarse en el procesador.

37

2.15 NIVELES DE PLANIFICACIN DEL PROCESADOR


Se consideran tres niveles importantes de planificacin, los que se detallan a
continuacin.
2.15.1

Planificacin de alto nivel:

Tambin se denomina planificacin de trabajos.


Determina a qu trabajos se les va a permitir competir activamente por los
recursos del sistema, lo cual se denomina planificacin de admisin.
2.15.2 Planificacin 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 efecta
suspensiones y activaciones (reanudaciones) de procesos.
Debe ayudar a alcanzar ciertas metas en el rendimiento total del sistema.
2.15.3 Planificacin 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 efecta el despachador del sistema operativo, el que opera muchas
veces por segundo y reside siempre en el almacenamiento primario.

Figura 19: Niveles de planificacin


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

2.16 OBJETIVOS DE LA PLANIFICACIN


Los objetivos de la planificacin del procesador son los siguientes e involucran a
los conceptos detallados seguidamente.
Ser justa:

38

Todos los procesos son tratados de igual manera.


Ningn proceso es postergado indefinidamente.
Maximizar la capacidad de ejecucin:
Maximizar el nmero de procesos servidos por unidad de tiempo.
Maximizar el nmero de usuarios interactivos que reciban unos
tiempos de respuesta aceptables:
En un mximo 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 utilizarn recursos infrautilizados.
Equilibrar respuesta y utilizacin:
La mejor manera de garantizar buenos tiempos de respuesta es disponer
de los recursos suficientes cuando se necesitan, pero la utilizacin total de
recursos podr ser pobre.
Evitar la postergacin 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 planificacin deben favorecer a los procesos con
prioridades ms altas.
Dar preferencia a los procesos que mantienen recursos claves:
Un proceso de baja prioridad podra mantener un recurso clave, que puede
ser requerido por un proceso de ms alta prioridad.
Si el recurso es no apropiativo, el mecanismo de planificacin debe otorgar
al proceso un tratamiento mejor del que le correspondera normalmente,
puesto que es necesario liberar rpidamente el recurso clave.
Dar
mejor tratamiento a los procesos que muestren un
comportamiento deseable:
Un ejemplo de comportamiento deseable es una tasa baja de paginacin.
Degradarse suavemente con cargas pesadas:
Un mecanismo de planificacin 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 ms pesada al proporcionar un nivel
moderadamente reducido de servicio a todos los procesos.
Muchas de estas metas se encuentran en conflicto entre s, por lo que la
planificacin se convierte en un problema complejo.

2.17 PLANIFICACIN APROPIATIVA VERSUS NO APROPIATIVA


Las disciplinas de planificacin pueden ser Apropiativas o No Apropiativas.

39

Tabla 6.
Titulo: Planificacin Apropiativa Versus No Apropiativa
Disciplina
Descripcin
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
Apropiativa
ser retirada
Fuente:
http://wwwdi.ujaen.es/~lina/TemasSO/PLANIFICACIONDEPROCESOS/2y3Obj.,Crit.yTiposdePlanific
acion.htm

Las principales caractersticas de la planificacin apropiativa son las


siguientes:
Es til cuando los procesos de alta prioridad requieren atencin rpida.
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 adems requiere mantener muchos procesos en el
almacenamiento principal, en espera de la CPU, lo que tambin implica
sobrecarga.
Las principales caractersticas de la planificacin no apropiativa son las
siguientes:
Significa que los trabajos largos hacen esperar a los trabajos cortos.
Logra ms equidad en el tratamiento de los procesos.
Logra hacer ms predecibles los tiempos de respuesta puesto que los
trabajos nuevos de prioridad alta no pueden desplazar a los trabajos en
espera.
El diseo de un mecanismo apropiativo hace necesario considerar las
arbitrariedades de casi cualquier esquema de prioridades, en razn de que
muchas veces las propias prioridades no son asignadas de forma significativa.
El mecanismo debera ser sencillo pero efectivo y significativo.

2.18 ALGORITMOS DE PLANIFICACIN


Cuando ms de un proceso es ejecutable desde el punto de vista lgico, el
sistema operativo debe decidir cul de ellos debe ejecutarse en primer trmino.
El planificador es la porcin del sistema operativo que decide y el algoritmo de
planificacin es el utilizado.
Los principales criterios respecto de un buen algoritmo de planificacin son la
equidad, la eficacia, el tiempo de respuesta, el tiempo de regreso y el
rendimiento.

40

Tabla 7.
Titulo: Criterios de un buen algoritmo de planificacin
Criterio
Equidad

Descripcin
Garantizar que cada proceso obtiene su proporcin 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
regreso
lotes (batch) para obtener sus resultados
Rendimiento
Maximizar el nmero 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, ejecutndose 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 presentacin 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 razn entre el tiempo de retorno y el
tiempo de servicio. Este valor indica el retardo relativo que ha
experimentado un proceso. Este valor es ms interesante que el tiempo de
retardo, ya que es un valor que es independiente a la duracin del
proceso.
Utilizacin del procesador: Es el porcentaje de tiempo que el procesador
est ocupado.
Productividad: Es una medida del nmero de procesos que se completan
por unidad de tiempo.
2.18.1

First-Come, First Served (FCFS)

Este algoritmo tambin llamado FCFS (First-Come, First-served), es el algoritmo


ms sencillo de implementar. Con este esquema, el proceso que primero solicita
el procesador es el primero al que se le asigna. Esta poltica se implementa muy
fcilmente 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 ms antiguo de la cola.

41

Este algoritmo de planificacin es no apropiativo. Una vez que se ha asignado el


procesador a un proceso, ste lo conserva hasta que desee liberarlo, ya sea por
terminacin o bien porque solicita un recurso de E/S.
Este algoritmo es especialmente problemtico en los sistemas de tiempo
compartido, donde es importante que cada usuario reciba una porcin del
procesador a intervalos regulares. El tiempo promedio de espera es bastante
largo en este algoritmo.
FCFS tiene un mejor rendimiento en cmputo global con procesos largos que con
procesos cortos, ya que si por ejemplo un proceso corto llega siempre despus
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
rfaga de E/S) la siguiente rfaga de procesador, mientras que los dispositivos
de E/S estarn 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
A
B
C
D

Rfaga CPU
1
100
1
100

Indicar los valores de:


Tiempo de espera y tiempo de retorno de cada trabajo, tiempo medio de
espera y retorno, cuando la planificacin se realiza mediante el algoritmo
FCFS.
SOLUCIN: 1
Tabla 8.
Titulo: Algoritmo FCFS ejemplo 1
Proceso

Tiempo de
llegada

A
0
B
1
C
2
D
3
Promedio

Tiempo
de
Servicio

Tiempo
de
Comienzo

Tiempo de
Finalizacin

Turnaround

1
100
1
100

0
1
101
102

1
101
102
202

1
100
100
199
100

Tiempo de
Espera

0
0
101-2=99
102-3=99
49.50

Fuente: Autor

42

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

Tiempo de
llegada

Tiempo
de
Servicio

Tiempo
de
Comienzo

Tiempo de
Finalizacin

Turnaround

B
D
A

0
1
2

100
100
1

0
100
200

100
200
201

201

202

100
199
2012=199
2023=199
174.25

Promedio

Tiempo de
Espera

0
100-1=99
2002=198
2013=198
123.50

Fuente: Autor

El tiempo promedio de espera bajo una poltica FCFS generalmente no es mnimo


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 ms corto"

Este algoritmo selecciona al proceso con el prximo tiempo de ejecucin ms


corto. Un proceso corto saltar a la cabeza de la cola. La ejecucin de un proceso
consiste en ciclos de ejecucin de CPU y ciclos de espera por E/S. El algoritmo
selecciona aquel proceso cuyo prximo ciclo de ejecucin de CPU sea menor. El
problema est en conocer dichos valores, pero podemos predecirlos usando la
informacin de los ciclos anteriores ejecutados.
Se puede comprobar que el algoritmo SJF es ptimo, ya que ofrece el mnimo
tiempo promedio de espera para un conjunto de procesos dado. La comprobacin
muestra que poniendo un proceso breve antes de uno largo se reduce el tiempo
de espera del proceso corto ms 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
A
B
C
D

Rfaga CPU
8
4
9
5

Indicar los valores de:

43

Tiempo de espera y tiempo de retorno de cada trabajo, tiempo medio de


espera y retorno, cuando la planificacin se realiza mediante los algoritmos
SJF y FCFS.

SOLUCIN: 1
Tabla 10.
Titulo: Algoritmo SJF
Proceso

Tiempo de
llegada

A
0
B
1
C
2
D
3
Promedio

Tiempo
de
Servicio

Tiempo
de
Comienzo

Tiempo de
Finalizacin

Turnaround

8
4
9
5

0
8
17
12

8
12
26
17

8
12-1=11
26-2=24
17-3=14
14.25

Tiempo de
Espera

0
8-1=7
17-2=15
12-3=9
7.75

Fuente: Autor

Tabla 11.
Titulo: Algoritmo FCFS ejemplo 2
Proceso

Tiempo de
llegada

A
0
B
1
C
2
D
3
Promedio

Tiempo
de
Servicio

Tiempo
de
Comienzo

Tiempo de
Finalizacin

Turnaround

8
4
9
5

0
8
12
21

8
12
21
26

8
12-1=11
21-2=19
26-3=23
15.25

Tiempo de
Espera

0
8-1=7
12-2=10
21-3=18
8.75

Fuente: Autor

El problema real de este algoritmo es conocer o, por lo menos estimar el tiempo


de ejecucin para cada proceso. Para procesos por lotes, el sistema puede
solicitar al usuario que estime el valor de ejecucin de dicho proceso y de esta
forma podrselo pasar al sistema operativo, sin embargo en la planificacin a
corto plazo esta poltica no se puede emplear ya que no se sabe a priori la
duracin de un proceso, a no ser que podamos predecir la duracin de cada
proceso mediante tcnicas estadsticas.
2.18.3

SRT (Shortest Remaining Time) "Primero el menor tiempo


restante"

La poltica de menor tiempo restante, tambin llamada SRT (Shortest Remaining


Time) es una versin apropiativa del SJF, en la que el planificador siempre elige
al proceso que le queda menos tiempo esperado de ejecucin. La idea es la
siguiente, cuando un proceso es aadido a la cola de listos, puede quedarle un
tiempo esperado de ejecucin menor que al proceso que est ejecutndose en
ese momento en el procesador, por consiguiente el planificador puede apropiarse
del procesador para desalojar al proceso en ejecucin y asignrselo al nuevo
proceso, que tendr un menor tiempo restante de ejecucin. Al igual que el
algoritmo SJF, el planificador debe disponer de una estimacin de tiempo para
cada proceso con el fin de poder llevar a cabo la funcin de seleccionar el

44

siguiente proceso, existiendo igualmente que en el SJF peligro de inanicin 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 funcin estadstica
estime de la forma ms veraz los tiempos de ejecucin para cada proceso. El
algoritmo SRT produce unos tiempos de retorno mejores que el SJF, ya que los
trabajos cortos reciben atencin 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 ms de un proceso
entonces se deber seguir alguna poltica de seleccin.
Un problema que presenta un esquema de planificacin por prioridades puro es
que los procesos con la prioridad ms baja pueden sufrir de inanicin o bloqueo
indefinido. Un proceso que est listo para correr pero espera porque siempre hay
procesos con prioridad ms alta.
Para evitar este problema, se puede ir incrementando gradualmente la prioridad
de los procesos (envejecimiento).
SJF es un caso especial de planificacin por prioridad, donde la prioridad es el
inverso del valor estimado del prximo ciclo de CPU (a menor ciclo, mayor
prioridad).
Ejemplo:
Sea la siguiente descripcin de carga:
Trabajo
A
B
C
D

Rfaga CPU
8
4
9
5

Prioridad
2
1
4
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 planificacin se realiza mediante el algoritmo
de prioridades y del tipo no apropiativo.

45

SOLUCIN:
Tabla 12.
Titulo: Algoritmo por Prioridades
Proceso

Tiempo
de lleg.

A
0
B
1
C
2
D
3
Promedio

Priori
dad

Tiempo
de
Servicio

Tiempo de
Comienzo

Tiempo de
Finalizaci
n

Turnaroun
d

Tiempo de
Espera

2
1
4
2

8
4
9
5

0
22
8
17

8
26
17
22

8
26-1=25
17-2=15
22-3=19
16.75

0
22-1=21
8-2= 6
17-3=14
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 versin expulsiva del algoritmo SJF conocido como trabajo ms corto
primero que maneja los trabajos con base en la duracin 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 ms corto que lo que queda por ejecutar del proceso en
ejecucin. Si es as el proceso en ejecucin pasa a listo y su tiempo de
estimacin se decrementa con el tiempo que ha estado ejecutndose. Este
algoritmo tiene mayor ventaja del SJF ya que es ptimo para las rfagas que
llegan indistintamente ya que prefiere los procesos cortos y tiene la opcin 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
P1
P2
P3
P4

Tiempo de
llegada
0
2
4
5

Tiempo de
servicio
7
4
1
4

Indicar los valores de:


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

46

SOLUCIN:
Tabla 13.
Titulo: Algoritmo SRTF
Ejemplo: quantum =2;
Proces
o

P1

Tiempo
de lleg.

Priori
dad

Tiempo de
Servicio

Tiemp
de
Com.

Tiempo
de Fin

0,11,1
3,15
2,5
4
7,9

2,13,15,1
6
4,7
5
9,11

5 3 1 0 4c

P2
2
P3
4
P4
5
Promedio

4
1
4

4
1
4

2 0
0
2 0

2c
2c
2c

Turna.

Tiempo
de Espera

16-0=16

16-7=9

7-2=5
5-4=1
11-5=6
7

5-4=1
1-1=0
6-4=2
3

Fuente: Autor

NOTA: cuando termina una corrida se vuelve a buscar desde arriba los ms
cortos excepto los que ya terminaron
2.18.6

Round Robin "Turno rotatorio"

Una manera rpida de reducir la penalizacin que los procesos cortos sufren con
FCFS es usar expropiacin basada en un reloj. Una interrupcin de reloj es
generada a intervalos peridicos. Cuando ocurre la interrupcin, el proceso en
ejecucin es colocado en la cola de procesos listos y el prximo trabajo es
seleccionado basado en el esquema FCFS. A cada proceso se le da un trozo de
tiempo.
La principal decisin de diseo que surge con Round Robin es el tamao del trozo
o quantum. Si el quantum es muy corto, entonces los procesos se movern a
travs del sistema rpidamente. Por otro lado, hay un cierto overhead o
desperdicio de tiempo envuelto con el manejo de la interrupcin de reloj y las
funciones de planificacin y despacho. Por lo tanto quanta muy pequeos
deberan evitarse. Una alternativa es usar un quantum de tiempo que sea un
poco ms grande que el tiempo promedio requerido para una interaccin tpica.
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 despus 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 mximo, y adems ningn proceso debe esperar ms
de (n-1) x q unidades de tiempo antes de recibir su siguiente quantum.
El desempeo de este algoritmo depender del tamao del quantum. Si el
quantum es infinito entonces degenera en FCFS. Si el quantum es muy pequeo
entonces Round Robin es llamado comparticin de CPU y en teora 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.

47

Ejemplo:
En un cierto instante se tiene los siguientes procesos:
Proceso
A
B
C
D

Tiempo de
llegada
0
1
2
3

Tiempo de
servicio
8
4
9
5

Indicar los valores de:


Tiempo de espera y tiempo de retorno de cada trabajo, tiempo medio de
espera y retorno, cuando la planificacin se realiza mediante el algoritmo
Round Robin con un quantum de 3.
SOLUCIN:
Tabla 14.
Titulo: Algoritmo Round Robin
Proceso

Tiempo de
llegada

A
0
B
1
C
2
D
3
Promedio

Tiempo
de
Servicio

Tiempo
de
Comienzo

Tiempo de
Finalizacin

Turnaround

8
4
9
5

0,
3,
6,
9,

3, 15, 23
6, 16
9, 19, 26
12,21

23
16-1=15
26-2=24
21-3=18
20

12, 21
15
16, 23
19

Tiempo de
Espera

15
11
15
13
13

Fuente: Autor

2.19 PLANIFICACIN DE COLAS MLTIPLES


Los algoritmos vistos hasta este momento forman parte de un conjunto de
polticas de planificacin en las que el denominador comn es que tienen una
sola cola de procesos listos, esto es, planificadores monocola, pero se han creado
otra clase de algoritmos de planificacin para aquellas situaciones donde los
procesos se pueden clasificar fcilmente 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 presentarn distintas necesidades de planificacin, as
como cada grupo de procesos tendr unas prioridades sobre el otro grupo.
Un algoritmo de planificacin de colas mltiples divide la cola de procesos listos
en diversas colas (ver figura). Los procesos se podrn asignar de forma
permanente a una de las colas de planificacin, o bien podrn cambiar de cola de
planificacin, todo depender del algoritmo que se est empleando. As como
cada cola tendr su propio algoritmo de planificacin.

48

Figura 20: Planificacin de colas mltiples


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

2.20 PLANIFICACIN CON MLTIPLES COLAS


Debe existir una planificacin entre las colas, la cual generalmente es una
planificacin apropiativa de prioridad fija, esto es, podr existir una jerarqua de
prioridades entre las colas de procesos listos del planificador.
Nosotros veremos dos tipos de planificacin de mltiples colas, planificacin de
colas mltiples con realimentacin y la planificacin de colas mltiples por
prioridad.
2.20.1

Planificacin de colas mltiples con realimentacin

La planificacin de colas mltiples con realimentacin (ver figura) permite a un


proceso moverse de una cola a otra de procesos listos. La forma de llevar a cabo
dicha planificacin es la siguiente; en principio es una planificacin apropiativa y
se emplea un mecanismo dinmico de prioridades. Cuando un proceso entra por
primera vez en el sistema se sita en la primera cola de procesos listos, cuando
vuelva el proceso a la cola de listos despus de su primera ejecucin retornar a
la segunda cola de procesos listos.
La idea es que despus de cada ejecucin al proceso se le degradar a un nivel
inmediatamente inferior de prioridad. De esta forma un proceso corto terminar
rpidamente, sin descender demasiado en la jerarqua de colas de listos. Los
procesos largos sern 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 ejecucin.
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 poltica favorece a los procesos nuevos, ya que entran siempre los primeros
antes de cualquier otro proceso que se encuentre en otra cola, tambin favorece
a los procesos cortos, que no les da tiempo a que dichos procesos se degraden
mucho en la jerarqua de las colas de procesos listos.

49

Dentro de cada cola se podr usar cualquier planificador monocola de los


definidos anteriormente, con lo que se flexibiliza an ms este algoritmo de
planificacin.
Un problema que presenta este algoritmo, es que los procesos largos pueden
sufrir de inanicin 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.

Figura 21: Planificacin con realimentacin


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

Por lo general, un planificador de colas mltiples con realimentacin se define


con los siguientes parmetros:
El nmero de colas.
El algoritmo de planificacin para cada cola.
El mtodo utilizado para determinar cundo promover un proceso a una cola
de mayor prioridad.
El mtodo utilizado para determinar cundo degradar un proceso a una cola
de menor prioridad.
Este algoritmo de planificacin se puede configurar para ajustarse a un sistema
especfico que se est diseando, pero tiene como inconveniente que es
complejo realizar un diseo a medida.
2.20.2

Planificacin de colas mltiples con prioridades

Mediante este algoritmo de planificacin (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 planificacin con realimentacin.
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 poltica de planificacin especfica a dicha
cola.
Un problema que presentan estos algoritmos de planificacin es que los procesos
de prioridad ms baja pueden sufrir de inanicin. Este problema ocurre, como

50

era de esperar, si hay un flujo continuo de procesos listos de alta prioridad. Para
superar este problema, se puede pensar en disear un mtodo que pueda
cambiar la prioridad del proceso en funcin de su edad, esto es, aumentar la
prioridad por envejecimiento.

Figura 22: Planificacin por prioridades


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

51

UNIDAD III
GESTIN DE MEMORIA: ASIGNACIN CONTINUA Y
ASIGNACIN NO CONTINUA: PAGINACIN Y MEMORIA
VIRTUAL
3.1

PANORAMA GENERAL

Un vistazo al material que se va a cubrir en esta seccin se muestra en la figura


siguiente. Es una grfica en donde se especifican, en trminos generales, los
conceptos ms importantes en cuanto a las tcnicas empleadas en el manejo de
memoria.

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 mayora de los
sistemas de cmputo cuentan con una alta capacidad de memoria, de igual
manera las aplicaciones actuales tienen tambin altos requerimientos de
memoria, lo que sigue generando escasez de memoria en los sistemas multitarea
y/o multiusuario.
La parte del sistema operativo que administra la memoria se llama administrador
de memoria y su labor consiste en llevar un registro de las partes de memoria
que se estn utilizando y aquellas que no, con el fin de asignar espacio en
memoria a los procesos cuando stos la necesiten y liberndola cuando
terminen, as como administrar el intercambio entre la memoria principal y el

52

disco en los casos en los que la memoria principal no le pueda dar capacidad a
todos los procesos que tienen necesidad de ella.
Los sistemas de administracin de memoria se pueden clasificar en dos tipos: los
que desplazan los procesos de la memoria principal al disco y viceversa durante
la ejecucin y los que no.
El propsito principal de una computadora es el de ejecutar programas, estos
programas, junto con la informacin que accesan deben de estar en la memoria
principal (al menos parcialmente) durante la ejecucin.
Para optimizar el uso del CPU y de la memoria, el sistema operativo debe de
tener varios procesos a la vez en la memoria principal, para lo cual dispone de
varias opciones de administracin tanto del procesador como de la memoria. La
seleccin de uno de ellos depende principalmente del diseo del hardware para el
sistema. A continuacin se observarn los puntos correspondientes a la
administracin de la memoria.

3.2

MEMORIA REAL

La memoria real o principal es en donde son ejecutados los programas y


procesos de una computadora y es el espacio real que existe en memoria para
que se ejecuten los procesos. Por lo general esta memoria es de mayor costo
que la memoria secundaria, pero el acceso a la informacin contenida en ella es
de ms rpido acceso. Solo la memoria cache es ms rpida que la principal,
pero su costo es a su vez mayor.

3.3

MANEJO DE MEMORIA EN SISTEMAS MONOUSUARIO SIN


INTERCAMBIO

Cuando solo se tiene un proceso que ocupe la memoria a la vez, el esquema de


la administracin de la memoria es el ms sencillo que hay. Sin embargo, ste
mtodo ya no tiene aplicacin en la actualidad, ya que era visto en las
computadoras con sistemas operativos de un solo usuario y una sola tarea. El
usuario introduca su disco a la computadora (por lo general, la mquina no
contaba con disco duro) y ejecutaba su aplicacin, la cual acaparaba toda la
mquina.
Este esquema es an muy frecuente principalmente en sistemas monousuario y
monotarea, como son las computadoras personales con DOS. Bajo este
esquema, la memoria real es tomada para almacenar el programa que se est
ejecutando en un momento dado, con la visible desventaja de que si se est
limitado a la cantidad de RAM disponible nicamente. La organizacin fsica bajo
este esquema es muy simple: El sistema operativo se ubica en las localidades
superiores o inferiores de la memoria, seguido por algunos manejadores de
dispositivos (drivers). Esto deja un espacio contiguo de memoria disponible que
es tomado por los programas del usuario, dejando generalmente la ubicacin de
la pila (stack') al ltimo, con el objetivo de que sta pueda crecer hasta el
mximo posible. Como es obvio, bajo estos esquemas no se requieren algoritmos
sofisticados para asignar la memoria a los diferentes procesos, ya que stos son
ejecutados secuencialmente conforme van terminando.

53

Figura 24: Organizacin simple de memoria


Fuente:
http://www.elprisma.com/apuntes/ingenieria_de_sistemas/sistemasoperativosfundamentos/default
2.asp

3.4

MULTIPROGRAMACIN EN MEMORIA REAL

En los 60's, las empresas e instituciones que haban invertido grandes sumas en
la compra de equipo de cmputo se dieron cuenta rpidamente que los sistemas
en lote invertan una gran cantidad de tiempo en operaciones de entrada y
salida, donde la intervencin de la unidad central de procesamiento era
prcticamente nula, y se comenzaron a preguntar cmo hacer que se mantuviera
ms tiempo ocupada. Fue as como naci el concepto de multiprogramacin, el
cual consiste en la idea de poner en la memoria fsica ms de un proceso al
mismo tiempo, de manera que si el que se est ejecutando en este momento
entraba en un periodo de entrada / salida, se poda tomar otro proceso para que
usara la unidad central de procesamiento. De esta forma, la memoria fsica se
divida en secciones de tamao suficiente para contener a varios programas.
De esta manera, si un sistema gastaba en promedio 60% de su tiempo en
entrada / salida por proceso, se poda aprovechar ms el CPU. Anterior a esto, el
CPU se mantena ese mismo porcentaje ocioso; con la nueva tcnica, el tiempo
promedio ocioso disminuye de la siguiente forma. Llmese al tiempo promedio
que el CPU est ocupado `grado de multiprogramacin'. Si el sistema tuviese un
solo proceso siempre, y ste gastara 60% en entrada / salida, el grado de
multiprogramacin sera 1 - 60% = 40% = 0.4. Con dos procesos, para que el
CPU est ocioso se necesita que ambos procesos necesiten estar haciendo
entrada / salida, es decir, suponiendo que son independientes, la probabilidad de
que ambos estn en entrada / salida es el producto de sus probabilidades, es
decir, 0.6x0.6 = 0.36. Ahora, el grado de multiprogramacin es 1 - (probabilidad
de que ambos procesos estn haciendo entrada / salida) = 1 - 0.36 = 0.64.
Como se ve, el sistema mejora su uso de CPU en un 24% al aumentar de uno a
dos procesos. Para tres procesos el grado de multiprogramacin es 1 - (0.6) 3 =
0.784, es decir, el sistema est ocupado el 78.4% del tiempo.
La frmula del grado de multiprogramacin, aunque es muy idealista, pudo servir
de gua para planear un posible crecimiento con la compra de memoria real, es
decir, para obtener el punto en que la adicin de procesos a RAM ya no
incrementa el uso de CPU.

54

3.5

MULTIPROGRAMACIN CON PARTICIONES FIJAS

Para poder implementar la multiprogramacin, se puede hacer uso de particiones


fijas o variables en la memoria. En el caso de las particiones fijas, la memoria se
puede organizar dividindose en diversas partes, las cuales pueden variar en
tamao. Esta particin la puede hacer el usuario en forma manual, al iniciar una
sesin con la mquina.
Una vez implementada la particin, hay dos maneras de asignar los procesos a
ella. La primera es mediante el uso de una cola nica (figura a) que asigna los
procesos a los espacios disponibles de la memoria conforme se vayan
desocupando. El tamao del hueco de memoria disponible es usado para localizar
en la cola el primer proceso que quepa en l. Otra forma de asignacin es buscar
en la cola el proceso de tamao mayor que se ajuste al hueco, sin embargo hay
que tomar en cuenta que tal mtodo discrimina a los procesos ms pequeos.
Dicho problema podra tener solucin si se asigna una particin pequea en la
memoria al momento de hacer la particin inicial, el cual sera exclusivo para
procesos pequeos.
Particin 3
Particin 2
Particin 1
Sistema
Operativo

700 K

Particin 3

700 K

400 K
Particin 2
100 K
400 K
Particin 1
100 K
Sistema
Operativo
0

Figura 25: (a) Particiones fijas en


memoria con una cola nica de
entrada

Figura 25: (b) Particiones fijas en


memoria con colas exclusivas para
cada tamao diferente de la particin

Fuente:
http://www.elprisma.com/apuntes/ingenie
ria_de_sistemas/sistemasoperativosfunda
mentos/default2.asp

Fuente:
http://www.elprisma.com/apuntes/ingenie
ria_de_sistemas/sistemasoperativosfunda
mentos/default2.asp

Esta idea nos lleva a la implementacin de otro mtodo para particiones fijas,
que es el uso de diferentes colas independientes (figura b) exclusivas para cierto
rango en el tamao de los procesos. De esta manera al llegar un proceso, ste
sera asignado a la cola de tamao ms pequeo que la pueda aceptar. La
desventaja en esta organizacin es que si una de las colas tiene una larga lista
de procesos en espera, mientras otra cola est vaca, el sector de memoria
asignado para ese tamao de procesos estara desperdicindose.

3.6

MULTIPROGRAMACIN CON PARTICIONES VARIABLES

Este esquema fue originalmente usado por el sistema operativo IBM OS/360
(llamado MFT), el cual ya no est en uso.

55

El sistema operativo lleva una tabla indicando cules partes de la memoria estn
disponibles y cules estn ocupadas. Inicialmente, toda la memoria est
disponible para los procesos de usuario y es considerado como un gran bloque o
hueco nico de memoria. Cuando llega un proceso que necesita memoria,
buscamos un hueco lo suficientemente grande para el proceso. Si encontramos
uno, se asigna nicamente el espacio requerido, manteniendo el resto disponible
para futuros procesos que requieran de espacio.
Consideremos el ejemplo de la figura a continuacin, en donde se cuenta un
espacio reservado para el sistema operativo en la memoria baja de 400K y un
espacio disponible para procesos de usuario de 2160K, siendo un total de
memoria del sistema de 2560K. Dada la secuencia de procesos de la figura y
usando un algoritmo de First Come First Served (FCFS) se puede asignar de
inmediato memoria a los procesos P1, P2 y P3, creando el mapa de memoria de la
figura a en el cual queda un hueco de 260K que ya no puede ser utilizado por el
siguiente proceso dado que no es suficiente para abarcarlo.

0
2560K

Sistema
Operativo

Procesos
P1
P2
P3
P4
P5

Lista de trabajos
Memoria
Tiempo
600K
1000K
300K
700K
500K

10
5
20
8
15

2160K
2560K

56

Ejemplo de una divisin inicial de memoria y una lista de trabajos.


0

0
Sistema
operativo

400K

0
Sistema
operativ

400K

P1

0
Sistema
operativ

400K

P1

Sistema
operativ

400K

P1

Sistema
operativ

400K

P5

Hueco
900K

1000K

1000K
P2

Termina
P2

1000K
Hueco

Asignar
P4

1000K
P4

1700K
2000K

2000K
P3

2300K

2000K
P3

2300K
Hueco

2560K

(a)

P4

1700K
Hueco

2000K

P3
2300K

Hueco
2560K

Termina
P1

Hueco

P4

Asignar
P5

1700K
2000K

Hueco

P3
2300K

Hueco
2560K

Hueco

1000K

P3
2300K

Hueco
2560K

Hueco
2560K

(b)
(c)
(d)
Figura 26: Multiprogramacin con particiones variables

(e)

Fuente:
http://www.elprisma.com/apuntes/ingenieria_de_sistemas/sistemasoperativosfundamentos/default
2.asp

3.6.1

Ejemplo de asignacin de procesos en la memoria principal

Usando un proceso de asignacin Round-Robin con un quantum de 1 unidad de


tiempo, el proceso P2 terminara en la unidad de tiempo 14, liberando esa
cantidad de memoria, como se muestra en la figura (b). Entonces el sistema
operativo checa la lista de trabajos y asigna el siguiente proceso que quepa en el
espacio de memoria liberado. El proceso P4 produce el mapa de memoria que se
muestra en la figura (c). El proceso P1 terminar en la unidad de tiempo 28 para
producir el mapa de la figura (d) y entonces se asigna el proceso P5 generando el
mapa de la figura (e).
Cuando a un proceso se le asigna un espacio y es cargado a la memoria
principal, puede entonces competir para el uso del CPU.

3.7

COMPACTACIN DE MEMORIA

Cuando un proceso llega y necesita memoria, el sistema operativo busca en la


tabla de huecos alguno lo suficientemente grande para el proceso. Si el hueco es
muy grande, lo parte en dos. Una parte es asignada al proceso y la otra se
identifica como hueco. Cuando el proceso termina y la memoria es liberada, el
espacio es identificado como un hueco ms en la tabla y si el nuevo hueco es
adyacente con otro, ambos huecos se unen formando un solo hueco ms grande.
En ese momento se debe de checar si no existen procesos a los que este nuevo
hueco pueda darles cabida.

57

0
Sistema
operativ

Sistema
operativ

400K

400K

P5

P5

900K
1000K

900K
100k
Compactacin

P4

P4
1600K
1700K
2000K

P3
300k

1900K
660k

P3
2300K
260k
2560K

(a)

2560K

(b)

Figura 27: Ejemplo de compactacin


Fuente:
http://www.elprisma.com/apuntes/ingenieria_de_sistemas/sistemasoperativosfundamentos/default
2.asp

3.7.1

Ejemplo de compactacin de huecos no adyacentes

En la figura se muestra como se modifica el mapa de la memoria despus de


compactar huecos no adyacentes generados despus de intercambios realizados
en el ejemplo anterior.

3.8

ASIGNACIN DINMICA

El proceso de compactacin del punto anterior es una instancia particular del


problema de asignacin de memoria dinmica, el cual es el cmo satisfacer una
necesidad de tamao n con una lista de huecos libres. Existen muchas soluciones
para el problema. El conjunto de huecos es analizado para determinar cul hueco
es el ms indicado para asignarse.
Las estrategias ms comunes para asignar algn hueco de la tabla son:
- Primer ajuste: Consiste en asignar el primer hueco con capacidad suficiente.
La bsqueda puede iniciar ya sea al inicio o al final del conjunto de huecos o
en donde termin la ltima bsqueda. La bsqueda termina al encontrar un
hueco lo suficientemente grande.
- Mejor ajuste: Busca asignar el espacio ms pequeo de los espacios con
capacidad suficiente. La bsqueda se debe de realizar en toda la tabla, a
menos que la tabla est ordenada por tamao. Esta estrategia produce el
menor desperdicio de memoria posible.
- Peor ajuste: Asigna el hueco ms grande. Una vez ms, se debe de buscar
en toda la tabla de huecos a menos que est organizada por tamao. Esta
estrategia produce los huecos de sobra ms grandes, los cuales pudieran ser
de ms uso si llegan procesos de tamao mediano que quepan en ellos.
Se ha demostrado mediante simulacros que tanto el primer y el mejor ajuste son
mejores que el peor ajuste en cuanto a minimizar tanto el tiempo del

58

almacenamiento. Ni el primer o el mejor ajuste es claramente el mejor en


trminos de uso de espacio, pero por lo general el primer ajuste es ms rpido.
3.8.1

Administracin de la memoria con mapas de bits

Este tipo de administracin divide la memoria en unidades de asignacin, las


cuales pueden ser tan pequeas como unas cuantas palabras o tan grandes
como varios kilobytes. A cada unidad de asignacin le corresponde un bit en el
mapa de bits, el cual toma el valor de 0 si la unidad est libre y 1 si est
ocupada (o viceversa). La figura muestra una parte de la memoria y su
correspondiente mapa de bits.
A

16

E
24

1111100
10 1 1 1 1 1 1
1100111
11 1 1 1 1 0 0
0

Figura 28: Administracin de la memoria con mapas de bits


Fuente:
http://www.elprisma.com/apuntes/ingenieria_de_sistemas/sistemasoperativosfundamentos/default
2.asp

Ejemplo de un mapa de bits para la administracin de la memoria


Un mapa de bits es una forma sencilla para llevar un registro de las palabras de
la memoria en una cantidad fija de memoria, puesto que el tamao del mapa
slo depende del tamao de la memoria y el tamao de la unidad de asignacin.
3.8.2

Administracin de la memoria con listas ligadas

Otra forma de mantener un registro de la memoria es mediante una lista ligada


de los segmentos de memoria asignados o libres, en donde un segmento puede
ser un proceso o un hueco entre dos procesos. La memoria de la figura (a) est
mostrada como una lista ligada de segmentos en la figura (b). Cada entrada de
la lista especifica un hueco (H) o un proceso (P), la direccin donde comienza, su
longitud y un apuntador a la siguiente entrada.
A

16

E
24

14

18

20

26

H
x

29

Figura 29: Administracin de la memoria con listas ligadas


Fuente:
http://www.elprisma.com/apuntes/ingenieria_de_sistemas/sistemasoperativosfundamentos/default
2.asp

59

Ejemplo de listas ligadas


En este ejemplo, la lista de segmentos est ordenada por direcciones, lo que da
la ventaja de que al terminar o intercambiar un proceso, la actualizacin de la
lista es directa.
3.8.3

Asignacin del hueco de intercambio

En algunos sistemas, cuando el proceso se encuentra en la memoria, no hay un


hueco en el disco asignado a l. Cuando deba intercambiarse, se deber asignar
un hueco para l en el rea de intercambio del disco. Los algoritmos para la
administracin del hueco de intercambio son los mismos que se utilizan para la
administracin de la memoria principal.
En otros sistemas, al caerse un proceso, se le asigna un hueco de intercambio en
el disco. Cuando el proceso sea intercambiado, siempre pasar al hueco
asignado, en vez de ir a otro lugar cada vez. Cuando el proceso concluya, se
libera el hueco de intercambio. La nica diferencia es que el hueco en disco
necesario para un proceso debe representarse como un nmero entero de
bloques del disco. Por ejemplo, un proceso de 13.5 K debe utilizar 14K (usando
bloques de 1K).

3.9

FRAGMENTACIN

La fragmentacin es la memoria que queda desperdiciada al usar los mtodos de


gestin de memoria que se vieron en los mtodos anteriores. Tanto el primer
ajuste, como el mejor y el peor producen fragmentacin externa.
La fragmentacin es generada cuando durante el reemplazo de procesos quedan
huecos entre dos o ms procesos de manera no contigua y cada hueco no es
capaz de soportar ningn proceso de la lista de espera. Tal vez en conjunto si
sea espacio suficiente, pero se requerira de un proceso de defragmentacin de
memoria o compactacin para lograrlo. Esta fragmentacin se denomina
fragmentacin externa.
Existe otro tipo de fragmentacin conocida como fragmentacin interna, la cual
es generada cuando se reserva ms memoria de la que el proceso va realmente
a usar. Sin embargo a diferencia de la externa, estos huecos no se pueden
compactar para ser utilizados. Se debe de esperar a la finalizacin del proceso
para que se libere el bloque completo de la memoria.

3.10 LOS OVERLAYS


Una vez que surgi la multiprogramacin, los usuarios comenzaron a explorar la
forma de ejecutar grandes cantidades de cdigo en reas de memoria muy
pequeas, auxiliados por algunas llamadas al sistema operativo. Es as como
nacen los `overlays'.
Esta tcnica consiste en que el programador divide lgicamente un programa
muy grande en secciones que puedan almacenarse en las particiones de RAM. Al
final de cada seccin del programa (o en otros lugares necesarios) el
programador insertaba una o varias llamadas al sistema con el fin de descargar
la seccin presente de RAM y cargar otra, que en ese momento resida en disco

60

duro u otro medio de almacenamiento secundario. Aunque esta tcnica era eficaz
(porque resolva el problema) no era eficiente (ya que no lo resolva de la mejor
manera). Esta solucin requera que el programador tuviera un conocimiento
muy profundo del equipo de cmputo y de las llamadas al sistema operativo.
Otra desventaja era la portabilidad de un sistema a otro: las llamadas
cambiaban, los tamaos de particiones tambin. Resumiendo, con esta tcnica
se podan ejecutar programas ms grandes que las particiones de RAM, donde la
divisin del cdigo corra a cuenta del programador y el control a cuenta del
sistema operativo.

3.11 MULTIPROGRAMACIN EN MEMORIA VIRTUAL


La necesidad cada vez ms imperiosa de ejecutar programas grandes y el
crecimiento en poder de las unidades centrales de procesamiento empujaron a
los diseadores de los sistemas operativos a implantar un mecanismo para
ejecutar automticamente programas ms grandes que la memoria real
disponible, esto es, de ofrecer `memoria virtual'.
La memoria virtual se llama as porque el programador ve una cantidad de
memoria mucho mayor que la real, y en realidad se trata de la suma de la
memoria de almacenamiento primario y una cantidad determinada de
almacenamiento secundario. El sistema operativo, en su mdulo de manejo de
memoria, se encarga de intercambiar programas enteros, segmentos o pginas
entre la memoria real y el medio de almacenamiento secundario. Si lo que se
intercambia son procesos enteros, se habla entonces de multiprogramacin en
memoria real, pero si lo que se intercambian son segmentos o pginas, se puede
hablar de multiprogramacin con memoria virtual.
La memoria virtual se apoya en varias tcnicas interesantes para lograr su
objetivo. Una de las teoras ms fuertes es la del `conjunto de trabajo', la cual
se refiere a que un programa o proceso no est usando todo su espacio de
direcciones en todo momento, sino que existen un conjunto de localidades
activas que conforman el `conjunto de trabajo'. Si se logra que las pginas o
segmentos que contienen al conjunto de trabajo estn siempre en RAM, entonces
el programa se desempear muy bien.
Otro factor importante es si los programas exhiben un fenmeno llamado
`localidad', lo cual quiere decir que algunos programas tienden a usar mucho las
instrucciones que estn cercanas a la localidad de la instruccin que se est
ejecutando actualmente.

3.12 PAGINACIN
Es una tcnica de manejo de memoria, en la cual el espacio de memoria se
divide en secciones fsicas de igual tamao, denominadas marcos de pgina. Los
programas se dividen en unidades lgicas, denominadas pginas, que tienen el
mismo tamao que los marcos de pginas. De esta forma, se puede cargar una
pgina de informacin en cualquier marco de pgina.
Las pginas sirven como unidad de almacenamiento de informacin y de
transferencia entre memoria principal y memoria auxiliar o secundaria.

61

Los mecanismos de paginacin permiten la correspondencia correcta entre las


direcciones virtuales (dadas por los programas) y las direcciones reales de la
memoria que se reserven. Para tener el control de las pginas, debe mantenerse
una tabla en memoria que se denomina tabla de Mapas de Pagina (PMT) para
cada uno de los procesos.
Al utilizar la memoria virtual, las direcciones no pasan en forma directa al bus de
memoria, sino que van a una unidad administradora de la memoria (MMU Memory Management Unit). Estas direcciones generadas por los programas se
llaman direcciones virtuales y conforman el hueco de direcciones virtuales. Este
hueco se divide en unidades llamadas pginas. Las unidades correspondientes en
la memoria fsica se llaman marcos para pgina o frames. Las pginas y los
frames tienen siempre el mismo tamao.
3.12.1

Tablas de pginas

El nmero de pgina virtual se divide en un nmero de pgina virtual (los bits


superiores) y un ajuste (los bits inferiores). El nmero de pgina virtual se utiliza
como un ndice en la tabla de pginas para encontrar la entrada de esa pgina
virtual. El nmero de marco (si existe) se determina a partir de la tabla de
pginas. El nmero de marco se asocia al extremo superior del ajuste y
reemplaza al nmero de pgina virtual para formar una direccin fsica que se
puede enviar a la memoria.
La finalidad de la tabla de pginas es asociar las pginas virtuales con los
marcos. En trminos matemticos, la tabla de pginas es una funcin, cuyo
argumento es el nmero de pgina virtual y como resultado el nmero del marco
fsico. Mediante el resultado de esta funcin, se puede reemplazar el campo de la
pgina virtual de una direccin virtual por un campo de marco, lo que produce
una direccin en la memoria fsica. Sin embargo hay que enfrentar dos aspectos
fundamentales:
1.
La tabla de pginas puede ser demasiado grande.
2.
La asociacin debe ser rpida.
El primer punto proviene del hecho de que las computadoras modernas utilizan
direcciones virtuales de al menos 32 bits. Por ejemplo, si el tamao de pgina es
de 4K, un hueco de direcciones de 32 bits tiene un milln de pginas; en el caso
de un hueco de direcciones de 64 bits, se tendra ms informacin de la que uno
quisiera contemplar.
El segundo punto es consecuencia del hecho de que la asociacin virtual - fsica
debe hacerse en cada referencia a la memoria. Una instruccin comn tiene una
palabra de instruccin y tambin un operando de memoria. Por ello, es necesario
remitirse una, dos o ms veces en la tabla de pginas cada vez que se ejecute
una instruccin.
3.12.2

Diseos de tablas de pginas

Vector de registros rpidos en hardware: consiste en una entrada por


pgina virtual. Al iniciar el proceso se carga la tabla de pginas del proceso en
estos registros durante la asociacin no hay que acceder a memoria.

62

Desventaja:
Costosa en recursos si la tabla de pginas es grande (1 registro por
pgina)
Costosa en tiempo
En el cambio de contexto habra que cargar la tabla de pginas

Tabla de pginas en memoria: en hardware slo se necesita un registro


que apunte al inicio de la tabla de pginas el cambio de contexto: modifica un
registro.
Desventaja:
Hay que hacer una o ms referencias a memoria por cada instruccin para
acceder a la tabla de pginas

Tablas de pginas de varios niveles: No todo el espacio de direcciones


virtuales es utilizado por todos los procesos.

Memoria asociativa: consiste en adoptar una tcnica diferente para acceder


a las pginas activas. Esta tcnica representa el tener que incorporar a la
mquina una memoria asociativa, en un pequeo conjunto de registros de
direccin de pgina (PARs, del ingls page address registers), cada uno de los
cuales contiene el nmero de pgina de una pgina activa. Los PARs
presentan la propiedad de poderse buscar en ellos de forma simultnea el
nmero de pgina asociado a una direccin de programa en particular.
Por ejemplo, la direccin de programa 3243 se divide en el nmero de pgina
3 y el nmero de palabra 243 (el tamao de la pgina sea 1000). El nmero
de pgina se compara entonces de forma simultnea con el contenido de
todos los PARs, y se encuentra que coincide con el valor del PAR 5. Ello indica
que la pgina 3 ocupa en la actualidad la pgina fsica nmero 5, de forma
que la direccin buscada ser la 5243.

Ventaja:
Reduce el tiempo empleado en la transformacin de direcciones en un orden
de magnitud con respecto al caso en el que se guardaba la tabla de pginas
sobre memoria principal.

Figura 30: Traduccin de direcciones de memoria


Fuente: http://danielguzmanrobles5c.blogspot.com/2009_08_01_archive.html

63

3.12.3

Transformacin
asociativa

de

direcciones

mediante

una

memoria

Con el fin de que se pueda hacer referencia a todas las pginas activas a travs
de un PAR, hay que disponer de tantos como marcos haya en la memoria. En
este caso, el marco al que har referencia cada PAR, no vendr implcito por la
situacin de ste, sino que deber incluirse como un campo adicional en el
mismo PAR. El hardware de direccionamiento de la memoria lleva a cabo,
entonces, la operacin de transformacin de direcciones. Como antes, slo se
requiere la intervencin del software en el caso de que haya que sustituir una
pgina.
Se cargan cclicamente en la memoria asociativa las direcciones de las pginas a
las que se ha hecho referencia con ms frecuencia recientemente. Este
algoritmo, ms bien primitivo, es, de hecho, bastante eficaz. El porcentaje de
veces que se encuentra un nmero de pgina entre los registros asociativos est
relacionado claramente con el nmero de registros asociativos. Con 8 o 16
registros asociativos, puede obtenerse un porcentaje del 80 al 90%. Un
porcentaje del 80% significa que el 80% de las veces encontramos el nmero de
pgina deseado entre los registros asociativos. Si explorar los registros
asociativos lleva 50 nanosegundos, y 750 nanosegundos acceder a memoria,
entonces un acceso a memoria "mapeada" lleva 800 nanosegundos cuando el
nmero de pgina se encuentra en los registros asociativos. Si no conseguimos
encontrar el nmero de pgina (50 ns), entonces tenemos que acceder a la
memoria en primer lugar para buscar el nmero de marco en la tabla de pginas
(750 ns) y entonces acceder a la palabra deseada en memoria (750 ns), dando
en total 1550 nanosegundos. Para encontrar el tiempo efectivo de acceso a
memoria, tenemos que ponderar cada caso con su probabilidad:
Tiempo efectivo de acceso a memoria = 0,80 x 800 + 0,20 x 1550 = 950 ns
En este ejemplo, sufrimos un 26,6% de retardo en el tiempo de acceso a
memoria (de 750 a 950 nanosegundos).
3.12.4

Estructura de una tabla de pginas

Paginacin jerrquica: Rompe el espacio de direccionamiento lgico en


mltiples tablas de pgina.

Figura 31: Paginacin jerrquica


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

64

Tabla hash de pgina: El espacio de direcciones comunes es mayor a 32


bits. El nmero de pgina virtual se usa como llave de una tabla de
pgina hash. Esta tabla de pgina contiene una lista con los elementos
asociados al mismo registro. El nmero de pgina virtual es comparado en
esta lista buscando una coincidencia, si se encuentra, el marco de pgina
es extrado.

Figura 32: Tabla hash de pgina


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

Pgina Invertida: Disminuye el desperdicio de memoria y aumenta el


tiempo de bsqueda. Usa la tabla hash para reducir tiempo de bsqueda.

Figura 33: Pgina invertida


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

65

3.12.5

Uso del TLB en las tablas de pginas

Cada referencia a memoria virtual puede causar dos accesos a memoria fsica:

Una consulta en la tabla de pginas

Una para buscar el dato


Para superar el problema se coloca una cache de alta velocidad para entradas de
tablas de pgina
llamada TLB - Translation Lookaside Buffer. Este buffer
contiene las entradas de tablas de pgina que han sido usadas ms
recientemente, adems funciona igual que una memoria cache

Figura 34: Uso del TLB en las tablas de pginas


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

3.12.6

Traduccin de direcciones

La direccin generada por la CPU se divide en:


Nmero de pgina (p): utilizado como ndice en la tabla de pginas que
contiene la direccin base de cada pgina en la memoria fsica.
Offset de la pgina (d): combinado con la direccin base define la
direccin fsica que ser enviada a la unidad de memoria.

Figura 35: Traduccin de direcciones


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

66

3.12.7

Estructura de una entrada de tabla de pginas

La estructura general de una tabla de pginas consta de lo siguiente:


Nmero de marco de pgina
Bit presente/ausente; si el bit es 1 la entrada es vlida y puede usarse, si
es 0 significa que la pgina virtual de la entrada no est en memoria, esto
causara un fallo de pgina.
Bit de Proteccin; indica que tipos de accesos estn permitidos. Si el bit es
0 permite leer y escribir; y si es 1 permite nicamente leer.
Bit Modificada y Solicitada llevan el control del uso de la pgina. El bit
modificado refleja el estado de la pgina, y el bit solicitado se enciende
cada vez que se hace referencia a una pgina; ya sea para leer o escribir.
El ultimo bit permite inhabilitar el uso de cach con la pagina. Importante
en el caso de pginas que corresponda a registros de dispositivos, no a
memoria.
No poner cach

Modificada Presente/Ausente
Numero de marco de pagina

Solicitada
Proteccin
Figura 36: Estructura de una entrada de tabla de pginas
Fuente: http://so.fciencias.unam.mx/presentaciones/ch8.pdf

3.12.8

Funcionamiento de memoria paginada

Cada vez que la CPU genere una direccin de memoria sta es transformada por
una unidad hardware, de forma que en el bus del sistema se introduce la
direccin fsica correspondiente. Es importante observar que la paginacin es en
s misma una forma de reubicacin dinmica. Cada direccin lgica es
transformada en alguna direccin fsica por el hardware de paginacin. Observe
tambin que si el tamao de pgina es una potencia de dos, el hardware no
precisa realizar ninguna divisin, simplemente sabe que los ltimos n bits, si el
tamao de pgina es de 2n, representan el desplazamiento, y los primeros bits la
pgina.
Cada proceso debe tener su propia tabla de pginas, y su direccin de comienzo
en la memoria principal forma parte de la porcin del PCB utilizada para realizar
un cambio de proceso. Como el nmero de marcos (cantidad de memoria real)
asignados a un proceso ser normalmente menor que el nmero de pginas que
ste utiliza, es muy posible que una direccin del programa haga referencia a
una pgina que no se encuentre en aquel momento en la memoria principal. En
este caso el elemento correspondiente de la tabla de pginas estar vaco,
provocando el hardware una interrupcin de "fallo de pgina" si se intenta
acceder a ella. Esta interrupcin provoca que el control pase al software (al
sistema operativo), para que ste inicie la transferencia de la pgina que falta
desde la memoria secundaria a la memoria principal, y actualice de acuerdo con
ello la tabla de pginas. El proceso en ejecucin se har no listo hasta que se
haya completado esta transferencia. La posicin de las pginas en la memoria
secundaria puede guardarse en una tabla separada o en la misma tabla de
pginas. En este ltimo caso, es necesario un "bit de presencia" en cada

67

elemento de la tabla de pginas, para indicar si la pgina se encuentra presente


o no en la memoria principal, y si el campo de direcciones debe interpretarse
como una direccin de marco, o bien como una direccin de la memoria
secundaria. La eleccin de la pgina que habr que sacar es el resultado de un
algoritmo de reemplazo de pgina.
Ejercicio de aplicacin
En este ejemplo es de 4KB de pginas y marcos, con un espacio de direcciones
virtuales de 64K y 32KB de memoria fsica, tenemos 16 pginas virtuales y ocho
marcos de pgina. Cuando el programa trata de tener acceso a la direccin 0,
por ejemplo, con la intrusin la direccin virtual 0 enva a la MMU. Esta ve que
tal direccin virtual est en la pagina 0(0 a 4095, que segn su correspondencia
es el marco de pagina 2(8192 a 12287). As, la MMU; lo nico que ve es una
solicitud de leer o escribir a la direccin 8192, y lo hace. Por lo tanto, la MMU ha
establecido la correspondencia total de todas las direcciones entre 0 y 4095 con
las
direcciones
fsicas
8192
a12287.

De forma similar la instruccin

Figura 37: Ejemplo de aplicacin


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

68

3.12.9

Pginas compartidas

Esto es particularmente importante en un entorno de tiempo compartido.


Consideremos un sistema que soporta 40 usuarios, cada uno de los cuales
ejecuta un editor de textos. Si el editor de textos consta de 30K de cdigo y 5K
de espacio para datos, necesitaramos 1400K para permitir a los 40 usuarios. No
obstante, si el programa es reentrante, podra compartirse. Aqu vemos un
editor de tres pginas que es compartido por tres procesos. Cada proceso tiene
su propia pgina de datos.
El cdigo reentrante (tambin llamado cdigo puro) es un cdigo no
automodificable. Si el cdigo es reentrante, entonces nunca cambia durante la
ejecucin. As, dos o ms procesos pueden ejecutar el mismo cdigo al mismo
tiempo. Cada proceso, para su ejecucin, tiene su PCB y su memoria para
mantener los datos. Por supuesto, los datos de todos esos procesos diferentes
varan para cada uno de ellos.

Caractersticas
El espacio de direcciones lgico de un proceso puede ser no contiguo.
Se divide la memoria fsica en bloques de tamao fijo llamados marcos (frames).
Se divide la memoria en bloques de tamao llamados pginas.
Se mantiene informacin en los marcos libres.
Para correr un programa de n paginas de tamao, se necesitan encontrara n
marcos y cargar el programa.
Se establece una tabla de pginas para trasladar las direcciones lgicas a fsicas.
Se produce fragmentacin interna.
La memoria asociativa permite acelerar la traduccin.
Comparte programas de uso corriente.
Tabla 15.
Titulo: Ventajas y desventajas de las mquinas virtuales

Ventajas
Es posible comenzar a ejecutar un
programa, cargando solo una
parte del mismo en memoria, y el
resto se cargara bajo la solicitud

No es necesario que las paginas


estn contiguas en memoria, por
lo que no se necesitan procesos
de compactacin cuando existen
marcos
de
paginas
libres
dispersos en la memoria

Es fcil controlar todas las


pginas, ya que tienen el mismo

Desventajas
El costo de hardware y software
se incrementa (si la tabla de
paginas es grande), por la nueva
informacin que debe manejarse
y el mecanismo de traduccin de
direcciones
necesario.
Se
consume mucho ms recursos de
memoria, tiempo en el CPU para
su implantacin
Se deben reservar reas de
memoria para las PMT de los
procesos. Al no ser fija el tamao
de estas, se crea un problema
semejante al de los programas
(como asignar un tamao ptimo
sin desperdicio de memoria, u
"ovearhead" del procesador)
Aparece
el
problema
de
fragmentacin interna

69

tamao
El mecanismo de traduccin de
direcciones
(DAT)
permite
separar los conceptos de espacio
de direcciones y espacios de
memoria. Todo el mecanismo es
transparente al usuario
Se libera al programador de la
restriccin de programar para un
tamao fsico de memoria, con lo
que se aumenta su productividad.
Se puede programar en funcin
de una memoria mucho ms
grande a la existente
Al no necesitarse cargar un
programa completo en memoria
para su ejecucin, se puede
amentar el nmero de programas
multiprogramndose
Se elimina el problema de
fragmentacin externa
Cuando la tabla se implementa
completamente en hardware, se
obtiene una alta velocidad de
acceso a memoria
Permite
la
posibilidad
de
compartir programas de uso
corriente
Cuando la tabla se implementa en
memoria principal, la tabla de
pginas puede crecer segn se
requiera

Al implementar completamente
en
hardware,
resulta
problemtica cuando la tabla de
pginas debe ser grande

La velocidad de acceso a memoria


principal es relativamente baja,
dado que cada referencia a
memoria involucra 2 accesos

Fuente: Autor

3.12.10 Algoritmos de reemplazo de pginas


Con el uso del mtodo de paginacin se puede llegar a saturar la memoria si se
incrementa demasiado el nivel de multiprogramacin. Por ejemplo, si se corren
seis procesos, cada uno con un tamao de diez pginas de las cuales en realidad
slo utiliza cinco, se tiene un mayor uso del CPU y con marcos de sobra. Pero
pudiera suceder que cada uno de esos procesos quiera usar las diez pginas
resultando en una necesidad de 60 marcos, cuando solo hay 40 disponibles.
Esto provoca sobre-asignacin y mientras un proceso de usuario se est
ejecutando, ocurre un fallo de pgina. El hardware se bloquea con el sistema
operativo, el cual checa en sus tablas internas y se da cuenta que es un fallo de
pgina y no un acceso ilegal de memoria. El sistema operativo determina si la
pgina est residiendo en disco, pero tambin determina que no hay marcos de
memoria disponibles en la lista de marcos libres.
Al ocurrir el fallo de pgina, el sistema operativo debe elegir una pgina para
retirarla de la memoria y usar el espacio para la pgina que se necesita para

70

desbloquear el sistema y que el hardware pueda seguir trabajando. Si la pgina


por eliminar de la memoria fue modificada, se debe volver a escribir al disco para
mantener la informacin actualizada; de lo contrario, si la pgina no fue
modificada no es necesario rescribir la informacin a disco y la pgina que se
carga simplemente se escribe sobre la pgina a borrar en memoria. La figura 38
muestra grficamente un intercambio de pginas entre la memoria principal y el
disco (memoria secundaria).

Pgina a eliminar
Marco elegido para
intercambio de
Pgina a cargar

Memoria Principal

Memoria Secundaria

Figura 38: Intercambio de pginas


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

Se elimina de la memoria principal una pgina que no est en uso y se


reemplaza por una pgina de la cual el sistema operativo tiene necesidad de uso.
3.12.11 Algoritmo aleatorio
Este algoritmo consiste simplemente en reemplazar aleatoriamente cualquier
pgina de la memoria principal, sin hacer ningn esfuerzo de prediccin.
Es el algoritmo ms sencillo dado que no requiere tener ninguna informacin, sin
embargo, por no hacer uso de dicha informacin sobre el comportamiento del
proceso, no puede lograr un buen desempeo.
3.12.12 Algoritmo de reemplazo de pginas ptimo
Este algoritmo debe de tener el menor ndice de fallos de pgina de todos los
algoritmos. En teora, este algoritmo debe de reemplazar la pgina que no va a
ser usada por el periodo ms largo de tiempo.
Desafortunadamente, el algoritmo de reemplazo ptimo es fcil en teora, pero
prcticamente imposible de implementar, dado que requiere conocer a futuro las
necesidades del sistema.
Tal algoritmo existe y ha sido llamado OPT o MIN, pero se usa nicamente para
estudios de comparaciones. Por ejemplo, puede resultar muy til saber que
aunque algn nuevo algoritmo no sea ptimo, est entre el 12.3% del ptimo y
entre el 4.7% en promedio.

71

3.12.13 Algoritmo de reemplazo de pginas segn el uso no tan reciente


Este algoritmo hace uso de los dos bits de estado que estn asociados a cada
pgina. Estos bits son: R, el cual se activa cuando se hace referencia (lectura /
escritura) a la pgina asociada; y M, que se activa cuando la pgina asociada es
modificada (escritura). Estos bits deben de ser actualizado cada vez que se haga
referencia a la memoria, por esto es de suma importancia que sean activados por
el hardware. Una vez activado el bit, permanece en ese estado hasta que el
sistema operativo, mediante software, modifica su estado.
Estos bits pueden ser utilizados para desarrollar un algoritmo de reemplazo que
cuando inicie el proceso, el sistema operativo asigne un valor de 0 a ambos bits
en todas las pginas. En cada interrupcin de reloj, limpie el bit R para distinguir
cules pginas tuvieron referencia y cules no.
Cuando ocurre un fallo de pgina, el sistema operativo revisa ambos bits en
todas las pginas y las clasifica de la siguiente manera:
Clase 0: La pgina no ha sido referenciada, ni modificada.
Clase 1: La pgina no ha sido referenciada, pero ha sido modificada.
Clase 2: La pgina ha sido referenciada, pero no ha sido modificada.
Clase 3: La pgina ha sido referenciada y tambin modificada.
Una vez obtenida la clasificacin, elimina una pgina de manera aleatoria de la
primera clase no vaca con el nmero ms pequeo. Esto porque para el
algoritmo es mejor eliminar una pgina modificada sin referencias en al menos
un intervalo de reloj, que una pgina en blanco de uso frecuente.
A pesar de que este algoritmo no es el ptimo, es fcil de implementar y de
comprender y con mucha frecuencia es el ms adecuado.
3.12.14 Algoritmo de reemplazo primero en entrar, primero en salir
(FIFO)
El algoritmo ms sencillo para reemplazo de pginas es el FIFO (First In First
Out). Este algoritmo asocia a cada pgina el momento en que sta fue trada a
memoria. Cuando una pgina debe ser reemplazada se selecciona a la ms
antigua.
No es estrictamente necesario registrar el momento de entrada de la pgina a
memoria, sino que se puede crear una cola en la que se van agregando las
pginas conforme van llegando a la memoria. Cuando se debe eliminar una
pgina, se selecciona la que est al frente de la lista (o sea, la ms antigua de la
lista). Cuando llega una pgina nueva, se inserta en la parte trasera de la cola.
En la figura se representa el funcionamiento de ste algoritmo.
Pgina ms
reciente

Pgina ms
antigua

Figura 39: Reemplazo de pginas FIFO


Fuente: http://sisinfo.itc.mx/ITC-APIRGG/Materias/Mat4/Imagenes-Unid1/SO-IIU1_Fig1.gif

72

3.12.15 Reemplazo de pginas mediante el algoritmo FIFO


Al igual que el algoritmo aleatorio, este algoritmo es fcil de comprender y de
programar. Sin embargo, su desempeo no siempre es del todo bueno. La
pgina reemplazada puede ser un mdulo de inicializacin que fue usado hace
mucho tiempo y ya no se tiene necesidad de l. Por otro lado, puede contener
una variable de uso muy frecuente que fue inicializada de manera temprana y
est en uso constante.
3.12.16 Algoritmo de reemplazo de pginas de la segunda oportunidad
Este algoritmo es una modificacin del FIFO. El algoritmo hace uso del bit de
referencia de la pgina. Cuando una pgina ha sido seleccionada para reemplazo,
se revisa el bit de referencia. Si tiene valor de 0, se procede a reemplazar la
pgina. Si por el contrario, el bit de referencia es 1 se le da a la pgina una
segunda oportunidad.
Pgina ms
reciente

Pgina ms
reciente

El bit se cambia a 0 y se actualiza el tiempo de


llegada de la pgina

Pgina ms
antigua

Pgina seleccionada para


reemplazo con bit 1
Pgina ms
B
antigua

Figura 40: Reemplazo de pginas de la segunda oportunidad


Fuente: http://sisinfo.itc.mx/ITC-APIRGG/Materias/Mat4/Imagenes-Unid1/SO-IIU1_Fig1.gif

3.12.17 Algoritmo de la segunda oportunidad


Cuando esto sucede, se le cambia el bit de referencia a 0 y se actualiza su
tiempo de llegada al tiempo actual para que la pgina sea colocada al final de la
cola. De esta manera, la pgina espera todo un ciclo completo de pginas para
ser entonces reemplazada.
Si la pgina tiene un uso muy frecuente, el bit de referencia se mantendra
constantemente en 1 y la pgina no sera reemplazada. En la figura anterior se
puede apreciar el funcionamiento del algoritmo.
3.12.18 Algoritmo de reemplazo de pginas del reloj
Modificando el algoritmo de la segunda oportunidad (que a su vez es una
modificacin de FIFO) obtenemos el algoritmo aumentado de la segunda
oportunidad o algoritmo del reloj. Usamos la misma clasificacin vista en el
algoritmo de uso no tan reciente.
Este algoritmo organiza las pginas en una lista circular como se muestra en la
figura y se usa un apuntador (o manecilla) que seala a la pgina ms antigua.

73

Figura 41: Reemplazo de pginas del reloj


Fuente: http://wwwdi.ujaen.es/~lina/TemasSO/MEMORIAVIRTUAL/Image19.gif

3.12.19 Algoritmo de reloj


Cuando se presenta un fallo de pgina, el algoritmo revisa la pgina a la que est
apuntando la manecilla. Si el bit de referencia es 0, la pgina es reemplazada
con la nueva y la manecilla avanza una posicin. Si el bit es 1, entonces se
limpia (cambia a 0) y la manecilla avanza a la siguiente pgina y as
sucesivamente hasta encontrar una con bit 0.
3.12.20 Algoritmo de reemplazo de pginas la de menor uso reciente
(LRU)
Este algoritmo es una buena aproximacin al ptimo y se basa en la observacin
de que las pginas de uso frecuente en las ltimas instrucciones se utilizan con
cierta probabilidad en las siguientes. De la misma manera, es probable que las
pginas que no hayan sido utilizadas durante mucho tiempo permanezcan sin
uso por bastante tiempo. Implementando el algoritmo con esta base, al ocurrir
un fallo de pgina, se elimina la pgina que no haya sido utilizada durante el
tiempo ms grande. De ah su denominacin: menor uso reciente (LRU - Least
Recent Use).
A diferencia de los algoritmos anteriores, el LRU tiene un mejor rendimiento en
cuanto al tiempo de aprovechamiento del CPU y del uso de la memoria. Sin
embargo, el problema con este algoritmo es que su implementacin es muy cara,
ya que requiere de una asistencia considerable de hardware. Otro problema es el
de determinar un orden para los marcos definido por el tiempo de menor uso.
Para ste ltimo hay dos posibles implementaciones:
Contadores: En el caso ms sencillo, se asocia cada entrada tabla-pgina un
campo de tiempo-de-uso y se le agrega al CPU un reloj lgico o contador. Este
reloj es incrementado en cada referencia de memoria. Siempre que se hace
referencia a una pgina, el contenido del registro del reloj es copiado al campo
de tiempo-de-uso en la tabla de pginas para esa pgina. De esta forma,
siempre se dispone del tiempo de la ltima referencia a cada pgina. La pgina
que se reemplaza es la del menor valor de tiempo. Este esquema requiere de
una bsqueda en toda la tabla de pginas para encontrar la pgina LRU, y una
escritura en memoria al campo de tiempo-de-uso en la tabla de pginas por cada
acceso a memoria. Los tiempos tambin se deben de mantener cuando las tablas
de pginas son alteradas (debido a organizacin del CPU). Se debe considerar la
posibilidad de sobrecarga en el reloj.

74

Pilas: Otra aproximacin para implementar el reemplazo LRU es la de tener una


pila con los nmeros de pginas. Siempre que se hace referencia a una pgina,
se quita de la pila y se pone en la parte superior. De esta manera, la parte
superior de la pila es la pgina de uso ms reciente y la de abajo es la LRU, tal
como se muestra en la figura

A
E
E
D
C
B
A

D
C
B

Figura 42: Uso de pilas en el algoritmo LRU


Fuente: http://wwwdi.ujaen.es/~lina/TemasSO/MEMORIAVIRTUAL/Image19.gif

3.13 SEGMENTACIN
Otra opcin para el manejo de la memoria es usar una forma de liberar al
programador de la tarea del control de las tablas en expansin y contraccin, de
la misma forma que la memoria virtual elimina la preocupacin por organizar el
programa en una serie de proyectos.
Esto se puede lograr dotando a la mquina de varios espacios independientes de
direcciones llamados segmentos. Cada segmento tiene una serie lineal de
direcciones, desde 0 hasta cierto mximo. La longitud de cada segmento puede
variar de 0 hasta un mximo permitido. Los distintos segmentos pueden tener y
de hecho tienen por lo general, longitudes distintas. Adems, la longitud de un
segmento puede variar durante la ejecucin. La longitud de un segmento de la
pila puede crecer si algo entra a la pila y decrecer si algo sale de ella.
Puesto que cada segmento constituye un espacio independiente de direcciones,
los distintos segmentos pueden crecer o reducirse en forma independiente sin
afectar a los dems. En la figura siguiente podemos ver
una lista de
comparacin entre la paginacin y la segmentacin.
La segmentacin tambin facilita el uso de procedimientos o datos compartidos
entre varios procesos. Un ejemplo comn son las bibliotecas compartidas
(Shared DLLs). Es frecuente que las estaciones de trabajo modernas que
ejecutan sistemas avanzados, con ventanas, tengan bibliotecas grficas de
tamao muy grande que se compilan casi en todos los programas. En un sistema
segmentado, la biblioteca grfica se puede colocar en un segmento y compartirse
entre varios procesos, sin necesidad de tenerla en el espacio de direcciones de
cada proceso.
Aunque tambin es posible tener bibliotecas compartidas sin los sistemas con
paginacin pura, es mucho ms complejo. De hecho, estos sistemas simulan la
segmentacin.

75

Segmentacin pura
La implantacin de la segmentacin difiere del caso de la paginacin en un
sentido esencial: las pginas tienen un tamao fijo y los segmentos no. La figura
Desarrollo de fragmentacin externa y su correccin mediante compactacin,
muestra un ejemplo de memoria fsica que contiene al principio 5 segmentos.
Consideremos que el segmento 1 se elimina y su lugar se ocupa por el segmento
7, que es menor. El rea que queda entre el segmento 7 y el 2 es un hueco.
Luego, el segmento 4 se reemplaza por el segmento 5 y el segmento 3 es
reemplazado por el segmento 6. Despus de que el sistema est en ejecucin
durante cierto tiempo, la memoria quedar dividida en varios bloques, algunos
con segmentos y otros con huecos.

3.14 COMPARACIN DE PAGINACIN Y SEGMENTACIN


Este fenmeno de fragmentacin externa o checkboarding, desperdicia la
memoria correspondiente a los huecos, pero es fcilmente corregido mediante el
uso de la compactacin. De esta forma los huecos son unificados, generando as
un hueco de tamao suficiente para albergar algn otro segmento ms.
Segmento
0 (4K)

(a)

Segmento
1 (8K)

Segmento
0 (4K)

(b)
Segmento
7 (5K)
Hueco
(3K)

Segmento
2 (5K)

Segmento
3 (8K)

Segmento
4 (7K)

Segmento
2 (5K)
Segmento
3 (8K)

Segmento
0 (4K)

(c)
Segmento
7 (5K)
Hueco
(3K)
Segmento
2 (5K)
Segmento
3 (8K)
Segmento
5 (4K)

Segmento
4 (7K)

Hueco
(3K)

Segmento
0 (4K)

(d)
Segmento
7 (5K)
Hueco
(3K)
Segmento
2 (5K)
Segmento
6 (4K)

Segmento
0 (4K)

(e)
Segmento
7 (5K)
Segmento
2 (5K)
Segmento
6 (4K)
Segmento
5 (4K)

Hueco
(4K)
Segmento
5 (4K)
Hueco
(3K)

Hueco
(10K)

Figura 43: Desarrollo de fragmentacin externa y su correccin mediante


compactacin
Fuente:
http://www.elprisma.com/apuntes/ingenieria_de_sistemas/sistemasoperativosfundamentos/default
2.asp

3.15 SISTEMAS COMBINADOS


La paginacin y la segmentacin puras son mtodos de manejo de memoria
bastante efectivos, aunque la mayora de los sistemas operativos modernos
implantan esquemas combinados, es decir, combinan la paginacin y la
segmentacin. La idea de combinar estos esquemas se debe a que de esta forma
se aprovechan los conceptos de la divisin lgica de los programas (segmentos)
con la granularidad de las pginas. De esta forma, un proceso estar repartido
en la memoria real en pequeas unidades (pginas) cuya liga son los segmentos.
Tambin es factible as el compartir segmentos a medida que las partes

76

necesitadas de los mismos se van referenciando (pginas). Para comprender este


esquema, nuevamente se ver cmo se traduce una direccin virtual en una
localidad de memoria real. Para la paginacin y segmentacin puras se puede
decir que el direccionamiento es `bidimensional' porque se necesitan dos valores
para hallar la direccin real. Para el caso combinado, se puede decir que se tiene
un direccionamiento `tridimensional'. En la figura 44 se muestran las partes
relevantes para lograr la traduccin de direcciones. El sistema debe contar con
una tabla de procesos (TP). Por cada rengln de esa tabla se tiene un nmero de
proceso y una direccin a una tabla de segmentos.
Es decir, cada proceso tiene una tabla de segmentos. Cuando un proceso hace
alguna referencia a memoria, se consulta TP para encontrar la tabla de
segmentos de ese proceso. En cada tabla de segmentos de proceso (TSP) se
tienen los nmeros de los segmentos que componen a ese proceso. Por cada
segmento se tiene una direccin a una tabla de pginas. Cada tabla de pginas
tiene las direcciones de las pginas que componen a un solo segmento. Por
ejemplo, el segmento `A' puede estar formado por las pginas reales
`a','b','c','p' y `x'. El segmento `B' puede estar compuesto de las pginas
`f','g','j','w' y `z'.

Figura 44: Traduccin en la segmentacin-paginacin


Fuente:
http://www.elprisma.com/apuntes/ingenieria_de_sistemas/sistemasoperativosfundamentos/default
2.asp

77

Ahora, en este esquema pueden haber dos tipos de fallos: por fallo de pgina y
por fallo de segmento. Cuando se hace referencia a una direccin y el segmento
que la contiene no est en RAM (aunque sea parcialmente), se provoca un fallo
por falta de segmento y lo que se hace es traerlo del medio de almacenamiento
secundario y crearle una tabla de pginas. Una vez cargado el segmento se
necesita localizar la pgina correspondiente, pero sta no existe en RAM, por lo
cual se provoca un fallo de pgina y se carga de disco y finalmente se puede ya
traer la direccin deseada por medio del desplazamiento de la direccin virtual.
La eficiencia de la traduccin de direcciones tanto en paginacin pura,
segmentacin pura y esquemas combinados se mejora usando memorias
asociativas para las tablas de pginas y segmentos, as como memorias cache
para guardar los mapeos ms solicitados.
Otro aspecto importante es la estrategia para cargar pginas (o segmentos) a la
memoria RAM. Se usan ms comnmente dos estrategias: cargado de pginas
por demanda y cargado de pginas anticipada. La estrategia de cargado por
demanda consiste en que las pginas solamente son llevadas a RAM si fueron
solicitadas, es decir, si se hizo referencia a una direccin que cae dentro de ellas.
La carga anticipada consiste en tratar de adivinar qu pginas sern solicitadas
en el futuro inmediato y cargarlas de antemano, para que cuando se pidan ya no
ocurran fallos de pgina. Ese `adivinar' puede ser que se aproveche el fenmeno
de localidad y que las pginas que se cargan por anticipado sean aquellas que
contienen direcciones contiguas a la direccin que se acaba de referenciar. De
hecho, el sistema operativo VMS usa un esquema combinado para cargar
pginas: cuando se hace referencia a una direccin cuya pgina no est en RAM,
se provoca un fallo de pgina y se carga esa pgina junto con algunas pginas
adyacentes. En este caso la pgina solicitada se carg por demanda y las
adyacentes se cargaron por anticipacin.

3.16 GESTIN DE MEMORIA VIRTUAL EN WINDOWS Y LINUX


3.16.1

Sistema operativo Linux: como gestiona la memoria virtual

El tamao combinado del programa, datos y pila puede exceder la cantidad de


memoria fsica disponible. El sistema operativo guarda aquellas partes del
programa concurrentemente en memoria central y el resto en disco. Cuando un
programa espera que se le cargue en memoria central de disco otra parte del
mismo, la CPU se puede asignar a otro proceso.
El sistema operativo gestiona niveles de memoria principal y memoria
secundaria:
Transferencia de bloques entre ambos niveles(basada en paginacin)
De memoria secundaria a principal: por demanda
De memoria principal a secundaria: por expulsin
Esto conlleva unos beneficios: aumenta el grado de multiprogramacin, y
permite ejecutar programas que no quepan en memoria principal

78

3.16.2

Gestin de memoria en sistemas basados en Linux

Los sistemas basados en Unix comparten multitud de aspectos con los basados
en Linux, aunque ciertos puntos sustanciales son diferentes, y por ello a
continuacin se hace una diferenciacin. Hay que destacar no obstante que el
sistema de gestin de memoria en Linux sigue siendo muy complejo. Respecto a
memoria virtual, Linux hace uso de una estructura de tabla de pginas con tres
niveles. Para utilizarlas, las direcciones virtuales en Linux se ven como un
conjunto de 4 campos.
Para tratar de aumentar la eficiencia al cargar y descargar pginas desde o hacia
la memoria, se ha definido un mecanismo particular. Sin entrar en demasiados
detalles tcnicos, basta indicar que se utiliza el Sistema de colegas, en el cual las
pginas son agrupadas en marcos de tamao fijo. Para reemplazar pginas, se
utiliza el algoritmo del reloj, en el cual las pginas tienen asignada una especie
de variable de edad. Cuando es necesario reemplazar una pgina, aquellas que
no han sido referenciadas en bastante tiempo son las mejores candidatas.
3.16.3

Direccionamiento de memoria

La memoria es uno de los recursos fundamentales para un proceso. El sistema


operativo debe ofrecer la memoria a todos los procesos por igual de una forma
sencilla y uniforme. Al mismo tiempo, el sistema operativo debe tratar con el
hardware real para realizar dicha funcin, aprovechndolo al mximo. Desde el
punto de vista de la arquitectura, el sistema operativo suele tener asistencia del
hardware para realizar la gestin de memoria: por ejemplo, en sistemas i386, se
dispone de una unidad especializada para ello, la Memory Management
Unit.(MMU)
Existen los tres tipos de direcciones inicialmente comentados, las lgicas, las
lineales y las fsicas. Las transformaciones y el formato de las direcciones
dependen de la arquitectura. En Linux, los espacios de direcciones lgico y lineal
son idnticos. En los procesadores de la arquitectura i386, el paso de direccin
lgica a lineal se denomina segmentacin, y de lineal a fsica paginacin. Si
deshabilitamos la paginacin, la direccin fsica es igual a la lineal.
3.16.4

Segmentacin en Linux

Linux no aprovecha la segmentacin del i386. Sin embargo, no puede


desactivarla, la utiliza de una forma muy limitada. Se ha preferido la paginacin
sobre la segmentacin porque la gestin de memoria es ms simple, y uno de los
objetivos de Linux es la portabilidad: muchos procesadores soportan malamente
la segmentacin, as que la independencia de la plataforma se vera mermada en
Linux

79

Figura 45: Modelo de paginacin de Linux


Fuente: http://www.neo-tech.es/wp/doc/presentacion-erc.pdf

Linux gestiona la memoria central y las tablas de pginas utilizadas para


convertir las direcciones lineales (virtuales) en direcciones fsicas. Implementa
una gestin de la memoria ampliamente independiente de la plataforma sobre la
que se ejecuta. Este modelo no siempre se corresponde con el de la plataforma
sobre el cual se ejecuta (ejemplo, el anteriormente visto procesador i386). Es
tan sumamente extenso el modelo de paginacin en Linux que se hace imposible
de abordar. No obstante, podemos consultar en el archivo fuente mm/memory.c
la gestin de las tablas de pgina (las encargadas de realizar la traduccin entre
dos tipos de direcciones). Las funciones dependientes de la arquitectura se
definen en asm/potable.h

3.17 SISTEMA OPERATIVO


MEMORIA

WINDOWS:

COMO

GESTIONA

LA

Memoria en Win32
Cuando un proceso se ejecuta, el sistema establece un espacio de direcciones
virtuales propio de 32 bits, que permite habilitar un espacio de hasta 4 gigabytes
de memoria. ste est formado por la suma de la memoria RAM instalada, ms
la memoria virtual asignada.
Windows es un sistema multiproceso, ya que permite la ejecucin de varios
procesos a la vez. Por norma general, no todos los procesos caben en memoria a
la vez, ya sea porque existan muchos procesos, como que el tamao de stos
sea demasiado grande. Cuando esto sucede, Windows alterna la permanencia de
stos en memoria sacando unos y poniendo otros para que todos puedan
ejecutarse. Utiliza la memoria virtual asignada a cada proceso para guardar los
datos cada vez que se saca de la memoria. A ste cambio entre memoria fsica y
memoria virtual se le conoce como Swapping.
Para aumentar la velocidad, el cambio no se realiza byte a byte, sino pgina a
pgina. Cuyo tamao en Windows es de 4 KB. De ah que toda la memoria virtual
y fsica est paginada. Memoria virtual en forma de pginas, y memoria fsica en
forma de marcos de pgina.

80

3.17.1

Espacios de direcciones virtuales

Una direccin virtual no es una direccin fsica que apunte a una posicin de la
memoria principal, sino una direccin utilizada por el sistema para acceder a una
determinada pgina de la tabla de pginas de un proceso. Utilizando
posteriormente diferentes algoritmos para traducir esa direccin virtual, el
sistema puede acceder a la memoria fsica donde est contenida la informacin
del proceso. Esto permite que no podamos acceder a las posiciones de otros
procesos porque no es posible hacer referencia a dichas posiciones.
Cuando un proceso es movido de la memoria fsica a la memoria virtual para
dejar a otro que haga sus operaciones, el sistema se encarga de modificar la
tabla de pginas del proceso afectado ya sea para quitar referencias a memoria
(cuando sacamos un proceso de ella), o para asignar nuevas direcciones
(introduce el proceso en memoria). De ah que sea imposible acceder a la
memoria de otro proceso.
3.17.2

Estructura de la memoria

La estructura de la memoria en Windows es en forma de rbol, en el cual se


definen claramente 3 partes:
Directorio de pginas (Page Directory): Cada proceso en ejecucin,
dispone de un solo directorio de pginas. Se trata de una tabla con 1024
entradas que almacena los punteros a las tablas de pgina.
Tabla de pginas (Page Table): Cada tabla de pgina es a su vez otra
tabla que contiene otras 1024 entradas que ya apuntan a las propias pginas.
Pgina (Page Frame): Cada pgina es un bloque de 4 KB donde se
almacenan los datos de cada proceso.
Un esquema quedara as:

Figura 46: Estructura de la memoria


Fuente: http://www.neo-tech.es/wp/doc/presentacion-erc.pdf

Ms sencillo representarlo como una tabla de n filas (de 0 a 4.xxx.xxx.xxx) que


representan pginas.

81

Tabla 16.
Titulo: Rangos de pginas

Fuente: http://www.neo-tech.es/wp/doc/presentacion-erc.pdf

3.17.3

Pgina: N de la pgina

Rango de direcciones virtuales: Rango de direcciones virtuales que componen


la pgina. Va desde la direccin X hasta la direccin X + 4096 (4 KB).
Rango de direcciones fsicas: donde est almacenada la pgina. Puede estar
en memoria RAM o en memoria virtual.
Almacenado en... :indica donde est almacenada la pgina.

3.17.4

Estado de las pginas

Las pginas pueden estar en uno de los siguientes estados:


Libre: Una pgina libre no puede ser accedida por ningn proceso, pero s
puede ser reservada o encargada.
Reservada: Una pgina reservada es un bloque del espacio de direccin
virtual que ha sido fijada para usos futuros. No se puede acceder a una
pgina reservada, ni tiene datos almacenados. Simplemente bloquea el rango
y no permite que sea asignado por otras funciones de asignacin.
Encargada: Aquella que ya ha sido asignada a un espacio fsico, ya sea en
memoria fsica o en memoria virtual. No podemos saber donde est
almacenada la pgina, pues de eso se encarga el sistema y puede que est
constantemente cambindola de posicin, pero lo que s se sabe es que
cuando la necesitemos, ah lo tendremos

82

UNIDAD IV
GESTIN DE ARCHIVOS Y DIRECTORIOS
SISTEMA DE ARCHIVOS
4.1

SISTEMAS DE GESTIN DE ARCHIVOS

Un sistema de gestin de archivos es aquel sistema software que provee


servicios a los usuarios y aplicaciones en el uso de archivos. El nico camino que
tiene el usuario o la aplicacin tiene para acceder a los archivos es a travs de un
sistema de gestin de archivos. Esto revela para el usuario o programador la
necesidad de desarrollar software de propsito especial para cada aplicacin y
provee al sistema un medio de controlar su ventaja ms importante.
Estos son los objetivos de un sistema de gestin de archivos:
1. Cumplir con las necesidades de gestin de datos y con los requisitos del
usuario, que incluye el almacenamiento de, datos y la capacidad de
ejecutar las operaciones en la lista precedente.
2. Garantizar, en la medida de lo posible, que el dato en el archivo es vlido.
3. Optimizar el rendimiento, ambos desde el punto de vista del sistema en
trminos de productividad global, y como punto de vista del usuario en
tiempos de respuesta.
4. Para proveer soporte de E/S para una variedad de tipos de dispositivos de
almacenamiento.
5. Para minimizar o eliminar la posibilidad de prdida o destruccin de datos.
6. Para proveer un conjunto estndar de rutinas de E/S.
7. Para proveer soporte de E/S para mltiples usuarios, en caso de sistemas
multiusuarios

4.2

SOLUCIN AL ALMACENAMIENTO DE LA INFORMACIN


La solucin es el almacenamiento de la informacin en discos y otros
medios externos en unidades llamadas archivos:
Los archivos deben ser persistentes, es decir que no deben verse
afectados por la creacin o terminacin de un proceso
Los archivos son una coleccin de datos con nombre
Pueden ser manipulados como una unidad por operaciones como:
open, close, create, destroy, copy, rename, list
Los elementos de datos individuales dentro del archivo pueden ser
manipulados por operaciones como: read, write, update, insert,
delete

83

El Sistema de Archivos es la parte del sistema de administracin del


almacenamiento responsable, principalmente, de la administracin de los
archivos del almacenamiento secundario
Es la parte del sistema operativo responsable de permitir compartir
controladamente la informacin de los archivos

4.3

OPERACIONES QUE PUEDEN REALIZAR LOS USUARIOS EN


LOS ARCHIVOS

Los usuarios deben poder crear, modificar y borrar archivos


Se deben poder compartir los archivos de una manera cuidadosamente
controlada
El mecanismo encargado de compartir los archivos debe proporcionar
varios tipos de acceso controlado:
Ej.: Acceso de Lectura, Acceso de Escritura, Acceso de
Ejecucin, varias combinaciones de estos, etc.
Se debe poder estructurar los archivos de la manera ms apropiada a cada
aplicacin. Los usuarios deben poder ordenar la transferencia de
informacin entre archivos
Se deben proporcionar posibilidades de respaldo y recuperacin para
prevenirse contra:
La prdida accidental de informacin
La destruccin maliciosa de informacin
Se debe poder referenciar a los archivos mediante Nombres Simblicos,
brindando Independencia de Dispositivos. En ambientes sensibles, el
sistema de archivos debe proporcionar posibilidades de Cifrado y
Descifrado
El sistema de archivos debe brindar una interface favorable al usuario:
Debe suministrar una visin lgica de los datos y de las funciones que
sern ejecutadas, en vez de una visin fsica.
El usuario no debe tener que preocuparse por:
Los dispositivos particulares
Dnde sern almacenados los datos
El formato de los datos en los dispositivos
Los medios fsicos de la transferencia de datos hacia y desde los
dispositivos

4.4

MANEJO DE ARCHIVOS
Un Archivo es un conjunto de registros relacionados
El Sistema de Archivos es un componente importante de un sistema
operativo y suele contener:
Mtodos de acceso relacionados con la manera de acceder a los
datos almacenados en archivos
Administracin de archivos referida a la provisin de mecanismos
para que los archivos sean almacenados, referenciados,
compartidos y asegurados
Administracin del almacenamiento auxiliar para la asignacin de
espacio a los archivos en los dispositivos de almacenamiento
secundario

84

Integridad del archivo para garantizar la integridad de la


informacin del archivo
El sistema de archivos est relacionado especialmente con la
administracin
del
espacio
de
almacenamiento
secundario,
fundamentalmente con el almacenamiento de disco. Una forma de
organizacin de un sistema de archivos puede ser la siguiente:
Se utiliza una raz para indicar en qu parte del disco comienza el
directorio raz
El directorio raz apunta a los directorios de usuarios
Un directorio de usuario contiene una entrada para cada uno de
los archivos del usuario
Cada entrada de archivo apunta al lugar del disco donde est
almacenado el archivo referenciado
Los nombres de archivos solo necesitan ser nicos dentro de un directorio
de usuario dado. El nombre del sistema para un archivo dado debe ser
nico para el sistema de archivos.
En sistemas de archivo jerrquicos el nombre del sistema para un
archivo suele estar formado como el nombre de la trayectoria del
directorio raz al archivo

Figura 47: Un rbol arbitrario por usuario


Fuente: http://www.ibiblio.org/pub/linux/docs/LuCaS/Tutoriales/doc-openldap-samba-cupspython/html/imagenes/openldap-LDAP_directory_tree_traditional_naming.png

4.4.1

Caractersticas para el usuario

Almacenamiento permanente de informacin. No desaparecen aunque se apague


el computador
Conjunto de informacin estructurada de forma lgica segn criterios de
aplicacin
Nombres lgicos y estructurados

85

No estn ligados al ciclo de vida de una aplicacin particular


Abstraen los dispositivos de almacenamiento fsico
Se acceden a travs de llamadas al sistema operativo o de bibliotecas de
utilidades

4.5

ATRIBUTOS DEL ARCHIVO

Nombre: la nica informacin en formato legible por una persona


Identificacin nica del archivo y del usuario: descriptor interno del archivo,
dueo y grupo del archivo
Tipo de archivo: necesario en sistemas que proporciona distintos formatos de
archivos
Tamao del archivo: nmero de bytes en el archivo, mximo tamao posible,
etc.
Proteccin: control de accesos y de las operaciones sobre archivos
Informacin temporal: de creacin, de acceso, de modificacin, etc.
Informacin de control: archivo oculto, de sistema, normal o directorio, etc.

4.6
4.6.1

VISION FUNCIONAL DEL SISTEMA DE ARCHIVOS


Visin funcional: servicios

Servicio de nombrado
Identifica un archivo dentro de algn tipo de organizacin lgica
(por ejemplo jerrquica)
Tipo del archivo, que permite saber qu tipo de informacin
contiene
Servicios de almacenamiento
Seguridad, proteccin y cifrado. Necesario en sistemas multiusuario
Archivos compartidos por varios usuarios
Tratamiento especial segn el tipo de archivo (FIFOS, enlaces,
dispositivos)
Servicios de directorio
Organizacin lgica (por ejemplo directorios jerrquicos)
Publicidad de la informacin
4.6.2

Visin funcional: organizacin lgica

En la vida real, las carpetas (archivos) en una oficina se agrupan siguiendo


algn criterio establecido por el usuario formando grupos. A estos grupos
se les asigna un nombre distinguirlos de otros grupos y para facilitar su
localizacin
Los sistemas de archivos permiten agrupar varios archivos en directorios
Cada directorio tiene un nombre lgico asignado por el usuario
Inicialmente un archivo pertenece a un directorio, aunque sera
interesante que un mismo archivo pudiera pertenecer a la vez a varios
directorios

86

4.6.3

Visin funcional: directorios

Directorio nico u organizacin a un solo nivel:


Todos los archivos estn almacenados en un solo directorio
Es la estructura ms simple y fcil de soportar y entender
No permite clasificar la informacin de ninguna manera
Si el sistema es multiusuario pueden existir problemas para
nombrar los archivos, aunque el espacio de nombres sea muy
grande
Directorio por cada usuario u organizacin a dos niveles:
Se asigna un directorio a cada usuario o a cada tipo de archivo
Existe un directorio de directorios por encima (Directorio maestro)
Existen operaciones para actualizar el Directorio maestro
Las operaciones sobre directorios se reducen al del usuario
Existen problemas para cooperar entre usuarios
Estructura jerrquica en rbol:
Es el caso de UNIX
No hay diferencia entre el directorio raz y cualquier otro a otro
nivel
Para referirse a un archivo completo es necesario saber su nombre y
el nombre de todos los directorios, desde la raz hasta el que lo
contiene (camino absoluto), o bien desde el directorio actual
(camino relativo)
UNIX puede trabajar con cualquier jerarqua de directorios, pero
existe una estandarizada
/

bin

boot

var

etc

usr

lib

home

proc

sbin

mnt

dev

spool

X11R6

oscar

cdrom

log

dict

chan

floppy

nis

include

nacho

stick

...

lib

...

local

progs

man

mp3

sbin

docs

share
src
...

...

Figura 48: Representacin de un directorio


Fuente: http://www.softlibre.salta.org.ar/slw/HTML/suse/verzeichnisse_baum.png

4.7
o
o
o
o

OPERACIONES GENRICAS SOBRE ARCHIVOS

creat: crea un archivo con un nombre y proteccin y devuelve un descriptor


delete: borra el archivo con un nombre
open: abre un archivo con nombre para una(s) operacin(es) y devuelve un
descriptor
close: cierra un archivo abierto con un descriptor

87

o
o
o
o

read: lee datos de un archivo abierto, usando su descriptor, a un almacn en


memoria
write: escribe datos a un archivo abierto, usando su descriptor, desde un
almacn en memoria
lseek: mueve el apuntador a relativo_a+ desplazamiento
ioctl: permite manipular los atributos de un archivo

4.8

SISTEMAS DE ARCHIVOS

Los sistemas de archivos organizan los datos en los


distribuyndolos en reas fsicas que son fcilmente accesibles.

discos

duros,

Estos son los principales sistemas de archivos:


FAT
- HPFS
- Sistemas de archivos UNIX
- NTFS
4.8.1

FAT

Tabla de asignacin de archivos FAT es el sistema ms simple conocido por la


mayora de usuarios, tambin conocido por FAT16 y es el sistema de archivos
original presentado con MS-DOS en 1.980.
FAT obtiene su nombre porque almacena los detalles de archivos y directorios en
una tabla de asignacin de archivos (file allocation table FAT) al principio de cada
particin. Cada cluster tiene una entrada en la FAT que indica al sistema qu
archivos y carpetas hay almacenados.
Para los archivos que ocupan ms de un cluster, la FAT contiene toda la
informacin para poder reconstruir dicho archivo desde su cadena de cluster y
cargarlo en memoria.
Debido a la posibilidad de que un archivo pueda ocupar ms de un cluster, se
produce una rpida y gran fragmentacin del disco.
El tamao de los clusters viene determinado por el tamao de las particiones, de
ah que en discos duros de gran capacidad se desperdicia mucho espacio.
Tabla 17.
Titulo: Tamaos de Cluster en FAT16 y FAT32
Tamao de la Particin
128 MB
256 MG
512 MB
1G
2G
8 GB
16 GB
32 GB

Tamao cluster FAT16


2 KB
4 KB
8 KB
16 KB
32 KB
Not supported
Not supported
Not supported

88

Tamao de la Particin

Tamao cluster FAT32

<256 MB
260 MB a 8 GB
8 GB a 16 GB
16 GB a 32 GB
>32 GB

512 bytes
4 KB
8 KB
16 KB
32 KB

Fuente: http://www.webtaller.com/maletin/articulos/sistemas-archivos-seguridad-datos.php

En FAT el nombre de archivo est limitado a 8+3 caracteres, no fue hasta la


aparicin de Windows 95 con su sistema de archivos FAT ampliado (V-FAT) que
desapareci sta limitacin.
FAT32 es una versin mejorada que permite crear particiones superiores a 2 GB
(hasta 2 terabytes) y es ms eficiente en el almacenamiento de archivos.
Debido a que FAT32 utiliza cluster ms pequeos que FAT16, a igual tamao de
particin, FAT32 aprovecha mejor el espacio del disco duro.
4.8.2

HPFS

HPFS o sistemas de archivos de alto rendimiento se encuentran principalmente


en los ordenadores tipo OS/2 aunque su desarrollo original fue hecho por
Microsoft.
Este sistema de archivos es mucho ms seguro, estable y fiable que los FAT.
Estos acceden a los datos del disco duro a travs de un bfer de alta velocidad
(cach) y es capaz de soportar varias particiones activas al mismo tiempo.
En HPFS los nombres de archivo pueden contener hasta 25
4.8.3

SISTEMAS DE ARCHIVOS UNIX

El sistema de archivos UNIX es totalmente diferente de los que estamos viendo,


solo es posible acceder a los datos UNIX con otros sistemas de archivos UNIX o
con programas adicionales especiales (NFS-Server) o servidor de sistema de
archivos de red.
Estos sistemas no tienen limitacin en la longitud de los nombres de archivos, no
dividen el disco duro en bloques como el sistema FAT y son muy estables.
4.8.4

NTFS

El sistema de archivos NTFS ya es conocido por los usuarios de Windows NT y es


el sistema de archivos nativo de Windows XP y en l vamos a detenernos dada la
importancia e inters en nuestro nuevo sistema operativo.
Con este sistema abandonamos definitivamente las FAT ya que pese a sus
mejoras (V-FAT y FAT32) apenas si cumple los requisitos de un sistema de
archivos profesional que pueda ser utilizado en servidores.

89

Recordemos que los sistemas de archivos para sistemas operativos multiusuarios


y servidor precisan de derechos de acceso avanzados tanto para usuarios
individuales como avanzados.
Adems NTFS permite particiones de disco mayores que las FAT (4 GB), siendo
fundamental para el uso de servidores, y es compatible con los mtodos RAID (1
a 5) que aumentan la velocidad de acceso y sirven para las copias de datos
mediante los discos duros espejo.
NTFS distingue maysculas de minsculas en los nombres largos de archivos y
directorios permitiendo adems el uso de caracteres especiales como los acentos
(estndar UNICODE)
Las particiones NTFS son fcilmente recuperables ante un fallo del sistema al
contrario de lo que ocurre con las FAT y adems son menos propensas a la
fragmentacin.
La velocidad de un sistema NTFS es muy apreciable si es utilizado con
controladores SCSI de 32 bits, ya que es capaz gracias a su acceso asncrono a
los datos de desplazar los procesos de lectura y escritura a las colas de espera.

Figura 49: Arquitectura NTFS


Fuente: http://keppanet.netfirms.com/keppanet/opersyst/ntfsinfo/arctectu.gif

CMO ORGANIZA NTFS LOS DATOS


NTFS no utiliza bloques fijos como lo hace FAT (solamente un bloque lo es y ste
contiene parmetros BIOS establecidos por el hardware) el resto de archivos
pueden estar en cualquier parte del disco duro, es esto lo que determina que la
particin NTFS sea ms segura ante posibles fallos del sistema.
Fsicamente

NTFS

tambin

divide

el

disco

duro

en

clusters.

90

El tamao del cluster lo establece NTFS automticamente en funcin del tamao


de la particin aunque tambin puede ser configurado manualmente por el
usuario en el momento del formato.
En la organizacin de archivos NTFS juega un papel fundamental la tabla
principal de archivos (MTF), sta tabla contiene para cada archivo un registro
(registro MTF) que contiene a su vez los atributos de archivo y los datos sobre
qu partes del archivo se pueden encontrar en segn qu clusters del disco duro.
Existe una copia de seguridad de la MFT que en caso de error del disco duro
puede utilizarse para su reconstruccin y tanto la MTF como su copia pueden
encontrarse en cualquier lugar del disco duro ya que son tratados como lo que
son, archivos NTFS completamente normales.
El
-

tamao del registro MFT es de 2 KB y est compuesto de:


Encabezado (que contiene datos internos del sistema de archivos)
Nombre e informacin del archivo y sus atributos.
Referencia a los sectores donde se encuentran ubicadas las distintas partes
del archivo.
- Atributos de seguridad avanzados del sistema de archivos NTFS.
En NTFS los directorios son tratados como archivos al igual que en la mayora de
sistemas de archivos solo que en NTFS contienen otro atributo, por lo tanto
tambin existe un registro en la MFT del directorio que es guardado como un
ndice compuesto por el nombre de los archivos y los subdirectorios y un nmero
nico de archivos o directorios.
Si el ndice ocupa menos de 1.44 KB se sita directamente en la MFT, para
archivos de ndices mayores se guardan como si fueran archivos y directorios
grandes de modo que en el registro MFT original slo hay referencias a otros
registros MFT que son los que en realidad contienen los datos.
Es decir, para cada directorio tenemos un rbol de donde cuelgan los archivos y
directorios que contienen. A esto se le denomina rbol binario y permite que el
acceso a los datos sea mucho ms rpido, recordemos que en la FAT para buscar
un archivo primeramente debe examinar por completo la tabla y adems no
estn ordenados.

91

También podría gustarte