10.05.2013 Views

Sistemas Operativos - Estructuras y Programacion

Sistemas Operativos - Estructuras y Programacion

Sistemas Operativos - Estructuras y Programacion

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

<strong>Sistemas</strong><br />

<strong>Operativos</strong>


[SISTEMAS OPERATIVOS]<br />

1. Introducción a los sistemas operativos<br />

1.1 Definición y concepto de sistemas operativos<br />

Un Sistema Operativo (SO frecuentemente<br />

OS, del inglés Operating System) es el<br />

software básico de una computadora que<br />

provee una interfaz entre el resto de<br />

programas de la computadora, los dispositivos<br />

(hardware) y el usuario.<br />

Las funciones básicas del Sistema Operativo<br />

son administrar los recursos de la máquina,<br />

coordinar el hardware y organizar archivos y directorios en dispositivos de<br />

almacenamiento.<br />

Los <strong>Sistemas</strong> <strong>Operativos</strong> más utilizados son Dos, Windows, Linux y Mac. Algunos SO<br />

ya vienen con un navegador integrado, como<br />

Windows que trae el navegador Internet Explorer.<br />

Uno de los propósitos del sistema operativo que<br />

gestiona el núcleo intermediario consiste en<br />

gestionar los recursos de localización y protección<br />

de acceso del hardware, hecho que alivia a los<br />

programadores de aplicaciones de tener que tratar<br />

con estos detalles. La mayoría de aparatos<br />

electrónicos que utilizan microprocesadores para<br />

funcionar, llevan incorporado un sistema operativo<br />

(teléfonos móviles, reproductores de DVD,<br />

computadoras, radios, enrutadores, etc.). En cuyo<br />

caso, son manejados mediante una Interfaz Gráfica<br />

de Usuario, un gestor de ventanas o un entorno de escritorio, si es un celular,<br />

mediante una consola o control remoto si es un DVD y, mediante una línea de<br />

comandos o navegador web si es un enrutador.<br />

1


[SISTEMAS OPERATIVOS]<br />

1.2 Funciones y características de los sistemas operativos<br />

Los sistemas operativos<br />

proporcionan una<br />

plataforma de software<br />

encima de la cual otros<br />

programas, llamados<br />

aplicaciones, puedan<br />

funcionar. Las aplicaciones<br />

se programan para que<br />

funcionen encima de un<br />

sistema operativo particular,<br />

por tanto, la elección del<br />

sistema operativo<br />

determina en gran medida las aplicaciones que puedes utilizar.<br />

El sistema operativo cumple varias funciones:<br />

Administración del procesador: el sistema operativo administra la distribución del<br />

procesador entre los distintos programas por medio de un algoritmo de programación.<br />

El tipo de programador depende completamente del sistema operativo, según el<br />

objetivo deseado.<br />

Gestión de la memoria de acceso aleatorio: el sistema operativo se encarga de<br />

gestionar el espacio de memoria asignado para cada aplicación y para cada usuario,<br />

si resulta pertinente. Cuando la memoria física es insuficiente, el sistema operativo<br />

puede crear una zona de memoria en el disco duro, denominada "memoria virtual". La<br />

memoria virtual permite ejecutar aplicaciones que requieren una memoria superior a la<br />

memoria RAM disponible en el sistema. Sin embargo, esta memoria es mucho más<br />

lenta.<br />

Gestión de entradas/salidas: el sistema operativo permite unificar y controlar el<br />

acceso de los programas a los recursos materiales a través de los drivers (también<br />

conocidos como administradores periféricos o de entrada/salida).<br />

2


[SISTEMAS OPERATIVOS]<br />

Gestión de ejecución de aplicaciones: el sistema operativo se encarga de que las<br />

aplicaciones se ejecuten sin problemas asignándoles los recursos que éstas necesitan<br />

para funcionar. Esto significa que si una aplicación no responde correctamente puede<br />

"sucumbir".<br />

Administración de autorizaciones: el sistema operativo se encarga de la seguridad<br />

en relación con la ejecución de programas garantizando que los recursos sean<br />

utilizados sólo por programas y usuarios que posean las autorizaciones<br />

correspondientes.<br />

Gestión de archivos: el sistema operativo gestiona la lectura y escritura en el sistema<br />

de archivos, y las autorizaciones de acceso a archivos de aplicaciones y usuarios.<br />

Gestión de la información: el sistema operativo proporciona cierta cantidad de<br />

indicadores que pueden utilizarse para diagnosticar el funcionamiento correcto del<br />

equipo.<br />

1.3 Evolución histórica del sistema operativo<br />

1969: Tres programadores de los laboratorios Bell (Ken Thompson, Dennis Ritchie y<br />

Douglas MCIlroy) crean el sistema operativo UNIX, aún en tiempos de terminal y sin<br />

entornos gráficos existentes.<br />

3


[SISTEMAS OPERATIVOS]<br />

1973: Xerox crea lo que podemos llamar la “primera computadora personal más o<br />

menos decente”, la Xerox Alto con su sistema operativo propio.<br />

1974: Empieza la creación de BSD 1.0, que es rápidamente sucedida por BSD 2.0 en<br />

1978.<br />

4


[SISTEMAS OPERATIVOS]<br />

1979: Tim Paterson crea su sistema operativo 86-DOS, que posteriormente pasó a<br />

llamarse QDOS (Quick and Dirty Operative System). Dos años después Bill Gates<br />

compra QDOS por una suma entre 25 y 50 mil dólares y rebautiza dos veces, en<br />

primer lugar como PC-DOS, el cual vende como sistema operativo a IBM para que<br />

estos lo usen en sus PCs (IBM-PC), y en segundo lugar (un año más tarde) como MS-<br />

DOS, el cual, siendo una copia casi identica a PC-DOS, vende como sistema propio<br />

(el sistema operativo sólo, en disketes).<br />

1981: Nace Xerox Star, el sucesor de Xerox Alto.<br />

5


[SISTEMAS OPERATIVOS]<br />

1983: Apple muestra su primera gran obra, la Apple Lisa System 1.<br />

1983: VisiCorp crea Visi On.<br />

6


[SISTEMAS OPERATIVOS]<br />

1984: Mac OS System de la mano de Apple.<br />

1985: Las PC Amiga salen a la luz, y con ellas su flamante sistema operativo,<br />

Workbench 1.0, quien posteriormente sería rebautizado como AmigaOS.<br />

7


[SISTEMAS OPERATIVOS]<br />

1985: Microsoft Windows 1.0 ve la luz, aunque tras un grave fracaso debido a los<br />

errores que tenía, se ve rápidamente sucedido por Windows 1.01.<br />

1986: Irix es concebido, una poderosa arma para la manipulación 3D habitualmente<br />

usada para fines de diseño (la imágen es de Irix3.3).<br />

8


[SISTEMAS OPERATIVOS]<br />

1987: Andrew S. Tanenbaum crea MINIX, un sistema operativo basado en Unix y<br />

escrito en lenguaje C, cuyo principal objetivo era el aprendizaje informático (aprender<br />

cómo funciona un sistema operativo por dentro). Este sistema inspiró a Linus Torvalds<br />

para la creación del Núcleo Linux. Imagen de MINIX3.<br />

9


1987: Windows 2.0 aparece.<br />

[SISTEMAS OPERATIVOS]<br />

10


[SISTEMAS OPERATIVOS]<br />

1989: NeXTSTEP / OPENSTEP<br />

1990: BeOS de la mano de Be Incorporated. Imagen moderna.<br />

11


[SISTEMAS OPERATIVOS]<br />

1990: Windows 3.0. Cuya famosa actualización gratuita a 3.11 (para Windows 3.1)<br />

salió 2 años después.<br />

12


[SISTEMAS OPERATIVOS]<br />

1990: Richard Stallman crea el sistema GNU de software libre y el Núcleo Hurd, el<br />

cual no parece ser tan bueno para el sistema GNU como lo que Linus Torvalds crearía<br />

un año después, el Núcleo Linux. En 1992, el sistema GNU y el Núcleo Linux se unen<br />

formalmente para crear GNU/Linux, un sistema con docenas de distribuciones<br />

(“versiones” que son creadas en paralelo por diversos grupos independientes de<br />

programadores)<br />

13


1995: Windows 95.<br />

[SISTEMAS OPERATIVOS]<br />

14


[SISTEMAS OPERATIVOS]<br />

1996: IBM saca la nueva versión de su sistema operativo: OS/2 Warp 4.<br />

15


1997: Mac OS System 8<br />

[SISTEMAS OPERATIVOS]<br />

16


1998: Windows 98.<br />

[SISTEMAS OPERATIVOS]<br />

17


[SISTEMAS OPERATIVOS]<br />

1998: GNU/Linux sigue avanzando y una de sus más famosas distribuciones,<br />

Mandrake Linux, saca su primera versión (5.1).<br />

18


2001: Mac OS X.<br />

[SISTEMAS OPERATIVOS]<br />

19


2001: Windows XP.<br />

[SISTEMAS OPERATIVOS]<br />

20


2006: Amiga Workbench 4.0<br />

[SISTEMAS OPERATIVOS]<br />

21


[SISTEMAS OPERATIVOS]<br />

2006: Ubuntu, la más famosa distribución de GNU/Linux de la actualidad, nace (en<br />

varios idiomas).<br />

22


[SISTEMAS OPERATIVOS]<br />

2006: Empiezan a aparecer los sistemas operativos en la Nube (Internet), como es el<br />

caso de EyeOS.<br />

23


2007: Windows Vista.<br />

[SISTEMAS OPERATIVOS]<br />

24


2007: Mac OS X Leopard<br />

[SISTEMAS OPERATIVOS]<br />

25


2009: Windows 7 aparece<br />

[SISTEMAS OPERATIVOS]<br />

26


[SISTEMAS OPERATIVOS]<br />

2011: Ubuntu saca su versión 11.04, cambiando de interfáz Gnome a Unity.<br />

2011: Google saca una beta de su sistema operativo ChromeOS, otro más que se<br />

aloja en la nube.<br />

27


2012. Aparece Windows 8<br />

[SISTEMAS OPERATIVOS]<br />

28


[SISTEMAS OPERATIVOS]<br />

1.4 Clasificación del sistema operativo<br />

Con el paso del tiempo, los <strong>Sistemas</strong> <strong>Operativos</strong> fueron clasificándose de diferentes<br />

maneras, dependiendo del uso o de la aplicación que se les daba. A continuación se<br />

mostrarán diversos tipos de <strong>Sistemas</strong> <strong>Operativos</strong> que existen en la actualidad, con<br />

algunas de sus características:<br />

<strong>Sistemas</strong> <strong>Operativos</strong> de multiprogramación (o <strong>Sistemas</strong> <strong>Operativos</strong> de<br />

multitarea).<br />

Es el modo de funcionamiento disponible en algunos sistemas operativos, mediante el<br />

cual una computadora procesa varias tareas al mismo tiempo. Existen varios tipos de<br />

multitareas. La conmutación de contextos (context Switching) es un tipo muy simple<br />

de multitarea en el que dos o más aplicaciones se cargan al mismo tiempo, pero en el<br />

que solo se está procesando la aplicación que se encuentra en primer plano (la que ve<br />

el usuario). Para activar otra tarea que se encuentre en segundo plano, el usuario<br />

debe traer al primer plano la ventana o pantalla que contenga esa aplicación. En la<br />

multitarea cooperativa, la que se utiliza en el sistema operativo Macintosh, las tareas<br />

en segundo plano reciben tiempo de procesado durante los tiempos muertos de la<br />

tarea que se encuentra en primer plano (por ejemplo, cuando esta aplicación esta<br />

esperando información del usuario), y siempre que esta aplicación lo permita. En los<br />

sistemas multitarea de tiempo compartido, como OS/2, cada tarea recibe la atención<br />

del microprocesador durante una fracción de segundo. Para mantener el sistema en<br />

orden, cada tarea recibe un nivel de prioridad o se procesa en orden secuencial. Dado<br />

que el sentido temporal del usuario es mucho más lento que la velocidad de<br />

procesamiento del ordenador, las operaciones de multitarea en tiempo compartido<br />

parecen ser simultáneas.<br />

Se distinguen por sus habilidades para poder soportar la ejecución de dos o más<br />

trabajos activos (que se están ejecutado) al mismo tiempo. Esto trae como resultado<br />

que la Unidad Central de Procesamiento (UCP) siempre tenga alguna tarea que<br />

ejecutar, aprovechando al máximo su utilización.<br />

Su objetivo es tener a varias tareas en la memoria principal, de manera que cada uno<br />

está usando el procesador, o un procesador distinto, es decir, involucra máquinas con<br />

más de una UCP.<br />

<strong>Sistemas</strong> <strong>Operativos</strong> como UNIX, Windows 95, Windows 98, Windows NT, MAC-OS,<br />

OS/2, soportan la multitarea.<br />

Las características de un Sistema Operativo de multiprogramación o multitarea son las<br />

siguientes:<br />

29


[SISTEMAS OPERATIVOS]<br />

Mejora productividad del sistema y utilización de recursos.<br />

Multiplexa recursos entre varios programas.<br />

Generalmente soportan múltiples usuarios (multiusuarios).<br />

Proporcionan facilidades para mantener el entorno de usuarios individuales.<br />

Requieren validación de usuario para seguridad y protección.<br />

Proporcionan contabilidad del uso de los recursos por parte de los usuarios.<br />

Multitarea sin soporte multiusuario se encuentra en algunas computadoras<br />

personales o en sistemas de tiempo real.<br />

<strong>Sistemas</strong> multiprocesadores son sistemas multitareas por definición ya que<br />

soportan la ejecución simultánea de múltiples tareas sobre diferentes<br />

procesadores.<br />

En general, los sistemas de multiprogramación se caracterizan por tener múltiples<br />

programas activos compitiendo por los recursos del sistema: procesador, memoria,<br />

dispositivos periféricos.<br />

Sistema Operativo Monotareas.<br />

Los sistemas operativos monotareas son más primitivos y es todo lo contrario al visto<br />

anteriormente, es decir, solo pueden manejar un proceso en cada momento o que<br />

solo puede ejecutar las tareas de una en una. Por ejemplo cuando la computadora<br />

está imprimiendo un documento, no puede iniciar otro proceso ni responder a nuevas<br />

instrucciones hasta que se termine la impresión.<br />

Sistema Operativo Monousuario.<br />

Los sistemas monousuarios son aquellos que nada más puede atender a un solo<br />

usuario, gracias a las limitaciones creadas por el hardware, los programas o el tipo de<br />

aplicación que se esté ejecutando.<br />

Estos tipos de sistemas son muy simples, porque todos los dispositivos de entrada,<br />

salida y control dependen de la tarea que se está utilizando, esto quiere decir, que las<br />

instrucciones que se dan, son procesadas de inmediato; ya que existe un solo usuario.<br />

Y están orientados principalmente por los microcomputadoras.<br />

Sistema Operativo Multiusuario.<br />

Es todo lo contrario a monousuario; y en esta categoría se encuentran todos los<br />

sistemas que cumplen simultáneamente las necesidades de dos o más usuarios, que<br />

30


[SISTEMAS OPERATIVOS]<br />

comparten mismos recursos. Este tipo de sistemas se emplean especialmente en<br />

redes.<br />

En otras palabras consiste en el fraccionamiento del tiempo (timesharing).<br />

<strong>Sistemas</strong> <strong>Operativos</strong> por lotes.<br />

Los <strong>Sistemas</strong> <strong>Operativos</strong> por lotes, procesan una gran cantidad de trabajos con poca<br />

o ninguna interacción entre los usuarios y los programas en ejecución. Se reúnen<br />

todos los trabajos comunes para realizarlos al mismo tiempo, evitando la espera de<br />

dos o más trabajos como sucede en el procesamiento en serie. Estos sistemas son de<br />

los más tradicionales y antiguos, y fueron introducidos alrededor de 1956 para<br />

aumentar la capacidad de procesamiento de los programas.<br />

Cuando estos sistemas son bien planeados, pueden tener un tiempo de ejecución<br />

muy alto, porque el procesador es mejor utilizado y los <strong>Sistemas</strong> <strong>Operativos</strong> pueden<br />

ser simples, debido a la secuenciabilidad de la ejecución de los trabajos.<br />

Algunos ejemplos de <strong>Sistemas</strong> <strong>Operativos</strong> por lotes exitosos son el SCOPE, del<br />

DC6600, el cual está orientado a procesamiento científico pesado, y el EXEC II para el<br />

UNIVAC 1107, orientado a procesamiento académico.<br />

Algunas otras características con que cuentan los <strong>Sistemas</strong> <strong>Operativos</strong> por lotes son:<br />

Requiere que el programa, datos y órdenes al sistema sean remitidos todos juntos<br />

en forma de lote.<br />

Permiten poca o ninguna interacción usuario/programa en ejecución.<br />

Mayor potencial de utilización de recursos que procesamiento serial simple en<br />

sistemas multiusuarios.<br />

No conveniente para desarrollo de programas por bajo tiempo de retorno y<br />

depuración fuera de línea.<br />

Conveniente para programas de largos tiempos de ejecución (ej, análisis<br />

estadísticos, nóminas de personal, etc.).<br />

Se encuentra en muchas computadoras personales combinados con<br />

procesamiento serial.<br />

Planificación del procesador sencilla, típicamente procesados en orden de llegada.<br />

Planificación de memoria sencilla, generalmente se divide en dos: parte residente<br />

del S.O. y programas transitorios.<br />

No requieren gestión crítica de dispositivos en el tiempo.<br />

31


[SISTEMAS OPERATIVOS]<br />

Suelen proporcionar gestión sencilla de manejo de archivos: se requiere poca<br />

protección y ningún control de concurrencia para el acceso.<br />

<strong>Sistemas</strong> <strong>Operativos</strong> de tiempo real.<br />

Los <strong>Sistemas</strong> <strong>Operativos</strong> de tiempo real son aquellos en los cuales no tiene<br />

importancia el usuario, sino los procesos. Por lo general, están subutilizados sus<br />

recursos con la finalidad de prestar atención a los procesos en el momento que lo<br />

requieran. Se utilizan en entornos donde son procesados un gran número de sucesos<br />

o eventos.<br />

Muchos <strong>Sistemas</strong> <strong>Operativos</strong> de tiempo real son construidos para aplicaciones muy<br />

específicas como control de tráfico aéreo, bolsas de valores, control de refinerías,<br />

control de laminadores. También en el ramo automovilístico y de la electrónica de<br />

consumo, las aplicaciones de tiempo real están creciendo muy rápidamente. Otros<br />

campos de aplicación de los <strong>Sistemas</strong> <strong>Operativos</strong> de tiempo real son los siguientes:<br />

Control de trenes.<br />

Telecomunicaciones.<br />

<strong>Sistemas</strong> de fabricación integrada.<br />

Producción y distribución de energía eléctrica.<br />

Control de edificios.<br />

<strong>Sistemas</strong> multimedia.<br />

Algunos ejemplos de <strong>Sistemas</strong> <strong>Operativos</strong> de tiempo real son: VxWorks, Solaris,<br />

Lyns OS y Spectra. Los <strong>Sistemas</strong> <strong>Operativos</strong> de tiempo real, cuentan con las<br />

siguientes características:<br />

Se dan en entornos en donde deben ser aceptados y procesados gran cantidad de<br />

sucesos, la mayoría externos al sistema computacional, en breve tiempo o dentro<br />

de ciertos plazos.<br />

Se utilizan en control industrial, conmutación telefónica, control de vuelo,<br />

simulaciones en tiempo real., aplicaciones militares, etc.<br />

Objetivo es proporcionar rápidos tiempos de respuesta.<br />

Procesa ráfagas de miles de interrupciones por segundo sin perder un solo<br />

suceso.<br />

Proceso se activa tras ocurrencia de suceso, mediante interrupción.<br />

Proceso de mayor prioridad expropia recursos.<br />

32


[SISTEMAS OPERATIVOS]<br />

Por tanto generalmente se utiliza planificación expropiativa basada en prioridades.<br />

Gestión de memoria menos exigente que tiempo compartido, usualmente procesos<br />

son residentes permanentes en memoria.<br />

Población de procesos estática en gran medida.<br />

Poco movimiento de programas entre almacenamiento secundario y memoria.<br />

