Está en la página 1de 81

UNIVERSIDAD NACIONAL MAYOR DE

SAN MARCOS
(Universidad del Per, Decana de Amrica)

FACULTAD DE INGENIERA DE SISTEMAS E


INFORMTICA

Introduccin a la computacin
Profesora: Mg. Gloria Castro Len

Tema: Sistemas operativos

Alumnos:
Arenas Machaca, Cristian
Calcina Aguilar, Brayan
Chalco Vila, Enrique
Chvez Aliaga, Luis

Ciudad Universitaria, junio de 2015

Sistemas Operativos

Introduccin
Uno de los principales problemas que se present en el uso de las computadoras
fue la dificultad en su uso, ya que para poder realizar una actividad en ella
requera altos conocimientos en programacin e informtica. Esta fue una de las
razones por las cuales surgieron los sistemas operativos. Aunque al principio solo
servan para ejecutar un programa despus de otro, luego sirvieron para facilitar
su uso mediante una interfaz grfica mucho ms amigable, simple y que todos
entendieran.
En este trabajo abordaremos la definicin de un sistema operativo, sus
estructuras y sus operaciones. Tambin las gestiones que realiza tanto en los
procesos, memoria y almacenamiento.

Sistemas Operativos

Contenido
Introduccin..........................................................................................................2
1. Qu es un sistema operativo?.....................................................................7
1.1.

Punto de vista del usuario................................................................7

1.2.

Punto de vista del sistema................................................................8

1.3.

Definicin de un sistema operativo...................................................8

2. Historia...........................................................................................................9
3. Estructuras de un sistema operativo...........................................................10
3.1.

Servicios de un sistema operativo..................................................11

3.2.

Kernel..............................................................................................13

3.3.

Llamadas a un sistema...................................................................14

3.3.1.

Tipos de llamadas...........................................................................15

3.4.

Programas del sistema operativo...................................................17

3.5.

Estructura de un sistema operativo................................................17

3.5.1.

Estructura simple............................................................................18

3.5.2.

Estructura por nivel.........................................................................18

3.5.3.

Microkernels....................................................................................19

3.5.4.

Mdulos..........................................................................................20

3.6.

Mquinas virtuales..........................................................................21

3.7.

Arranque del sistema......................................................................21

4. Operaciones con el sistema operativo.........................................................22


4.1.

Operacin en modo dual................................................................22

4.2.

Temporizador..................................................................................24

5. Gestin de procesos....................................................................................25
5.1.

Concepto de proceso......................................................................25

5.2.

Planificacin de procesos...............................................................26

5.2.1.

Tipos de planificacin.....................................................................26
3

Sistemas Operativos

5.3.

Comunicacin entre procesos........................................................27

5.3.1.

Tipos de comunicacin...................................................................28

5.3.2.

Comunicacin en los sistemas cliente servidor...........................29

5.4.

Hebras............................................................................................30

5.4.1.

Modelos multihebras.......................................................................31

5.4.2.

Bibliotecas de hebras.....................................................................32

5.5.

Planificacin de la CPU..................................................................33

5.5.1.

Rfagas de CPU y rfagas de E/S.................................................33

5.5.2.

Planificador de la CPU....................................................................34

5.5.3.

Criterios de planificacin.................................................................34

5.5.4.

Algoritmos de planificacin.............................................................35

5.5.5.

Sincronizacin de procesos............................................................35

5.5.6.

El problema de la seccin critica....................................................36

5.5.7.

Solucin de Peterson......................................................................37

5.6.

Semforos.......................................................................................39

5.7.

Interbloqueos..................................................................................39

5.7.1.

Condiciones necesarias..................................................................40

5.7.2.

Evitando bloqueos mutuos.............................................................41

5.7.3.

Prevencin......................................................................................41

5.7.4.

Livelock...........................................................................................42

6. Gestin de memoria.....................................................................................43
6.1.

Memoria principal...........................................................................43

6.1.1.

Fundamentos..................................................................................43

6.1.1.1. Hardware bsico.............................................................................43


6.1.1.2. Reasignacin de direcciones..........................................................45
6.1.1.3. Espacio de direcciones lgico y fsico............................................46
6.1.1.4. Carga dinmica...............................................................................47
4

Sistemas Operativos

6.1.1.5. Montaje dinmico y bibliotecas compartidas..................................47


6.1.2.

Intercambio.....................................................................................48

6.1.2.1. Asignacin de memoria contigua...................................................49


6.1.2.2. Mapeo de memoria y proteccin....................................................49
6.1.2.3. Asignacin de memoria..................................................................50
6.1.3.

Fragmentacin................................................................................51

6.1.4.

Paginacin......................................................................................52

6.1.5.

Segmentacin.................................................................................53

6.2.

Memoria Virtual...............................................................................53

6.2.1.

Hardware y estructura de control:..................................................53

6.2.2.

Paginacin......................................................................................55

6.2.3.

Segmentacin.................................................................................59

6.2.4.

Paginacin y segmentacin combinadas.......................................60

7. Gestin de archivos.....................................................................................61
7.1.

Qu es un archivo?......................................................................61

7.2.

Atributos de un archivo...................................................................61

7.3.

Operacin con los archivos............................................................61

7.4.

Tipos de archivos............................................................................62

7.5.

Estructura de archivos....................................................................63

7.6.

Introduccin de directorios..............................................................64

7.6.1.

Operaciones para directorios.........................................................64

7.7.

Tcnica de proteccin ms usual...................................................65

7.7.1.

Tipos de acceso..............................................................................65

7.7.2.

Recuperacin..................................................................................66

7.7.3.

Comprobacin de coherencia.........................................................66

7.7.4.

Copia de seguridad y restauracin.................................................67

7.8.

Gestin del disco............................................................................68


5

Sistemas Operativos

7.8.1.

Formateo del disco.........................................................................68

7.8.2.

Bloque de arranque........................................................................70

7.8.3.

Bloqueos defectuosos....................................................................71

8. Sistemas distribuidos...................................................................................74
8.1.

Caractersticas de los sistemas distribuidos..................................74

8.2.

Sistemas operativos distribuidos....................................................76

8.3.

Ventajas de los sistemas distribuidos con respecto de las PC

independientes.............................................................................................76
8.4.

Desventajas de los sistemas distribuidos.......................................77

9. Sistemas de propsito general....................................................................79

10.

9.1.

Sistemas embebidos en tiempo real..............................................79

9.2.

Sistemas multimedia.......................................................................79

9.3.

Sistemas de mano..........................................................................80

Proteccin y seguridad.............................................................................81

Bibliografa..........................................................................................................82

Sistemas Operativos

1. Qu es un sistema operativo?
Un sistema operativo es un programa que administra los recursos de hardware de
una computadora, proporciona bases para los programas de aplicacin y acta
como intermediario entre el usuario y el hardware. Algo destacable de un sistema
operativo es la gran variedad de formas en la que pueden ejecutar una tarea.
Los sistemas operativos son diseados para mltiples propsitos como:

Ser eficientes, para optimizar el uso del hardware. Ejemplo: Mainframes o

computador central.
Ser prcticos, para ejecutar todo tipo de aplicaciones y un ser fciles de

usar. Ejemplo: Una PC.


Ser prcticos y eficientes, para ser de fcil uso y optimizar el hardware.
Ejemplo: Smartphones y tablets.

Un sistema informtico est compuesto de: el hardware, el sistema operativo, los


programas de aplicacin y los usuarios. El sistema operativo controla y coordina
el uso del hardware entre los diversos programas de aplicacin por parte de los
distintos usuarios. Un sistema informtico tambin se puede ver como hardware,
software y datos. El sistema operativo ofrece el medio para hacer el uso
adecuado de los recursos durante su funcionamiento. Es como un gobierno, el
cual no realiza una funcin til por s mismo: solo proporciona el ambiente ideal
para que los otros programas realicen un trabajo til. Un sistema operativo se
puede ver desde dos puntos de vista:

1.1.

Punto de vista del usuario

Este punto de vista vara segn la interfaz que este utilice. Generalmente un
usuario que usa una PC cuenta con un monitor, un mouse, un teclado y una
unidad de sistema. Esta clase de sistema se desarrolla para que un usuario
monopolice sus recursos y su objetivo es maximice el trabajo que est
realizando y su fcil uso, prestando atencin al rendimiento y nada a la
utilizacin de recursos.
En otros casos, los usuarios utilizan estaciones de trabajo conectadas en red a
otras estaciones de trabajo o servidores. En este caso se comparten los
recursos en ambas direcciones (usuario-estacin de trabajo), por lo que el
7

Sistemas Operativos

sistema de disearse para alcanzar el compromiso entre la usabilidad


individual y la utilizacin de recursos.
En

otros

casos,

los

usuarios

estn

conectados

mainframes

microcomputadores. Entre los usuarios se hace un uso compartido de los


recursos, para lo cual se prioriza maximizar la utilizacin de recursos que
estn disponibles se usen de manera eficiente y que todo usuario disponga de
la parte que le corresponde.
En el caso de las computadoras de mano, sus sistemas son diseados
principalmente la usabilidad individual, aunque el rendimiento tambin es
importante.

1.2.

Punto de vista del sistema

Desde el punto de vista de la computadora el sistema operativo es visto como


asignador de recursos, por su ntima relacin con el hardware. El sistema
informtico tiene muchos recursos que pueden solucionar un problema,
actuando el sistema operativo como un administrador de estos recursos. Este
debe decidir como asignarlos a los programas y usuarios especficos, de modo
que la computadora pueda operar de forma eficiente y equitativa.
Es tambin vista como un programa de control, ya que gestiona la ejecucin
de los programas para evitar errores y mejorar el uso de la computadora.

1.3.

Definicin de un sistema operativo

En los anteriores prrafos hemos abordado los puntos de vista en los que se
puede analizar un sistema operativo, pero Cmo definimos un sistema
operativo? Lastimosamente no es posible hallar una definicin adecuada.
Los sistemas operativos existen porque es la solucin ms idnea para crear
un sistema informtico utilizable. El objetivo de una computadora es ejecutar
los programas del usuario y resolver sus problemas de una forma fcil. Con
este objetivo se construye el hardware de la computadora, pero el acceso
directo a este no es fcil. Con este se desarrollan los programas de aplicacin,
que requieren de ciertas operaciones como las que realizan los dispositivos
E/S. Estos a su vez requieren ser controlados, siendo ah donde interviene el
sistema operativo.
8

Sistemas Operativos

Adems, no hay una definicin universalmente aceptada de lo que integra un


sistema operativo; porque generalmente se incluye todo lo que se suministra
cuando se pide un sistema operativo, variando sus caractersticas en cada uno
de ellos.

2. Historia
El concepto de sistema operativo surge en la dcada de los 50. El primero de la
historia fue creado en 1956 para un ordenador IBM 704, y bsicamente lo nico
que haca era comenzar la ejecucin de un programa cuando el anterior
terminaba.
En los aos 60 se produce una revolucin en el campo y aparecen conceptos
como sistema multitarea, sistema multiusuario, sistema multiprocesadores y
sistema en tiempo real. Es en esta dcada cuando aparece UNIX, la base de la
gran mayora de los sistemas operativos que existen hoy en da.
En los aos 70 se produce un boom en cuestin de ordenadores personales,
acercando estos al pblico general de manera impensable hasta entonces. Esto
hace que se multiplique el desarrollo, crendose el lenguaje de programacin C
(diseado especficamente para reescribir por completo el cdigo UNIX).
Como consecuencia de este crecimiento exponencial de usuarios, la gran mayora
de ellos sin ningn conocimiento sobre lenguajes de bajo o alto nivel, hizo que en
los aos 80, la prioridad a la hora de disear un sistema operativo fuese la
facilidad de uso, surgiendo as las primeras interfaces de usuario. En los 80
nacieron sistemas como MacOS, MS-DOS, Windows.
En la dcada de los 90 hace su aparicin Linux, publicndose la primera versin
del ncleo en septiembre de 1991, que posteriormente se unira al proyecto GNU,
un sistema operativo completamente libre, similar a UNIX, al que le faltaba para
funcionar un ncleo funcional.

Sistemas Operativos

3. Estructuras de un sistema operativo


Internamente los sistemas operativos varan mucho en su composicin, ya que se
han creado a partir de senderos muy diferentes. Pero an as tienen ciertas
caractersticas en comn. Una de las ms importantes es la capacidad de
multiprogramacin.
La multiprogramacin es la capacidad de incrementar el uso de la CPU al
organizar los trabajos, de modo que la CPU siempre tengo algo que hacer. El
principio es el siguiente: Una computadora es capaz de ejecutar varios trabajos
simultneamente en la memoria. Estos trabajos forman un subconjunto de los
trabajos en cola, ya que el espacio en el primer caso suele ser menor que el
segundo. Si el sistema comienza a ejecutar un trabajo este eventualmente tendra
que esperar que se complete alguno otra tarea (por ejemplo una operacin de
E/S). Si el sistema no fuese multiprogramado, la CPU quedara inactiva durante
ese momento. En cambio la multiprogramacin evita esto al hacer que el sistema
cambie de trabajo y ejecute otro.
Cuando dicho trabajo tiene que esperar, la CPU conmuta otro trabajo, y as
sucesivamente. Cuando el primer trabajo deja de esperar, vuelve a obtener la
CPU. Mientras haya un trabajo ejecutndose, la CPU no estar inactiva.
Esto ofrece un entorno donde los recursos de la computadora se aprovechan de
una manera eficaz, aunque no proporciona la interaccin del usuario con el
sistema informtico. La multitarea (o sistema de uso compartido) es la extensin
de este principio, permitiendo que la CPU ejecute mltiples trabajos a la vez de
una manera tan rpida que el usuario puede interactuar con el programa al mismo
tiempo.
La multitarea requiere un sistema informtico proporcione comunicacin directa
entre el usuario y el sistema. El usuario ingresa instrucciones a un programa con
un dispositivo de entrada y espera los resultados en el dispositivo de salida. Este
tiempo de espera debe ser pequeo (menor de 1 s). Esto permite que varios
usuarios utilicen la computadora al mismo tiempo, por lo que el tiempo de cambio
entre usuarios debe ser mnimo.

10

Sistemas Operativos

Un sistema de uso compartido utiliza los principios de multiprogramacin y


planificacin de CPU para proporcionar una parte de la computadora a cada
usuario en un tiempo compartido. Cada usuario tiene al menos un programa en la
memoria, y al programa cargado en la memoria y en ejecucin se le llama
proceso. Este se ejecuta en un periodo de tiempo pequeo, antes de necesitar
realizar una operacin de E/S.
El

tiempo

compartido

la

multiprogramacin

requieren

mantener

simultneamente en la memoria varios trabajos. Dado que la memoria principal el


por lo general demasiado pequea, los trabajos se suelen almacenar inicialmente
en el disco, en la denominada cola de trabajos. Para ejecutar varios programas en
la memoria al mismo tiempo se requiere algn mecanismo de

gestin de

memoria. La eleccin de este se llama planificacin de CPU. Tambin se requiere


que la capacidad de afectarse entre estos se vea limitada, incluyendo lo
anteriormente mencionado.
El sistema compartido debe asegurar un tiempo de respuesta razonable, por lo
cual usa la tcnica de memoria virtual. Tambin debe proporcionar una forma de
gestionar los archivos (a travs del sistema de archivos), un mecanismo de
seguridad (para proteger los recursos frente a usos inapropiados) y mecanismos
para la comunicacin y sincronizacin de trabajos (no dando lugar a interbloqueos
que pudieran hacer que se queden en espera permanentemente).

3.1.

Servicios de un sistema operativo

El sistema presta ciertos servicios a los programas y a los usuarios de dichos


programas. Los servicios difieren en cada sistema operativo, pero se puede
identificar una serie de clases comunes. Estos servicios se proporcionan para
la comodidad del programador, con el fin de facilitar la tarea de desarrollo. Un
cierto conjunto de servicios del sistema operativo proporciona funciones que
resultan tiles al usuario:

Interfaz de usuario: Casi todos los sistemas operativos disponen de


una interfaz de usuario, que toman diferentes formas. Uno de los tipos
existentes es la interfaz de lnea de comandos, que usa comandos de
textos y algn tipo de mtodo para introducirlos. Otro tipo es la interfaz
de proceso por lotes, en la que los comandos y las directivas para
11

Sistemas Operativos

controlar dichos comandos se introduce en archivos para luego ser


ejecutados. La ms usada el interfaz grafica de usuario, en el cual se
usa un sistema de ventanas, con un dispositivo sealador (mouse) para
acceder a los distintos mens y un teclado para introducir texto. Algunos

sistemas proporcionan dos o tres de estas variantes.


Ejecucin de programas: El sistema tiene que poder cargar un
programa en memoria y ejecutar dicho programa. Todo programa de

poder terminar su ejecucin de forma normal o anormal.


Operaciones de E/S: Un programa en ejecucin puede llevar a cabo
operaciones de E/S, dirigidas a un archivo o a un dispositivo de entrada
y salida. Por razones de seguridad, el usuario no debe ser capaz de
controlar directamente un dispositivo de E/S, por lo que el sistema de

proporcionar el medio adecuado.


Manipulacin del sistema de archivos: Los programas necesitan leer
y escribir archivos y directorios, tambin crearlos y borrarlos usando su
nombre, realizar bsquedas en un determinado archivo o presentar
informacin contenida en ese archivo. Deben contar tambin con una

proteccin de archivos, que no permita el acceso a usuarios ajenos.


Comunicaciones: Cuando un proceso necesita intercambiar
informacion con otro proceso. Dicha comunicacin debe tener lugar
entre los procesos que se ejecuten en la misma computadoras o
computadoras

diferentes

conectadas

en

una

red.

Se

pueden

implementar utilizando la memoria compartida o mediante paso de


mensajes, en el que el sistema transmite paquetes de informacion a

otros procesos.
Deteccin de errores: El sistema necesita detectar los posibles errores
(en hardware, dispositivos de E/S o programas de usuario). Para cada
tipo de error, el sistema operativo debe llevar a cabo la accin
apropiada para asegurar un funcionamiento correcto y coherente.

Hay disponibles otras funciones que no son pensadas para el usuario, pero
que le ayudan a garantizar la eficiencia del sistema como.