Gestión de archivos se orienta más a velocidad de acceso que a utilización<br />

eficiente del recurso.<br />

<strong>Sistemas</strong> <strong>Operativos</strong> de tiempo compartido.<br />

Permiten la simulación de que el sistema y sus recursos son todos para cada usuario.<br />

El usuario hace una petición a la computadora, está la procesa tan pronto como le es<br />

posible, y la respuesta aparecerá en la terminal del usuario.<br />

Los principales recursos del sistema, el procesador, la memoria, dispositivos de E/S,<br />

son continuamente utilizados entre los diversos usuarios, dando a cada usuario la<br />

ilusión de que tiene el sistema dedicado para sí mismo. Esto trae como consecuencia<br />

una gran carga de trabajo al Sistema Operativo, principalmente en la administración<br />

de memoria principal y secundaria.<br />

Ejemplos de <strong>Sistemas</strong> <strong>Operativos</strong> de tiempo compartido son Multics, OS/360 y DEC-<br />

10.<br />

Características de los <strong>Sistemas</strong> <strong>Operativos</strong> de tiempo compartido:<br />

Populares representantes de sistemas multiprogramados multiusuario, ej: sistemas<br />

de diseño asistido por computadora, procesamiento de texto, etc.<br />

Dan la ilusión de que cada usuario tiene una máquina para sí.<br />

Mayoría utilizan algoritmo de reparto circular.<br />

Programas se ejecutan con prioridad rotatoria que se incrementa con la espera y<br />

disminuye después de concedido el servicio.<br />

Evitan monopolización del sistema asignando tiempos de procesador (time slot).<br />

Gestión de memoria proporciona protección a programas residentes.<br />

Gestión de archivo debe proporcionar protección y control de acceso debido a que<br />

pueden existir múltiples usuarios accesando un mismo archivo.<br />

33


<strong>Sistemas</strong> <strong>Operativos</strong> distribuidos.<br />

[SISTEMAS OPERATIVOS]<br />

Permiten distribuir trabajos, tareas o procesos, entre un conjunto de procesadores.<br />

Puede ser que este conjunto de procesadores esté en un equipo o en diferentes, en<br />

este caso es trasparente para el usuario. Existen dos esquemas básicos de éstos. Un<br />

sistema fuertemente acoplado es aquel que comparte la memoria y un reloj global,<br />

cuyos tiempos de acceso son similares para todos los procesadores. En un sistema<br />

débilmente acoplado los procesadores no comparten ni memoria ni reloj, ya que cada<br />

uno cuenta con su memoria local.<br />

Los sistemas distribuidos deben de ser muy confiables, ya que si un componente del<br />

sistema se compone otro componente debe de ser capaz de reemplazarlo.<br />

Entre los diferentes <strong>Sistemas</strong> <strong>Operativos</strong> distribuidos que existen tenemos los<br />

siguientes: Sprite, Solaris-MC, Mach, Chorus, Spring, Amoeba, Taos, etc.<br />

Características de los <strong>Sistemas</strong> <strong>Operativos</strong> distribuidos:<br />

Colección de sistemas autónomos capaces de comunicación y cooperación<br />

mediante interconexiones hardware y software .<br />

Gobierna operación de un S.C. y proporciona abstracción de máquina virtual a los<br />

usuarios.<br />

Objetivo clave es la transparencia.<br />

Generalmente proporcionan medios para la compartición global de recursos.<br />

Servicios añadidos: denominación global, sistemas de archivos distribuidos,<br />

facilidades para distribución de cálculos (a través de comunicación de procesos<br />

internodos, llamadas a procedimientos remotos, etc.).<br />

<strong>Sistemas</strong> <strong>Operativos</strong> de red.<br />

Son aquellos sistemas que mantienen a dos o más computadoras unidas através de<br />

algún medio de comunicación (físico o no), con el objetivo primordial de poder<br />

compartir los diferentes recursos y la información del sistema.<br />

El primer Sistema Operativo de red estaba enfocado a equipos con un procesador<br />

Motorola 68000, pasando posteriormente a procesadores Intel como Novell Netware.<br />

Los <strong>Sistemas</strong> <strong>Operativos</strong> de red mas ampliamente usados son: Novell Netware,<br />

Personal Netware, LAN Manager, Windows NT Server, UNIX, LANtastic.<br />

34


<strong>Sistemas</strong> <strong>Operativos</strong> paralelos.<br />

[SISTEMAS OPERATIVOS]<br />

En estos tipos de <strong>Sistemas</strong> <strong>Operativos</strong> se pretende que cuando existan dos o más<br />

procesos que compitan por algún recurso se puedan realizar o ejecutar al mismo<br />

tiempo.<br />

En UNIX existe también la posibilidad de ejecutar programas sin tener que atenderlos<br />

en forma interactiva, simulando paralelismo (es decir, atender de manera concurrente<br />

varios procesos de un mismo usuario). Así, en lugar de esperar a que el proceso<br />

termine de ejecutarse (como lo haría normalmente), regresa a atender al usuario<br />

inmediatamente después de haber creado el proceso.<br />

Ejemplos de estos tipos de <strong>Sistemas</strong> <strong>Operativos</strong> están: Alpha, PVM, la serie AIX, que<br />

es utilizado en los sistemas RS/6000 de IBM.<br />

1.5 Estructura niveles o estratos de diseño<br />

El núcleo o kernel se divide en 5 capas o niveles:<br />

Nivel 1. Gestión de Memoria: Proporciona las facilidades de bajo nivel para la<br />

gestión de memoria secundaria necesaria para la ejecución de procesos.<br />

Nivel 2. Procesador: Se encarga de activar los cuantums de tiempo para cada uno<br />

de los procesos, creando interrupciones de hardware cuando no son respetadas.<br />

Nivel 3. Entrada/Salida: Proporciona las facilidades para poder utilizar los<br />

dispositivos de E/S requeridos por los procesos.<br />

Nivel 4. Información o Aplicación o Intérprete de Lenguajes: Facilita la<br />

comunicación con los lenguajes y el sistema operativo para aceptar las órdenes en<br />

cada una de las aplicaciones. Ejecutando un programa el software de este nivel crea<br />

el ambiente de trabajo e invoca a los procesos correspondientes.<br />

Nivel 5. Control de Archivos: Proporciona la facilidad para el almacenamiento a<br />

largo plazo y manipulación de archivos con nombre, va asignando espacio y acceso<br />

de datos en memoria.<br />

El núcleo o kernel realiza diferentes funciones tales como:<br />

Manejo de interrupciones.<br />

Creación y destrucción de procesos.<br />

35


[SISTEMAS OPERATIVOS]<br />

Cambio de estado de los procesos.<br />

Despacho<br />

Suspensión y reanudación de procesos.<br />

Sincronización de procesos.<br />

Comunicación entre procesos.<br />

Manipulación de los bloques de control de procesos.<br />

Apoyo para las actividades de entrada/salida.<br />

Apoyo para asignación y liberación de memoria.<br />

Apoyo para el sistema de archivos.<br />

Apoyo para el mecanismo de llamada y retorno de un procedimiento.<br />

Apoyo para ciertas funciones de contabilidad del sistema.<br />

El núcleo y los procesos<br />

Una definición más específica de lo que es el núcleo (Kernel) de un sistema operativo<br />

es: un conjunto de rutinas cuya misión es la de gestionar el procesador, la memoria, la<br />

entrada/salida y el resto de procesos disponibles en la instalación. Toda esta gestión<br />

la realiza para atender al funcionamiento y peticiones de los trabajos que se ejecutan<br />

en el sistema.<br />

El esquema general de la gestión del procesador, es el siguiente:<br />

Definición y concepto de proceso.<br />

El Bloque de Control de Proceso (PCB) como imagen donde el sistema<br />

operativo ve el estado del proceso.<br />

Estados por los que pasa un proceso a lo largo de su existencia en la<br />

computadora.<br />

Operaciones que se pueden realizar sobre un proceso.<br />

Clasificación de los procesos según su forma de ejecución, de carga, etc.<br />

Por proceso debe entenderse: un programa en ejecución junto con el entorno<br />

asociado (registros, variables, etc.).<br />

36


1.6 Núcleo<br />

[SISTEMAS OPERATIVOS]<br />

El Núcleo o Kernel consiste en la parte<br />

principal del código del sistema operativo, el<br />

cual se encargan de controlar y administrar los<br />

servicios y peticiones de recursos y de<br />

hardware con respecto a uno o varios<br />

procesos, en otras palabras, el kernel es el<br />

corazón del sistema operativo.<br />

Parte esencial de un sistema operativo que<br />

provee los servicios más básicos del sistema.<br />

Se encarga de gestionar los recursos como el<br />

acceso seguro al hardware de la computadora. Se encarga también del multiplexado,<br />

determinando qué programa accederá a un determinado hardware si dos o más<br />

quieren usarlo al mismo tiempo.<br />

El kernel también ofrece una serie de abstracciones del hardware para que los<br />

programadores no tengan que acceder directamente al hardware, proceso que puede<br />

ser complicado.<br />

Entre las funciones principales del kernel se encuentran:<br />

La gestión de memoria.<br />

La administración del sistema de archivos.<br />

La administración de servicios de entrada/salida.<br />

La asignación de recursos entre los usuarios.<br />

La manipulación del hardware se realiza por medio de controladores de dispositivo,<br />

que conocen la forma de comunicarse directamente con el hardware de la máquina.<br />

El software por su parte puede comunicarse con el kernel por medio de llamadas al<br />

sistema, las cuales le indican al kernel que realice tareas como abrir y escribir un<br />

archivo, ejecutar un programa, finalizar un proceso u obtener la fecha y hora del<br />

sistema.<br />

37


[SISTEMAS OPERATIVOS]<br />

Unidad 2. Administración de Procesos y del procesador<br />

2.1 Concepto de proceso<br />

Un proceso puede informalmente entenderse como<br />

un programa en ejecución. Formalmente un proceso<br />

es "Una unidad de actividad que se caracteriza por la<br />

ejecución de una secuencia de instrucciones, un<br />

estado actual, y un conjunto de recursos del sistema<br />

asociados".1<br />

Para entender lo que es un proceso y la diferencia<br />

entre un programa y un proceso, A. S. Tanenbaum<br />

propone la analogía "Un científico computacional con<br />

mente culinaria hornea un pastel de cumpleaños para su hija; tiene la receta para un<br />

pastel de cumpleaños y una cocina bien equipada con todos los ingredientes<br />

necesarios, harina, huevo, azúcar, leche, etcétera." Situando cada parte de la<br />

analogía se puede decir que la receta representa el programa (el algoritmo), el<br />

científico computacional es el procesador y los ingredientes son las entradas del<br />

programa. El proceso es la actividad que consiste en que el científico computacional<br />

vaya leyendo la receta, obteniendo los ingredientes y horneando el pastel.<br />

Cada proceso tiene su contador de programa, registros y variables, aislados de otros<br />

procesos, incluso siendo el mismo programa en ejecución 2 veces. Cuándo este<br />

último caso sucede, el sistema operativo usa la misma región de memoria de código,<br />

debido a que dicho código no cambiará, a menos que se ejecute una versión distinta<br />

del programa.<br />

Los procesos son gestionados por el sistema operativo y están formados por:<br />

Las instrucciones de un programa destinadas a ser ejecutadas por el<br />

microprocesador.<br />

Su estado de ejecución en un momento dado, esto es, los valores de los registros de<br />

la unidad central de procesamiento para dicho programa.<br />

38


[SISTEMAS OPERATIVOS]<br />

Su memoria de trabajo (memoria crítica), es decir, la memoria que ha reservado y sus<br />

contenidos.<br />

Otra información que permite al sistema operativo su planificación.<br />

Un proceso se rige en pequeñas porciones, conocidas como páginas, y cada proceso<br />

tiene su propia tabla de paginación, fungiendo como una optimización del sistema<br />

operativo ante los fallo de página.<br />

Esta definición varía ligeramente en el caso de sistemas operativos multihilo, donde<br />

un proceso consta de uno o más hilos, la memoria de trabajo (compartida por todos<br />

los hilos) y la información de planificación. Cada hilo consta de instrucciones y estado<br />

de ejecución.<br />

Los procesos son creados y eliminados por el sistema operativo, así como también<br />

éste se debe hacer cargo de la comunicación entre procesos, pero lo hace a petición<br />

de otros procesos (interrupción o tiempo de reloj). El mecanismo por el cual un<br />

proceso crea otro proceso se denomina bifurcación (fork). El proceso de arranque de<br />

GNU/Linux inicia con un sólo proceso (init) y después comienza a crear los hilos<br />

necesarios para tener el sistema listo para su uso. Los nuevos procesos pueden ser<br />

independientes y no compartir el espacio de memoria con el proceso que los ha<br />

creado o ser creados en el mismo espacio de memoria.<br />

En los sistemas operativos multihilo es posible crear tanto hilos como procesos. La<br />

diferencia estriba en que un proceso solamente puede crear hilos para sí mismo y en<br />

que dichos hilos comparten toda la memoria reservada para el proceso.<br />

Los procesos pueden ser cooperativos o independientes. Dos o más procesos pueden<br />

cooperar mediante señales de forma que uno obliga a detenerse a los otros hasta que<br />

reciban una señal para continuar.<br />

Se usa una variable de tipo semáforo para sincronizar los procesos.<br />

Si un proceso está esperando una señal, se suspende hasta que la señal se envíe.<br />

Se mantiene una cola de procesos en espera en el semáforo.<br />

La forma de elegir los procesos de la cola en espera es mediante una política first in<br />

first out.<br />

39


[SISTEMAS OPERATIVOS]<br />

La sincronización explícita entre procesos es un caso particular del estado<br />

"bloqueado". En este caso, el suceso que permite desbloquear un proceso no es una<br />

operación de entrada/salida, sino una señal generada a propósito por el programador<br />

desde otro proceso.<br />

Hay cuatro eventos principales que provocan la creación de procesos:<br />

El arranque del sistema.<br />

La ejecución, desde un proceso, de una llamada al sistema para la creación de otro<br />

proceso.<br />

Una petición de usuario para crear un proceso.<br />

El inicio de un trabajo por lotes.<br />

Los procesos pueden contener uno o más hilos, haciendo más eficiente las tareas,<br />

asimismo la complejidad de los algoritmos de sincronización, ya que podría ocurrir la<br />

condición de carrera muy a menudo, inclusive los indeseados interbloqueos.<br />

2.2 Estados y transiciones de los procesos<br />

El principal trabajo del procesador es ejecutar las<br />

instrucciones de máquina que se encuentran en<br />

memoria principal. Estas instrucciones se encuentran<br />

en forma de programas. Para que un programa<br />

pueda ser ejecutado, el sistema operativo crea un<br />

nuevo proceso, y el procesador ejecuta una tras otra<br />

las instrucciones del mismo. En un entorno de<br />

multiprogramación, el procesador intercalará la<br />

ejecución de instrucciones de varios programas que<br />

se encuentran en memoria. El sistema operativo es<br />

el responsable de determinar las pautas de intercalado y asignación de recursos a<br />

cada proceso.<br />

Aunque cada proceso se una entidad independiente, con su propio contador de<br />

programa y estado interno, los procesos a menudo necesitan interactuar con otros<br />

40


[SISTEMAS OPERATIVOS]<br />

procesos. Un proceso podría generar ciertas salidas que otro proceso utilizan como<br />

entradas, en el comando de Shell.<br />

Cuando un proceso se bloquea, lo que hace porque le es imposible continuar<br />

lógicamente, casi siempre porque está separando entradas que todavía no están<br />

disponibles, también puede ser que un programa que conceptualmente esta listo y en<br />

condiciones de ejecutarse sea detenido porque el sistema operativo ha decidido<br />

asignar la CPU a otro proceso durante un tiempo. Estas dos condiciones son<br />

totalmente distintas, en el primer caso, la suspensión es inherente al problema (no es<br />

posible procesar la línea de comandos del usuarios antes de que este la teclee). En el<br />

segundo caso, se trata de un tecnicismo del sistema (no hay suficiente: CPU para<br />

darle a cada proceso su propio procesador privado).<br />

1.- Ejecutándose (usando realmente la CPU en este instante).<br />

2.- Listo (se puede ejecutar, pero se suspendió temporalmente para dejar que<br />

otro proceso se ejecute).<br />

3.- Bloqueo (no puede ejecutarse en tanto no ocurra algún evento externo).<br />

Puede haber cuánto transiciones entre estos tres estados, como se muestra:<br />

La transacción 1 ocurre cuando un proceso descubre que no puede continuar. En<br />

algunos sistemas el proceso debe ejecutar una llamada al sistema, block, para pasar<br />

al estado bloqueado. En otros sistemas, incluido MINIX, cuando un proceso lee de un<br />

conducto o de un archivo especial, (p.ej., una terminal) y no hay entradas disponibles,<br />

se bloquea automáticamente.<br />

Las transiciones 2 y 3 son causadas por el planificador de procesos, un parte del<br />

sistema operativo, sin que el proceso se entere siquiera de ellas.<br />

La transición 2 ocurre cuando el planificador decide que el proceso en ejecución ya se<br />

ejecutó durante suficiente tiempo y es ahora de dejar que otros procesos tengan algo<br />

de tiempo de CPU.<br />

41


[SISTEMAS OPERATIVOS]<br />

La transacción 3 ocurre cuando todos los demás procesos han disfrutado de una<br />

porción justa y es hora de que el primer proceso reciba otra vez la CPU para<br />

ejecutarse.<br />

La transacción 4 ocurre cuando acontece el suceso externo que un proceso estaba<br />

esperando (como la llegada de entrada). Sin ningún otro proceso se está ejecutando<br />

en ese instante, se dispara de inmediato la transacción 3 y el proceso comienza a<br />

ejecutarse.<br />

En caso contrario, el proceso tal vez tenga que esperar en el estado listo durante<br />

cierto tiempo hasta que la CPU esté disponible. Usando el modelo de procesos, es<br />

mucho más fácil visualizar lo que está sucediendo dentro del sistema.<br />

2.3 Procesos ligeros Hilos o hebras<br />

El concepto de proceso engloba dos conceptos separados y potencialmente<br />

independientes: uno relativo a la propiedad de recursos y otro que hace referencia a la<br />

ejecución.<br />

Unidad que posee recursos: A un proceso se le asigna un espacio de memoria y, de<br />

tanto en tanto, se le puede asignar otros recursos como dispositivos de E/S o ficheros.<br />

Unidad a la que se le asigna el procesador: Un proceso es un flujo de ejecución<br />

(una traza) a través de uno o más programas. Esta ejecución se entremezcla con la<br />

de otros procesos. De tal forma, que un proceso tiene un estado (en ejecución, listo,<br />

etc) y una prioridad de expedición u origen. La unidad planificada y expedida por el<br />

sistema operativo es el proceso.<br />

En la mayoría de los sistemas operativos, estas dos características son, de hecho, la<br />

esencia de un proceso. Sin embargo, son independientes, y pueden ser tratadas como<br />

tales por el sistema operativo. Esta distinción ha conducido en los sistemas operativos<br />

actuales a desarrollar la construcción conocida como thread, cuyas traducciones más<br />

frecuentes son hilo, hebra y proceso ligero. Si se tiene esta división de características,<br />

la unidad de asignación de la CPU se conoce como hilo, mientras que a la unidad que<br />

posee recursos se le llama proceso.<br />

42


[SISTEMAS OPERATIVOS]<br />

Dentro de un proceso puede haber uno o más hilos de control cada uno con:<br />

Un estado de ejecución (en ejecución, listo, bloqueado)<br />

Un contexto de procesador, que se salva cuando no esté ejecutándose.<br />

Una pila de ejecución.<br />

Algún almacenamiento estático para variables locales.<br />

Acceso a la memoria y a los recursos de ese trabajo que comparte con los<br />

otros hilos.<br />

Los beneficios clave de los hilos se derivan de las implicaciones del rendimiento: se<br />

tarda menos tiempo en crear un nuevo hilo de un proceso que ya existe, en terminarlo,<br />

y en hacer un cambio de contexto entre hilos de un mismo proceso. Al someter a un<br />

mismo proceso a varios flujos de ejecución se mantiene una única copia en memoria<br />

del código, y no varias.<br />

Un ejemplo de aplicación que podría hacer uso de los hilos es un servidor de ficheros<br />

de una red de área local. Cada vez que llega una solicitud de una operación sobre un<br />

fichero, se puede generar un nuevo hilo para su gestión. El servidor gestiona multitud<br />

de solicitudes, por tanto, se pueden crear y destruir muchos hilos en poco tiempo para<br />

dar servicio a estas peticiones. Si el servidor es un multiprocesador, se pueden<br />

ejecutar varios hilos de un mismo proceso simultáneamente y en diferentes<br />

procesadores.[2]<br />

Un proceso ligero (thread o hebra) es un programa en ejecución que comparte la<br />

imagen de la memoria y otras informaciones con otros procesos ligeros.<br />

43


[SISTEMAS OPERATIVOS]<br />

Es una unidad básica de utilización de la CPU consistente en un juego de registros y<br />

un espacio de pila. Comparte el código, los datos y los recursos con sus hebras pares<br />

Una tarea (o proceso pesado) está formada ahora por una o más hebras<br />

Una hebra sólo puede pertenecer a una tarea<br />

CARACTERISTICAS<br />

Se comparten recursos. La compartición de la memoria permite a las hebras<br />

pares comunicarse sin usar ningún mecanismo de comunicación inter-proceso<br />

del SO.<br />

La conmutación de contexto es más rápida gracias al extenso compartir de<br />

recursos<br />

No hay protección entre las hebras. Una hebra puede escribir en la pila de otra<br />

hebra del mismo proceso.<br />

44


[SISTEMAS OPERATIVOS]<br />

ESTADOS DE LOS PROCESOS LIGEROS<br />

Un proceso ligero puede estar ejecutando, listo o bloqueado.<br />

PARALELISMO<br />

Los procesos ligeros permiten paralelizar una aplicación.[3]<br />

2.4 Concurrencia y secuenciabilidad<br />

La concurrencia comprende un gran número de cuestiones de diseño, incluyendo la<br />

comunicación entre procesos, comparición y competencia por los recursos,<br />

sincronización de la ejecución de varios procesos y asignación del tiempo de<br />

procesador a los procesos y es fundamental para que existan diseños como<br />

Multiprogramación, Multiproceso y Proceso distribuido<br />

Los procesos son concurrentes si existen simultáneamente. Cuando dos o más<br />

procesos llegan al mismo tiempo a ejecutarse, se dice que se ha presentado una<br />

45


[SISTEMAS OPERATIVOS]<br />

concurrencia de procesos. Es importante mencionar que para que dos o más<br />

procesos sean concurrentes, es necesario que tengan alguna relación entre ellos.<br />

La concurrencia puede presentarse en tres contextos diferentes:<br />

• Varias aplicaciones: La multiprogramación se creó para permitir que el tiempo<br />

de procesador de la máquina fuese compartido dinámicamente entre varios<br />

trabajos o aplicaciones activas.<br />

• Aplicaciones estructuradas: Como ampliación de los principios del diseño<br />

modular y la programación estructurada, algunas aplicaciones pueden<br />

implementarse eficazmente como un conjunto de procesos concurrentes.<br />

• Estructura del sistema operativo: Las mismas ventajas de estructuración son<br />

aplicables a los programadores de sistemas y se ha comprobado que algunos<br />

sistemas operativos están implementados como un conjunto de procesos.<br />

Existen tres modelos de computadora en los que se pueden ejecutar procesos<br />

concurrentes:<br />

• Multiprogramación con un único procesador. El sistema operativo se encarga<br />

de ir repartiendo el tiempo del procesador entre los distintos procesos,<br />

intercalando la ejecución de los mismos para dar así una apariencia de<br />

ejecución simultánea.<br />

• Multiprocesador. Es una maquina formada por un conjunto de procesadores<br />

que comparten memoria principal. En este tipo de arquitecturas, los procesos<br />

concurrentes no sólo pueden intercalar su ejecución sino también<br />

superponerla.<br />

• Multicomputadora. Es una máquina de memoria distribuida, que está formada<br />

por una serie de computadoras. En este tipo de arquitecturas también es<br />

posible la ejecución simultánea de los procesos sobre los diferentes<br />

procesadores.<br />

En general, la concurrencia será aparente siempre que el número de procesos sea<br />

mayor que el de procesadores disponibles, es decir, cuando haya más de un proceso<br />

por procesador. La concurrencia será real cuando haya un proceso por procesador.<br />

46


[SISTEMAS OPERATIVOS]<br />

Aunque puede parecer que la intercalación y la superposición de la ejecución de<br />

procesos presentan formas de ejecución distintas, se verá que ambas pueden<br />

contemplase como ejemplos de procesos concurrentes.<br />

Existen diversas razones que motivan la ejecución de procesos concurrentes en un<br />

sistema:<br />

• Acelera los cálculos. Si se quiere que una tarea se ejecute con mayor rapidez,<br />

lo que se puede hacer es dividirla en procesos, cada uno de los cuales se<br />

ejecuta en paralelo con los demás.<br />

• Posibilita el uso interactivo a múltiples usuarios que trabajan de forma<br />

simultánea.<br />

• Permite un mejor aprovechamiento de los recursos, en especial de la CPU, ya<br />

que pueden aprovechar las fases de entrada-salida de unos procesos para<br />

realizar las fases de procesamiento de otros.<br />

Así como existen las razones que motivan la ejecución de procesos concurrentes,<br />

también existen sus contras:<br />

.<br />

• Inanición e interrupción de procesos<br />

• Ocurrencia de bloqueos<br />

• Que dos o más procesos requieran el mismo recurso (No apropiativo).<br />

TIPOS DE PROCESOS CONCURRENTES.<br />

Los procesos que ejecutan de forma concurrente en un sistema se pueden clasificar<br />

como:<br />

Proceso independiente: Es aquel que ejecuta sin requerir la ayuda o cooperación de<br />

otros procesos. Un claro ejemplo de procesos independientes son los diferentes shells<br />

que se ejecutan de forma simultánea en un sistema.<br />

47


[SISTEMAS OPERATIVOS]<br />

Procesos cooperantes: Son aquellos que están diseñados para trabajar<br />

conjuntamente en alguna actividad, para lo que deben ser capaces de comunicarse e<br />

interactuar entre ellos.<br />

En ambos tipos de procesos (independientes y cooperantes), puede producirse una<br />

serie de interacciones entre ellos y pueden ser de dos tipos:<br />

• Interacciones motivadas porque los procesos comparten o compiten por el<br />

acceso a recursos físicos o lógicos. Por ejemplo, dos procesos independientes<br />

compiten por el acceso a disco o para modificar una base de datos.<br />

• Interacción motivada porque los procesos se comunican y sincronizan entre sí<br />

para alcanzar un objetivo común, Por ejemplo, un compilador que tiene varios<br />

procesos que trabajan conjuntamente para obtener un solo archivo de salida.<br />

ELEMENTOS A GESTIONAR Y DISEÑAR A CAUSA DE LA CONCURRENCIA<br />

Se pueden enumerar los siguientes:<br />

1. El sistema operativo debe ser capaz de seguir la pista de los distintos procesos<br />

activos. Esto lo hace por medio de PBC’s (Bloque de Control de Procesos)<br />

2. El sistema operativo debe asignar y quitar los distintos recursos a cada proceso<br />

activo. Entre estos recursos se incluyen:<br />

• Tiempo de procesador: Es función de la planificación.<br />

• Memoria.<br />

• Archivos.<br />

• Dispositivos de E/S:<br />

3. El sistema operativo debe proteger los datos y los recursos físicos de cada proceso<br />

contra injerencias no intencionadas de otros procesos.<br />

4. Los resultados de un proceso deben ser independientes de la velocidad relativa a la<br />

que se realiza la ejecución con respecto a otros procesos concurrentes<br />

48


[SISTEMAS OPERATIVOS]<br />

2.5 Niveles objetivos y criterios de planificación<br />

NIVELES DE PLANIFICACIÓN<br />

.<br />

La planificación es el proceso por el cual el sistema operativo selecciona que proceso<br />

ejecutar. La selección del proceso se basa en alguno de los algoritmos de<br />

planificación.<br />

La planificación de la CPU, en el sentido de conmutarla entre los distintos procesos,<br />

es una de las funciones del sistema operativo. Este despacho es llevado a cabo por<br />

un pequeño programa llamado planificador a corto plazo o dispatcher (despachador).<br />

La misión del dispatcher consiste en asignar la CPU a uno de los procesos<br />

ejecutables del sistema, para ello sigue un determinado algoritmo.<br />

Los acontecimientos que pueden provocar la llamada al dispatcher dependen del<br />

sistema (son un subconjunto de las interrupciones), pero son alguno de estos:<br />

El proceso en ejecución acaba su ejecución o no puede seguir ejecutándose<br />

(por una E/S, operación WAIT, etc).<br />

Un elemento del sistema operativo ordena el bloqueo del proceso en ejecución<br />

El proceso en ejecución agota su cuantum o cuanto de estancia en la CPU.<br />

Un proceso pasa a estado listo.<br />

Hay que destacar el hecho de que cuanto menos se llame al dispatcher menos tiempo<br />

ocupa la CPU un programa del sistema operativo, y, por tanto, se dedica más tiempo<br />

a los procesos del usuario (un cambio de proceso lleva bastante tiempo).<br />

Así, si sólo se activa el dispatcher como consecuencia de los 2 primeros<br />

acontecimientos se estará haciendo un buen uso del procesador. Este criterio es<br />

acertado en sistemas por lotes en los que los programas no son interactivos. Sin<br />

embargo, en un sistema de tiempo compartido no es adecuado, pues un proceso que<br />

se dedicara a realizar cálculos, y no realizara E/S, monopolizaría el uso de la CPU. En<br />

estos sistemas hay que tener en cuenta el conjunto de todos los procesos,<br />

activándose el dispatcher con la circunstancia tercera y, posiblemente, la cuarta. Los<br />

sistema operativos en que las dos siguientes circunstancias no provocan la activación<br />

del dispatcher muestran preferencia por el proceso en ejecución, si no ocurre esto se<br />

tiene más en cuenta el conjunto de todos los procesos.<br />

49


[SISTEMAS OPERATIVOS]<br />

Se puede definir el scheduling -algunas veces traducido como -planificación- como el<br />

conjunto de políticas y mecanismos construidos dentro del sistema operativo que<br />

gobiernan la forma de conseguir que los procesos a ejecutar lleguen a ejecutarse.<br />

El scheduling está asociado a las cuestiones de:<br />

Cuándo introducir un nuevo proceso en el Sistema.<br />

Determinar el orden de ejecución de los procesos del sistema.<br />

El scheduling está muy relacionado con la gestión de los recursos. Existen tres niveles<br />

de scheduling, estos niveles son:<br />

Planificador de la CPU o a corto plazo.<br />

Planificador a medio plazo.<br />

Planificador a largo plazo.<br />

En la planificación de procesos se suelen incluir varios niveles, en función del periodo<br />

temporal que cubren:<br />

- PLANIFICACIÓN A LARGO PLAZO<br />

Este planificador está presente en algunos sistemas que admiten además de procesos<br />

interactivos trabajos por lotes. Usualmente, se les asigna una prioridad baja a los<br />

trabajos por lotes, utilizándose estos para mantener ocupados a los recursos del<br />

sistema durante períodos de baja actividad de los procesos interactivos.<br />

Normalmente, los trabajos por lotes realizan tareas rutinarias como el cálculo de<br />

nóminas; en este tipo de tareas el programador puede estimar su gasto en recursos,<br />

indicándoselo al sistema. Esto facilita el funcionamiento del planificador a largo plazo<br />

El objetivo primordial del planificador a largo plazo es el de dar al planificador de la<br />

CPU una mezcla equilibrada de trabajos, tales como los limitados por la CPU (utilizan<br />

mucho la CPU) o la E/S. Así, por ejemplo, cuando la utilización de la CPU es baja, el<br />

planificador puede admitir más trabajos para aumentar el número de procesos listos y,<br />

con ello, la probabilidad de tener algún trabajo útil en espera de que se le asigne la<br />

CPU. A la inversa, cuando la utilización de la CPU llega a ser alta, y el tiempo de<br />

respuesta comienza a reflejarlo, el planificador a largo plazo puede optar por reducir la<br />

frecuencia de admisión de trabajos.<br />

50


[SISTEMAS OPERATIVOS]<br />

Normalmente, se invoca al planificador a largo plazo siempre que un proceso termina.<br />

La frecuencia de invocación depende, pues, de la carga del sistema, pero<br />

generalmente es mucho menor que la de los otros dos planificadores. Esta baja<br />

frecuencia de uso hace que este planificador pueda permitirse utilizar algoritmos<br />

complejos, basados en las estimaciones de los nuevos trabajos.<br />

- PLANIFICACIÓN A MEDIANO PLAZO<br />

En los sistemas de multiprogramación y tiempo compartido varios procesos residen en<br />

la memoria principal. El tamaño limitado de ésta hace que el número de procesos que<br />

residen en ella sea finito. Puede ocurrir que todos los procesos en memoria estén<br />

bloqueados, desperdiciándose así la CPU. En algunos sistemas se intercambian<br />

procesos enteros (swap) entre memoria principal y memoria secundaria (normalmente<br />

discos), con esto se aumenta el número de procesos, y, por tanto, la probabilidad de<br />

una mayor utilización de la CPU.<br />

El planificador a medio plazo es el encargado de regir las transiciones de procesos<br />

entre memoria principal y secundaria, actúa intentando maximizar la utilización de los<br />

recursos. Por ejemplo, transfiriendo siempre a memoria secundaria procesos<br />

bloqueados, o transfiriendo a memoria principal procesos bloqueados únicamente por<br />

no tener memoria.<br />

- PLANIFICACIÓN A CORTO PLAZO<br />

Qué proceso será el que se ejecutará en el procesador en el instante siguiente.<br />

51


[SISTEMAS OPERATIVOS]<br />

Expulsión denota si un proceso acapara el procesador cuando está ejecutándose.<br />

Existen sistemas con y sin expulsión:<br />

a) Sin expulsión: un proceso conserva el uso del procesador mientras lo desee; es<br />

decir, mientras no solicite del SO un servicio que lo bloquee. Ventajas: minimiza<br />

tiempo de planificación. Inconvenientes: un proceso podría monopolizar el uso del<br />

procesador<br />

b) Con expulsión: el SO puede desalojar a un proceso del uso del procesador (sin<br />

que el proceso lo haya solicitado). Ventaja: control sobre el tiempo de ejecución de<br />

cada proceso. Inconveniente: gasto de tiempo.<br />

OBJETIVOS Y CRITERIOS DE PLANIFICACIÓN<br />

Los objetivos del planificador se resumen en:<br />

a) Reparto equitativo del tiempo de procesador<br />

b) Eficiencia en el uso del procesador<br />

c) Menor tiempo de respuesta en uso interactivo<br />

d) Cumplir plazos de ejecución de los sistemas de tiempo real<br />

El principal objetivo de la planificación a corto plazo es repartir el tiempo del<br />

procesador de forma que se optimicen algunos puntos del comportamiento del<br />

sistema. Generalmente se fija un conjunto de criterios con los que evaluar las diversas<br />

estrategias de planificación. El criterio más empleado establece dos clasificaciones.<br />

En primer lugar, se puede hacer una distinción entre los criterios orientados a los<br />

usuarios y los orientados al sistema. Los criterios orientados al usuario se refieren al<br />

comportamiento del sistema tal y como lo perciben los usuarios o los procesos.<br />

Uno de los parámetros es el tiempo de respuesta. El tiempo de respuesta es el<br />

periodo de tiempo transcurrido desde que se emite una solicitud hasta que la<br />

respuesta aparece en la salida. Sería conveniente disponer de una política de<br />

planificación que ofrezca un buen servicio a diversos usuarios.<br />

52


[SISTEMAS OPERATIVOS]<br />

Otros criterios están orientados al sistema, esto es, se centran en el uso efectivo y<br />

eficiente del procesador. Un ejemplo puede ser la productividad, es decir, el ritmo con<br />

el que los procesos terminan. La productividad es una medida muy válida del<br />

rendimiento de un sistema y que sería deseable maximizar.<br />

Otra forma de clasificación es considerar los criterios relativos al rendimiento del<br />

sistema y los que no lo son. Los criterios relativos al rendimiento son cuantitativos y,<br />

en general, pueden evaluarse o ser analizados fácilmente. Algunos ejemplos son el<br />

tiempo de respuesta y la productividad.<br />

Los criterios no relativos al rendimiento son, en cambio cualitativos y no pueden ser<br />

evaluados fácilmente. Un ejemplo de estos criterios es la previsibilidad. Sería<br />

conveniente que el servicio ofrecido a los usuarios tenga las mismas características<br />

en todo momento, independientemente de la existencia de otros trabajos ejecutados<br />

por el sistema.<br />

En particular, una disciplina de planificación debe:<br />

Ser equitativa: debe intentar hacer una planificación justa, esto es, se debe tratar a<br />

todos los procesos de la misma forma y no aplazar indefinidamente ningún proceso.<br />

La mejor forma de evitarlo es emplear alguna técnica de envejecimiento; es decir,<br />

mientras un proceso espera un recurso, su prioridad debe crecer.<br />

Ser eficiente: debe maximizar el uso de los recursos tales como intentar que la<br />

ocupación de la CPU sea máxima. Al mismo tiempo se debe intentar reducir el gasto<br />

extra por considerar que es trabajo no productivo. Normalmente el idear algoritmos<br />

eficientes supone invertir recursos en gestión del propio sistema.<br />

Lograr un tiempo bueno de respuesta, es decir, que los usuarios interactivos reciban<br />

respuesta en tiempos aceptables.<br />

Lograr un tiempo de proceso global predecible. Esto quiere decir que un proceso debe<br />

ejecutarse aproximadamente en el mismo tiempo y casi al mismo costo con<br />

independencia de la carga del sistema.<br />

Elevar al máximo la productividad o el rendimiento, esto es, maximizar el número de<br />

trabajos procesados por unidad de tiempo. Eso supone, por un lado, dar preferencia a<br />

los procesos que ocupan recursos decisivos y, por otro, favorecer a los procesos que<br />

53


[SISTEMAS OPERATIVOS]<br />

muestran un comportamiento deseable. En el primer caso conseguimos liberar el<br />

recurso cuanto antes para que esté disponible para un proceso de mayor prioridad.<br />

Con el segundo criterio escogemos a los procesos que no consumen muchos<br />

recursos dejándole al sistema mayor capacidad de actuación.<br />

Estos criterios son dependientes entre sí y es imposible optimizar todos de forma<br />

simultánea. Por ejemplo, obtener un buen tiempo de respuesta puede exigir un<br />

algoritmo de planificación que alterne entre los procesos con frecuencia, lo que<br />

incrementa la sobrecarga del sistema y reduce la productividad. Por tanto, en el<br />

diseño de una política de planificación entran en juego compromisos entre requisitos<br />

opuestos; el peso relativo que reciben los distintos requisitos dependerá de la<br />

naturaleza y empleo del sistema<br />

2.6 Técnicas de administración del planificador<br />

Las disciplinas de planificación pueden ser:<br />

• Expropiativas<br />

• No expropiativas<br />

Se denomina planificador al software del sistema operativo encargado de asignar los<br />

recursos de un sistema entre los procesos que los solicitan. Siempre que haya tomar<br />

una decisión, el planificador debe decidir cuál de los procesos que compiten por la<br />

posesión de un determinado recursos lo recibirá.<br />

Los algoritmos (técnicas) tienen distintas propiedades según los criterios en los que se<br />

basen para su construcción, lo cual se refleja en qué tipo de procesos se puede ver<br />

favorecido frente a otro en la disputa del procesador. Antes de realizar la elección de<br />

un algoritmo se debe considerar las propiedades de estos frente al criterio de diseño<br />

elegido. Algunos de estos son:<br />

a) Eficacia: Se expresa como un porcentaje del tiempo medio de utilización. Aunque<br />

puede parecer lógico intentar mantener este parámetro próximo al 100%, con un valor<br />

tan elevado otros aspectos importantes de medida del comportamiento del sistema<br />