Asignacin de recursos: Se da cuando hay varios usuarios o varios


trabajos ejecutndose al mismo tiempo, a los cuales se les debe
asignar los recursos adecuados. El sistema gestiona muchos tipos de
12

Sistemas Operativos

recursos; algunos pueden disponer de cdigo software especial que


gestione su asignacin (como ciclos de la CPU, memoria principal, etc)
y otros que pueden tener un cdigo que lo gestione de una manera ms

general su solicitud y liberacin (como los dispositivos de E/S).


Responsabilidad: Normalmente conviene hacer un seguimiento de que
usuarios emplean que clase de recursos y en qu cantidad. Pueden
hacerse por fines contables o para almacenar estadsticas.

Proteccin y seguridad: Un sistema requiere contralar que usuarios


acceden al informacion que se maneja. Este tema se abordar con ms
precisin en las siguientes pginas.

3.2.

Kernel

El kernel o ncleo es un software que constituye una parte fundamental del


sistema operativo, y se define como la parte que se ejecuta en modo
privilegiado (conocido tambin como modo ncleo). Es el principal responsable
de facilitar a los distintos programas acceso seguro al hardware de la
computadora o en forma bsica, es el encargado de gestionar recursos, a
travs de servicios de llamada al sistema.
Como hay muchos programas y el acceso al hardware es limitado, tambin se
encarga de decidir qu programa podr hacer uso de un dispositivo de
hardware y durante cunto tiempo, lo que se conoce como multiplexado.
Acceder al hardware directamente puede ser realmente complejo, por lo que
los ncleos suelen implementar una serie de abstracciones del hardware. Esto
permite esconder la complejidad, y proporciona una interfaz limpia y uniforme
al hardware subyacente, lo que facilita su uso al programador.
Hay cuatro tipos:
Monoltico: Donde el sistema operativo (en su totalidad) trabaja en espacio
del ncleo, estando l solo en modo supervisor. Su diferencia con otros
ncleos radica en que solo define una interfaz virtual de alto nivel sobre el
hardware del ordenador.
Microncleo: Provee un conjunto de primitivas o llamadas mnimas al sistema
para

implementar

servicios

bsicos
13

como

espacios

de

direcciones,

Sistemas Operativos

comunicacin entre procesos y planificacin bsica. Todos los otros servicios


que en general son provistos por el ncleo, se ejecutan como procesos
servidores en espacio de usuario. Las principales ventajas de su utilizacin
son la reduccin de la complejidad, la descentralizacin de los fallos y la
facilidad para crear y depurar controladores de dispositivos.
Hibrido: Son microncleos modificados que tienen algo de cdigo no esencial
en espacio de ncleo para que ste se ejecute ms rpido de lo que lo hara si
estuviera en espacio de usuario. La mayora de sistemas operativos modernos
pertenecen a esta categora, siendo los ms populares Microsoft Windows,
XNU y Mac OS X.
Exoncleo: Son extremadamente pequeos y se llaman as porque toda la
funcionalidad deja de estar residente en memoria y pasa a estar fuera, en
bibliotecas dinmicas. Su finalidad es permitir a una aplicacin que solicite una
regin especfica de la memoria, un bloque de disco concreto, etc., y
simplemente asegurarse que los recursos pedidos estn disponibles, y que el
programa tiene derecho a acceder a ellos.

3.3.

Llamadas a un sistema

Las llamadas al sistema proporcionan una interfaz con la que se puede invocar
a servicios que el sistema operativo ofrece. Estas llamadas, generalmente,
estn disponibles como rutinas escritas en C y C++, aunque determinadas
tareas de bajo nivel pueden necesitar escribirse en lenguaje ensamblador.
Un programador utiliza una interfaz programacin de aplicaciones o API. La
API especifica un conjunto de funciones que el programador de aplicaciones
puede usar, indicndose los parmetros que hay que pasar a cada funcin y
los valores de retorno que el programador debe esperar.
El sistema de soporte de tiempo de ejecucin de la mayora de lenguajes de
programacin proporciona una interfaz de las llamadas al sistema que sirve
como enlace con las llamadas al sistema disponibles en el sistema operativo.
La interfaz de llamadas del sistema intercepta las llamadas a funcin dentro de
las API e invoca la llamada del sistema necesaria. Cada llamada al sistema
tiene asociado un nmero y la interfaz de llamadas al sistema mantiene una
14

Sistemas Operativos

tabla indexada segn dichos nmeros. Con esta tabla invoca la llamada
necesaria del kernel del sistema operativo y devuelve el estado de la ejecucin
de la llamada al sistema y a los posibles valores de retorno.
Generalmente los programadores no necesitan saber cmo se implementa el
llamado, ya que la API elimina esa necesidad. Las llamadas al sistema se
llevan a cabo de forma distinta en la computadora que se utilice. La
informacion necesaria y el tipo exacto varan segn el sistema operativo. Esta
es una de las razones por la cuales los programas diseados para un sistema
en particular no funciona en otro.
Para pasar de parmetros se emplean tres mtodos generales:

En una serie de registros


En un bloque o tabla

Insertndolos en la pila

3.3.1.

Tipos de llamadas

a. Control de procesos
Un programa en ejecucin necesita poder interrumpir dicha ejecucin bien
de la forma normal (end) o bien de la forma anormal (abort). Si se hace
una llamada al sistema para terminar de forma anormal el programa en
ejecucin, o si el programa tiene un problema y da lugar a una excepcin
del error, en ocasiones se produce el volcado de memoria y manda un
mensaje de error (que se escribe en la memoria y en el depurador). Esto
sirve para poder examinar el error ms tarde.
En cualquier caso, el sistema debe trasferir control al intrprete de
comandos que realiz la invocacin del programa; el interprete leer
entonces el comando. Algunos sistemas utilizan tarjetas de control para
indicar acciones especiales de recuperacin en caso de que se produzcan
errores. Una tarjeta de control es un comando que permite gestionar la
ejecucin de un proceso. Ante un error puede definir un nivel de error y de
acuerdo a ello definir el parmetro de accin.
Un proceso o trabajo ejecuta un programa puede querer cargar y ejecutar
otro

programa. Esto permite ejecutar un programa cuando se solicite


15

Sistemas Operativos

mediante una accin, que depende del tipo de sistema. Si se vuelve al


programan anterior cuando el programa en ejecucin termina, se debe
crear una imagen para poder acceder a l. Si dos programas se ejecutan
juntos se hace uso de la multiprogramacin.
b. Administrador de archivos
Lo que se requiere es poder eliminar (delate) y crear (create) archivos.
En ambas se requiere proporcionar el nombre del archivo y quiz algunos
atributos del mismo. Una

vez creado el archivo se debe poder abrirlo

(open) y utilizarlo, as como tambin, leerlo ( read), escribir (write) sobre


l o reposicionarlos (reposition) y luego poder cerrarlos (close).
c. Administrador de dispositivos
Se pueden ver a cada recurso como un dispositivo y lo que hace asignar
los recursos que demanda un proceso para ejecutarse o esperar a que
haya recursos disponibles para su ejecucin. La interfaz de usuario puede
hacer que los archivos y dispositivos sean iguales aunque las llamadas del
sistema subyacente no lo sean.
d. Mantenimiento de informacin
Muchas de las llamadas al sistema existen simplemente para transferir
informacion entre el programa de usuario y el sistema operativo. Otras
llamadas pueden devolver informacin sobre el sistema y para acceder a la
informacion de sus procesos.
e. Comunicaciones
Existen dos modelos de comunicacin interprocesos:

De paso de mensajes, en la que los procesos que se comunican


intercambian mensajes entre s para transferirse informacion.

De memoria compartida, en la que los procesos utilizan la llamada

shared memory create y share memory attach para


obtener acceso a regiones de la memoria que son propiedad de
otros procesos

3.4.

Programas del sistema operativo

Los programas del sistema proporcionan un cmodo entorno para desarrollar y


ejecutar programas. Algunos de ellos son simplemente interfaces de usuario
16

Sistemas Operativos

para llamadas al sistema; otros son considerablemente ms complejos.


Pueden dividirse en:

Administracin de archivos: Estos programas crean, borran, copian,

cambian de nombre, etc. En general manipulan archivos y directorios.


Informacion de estado: Son estos programas los formatean los datos
de salida y los envan al terminar o a otros dispositivos o en otros

dispositivos de almacenamiento.
Modificador de archivos: Pueden disponerse de varios editores de
texto para crear y modificar el contenido de los archivos almacenados

en el disco o en los dispositivos de almacenamiento.


Soporte de lenguajes de programacin: con frecuencia, con el
sistema

operativo

se

proporcionan

al

usuario

compiladores,

ensambladores, depuradores e intrpretes para los lenguajes de

programacin habituales como C, C++, Java, Visual Basic, etc.


Carga y ejecucin de programas: Una vez que los programas se han
ensamblado o compilado, debe cargarse en la memoria para poder

ejecutarlas.
Comunicaciones: Estos programas proporcionan los mecanismos para
crear conexiones virtuales entre los procesos, usuarios y computadoras.

3.5.

Estructura de un sistema operativo

Un sistema operativo moderno debe hacerse cuidadosamente para que el


sistema funcione apropiadamente y pueda modificarse con facilidad. Un
mtodo habitual consiste en dividir la tarea en componentes ms pequeos,
en lugar de tener un sistema monoltico. Cada uno de estos mdulos debe ser
una parte bien definida, con entradas, salidas y funciones cuidadosamente
especificadas. En la primera parte abordamos las partes ms comunes de los
sistemas operativos. En esta parte, veremos cmo los componentes se
interconectan y funden con el kernel.

3.5.1.

Estructura simple

Muchos sistemas comerciales no tenan una estructura bien definida.


Frecuentemente, estos sistemas comienzan siendo sistemas pequeos,
simples y limitados; para luego crecer ms all de sus mbito original,
como es el caso de MS-DOS. Este fue escrito para proporcionar la mxima
17

Sistemas Operativos

funcionalidad en el menor espacio posible, por no ser dividido en mdulos


de forma cuidadosa. Esto tambin hace que el sistema sea vulnerable a
programas errneos (o maliciosos), lo que hace que el sistema falle cuando
los programas de usuario fallan.
Tambin hay problemas cuando se estructuraban alrededor de un kernel
monoltico (como es el caso de Unix), en el cual este proporcionaba el
sistema de archivos, los mecanismos de planificacin de la CPU, la
funcionalidad de gestin de la memoria y otras funciones del sistema
operativo a travs de las llamadas de sistema. Todo esto inclua una
enorme funcionalidad en un solo nivel, lo cual lo haca difcil de
implementar y mantener.

3.5.2.

Estructura por nivel

Con el soporte de hardware apropiado, los sistemas operativos pueden


dividirse en partes ms pequeas y ms adecuadas que lo se permita
inicialmente. Con ello, puede mantener un control mucho mayor sobre la
computadora y sobre las aplicaciones que hacen uso de dicha
computadora. Los implementadores tienen ms libertad para cambiar el
funcionamiento interno del sistema y crear sistemas operativos modulares.
La ocultacin de los detalles a ojos de los niveles superiores tambin es
importante, dado que deja libres a los programadores para implementar las
rutinas de bajo nivel como prefieran, siempre que la interfaz externa de la
rutina pertenezca invariable y la propia rutina realice la tarea anunciada.
Un sistema puede hacerse modular de muchas formas. Un posible mtodo
es mediante una estructura por niveles, en la que un sistema operativo se
divide en una serie de capas (niveles). Un nivel de un sistema operativo es
una implementacin de un objeto formado por una serie de datos y por las
operaciones que permitan manipular esos datos. Un nivel tpico de un
sistema consta de una estructura de datos y un conjunto de rutinas que los
niveles superiores pueden invocar. A su vez un nivel puede invocar a un
nivel inferior.
La principal ventaja de este mtodo es la simplicidad de construccin y
depuracin. Los niveles se seleccionan de modo que cada uno usa
18

Sistemas Operativos

funciones y servicios de niveles inferiores. El primer nivel puede depurarse


sin afectar al resto del sistema, dado que solo usa hardware bsico para
implementar funciones. Una vez el primer nivel se ha depurado, puede
suponerse su correcto

funcionamiento mientras se depura el segundo

nivel, etc. Si se encuentra un error durante la depuracin, el error tendr


que estar localizado en dicho nivel. Un nivel inferior no necesita saber
cmo se implementan las operaciones, solo necesita saber que hacen esas
operaciones.
La principal dificultad es definir apropiadamente los diferentes niveles, dado
que un nivel solo puede invocar a niveles inferiores. El ltimo problema es
que esta implementacin suele ser menos eficientes en su implementacin.
Por ello los diseos ms recientes utilizan menos niveles.

3.5.3.

Microkernels

Se da con los el desarrollo de sistema operativo Mach que modularizaba el


kernel usando lo que se denomina microkernel. En un microkernel se
eliminan

todos

los

componentes

no

esenciales

del

kernel

implementndolos como programas de sistema teniendo como resultado un


kernel ms pequeo.
Su principal funcin es proporcionar un mecanismo de comunicaciones
entre el programa clientes y los distintos servicios que se ejecutan tambin
en el espacio de usuario, mediante el paso de mensajes. El programa
cliente y el servicio nunca interacta directamente, sino que lo hacen
indirectamente intercambiando mensajes con el microkernel.
Otra ventaja es la facilidad para ampliar el sistema operativo. Todos los
servicios nuevos se aaden al espacio de usuario y no requieren que el
kernel sea modificado. Tambin da mayor seguridad y fiabilidad, dado que
la mayor parte de los servicios se ejecutan como procesos de usuario. Si
un servicio falla, las dems partes del sistema no se ven afectadas. La
desventaja es que suelen tener un rendimiento inferior por la carga de
procesamiento adicional impuesta por las funciones del sistema.

19

Sistemas Operativos

3.5.4.

Mdulos

Es quiz la mejor metodologa para disear sistemas operativos en la que


se usa las tcnicas de programacin orientada a objetos para crear un
kernel modular. En este caso, el kernel dispone de un conjunto de
componentes fundamentales y enlaza dinmicamente los servicios
adicionales, bien durante el arranque o en el tiempo de ejecucin. Para
ello utiliza mdulos se cargan dinmicamente y resulta habitual en las
implementaciones modernas de UNIX, como Solaris, Linux y Mac OS X.
El resultado global es similar al sisma de niveles, con la diferencia que un
modulo puede llamar a cualquier otro modulo. Tambin es similar al uso de
microkernels, es ms eficiente porque los mdulos no requieren un
mecanismo de comunicacin. En la siguiente imagen se observa la
estructura de Solaris.
Controladores
de bus y los
dispositivos

Formatos
ejecutables

Kernel de
Solaris

Mdulos
STREAMS
Llamadas
al
sistema
cargables

3.6.

Modulos
miscelneos

Clases de
planificacio
n

Sistema
de
archivos

Figura 1 Mdulos cargables de Solaris

Mquinas virtuales
Esta estructura por niveles se plasma con el concepto de mquina virtual. La
idea fundamental es la de abstraer el hardware de la computadora, formando
varios entornos de ejecucin diferentes, creando as la ilusin de que cada
entorno de ejecucin est operando en su propia computadora privada. Con
tcnicas de planificacin de la CPU y las tcnicas de memoria virtual, un
sistema operativo puede crear la ilusin de que un proceso tiene su propio

20

Sistemas Operativos

procesador con su propia memoria (virtual). El mtodo de maquina virtual


proporciona una interfaz que es idntica al bsico hardware subyacente.
Una de las principales dificultades que presenta este mtodo son los sistema
son los sistemas de disco, ya que si existieran tres unidades de disco y diez
maquinas virtuales no se les puede asignar a cada mquina una unidad de
disco. Su solucin seria proporcionar discos virtuales, llamados minidiscos.

3.7.

Arranque del sistema

Es el proceso de inicializacin de la computadora mediante la carga del kernel


al momento de encenderse. En la mayora de sistemas informticos tiene una
pequea parte de cdigo conocida como programa de arranque o cargador de
arranque, que ese encarga de localizar el kernel, lo

carga a la memoria

principal e inicia la ejecucin. Algunos sistemas extraen del disco de programa


un programa ms complejo que se encarga de cargar el kernel.
El programa de arranque puede realizar diversas tareas. Normalmente, una de
ellas consiste en ejecutar una serie diagnsticos para determinar el estado de
la maquina, que continua con la ejecucin si no encuentra un error.
Una vez que se ha cargado el programa de arranque completo, puede explorar
el sistema de archivos para localizar el kernel, crgalo en la memoria e iniciar
su ejecucin. Solo en esta situacin se dice que le sistema est en ejecucin.

4. Operaciones con el sistema operativo


Los sistemas modernos estn controlados a travs de interrupciones (que avisa
cuando un dispositivo de E/S ha terminado). Si no hay ningn proceso para
ejecutar, ningn dispositivo de E/S al que dar un servicio y ningn usuario al que
responder, un sistema operativo de permanecer inactivo, esperando que algo
ocurra.

Los sucesos generalmente se indican con las interrupciones y las

excepciones. Una excepcin es una interrupcin generada por el software, debido


21

Sistemas Operativos

a un error. Las interrupciones son claves para la estructura de un sistema


operativo, ya que est controlado por estas. Para cada tipo de interrupcin hay
distintos segmentos de cdigo que determinan que accin se va a tomar ante
estas y se usar un rutina de servicio para tratarlas.
Dado un sistema operativo un grupo de usuarios que comparten recursos de
hardware y software, necesitamos asegurarnos que un error se produzca en un
programa de usuario solo genere problemas en el programa que se est
ejecutando. Un sistema operativo diseado apropiadamente debe asegurar que
un programa incorrecto no pueda dar lugar a que otros programas se ejecuten
incorrectamente.

4.1.

Operacin en modo dual

Para asegurarse de la correcta ejecucin del sistema operativo, tenemos que


distinguir entre el cdigo del sistema y el cdigo definido por el usuario. Para
esto, los sistemas informticos proporcionan soporte al hardware que nos
permita diferenciar entre varios modos de ejecucin.
Como mnimo necesitamos dos modos de ejecucin: el modo usuario y el
modo kernel (tambin llamado modo supervisor o privilegiado), a los cuales se
les asigna un bit de modo para indicar el modo actual: kernel (0) y usuario (1).
Cuando un sistema est ejecutando una aplicacin del usuario, el sistema se
encuentra en modo usuario. Pero, cuando una aplicacin de usuario solicita un
servicio al sistema operativo, debe pasar por el modo kernel para satisfacer
esa necesidad.
Cuando arranca el sistema lo hace en modo kernel, luego se cargan y se
inician las aplicaciones del usuario en el modo usuario. Cuan se produce
excepcin o interrupcin, el hardware conmuta del modo usuario al modo
kernel.

En

consecuencia,

cuando

el

sistema

operativo

controla

la

computadora, estar en modo kernel; y cambia a modo usuario (anteponiendo

Control de
sistema operativo
(modo kernel)

Control de
usuario (modo
usuario)

Se devuelve el
control al sistema
(interrupcin)

el bit de modo 1) antes de pasar el control al modo usuario.


22

Sistemas Operativos

El modo dual nos permite proteger el sistema operativo de los usuarios que
puedan causar errores, y tambin proteger a los usuarios de errores de otros
usuarios. Esto se logra designando algunas instrucciones que puedan causar
dao como instrucciones privilegiadas, evitando as que se ejecuten en el
Figura 2 Ciclo de ejecucin.

espacio usuario y que el sistema tome el control.


Las llamadas son el mtodo que utiliza un proceso para que el sistema
operativo intervenga. Generalmente toman la forma de excepciones, que
pueden ser ejecutadas por la instruccin genrica trap o syscall.
Al ejecutarse una llamada de sistema, el hardware la trata como una
interrupcin software. El control pasa a travs del vector de interrupcin a una
rutina de servicio del sistema operativo, y el bit de modo se establece en el
modo kernel. La rutina de llamada de servicio es una parte del sistema
operativo. El kernel examina la instruccin que interrumpe para determinar qu
llamado se ha producido; un parmetro indica que tipo de servicio est
requiriendo el programa. Puede pasarse informacion adicional necesaria para
la solicitud mediante registros, la pila o la memoria. El kernel verifica que los
parmetros sean correctos y legales, ejecuta la solicitud y devuelve el control a
la instruccin siguiente a la llamada. La falta de un modo dual puede ocasionar
varios errores al ejecutar un programa. Muchos de los sistemas operativos
actuales aprovechan esta capacidad para ofrecer una mayor proteccin al
sistema operativo. Cuando se produce un error de programa, el sistema debe
terminar el programa anormalmente con el mismo cdigo software que cuando
el usuario se pide la terminacin anmala. El sistema proporciona el mensaje
de error adecuado y se puede volcar a la memoria del programa. Este se
escribe en archivo con el fin que sea corregido o reiniciado.
Proceso de usuario
Ejecucin proceso de usuario

KernelExcepcin

Modo
usuario
Retorno de la llamada al
sistema

Llamadas al sistema

Bit de modo = 0 Retorno

Bit de modo = 1
Modo kernel

Ejecutar llamada al sistema

23
Figura 4 Transicin del modo usuario al modo kernel

Bit de modo = 1

Bit de modo = 0

Sistemas Operativos

4.2.

Temporizador

Debemos asegurar que el sistema operativo mantenga el control de la CPU


con el fin de impedir que un programa, por ejemplo, entre en un bucle infinito.
El temporizador se fija para que la computadora se interrumpa en un tiempo
dado. Puede ser fijo o variable. Por lo general se utiliza el ltimo mediante un
reloj de frecuencia fija y un contador. El sistema operativo configura el
contador. Cuando el reloj avanza, el contador se decrementa.
Antes de devolver el control al usuario, el sistema operativo se asegura de que
el temporizador este configurado para realizar interrupciones. Cuando este
interrumpe, el control se control pasa directamente al sistema operativo, que
puede interpretarlo como un error fatal o pueden conceder ms tiempo al
programa. Estas instrucciones que modifican el contenido del temporizador
son instrucciones privilegiadas.
Por lo tanto, podemos utilizarlo para impedir que un programa de usuario se
ejecute por un tiempo excesivo. Una tcnica consiste en inicializar un contador
con la cantidad de tiempo que est permitido que se ejecute una aplicacin.
Cada vez que se interrumpe, el contador resta una unidad. Si el valor del
contador pasa a ser positivo, el control se devuelve el programa de usuario; y
si el valor es negativo, el sistema termina el programa.

5. Gestin de procesos
5.1.

Concepto de proceso

Una pregunta que surge cuando se estudian los sistemas operativos es como
llamar a las diversas actividades de la CPU. Los sistemas de procesamiento
por lotes ejecutan trabajos, mientras que un sistema de tiempo compartido
tiene programas de usuario o tareas. Incluso en un sistema monousuario,
como Microsoft Windows, el usuario puede ejecutar varios programas al
mismo tiempo: un procesador de textos, un explorador web y un programa de
correo electrnico. Incluso aunque el usuario pueda ejecutar solo un programa
cada vez, el sistema operativo puede tener que dar soporte a sus propias
actividades internas programadas, como los mecanismos de gestin de la
24

Sistemas Operativos

memoria. En muchos aspectos, todas estas actividades son similares, por lo


que a todas ellas la denominamos procesos.
En este texto, los trminos trabajo y proceso se usan indistintamente,
informalmente como hemos indicado antes, un proceso es un programa en
ejecucin. Hay que resaltar que un proceso es algo ms que el cdigo de un
programa (al que en ocasiones se denomina seccin de texto). Adems del
cdigo, un proceso incluye tambin la actividad actual, que queda
representada por el valor del contador de programa y por los contenidos de los
registros del procesador. Generalmente, un proceso incluye tambin la pila del
proceso, que contiene datos temporales, y una seccin de datos, que contiene
las variables globales. El proceso puede incluir, asimismo, un cumulo de
memoria, que es la memoria que se asigna dinmicamente al proceso en
tiempo de ejecucin.
Un proceso es simplemente, un programa en ejecucin que necesita recursos
para realizar su tarea: tiempo de CPU, memoria, archivos y dispositivos de
E/S. El SO es el responsable de:

Crear y destruir procesos


Parar y reanudar procesos
Ofrecer mecanismos para que los procesos puedan comunicarse y se
sincronicen

La gestin de procesos podra ser similar al trabajo de oficina. Se puede tener


una lista de tareas a realizar y a estas fijarles prioridades alta, media, baja por
ejemplo. Debemos comenzar haciendo las tareas de prioridad alta primero y
cuando se terminen seguir con las de prioridad media y despus las de baja.
Una vez realizada la tarea se tacha. Esto puede traer un problema que las
tareas de baja prioridad pueden que nunca lleguen a ejecutarse y
permanezcan en la lista para siempre. Para solucionar esto, se puede asignar
alta prioridad a las tareas ms antiguas.

5.2.

Planificacin de procesos

El objetivo de la multiprogramacin es tener en ejecucin varios procesos al


mismo tiempo a fin de maximizar la utilizacin de la CPU. El objetivo de los
sistemas de tiempo compartido es conmutar la CPU entre los distintos
25

Sistemas Operativos

procesos con tanta frecuencia que los usuarios puedan interactuar con cada
programa mientras este se ejecuta. Para conseguir estos objetivos, el
planificador de procesos selecciona un proceso disponible para ejecutar el
programa en la CPU. En los sistemas de un solo procesador, nunca habr ms
de un proceso en ejecucin: si hay ms procesos tendrn que esperar hasta
que la CPU este libre y se pueda asignar a otro proceso.

5.2.1.

Tipos de planificacin

La planificacin de procesos se refiere a cmo determina el sistema


operativo al orden en que ir cediendo el uso del procesador a los procesos
que lo vayan solicitando, y a las polticas que emplear para que el uso que
den a dicho tiempo no sea excesivo respecto al uso esperado del sistema.
Podemos hablar de tres tipos principales de planificacin:

A largo plazo: Decide qu procesos sern los siguientes en ser


iniciados. Este tipo de planificacin era el ms frecuente en los sistemas
de lotes y multiprogramado en lotes; las decisiones eran tomadas
principalmente considerando los requisitos pre-declarados de los
procesos y los que el sistema tena libres al terminar algn otro proceso.
La planificacin a largo plazo puede llevarse a cabo con periodicidad de
una vez cada varios segundos, minutos e inclusive horas. En los
sistemas de uso interactivo, casi la totalidad de los que se usan hoy en
da, este tipo de planificacin no se efecta, dado que es tpicamente el

usuario quien indica expresamente qu procesos iniciar.


A mediano plazo: Decide cules procesos es conveniente bloquear en
determinado momento, sea por escasez/saturacin de algn recurso
(como la memoria primaria) o porque estn realizando alguna solicitud
que no puede satisfacerse momentneamente; se encarga de tomar
decisiones respecto a los procesos conforme entran y salen del estado
de bloqueado (esto es, tpicamente, estn a la espera de algn evento
externo o de la finalizacin de transferencia de datos con algn
dispositivo). En algunos textos, al planificador a mediano plazo se le

llama agendador.
A corto plazo: Decide cmo compartir momento a momento al equipo
entre todos los procesos que requieren de sus recursos, especialmente
26

Sistemas Operativos

el procesador. La planificacin a corto plazo se lleva a cabo decenas de


veces por segundo (razn por la cual debe ser cdigo muy simple,
eficiente y rpido); es el encargado de planificar los procesos que estn
listos para ejecucin. En algunos textos, al planificador a corto plazo se
le llama despachador.

5.3.

Comunicacin entre procesos

La comunicacin entre procesos es una funcin bsica de los sistemas


operativos. Los procesos pueden comunicarse entre s a travs de compartir
espacios de memoria, ya sean variables compartidas o buffers, o a travs de
las herramientas provistas por las rutinas de IPC. La IPC provee un
mecanismo que permite a los procesos comunicarse y sincronizarse entre s,
normalmente a travs de un sistema de bajo nivel de paso de mensajes que
ofrece la red subyacente.
La comunicacin se establece siguiendo una serie de reglas. Los protocolos
desarrollados para internet son los mayormente usados: IP (capa de red),
protocolo de control de transmisin (capa de transporte) y protocolo de
transferencia de archivos, protocolo de transferencia de hipertexto (capa de
aplicacin).
Los procesos pueden estar ejecutndose en una o ms computadoras
conectadas a una red. Las tcnicas de IPC estn divididas dentro de mtodos
para: paso de mensajes, sincronizacin, memoria compartida y llamadas de
procedimientos remotos (RPC). El mtodo de IPC usado puede variar
dependiendo del ancho de banda y latencia (el tiempo desde el pedido de
informacin y el comienzo del envo de la misma) de la comunicacin entre
procesos, y del tipo de datos que estn siendo comunicados.

5.3.1.

Tipos de comunicacin

Sncrona: Quien enva permanece bloqueado esperando a que llegue

una respuesta del receptor antes de realizar cualquier otro ejercicio.


Asncrona: Quien enva contina con su ejecucin inmediatamente
despus de enviar el mensaje al receptor.

27

Sistemas Operativos

Persistente: El receptor no tiene que estar operativo al mismo tiempo


que se realiza la comunicacin, el mensaje se almacena tanto tiempo

como sea necesario para poder ser entregado (Ej.: e-Mail).


Momentnea (transient): El mensaje se descarta si el receptor no est
operativo al tiempo que se realiza la comunicacin. Por lo tanto no ser

entregado.
Directa: Las primitivas enviar y recibir explicitan el nombre del proceso
con el que se comunican. Ejemplo: enviar (mensaje, A) enva un
mensaje al proceso A. Es decir se debe especificar cul va a ser el

proceso fuente y cul va a ser el proceso


Destino: Las operaciones bsicas Send y Receive se definen de la
siguiente manera: Send (P, mensaje); enva un mensaje al proceso P (P
es el proceso destino). Receive (Q, mensaje); espera la recepcin de un
mensaje por parte del proceso Q (Q es el proceso fuente).
Nota: Receive puede esperar de un proceso cualquiera, un mensaje,
pero el Send s debe especificar a quin va dirigido y cul es el

mensaje.
Indirecta: Es aquella donde la comunicacin est basada en una
herramienta o instrumento ya que el emisor y el receptor estn a

distancia.
Simtrica: Todos los procesos pueden enviar o recibir. Tambin llamada

bidireccional para el caso de dos procesos.


Asimtrica: Un proceso puede enviar, los dems procesos solo
reciben. Tambin llamada unidireccional. Suele usarse para hospedar

servidores en Internet.
Uso de buffers automtico: El transmisor se bloquea hasta que el
receptor recibe el mensaje (capacidad cero).

5.3.2.

Comunicacin en los sistemas cliente

servidor
La arquitectura cliente-servidor es un modelo de aplicacin distribuida en el
que las tareas se reparten entre los proveedores de recursos o servicios,
llamados servidores, y los demandantes, llamados clientes. Un cliente
realiza peticiones a otro programa, el servidor, quien le da respuesta. Esta
idea tambin se puede aplicar a programas que se ejecutan sobre una sola

28

Sistemas Operativos

computadora, aunque es ms ventajosa en un sistema operativo


multiusuario distribuido a travs de una red de computadoras.
Algunos ejemplos de aplicaciones computacionales que usen el modelo
cliente-servidor son el Correo electrnico, un Servidor de impresin y la
World Wide Web.
En esta arquitectura la capacidad de proceso est repartida entre los
clientes y los servidores, aunque son ms importantes las ventajas de tipo
organizativo debidas a la centralizacin de la gestin de la informacin y la
separacin de responsabilidades, lo que facilita y clarifica el diseo del
sistema.
La separacin entre cliente y servidor es una separacin de tipo lgico,
donde el servidor no se ejecuta necesariamente sobre una sola mquina ni
es necesariamente un slo programa. Los tipos especficos de servidores
incluyen los servidores web, los servidores de archivo, los servidores del
correo, etc. Mientras que sus propsitos varan de unos servicios a otros, la
arquitectura bsica seguir siendo la misma.
Una disposicin muy comn son los sistemas multicapa en los que el
servidor se descompone en diferentes programas que pueden ser
ejecutados por diferentes computadoras aumentando as el grado de
distribucin del sistema.
La red cliente-servidor es una red de comunicaciones en la cual los clientes
estn conectados a un servidor, en el que se centralizan los diversos
recursos y aplicaciones con que se cuenta; y que los pone a disposicin de
los clientes cada vez que estos son solicitados. Esto significa que todas las
gestiones que se realizan se concentran en el servidor, de manera que en
l se disponen los requerimientos provenientes de los clientes que tienen
prioridad, los archivos que son de uso pblico y los que son de uso
restringido, los archivos que son de slo lectura y los que, por el contrario,
pueden ser modificados, etc. Este tipo de red puede utilizarse
conjuntamente en caso de que se est utilizando en una red mixta.

29

Sistemas Operativos

5.4.

Hebras

En sistemas operativos, un hilo de ejecucin, hebra o subproceso es la unidad


de procesamiento ms pequea que puede ser planificada por un sistema
operativo.
La creacin de un nuevo hilo es una caracterstica que permite a una
aplicacin realizar varias tareas a la vez (concurrentemente). Los distintos
hilos de ejecucin comparten una serie de recursos tales como el espacio de
memoria, los archivos abiertos, situacin de autenticacin, etc. Esta tcnica
permite simplificar el diseo de una aplicacin que debe llevar a cabo distintas
funciones simultneamente.
Un hilo es simplemente una tarea que puede ser ejecutada al mismo tiempo
con otra tarea.
Los hilos de ejecucin que comparten los mismos recursos, sumados a estos
recursos, son en conjunto conocidos como un proceso. El hecho de que los
hilos de ejecucin de un mismo proceso compartan los recursos hace que
cualquiera de estos hilos pueda modificar stos. Cuando un hilo modifica un
dato en la memoria, los otros hilos acceden a ese dato modificado
inmediatamente.
Lo que es propio de cada hilo es el contador de programa, la pila de ejecucin
y el estado de la CPU (incluyendo el valor de los registros).
El proceso sigue en ejecucin mientras al menos uno de sus hilos de
ejecucin siga activo. Cuando el proceso finaliza, todos sus hilos de ejecucin
tambin han terminado. Asimismo en el momento en el que todos los hilos de
ejecucin finalizan, el proceso no existe ms y todos sus recursos son
liberados.
Algunos lenguajes de programacin tienen caractersticas de diseo
expresamente creadas para permitir a los programadores lidiar con hilos de
ejecucin (como Java o Delphi). Otros (la mayora) desconocen la existencia
de hilos de ejecucin y stos deben ser creados mediante llamadas de
biblioteca especiales que dependen del sistema operativo en el que estos
lenguajes estn siendo utilizados (como es el caso del C y del C++).
30

Sistemas Operativos

Un ejemplo de la utilizacin de hilos es tener un hilo atento a la interfaz grfica


(iconos, botones, ventanas), mientras otro hilo hace una larga operacin
internamente. De esta manera el programa responde de manera ms gil a la
interaccin con el usuario. Tambin pueden ser utilizados por una aplicacin
servidora para dar servicio a mltiples clientes.

5.4.1.

Modelos multihebras

Ahora bien, tras centrarnos para toda la presente discusin en los


procesos, cmo caben los hilos en este panorama? Depende de cmo
stos son mapeados a procesos a ojos del planificador.
Como vimos en la unidad de Administracin de procesos, hay dos clases
principales de hilo: Los hilos de usuario o hilos verdes, que son
completamente gestionados dentro del proceso y sin ayuda del sistema
operativo, y los hilos de ncleo o hilos de kernel, que s son gestionados
por el sistema operativo como si fueran procesos. Partiendo de esto,
podemos hablar de tres modelos principales de mapeo:

Muchos a uno: Muchos hilos son agrupados en un slo proceso. Los


hilos verdes entran en este supuesto: Para el sistema operativo, hay un
slo proceso; mientras tiene la ejecucin, ste se encarga de repartir el
tiempo entre sus hilos. Bajo este modelo, si bien el cdigo escrito es
ms portable entre diferentes sistemas operativos, los hilos no
aprovechan realmente al paralelismo, y todos los hilos pueden tener
que bloquearse cuando uno slo de ellos realiza una llamada