pueden verse deteriorados, como por ejemplo el tiempo medio de espera.<br />

54


[SISTEMAS OPERATIVOS]<br />

b) Rendimiento: Es una medida del número de procesos completados por unidad de<br />

tiempo. Por ejemplo 10 procesos por segundo.<br />

c) Tiempo de retorno o regreso: Es el intervalo de tiempo que transcurre desde que un<br />

proceso se crea o presenta hasta que completa por el sistema.<br />

d) Tiempo de espera: Es el tiempo que el proceso espera hasta que se le concede el<br />

procesador. Puede resultar una medida más adecuada de la eficiencia del sistema, ya<br />

que se elimina de la media el tiempo que tarda en ejecutarse el mismo.<br />

e) Tiempo de respuesta a un evento: Se denomina así el intervalo de tiempo que<br />

transcurre desde que se señala un evento hasta que se ejecuta la primera instrucción<br />

de la rutina de servicio de dicho evento. El criterio de selección de un algoritmo se<br />

suele basar en la maximización o minimización de una función de los parámetros<br />

anteriores.<br />

55


[SISTEMAS OPERATIVOS]<br />

Unidad 3 Administración de memoria<br />

3.1 Política y filosofía<br />

Filosofía<br />

La memoria principal puede ser considerada como un arreglo lineal de localidades de<br />

almacenamiento de un byte de tamaño. Cada localidad de almacenamiento tiene<br />

asignada una dirección que la identifica.<br />

Una de las funciones básicas que debe implementar un SO es la Administración de la<br />

Memoria para tener un control sobre los lugares donde están almacenados los datos y<br />

procesos que actualmente se están utilizando.<br />

Sea cual sea el esquema de organización del almacenamiento que se adopte para un<br />

sistema específico es necesario decidir que estrategias se deben utilizar para obtener<br />

un rendimiento óptimo.<br />

Políticas<br />

FIFO: Los procesos se despachan de acuerdo a su tiempo de llega a la cola de<br />

procesos listos, si un proceso llega al procesador sale hasta que termine. La política<br />

FIFO actualmente no se usa como el esquema principal de un sistema, pero si por<br />

ejemplo cuando se usa una política de prioridades y hay procesos con la misma<br />

prioridad, a estos se les podría aplicar FIFO.<br />

Round Robin: Los procesos se despachan en la forma que lo hace el FIFO, pero se<br />

les asigna una cantidad limitada de tiempo (CUANTUM) en el procesador, si no<br />

termina en ese lapso se manda al final de la lista de procesos listos.<br />

56


[SISTEMAS OPERATIVOS]<br />

SJF (Shortest job first - Prioridad del trabajo más corto): Se ejecuta primero el proceso<br />

en espera que tiene el menor tiempo estimado. SJF favorece a los procesos cortos, ya<br />

que los largos podrían llegar a rezagarse mucho tiempo e incluso nunca ejecutarse.<br />