bloqueante al sistema.
Uno a uno: Cada hilo es ejecutado como un proceso ligero (lightweight
process o LWP); podra dar la impresin de que este esquema
desperdicia la principal caracterstica de los hilos, que es una mayor
sencillez y rapidez de inicializacin que los procesos, sin embargo, la
informacin de estado requerida para crear un LWP es mucho menor
que la de un proceso regular, y mantiene como ventaja que los hilos
continan compartiendo su memoria, descriptores de archivos y dems
estructuras. Este mecanismo permite a los hilos aprovechar las ventajas
del paralelismo, pudiendo ejecutarse cada hilo en un procesador
31

Sistemas Operativos

distinto, y como nica condicin para su existencia, el sistema operativo

debe poder implementar los LWP.


Muchos a muchos: Este mecanismo permite que existan hilos de
ambos modelos: Permite la existencia de hilos unidos, en que cada hilo
corresponde a un (y slo un) LWP, y de hilos no unidos, de los cuales
uno o ms estarn mapeados a cada LWP.
El esquema muchos a muchos proporciona

las

principales

caractersticas de ambos esquemas; en caso de ejecutarse en un


sistema que no soporte ms que el modelo uno a muchos, el sistema
puede caer en ste como modo degradado.
No nos ocupamos en este caso de los primeros Cada marco de
desarrollo o mquina virtual que emplee hilos de usuario actuar cual
sistema operativo ante ellos, probablemente con alguno de los
mecanismos ilustrados anteriormente.

5.4.2.

Bibliotecas de hebras

Una biblioteca de hebras proporciona al programador una API para crea y


gestionar hebras. Existen dos formas principales de implementar una
biblioteca de hebras. El primer mtodo consiste en proporcionar una
biblioteca enteramente en el espacio de usuario, sin ningn soporte del
kernel. Todas las estructuras de datos y el cdigo de la biblioteca se
encuentran en el espacio de usuario y no una llamada al sistema.
El segundo mtodo consiste en implementar una biblioteca en el nivel del
kernel, soportada directamente por el sistema operativo. En este caso, el
cdigo y las estructuras de datos de la biblioteca se encuentran en el
espacio del kernel. Invocar una funcin en la API de la biblioteca
normalmente da a lugar a que se produzca una llamada al sistema dirigida
al kernel.
Las tres principales bibliotecas de hebras actualmente en uso son: (1)
POSIX Pthreads, (2) Win32 y (3) Java Pthreads, la extensin de hebras del
estndar POSIX, puede proporcionarse como biblioteca del nivel de usuario
o del nivel del kernel. La biblioteca de hebras de Win32 es una biblioteca
del nivel de kernel disponible en los sistemas Windows. La API de hebras
Java permite crear y gestionar directamente hebras en los programas Java.
32

Sistemas Operativos

Sin embargo, puesto que en la mayora de los casos la JVM se ejecuta por
encima del sistema operativo del host, la API de hebras Java se
implementa habitualmente usando una biblioteca de hebras disponible en
el sistema host. Esto significa que normalmente en los sistemas Windows,
las hebras Java se implementa usando la API de Win32, mientras que en
los sistemas Linux se suelen implementar usando Pthreads.

5.5.

Planificacin de la CPU

Los mecanismos de planificacin de la CPU son la base de los sistemas


operativos multiprogramado. Mediante la conmutacin de la CPU entre
distintos procesos, el sistema operativo puede hacer que la computadora sea
ms productiva.

5.5.1.

Rfagas de CPU y rfagas de E/S.

Anteriormente habamos mencionado lo que era un proceso, ahora,


vindolo del rea ms "fsica", un proceso es un conjunto de rfagas de
CPU y rfagas de E/S, pero qu son estas?

Rfagas de CPU: es el ciclo en donde se realizan las instrucciones del

proceso.
Rfagas de E/S: es el ciclo en donde se utilizan o esperan los
dispositivos de Entrada y Salida.

Primero se realiza una rfaga de CPU, y luego una rfaga de E/S, luego
una rfaga de CPU, luego una de E/S, luego una de CPU, y otra de E/S, y
as indefinidamente hasta que el programa se le pida terminar, en este
caso, la ltima rfaga es de CPU, puesto que se necesitan las
instrucciones de cerrar.

5.5.2.

Planificador de la CPU

Cuando la CPU queda inactiva, el sistema operativo debe seleccionar uno de


los procesos que se encuentran en la cola de procesos preparados para
ejecucin. El planificador a corto plazo lleva a cabo esa seleccin de proceso.
El planificador elige uno de los procesos que estn en memoria preparados
para ejecutarse y asigna la CPU a dicho proceso.

33

Sistemas Operativos

El planificador es un componente funcional muy importante de los sistemas


operativos multitarea y multiproceso, y es esencial en los sistemas operativos
de tiempo real. Su funcin consiste en repartir el tiempo disponible de un
microprocesador entre todos los procesos que estn disponibles para su
ejecucin.

5.5.3.

Criterios de planificacin

Utilizacin de la CPU, queremos que la CPU se mantenga tan ocupada

como sea posible.


Rendimiento, una medida del trabajo es el nmero de procesos que se

completa por unidad de tiempo.


Tiempo de Retorno, sera la suma de los periodos transcurridos
esperando entrar en la memoria, esperando en la cola de procesos

listos, ejecutndose en la CPU y efectuando operaciones de E/S.


Tiempo de espera, es el tiempo que el proceso espera en la cola de

procesos listos.
El tiempo de respuesta, el tiempo transcurrido desde la presentacin de
una solicitud hasta que se produce la primera respuesta.

Siempre vamos a intentar maximizar la productividad (el tiempo de CPU) y


se intenta minimizar el tiempo de retorno, de respuesta y el de espera.