SRT (Sortest remaining time scheduling ? Tiempo restante más corto. En SJF una vez<br />

que un proceso comienza su ejecución continúa hasta terminar. En SRT, un proceso<br />

en ejecución puede ser desposeído por uno nuevo de menor tiempo de ejecución.<br />

HRN: (highest response ratio next - Prioridad de la tasa de respuesta más alta):<br />

Política no apropiatíva que corrige el retraso excesivo de procesos grandes que<br />

produce el SJF, para así no caer en un favoritismo excesivo por los procesos cortos,<br />

lo logra usando una formula basada en el tiempo de espera y el tiempo de servicio,<br />

con lo cual la prioridad de cada trabajo no solo está en función del tiempo de servicio<br />

sino también del tiempo que ha esperado para ser atendido.(Ver Figura(5))<br />

57


3.2 Memoria real<br />

[SISTEMAS OPERATIVOS]<br />

La memoria real o principal es en donde son ejecutados los programas y procesos de<br />

una computadora y es el espacio real que existe en memoria para que se ejecuten los<br />

procesos.<br />

Por lo general esta memoria es de mayor costo que la memoria secundaria, pero el<br />

acceso a la información contenida en ella es de más rápido acceso.<br />

Solo la memoria cache es más rápida que la principal, pero su costo es a su vez<br />

mayor.<br />

Cuando no existe memoria virtual no hay diferenciación entre el espacio de<br />

direcciones y la memoria real; el espacio de direcciones que puede ser usado en los<br />

programas tiene idéntico tamaño al espacio de memoria real posible. Si se utiliza<br />

memoria virtual, el espacio de direcciones disponibles para los programas es aquel<br />

determinado por el tamaño de la memoria virtual implementada y no el espacio de<br />

direcciones provisto por la memoria real disponible (el espacio de la memoria virtual<br />

será mayor que el de la memoria real).<br />

La organización y administración de la “memoria principal”, “memoria primaria” o<br />

“memoria real” de un sistema ha sido y es uno de los factores más importantes en el<br />

diseño de los S. O. (Ver la figura 3.2.1)<br />

Los términos “memoria” y “almacenamiento” se consideran equivalentes.<br />

Los programas y datos deben estar en el almacenamiento principal para:<br />

Poderlos ejecutar. Referenciarlos directamente<br />

58


[SISTEMAS OPERATIVOS]<br />

3.3 Organización de memoria virtual<br />

La memoria virtual es una técnica para proporcionar la simulación de un espacio de<br />

memoria mucho mayor que la memoria física de una máquina. Esta ilusión permite<br />

que los programas se hagan sin tener en cuenta el tamaño exacto de la memoria<br />

física.<br />

La memoria virtual ha llegado a ser un componente esencial de la mayoría de los S.O<br />

actuales. Y como en un instante dado, en la memoria solo se tienen unos pocos<br />

fragmentos de un proceso dado, se pueden mantener más procesos en la memoria.<br />

La memoria virtual también simplifica la carga del programa para su ejecución llamado<br />

reubicación, este procedimiento permite que el mismo programa se ejecute en<br />

cualquier posición de la memoria física.<br />

3.4 Administración de memoria virtual<br />

La clave del concepto de memoria (almacenamiento) virtual está en la disociación:<br />

De las direcciones a las que hace referencia un programa.<br />

De las direcciones disponibles en la memoria real (almacenamiento primario).<br />

59


[SISTEMAS OPERATIVOS]<br />

Unidad 4 Administración de entrada salida<br />

4.1 Dispositivos y manejadores de dispositivos: device drivers<br />

Dispositivos de entrada/salida<br />

Se pueden clasificar en dos grandes categorías:<br />

1. Dispositivos de bloque<br />

2. Dispositivos de carácter<br />

Las principales características de los dispositivos de bloque son:<br />

- La información se almacena en bloques de tamaño fijo.<br />

- Cada bloque tiene su propia dirección.<br />

- Los tamaños más comunes de los bloques van desde los 128 bytes hasta los<br />

1.024 bytes.<br />

- Se puede leer o escribir en un bloque de forma independiente de los demás, en<br />

cualquier momento.<br />

- Un ejemplo típico de dispositivos de bloque son los discos.<br />

Las principales características de los dispositivos de carácter son:<br />

- La información se transfiere como un flujo de caracteres, sin sujetarse a una<br />

estructura de bloques.<br />

- No se pueden utilizar direcciones.<br />

- No tienen una operación de búsqueda.<br />

- Unos ejemplos típicos de dispositivos de carácter son las impresoras de línea,<br />

terminales, interfaces de una red, ratones, etc.<br />

Manejadores de Dispositivos<br />

Todo el código que depende de los dispositivos aparece en los manejadores de<br />

dispositivos<br />

60


[SISTEMAS OPERATIVOS]<br />

Cada controlador posee uno o más registros de dispositivos:<br />

- Se utilizan para darle los comandos.<br />

- Los manejadores de dispositivos proveen estos comandos y verifican su<br />

ejecución adecuada.<br />

La labor de un manejador de dispositivos es la de:<br />

- Aceptar las solicitudes abstractas que le hace el software independiente del<br />

dispositivo.<br />

- Verificar la ejecución de dichas solicitudes.<br />

Si al recibir una solicitud el manejador está ocupado con otra solicitud, agregara la<br />

nueva solicitud a una cola de solicitudes pendientes.<br />

La solicitud de e / s, por ej. Para un disco, se debe traducir de términos abstractos a<br />

términos concretos:<br />

El manejador de disco debe:<br />

Estimar el lugar donde se encuentra en realidad el bloque solicitado.<br />

Verificar si el motor de la unidad funciona.<br />

Verificar si el brazo está colocado en el cilindro adecuado, etc.<br />

Resumiendo: debe decidir cuáles son las operaciones necesarias del<br />

controlador y su orden.<br />

61


[SISTEMAS OPERATIVOS]<br />

Envía los comandos al controlador al escribir en los registros de dispositivo del<br />

mismo.<br />

Frecuentemente el manejador del dispositivo se bloquea hasta que el<br />

controlador realiza cierto trabajo; una interrupción lo libera de este bloqueo.<br />

Al finalizar la operación debe verificar los errores.<br />

Si todo esta o.k. transferirá los datos al software independiente del dispositivo.<br />

Regresa información de estado sobre los errores a quien lo llamo.<br />

Inicia otra solicitud pendiente o queda en espera.<br />

4.2 Mecanismos y funciones de los manejadores de dispositivos:<br />

device drivers<br />

Funciones generalmente realizadas por el software independiente del dispositivo:<br />

Interfaz uniforme para los manejadores de dispositivos.<br />

Nombres de los dispositivos.<br />

Protección del dispositivo.<br />

Proporcionar un tamaño de bloque independiente del dispositivo.<br />

Uso de buffer.<br />

Asignación de espacio en los dispositivos por bloques.<br />

Asignación y liberación de los dispositivos de uso exclusivo.<br />

Informe de errores.<br />

Las funciones básicas del software independiente del dispositivo son:<br />

Efectuar las funciones de e / s comunes a todos los dispositivos.<br />

Proporcionar una interfaz uniforme del software a nivel usuario.<br />

El software independiente del dispositivo asocia los nombres simbólicos de los<br />

dispositivos con el nombre adecuado.<br />

Un nombre de dispositivo determina de manera única el nodo-i de un archivo especial:<br />

Este nodo-i contiene el número principal del dispositivo, que se utiliza para<br />

localizar el manejador apropiado.<br />

62


[SISTEMAS OPERATIVOS]<br />

El nodo-i contiene también el número secundario de dispositivo, que se<br />

transfiere como parámetro al manejador para determinar la unidad por leer o<br />

escribir.<br />

El software independiente del dispositivo debe:<br />

Ocultar a los niveles superiores los diferentes tamaños de sector de los<br />

distintos discos.<br />

Proporcionar un tamaño uniforme de los bloques, por ej.: considerar varios<br />

sectores físicos como un solo bloque lógico.<br />

4.3 <strong>Estructuras</strong> de datos para manejo de dispositivos<br />

¿Qué es una estructura?<br />

Los sistemas operativos actuales son grandes y complejos, estos deben poseer una<br />

ingeniería correcta para su fácil actualización y para que puedan cumplir su función<br />

correctamente. La estructura es generalmente modular, cada modulo cumple una<br />

función determinada e interactúa con los demás módulos.<br />

Estructura simple<br />

El sistema MS-DOS es, sin duda, el mejor sistema operativo para microcomputadoras.<br />

Sin embargo, sus interfaces y niveles de funcionalidad no están bien definidos. Los<br />

programas de aplicación pueden acceder a operaciones básicas de entrada / salida<br />

para escribir directamente en pantalla o discos. Este libre acceso, hace que el sistema<br />

sea vulnerable, ya que un programa de aplicación puede eliminar por completo un<br />

disco rígido por alguna falla. Además este sistema, también está limitado al hardware<br />

sobre el que corre.<br />

Otra estructura simple es la utilizada por la versión original de UNIX, esta consiste de<br />

dos partes separadas, el kernel y los programas de sistemas. El kernel fue<br />

posteriormente separado en manejadores (drivers) de dispositivos y una serie de<br />

interfaces. El kernel provee el sistema de archivos, la programación de CPU, el<br />

administrador de memoria y otras funciones del sistema operativo que responden a<br />

las llamadas del sistema enunciadas anteriormente.<br />

63


Estructura por capas (layers)<br />

[SISTEMAS OPERATIVOS]<br />

Las nuevas versiones de UNIX se diseñaron para hardware mas avanzado. Para dar<br />

mayor soporte al hardware, los sistemas operativos se dividieron en pequeñas partes.<br />

Ahora los sistemas operativos tienen mayor control sobre el hardware y las<br />

aplicaciones que se ejecutan sobre este.<br />

La modularización de un sistema se puede presentar de varias formas, la mas<br />

utilizada es la de capas, la cual consiste en dividir al sistema operativo en un numero<br />

de capas. La capa de menor nivel es el hardware y la de mayor nivel es la interfaz con<br />

el usuario.<br />

La principal ventaja es que cada capa cumple con una serie de funciones y servicios<br />

que brinda a las otras capas, esto permite una mejor organización del sistema<br />

operativo y una depuración más fácil de este.<br />

Cada capa se implementa solo utilizando las operaciones provistas por la capa de<br />

nivel inferior. Una capa no necesita saber cómo se implementan estas funciones, solo<br />

necesita saber que operaciones puede realizar.<br />

4.4 Operaciones de Entrada salida<br />

Funciones que realizan<br />

Vamos a señalar las funciones que debe realizar una computadora para ejecutar<br />

trabajos de entrada/salida:<br />

- Direccionamiento o selección del dispositivo que debe llevar a cabo la operación<br />

de E/S.<br />

- Transferencia de los datos entre el procesador y el dispositivo (en uno u otro<br />

sentido).<br />

- Sincronización y coordinación de las operaciones.<br />

Esta última función es necesaria debido a la deferencia de velocidades entre los<br />

dispositivos y la CPU y a la independencia que debe existir entre los periféricos y la<br />

CPU (por ejemplo, suelen tener relojes diferentes).<br />

64


[SISTEMAS OPERATIVOS]<br />

Se define una transferencia elemental de información como la transmisión de una sola<br />

unidad de información (normalmente un byte) entre el procesador y el periférico o<br />

viceversa. Para efectuar una transferencia elemental de información son precisas las<br />

siguientes funciones:<br />

- Establecimiento de una comunicación física entre el procesador y el periférico<br />

para la transmisión de la unidad de información.<br />

- Control de los periféricos, en que se incluyen operaciones como prueba y<br />

modificación del estado del periférico. Para realizar estas funciones la CPU<br />

gestionara las líneas de control necesarias.<br />

Definiremos una operación de E/S como el conjunto de acciones necesarias para la<br />

transferencia de un conjunto de datos (es decir, una transferencia completa de datos).<br />

Para la realización de una operación de E/S se deben efectuar las siguientes<br />

funciones:<br />

- Recuento de las unidades de información transferidas (normalmente bytes) para<br />

reconocer el fin de operación.<br />

- Sincronización de velocidad entre la CPU y el periférico.<br />

- Detección de errores (e incluso corrección) mediante la utilización de los códigos<br />

necesarios (bits de paridad, códigos de redundancia cíclica, etc.)<br />

- Almacenamiento temporal de la información. Es más eficiente utilizar un buffer<br />

temporal específico para las operaciones de E/S que utilizan el área de datos del<br />

programa.<br />

- Conversión de códigos, conversión serie/paralelo, etc.<br />

65


[SISTEMAS OPERATIVOS]<br />

Unidad 5 <strong>Sistemas</strong> de archivos<br />

5.1 Concepto de <strong>Sistemas</strong> de archivos<br />

Son los algoritmos y estructuras lógicas utilizadas para poder acceder a la información<br />

que tenemos en el disco. Cada uno de los sistemas operativos crea estas estructuras<br />

y logaritmos de diferente manera independientemente del hardware.<br />

El desempeño de nuestro disco duro, la confiabilidad, seguridad, capacidad de<br />

expansión y la compatibilidad, estará en función de estas estructuras lógicas.<br />

Fat 12: Es el sistema de archivos de DOS, y es con el que formateamos los<br />

disquetes. Fue muy utilizado en las primeras PCs.<br />

Fat 16: Este sistema de archivos tenía muchas limitaciones, por ejemplo si el disco<br />

duro era mayor de 2 GB, era imposible particionarlos y no usaba nombre largos en los<br />

archivos, solo 8 caracteres.<br />

Fat 32: Fue utilizado a partir de 1997, y pudo ser utilizado en Windows 98, pero a<br />

medida que el tamaño de los discos duros se incrementaba, surgieron nuevas<br />

limitaciones. Se llamó Fat32, por que utiliza números de 32 bits para representar a los<br />

clusters en lugar de los 16 en los sistemas anteriores.<br />

NTFS<br />

Especialmente creado para usarlo en Windows NT, es<br />

más complejo que los FAT. El propósito era satisfacer la<br />

demanda y necesidades de seguridad y eficacia para<br />

servidores y otras aplicaciones en red. No tiene<br />

limitaciones de tamaño clusters y en general en el disco.<br />

Una ventaja de este sistema de archivos es que tiene un sistema anti fragmentación.<br />

Especialmente creado para usarlo en Windows NT, es mas complejo que los FAT. El<br />

propósito era satisfacer la demanda y necesidades de de seguridad y eficacia para<br />

servidores y otras aplicaciones en red. No tiene limitaciones de tamaño clusters y en<br />

general en el disco. Una ventaja de este sistema de archivos es que tiene un sistema<br />

antifragmentación.<br />

66


LINUX<br />

[SISTEMAS OPERATIVOS]<br />

Este sistema de archivos trabaja de manera totalmente distinta,<br />

las particiones del disco se colocan en el directorio raíz. Podemos<br />

incluso tener diferentes particiones y cada una de ellas tener su<br />

propio sistema de archivos.<br />

Este sistema de archivos trabaja de manera totalmente distinta,<br />

las particiones del disco se colocan en el directorio raíz. Podemos<br />

incluso tener diferentes particiones y cada una de ellas tener su propio sistema de<br />

archivos.<br />

En computación, un sistema de archivos es un método para el almacenamiento y<br />

organización de archivos de computadora y los datos que estos contienen, para hacer<br />

más fácil la tarea encontrarlos y accederlos. Los sistemas de archivos son usados en<br />

dispositivos de almacenamiento como discos duros y CD-ROM e involucran el<br />

mantenimiento de la localización física de los archivos.<br />

Más formalmente, un sistema de archivos es un conjunto de tipo de datos abstractos<br />

que son implementados para el almacenamiento, la organización jerárquica, la<br />

manipulación, el acceso, el direccionamiento y la recuperación de datos. Los sistemas<br />

de archivos comparten mucho en común con la tecnología de las bases de datos.<br />

Los sistemas de archivos pueden ser representados de forma textual (ej.: el shell de<br />

DOS) o gráficamente (ej.: Explorador de archivos en Windows) utilizando un gestor de<br />

archivos.<br />

El software del sistema de archivos se encarga de organizar los archivos (que suelen<br />

estar segmentados físicamente en pequeños bloques de pocos bytes) y directorios,<br />

manteniendo un registro de qué bloques pertenecen a qué archivos, qué bloques no<br />

se han utilizado y las direcciones físicas de cada bloque.<br />

Los sistemas de archivos pueden ser clasificados en tres categorías: sistemas de<br />

archivo de disco, sistemas de archivos de red y sistemas de archivos de propósito<br />

especial.<br />

67


[SISTEMAS OPERATIVOS]<br />

Ejemplos de sistemas de archivos son: FAT, UMSDOS, NTFS, UDF, ext2, ext3, ext 4,<br />

ReiserFS, XFS, etc.<br />

5.2 Noción de archivo real y virtual<br />

Un archivo virtual, es un archivo de uso temporal que es<br />

utilizado por los procesos del sistema mientras se están<br />

ejecutando dichos procesos.<br />

Estos archivos se crean durante la ejecución de un sistema y los utiliza para el<br />

almacenamiento de información, intercambio y organización mientras se ejecuta el<br />

sistema, su tamaño es muy variable y terminan al detener la ejecución del sistema,<br />

muchos de ellos son borrados, por ejemplo, los archivos *.tmp<br />

Se le conoce como archivo virtual, aquel que contiene los datos generados por el<br />

usuario.<br />

tamaño en bytes.<br />

Archivo Real: Es un objeto que contiene programas,<br />

datos o cualquier otro elemento.<br />

Un archivo se muestra de manera real, en la<br />

información del espacio que ocupa en un disco duro o<br />

sistema de almacenamiento, en otras palabras su<br />

68


[SISTEMAS OPERATIVOS]<br />

5.3 Componentes de un sistema de archivos<br />

Lo conforman todas aquellas rutinas encargadas de administrar todos los aspectos<br />

relacionados con el manejo de Archivos.<br />

En UNIX se define un File System como un sistema de software dedicado a la<br />

creación, destrucción, organización y lectura, escritura y control de acceso de los<br />

archivos, funcionalmente los componentes de un sistema de archivos son lenguajes<br />

de comandos, interpretador de comandos, manejador del almacenamiento secundario,<br />

sistema de entrada y salida y mecanismos de respaldo y recuperación.<br />

En general, un Sistema de Archivos está compuesto por: Métodos De Acceso,<br />

Administración De Archivos, Administración De Almacenamiento Secundario,<br />

Mecanismos De Integridad.<br />

Métodos De Acceso. Se ocupan de la manera en que se tendrá acceso a la<br />

información almacenada en el archivo. Ejemplo: Secuencial, Directo, indexado, etc.<br />

Administración De Archivos. Se ocupa de ofrecer los mecanismos para almacenar,<br />

compartir y asegurar archivos, así como para hacer referencia a ellos.<br />

Administración De Almacenamiento Secundario. Se ocupa de asignar espacio<br />

para los archivos en los dispositivos de almacenamiento secundario. En la siguiente<br />

figura se muestra un ejemplo de la administración de espacio en un disco duro.<br />

69


[SISTEMAS OPERATIVOS]<br />

Mecanismos De Integridad. Se ocupan de garantizar que no se corrompa la<br />

información de un archivo, de tal manera que solo la información que deba estar en el,<br />

se encuentre ahí.<br />

Mecanismos de Organización Lógica. Contiene las diferentes rutinas y comandos a<br />

través de los cuales el usuario podrá estructurar sus archivos virtuales.<br />

Directorio de Identificadores. Convierte los identificadores simbólicos de los<br />

archivos en identificadores internos, los cuales apuntarán a su descriptor o a una<br />

estructura que permite encontrar el archivo.<br />

<strong>Sistemas</strong> Teóricos de Archivos. Su objetivo es el de activar y desactivar a través de<br />

las rutinas de abrir y cerrar archivos y verifica el modo de acceso.<br />

Mecanismos de Organización Física. Traslada las direcciones lógicas en<br />

direcciones físicas correspondientes a las estructuras de memoria secundaria y los<br />

buffers en memoria principal necesarios para la transferencia de datos.<br />

Mecanismos de E/S. Por cada petición de acceso al archivo real, este mecanismo<br />

genera la secuencia de operaciones elementales de entrada y salida que se necesita.<br />

SCHEDULING E/S. En este nivel<br />

es donde se tiene el número de<br />

peticiones pendientes así como de<br />

las que se están realizando y lleva<br />

el control y asignación de tiempo<br />

de CPU a las diferentes peticiones<br />

de E/S.<br />

70


5.4 Organización lógica y física<br />

[SISTEMAS OPERATIVOS]<br />

Organización de Archivos: Se refiere a las diferentes maneras en las que puede ser<br />

organizada la información de los archivos, así como las diferentes maneras en que<br />

ésta puede ser accesada. Dado que hay 2 niveles de visión de los archivos (físico y<br />

lógico), se puede hablar también de 2 aspectos de organización de archivos:<br />

Organización de archivos lógicos y de archivos físicos.<br />

El sistema de archivos está relacionado especialmente con la administración del<br />

espacio de almacenamiento secundario, fundamentalmente con el almacenamiento de<br />

disco.<br />

Una forma de organización de un sistema de archivos puede ser la siguiente:<br />

Se utiliza una “raíz” para indicar en qué parte del disco comienza el “directorio raíz ” .<br />

El “directorio raíz” apunta a los “directorios de usuarios”.<br />

Un “directorio de usuario” contiene una entrada para cada uno de los archivos del<br />

usuario.<br />

Cada entrada de archivo apunta al lugar del disco donde está almacenado el archivo<br />

referenciado.<br />

Esta forma de organización se muestra en la Figura anterior.<br />

71


[SISTEMAS OPERATIVOS]<br />

Los nombres de archivos solo necesitan ser únicos dentro de un directorio de usuario<br />

dado.<br />

El nombre del sistema para un archivo dado debe ser único para el sistema de<br />

archivos.<br />

En sistemas de archivo “jerárquicos” el nombre del sistema para un archivo suele<br />

estar formado como el “nombre de la trayectoria” del directorio raíz al archivo.<br />

Organización lógica.<br />

La mayoría de las computadoras organizan los archivos en jerarquías llamadas<br />

carpetas, directorios o catálogos. (El concepto es el mismo independientemente de la<br />

terminología usada.) Cada carpeta puede contener un número arbitrario de archivos, y<br />

también puede contener otras carpetas. Las otras carpetas pueden contener todavía<br />

más archivos y carpetas, y así sucesivamente, construyéndose un estructura en árbol<br />

en la que una «carpeta raíz» (el nombre varía de una computadora a otra) puede<br />

contener cualquier número de niveles de otras carpetas y archivos. A las carpetas se<br />

les puede dar nombre exactamente igual que a los archivos (excepto para la carpeta<br />

raíz, que a menudo no tiene nombre). El uso de carpetas hace más fácil organizar los<br />

archivos de una manera lógica.<br />

La mayor parte de las estructuras de organizaciones alternativas de archivos se<br />

encuentran dentro de estas cinco categorías:<br />

Pilas<br />

Es la forma más fácil de organizar un archivo. Los<br />

datos se recogen en el orden en que llegan.<br />

Su objetivo es simplemente acumular una masa de<br />

datos y guardarla.<br />

Los registros pueden tener campos diferentes o<br />

similares en un orden distinto. Cada campo debe ser autodescriptivo, incluyendo tanto<br />

un campo de nombre como el valor. La longitud de cada campo debe indicarse<br />

implícitamente con delimitadores, explícitamente incluidos como un subcampo más.<br />

72


[SISTEMAS OPERATIVOS]<br />

El acceso a los registros se hace por búsquedas exhaustiva y son fáciles de<br />

actualizar. Si se quiere encontrar un registro que contiene un campo particular y un<br />

valor determinado, es necesario examinar cada registro de la pila hasta encontrar el<br />

registro deseado. Si se quieren encontrar todos los registros que contienen un campo<br />

particular o que tienen un valor determinado para ese campo, debe buscarse el<br />

archivo entero.<br />

Se aplica cuando los datos se recogen o almacenan antes de procesarlos o cuando<br />

no son fáciles de organizar. Esta clase de archivo aprovecha bien el espacio cuando<br />

los datos almacenados varían en tamaño y estructura. Fuera de estos usos limitados,<br />

este tipo de archivos no se adapta a la mayoría de las aplicaciones.<br />

Archivos secuenciales<br />

Es la forma más común de estructura de archivos. Se emplea<br />

un formato fijo para los registros, son de la misma longitud y<br />

constan del mismo número de campos de tamaño fijo con un<br />

orden determinado.<br />

Se necesita almacenar los valores de cada campo; el nombre<br />

del campo y la longitud de cada uno son atributos de la<br />

estructura del archivo. Cada registro tiene un campo clave que lo identifica<br />

(generalmente es el primero de cada registro). Los registros se almacenan en<br />

secuencia por la clave.<br />

Se utilizan normalmente en aplicaciones de procesos por lotes, ya que es la única<br />

organización de archivos que se puede guardar tanto en cintas como en discos.<br />

Para las aplicaciones interactivas que incluyen peticiones o actualizaciones de<br />

registros individuales, los archivos secuenciales no son óptimos. El acceso requiere<br />

una búsqueda secuencial de correspondencias con la clave. Si el archivo entero o<br />

gran parte de él pueden traerse a la memoria principal de una sola vez, se podrán<br />

aplicar técnicas de búsquedas más eficientes. Al acceder un registro de un archivo<br />

secuencial grande, se produce un procesamiento extra y un retardo considerable.<br />

73


[SISTEMAS OPERATIVOS]<br />

La organización física del archivo en una cinta o disco se corresponde exactamente<br />

con la organización lógica del archivo, por lo tanto el procedimiento habitual es ubicar<br />

los nuevos registros en un archivo de pila separado, es llamado archivo de registro o<br />

archivo de transacciones.<br />

Una alternativa es organizar físicamente el archivo secuencial como una lista<br />

enlazada, en cada bloque físico se almacena uno o más registros y cada bloque del<br />

disco contienen un puntero al bloque siguiente. La inserción de un nuevo registro<br />

implica la manipulación de puntero, pero no requiere que el nuevo registro ocupe una<br />

posición particular del bloque físico.<br />

Archivos secuenciales indexados<br />

Los registros se organizan en una secuencia<br />

basada en un campo clave presentando dos<br />

características, un índice del archivo para<br />

soportar los accesos aleatorios y un archivo de<br />

desbordamiento. El índice proporciona una<br />

capacidad de búsqueda para llagar rápidamente<br />

al registro deseado y el archivo de<br />

desbordamiento es similar al archivo de<br />

registros usado en un archivo secuencial, pero está integrado de forma que los<br />

archivos de desbordamiento se ubiquen siguiendo un puntero desde su registro<br />

predecesor.<br />

La estructura más simple tiene como índice un archivo secuencial simple, cada<br />

registro del archivo índice tiene dos campos, un campo clave igual al del archivo<br />

principal y un puntero al archivo principal. Para encontrar un campo especifico se<br />

busca en el índice hasta encontrar el valor mayor de la clave que es iguale o precede<br />

al valor deseado de la clave, la búsqueda continua en el archivo principal a partir de la<br />

posición que indique el puntero.<br />

Cada registro del archivo principal tiene un campo adicional que es un puntero al<br />

archivo de desbordamiento. Cuando se inserta un nuevo registro al archivo, también<br />

se añade al archivo de desbordamiento. El registro del archivo principal que precede<br />

inmediatamente al nuevo registro según la secuencia lógica se actualiza con un<br />

puntero del registro nuevo en el archivo de desbordamiento, si el registro<br />

74


[SISTEMAS OPERATIVOS]<br />

inmediatamente anterior está también en el archivo de desbordamiento se actualizará<br />

el puntero en el registro.<br />

Para procesar secuencialmente un archivo completo los registros del archivo principal<br />

se procesarán en secuencia hasta encontrar un puntero al archivo de desbordamiento,<br />

el acceso continúa en el archivo de desbordamiento hasta que encuentra un puntero<br />

nulo, entonces renueva el acceso donde se abandonó en el archivo principal.<br />

Archivos indexados<br />

A los registros se accede solo a través de<br />

sus índices. No hay resticción en la<br />

ubicación de los registros, al menos un<br />

índice contiene un puntero a cada<br />

registro y pueden emplearse registros de<br />

longitud variable.<br />

Se suelen utilizar dos tipos de índices,<br />

uno exhaustivo que contiene una entrada<br />

para cada registro del archivo principal y<br />

se organiza como un archivo secuencial<br />

para facilitar la búsqueda, el otro índice es parcial que contiene entrada a los registros<br />

donde esté el campo de interés.<br />

Con registro de longitud variable, algunos registros no contendrán todos los campos y<br />

cuando se añade un registro al archivo principal, todos los archivos de índices deben<br />

actualizarse.<br />

Archivos directos o de dispersión<br />

Explotan la capacidad de los discos para acceder directamente a cualquier bloque de<br />

dirección conocida.<br />

Se requiere un campo clave en cada registro.<br />

75


[SISTEMAS OPERATIVOS]<br />

Los archivos directos son muy usados donde se necesita un acceso muy rápido,<br />

donde se usan registros de longitud fija y donde siempre se accede a los registros de<br />

una vez.<br />

Organización física.<br />

Los datos son arreglados por su adyacencia física, es decir, de acuerdo con el<br />

dispositivo de almacenamiento secundario. Los registros son de tamaño fijo o de<br />

tamaño variable y pueden organizarse de varias formas para constituir archivos<br />

físicos.<br />

Cinta magnética.<br />

En este dispositivo el archivo físico está formado por un conjunto de registros físicos, y<br />

los bloques están organizados en forma consecutiva, ya que se asigna en igual forma.<br />

Además tales registros puede contener etiquetas que permitan un mayor control sobre<br />

los datos almacenados, y son las siguientes:<br />

- Etiqueta de volumen.- Contiene información que permite identificar la cinta, el<br />

nombre del propietario y cualquier información general requerida.<br />

- Etiqueta de archivo.- Se utilizan por pares para indicar el inicio y fin del archivo,<br />

contiene información acerca del nombre del archivo, fecha de creación.<br />

- Etiqueta de usuario.- Sirven para guardar información adicional de importancia para<br />

el usuario; no son procesados por el sistema operativo.<br />

Discos Magnéticos.<br />

El archivo físico en un disco es una colección de registros físicos de igual tamaño, los<br />

cuales pueden estar organizados en forma consecutiva, ligada o con una tabla de<br />

mapeo.<br />

En la organización contigua, el archivo utiliza registros físicos contiguos, siguiendo la<br />

secuencia normal de direcciones.<br />

76


[SISTEMAS OPERATIVOS]<br />

La organización encadenada consiste un conjunto de bloques, cada uno de los cuales<br />

tiene un campo destinado para indicar la dirección del siguiente registro, o sea, para lo<br />

que se ha llamado enlace o liga.<br />

Otra forma de organización es la tabla de mapeo que consiste en una tabla de<br />

apuntadores a los registros físicos que forman el archivo.<br />

La organización física de un archivo en el almacenamiento secundario depende de la<br />

estrategia de agrupación y de la estrategia de asignación de archivos.<br />

Para elegir una organización de archivos se deben tener en cuenta ciertos criterios:<br />

Si un archivo va a procesar solamente por lotes, accediendo cada vez a todos los<br />

registros, entonces el acceso rápido para la recuperación de un único registro es una<br />

preocupación mínima. Un archivo almacenado en CD-ROM nunca será actualizado,<br />

por lo que la facilidad de actualización no se considera. Para la economía de<br />

almacenamiento, debería existir una mínima redundancia de los datos, ésta<br />

redundancia es el medio fundamental para incrementar la velocidad de acceso a los<br />

datos.<br />

Este tipo de organización muestra a su vez, 2 aspectos importantes: Métodos De<br />

Asignación De Espacio Libre y Asignación De Espacio De Almacenamiento Del<br />

Archivo.<br />

METODOS DE ASIGNACION DE ESPACIO LIBRE<br />

Un método de asignación de espacio libre determina la manera en que un Sistema<br />

Operativo controla los lugares del disco que no están siendo ocupados.<br />

Para el control del espacio libre se puede utilizar como base alguno de los métodos<br />

teóricos: Vector de Bits, Lista Ligada, Por Agrupación y por Contador.<br />

VECTOR DE BITS<br />

Se tiene un arreglo de bits, el número de bits que tiene, representa cada sector del<br />

disco, o sea que si los sectores 10 y 11 están ocupados su representación será:<br />

77


LISTA LIGADA<br />

[SISTEMAS OPERATIVOS]<br />

Existe una cabecera en la que se tiene la dirección del primer sector vacío, ese sector<br />

a su vez, tiene un apuntador al siguiente bloque, y así sucesivamente hasta que se<br />

encuentre una marca indicando que ya no hay espacio libre, tal y como se muestra en<br />

la siguiente figura.<br />

POR AGRUPACION<br />

Es similar a la lista ligada, solo que en este se tiene por cada sector, un grupo de<br />

apuntadores a varios espacios vacíos, al final de cada bloque se tiene un apuntador a<br />

otro grupo de apuntadores, observe la figura.<br />

78


POR CONTADOR<br />

[SISTEMAS OPERATIVOS]<br />

Aquí, por cada conjunto de bloques contiguos que estén vacíos, se tiene por cada<br />

apuntador, un número de inicio y el tamaño del grupo de sectores vacíos.<br />

79


[SISTEMAS OPERATIVOS]<br />

MÉTODOS DE ASIGNACIÓN DE ESPACIO EN DISCO.<br />

Un método de asignación de espacio en disco determina la manera en que un<br />

Sistema Operativo controla los lugares del disco ocupados por cada archivo de datos.<br />

Se debe controlar básicamente la identificación del archivo, sector de inicio y sector<br />

final.<br />

Para el control del espacio ocupado en disco se puede utilizar como base alguno de<br />

los métodos teóricos: Asignación Contigua, Asignación Ligada, Asignación Indexada.<br />

ASIGNACIÓN CONTIGUA.<br />

Este método consiste en asignar el espacio en disco de tal manera que las<br />

direcciones de todos los bloques correspondientes a un archivo definen un orden<br />

lineal. Por ejemplo:<br />

VENTAJAS - La cabeza de lectura no se mueve demasiado en la lectura de un<br />

archivo.<br />

DESVENTAJAS - Produce fragmentación externa.<br />

80


ASIGNACIÓN LIGADA<br />

[SISTEMAS OPERATIVOS]<br />

En este método, cada archivo es una lista ligada de bloques de disco. En el directorio<br />

hay un apuntador al bloque de inicio y un apuntador al bloque final para cada archivo.<br />

En cada uno de los bloques donde se encuentra un archivo hay un apuntador al<br />

siguiente bloque de la lista. Por ejemplo:<br />

VENTAJAS - No produce fragmentación externa.<br />

DESVENTAJAS - La cabeza de lectura se puede mover demasiado en la lectura de<br />

un archivo. - Si una liga se pierde, se perderá el archivo completo. Es ineficiente para<br />

la implementación de archivos directos. Se necesita un campo extra para el<br />

apuntador.<br />

ASIGNACIÓN INDEXADA<br />

Como ya se vio, la asignación ligada resuelve problemas de fragmentación externa,<br />

sin embargo, la asignación ligada no soporta eficientemente el acceso directo a los<br />

81


[SISTEMAS OPERATIVOS]<br />

archivos. La asignación indexada resuelve este problema poniendo todos los<br />

apuntadores en una sola localidad: El bloque índice.<br />

Cada archivo tiene su bloque índice, El cual es un arreglo de direcciones de bloques<br />

de disco.<br />

La i-ésima entrada en el bloque índice apunta al i-ésimo bloque que conforma el<br />

archivo. En el directorio se controla la dirección del bloque índice de cada archivo, por<br />

ejemplo:<br />

VENTAJAS - No produce fragmentación externa. Eficiente para la implementación de<br />

archivos directos.<br />

DESVENTAJAS - Existe desperdicio cuando hay archivos muy chicos.<br />

Desbordamiento de bloque índice. (Solución: creación de un esquema ligado; el último<br />

bloque índice apunta a otro índice).<br />

82


[SISTEMAS OPERATIVOS]<br />

5.5 Mecanismos de acceso a los archivos<br />

Existen varios mecanismos para<br />

acceder los archivos: Directorios,<br />

descriptores de archivos,<br />

mecanismos de control de acceso<br />

y procedimientos para abrir y<br />

cerrar archivos.<br />

Descriptores de archivos. El descriptor de archivos o bloque de control de archivos<br />

es un bloque de control que contiene información que el sistema necesita para<br />

administrar un archivo. Es una estructura muy dependiente del sistema.<br />

Puede incluir la siguiente información:<br />

Nombre simbólico del archivo.<br />

Localización del archivo en el almacenamiento secundario.<br />

Organización del archivo (método de organización y acceso).<br />

Tipo de dispositivo.<br />

Datos de control de acceso.<br />

Tipo (archivo de datos, programa objeto, programa fuente, etc.).<br />

Disposición (permanente contra temporal).<br />

Fecha y tiempo de creación.<br />

Fecha de destrucción.<br />

Fecha de la última modificación.<br />

Suma de las actividades de acceso (número de lecturas, por ejemplo).<br />

Los descriptores de archivos suelen mantenerse en el almacenamiento secundario; se<br />

pasan al almacenamiento primario al abrir el archivo.<br />

El descriptor de archivos es controlado por el sistema de archivos; el usuario puede no<br />

hacer referencia directa a él.<br />

A cada uno de los archivos se le asigna un descriptor el cual contendrá toda la<br />

información que necesitará el sistema de archivos para ejecutar con él los comandos<br />

que se le soliciten. El descriptor se mantendrá en memoria principal desde que el<br />

83


[SISTEMAS OPERATIVOS]<br />

archivo es abierto hasta que sea cerrado, y debe tener al menos la siguiente<br />

información, identificación del archivo, lugar de almacenamiento, información del<br />

modo de acceso.<br />

Identificación del archivo. Consiste de dos partes que es el nombre simbólico que es<br />

el que le da el usuario y un identificador interno que es asignado por el sistema<br />

operativo (número). Lugar de almacenamiento así como el tamaño del archivo. Modo<br />

de acceso. Se debe indicar en forma explícita quien puede accesar el archivo y<br />

conque derecho.<br />

Mecanismo de control de acceso.<br />

Control de un sistema de información especializado en<br />

detectar los intectos de acceso, permitiendo el paso de<br />

las entidades autorizadas, y denegando el paso a todas<br />

las demás. Involucra medios técnicos y procedimientos<br />

operativos.<br />

Mecanismo que en función de la identificación ya<br />

autenticada permite acceder a datos o recursos.<br />

Los Directorios son utilizados por el sistema operativo para llevar un registro de los<br />

archivos que incluye el nombre, los atributos y las direcciones en disco donde se<br />

almacenan los datos del archivo referenciado.<br />

Open (abrir): antes de utilizar un archivo, un proceso debe abrirlo. La finalidad es<br />

permitir que el sistema traslade los atributos y la lista de direcciones en disco a la<br />

memoria principal para un rápido acceso en llamadas posteriores.<br />

Close (cerrar): cuando concluyen los accesos, los atributos y direcciones del disco ya<br />

no son necesarios, por lo que el archivo debe cerrarse y liberar la tabla de espacio<br />

interno.<br />

84


[SISTEMAS OPERATIVOS]<br />

5.6 Manejo de espacio en memoria secundaria<br />

A diferencia de la Memoria Principal la Memoria Secundaria, auxiliar, masiva, externa<br />

no es tan veloz pero tiene gran capacidad para almacenar información en dispositivos<br />

tales como discos, cintas magnéticas, discos ópticos. Frecuentemente los datos y<br />

programas se graban en la Memoria Secundaria, de esta forma, cuando se ejecuta<br />

varias veces un programa o se utilicen repetidamente unos datos, no es necesario<br />

darlos de nuevo a través del dispositivo de entrada.<br />

En la Memoria Secundaria un archivo consta de un conjunto de bloques<br />

(correspondiente a la cantidad de información que se transfiere físicamente en cada<br />

operación de acceso (lectura o escritura).<br />

El Sistema Operativo o Sistema de Gestión de Archivos es el encargado de la<br />

asignación de bloques a archivos, de lo que surgen dos cuestiones, en primer lugar,<br />

debe asignarle el espacio de Memoria Secundaria a los archivos y, en segundo lugar,<br />

es necesario guardar constancia del espacio disponible para asignar.<br />

El sistema de archivos se ocupa primordialmente de administrar el espacio de<br />

almacenamiento secundario, sobre todo el espacio en disco. El manejo del espacio<br />

libre en disco se lleva a cabo de la siguiente manera:<br />

· Vector de bits<br />

· Lista ligada (lista libre)<br />

· Por conteo (agrupación)<br />

85


[SISTEMAS OPERATIVOS]<br />

Vector de bits. El espacio libre en disco es frecuentemente implementado como un<br />

mapa de bits, donde cada block es representado por un bit y si el bloc es libre el bit es<br />

cero de lo contrario está asignado.11000111<br />

Lista ligada. Una lista ligada de todos los blocks libres. Otra implantación se consigue<br />

guardando la dirección del primer block libre y el número de los blocks libres contiguos<br />

que le siguen. Cada entrada de la lista de espacio libre consiste de una dirección de<br />

disco y un contador (por conteo).<br />

86


[SISTEMAS OPERATIVOS]<br />

Por agrupación. Se almacena la dirección en n blocks libres en el primer block libre y<br />

el último contiene la dirección de otro block que contiene la dirección de otros blocks<br />

libres.<br />

Para manejar los espacios en disco existen los siguientes métodos:<br />

Contiguos<br />

Ligados<br />

Indexados<br />

Contiguos. Esta asignación requiere que cada archivo ocupe un conjunto de<br />

direcciones contiguas en el disco, su asignación es definida por la dirección del primer<br />

bloc y la longitud del archivo.<br />

Cuando se crea un archivo se le asigna un único conjunto contiguo de bloques, esta<br />

es una estrategia de asignación previa que emplea secciones de tamaño variable. La<br />

tabla de asignación de archivos necesita solo una entrada por cada archivo y que<br />

muestre el bloque de comienzo y la longitud del archivo. La asignación contigua es la<br />

mejor para un archivo secuencial.<br />

La asignación contigua presenta algunos problemas, como la fragmentación externa.<br />

Lo que hace difícil encontrar bloques contiguos de espacio de tamaño suficiente., lo<br />

que lleva a ejecutar un algoritmo de compactación para libera el espacio adicional en<br />

el disco.<br />

Asignación ligada o encadenada. Cada archivo es una lista ligada de blocks y el<br />

directorio contiene un apuntador al primer bloc y al último.<br />

La asignación se hace con bloques individuales, cada bloque contendrá un puntero al<br />

siguiente bloque de la cadena. La tabla de asignación de archivos necesita una sola<br />

entrada por cada archivo que muestre el bloque de comienzo y la longitud del mismo,<br />

cualquier bloque puede añadirse a la cadena. No hay que preocuparse por la<br />

fragmentación externa porque solo se necesita un bloque cada vez.<br />

Una consecuencia del encadenamiento es que no hay cabida para el principio de<br />

cercanía, si es necesario traer varios bloques de un archivo al mismo tiempo, se<br />

necesita una serie de accesos a partes diferentes del disco por lo que se debe<br />

ejecutar un algoritmo de compactación para liberar el espacio adicional en el disco.<br />

87


[SISTEMAS OPERATIVOS]<br />

Asignación Indexada. Cada archivo tiene su propio bloc de índice el cual es un<br />

arreglo de direcciones de bloc.<br />

En esta asignación la tabla de asignación de archivos contiene un índice separado de<br />

un nivel para cada archivo: el índice posee una entrada para cada sección asignada al<br />

archivo. Normalmente, los índices no están almacenados físicamente como parte de<br />

la tabla de asignación de archivos. Más exactamente el índice de archivo se guardara<br />

en un bloque aparte y la entrada del archivo en la entrada de asignación apuntara a<br />

dicho bloque.<br />

La asignación puede hacerse por bloques de tamaño fijo, O en secciones de tamaño<br />

variable. La asignación por bloques elimina la fragmentación externa, mientras que la<br />

asignación por secciones de tamaño variable mejora la cercanía. En cualquier caso,<br />

los archivos pueden concentrarse en zonas cercanas de cuando en cuando. La<br />

concentración reduce el tamaño del índice en el caso de secciones de tamaño<br />

variable, pero no en el caso de asignación por bloques.<br />

La asignación indexada soporta tanto el acceso secuencial como el acceso directo a<br />

los archivos y por ello se ha convertido en la forma más popular de asignación de<br />

archivos.<br />

En un sistema de cómputo, los elementos que se declaran para almacenamiento son<br />

los Fyle System. Cuándo existe una solicitud de almacenamiento o manejo de bloc<br />

libres en un file system surge una interrogante ¿cómo atenderlas? esto se lleva a cabo<br />

mediante una planificación de discos y para esto existen las siguientes políticas de<br />

planificación.<br />

a) FCFS<br />

b) SSTF<br />

c) SCAN<br />

d) SCAN de n-pasos<br />

e) C-SCAN<br />

f) Esquema Eschenbach<br />

88


5.7 Modelo jerárquico<br />

[SISTEMAS OPERATIVOS]<br />

El directorio contiene un conjunto de datos por cada archivo referenciado.<br />

Fig. 5.7.1 Ejemplo de directorio jerárquico<br />

Una posibilidad es que el directorio contenga por cada archivo referenciado:<br />

El nombre.<br />

Sus atributos.<br />

Las direcciones en disco donde se almacenan los datos.<br />

Otra posibilidad es que cada entrada del directorio contenga:<br />

El nombre del archivo.<br />

Un apuntador a otra estructura de datos donde se encuentran los atributos y<br />

las ,direcciones en disco.<br />

89


[SISTEMAS OPERATIVOS]<br />

Fig. 5.7.2 Representación gráfica de un directorio jerárquico.<br />

Al abrir un archivo el S. O.:<br />

Busca en su directorio el nombre del archivo.<br />

Extrae los atributos y direcciones en disco.<br />

Graba esta información en una tabla de memoria real.<br />

Todas las referencias subsecuentes al archivo utilizarán la información de la<br />

memoria principal.<br />

El número y organización de directorios varía de sistema en sistema:<br />

Directorio único: el sistema tiene un solo directorio con todos los archivos de<br />

todos los usuarios (ver Figura 5.7.3).<br />

Un directorio por usuario: el sistema habilita un solo directorio por cada<br />

usuario (ver Figura 5.7.4).<br />

Un árbol de directorios por usuario: el sistema permite que cada usuario<br />

tenga tantos directorios como necesite, respetando una jerarquía general (ver<br />

Figura 5.7.5).<br />

Fig. 5.7.3 Un solo directorio compartido por todos los usuarios<br />

90


[SISTEMAS OPERATIVOS]<br />

Fig. 5.7.4 Un directorio por usuario<br />

Fig. 5.7.5 Un árbol arbitrario por usuario<br />

91


[SISTEMAS OPERATIVOS]<br />

5.8 Mecanismos de recuperación en caso de falla<br />

Recuperación<br />

Los archivos y directorios se mantienen tanto en memoria principal como en disco, y<br />

debe tener. Se cuidado para que los fallos del sistema no provoquen una pérdida de<br />

datos o una incoherencia en los mismos.<br />

Comprobación de coherencia.<br />

Como hemos explicado en la Sección 11.3, parte de la información de directorios se<br />

almacena en la memoria principal (o en caché) para acelerar el acceso. La<br />

información de directorios en11a memoria principal está, generalmente, más<br />

actualizada que la correspondiente información en el disco, porque la información de<br />

directorios almacenada en caché no se escribe necesariamente en el disco nada más<br />

producirse la actualización.<br />

Considere, entonces, el posible ejemplo de un fallo de la computadora. El contenido<br />

de la caché y de los búferes, así como de las operaciones de E/S que se estuvieran<br />

realizando en ese momento, pueden perderse, y con él se perderán los cambios<br />

realizados en los directorios correspondientes a los archivos abiertos. Dicho suceso<br />

puede dejar el sistema de archivos en un estado incoherente. El estado real de<br />

algunos archivos no será el que se describe en la estructura de directorios.<br />

Con frecuencia, suele ejecutarse un programa especial durante el reinicio para<br />

comprobar las posibles incoherencias del disco y corregidas.<br />

El comprobador de coherencia (un programa del sistema tal como fsck en UNIX o<br />

chkdsk en MS-DOS), compara los datos de la estructura de directorios con los<br />

bloques de datos del disco y trata de corregir todas las incoherencias que detecte. Los<br />

algoritmos de asignación y de gestión del espacio libre dictan los tipos de problemas<br />

que el comprobador puede tratar de detectar y dictan también el grado de éxito que el<br />

comprobador puede tener en esta tarea. Por ejemplo, si se utiliza un sistema de<br />

asignación enlazada y existe un enlace entre cada bloque y el siguiente, puede<br />

reconstruirse el archivo completo a partir de los bloques de datos y volver a crear la<br />

estructura de directorios. Por el contrario, la pérdida de una entrada de directorio en<br />

un sistema de asignación indexada puede ser desastrosa, porque los bloques de<br />

datos no tienen ningún conocimiento acerca de los demás bloques de datos del<br />

archivo. Por esta razón, UNIX almacena en caché las entradas de directorio para las<br />

lecturas, pero todas las escrituras de datos que provoquen algún cambio en la<br />

92


[SISTEMAS OPERATIVOS]<br />

asignación de espacio o en algún otro tipo de metadato se realizan síncronamente,<br />

antes de escribir los correspondientes bloques de datos. Por supuesto, también<br />

pueden aparecer problemas si se interrumpe una escritura síncrona debido a un fallo<br />

catastrófico.<br />

Fig. 5.8.1 Errores<br />

La pérdida de la información es uno de los factores que se le debe de dar mayor<br />

importancia, por la sencilla razón de que al perder información se puede perder lo que<br />

no nos podemos imaginar en cuanto a la misma y ocasionar perdidas hasta hablar de<br />

una gran cantidad de dinero. Para solucionar este o estos problemas todo sistema<br />

operativo cuenta con al menos una herramienta de software que nos permite<br />

recuperar información perdida hasta cierta medida, esto obedece de acuerdo al daño<br />

causado o los daños. Si el sistema no cuenta con la herramienta necesaria, deberá<br />

adquirirse el software apropiado de algún fabricante especializado en el ramo, por<br />

ejemplo Norton.<br />

Es necesario proteger la información alojada en el sistema de archivos, efectuando los<br />

resguardos correspondientes.<br />

De esta manera se evitan las consecuencias generalmente catastróficas de la pérdida<br />

de los sistemas de archivos.<br />

Las pérdidas se pueden deber a problemas de hardware, software, hechos externos,<br />

etc.<br />

Manejo de un bloque defectuoso:<br />

Se utilizan soluciones por hardware y por software.<br />

La solución en hardware:<br />

Consiste en dedicar un sector del disco a la lista de bloques defectuosos.<br />

93


[SISTEMAS OPERATIVOS]<br />

Al inicializar el controlador por primera vez:<br />

o Lee la “lista de bloques defectuosos”.<br />

o Elige un bloque (o pista) de reserva para reemplazar los defectuosos.<br />

o Registra la asociación en la lista de bloques defectuosos.<br />

o En lo sucesivo, las solicitudes del bloque defectuoso utilizarán el de<br />

repuesto.<br />

La solución en software:<br />

Requiere que el usuario o el sistema de archivos construyan un archivo con<br />

todos los bloques defectuosos.<br />

Se los elimina de la “lista de bloques libres”.<br />

Se crea un “archivo de bloques defectuosos”:<br />

o Está constituido por los bloques defectuosos.<br />

o No debe ser leído ni escrito.<br />

o No se debe intentar obtener copias de respaldo de este archivo.<br />

Respaldos (copias de seguridad o de back-up):<br />

Fig. 5.8.2 Es necesario realizar respaldos para asegurar información<br />

Es muy importante respaldar los archivos con frecuencia.<br />

Los discos magnéticos fallan en ocasiones y es necesario tener cuidado para<br />

garantizar que los datos perdidos debido a esos fallos no se pierdan para siempre.<br />

Con este fin, pueden utilizarse programas del sistema para realizar una copia de<br />

seguridad de los datos del disco en otro dispositivo de almacenamiento, como por<br />

ejemplo un disquete, una cinta magnética, un disco óptico incluso otro disco duro. La<br />

recuperación de la pérdida de un archivo individual o de un disco completo puede ser<br />

entonces, simplemente, una cuestión de restaurar los datos a partir de la copia de<br />

seguridad.<br />

94


[SISTEMAS OPERATIVOS]<br />

Los respaldos pueden consistir en efectuar copias completas del contenido de los<br />

discos (flexibles o rígidos).<br />

Una estrategia de respaldo consiste en dividir los discos en áreas de datos y áreas de<br />

respaldo, utilizándolas de a pares:<br />

Se desperdicia la mitad del almacenamiento de datos en disco para respaldo.<br />

Cada noche (o en el momento que se establezca), la parte de datos de la<br />

unidad 0 se copia a la parte de respaldo de la unidad 1 y viceversa.<br />

Otra estrategia es el vaciado por incrementos o respaldo incremental:<br />

Se obtiene una copia de respaldo periódicamente (por ej.: una vez por mes o<br />

por semana), llamada copia total.<br />

Se obtiene una copia diaria solo de aquellos archivos modificados desde la<br />

última copia total; en estrategias mejoradas, se copian solo aquellos archivos<br />

modificados desde la última vez que dichos archivos fueron copiados.<br />

Se debe mantener en el disco información de control como una “lista de los<br />

tiempos de copiado” de cada archivo, la que debe ser actualizada cada vez<br />

que se obtienen copias de los archivos y cada vez que los archivos son<br />

modificados.<br />

Puede requerir una gran cantidad de cintas de respaldo dedicadas a los<br />

respaldos diarios entre respaldos completos.<br />

Para minimizar la cantidad de datos que haya que copiar, podemos utilizar la<br />

información contenida en la entrada de directorio de cada archivo. Por ejemplo, si el<br />

programa de copia de seguridad sabe cuándo se realizó la última copia de seguridad<br />

de un archivo y la fecha de última modificación del archivo contenida en el directorio<br />

indica que el archivo no ha cambiado desde esa fecha, no será necesario volver a<br />

copiar el archivo. Así un plan típico de copia de seguridad podría ser el siguiente:<br />

• Día 1. Copiar en el soporte de copia de seguridad todos los archivos del disco. Esto<br />

se denomina copia de seguridad completa.<br />

• Día 2. Copiar en otro soporte físico todos los archivos que se hayan modificado<br />

desde el día 1. Esta es una copia de seguridad incremental.<br />

• Día 3. Copiar en otro soporte físico todos los archivos que se hayan modificado<br />

desde el día 2.<br />

95


[SISTEMAS OPERATIVOS]<br />

• Día N. Copiar en otro soporte físico todos los archivos que se hayan modificado<br />

desde el día N - 1. Después, volver al día 1.<br />

Podemos escribir las copias de seguridad correspondientes al nuevo ciclo sobre el<br />

conjunto anterior de soportes físicos o en un nuevo conjunto de soportes de copia de<br />

seguridad. De esta forma, podemos restaurar un disco completo comenzando la<br />

restauración con la copia de seguridad completa y continuando con cada una de las<br />

copias de seguridad incrementales. Por supuesto, cuanto mayor sea el valor de N,<br />

más cintas o discos habrá que leer para efectuar una restauración completa. Una<br />

ventaja adicional de este ciclo de copia de seguridad es que podemos restaurar<br />

cualquier archivo que haya sido borrado accidentalmente durante ese ciclo,<br />

extrayendo el archivo borrado de la copia de seguridad del día anterior. La longitud del<br />

ciclo será un compromiso entre la cantidad de soportes físicos de copia de seguridad<br />

requeridos y el número de días pasados a partir de los cuales podamos realizar una<br />

restauración. Para reducir el número de cintas que haya que leer para efectuar una<br />

restauración, una opción consiste en realizar una copia de seguridad completa y luego<br />

copiar cada día todos los archivos que hayan cambiado desde la última copia de<br />

seguridad completa. De esta forma, puede realizarse la restauración utilizando sólo la<br />

copia de seguridad incremental más reciente y la copia de seguridad completa, no<br />

necesitándose ninguna otra copia de seguridad incremental. El compromiso inherente<br />

a este sistema es que el número de archivos modificado se incrementa a diario, por lo<br />

que cada copia de seguridad incremental sucesiva contiene más archivos y requiere<br />

más espacio en el soporte de copia de seguridad.<br />

Consistencia del sistema de archivos:<br />

Muchos sistemas de archivos leen bloques, los modifican y escriben en ellos después.<br />

Si el sistema falla antes de escribir en los bloques modificados, el sistema de archivos<br />

puede quedar en un “estado inconsistente”.<br />

La inconsistencia es particularmente crítica si alguno de los bloques afectados son:<br />

Bloques de nodos-i.<br />

Bloques de directorios.<br />

Bloques de la lista de bloques libres.<br />

La mayoría de los sistemas dispone de un programa utilitario que verifica<br />

la consistencia del sistema de archivos:<br />

96


[SISTEMAS OPERATIVOS]<br />

Se pueden ejecutar al arrancar el sistema o a pedido.<br />

Pueden actuar sobre todos o algunos de los discos.<br />