5.5.4.
Algoritmos de planificacin
El planificador a corto plazo puede ser invocado cuando un proceso se
encuentra en algunas de las cuatro siguientes circunstancias:
a. Pasa de estar ejecutando a estar en espera (por ejemplo, por solicitar
una operacin de E/S, esperar a la sincronizacin con otro proceso,
etc.)
b. Pasa de estar ejecutando a estar listo (por ejemplo, al ocurrir una
interrupcin. Deja de estar en espera a estar listo (por ejemplo, al
finalizar la operacin de E/S que solicit).
c. Finaliza su ejecucin, y pasa de ejecutando a terminado.
d. En el primer y cuarto casos, el sistema operativo siempre tomar el
control; un sistema que opera bajo multitarea preventiva implementar
tambin el segundo y tercer casos, mientras que uno que opera bajo
multitarea cooperativa no necesariamente reconocer dichos estados.

34

Sistemas Operativos

e. Ahora, para los algoritmos a continuacin, recordemos que en este caso


estamos hablando nicamente del despachador. Un proceso siempre
abandonar la cola de procesos listos al requerir de un servicio del
sistema.
f. Para todos los ejemplos a continuacin, asumamos que los tiempos
estn dados en ticks; no nos preocupa en este caso a cunto tiempo de
reloj estos equivalen, sino el rendimiento relativo del sistema entero
ante una carga dada.

5.5.5.

Sincronizacin de procesos

En muchos casos, los procesos se renen para realizar tareas en conjunto,


a este tipo de relacin se le llama procesos cooperativos. Para lograr la
comunicacin, los procesos deben sincronizarse, de no ser as pueden
ocurrir problemas no deseados. La sincronizacin es la transmisin y
recepcin de seales que tiene por objeto llevar a cabo el trabajo de un
grupo de procesos cooperativos.
Es la coordinacin y cooperacin de un conjunto de procesos para
asegurar la comparacin de recursos de cmputo. La sincronizacin entre
procesos es necesaria para prevenir y/o corregir errores de sincronizacin
debidos al acceso concurrente a recursos compartidos, tales como
estructuras de datos o dispositivos de E/S, de procesos contendientes. La
sincronizacin entre procesos tambin permite intercambiar seales de
tiempo (ARRANQUE/PARADA) entre procesos cooperantes para garantizar
las relaciones especficas de precedencia impuestas por el problema que
se resuelve.
Sin una sincronizacin adecuada entre procesos, la actualizacin de
variables compartidas puede inducir a errores de tiempo relacionados con
la concurrencia que son con frecuencia difciles de depurar. Una de las
causas principales de este problema es que procesos concurrentes puedan
observar valores temporalmente inconsistentes de una variable compartida
mientras se actualizan. Una aproximacin para resolver este problema es
realizar actualizaciones de variables compartidas de manera mutuamente
exclusiva. Se pueden mejorar permitiendo que a lo ms un proceso entre a

35

Sistemas Operativos

la vez en la seccin crtica de cdigo en la que se actualiza una variable


compartida o estructura de datos en particular.
Para que los procesos puedan sincronizarse es necesario disponer de
servicios

que

permitan

bloquear

suspender

bajo

determinadas

circunstancias la ejecucin de un proceso. Los principales mecanismos de


sincronizacin que ofrecen los sistemas operativos son:

Seales
Tuberas
Semforos
Mutex y variables condicionales
Paso de mensajes

5.5.6.

El problema de la seccin critica

Se denomina seccin crtica, en programacin concurrente, a la porcin de


cdigo de un programa de ordenador en la que se accede a un recurso
compartido (estructura de datos o dispositivo) que no debe ser accedido
por ms de un proceso o hilo en ejecucin. La seccin crtica por lo general
termina en un tiempo determinado y el hilo, proceso o tarea slo tendr que
esperar un perodo determinado de tiempo para entrar. Se necesita un
mecanismo de sincronizacin en la entrada y salida de la seccin crtica
para asegurar la utilizacin en exclusiva del recurso, por ejemplo un
semforo.
El acceso concurrente se controla teniendo cuidado de las variables que se
modifican dentro y fuera de la seccin crtica. La seccin crtica se utiliza
por lo general cuando un programa multihilo actualiza mltiples variables
sin un hilo de ejecucin separado que lleve los cambios conflictivos a esos
datos. Una situacin similar, la seccin crtica puede ser utilizada para
asegurarse de que un recurso compartido, por ejemplo, una impresora,
pueda ser accedida por un solo proceso a la vez.
La manera en cmo se implementan las secciones puede variar
dependiendo de los diversos sistemas operativos. Slo un proceso puede
estar en una seccin crtica a la vez. El mtodo ms comn para evitar que

36

Sistemas Operativos

dos procesos accedan al mismo tiempo a un recurso es el de la exclusin


mutua.

5.5.7.

Solucin de Peterson

El algoritmo de Peterson, tambin conocido como solucin de Peterson, es


un algoritmo de programacin concurrente para exclusin mutua, que
permite a dos o ms procesos o hilos de ejecucin compartir un recurso sin
conflictos, utilizando slo memoria compartida para la comunicacin.
Peterson desarroll en 1981 el algoritmo bsico para dos procesos, como
una simplificacin del algoritmo de Dekker. El algoritmo bsico puede
generalizarse fcilmente a un nmero arbitrario de procesos.

Algoritmo para dos procesos

Bandera[0] = false
bandera[1] = false
turno
=0
p0: bandera[0] = true
p1: bandera[1] = true
turno = 1
turno = 0
while( bandera[1] && turno == 1 );
while( bandera[0] && turno ==
0 );
//no hace nada; espera.
espera.
// seccin crtica

//no hace nada;

// seccin crtica

// fin de la seccin crtica


bandera[0] = false

// fin de la seccin crtica


bandera[1] = false

Los procesos p0 y p1 no pueden estar en la seccin crtica al mismo


tiempo: si p0 est en la seccin crtica, entonces bandera [0] = 1, y
ocurre que bandera [1] = 0, con lo que p1 ha terminado la seccin
crtica, o que la variable compartida turno = 0, con lo que p1 est
esperando para entrar a la seccin crtica. En ambos casos, p1 no
puede estar en la seccin crtica.
37

Sistemas Operativos

Algoritmo para N procesos


// Variables compartidas
bandera: array[0..N-1] of -1..n-2; /* inicializada a 1 */
turno: array[0..N-2] of 0..n-1; /* inicializada a 0 */
// Protocolo para Pi (i=0,..., N-1)
J:0..N-2; /* variable local indicando la etapa */
for j = 0 to N-2
{
bandera[i] = j;
turno[j] = i;
while [( k i : bandera[k] j) (turno[k] == i)] do;
}
<seccin crtica>
bandera[i] = -1;

5.6.

Semforos

Un semforo es una variable especial (o tipo abstracto de datos) que


constituye el mtodo clsico para restringir o permitir el acceso a recursos
compartidos (por ejemplo, un recurso de almacenamiento del sistema o
variables del cdigo fuente) en un entorno de multiprocesamiento (en el que se
ejecutarn varios procesos concurrentemente). Fueron inventados por Edsger
Dijkstra en 1965 y se usaron por primera vez en el sistema operativo THEOS.
Los semforos se emplean para permitir el acceso a diferentes partes de
programas donde se manipulan variables o recursos que deben ser accedidos
de forma especial. Segn el valor con que son inicializados se permiten a ms
o menos procesos utilizar el recurso de forma simultnea.
Un tipo simple de semforo es el binario, que puede tomar solamente los
valores 0 y 1. Se inicializan en 1 y son usados cuando slo un proceso puede
acceder a un recurso a la vez. Son esencialmente lo mismo que los Mutex.
Cuando el recurso est disponible, un proceso accede y decremento el valor
del semforo con la operacin P. El valor queda entonces en 0, lo que hace
que si otro proceso intenta decrementarlo tenga que esperar. Cuando el
38

Sistemas Operativos

proceso que decremento el semforo realiza una operacin V, algn proceso


que estaba esperando comienza a utilizar el recurso.
Para hacer que dos procesos se ejecuten en una secuencia predeterminada
puede usarse un semforo inicializado en 0. El proceso que debe ejecutar
primero en la secuencia realiza la operacin V sobre el semforo antes del
cdigo que debe ser ejecutado despus del otro proceso. ste ejecuta la
operacin P. Si el segundo proceso en la secuencia es programado para
ejecutar antes que el otro, al hacer P dormir hasta que el primer proceso de
la secuencia pase por su operacin V. Este modo de uso se denomina
sealizacin, y se usa para que un proceso o hilo de ejecucin le haga saber a
otro que algo ha sucedido.

5.7.

Interbloqueos

El bloqueo mutuo es el bloqueo permanente de un conjunto de procesos o


hilos de ejecucin en un sistema concurrente que compiten por recursos del
sistema o bien se comunican entre ellos. A diferencia de otros problemas de
concurrencia de procesos, no existe una solucin general para los
interbloqueos.
Todos los interbloqueos surgen de necesidades que no pueden ser
satisfechas, por parte de dos o ms procesos. En la vida real, un ejemplo
puede ser el de dos nios que intentan jugar al arco y flecha, uno toma el arco,
el otro la flecha. Ninguno puede jugar hasta que alguno libere lo que tom.
En el siguiente ejemplo, dos procesos compiten por dos recursos que
necesitan para funcionar, que slo pueden ser utilizados por un proceso a la
vez. El primer proceso obtiene el permiso de utilizar uno de los recursos
(adquiere el lock sobre ese recurso). El segundo proceso toma el lock del otro
recurso, y luego intenta utilizar el recurso ya utilizado por el primer proceso,
por lo tanto queda en espera. Cuando el primer proceso a su vez intenta
utilizar el otro recurso, se produce un interbloqueo, donde los dos procesos
esperan la liberacin del recurso que utiliza el otro proceso.

39

Sistemas Operativos

5.7.1.

Condiciones necesarias

Tambin conocidas como condiciones de Coffman por su primera


descripcin en 1971 en un artculo escrito por E. G. Coffman. Estas
condiciones deben cumplirse simultneamente y no son totalmente
independientes entre ellas.
Sean los procesos P0, P1,..., Pn y los recursos R0, R1,..., Rm:

Condicin de exclusin mutua: Existencia de al menos de un recurso


compartido por los procesos, al cual slo puede acceder uno

simultneamente.
Condicin de retencin y espera: Al menos un proceso Pi ha
adquirido un recurso Ri, y lo retiene mientras espera al menos un

recurso Rj que ya ha sido asignado a otro proceso.


Condicin de no expropiacin: Los recursos no pueden ser
expropiados por los procesos, es decir, los recursos slo podrn ser

liberados voluntariamente por sus propietarios.


Condicin de espera circular: Dado el conjunto de procesos P0...Pm
(subconjunto del total de procesos original), P0 est esperando un
recurso adquirido por P1, que est esperando un recurso adquirido por
P2,..., que est esperando un recurso adquirido por Pm, que est
esperando un recurso adquirido por P0. Esta condicin implica la
condicin de retencin y espera.

5.7.2.

Evitando bloqueos mutuos

Los bloqueos mutuos pueden ser evitados si se sabe cierta informacin


sobre los procesos antes de la asignacin de recursos. Para cada peticin
de recursos, el sistema controla si satisfaciendo el pedido entra en un
estado inseguro, donde puede producirse un bloqueo mutuo. De esta
forma, el sistema satisface los pedidos de recursos solamente si se
asegura que quedar en un estado seguro. Para que el sistema sea capaz
de decidir si el siguiente estado ser seguro o inseguro, debe saber por
adelantado y en cualquier momento el nmero y tipo de todos los recursos
en existencia, disponibles y requeridos. Existen varios algoritmos para
evitar bloqueos mutuos:

40

Sistemas Operativos

5.7.3.

Algoritmo del banquero, introducido por Dijkstra.


Algoritmo de grafo de asignacin de recursos.
Algoritmo de Seguridad.
Algoritmo de solicitud de recursos.

Prevencin

Los bloqueos mutuos pueden prevenirse asegurando que no suceda


alguna de las condiciones necesarias vistas anteriormente.

Eliminando la exclusin mutua: ningn proceso puede tener acceso


exclusivo a un recurso. Esto es imposible para procesos que no pueden
ser encolados (puestos en un spool), e incluso con colas tambin

pueden ocurrir interbloqueos.


La condicin de posesin y espera puede ser eliminada haciendo que
los procesos pidan todos los recursos que van a necesitar antes de
empezar. Este conocimiento por adelantado muchas veces es imposible
nuevamente. Otra forma es requerir a los procesos liberar todos sus
recursos antes de pedir todos los recursos que necesitan. Esto tambin

es poco prctico en general.


La condicin de no expropiacin puede ser tambin imposible de
eliminar dado que un proceso debe poder tener un recurso por un cierto

tiempo o el procesamiento puede quedar inconsistente.


La condicin de espera circular es la ms fcil de atacar. Se le permite a
un proceso poseer slo un recurso en un determinado momento, o una
jerarqua puede ser impuesta de modo tal que los ciclos de espera no
sean posibles.

5.7.4.

Livelock

Un livelock es similar a un deadlock, excepto que el estado de los dos


procesos envueltos en el livelock constantemente cambia con respecto al
otro. Livelock es una forma de inanicin y la definicin general slo dice
que un proceso especfico no est procesando.
En un ejemplo del mundo real, un livelock ocurre por ejemplo cuando dos
personas, al encontrarse en un pasillo angosto avanzando en sentidos
opuestos, y cada una trata de ser amable movindose a un lado para dejar
a la otra persona pasar, pero terminan movindose de lado a lado sin tener
41

Sistemas Operativos

ningn progreso, pues ambos se mueven hacia el mismo lado, al mismo


tiempo.
Livelock es un riesgo con algunos algoritmos que detectan y recuperan los
interbloqueos, pues si ms de uno toma cartas en el asunto, la deteccin
del interbloqueo puede ser disparada continuamente; pudiendo ser
arreglado asegurndose que slo un proceso (escogido al azar o por
prioridad) tome accin.

6. Gestin de memoria
6.1.

Memoria principal

Hay diversas formas de gestionar la memoria, como los algoritmos de gestin


de memoria. Estos van desde tcnicas primitivas, sin soporte hardware
especfico, a estrategias de paginacin y segmentacin. Como veremos
muchos de estos algoritmos requieren soporte de hardware, aunque los
diseos ms recientes integran de manera estrecha el hardware y el sistema
operativo.

6.1.1.

Fundamentos

La memoria es componente crucial para la operacin de un sistema


informtico moderno. La memoria est compuesta de una gran matriz de
palabras o bytes, cada uno con su propia direccin. La CPU extrae
instrucciones de la memoria de acuerdo con el valor del contador de
programa. Estas instrucciones pueden provocar operaciones adicionales de
carga o de almacenamiento en direcciones de memoria especficas.
Un ciclo tpico de ejecucin de una instruccin procedera en primer lugar a
extraer una instruccin de la memoria. Dicha instruccin se decodifica y
42

Sistemas Operativos

puede hacer que se extraigan de memoria una serie de operandos.


Despus de haber ejecutado la instruccin con esos operandos, es posible
que se almacenen los resultados de nuevo en memoria. La unidad de
memoria tan solo ve un flujo de direcciones de memoria y no sabe cmo se
generan esas direcciones ni tampoco para que se utilizan. Por tanto,
podemos ignorar el cmo genera el programa las direcciones de memoria,
lo nico que nos interesa es la secuencia de direcciones de memoria
generada por el programa en ejecucin. Entre estas cuestiones se incluyen
una panormica de los problemas de hardware bsicos, los mecanismos
de acoplamiento de las direcciones fsicas reales y los mtodos que existen
para distinguir entre direcciones lgicas y fsicas.

6.1.1.1.

Hardware bsico

La memoria principal y los registros integrados dentro del propio


procesador son las nicas areas de almacenamiento a las que la CPU
puede acceder directamente. Hay instrucciones de mquina que toman
como argumentos direcciones de memoria, pero no existe ninguna
instruccin que acepte direcciones de disco. Por lo tanto, todas las
instrucciones de ejecucin y los datos utilizados por esas instrucciones
debern encontrarse almacenados en uno de esos dispositivos de
almacenamiento de acceso directo. Si los datos no se encuentran en
memoria, debern llevarse hasta all antes de que la CPU pueda operar
con ellos.
Generalmente pueden accederse a los requisitos integrados en la CPU
en un nico ciclo de reloj del procesador. No podemos decir lo mismo de
la memoria principal, a la que se accede mediante una transaccin del
bus de memoria. El acceso a memoria puede requerir muchos ciclos del
reloj del procesador para poder completar, en cuyo caso el procesador
debe detenerse. Esta situacin es intolerable, debido a la gran
frecuencia con la que se accede a la memoria. El remedio consiste en
aadir una memoria rpida entre la CPU y la memoria principal.
No solo debemos preocuparnos de la velocidad relativa del acceso a la
memoria fsica, sino que tambin debemos garantizar una correcta
43

Sistemas Operativos

operacin que proteja al sistema operativo de los posible accesos por


parte de los procesos de los usuarios y que tambin proteja a unos
procesos de usuario de otros. Primero tenemos que asegurarnos de
que cada proceso disponga de un espacio de memoria separado. Para
esto debemos poder determinar el rango de direcciones legales. El
registro base almacena la direccin de memoria fsica legal ms
pequea, mientras que el registro limite especfica el tamao del rango.
La proteccin del espacio de memoria se consigue haciendo que el
hardware de la CPU compare todas las direcciones generadas en modo
usuario con el contenido de esos registros. Cualquier intento, por parte
de un programa que se est ejecutando en modo usuario, de acceder a
la memoria del sistema operativo o a la memoria de otros usuarios har
que se produzca una interrupcin hacia el sistema operativo, que tratara
dicho intento como error fatal. Los registros base y limite solo pueden
ser cargados por el sistema operativo, que utiliza una instruccin
privilegiada especial. Para esto ejecuta en el modo kernel; y cuando el
sistema se ejecuta en este modo, tiene acceso no restringido a la
memoria tanto del sistema operativo como de los usuarios, esto permite
al sistema operativo cargarlos programas de los usuarios en la memoria
de los usuarios, volcar dichos programas en caso de error, leer y
modificar parmetros de las llamadas del sistema.

6.1.1.2.

Reasignacin de direcciones

Usualmente, los programas residen en un disco en forma de archivos


ejecutables binarios. Dependiendo del mecanismo de gestin que se
use, el proceso puede desplazarse entre disco y memoria durante su
ejecucin. Los procesos del disco que estn esperando a ser cargados
en la memoria durante su ejecucin forman lo que se denomina cola de
entrada.
El procesamiento normal consiste en seleccionar uno de los procesos
de la cola de entrada y cargar dicho proceso de en memoria. A medida
que se ejecute el proceso, este accede a las instrucciones y datos

44

Sistemas Operativos

contenidos en la memoria. Eventualmente, el proceso terminara su


ejecucin y su espacio de memoria ser declarado como disponible.
Las direcciones del programa fuente son generalmente simblicas.
Normalmente, un compilador se encargar de reasignar estas
direcciones simblicas a direcciones reubicables. Clsicamente, la
reasignacin de las instrucciones y los datos a direcciones de memoria
puede realizarse en cualquiera de los pasos.

Tiempo de compilacin: si sabemos en el momento de realizar


la compilacin donde va a residir el proceso en memoria,
podremos generar cdigo absoluto. Si la ubicacin inicial
cambiase en algn instante posterior, entonces sera necesario

recopilar ese cdigo.


Tiempo de carga: Si no conocemos el tiempo de compilacin
sonde va a residir el proceso en memoria, el compilador deber
generar cdigo reubicable. En este caso, retarda la reasignacin
final hasta el momento de la carga. Si cambia la direccin inicial,
tan solo es necesario volver a cargar el cdigo de usuario para

incorporar el valor modificado.


Tiempo de ejecucin: Si el proceso puede desplazarse durante
su ejecucin desde un segmento de memoria otro, entonces es
necesario retardar la reasignacin hasta el instante de ejecucin.

6.1.1.3.

Espacio de direcciones lgico y fsico

Una direccin generada por la CPU se denomina comnmente direccin


lgica, mientras que una direccin vista por la unidad de memoria se
denomina memoria fsica. Los mtodos de reasignacin en tiempo de
compilacin y tiempo de carga generar direcciones lgicas y fsicas
idnticas. Sin embargo, el esquema de reasignacin de direcciones en
tiempo de ejecucin hace que las direcciones lgicas y fsicas difieran.
En este caso, usualmente decimos que la direccin lgica es una
direccin virtual. El conjunto de todas las direcciones lgicas generadas
por un programa es lo que se denomina un espacio de direcciones
lgicas; conjunto de todas las direcciones fsicas correspondientes a
estas direcciones lgicas es un espacio de direcciones fsicas. As, el
45

Sistemas Operativos

esquema de reasignacin de direcciones en tiempo de ejecucin,


decimos que los espacios de direcciones lgicas y fsicas difieren.
El programa de usuario maneja direcciones lgicas y el hardware de
conversin (mapeo) de memoria convierte esas direcciones lgicas en
direcciones fsicas. Ahora tenemos dos tipos diferentes de direcciones
lgicas (de 0 a mx.) y direcciones fsicas (de r+0 a r + mx. para un
valor base igual a r). El usuario solo genera direcciones lgicas y piensa
que el proceso se ejecuta en ubicaciones comprensibles entre 0 y mx.
El programa de usuario sumistra direcciones lgicas y estas deben
convertirse en fsicas antes de utilizarlas.
El concepto de un espacio de direcciones lgicas que se acopla a un
espacio de direcciones fsicas separado resulta crucial para la adecuada
gestin de memoria

6.1.1.4.

Carga dinmica

El tamao del proceso est limitado por el tamao de la memoria fsica.


Para obtener una mejor utilizacin del espacio de memoria, podemos
utilizar el mecanismo de carga dinmica. Con ella, una rutina no se
carga hasta que se la invoca; todas se mantienen el disco como va
carga reubicable. En este mtodo, el programa principal se carga en la
memoria y se ejecuta. Cuando una rutina necesita llamar a otra rutina,
la rutina que realiza la invocacin comprueba primero si la otra ya ha
sido cargada, de no ser as, se invoca el cargador de montaje
reubicable para que cargue en memoria la rutina deseada y para que se
actualice las tablas de direcciones del programa con el fin de reflejar
este cambio. Despus, se pasa el control a la rutina recin cargada. La
ventaja de este mecanismo de carga dinmica es que una rutina no
utilizada no se cargara nunca en la memoria.

6.1.1.5.

Montaje

dinmico

bibliotecas

compartidas
Algunos sistemas operativos solo permiten el montaje esttico,
mediante el cual las bibliotecas de lenguaje del sistema se tratan como
cualquier otro modulo objeto son integradas por el cargador dentro de la
46

Sistemas Operativos

imagen binaria del programa. El concepto de montaje binario es similar


al de carga dinmica, aunque en este caso lo que se pospone hasta el
momento de la ejecucin es el montaje, en lugar de la carga. Esta
funcionalidad suele emplearse con las bibliotecas del sistema, como por
ejemplo las bibliotecas de subrutinas de lenguaje.
Con el montaje dinmico, se incluye un stub dentro de la imagen binaria
para cada referencia a una rutina de la biblioteca. El stub es un pequeo
fragmento de cdigo que indica como localizar la rutina adecuada de
biblioteca residente en la memoria o como cargar la biblioteca si esa
rutina no est todava presente. Cuando se ejecuta el stub, esta
comprueba si la rutina necesaria ya se encuentra en la memoria, de no
ser as, el programa carga en la memoria la rutina. En cualquiera de los
casos, el stub se sustituye as mismo por la direccin de la rutina y
ejecuta la rutina. As, la siguiente ves que se ejecute ese segmento de
cdigo concreto, se ejecutara directamente la rutina de de biblioteca, sin
tener que realizar de nuevo el montaje dinmico. Con este mecanismo,
todos los procesos que utilicen una determinada biblioteca de lenguaje
solo necesitan ejecutar una copia del cdigo de la biblioteca.
Esta funcionalidad puede ampliarse a las actualizaciones de las
bibliotecas de cdigo. Puede sustituirse una biblioteca por una nueva
versin y todos los programas que hagan referencia a la biblioteca
emplearan automticamente la versin ms reciente. Puede haber ms
de una versin de una biblioteca cargada en la memoria y cada
programa utilizar su informacion de versin para decidir que copia de
la biblioteca va a utilizar. Los cambios de menor entidad retendrn el
mismo nmero de versin, mientras que las de mayor entidad se
incrementarn ese nmero. De ese modo, solo los programas que se
compilen con la nueva versin de la biblioteca se vern afectados por
los cambios incompatibles incorporados en ella. Otros programas
mondos antes de que se instalara la nueva biblioteca continuaran
utilizando la antigua. Este mecanismo se conoce con el nombre de
mecanismo de bibliotecas compartidas.

47

Sistemas Operativos

6.1.2.

Intercambio

Un proceso debe estar en memoria para ser ejecutado. Sin embargo, los
procesos pueden ser intercambiados temporalmente, sacndolos de la
memoria y almacenados en un almacn de respaldo y volvindolos a llevar
luego a memoria para continuar ejecucin.
Los mecanismos de intercambio requieren un almacn de respaldo, que
normalmente ser un disco suficientemente rpido. El disco debe ser
tambin lo suficientemente grande como para poder albergar copias de
todas las imgenes de memoria para todos los usuarios, y debe
proporcionar un acceso directo a esas imgenes de memoria. El sistema
mantiene una cola de procesos preparados que consistir en todos los
procesos cuyas imgenes de memoria se encuentren en el almacn de
respaldo o en la memoria y estn listos para ejecutarse.
Para que este mtodo se efectivo, el usuario debe mantener informado al
sistema acerca de cualquier cambio que se produzca en los que se refiere
a los requisitos de sistema. As, un proceso con requisitos de memoria
dinmicos necesitar ejecutar una llamada al sistema ( request memory

y relese memory) para informar al sistema operativo de sus cambiantes


necesidades de memoria.
El intercambio est restringido tambin por otros factores. Si queremos
intercambiar

un

proceso,

deberemos

asegurarnos

de

que

est

completamente inactivo. En este sentido, es necesario prestar una atencin


especial a todas las operaciones de E/S pendientes. Generalmente el
espacio de intercambio se asigna como un rea disco separada del sistema
de archivos, para que su uso sea lo ms rpido posible. Actualmente estos
mecanismos se utilizan en muy pocos sistemas.

6.1.2.1.

Asignacin de memoria contigua

La memoria principal debe albergar tanto el sistema operativo como los


diversos procesos de usuario. Por lo tanto, necesitamos asignar las
distintas partes de la memoria principal de la forma ms eficiente
posible.
48

Sistemas Operativos

La memoria esta usualmente dividida en dos particiones: una para el


sistema operativo en la zona baja o en la zona alta de la memoria. El
principal factor que afecta a esta decisin es la ubicacin del vector de
interrupciones. Puesto que el vector de interrupciones se encuentra a
menudo en la parte baja de la memoria, los programadores tienden a
situar tambin el sistema operativo en dicha zona.
Normalmente, querremos tener varios procesos de usuario residentes
en memoria del mismo tiempo. Por tanto, tenemos que considerar como
asignar la memoria disponible a los procesos que se encuentran en la
cola de entrada, esperando a ser cargados en memoria. En esquema de
asignacin contigua de memoria, cada proceso est contenido en una
nica seccin contigua de memoria.

6.1.2.2.

Mapeo de memoria y proteccin

Antes de seguir analizando la cuestin de la asignacin de memoria,


debemos hablar del tema de la conversin de memoria y la proteccin.
Cuando el planificador de CPU selecciona un proceso para su
ejecucin, el despachador carga en los registros de reubicacin y de
lmite los valores correctos, como parte del proceso de cambio

de

contexto. Puesto que todas las direcciones generadas por la CPU se


comparan con estos registros, este mecanismo nos permite tanto al
sistema operativo como los programas y datos de los otros usuarios de
las posibles modificaciones que pudieran realizar este proceso en
ejecucin.

6.1.2.3.

Asignacin de memoria

Unos de los mtodos ms simples para asignar la memoria consiste en


dividirla en varia particiones de tamao fijo, cada particin puede
contener exactamente un proceso, de modo que el grado de
multiprogramacin estar limitado por el numero de particiones
disponibles, en este mtodo de particiones mltiples, cuando el proceso
termina, la particin pasa a estar disponible para otro proceso
En el esquema de particiones fijas, el sistema operativo mantiene una
tabla que indica que pates de la memoria estn disponibles y cuales
49

Sistemas Operativos

estn ocupadas. Inicialmente, toda la memoria est disponible para los


proceso de usuario y se considera como un nico bloque de gran
tamao de memoria disponible, al que se denomina agujero, cuando
llega un proceso si lo encontramos, solo se asigna la memoria justa
necesaria, manteniendo el resto de la memoria disponible para
satisfacer futuras solicitudes.
A medida que los proceso entran en el sistema, se introducen en la cola
de entrada, el sistema operativo toma en consideracin los requisitos de
memoria en cada proceso y la cantidad de memoria disponible a la hora
de determinar a qu procesos se le asigna la memoria. Cuando
asignamos espacio a un proceso, se carga en la memoria y puede
comenzar a competir por el uso de la CPU. Cuando un proceso termina,
libera su memoria, que el sistema operativo podr rellenar a
continuacin con otro proceso extrado de la cola de entrada.
El sistema puede tener que comprobar si hay procesos esperando a
que se le asigne memoria y si esta nueva memoria liberada y
combinada permite satisfacer las demandas de algunos de los procesos
en espera.
Este procedimiento constituye un caso concreto del problema general
de asignacin dinmica de espacio de almacenamiento, que ocupa de
cmo satisfacer una solicitud de tamao a partir de una lista de agujeros
libres. Hay muchas soluciones a este problema, y las estrategias ms
comnmente utilizadas para seleccionar un agujero libre entre el
conjunto de agujeros disponibles son las de primer juste, mejor ajuste y
peor ajuste.

Primer ajuste: Se asigna el primer agujero que se lo


suficientemente grandes. Podemos detener la exploracin en
cuanto encontremos un agujero libre que sea lo suficientemente

grande.
Mejor ajuste: Se asigna el agujero ms pequeo que tenga el
tamao suficiente. Esto hace que se genere el agujero ms
pequeo posible con la memoria que sobre del agujero original.
50

Sistemas Operativos

Peor ajuste: Se asigna el agujero de mayor tamao. Esto genera


el agujero ms grande posible con la memoria sobrante del
agujero original.

Las simulaciones muestran que tanto la estrategia del primer ajuste


como la del mejor ajuste son mejores que la de peor ajuste en trminos
del tiempo necesario y de la utilizacin del espacio de almacenamiento.

6.1.3. Fragmentacin
Tanto la estrategia del primer ajuste como la de mejor ajuste para la
asignacin de memoria sufren del problema denominado fragmentacin
externa. A medida que se cargan procesos en memoria y se los elimina,
el espacio de memoria libre se descompone en una serie de fragmentos
de pequeo tamaos. El problema de la fragmentacin externa aparecer
cuando hay un espacio de memoria total suficiente como para satisfacer
una solicitud, pero estos espacios disponibles no son contiguos; el
espacio de almacenamiento est fragmentado puede llegar a ser muy
grave. En el peor de los casos, estos pequeos fragmentos de memoria
estuvieran en un nico bloque libre de gran tamao. Podramos ser
capaces de ejecutar varios procesos ms.
Una solucin al problema de la fragmentacin externa consiste en la
compactacin. El objetivo es mover el contenido de la memoria con el
fin de situar toda la memoria libre de manera contigua, para formar un
nico bloque de gran tamao.

Otra posible solucin al problema

consiste en permitir que el espacio de direcciones lgicas de los


procesos no sea contiguo, lo que hace que podamos asignar memoria
fsica un proceso con independencia de donde est situada dicha
memoria. Hay dos tcnicas complementarias que se pueden utilizar que
son la paginacin y la segmentacin.

6.1.4.

Paginacin

La paginacin es un esquema de gestin de memoria que permite que el


espacio de direcciones fsicas de un proceso no sea contiguo. La
paginacin evita el considerable problema de encajar fragmentos de

51

Sistemas Operativos

memoria de tamao variable en el almacn de respaldo; la mayora de los


esquemas de gestin de memoria utilizados antes de la introduccin de la
paginacin sufran de este problema, que surga debido a que, cuando era
necesario proceder a la descarga de algunos datos o fragmentos de cdigo
que residieran en la memoria principal, tena que encontrarse el espacio
necesario en el almacn de respaldo. El almacn de respaldo tambin
sufre problemas de fragmentacin con relacin a la memoria principal, con
la excepcin que el acceso es ms lento, lo que hace que la compactacin
sea imposible. Debido a sus ventajas con los mtodos anteriores, la
mayora de los sistemas operativos utilizan comnmente mecanismos de
paginacin de diversos tipos.
Tradicionalmente, el soporte para la paginacin se gestionaba mediante
hardware. Sin embargo, algunos diseos recientes implementan los
mecanismos de paginacin integrado estrechamente el hardware y el
sistema operativo, especialmente en los microprocesadores de 64 bytes.

6.1.5.

Segmentacin

Un aspecto importante de la gestin de memoria que se volvi inevitable


con los mecanismos de paginacin es la separacin existente entre la vista
que el usuario tiene de la memoria y la memoria fsica real. La vista que del
usuario tiene de la memoria no es la misma que la memoria fsica real, sino
que es vista del usuario se mapea sobe la memoria fsica. Este mapeo
permite la diferenciacin entre la memoria lgica y memoria fsica.

6.2.

Memoria Virtual

Los beneficios de la memoria virtual son atractivos Pero el esquema es


verdaderamente prctico? La experiencia de numerosos sistemas operativos
ha demostrado que la memoria virtual realmente funciona. La memoria virtual,
basada en la paginacin o paginacin ms segmentacin, se ha convertido, en
actualidad, en una componente esencial de todos los sistemas operativos
contemporneos.

52

Sistemas Operativos

6.2.1.

Hardware y estructura de control:

Comparando la paginacin sencilla y la segmentacin sencilla, tenemos


una distincin entre particionamiento esttico y dinmico, y por otro,
tenemos los fundamentos de comienzo de la gestin de memoria. Las dos
caractersticas de la paginacin y la segmentacin son las siguientes:
a. Todas las referencias a la memoria dentro un proceso se realizan a
direcciones lgicas, que se traducen dinmicamente en direcciones
fsicas durante la ejecucin. Esto significa que un proceso puede ser
llevado y trado a memoria de forma que ocupe diferentes regiones de
la memoria principal en distintos instantes de tiempo durante la
ejecucin.
b. Un proceso puede dividirse en varias porciones (pginas o segmentos)
y estas porciones no tienen que estar localizadas en la memoria de
forma contigua durante la ejecucin. La combinacin de la traduccin de
direcciones dinmicas en ejecucin y el uso de una tabla de pginas o
segmentos lo permite.
Consideremos ahora como se puede realizar esto. Usaremos el trmino
porcin para referirnos o bien a una pgina o un segmento, dependiendo si
estamos empleando paginacin o segmentacin. Supongamos que se tiene
que traer un nuevo proceso de memoria. El sistema operativo comienza
trayendo nicamente una o dos porciones, que incluye la porcin inicial del
programa y la porcin inicial de datos sobre la cual acceden las primeras
instrucciones. Esta parte del proceso que se encuentra realmente en la
memoria principal se denomina conjunto residente del proceso. Cuando el
proceso est ejecutndose, las cosas ocurren de forma suave mientras que
todas las referencias a la memoria se encuentren dentro del conjunto
residente. Usando una tabla de segmentos o pginas, el procesador
siempre es capaz de determinar si esto es as o no. Si el procesador
encuentra una direccin lgica que no se encuentra en la memoria
principal, generar una interrupcin indicando un fallo de acceso a la
memoria. El sistema operativo coloca al proceso interrumpido en un estado
de bloqueado y toma el control. Para que la ejecucin de este proceso
pueda reanudarse ms adelante, el sistema operativo necesita traer a la
53

Sistemas Operativos

memoria principal la porcin del proceso que contiene la direccin lgica


que ha causado el fallo de acceso. Con este fin, el sistema operativo
realiza una peticin de E/S, una lectura a disco. Despus de realizar la
peticin de E/S, el sistema operativo puede activar otro proceso que se
ejecute mientras el disco realiza la operacin de E/S. Una vez que la
porcin solicitada se ha trado a la memoria principal, una nueva
interrupcin de E/S se lanza, dando control de nuevo al sistema operativo,
que coloca al proceso afectado de nuevo en el estado listo.
Ahora, para entender por qu la memoria virtual es tan importante,
examinaremos de nuevo las tareas del sistema operativo relacionadas con
la memoria virtual. Se va a considerar un proceso de gran tamao,
consistente en un programa largo ms un gran nmero de vectores de
datos. A lo largo de un corto periodo de tiempo, la ejecucin se puede
acotar a una pequea seccin del programa y el acceso a uno o dos
vectores de datos nicamente. Si es as, sera verdaderamente un
desperdicio cargar docenas de porciones de dicho proceso cuando slo
unas pocas porciones se usarn antes de que el programa se suspenda o
se mande a zona de intercambio o swap. Se puede hacer un mejor uso de
la memoria cargando nicamente unas pocas porciones. Entonces, si el
programa salta a una destruccin o hace referencia a un dato que se
encuentra en una porcin de memoria que no est en la memoria principal,
entonces se dispara un fallo. ste indica al sistema operativo que debe
conseguir la porcin deseada.
As solo unas pocas porciones de cada proceso se encuentran en
memoria, y por tanto se pueden mantener ms procesos alojados en la
misma. Adems, se ahorra tiempo porque las porciones del proceso no
usadas no se expulsarn de la memoria a swap y de swap a la memoria.
Sin embargo, el sistema operativo debe ser inteligente a la hora de manejar
este esquema. En estado estable, prcticamente toda la memoria principal
se encontrar ocupada con porciones de procesos, de forma que el
procesador y el sistema operativo tengan acceso directo al mayor nmero
posible de procesos. As, cuando el sistema operativo traiga una porcin a
la memoria, debe expulsar otra. Si elimina una porcin justo antes de que
54

Sistemas Operativos

vaya a ser utilizada, deber recuperar dicha porcin de nuevo casi de


forma inmediata.

6.2.2.

Paginacin

El trmino memoria virtual se asocia habitualmente con sistemas que


emplean paginacin, a pesar de que la memoria virtual basada en
segmentacin tambin se utiliza y ser tratada ms adelante. El uso de la
paginacin para conseguir memoria virtual fue utilizado por primera vez en
el computador Atlas y pronto se convirti en una estrategia usada en
general de forma comercial.
En la presentacin de paginacin sencilla, indicamos que cada proceso
dispone de su propia tabla de pginas, y que todas las pginas se
encuentran localizadas en la memoria principal. Cada entrada en la tabla
de pginas consiste en un nmero de marco de la correspondiente pgina
en la memoria principal. Para la memoria virtual basada en el esquema de
paginacin tambin se necesita una tabla de pginas. De nuevo,
normalmente se asocia una nica tabla de pginas a cada proceso. En
este caso, sin embargo, las entradas de la tabla de pginas son ms
complejas. Debido a que solo algunas de las pginas de proceso se
encuentran en la memoria principal, se necesita que cada entrada de la
tabla de pginas indique si la correspondiente pgina est presente en la
memoria principal o no. Si el bit indica que la pgina est en la memoria, la
entrada tambin debe indicar el nmero de marco de dicha pgina.

6.2.2.1.

Estructura de la tabla de pginas

El mecanismo bsico de la lectura de una palabra de la memoria


implica la traduccin de la direccin virtual, o lgica, consistente en un
nmero de pgina y un desplazamiento, a la direccin fsica,
consistente en un nmero de marco y un desplazamiento, usando para
ello la tabla de pginas. Debido a que la tabla de pginas es de longitud
variable dependiendo del tamao del proceso, no podemos suponer
que se encuentra almacenada en los registros. En lugar de eso, debe
encontrarse en la memoria principal para poder ser accedida. El nmero
de pgina de la direccin virtual se utiliza para indexar esa tabla y
55

Sistemas Operativos

buscar el correspondiente marco de pgina. Este, combinado con la


parte de desplazamiento de la direccin virtual genera la direccin real
deseada. Normalmente, el campo correspondiente al nmero de pgina
es mayor que el campo correspondiente al nmero de marco de pgina
(n>m).

Figura 5 Esquema de Memoria virtual


En la mayora de sistemas, existe una nica tabla de pgina por
proceso. Pero cada proceso puede ocupar una gran cantidad de
memoria virtual. Por ejemplo, en la arquitectura VAX, cada proceso
puede tener hasta 2^31 = 2 Gbytes de memoria virtual. Usando pginas
de 2^9 = 512 bytes, que representan un total de 2^22 entradas de cada
pgina por cada proceso. Evidentemente, la cantidad de memoria
demandada por las tablas de pgina nicamente

puede ser

inaceptablemente grande. Para resolver este problema, la mayora de


esquemas de memoria virtual almacena las tablas de pginas en la
memoria virtual, en lugar de en la memoria real. Esto representa que las
tablas de pginas estn sujetas a paginacin igual que cualquier otra
pgina.

6.2.2.2.

Tabla de pginas invertidas

Una desventaja del tipo de tablas de pginas que hemos visto es que
su tamao es proporcional al espacio de direcciones virtuales.
Una estrategia alternativa al uso de tablas de pginas de uno o varios
niveles es el uso de la estructura de tabla de pginas invertidas.
56

Sistemas Operativos

Variaciones de esta estrategia se han usado en arquitecturas como


PowerPC, UltraSPARC, e IA-64. La implementacin del sistema
operativo Mach sobre RT-PC tambin la usa.
En esta estrategia, la parte correspondiente al nmero de pgina de la
direccin virtual se referencia por medio de un valor hash usando una
funcin hash sencilla. El valor hash es un punteo par la tabla de pginas
invertida, que contiene las entradas de tablas de pgina. Hay una
entrada en la tabla de pginas invertidas por cada marco de pgina
siempre es una proporcin fija de memoria real, independientemente
del nmero de procesos o de las pginas virtuales soportadas. Debido a
que ms de una direccin virtual puede traducirse en la misma entrada
de la tabla hash, una tcnica de encadenamiento se utiliza para
gestionar el desbordamiento. Las tcnicas de hashing proporcionan
habitualmente cadenas que no son excesivamente largas entre una y
dos entradas. La estructura de la tabla de pginas se denomina
invertida debido a que se indexan sus entradas de la tabla de pginas
por el nmero de marco en lugar de por el nmero de pgina virtual.

6.2.2.3.

Buffer de traduccin identificada

En principio, toda referencia a la memoria virtual puede causar dos


accesos a memoria fsica: uno para buscar la entrada a la tabla de
pginas apropiada y otro para buscar los datos solicitados. De esa
forma, un esquema de memoria virtual bsico causara el efecto de
duplicar el tiempo de acceso a la memoria. Para solventar este
problema, la mayora de esquemas de la memoria virtual utilizan una
cache especial de alta velocidad para las entradas de la tabla de
pgina, habitualmente denominada buffers de traduccin anticipada.
Esta cache funciona de forma similar a una memoria cache general y
contiene aquellas entradas de la tabla de pginas que han sido usadas
de forma ms reciente.

6.2.2.4.

Tamao de pgina

Una decisin de diseo de hardware importante es el tamao de pgina


a usar. Hay varios factores a considerar. Por un lado, est la
57

Sistemas Operativos

fragmentacin interna. Evidentemente, cuanto mayor es el tamao de la


pgina, menor cantidad de fragmentacin interna. Por otro lado, cuanto
menor es la pgina, mayor nmero de pginas son necesarias para
cada proceso. Un mayor nmero de pginas por proceso significa
tambin mayores tablas de pginas. Para programas grandes en un
entorno altamente multiprogramado, esto significa que determinadas
partes de las tablas de pgina de los procesos activos deben
encontrarse en la memoria virtual, no en la memoria principal. Por tanto,
puede haber un fallo de pgina doble para una referencia sencilla a
memoria: el primero para atraer la tabla de pgina de la parte solicitada
y el segundo para atraer la pgina del propio proceso. Otro factor
importante son las caractersticas fsicas de la mayora de los
dispositivos de la memoria secundaria, que son de tipo giratorio,
favoreciendo tamaos de pgina grandes para mejorar la eficiencia de
transferencia de bloques de datos.

6.2.3.

Segmentacin

La segmentacin permite al programador ver la memoria como si se tratase


de diferentes espacios de direcciones o segmentos. Los segmentos
pueden ser de tamaos diferentes, en realidad de tamao dinmico.
Esta organizacin tiene un gran nmero de ventajas para el programador
sobre los espacios de direcciones no segmentados:
a. Simplifica el tratamiento de estructuras de datos que pueden
crecer. Si el programador no conoce a priori el tamao que una
estructura de datos en particular puede alcanzar es necesario hacer una
estimacin salvo que se utilicen tamaos de segmentos dinmicos. Con
la memoria virtual segmentada, a una estructura de datos se le puede
asignar su propio segmento, y el sistema operativo expandir o reducir
el segmento bajo demanda.
b. Permite programas que se modifican o recopilan de forma
independiente, sin requerir que el conjunto completo de programas se
re-enlacen y se vuelvan a cargar. De nuevo, esta posibilidad se puede
articular por medio de la utilizacin de mltiples segmentos.

58

Sistemas Operativos

c. Da soporte a la comparticin entre procesos. El programador puede


situar un programa de utilidad o una tabla de datos que resulte til en un
segmento al que puede hacerse referencias desde otros procesos.
d. Soporta los mecanismos de proteccin. Esto es debido a que un
segmento puede definirse para contener un conjunto de programas o
datos bien descritos, el programador o el administrador de sistemas
puede asignar privilegios de acceso de una forma apropiada.

6.2.4.

Pa
gi
na
ci
n
y

Figura 6 Esquema de Segmentacin


segmentacin combinadas
La paginacin es transparente al programador y elimina la fragmentacin
externa, y por tanto proporciona un uso eficiente de la memoria principal.
Adicionalmente, debido a que los fragmentos que se mueven entre la
memoria y el disco son de un tamao igual y prefijado, es posible
desarrollar algoritmos de gestin de la memoria ms sofisticados que
exploten el comportamiento de los programas, como veremos

ms

adelante. La segmentacin s es visible al programador y tiene los


beneficios que hemos visto anteriormente. La segmentacin s es visible al
programador y tiene los beneficios que hemos visto anteriormente,
incluyendo la posibilidad de manejar estructuras de datos que crecen,
modularidad, y dar soporte a la comparticin y a la proteccin. Para
combinar las ventajas de ambos, algunos sistemas por medio del hardware
59

Sistemas Operativos

del procesador y del soporte del sistema operativo son capaces de


proporcionar ambos.

7. Gestin de archivos
Es el aspecto ms visible de un sistema operativo proporciona los mecanismos
para el almacenamiento en lnea en datos y programas del propio sistema
operativo y para todos los usuarios del sistema informtico, as como el acceso a
esos datos y programas

7.1.

Qu es un archivo?

Las computadoras pueden almacenar informacin en varios soportes de


almacenamiento como: discos magnticos, cintas magnticas y discos pticos.

Los archivos son una coleccin de informacin relacionada, con un

nombre, que se graba en el almacenamiento secundario


Comnmente los archivos representan programas y datos, los archivos

de datos pueden ser numricos, alfabticos, alfanumricos o binarios


Un archivo es una secuencia de bits, bytes, lneas o registros

7.2.

Atributos de un archivo

Los atributos varan segn sistema operativo, generalmente son:

Nombre: Es aquel que el usuario le asigna


Tipo: Es necesario para los sistemas que soporten diferentes tipos de

archivos
Ubicacin: Nos hace referencia a la direccin que podemos encontrar
Tamao: atributo que puede ser medido en (bytes, palabras o bloques)
Proteccin: informacin de control de acceso que determina quin
puede leer el archivo, escribir, ejecutarlo, etc.

60

Sistemas Operativos

7.3.

Operacin con los archivos


Crear un archivo: Consta de dos pasos, el primero es encontrar el
espacio para el archivo dentro del sistema de archivos y el segundo es

incluir en el directorio una entrada para el nuevo archivo


Escritura de un archivo: El sistema debe mantener el puntero de
escritura que haga referencia a la ubicacin dentro del archivo en la que

debe tener lugar la siguiente escritura


Lectura de un archivo: Para leer desde un archivo, utilizamos una
llamada al sistema que especifique tanto al nombre del archivo como la
informacin que hay que escribir y donde debe colocarse el siguiente

bloque del archivo


Reposicionamiento dentro de un archivo: Se explora el directorio
para hallar la correspondiente entrada y se reposiciona el punto de
posicin actual dentro de un archivo, asignndole un nuevo valor. Se le

conoce a esta operacin con el nombre de bsqueda en el archivo


Borrado de un archivo: Para borrar un archivo, exploramos el
directorio en busca del archivo indicado. Habiendo hallado la entrada de
directorio asociada, liberamos todo el espacio del archivo, de modo que
pueda ser reutilizado por otros archivos, y borramos tambin la propia

entrada del directorio.


Truncado de un archivo: El usuario puede querer borrar el contenido
de un archivo, pero manteniendo sus atributos. En lugar de forzar al
usuario a borrar el archivo y volverlo a crear, esta funcin permite que
los atributos no se vean modificados (excepto la longitud del archivo),
mientras que el archivo se reinicializa asignndole una longitud de igual
a cero y liberando el espacio que tuviera asignado.

7.4.

Tipos de archivos

Una tcnica comn para implementar los archivos consiste en incluir el tipo
como parte del nombre del archivo
El nombre se divide en dos partes: un nombre y una extensin, usualmente
separadas por un carcter punto, de esta manera el usuario y el sistema
operativo pueden determinar, con solo analizar el nombre, cual es el tipo de
archivo.

61

Sistemas Operativos

Tipo de archivo

Extensin usual
Exe, com, bin

Ejecutable

Objeto
Cdigo fuente
Procesamiento por

maquina

para

Obj, o
C, cc, java, pas, asm

compilado y no montado
Cdigos
fuentes
en

Bat, sh

diversos lenguajes
Comandos
para

Txt, doc

interprete de comandos
Datos
textuales,

Wp, tex, rtf, doc

documentos
Diversos formatos

de

procesamientos

de

Procesador de textos

biblioteca

listos

ejecutarse
Lenguaje

lotes
Texto

Funcin
Programas en lenguaje

maquina

Lib, a ,so, dll

textos
Biblioteca de rutina para

Ps, pdf, jpg

los programadores
Archivo ASCII o binario

Impresin o

en un formato adecuado

visualizacin

para
Arc, zip, tar

su

impresin

visualizacin
Archivos
relacionados
agrupados en un nico
archivo, algunas veces

Archivado

comprimido,
archivado
Mpeg, mov, rm, mp3, avi

Multimedia

para
definitivo

almacenamiento
Archive
binario

su
o
que

contiene informacin de
audio

7.5.

Estructura de archivos

Los tipos de archivo tambin pueden usarse para indicar la estructura interna
del archivo.
Los archivos fuente y objeto tiene estructura que se corresponden con las
expectativas de los programas que se van a encargar de leerlos. Adems

62

Sistemas Operativos

ciertos archivos deben adaptarse a una estructura requerida, comprensible por


parte del sistema operativo
Ejemplo: El sistema operativo requiere de archivos ejecutables tengan una
estructura concreta para poder determinar en qu parte de la memoria cargar
el archivo y donde est ubicada la primera instruccin. Algunos sistemas
operativos amplan esa idea y utilizan un conjunto de estructura de archivos
soportadas por el sistema, con una serie de operaciones especiales para
manipular los archivos que tengan dicha estructuras. Por ejemplo el sistema
operativo VMS de DEC tiene un sistema de archivos que soporta tres
estructura de archivos definidos.

7.6.

Introduccin de directorios

El directorio puede considerarse como una tabla de smbolos que traduce los
nombres de archivos a sus correspondientes entradas de directorios.
Queremos

poder

insertar

entradas,

borrar

entradas,

buscar

entrada

conociendo su nombre y enumerar todas las entradas del directorio.

7.6.1.

Operaciones para directorios

Bsqueda de archivos: Tenemos que poder explorar la estructura del


directorio para encontrar la entrada correspondiente a un archivo
concreto. Puesto que los archivos tienen nombres simblicos y los
nombres similares pueden indicar que existe una relacin entre los
archivos, tambin queremos poder encontrar todos los archivos cuyos

nombres se corresponden con un patrn concreto


Crear un archivo: Es necesario poder crear archivos y aadirlos al

directorio
Borrar un archivo: Cuando un archivo ya no es necesario, queremos

poder eliminarlo del directorio


Listar un directorio: Tenemos que poder enumerar los archivos
contenidos en un directorio y el contenido de la entrada de directorio

correspondiente a cada uno de los archivos de la lista


Renombrar un archivo: Puesto que el nombre de un archivo
representa el contenido para los usuarios, debemos poder cambiar el
nombre cuando el contenido o el uso del archivo varen. Renombrar un

63

Sistemas Operativos

archivo puede tambin significar que se modifique su posicin dentro de

la estructura de directorio.
Recorrer el sistema de archivos: Puede que queramos acceder a
todos los directorios y a todos los archivos contenidos dentro de una
estructura de directorios. Para conseguir una mayor fiabilidad, resulta
conveniente guardar el contenido y la estructura de todo el sistema de
archivos a intervalos regulares. A menudo, esto se suele hacer copiando
todos los archivos en una cinta magntica. Esta tcnica proporciona una

copia de seguridad para el caso que se produzca fallo del sistema


Comparticin de archivos: La comparticin de archivos es muy
deseable para aquellos usuarios que quieran colaborar y reducir el
esfuerzo requerido para conseguir desarrollar un programa. Por tanto,
los sistemas operativos orientados al usuario deben satisfacer la
necesidad de compartir archivos a pesar de las dificultades inherentes a

este mecanismo
Proteccin: Cuando se almacena la informacin en un sistema
informtico, necesitamos protegerla frente a los daos fsicos (fiabilidad)
y frente a los accesos incorrectos (proteccin). La fiabilidad se
proporciona, generalmente, mediante copias duplicadas de los archivos.
La mayora de las computadoras tienen programas del sistema que
copian automticamente(o mediante intervencin del operador) los
archivos del disco en una cinta a intervalos regulares (una vez al da, o
a la semana o al mes), para mantener una copia por si acaso resultara
destruido accidentalmente el sistema de archivos

7.7.

Tcnica de proteccin ms usual

7.7.1.

Tipos de acceso

La necesidad de proteger los archivos es consecuencia directa de la


posibilidad de acceder a esos archivos. Los sistemas que no permiten el
acceso a los sistemas de otros usuarios no necesitan ninguna proteccin.
As, podramos proporcionar una proteccin completa simplemente
prohibiendo el acceso. Alternativamente, podramos proporcionaron acceso
libre sin ninguna proteccin.

64

Sistemas Operativos

Ambas tcnicas son demasiado extremas para poder utilizarlas de forma


general; lo que necesitamos, en su lugar, es un acceso controlado
Los mecanismos de proteccin proporcionan un acceso controlado
limitando los tipos de accesos a archivo que puedan realizarse. El acceso
se permite o se deniega dependiendo de varios factores, uno de los cuales
es el tipo de acceso solicitado. Podemos controlar varios tipos de
operaciones diferentes

Lectura: Lectura de un archivo


Escritura: Escritura o reescritura de un archivo
Ejecucin: Carga del archivo en memoria y ejecucin del mismo
Audicin: Carga del archivo en memoria y ejecucin del mismo
Adicin: Estructura de nueva informacin al final del archivo
Borrado: Borrado del archivo y liberacin del espacio para su

posible reutilizacin
Listado: Listado del nombre y atributos del archivo

7.7.2.

Recuperacin

Los archivos y directorios se mantienen al tanto en la memoria principal


como en disco, y debe tenerse cuidado para que los fallos del sistema no
provoquen una prdida de datos o una incoherencia en los mismos

7.7.3.

Comprobacin de coherencia

Parte de la informacin de directorios se almacena en la memoria principal


(o en cache) para acelerar el acceso. La informacin de directorios en la
memoria

principal

esta,

generalmente,

ms

actualizada

que

la

correspondiente informacin en el disco, porque la informacin de


directorios almacenada en cache no se escribe necesariamente en el disco
nada ms producirse la actualizacin
Considere, entonces, el posible ejemplo de un fallo de la computadora. El
contenido de la cache y de los bferes, as como de las operaciones de
E/S que se estuvieran realizando en ese momento, pueden perderse, y con
el perdern los cambios realizados en los directorios correspondientes los
archivos abiertos. Dicho suceso puede dejar al sistema en un estado
incoherente. El estado real de los archivos no sern los que describe en la
65

Sistemas Operativos

estructura de directorios. Con frecuencia suelen ejecutarse un programa


especial durante el reinicio para comprobar las posibles incoherencias del
disco y corregirlas
El comprobador de incoherencia (un programa del sistema tal como fsck en
UNIX o chkdsken MS-DOS), compara los datos de la estructura de
directorios con los bloques de datos de disco y trata de corregir todas la
incoherencias que detecte los algoritmos de asignacin y de gestin del
espacio libre dictan los tipos de problemas que el comprobador puede
tener en esta tarea

7.7.4.

Copia de seguridad y restauracin

Los discos magnticos fallan en ocasiones y es necesario tener cuidado


para garantizar que los datos perdido debido a esos fallos no se pierdan
para siempre. Con este fin, pueden utilizarse programas del sistema para
realizar una copia de seguridad de los datos del disco en otro dispositivo de
almacenamiento, como por ejemplo un disquete, una cinta magntica, un
disco ptico incluso otro disco duro. La recuperacin de la prdida de un
archivo individual o de un disco completo puede ser entonces,
simplemente, una cuestin de restaurar los datos a partir de la copia de
seguridad para minimizar la cantidad de datos que haya que copiar,
podemos utilizar la informacin contenida en la entrada de directorios de a
cada archivo. Por ejemplo, si el programa de copia de seguridad sabe
cuando se realizo la ltima copia de seguridad de un archivo y la fecha de
la ltima modificacin del archivo contenida en el directorio indica que el
archivo ha cambiado desde esa fecha, no ser necesario para poder copiar
el archivo. As, un plan tpico de copia de seguridad podra ser el siguiente
a. Da 1: Copiar el soporte de copia de seguridad todos los archivos del
disco .Esto se denomina Copia de seguridad completa
b. Dia2: Copiar en otro soporte fsico todos los archivos que se hayan
modificado desde el da 1. Esta es una copia de seguridad incremental
c. Da 3: Copiar en otro soporte fsico todos los archivos que se hayan
modificado desde el da 2
d. Da N: Copiar en otro soporte fsico todos los archivos que se hayan
modificado desde el da N-1. Despus, volver al da 1
66

Sistemas Operativos

Podemos escribir las copias de seguridad correspondientes al nuevo ciclo


sobre el conjunto anterior de soportes fsicos o en un nuevo conjunto de
soportes de copia de seguridad. De esta forma, Podemos restaurar un
disco completo comenzando la restauracin de la copia de seguridad
completa y continuando con cada una de las copias de seguridad
incrementales. Por su puesto; cuanto mayor sea el valor de N, mas cintas o
discos habr que leer para efectuar una restauracin completa. Una
ventaja adicional a este ciclo de copia de seguridad es que podemos el
archivo borrado de la copia de seguridad del da anterior. La longitud del
ciclo ser un compromiso entre la cantidad de soportes fsicos de copia de
seguridad requeridos y el nmero de das pasados a partir de los cuales
podemos realizar una restauracin. Para reducir el nmero de cintas que
haya que leer para efectuar una restauracin, una opcin consiste en
realizar una copia de seguridad completa y luego copiar cada da todos los
archivos que hayan cambiado desde la ltima copia de seguridad
completa. De esta forma, puede realizarse la restauracin utilizando solo
copias de seguridad incrementadas reciente y la copia de seguridad
completa, no necesitndose ninguna otra copia de seguridad incremental

7.8.

Gestin del disco

El sistema operativo es responsable tambin de varios otros aspectos de la


gestin de disco. Aqu trataremos sobre la inicializacin del disco, del arranque
del disco y recuperacin de bloques defectuosos

7.8.1.

Formateo del disco

Un disco magntico nuevo es una pizarra en blanco: se trata simplemente


de una placa de material magntico para grabacin. Antes de poder
almacenar datos en el disco, es necesario dividir este en sectores que la
controladora de disco pueda leer y escribir. Este proceso se denomina
formateo de bajo nivel o formateo fsico.
El formateo de bajo nivel llena el disco con una estructura de datos
especial para cada sector. La estructura de datos para un sector consta

67

Sistemas Operativos

tpicamente de una cabecera, un rea de datos (que inicialmente tiene 512


bytes de tamao) y una cola.
La cabecera y la cola contienen informacin utilizada por la controladora de
disco, como el nmero de sector y un cdigo de correccin de errores.
Cuando la controladora escribe un sector de datos durante la E/S normal,
el cdigo de correccin de errores se actualizara con un valor que se
calculaba a partir de todos los bytes contenidos en el rea de datos.
Cuando se lee el sector, se recalcula el cdigo de correccin de errores y
se lo comprar con el

valor almacenado. Si los valores almacenados y

calculado son diferentes, esa diferencia indica que el rea de datos del
sector se ha corrompido y que el sector de disco puede ser defectuoso.
El cdigo de correccin de errores contiene suficiente informacin como
para que, en caso de que solo unos bits de datos se haya corrompido, la
controladora puede identificar que bits han sido modificados y calcular
cuales deberan ser sus valores correctos. En este caso, la controladora
informara de que se ha producido un error blando recuperable. La
controladora realizara automticamente el procesamiento del cdigo de
correccin de errores cada vez que se lee o se escribe un sector
La mayora de discos duros se formatean a bajo nivel en la fbrica como
parte del proceso de fabricacin. Este formateo permite al fabricante probar
el disco e inicializar el mapeo entre los numero de bloque lgicos y
sectores libres de defectos en el disco. En muchos discos duros, cuando se
ordena la controladora de discos realizar un formateo de bajo nivel del
disco, tambin se la puede decir cuntos bytes de datos debe dejar entre la
cabecera y la cola de cada sector.
Normalmente, es posible elegir entre unos cuantos tamaos, como ejemplo
256, 512 y 1024 bytes. Formatear un disco con un tamao de sector ms
grande implica que en cada pista cabrn menos sectores, pero tambin se
escribirn menos cabeceras y colas en cada pista y que habr ms espacio
disponible para los datos del usuario. De todos modos, algunos sistemas
operativos solo pueden admitir un tamao de sector igual a 512 bytes.
68

Sistemas Operativos

Para utilizar un disco para almacenar a5rchivos, el sistema operativo sigue


necesitando poder grabar sus propias estructuras de datos en el disco y
para ello sigue un proceso en dos pasos. El primer paso consiste en
particionar el disco en uno o ms grupos de cilindros. El sistema operativo
puede tratar cada particin como si fuera un disco distinto.
Ejemplo: Una particin puede albergar una copia de cdigo ejecutable del
sistema operativo, mientras que la otra pueden almacenar los archivos del
usuario.
Despus del particionamiento, el segundo paso es el formateo lgico
(creacin de un sistema de archivos). En este paso, el sistema operativo
almacena estructura de datos iniciales del sistema de archivos en el disco.
Estas estructuras de datos pueden incluir mapas despacio libre y asignado
(una tabla FAT o una serie de inodos) y un directorio inicial vacio

7.8.2.

Bloque de arranque

Para que una computadora comience a operar (por ejemplo cuando se


enciende o cuando se la reinicia) debe tener una programa inicial que
ejecutar. Este programa inicial de arranque tiende a ser muy simple. Se
encarga de iniciar todos los aspectos del sistema, desde los registro del
CPU hasta las controladoras de dispositivos y el contenido de la memoria
principal, y luego arranca el sistema operativo. Para llevar a cabo su tarea,
el programa de arranque localiza el kernel del sistema operativo en el
disco, carga dicho kernel en memoria y salta hasta una direccin inicial con
el fin de comenzar la ejecucin del sistema operativo.
Para la mayora de las computadoras, el arranque est almacenado en la
memoria solo de lectura (ROM). Esta ubicacin resulta muy adecuada,
porque la ROM no necesita ser inicializada y se encuentra en una direccin
fija en la que el procesador puede comenzar la ejecucin al encender o
reiniciar. Adems, puesto que la ROM es solo de lectura, no puede verse
afectada por virus informticos. El problema es que cambiar este cdigo de
arranque requiere cambiar los chips hardware de la ROM. Por esta razn,
la mayora de los sistemas almacenan un programa cargador de arranque

69

Sistemas Operativos

muy pequeo tamao en la ROM de arranque, cuya nica tarea consiste en


cargar un programa de arranque completo desde el disco.
El programa de arranque completo puede cambiarse fcilmente. Cada
nueva versin puede simplemente escribirse en el disco. El programa
cargador completo se almacena en los bloques de arranque, en una
ubicacin fija del disco. Un disco que tengo una particin de arranque se
denomina disco de arranque o disco del sistema
El cdigo de la ROM de arranque ordena a la controladora del disco que
lea los bloques de arranque en memoria (todava no hay ningn controlador
de dispositivo cargado en ese punto) y luego comienza a ejecutar dicho
cdigo. El programa de arranque completo es capaz de cargar todo el
sistema operativo desde una ubicacin no fija dentro del disco y luego
iniciar la ejecucin del sistema operativo. A pesar de ello, el cdigo del
programa de arranque completo puede ser pequeo

7.8.3.

Bloqueos defectuosos

Puesto que los discos tiene partes mviles y tolerancias muy pequeas
(recuerde que el cabezal del disco vuela justo por encima de la superficie
del disco) son bastante propenso a los fallos
Algunas veces, el fallo se produce por completo, en cuyo caso ser
necesario cambiar de disco y restaurar su contenido en el nuevo disco a
partir a partir de un soporte de copia de seguridad. Los ms frecuentes que
uno de los sectores pasen a ser defectuosos se gestionan de forma
manual. Por ejemplo, el comando format de MS- DOS realiza el formateo
lgico y, como parte de dicho proceso, analiza el disco para localizar los
bloques defectuoso. Si format encuentra un bloque defectuoso, escribe un
valor especial en la entrada correspondiente de la FAT para informar las
rutinas de asignacin de que no debe utilizar dicho bloque. Si los bloques
pasan a ser defectuosos durante la operacin normal, es necesario
ejecutar manualmente un programa especial (como por ejemplo chkdsk)
para buscar los bloques defectuosos y prohibir su utilizacin, de la misma
forma que antes. Los datos que estuvieran almacenados en los que

70

Sistemas Operativos

estuvieran almacenados en los bloques defectuosos usualmente se


pierden.
El disco ms sofisticado, como los discos SCSI utilizados en las
computadoras PC de gama alta y en la mayora de las estaciones de
trabajo y servidores, tiene unos mecanismos ms inteligentes de
recuperacin de bloques defectuosos. La controladora mantiene una lista
de bloques defectuosos en el disco. La lista se inicializa durante el
formateo de bajo nivel en la fbrica y se actualiza a todo lo largo de la vida
del disco. El formateo a bajo nivel tambin reserva una serie de sectores
adicionales que no son visibles para el sistema operativo. Se puede
ordenara la controladora que sustituya lgicamente cada vector defectuoso
por uno de los sectores adicionales reservados. Este esquema se
denomina reserva de sectores o sustitucin de sectores
Una transaccin tpica relativa a un sector defectuoso seria lo siguiente:
a. El sistema operativo trata de leer el bloque lgico 87
b. La controladora calcula el Cdigo de correccin de errores y comprueba
que el sector es defectuoso, por lo que informa a la controladora SCSI
de que el sector es defectuoso por unos de los sectores reservados
c. La siguiente vez que se reinicie el sistema, se ejecuta un comando
especial para informar a la controladora SCSI de que debe sustituir el
sector defectuoso por uno de los sectores reservados.
d. A partir de ah, siempre que el sistema solicite el bloque lgico 87, la
solicitud ser traducida por la controladora, que sustituir dicha
direccin por la del sector sustituto.
A este tipo de redireccin efectuado por la controladora podra invalidar las
optimizaciones realizadas por el algoritmo de planificacin del disco del
sistema operativo. Por esta razn, la mayora de discos se formatean de
modo que se proporcionen unos cuantos sectores reservados en cada
cilindro y tambin en un cilindro reservado. Cuando se remapea un bloque
defectuoso, la controladora utiliza un sector reservado del mismo cilindro,
siempre que sea posible.

71

Sistemas Operativos

Como alternativa al mecanismo de

reserva de sectores, alguna

controladora ofrece la posibilidad de sustituir un bloque defectuoso por el


procedimiento de deslizamiento de sectores.
Ejemplo: Suponga que el bloque lgico 17 pasara a estar defectuoso y que
el primer sector reservado disponible es tuviera situado despus del sector
201. Entonces, el procedimiento de deslizamiento de sectores se remapea
todos los sectores comprendidos entre el 17 y el 201, movindolos una
posicin. En otras palabras, el sector 202 se copia en sector reservado,
luego el sector 201 se copia en el sector 202, el sector 200, en el 201, etc.
La sustitucin de un bloque defectuoso no es, generalmente, del todo
automtico por que los datos del bloque defectuoso suele perderse.
Diversos errores blandos podran hacer que se desencadenara un proceso
en que se realiza una copia de los datos del bloque y dicho bloque se
marcara como no valido, emplendose a continuacin los procedimientos
de sustitucin o deslizamiento de bloques. Sin embargo, los errores duros
no recuperables provocan la perdida de datos. En ese caso, ser necesario
reparar el archivo que estuviera utilizando dicho bloque (por ejemplo,
realizando una restauracin a partir de una cinta de seguridad) y ese
proceso requiere una intervencin manual.

72

Sistemas Operativos

8. Sistemas distribuidos
Un sistema distribuido es un sistema de informacin en el cual las funciones se
reparten por reas de trabajo diferentes que trabajan de forma coordinada para
asumir los objetivos que la organizacin asigna a ese sistema de informacin.
Pero no olvidemos que detrs del sistema operativo hay personas que lo usan y
los gestionan. El factor humano ser fundamental como nos cuidaremos de
recordar a lo largo del todo el diseo. Los sistemas distribuidos se encuentran
conformados por siete puntos:

Los objetivos de la empresa. Debemos saber que estos son la

justificacin de que exista la informtica.


La plataforma del proceso. Elemento encargado de proporcionar los
recursos fsicos y el software de base para ejecutarlo. Est formado por los

mainframe, PCS, PDAS.


Los elementos de la conectividad. Son los encargados se proporcionar
el transporte para comunicar e integrar los elementos de la plataforma de

proceso. Son bsicamente las redes y las comunicaciones.


El almacenamiento de datos, formado por los datos en s y los gestores

donde se localizan.
Los elementos de software donde se incluyen las aplicaciones, los
servicios que ayudan a crearlas y las interfaces que ayudan a usarlas. En
este componente se integran las arquitecturas posibles para crearlas:
centralizada, batch, transaccional, cliente / servidor basado en sistema

operativo, cliente / servidor basada en internet y aplicaciones web internet.


Sistema de seguridad. Conformado por los programas y/o software que

ayudan a proteger al sistema de posibles amenazas.


Gestin del sistema como un conjunto integrado y coordinado a
travs de los recursos de direccin y administracin. La gestin del
sistema debe permitir la coexistencia de varios centros de gestin
diferentes.

8.1.

Caractersticas de los sistemas distribuidos

Concurrencia: cuando existen varios procesos en una nica maquina


decimos que se estn ejecutando concurrentemente. Si el ordenador est
equipado con un nico procesador central, la concurrencia tiene lugar
entrelazando la ejecucin de los distintos procesos. Si la computadora
73

Sistemas Operativos

tiene n procesadores, entonces se pueden estar ejecutando estrictamente

a la vez hasta n procesos.


En los sistemas distribuidos hay muchas maquinas: Cada una con uno
o ms procesadores centrales. Es decir, si hay m ordenadores en un
sistema distribuido con un procesador central cada una entonces hasta m

procesos estar ejecutndose en paralelo.


Escalabilidad: Los sistemas distribuidos operan de manera efectiva y
eficiente a muchas escalas diferentes. Tanto el software de sistema como
el de aplicacin no deberan cambiar cuando la escala del sistema se
incrementa. La necesidad de escalabilidad no es solo un problema de
prestaciones de red o de hardware, sino que est ntimamente ligada con
todos los aspectos del diseo de los sistemas distribuidos. El diseo del
sistema debe reconocer explcitamente la necesidad de escalabilidad o de

lo contrario aparecern serias limitaciones.


Tolerancia a fallos: Los sistemas informticos a veces fallan. Cuando se
producen fallos en el software o en el hardware, los programas podran
producir resultados incorrectos o podran pararse antes de terminar la
computacin que estaban realizando. El diseo de sistemas tolerantes a
fallos se basa en dos cuestiones, complementarias entre s: redundancia
hardware (uso de componentes redundantes) y recuperacin del software

(diseo de programas que sean capaces de recuperarse de los fallos).


En los sistemas distribuidos la redundancia puede establecerse en un
plano ms frgil que en el hardware: Pueden replicarse los servidores
individuales que son esenciales para la operacin continuada de

aplicaciones crticas.
Trasparencia: Se define como la ocultacin al usuario y al programador de
aplicaciones de la separacin de los componentes de un sistema
distribuido, de manera que el sistema se percibe como un todo, en vez de
una coleccin de componentes independientes. La transparencia ejerce
una gran influencia en el diseo del software de sistema.

8.2.

Sistemas operativos distribuidos

Mencionada la definicin de que vienen a ser los sistemas distribuidos,


pasamos a ver como estos ayudan a los sistemas operativos en las diferentes
funciones que realizan dentro del ordenador.
74

Sistemas Operativos

Un

sistema

operativo

distribuido

es

un

conjunto

de

computadoras

independientes que se presenta a los usuarios como sistema nico. El objetivo


de los sistemas operativos distribuidos es integrar en un nico sistema los
recursos y servicios distribuidos en distintos equipos, adems debe gestionar
recursos de forma global: procesadores, memorias, sistema de ficheros,
dispositivos de e/s, etc.
Esta definicin tiene dos aspectos el primero se refiere al hardware las
mquinas son autnomas el segundo se refiere al software los usuarios
piensan que el sistema es como una nica computadora ambos son
esenciales regresaremos a este punto en una seccin posterior de este
captulo despus de revisar algunos conceptos bsicos del hardware y el
software.
Esta definicin puede ser un poco complicada al entenderla, por ello
mencionaremos un ejemplo. Considere una fbrica de robots cada uno de los
cuales contiene una poderosa computadora para el manejo de visin
planeacin comunicacin y otras tareas. Cuando un robot de esa lnea de
ensamble nota que una parte por instalar es defectuosa le pide al robot del
departamento de partes que le traiga una refaccin. Si todos los robots actan
como dispositivos perifricos unidos a la misma computadora central y el
sistema se puede programar de esta manera tambin se considera como un
sistema distribuido.

8.3.

Ventajas

de

los

sistemas

distribuidos

con

respecto de las PC independientes


Puesto que los microprocesadores constituyen una forma econmica de
trabajo por qu no se ofrece a cada persona su propia pc y se le deja trabajar
de manera independiente? El asunto aqu es que muchos usuarios necesitan
compartir ciertos datos. Por ejemplo los empleados de reservaciones en las
lneas areas necesitan tener acceso a la base de datos maestra de los vuelos
y reservaciones existentes. Si se le diera a cada empleado una copia particular
de toda la base de datos eso no funcionara puesto que nadie conocera los
asientos vendidos por los dems empleados. Los datos compartidos son
absolutamente esenciales para sta y otras aplicaciones de modo que las
75

Sistemas Operativos

mquinas deben estar conectadas entre s la conexin de las mquinas


conduce a un sistema distribuido. Los datos no son los nicos elementos que
se pueden compartir. Otros candidatos son tambin los perifricos catos como
las impresoras lser de color equipos de fotocomposicin y los dispositivos de
almacenamiento masivo (por ejemplo las cajas pticas). Una tercera razn
pala la conexin de un grupo de computadoras aisladas en un sistema
distribuido es lograr una mejor comunicacin entre las personas.

8.4.

Desventajas de los sistemas distribuidos

Aunque los sistemas distribuidos tienen sus aspectos fuertes tambin tienen
sus debilidades. En esta seccin sealaremos algunas de ellas. Ya hemos
sealado el peor de los problemas el software. Con el actual estado de las
cosas no tenemos mucha experiencia en el diseo implantacin y uso del
software distribuido qu tipo de sistemas operativos lenguajes de
programacin y aplicaciones son adecuados para estos sistemas? Cunto
deben saber los usuarios de la distribucin? Qu tanto debe hacer el sistema
y qu tanto deben hacer los usuarios? Los expertos tienen sus diferencias.
Mientras se realice ms investigaciones a este problema, disminuir pero por
el momento no puede subestimarse.
Un segundo problema potencial es el debido a las redes de comunicacin.
Estas pueden perder mensajes lo cual requiere un software especial para su
manejo y puede verse sobrecargado. Al saturarse la red sta debe
remplazarse o aadir una segunda. En ambos casos hay que tender cables en
una parte de uno o ms edificios con gran costo o bien hay que remplazar las
tarjetas de interfaz de la red (por ejemplo por fibras pticas). Una vez que el
sistema llega a depender de la red la prdida o saturacin de sta puede
negar algunas de las ventajas que el sistema distribuido deba conseguir. Por
ltimo el hecho ya descrito de que los datos sean fcil de compartir es una
ventaja pero se puede convertir en un arma de dos filos si las personas
pueden tener acceso a los datos en todo el sistema entonces tambin pueden
tener acceso a datos con los que no tienen nada que ver. En otras palabras, la
seguridad es con frecuencia un problema. Para que los datos se mantengan
en secreto a toda costa es preferible tener una computadora personal aislada

76

Sistemas Operativos

sin conexiones de red con las dems mquinas y mantenerla en un cuarto


cerrado con un mueble seguro donde guardar todos los discos flexibles.
A pesar de estos problemas potenciales muchas personas sienten que las
ventajas tienen mayor peso que las desventajas y se espera que los sistemas
distribuidos tengan cada vez mayor importancia en los aos venideros. De
hecho es probable que en unos cuantos aos gran parte de las organizaciones
conecten la mayora de sus computadoras a extensos sistemas distribuidos
para proporcionar un servicio mejor ms barato y conveniente a sus usuarios.

9. Sistemas de propsito general


Hasta ahora hemos definido muchos conceptos como sistemas distribuidos,
memoria virtual, sistemas operativos e informticos de propsito general, entre
otros. Sin embargo, existen diferentes clases de sistemas informticos cuyas

77

Sistemas Operativos

funciones son ms limitadas y cuyo objetivo es tratar con dominios de


procesamiento limitados.

9.1.

Sistemas embebidos en tiempo real

Las computadoras embebidas son las computadoras predominantes hoy en


da. Estos dispositivos se encuentran por todas partes, desde los motores de
automviles y los robots para fabricacin, hasta los magnetoscopios y los
hornos de microondas. Estos sistemas suelen tener tareas muy especficas.
Los sistemas en los que operan usualmente son primitivos, por lo que los
sistemas operativos proporcionan funcionalidades limitadas. Usualmente,
disponen de una interfaz de usuario muy limitada o no disponen de ella en
absoluto, prefiriendo invertir su tiempo en monitorizar y gestionar dispositivos
hardware, como por ejemplo motores de automvil y brazos robticos.
Estos

sistemas

embebidos

varan

considerablemente.

Algunos

son

computadoras de propsito general que ejecutan sistemas operativos


estndar, como UNIX, con aplicaciones de propsito especial para
implementar la funcionalidad. Otros son sistemas hardware con sistemas
operativos embebidos de propsito especial que solo proporcionan la
funcionalidad deseada. Otros son dispositivos hardware con circuitos
integrados especficos de la aplicacin, que realizan sus tareas sin ningn
sistema operativo.

9.2.

Sistemas multimedia

Una tendencia innovadora sobre los sistemas informticos son los sistemas
multimedia, en los cuales se utilizan los datos multimedia. Los datos
multimedia abarcan tanto archivos de audio y vdeo, como archivos
convencionales. Estos datos difieren de los convencionales en que los datos
multimedia deben suministrarse cumpliendo ciertas restricciones de tiempo.
La palabra multimedia describe un amplio rango de aplicaciones que hoy en
da son de uso popular. Incluye los archivos de audio, las pelculas de DVD, la
videoconferencia y las secuencias de vdeo con anuncios de pelculas o
noticias que los usuarios descargan a travs de Internet. Las aplicaciones
multimedia tambin pueden incluir webcast en directo de conferencias o

78

Sistemas Operativos

eventos deportivos, e incluso cmaras web que permiten a un observador que


est en Manhattan ver a los clientes de un caf en Pars.

9.3.

Sistemas de mano

Los sistemas de mano incluyen los ADP (asistente digital personal), tales
como los Palm y Pocket-PC, y los telfonos mviles, muchos de los cuales
usan

sistemas

operativos

embebidos

de

propsito

especial.

Los

desarrolladores de aplicaciones y sistemas de mano se enfrentan a muchos


retos, la mayora de ellos debidos al tamao limitado de dichos dispositivos.
Problemas que presentan los sistemas de manos:

Tamao: Debido a su tamao, la mayora de los dispositivos de mano


tienen muy poca memoria, procesadores lentos y pantallas de visualizacin

pequeas.
Velocidad: Otra dificultad que presentan los sistemas de manos es la
velocidad del procesador usado en los dispositivos. Los procesadores de la
mayor parte de los dispositivos de mano funcionan a una fraccin de la
velocidad de un procesador tpico para PC. Los procesadores requieren
mayor cantidad de energa cuanto ms rpidos son. Para incluir un
procesador ms rpido en un dispositivo de mano sera necesaria una
batera mayor, que ocupara ms espacio y tendra que ser recargada

constantemente.
Problemas E/S: La falta de espacio fsico limita los mtodos de entrada a
pequeos teclados, sistemas de reconocimiento de escritura manual o
pequeos teclados basados en pantalla. Tareas tan familiares como leer un
correo electrnico o navegador por diversas pginas web se tienen que
condensar en pantallas muy pequeas.

10. Proteccin y seguridad


Un sistema informtico tiene mltiples usuarios y permite la ejecucin de
concurrente de mltiples procesos, por lo que el acceso debe regularse. Con este
fin se crean mecanismos que aseguren que solo los usuarios autorizados utilicen
los recursos.

79

Sistemas Operativos

Proteccin es cualquier mecanismo que controle el acceso de procesos y


usuarios a los recursos definidos por un sistema informtico. Este mecanismo
debe proporcionar los medios para la especificacin de los controles que hay que
imponer y para la aplicacin de dichos controles.
Estos mecanismos mejoran la fiabilidad permitiendo detectar errores latentes en
las interfaces de los subsistemas componentes. La deteccin temprana de errores
permite evitar la contaminacin de un subsistema que funciona perfectamente por
parte de otro subsistema que funcione mal. Un sistema enfocado a proteccin
proporciona un medio para distinguir entre un usuario autorizado o no.
Un sistema puede tener la proteccin adecuada pero aun as estar expuestos a
fallos y permitir accesos inapropiados (como en el caso de un usuario al que se le
ha robado la informacion y sus datos pueden estar siendo borrados o copiados).
Es la responsabilidad de los mecanismos de defensa defender al sistema frente
ataques internos y externos. Algunos sistemas incorporan sus mecanismos de
defensa, aunque otros dejan esta responsabilidad a programas de terceros.
La proteccin y seguridad requieren que el sistema distinga a todos los usuarios.
La mayora tiene una lista de nombres de usuario y sus identificaciones de
usuario o ID (que son uno por usuario). Cuando un ID necesita ser ledo, se utiliza
una lista de nombres de usuario para poder traducir el ID al nombre
correspondiente. En algunos casos, es necesario diferenciar entre conjuntos de
usuarios, lo que se consigue al definir un nombre de grupo y especificar los
usuarios que pertenecen a los mismos (asignando identificadores de usuarios).
Durante el uso normal del sistema el ID de usuario y el ID de grupo, pero el
usuario en ocasiones necesita escalar sus privilegios para obtener permisos
adicionales para una actividad.

Bibliografa

Silberschatz A., Galvin P. & Gagne G. (2006) Fundamentos de sistemas

operativos, 7ma edicin. Madrid: Mc Graw Hill.


Satallings W. (2005) Sistemas operativos, Aspectos internos y principios de
diseo. Madrid: Pearson Prentice Hall.

80

Sistemas Operativos

81

También podría gustarte