Pueden efectuar verificaciones a nivel de bloques y a nivel de archivos.<br />

La consistencia del sistema de archivos no asegura la consistencia interna de<br />

cada archivo, respecto de su contenido.<br />

Generalmente pueden verificar también el sistema de directorios y / o de<br />

bibliotecas.<br />

Generalmente los utilitarios utilizan dos tablas:<br />

Tabla de bloques en uso.<br />

Tabla de bloques libres.<br />

Cada bloque debe estar referenciado en una de ellas.<br />

Si un bloque no aparece en ninguna de las tablas se trata de una falla llamada bloque<br />

faltante:<br />

No produce daños pero desperdicia espacio en disco.<br />

Se soluciona añadiendo el bloque a la tabla de bloques libres.<br />

También podría detectarse la situación de falla debida a un bloque referenciado dos<br />

veces en la tabla de bloques libres:<br />

Esta falla no se produce en los sistemas de archivos basados en mapas de<br />

bits, sí en los basados en tablas o listas.<br />

La solución consiste en depurar la tabla de bloques libres.<br />

Una falla muy grave es que el mismo bloque de datos aparezca referenciado dos o<br />

más veces en la tabla de bloques en uso:<br />

Como parte del mismo o de distintos archivos.<br />

Si uno de los archivos se borra, el bloque aparecería en la tabla de bloques<br />

libres y también en la de bloques en uso.<br />

Una solución es que el verificador del sistema de archivos:<br />

o Asigne un bloque libre.<br />

o Copie en el bloque libre el contenido del bloque conflictivo.<br />

o Actualice las tablas afectando el bloque copia a alguno de los archivos.<br />

o Agregue el bloque conflictivo a la tabla de bloques libres.<br />

o Informe al usuario para que verifique el daño detectado y la solución<br />

dada.<br />

97


[SISTEMAS OPERATIVOS]<br />

Otro error posible es que un bloque esté en la tabla de bloques en uso y en la tabla de<br />

bloques libres:<br />

Se soluciona eliminándolo de la tabla de bloques libres.<br />

Las verificaciones de directorios incluyen controles como:<br />

Número de directorios que apuntan a un nodo-i con los contadores de enlaces<br />

almacenados en los propios nodos-i; en un sistema consistente de archivos<br />

deben coincidir.<br />

Una posible falla es que el contador de enlaces sea mayor que el número de entradas<br />

del directorio:<br />

Aunque se eliminaran todos los archivos de los directorios el contador sería<br />

distinto de cero y no se podría eliminar el nodo-i.<br />

No se trata de un error serio pero produce desperdicio de espacio en disco con<br />

archivos que no se encuentran en ningún directorio.<br />

Se soluciona haciendo que el contador de enlaces en el nodo-i tome el valor<br />

correcto; si el valor correcto es 0, el archivo debe eliminarse.<br />

Otro tipo de error es potencialmente catastrófico:<br />

Si dos entradas de un directorio se enlazan a un archivo, pero el nodo-i indica<br />

que solo existe un enlace, entonces, al eliminar cualquiera de estas entradas<br />

de directorio, el contador del nodo-i tomará el valor 0.<br />

Debido al valor 0 el sistema de archivos lo señala como no utilizado y libera<br />

todos sus bloques.<br />

Uno de los directorios apunta hacia un nodo-i no utilizado, cuyos bloques se<br />

podrían asignar entonces a otros archivos.<br />

La solución es forzar que el contador de enlaces del nodo-i sea igual al número<br />

de entradas del directorio.<br />

También se pueden hacer verificaciones heurísticas , por ej.:<br />

98


[SISTEMAS OPERATIVOS]<br />

Cada nodo-i tiene un modo, pero algunos modos son válidos aunque extraños:<br />

o Ej.: Se prohíbe el acceso al propietario y todo su grupo, pero se permite<br />

a los extraños leer, escribir y ejecutar el archivo.<br />

o La verificación debería detectar e informar de estas situaciones.<br />

Se debería informar como sospechosos aquellos directorios con excesivas entradas,<br />

por ej., más de mil.<br />

99


[SISTEMAS OPERATIVOS]<br />

Unidad 6 Protección y seguridad<br />

6.1 Concepto y objetivos de protección<br />

La protección es un mecanismo control de<br />

acceso de los programas, procesos o usuarios<br />

al sistema o recursos.<br />

Hay importantes razones para proveer<br />

protección. La más obvia es la necesidad de<br />

prevenirse de violaciones intencionales de<br />

acceso por un usuario. Otras de importancia<br />

son, la necesidad de asegurar que cada<br />

componente de un programa, use solo los recursos del sistema de acuerdo con las<br />

políticas fijadas para el uso de esos recursos.<br />

Un recurso desprotegido no puede defenderse contra el uso no autorizado o de un<br />

usuario incompetente. Los sistemas orientados a la protección proveen maneras de<br />

distinguir entre uso autorizado y desautorizado.<br />

Objetivos<br />

• Inicialmente protección del SO frente a usuarios poco confiables.<br />

• Protección: control para que cada componente activo de un proceso<br />

solo pueda acceder a los recursos especificados, y solo en forma<br />

congruente con la política establecida.<br />

• La mejora de la protección implica también una mejora de la seguridad.<br />

• Las políticas de uso se establecen:<br />

- Por el hardware.<br />

- Por el administrador / SO.<br />

- Por el usuario propietario del recurso.<br />

• Principio de separación entre mecanismo y política:<br />

- Mecanismo → con que elementos (hardware y/o software) se<br />

realiza la protección.<br />

- Política → es el conjunto de decisiones que se toman para<br />

especificar como se usan esos elementos de protección.<br />

100


• La política puede variar<br />

[SISTEMAS OPERATIVOS]<br />

- dependiendo de la aplicación, a lo largo del tiempo.<br />

• La protección no solo es cuestión del administrador, sino también del<br />

usuario.<br />

• El sistema de protección debe:<br />

- distinguir entre usos autorizados y no-autorizados.<br />

- especificar el tipo de control de acceso impuesto.<br />

- proveer medios para el aseguramiento de la protección.<br />

6.2 Funciones del sistema de protección<br />

Control de acceso que hace referencia a las características de seguridad que<br />

controlan quien puede obtener acceso a los recursos de un sistema operativo. Las<br />

aplicaciones llaman a las funciones de control de acceso para establecer quien puede<br />

obtener acceso a los recursos específicos o controlar el acceso a los recursos<br />

proporcionados por la aplicación.<br />

Un sistema de protección deberá tener la flexibilidad suficiente para poder imponer<br />

una diversidad de políticas y mecanismos.<br />

Existen varios mecanismos que pueden usarse para asegurar los archivos, segmentos<br />

de memoria, CPU, y otros recursos administrados por el Sistema Operativo.<br />

Por ejemplo, el direccionamiento de memoria asegura que unos procesos puedan<br />

ejecutarse solo dentro de sus propios espacios de dirección. El timer asegura que los<br />

procesos no obtengan el control de la CPU en forma indefinida.<br />

La protección se refiere a los mecanismos para controlar el acceso de programas,<br />

procesos, o usuarios a los recursos definidos por un sistema de computación.<br />

Seguridad es la serie de problemas relativos a asegurar la integridad del sistema y sus<br />

datos.<br />

Hay importantes razones para proveer protección. La más obvia es la necesidad de<br />

prevenirse de violaciones intencionales de acceso por un usuario. Otras de<br />

importancia son, la necesidad de asegurar que cada componente de un programa,<br />

101


[SISTEMAS OPERATIVOS]<br />

use solo los recursos del sistema de acuerdo con las políticas fijadas para el uso de<br />

esos recursos.<br />

Un recurso desprotegido no puede defenderse contra el uso no autorizado o de un<br />

usuario incompetente. Los sistemas orientados a la protección proveen maneras de<br />

distinguir entre uso autorizado y desautorizado.<br />

Mecanismos y Políticas<br />

El sistema de protección tiene la función de proveer un mecanismo para el<br />

fortalecimiento de las políticas que gobiernan el uso de recursos. Tales políticas se<br />

pueden establecer de varias maneras, algunas en el diseño del sistema y otras son<br />

formuladas por el administrador del sistema. Otras pueden ser definidas por los<br />

usuarios individuales para proteger sus propios archivos y programas.<br />

Las políticas son diversas, dependen de la aplicación y pueden estar sujetas a<br />

cambios a lo largo del tiempo.<br />

Un principio importante es la separación de políticas de los mecanismos. ‘Los<br />

mecanismos determinan como algo se hará. Las políticas deciden que se hará'.<br />

La separación es importante para la flexibilidad del sistema.<br />

Dentro de las funciones del sistema de protección del sistema operativo encontramos:<br />

• Controlar el acceso a los recursos<br />

• Asegurarse que todos los accesos a los recursos del sistema están controlados<br />

6.3 Implantación de matrices de acceso<br />

Los derechos de acceso definen que acceso tienen varios sujetos sobre varios<br />

objetos.<br />

Los sujetos acceden a los objetos.<br />

102


[SISTEMAS OPERATIVOS]<br />

Los objetos son entidades que contienen información.<br />

Los objetos pueden ser:<br />

Concretos:<br />

o Ej.: discos, cintas, procesadores, almacenamiento, etc.<br />

Abstractos:<br />

o Ej.: estructuras de datos, de procesos, etc.<br />

Los objetos están protegidos contra los sujetos.<br />

Las autorizaciones a un sistema se conceden a los sujetos.<br />

Los sujetos pueden ser varios tipos de entidades:<br />

Ej.: usuarios, procesos, programas, otras entidades, etc.<br />

Los derechos de acceso más comunes son:<br />

Acceso de lectura.<br />

Acceso de escritura.<br />

Acceso de ejecución.<br />

Una forma de implementación es mediante una matriz de control de acceso con:<br />

Filas para los sujetos.<br />

Columnas para los objetos.<br />

Celdas de la matriz para los derechos de acceso que un usuario tiene a un<br />

objeto.<br />

Una matriz de control de acceso debe ser muy celosamente protegida por el S. O.<br />

Dominios de protección<br />

Un sistema de cómputos contiene muchos objetos que necesitan protección. Estos<br />

objetos pueden ser el hardware, la CPU, los segmentos de memoria, terminales,<br />

unidades de disco o impresoras; o bien ser del software, como los proceso, archivos,<br />

bases de datos o semáforos.<br />

103


[SISTEMAS OPERATIVOS]<br />

Cada objeto tiene un único nombre mediante el cual se la hace referencia y un<br />

conjunto de operaciones que se pueden realizar en él. READ y WRITE son<br />

operaciones adecuadas para un archivo; UP y DOWN tiene sentido en un semáforo.<br />

Es evidente que se necesita una vía para prohibir el acceso de los procesos a los<br />

objetos a los que no tiene permitido dicho acceso. Además, este mecanismo debe<br />

posibilitar la restricción de los procesos a un subconjunto de operaciones legales en<br />

caso necesario. Por ejemplo, puede permitirse que el proceso A lea el archivo F, pero<br />

no escriba en él.<br />

Para tener una forma de analizar los distintos mecanismos de protección, es<br />

conveniente presentar el concepto de dominio. Un dominio es un conjunto de parejas<br />

(objeto, derechos). Cada pareja determina un objeto y cierto subconjunto de las<br />

operaciones que se pueden llevar a cabo en él. Un derecho es, en este contexto, el<br />

permiso para realizar alguna de las operaciones.<br />

Una pregunta importante es la forma en que el sistema lleva un registro de los objetos<br />

que pertenecen a un dominio dado. Al menos una teoría, uno puede imaginar una<br />

enorme matriz, en la que los renglones son los dominio y las columnas son los<br />

objetos. Cada cuadro contiene los derechos correspondientes al objeto en ese<br />

dominio. Con esta matriz y el número de dominio activo, el sistema puede determinar<br />

si se permite el acceso de cierta forma a un objeto dado desde un domino especifico.<br />

Un dominio es un conjunto de parejas (objeto, derechos):<br />

Cada pareja determina:<br />

o Un objeto.<br />

o Un subconjunto de las operaciones que se pueden llevar a cabo en el.<br />

Un derecho es el permiso para realizar alguna de las operaciones.<br />

Es posible que un objeto se encuentre en varios dominios con “distintos” derechos en<br />

cada dominio.<br />

Un proceso se ejecuta en alguno de los dominios de protección:<br />

Existe una colección de objetos a los que puede tener acceso.<br />

Cada objeto tiene cierto conjunto de derechos.<br />

Los procesos pueden alternar entre los dominios durante la ejecución.<br />

104


[SISTEMAS OPERATIVOS]<br />

Una llamada al S. O. provoca una alternancia de dominio.<br />

En algunos S. O. los dominios se llaman anillos.<br />

Una forma en la que el S. O. lleva un registro de los objetos que pertenecen a cada<br />

dominio es mediante una matriz:<br />

Los renglones son los dominios.<br />

Las columnas son los objetos.<br />

Cada elemento de la matriz contiene los derechos correspondientes al objeto<br />

en ese dominio, por ej.: leer, escribir, ejecutar.<br />

Ver Figura 6.3.1<br />

Fig. 6.3.1 Dominio de protección<br />

Matriz de acceso<br />

El modelo de protección del sistema se puede ver en forma abstracta como una<br />

matriz, la matriz de acceso.<br />

Una matriz de acceso es una representación abstracta del concepto de dominio de<br />

protección.<br />

105


[SISTEMAS OPERATIVOS]<br />

Este modelo fue propuesto por Lampson [4] como una descripción generalizada de<br />

mecanismos de protección en sistemas operativos. Es el modelo más utilizado, del<br />

que existen numerosas variaciones, especialmente en su implementación.<br />

Los elementos básicos del modelo son los siguientes:<br />

• Sujeto: Una entidad capaz de acceder a los objetos. En general, el concepto de<br />

sujeto es equiparable con el de proceso. Cualquier usuario o aplicación consigue<br />

acceder en realidad a un objeto por medio de un proceso que representa al usuario o<br />

a la aplicación.<br />

• Objeto: Cualquier cosa cuyo acceso debe controlarse. Como ejemplo se incluyen<br />

los archivos, partes de archivos, programas y segmentos de memoria.<br />

• Derecho de acceso: la manera en que un sujeto accede a un objeto. Como ejemplo<br />

están Leer, Escribir y Ejecutar.<br />

El modelo considera un conjunto de recursos, denominados objetos, cuyo acceso<br />

debe ser controlado y un conjunto de sujetos que acceden a dichos objetos. Existe<br />

también un conjunto de permisos de acceso que especifica los diferentes permisos<br />

que los sujetos pueden tener sobre los objetos (normalmente lectura, escritura, etc.,<br />

aunque pueden ser diferentes, en general, dependiendo de las operaciones que<br />

puedan realizarse con el objeto).<br />

Se trata de especificar para cada pareja (sujeto, objeto), los permisos de acceso que<br />

el sujeto tiene sobre el objeto. Esto se representa mediante una matriz de acceso M<br />

que enfrenta todos los sujetos con todos los objetos. En cada celda M[i, j] se indican<br />

los permisos de acceso concretos que tiene el sujeto i sobre el objeto j.<br />

La figura 6.3.2 representa una matriz de acceso, y la figura 6.3.3 es una matriz de<br />

acceso derivada de la figura 6.3.1 de dominios de protección.<br />

106


[SISTEMAS OPERATIVOS]<br />

Fig. 6.3.2 Representación de una matriz de acceso<br />

Figura 6.3.3 Ejemplo de una matriz de acceso<br />

El mecanismo de protección es la matriz, junto con todos los elementos que se han<br />

de añadir para que se cumplan de manera efectiva todas las restricciones de acceso a<br />

los objetos.<br />

107


[SISTEMAS OPERATIVOS]<br />

• La política consiste en decidir cómo rellenar las distintas celdas de la matriz.<br />

• La MA permite implementar operaciones de cambio de domino.<br />

• El objeto sobre el que trabajamos es el Dominio → aparecen tantas columnas como<br />

dominios haya en el sistema.<br />

• La operación es la conmutación de un dominio a otro.<br />

• También la MA es un objeto que se puede modificar. De este modo podemos definir<br />

tres operaciones:<br />

• Copiar derechos de acceso de una celda a otra dentro de la misma columna.<br />

Consiste en pasar el derecho de acceso a un objeto de un Dominio que lo tiene, a otro<br />

donde originalmente no lo tenía. Se señala con un asterisco (*).<br />

• Copia ilimitada con propagación del propio derecho de copia.<br />

• Copia limitada sin propagación.<br />

• Movimiento de derecho.<br />

• Dueño. Un proceso ejecutándose en un dominio que tiene derecho de “dueño”<br />

sobre un objeto, puede repartir cualquier derecho de acceso sobre cualquier dominio<br />

para dicho objeto.<br />

• Control. Opera solo sobre dominios. Ejercer el control sobre un dominio implica que<br />

se puede quitar cualquier derecho sobre una fila de dominio.<br />

• La MA también ha de ser protegida.<br />

Implementación de la Matriz de Acceso<br />

Tabla Global<br />

Sencilla. Se almacena una lista de ternas {...}.<br />

Como el número de objetos y dominios es posiblemente muy grande, se debería<br />

guardar en memoria virtual → lento. Ver fig. 6.3.4<br />

108


Fig. 6.3.4 Ejemplo de una tabla global<br />

Lista de acceso para objetos (ACL)<br />

[SISTEMAS OPERATIVOS]<br />

Se expresa la MA por columnas {, ...}. Se descartan las entradas<br />

vacías.<br />

Se puede crear una lista de permisos por defecto para hacer más fácil su uso.<br />

Dado que cada vez que se va a usar un objeto hay que comprobar si hay o no<br />

permiso para hacerlo, es lógico poner la ACL allí donde estén descritos los atributos<br />

del objeto.<br />

Asocia a cada objeto una lista ordenada con:<br />

o Todos los dominios que pueden tener acceso al objeto.<br />

o La forma de dicho acceso (ej: lectura (r), grabación (w), ejecución (x)).<br />

Una forma de implementar las ACL consiste en:<br />

Asignar tres bits (r, w, x) para cada archivo, para:<br />

o El propietario, el grupo del propietario y los demás usuarios.<br />

Permitir que el propietario de cada objeto pueda modificar su ACL en cualquier<br />

momento:<br />

o Permite prohibir accesos antes permitidos.<br />

Lista de Capacidades<br />

Se expresa la MA por filas. Cada dominio tiene una lista de la forma {, ...}<br />

Para identificar el objeto se usa o bien su nombre lógico, o un puntero a él (la<br />

estructura de datos que le describe); a esta dirección se la llama capacidad.<br />

109


[SISTEMAS OPERATIVOS]<br />

Solo se podrá realizar la operación M sobre el objeto O si se dispone de la capacidad<br />

(puntero) al objeto. Ver figura 6.3.6<br />

Fig. 6.3.6 Ejemplo de una lista de capacidades<br />

Mecanismo de Cerradura-Llave<br />

Cada objeto tiene una lista de patrones llamados cerradura.<br />

Cada dominio tiene una lista de patrones llamados claves.<br />

Un proceso que se ejecuta en un dominio solo tendrá acceso a un objeto si el dominio<br />

contiene una llave que coincida con una de las cerraduras.<br />

Comparación<br />

La tabla global es una matriz dispersa, es ineficiente para su almacenamiento.<br />

ACL → Cuando se accede a un objeto es fácil determinar si hay o no permiso para<br />

usarlo.<br />

Capacidades → Las ACL están distribuidas, es difícil saber cuáles son los derechos<br />

de acceso para un proceso, cosa que si se puede hacer con la lista de capacidades.<br />

Los sistemas reales suelen usar una mezcla de todos.<br />

110


[SISTEMAS OPERATIVOS]<br />

Ej. UNIX: Se abre un fichero, se verifica en la ACL si tiene permiso o no. Si lo tiene, se<br />

consigue un descriptor de fichero, es decir una capacidad que será lo que se use a<br />

partir de entonces.<br />

6.4 Protección basada en el lenguaje<br />

El grado de protección que se proporciona en los<br />

sistemas informáticos existentes suele conseguirse<br />

inmediatamente en kernel del sistema operativo que<br />

actúa como agente de seguridad para inspeccionar<br />

y validar cada intento de acceder a un recurso<br />

protegido.<br />

La protección la maneja la máquina virtual (JVM)<br />

La JVM asigna un dominio de protección a una<br />

clase cuando la carga. El dominio de protección<br />

indica qué operaciones puede (y no puede) realizar la clase.<br />

Si se invoca un método de biblioteca y éste realiza una operación privilegiada, se<br />

examina el stack para asegurar que la biblioteca pueda realizar la operación.<br />

La seguridad en los sistemas de una computadora es un elemento muy importante en<br />

diseño delos sistemas operativos ya que manejan información muy valiosa para sus<br />

propietarios.<br />

La seguridad de un sistema tiene múltiples facetas, desde la protección ante posibles<br />

daños físicos de los datos (fuego, terremotos, etc.) hasta el acceso indebido a los<br />

mismos (intrusos, fallos de confidencialidad, etc.).Los ataques contra la<br />

confidencialidad, la integridad o la disponibilidad de recursos en un sistema deben<br />

prevenirse y solventarse mediante la política y los mecanismos de seguridad de un<br />

sistema. La seguridad debe tener en cuenta eventos tanto internos como externos<br />

(provenientes del entorno en que opera el sistema), de nada sirve tener mecanismos<br />

de protección interna muy buenos, si el sistema operativo no es capaz de identificar a<br />

los usuarios que acceden al sistema o si no existe una política de salvaguarda de<br />

datos antes la rotura de un disco. La protección, consiste en evitar que se haga un uso<br />

indebido de los recursos que están dentro del ámbito del sistema operativo. Es<br />

111


[SISTEMAS OPERATIVOS]<br />

necesario comprobar que los recursos (archivos, zonas de memoria, etc.) solo se<br />

usan por aquellos usuarios que tienen derechos de acceso. El sistema operativo debe<br />

proporcionar los medios para implementar políticas de protección deseadas por el<br />

usuario.<br />

6.5 Concepto de seguridad<br />

Los términos seguridad y protección se utilizan<br />

en forma indistinta. Sin embargo, es útil hacer<br />

una distinción entre los problemas generales<br />

relativos a la garantía de que los archivos no<br />

sea leídos o modificados por personal no<br />

autorizado, lo que incluye aspectos técnicos,<br />

de administración, legales y políticos, por un<br />

lado y los sistemas específicos del sistema<br />

operativo utilizados para proporcionar la<br />

seguridad, por el otro. Para evitar la confusión,<br />

utilizaremos el término seguridad para referirnos al problema general y el término<br />

mecanismo de protección para referirnos a los mecanismos específicos del sistema<br />

operativo utilizado para resguardar la información de la computadora. Sin embargo, la<br />

frontera entre ellos no está bien definida. Primero nos fijaremos en la seguridad; más<br />

adelante analizaremos la protección.<br />

La seguridad tiene muchas facetas. Dos de las más importantes son la perdida de<br />

datos y los intrusos. Algunas de las causas más comunes de la perdida de datos son:<br />

• Actos divinos: Incendios, inundaciones, terremotos, guerras, revoluciones o ratas<br />

que roen las cintas o discos flexibles.<br />

• Errores de Hardware o Software: Mal funcionamiento de la CPU, discos o cintas<br />

ilegibles, errores de telecomunicación o errores en el programa.<br />

• Errores Humanos: Entrada incorrecta de datos, mal montaje de las cintas o el disco,<br />

ejecución incorrecta del programa, perdida de cintas o discos.<br />

La mayoría de estas causas se pueden enfrentar con el mantenimiento de los<br />

respaldos adecuados; de preferencia, en un lugar alejado de los datos originales.<br />

112


[SISTEMAS OPERATIVOS]<br />

Un problema más interesante es que hacer con los intrusos. Estos tienen dos<br />

variedades. Los intrusos pasivos solo desean leer archivos que no están autorizados a<br />

leer. Los intrusos activos son más crueles: Desean hacer cambios no autorizados a<br />

los datos. Si se desea diseñar un sistema seguro contra los intrusos, es importante<br />

tener en cuenta el tipo de intruso con el que se desea tener protección. Algunas de las<br />

categorías comunes son:<br />

• Curiosidad casual de usuarios no técnicos. Muchas personas tienen en sus<br />

escritorios terminales para sistemas con tiempo compartido y, por la naturaleza<br />

humana, algunos de ellos leerán el correo electrónico de los demás u otros archivos,<br />

si no existen barreras en frente de ellos. Por ejemplo la mayoría de los sistemas UNIS<br />

tienen pre definido que todos los archivos se pueden leer de manera pública.<br />

• Conocidos husmeando. Algunos estudiantes, programadores de sistemas,<br />

operadores y demás personal técnico consideran como un reto personal romper la<br />

seguridad del sistema de cómputo local. A menudo son muy calificados y están<br />

dispuestos a invertir una cantidad sustancial de su tiempo en este esfuerzo.<br />

• Un intento deliberado de hacer dinero. Algunos programadores en banco han<br />

intentado penetrar un sistema bancario con el fin de robarle al banco. Los esquemas<br />

han variado desde cambiar el software para truncar y no redondear el interés, para<br />

quedarse con una pequeña fracción de dinero, hasta sacar dinero de las cuentas que<br />

no se han utilizado en anos o el "correo negro”.<br />

• Espionaje comercias o militar. El espionaje indica un intento serio y fundamentado<br />

por parte de un competidor u otro país para robar programas, secretos comerciales,<br />

patentes, tecnología, diseño de circuitos, planes de comercialización, etc. A menudo,<br />

este intento implica la cobertura de cables o el levantamiento de antenas hacia la<br />

computadora con el fin de recoger su radiación electromagnética.<br />

Debe quedar claro que el intento por mantener la KGB lejos de los secretos militares<br />

es un poco distinto del intento por evitar que los estudiantes inserten un mensaje<br />

gracioso en el sistema. La cantidad de esfuerzo que alguien pone en la seguridad y la<br />

protección depende claramente de quien se piensa sea el enemigo.<br />

Otro aspecto del problema de la seguridad es la privacía: la protección de las<br />

personas respecto del mal uso de la información en contra de uno mismo. Esto implica<br />

en forma casi inmediata muchos aspectos morales y legales.<br />

113


[SISTEMAS OPERATIVOS]<br />

Para proteger un sistema, debemos optar las necesarias medidas de seguridad en<br />

cuatro niveles distintos:<br />

1. Físico. El nodo o nodos que contengan los sistemas informáticos deben<br />

dotarse de medidas de seguridad físicas frente a posibles intrusiones armadas<br />

o subrepticias por parte de potenciales intrusos. Hay que dotar de seguridad<br />

tanto a las habitaciones donde las maquinas residan como a los terminales o<br />

estaciones de trabajo que tengan acceso a dichas maquinas.<br />

2. Humano. La autorización de los usuarios debe llevarse a cabo con cuidado,<br />

para garantizar que solo los usuarios apropiados tengan acceso al sistema. Sin<br />

embargo, incluso los usuarios autorizados pueden verse “motivados” para<br />

permitir que otros usen su acceso (por ejemplo, a cambio de un soborno).<br />

También pueden ser engañados para permitir el acceso de otros, mediante<br />

técnicas de ingeniería social. Uno de los tipos de ataque basado en las<br />

técnicas de ingeniería social es el denominado phishing; con este tipo de<br />

ataque, un correo electrónico o página web de aspecto autentico llevan a<br />

engaño a un usuario para que introduzca información confidencial. Otra técnica<br />

comúnmente utilizada es el análisis de desperdicios, un término autorizado a<br />

la computadora (por ejemplo, examinando el contenido de las papeleras,<br />

localizando listines de teléfonos encontrando notas con contraseñas). Estos<br />

problemas de seguridad son cuestiones relacionadas con la gestión y con el<br />

personal, más que problemas relativos a los sistemas operativos.<br />

3. Sistema operativo. El sistema debe auto protegerse frente a los diversos<br />

fallos de seguridad accidentales o premeditados. Un problema que este fuera<br />

de control puede llegar a constituir un ataque accidental de denegación de<br />

servicio. Asimismo, una cierta consulta a un servicio podría conducir a la<br />

revelación de contraseñas o un desbordamiento de la pila podría permitir que<br />

se iniciara un proceso no autorizado. La lista de posibles fallos es casi infinita.<br />

4. Red. Son muchos los datos en los modernos sistemas informáticos que viajen<br />

a través de líneas arrendadas privadas, de líneas compartidas como Internet,<br />

de conexiones inalámbricas o de líneas de acceso telefónico. La interceptación<br />

de estos datos podría ser tan dañina como el acceso a un computador, y la<br />

interrupción en la comunicación podría constituir un ataque remoto de<br />

denegación de servicio, disminuyendo la capacidad de uso del sistema y la<br />

confianza en el mismo por parte de los usuarios.<br />

Si queremos poder garantizar la seguridad del sistema operativo, es necesario<br />

garantizar la seguridad en los primeros dos niveles. Cualquier debilidad en uno de los<br />

niveles altos de seguridad (físico o humano) podría puentear las medidas de<br />

seguridad que son estrictamente de bajo nivel (del nivel del sistema operativo). Así, la<br />

114


[SISTEMAS OPERATIVOS]<br />

frase que afirma que una cadena es tan fuerte como el más débil de sus eslabones es<br />

especialmente cierta cuando hablamos de seguridad de los sistemas. Para poder<br />

mantener la seguridad, debemos contemplar todos estos aspectos.<br />

Además, el sistema debe proporcionar mecanismos de protección para permitir la<br />

implementación de las características de seguridad. Sin la capacidad de autorizar a<br />

los usuarios y procesos, de controlar su acceso y de registrar sus actividades, sería<br />

imposible que un sistema operativo implementara medidas de seguridad o se<br />

ejecutara de forma segura. Para soportar un esquema global de protección hacen falta<br />

mecanismos de protección hardware. Por ejemplo, un sistema donde la memoria no<br />

está protegida no puede nunca estar seguro.<br />

6.6 Clasificaciones de la seguridad<br />

La seguridad interna está relacionada a los<br />

controles incorporados al hardware y al Sistema<br />

Operativo para asegurar los recursos del sistema.<br />

La seguridad externa consiste en:<br />

Seguridad física.<br />

Seguridad operacional.<br />

La seguridad física incluye:<br />

Protección contra desastres (como inundaciones, incendios, etc.).<br />

Protección contra intrusos.<br />

En la seguridad física son importantes los mecanismos de detección, algunos<br />

ejemplos son:<br />

Detectores de humo.<br />

Sensores de calor.<br />

Detectores de movimiento.<br />

115


[SISTEMAS OPERATIVOS]<br />

La protección contra desastres puede ser costosa y frecuentemente no se analiza en<br />

detalle; depende en gran medida de las consecuencias de la perdida.<br />

La seguridad física trata especialmente de impedir la entrada de intrusos:<br />

Se utilizan sistemas de identificación física:<br />

Tarjetas de identificación.<br />

<strong>Sistemas</strong> de huellas digitales.<br />

Identificación por medio de la voz.<br />

Seguridad Operacional<br />

Consiste en las diferentes políticas y procedimientos implementados por la<br />

administración de la instalación computacional.<br />

La autorización determina que acceso se permite y a quien.<br />

La clasificación divide el problema en subproblemas:<br />

Los datos del sistema y los usuarios se dividen en clases:<br />

A las clases se conceden diferentes derechos de acceso.<br />

Un aspecto crítico es la selección y asignación de personal:<br />

La pregunta es si se puede confiar en la gente.<br />

El tratamiento que generalmente se da al problema es la división de<br />

responsabilidades:<br />

Se otorgan distintos conjuntos de responsabilidades.<br />

No es necesario que se conozca la totalidad del sistema para cumplir<br />

con esas responsabilidades.<br />

Para poder comprometer al sistema puede ser necesaria la cooperación<br />

entre muchas personas:<br />

Se reduce la probabilidad de violar la seguridad.<br />

116


[SISTEMAS OPERATIVOS]<br />

Debe instrumentarse un gran número de verificaciones y balances en el<br />

sistema para ayudar a la detección de brechas en la seguridad.<br />

El personal debe estar al tanto de que el sistema dispone de controles,<br />

pero:<br />

Debe desconocer cuales son esos controles:<br />

Se reduce la probabilidad de poder evitarlos.<br />

Debe producirse un efecto disuasivo respecto de posibles<br />

intentos de violar la seguridad.<br />

Para diseñar medidas efectivas de seguridad se debe primero:<br />

Enumerar y comprender las amenazas potenciales.<br />

Definir qué grado de seguridad se desea (y cuanto se está dispuesto a gastar<br />

en seguridad).<br />

Analizar las contramedidas disponibles.<br />

6.7 Validación y amenazas al sistema<br />

Los tipos de amenazas a la seguridad de un sistema informático los podemos<br />

caracterizar teniendo en cuenta como esta información es suministrada por el sistema.<br />

En general, hay un flujo de información de una fuente a un destino.<br />

El flujo normal es:<br />

Dentro de las amenazas que existen podemos mencionar las siguientes:<br />

117


[SISTEMAS OPERATIVOS]<br />

*Interrupción: Un elemento del sistema es destruido o se hace inservible. Es una<br />

amenaza a la disponibilidad. Ejemplos son la destrucción de algún elemento<br />

hardware y la desactivación del sistema de gestión de ficheros.<br />

* Intercepción: Una parte no autorizada obtiene acceso a un elemento relacionado<br />

con la seguridad. Es una amenaza a la privacidad. Ejemplos son la copia ilícita de<br />

programas y la visualización de ficheros que han de permanecer ocultos.<br />

* Modificación: Una parte no autorizada no sólo obtiene acceso sino que puede<br />

modificar un elemento relacionado con la seguridad. Es una amenaza a la integridad.<br />

Ejemplos son la alteración del contenido de un fichero y modificar un programa para<br />

que funcione de forma diferente.<br />

118


[SISTEMAS OPERATIVOS]<br />

* Fabricación: Una parte no autorizada inserta nuevos elementos en el sistema. Es<br />

una amenaza a la integridad. Ejemplos son adición de registros a un fichero y la<br />

inclusión de mensajes ilegítimos en una red.<br />

*Intrusos: dentro de ellos tenemos lo que son los piratas o hackers: que son los<br />

individuos que acceden al sistema sin autorización y hacen que los sistemas<br />

presenten agujeros que es el lugar por donde consiguen colarse.<br />

Amenazas de tipo software<br />

· Bomba Lógica: Es un código incrustado en un programa que comprueba si ciertas<br />

condiciones se cumplen, en cuyo caso ejecuta alguna acción no autorizada. Un<br />

ejemplo de uso de bomba lógica es el caso de un programador que vende un<br />

programa a una empresa. Si transcurrido un cierto tiempo la empresa no ha pagado,<br />

el programador revela la existencia de la bomba lógica con el fin de obtener su dinero.<br />

· Puerta Falsa (Trapdoor): Es un punto de entrada secreto en un programa, de forma<br />

que alguien que conozca la existencia de dicha puerta puede obtener permisos de<br />

acceso sin tener que pasar por los mecanismos normales de autentificación.<br />

· Caballo de Troya (Trojan Horse): Es una rutina oculta en un programa de utilidad.<br />

Cuando el programa se ejecuta, se ejecuta la rutina y ésta realiza acciones no<br />

autorizadas. Estos programas permiten realizar de forma indirecta acciones que no<br />

puede realizar de forma directa. Por ejemplo, puede ser un editor que cuando es<br />

ejecutado modifica los permisos de los ficheros que edita de forma que éstos puedan<br />

ser accedidos por cualquier usuario.<br />

· Virus: Es código introducido en un programa que puede infectar otros programas<br />

mediante la copia de sí mismo en dichos programas.<br />

· Bacteria: Programa que consume recursos del sistema replicándose asimismo, pero<br />

no daña explícitamente ningún fichero. Se suele reproducir exponencialmente, por lo<br />

que puede acaparar recursos como CPU, memoria y disco.<br />

· Gusano (Worm): Es un programa que usa las redes de computadores para pasar de<br />

unos sistemas a otros. Una vez que llega a un sistema, el gusano se puede comportar<br />

como un virus o una bacteria, puede implantar programas caballo de troya, o puede<br />

realizar acciones no autorizadas.<br />

119


[SISTEMAS OPERATIVOS]<br />

Ataques genéricos a sistemas operativos<br />

Asincronismo:<br />

Se tienen procesos múltiples que progresan asincrónicamente.<br />

Un proceso podría modificar los parámetros ya validados por otro proceso pero<br />

aún no utilizados.<br />

Rastreo:<br />

Un usuario revisa el sistema intentando localizar información privilegiada.<br />

Entre líneas:<br />

Se utiliza una línea de comunicaciones mantenida por un usuario habilitado<br />

que está inactivo.<br />

Código clandestino:<br />

Se modifica el S. O. bajo una presunta depuración pero se incorpora código<br />

que permite ingresos no autorizados.<br />

Procesos sincronizados interactivos:<br />

Se utilizan las primitivas de sincronización del sistema para compartir y pasarse<br />

información entre sí.<br />

Disfraz:<br />

El intruso asume la identidad de un usuario legítimo luego de haber obtenido la<br />

identificación apropiada por medios clandestinos.<br />

Ataque “nak”:<br />

Si el S. O. permite a un usuario:<br />

Interrumpir un proceso en ejecución mediante una “tecla” de<br />

“reconocimiento negativo”.<br />

Realizar otra operación.<br />

Reanudar el proceso interrumpido.<br />

Un intruso podría “encontrar” al sistema en un estado no protegido y hacerse<br />

con el control.<br />

Engaño al operador:<br />

Con un engaño se hace realizar al operador una acción que comprometa la<br />

seguridad del sistema.<br />

Parámetros inesperados:<br />

El intruso suministra valores inesperados a una llamada al núcleo.<br />

Intenta aprovechar una debilidad de los mecanismos de verificación de la<br />

legalidad del S. O.<br />

120


6.8 Cifrado<br />

[SISTEMAS OPERATIVOS]<br />

Deitel (1987) nos menciona que una<br />

rama de la criptología es la criptografía,<br />

que se ocupa del cifrado de mensajes.<br />

Esta se basa en que el emisor emite un<br />

mensaje en claro, que es tratado<br />

mediante un cifrador con la ayuda de<br />

una clave, para crear un texto cifrado.<br />

Este texto cifrado, por medio del canal<br />

de comunicación establecido, llega al<br />

descifrador que convierte el texto<br />

cifrado, apoyándose en otra clave, para<br />

obtener el texto en claro original. Las dos claves implicadas en el proceso de<br />

cifrado/descifrado pueden ser o no iguales dependiendo del sistema de cifrado<br />

utilizado.<br />

<strong>Sistemas</strong> de cifrado simétrico.<br />

Deitel (1987) nos comenta que los sistemas de cifrado simétrico son aquellos que<br />

utilizan la misma clave para cifrar y descrifrar un documento. El principal problema de<br />

seguridad reside en el intercambio de claves entre el emisor y el receptor ya que<br />

ambos deben usar la misma clave.<br />

<strong>Sistemas</strong> de cifrado asimétrico.<br />

Deitel (1987) menciona que También son llamados sistemas de cifrado de clave<br />

pública. Este sistema de cifrado usa dos claves diferentes. Una es la clave pública y<br />

se puede enviar a cualquier persona y otra que se llama clave privada, que debe<br />

guardarse para que nadie tenga acceso a ella. Para enviar un mensaje, el remitente<br />

usa la clave pública del destinatario para cifrar el mensaje.<br />

Una vez que lo ha cifrado, solamente con la clave privada del destinatario se puede<br />

descifrar, ni siquiera el que ha cifrado el mensaje puede volver a descifrarlo.<br />

121


<strong>Sistemas</strong> de cifrado híbridos.<br />

[SISTEMAS OPERATIVOS]<br />

Deitel (1987) nos comenta que es el sistema de cifrado que usa tanto los sistemas de<br />

clave simétrica como el de clave asimétrica. Funciona mediante el cifrado de clave<br />

pública para compartir una clave para el cifrado simetrico. En cada mensaje, la clave<br />

simétrica utilizada es diferente por lo que si un atacante pudiera descubrir la clave<br />

simétrica, solo le valdría para ese mensaje y no para los restantes.<br />

122

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!