Sie sind auf Seite 1von 93

UTN FRC Resumen SOP – Rodrigo Carrión

Unidad Nº1 – Introducción a los Sistemas Operativos

Sistema operativo (SO): es un programa que controla la ejecución de los programas de aplicación y que actúa como
interfaz entre las aplicaciones del usuario y el hardware de una computadora.

Funciones y objetivos de los sistemas operativos


Un SO tiene tres objetivos:

 Comodidad: hacer que una computadora sea más cómoda y fácil de utilizar.
 Eficiencia: permite que los recursos de un sistema informático se aprovechen eficientemente.
 Capacidad de evolución: deben construirse de modo que permitan el desarrollo efectivo, la verificación y la
introducción de nuevas funciones al sistema, y a la vez, no interferir en los servicios que brinda.

El sistema operativo como interfaz usuario/computadora


Los usuarios finales utilizan programas de aplicación, y no tienen que
preocuparse de la arquitectura de la computadora.

Las aplicaciones se construyen con un lenguaje de programación y son


desarrolladas por programadores.

Algunos programas se denominan utilidades, que implementan


funciones muy utilizadas que ayudan a la creación de programas, la
gestión de archivos y el control de dispositivos de E/S.

El SO oculta al programador los detalles de hardware y le proporciona


una interfaz cómoda para utilizar el sistema. Actúa como mediador,
facilitándole al programador y a los programas de aplicación el acceso
y uso de todas esas características y servicios.

Un SO ofrece servicios en las siguientes áreas:

 Creación de programas: el SO ofrece múltiples funcionalidades y servicios para ayudar al programador en la


creación de programas. Estos servicios están en forma de programas de utilidades.
 Ejecución de programas: el SO administra todas las tareas necesarias para la ejecución de un programa.
 Acceso a los dispositivos de E/S: el SO brinda una interfaz uniforme que oculta los detalles de funcionamiento de
los dispositivos de E/S, de modo que el programador pueda acceder a los dispositivos utilizando lecturas y escrituras
simples.
 Acceso controlado a los archivos: el SO proporciona mecanismos de protección para controlar el acceso a los
archivos.
 Acceso al sistema: en un sistema compartido o público, el SO controla el acceso al sistema como un todo y a los
recursos específicos del sistema.
 Detección y respuesta a errores: el SO debe dar respuestas que elimine las condiciones de errores que se
produzcan con el menor impacto posible sobre las aplicaciones que están ejecución.
 Contabilidad: el SO debe recoger estadísticas de los recursos y supervisar parámetros de rendimiento. Es muy útil
para anticiparse a la necesidad de mejoras futuras y para ajustar el sistema y así mejorar su rendimiento.

El sistema operativo como administrador de recursos


Una computadora es un conjunto de recursos para el movimiento, almacenamiento y proceso de datos y para el control de
estas funciones. El SO es el responsable de la gestión de estos recursos.

El SO es nada más que un conjunto de programas, que como otros programas, proporciona instrucciones al procesador.

1/8
UTN FRC Resumen SOP – Rodrigo Carrión

El SO dirige al procesador en el empleo de otros recursos del sistema y en el control del tiempo de la ejecución de otros
programas. Pero para que el procesador pueda hacer estas cosas, debe cesar la ejecución del programa del SO y ejecutar
otros programas. El SO cede el control del procesador, para realizar algún trabajo y luego lo recupera durante el tiempo
suficiente para preparar al procesador para llevar a cabo la siguiente parte del trabajo.

Una parte del SO está en la memoria principal. En esta parte está el núcleo (kernel), que incluye las funciones más utilizadas
frecuentemente del SO. El resto de la memoria principal contiene datos y otros programas de usuario. La asignación de la
memoria principal es controlada conjuntamente por el SO y por el hardware de gestión de memoria del procesador. El SO
decide cuándo un programa en ejecución puede utilizar un dispositivo de E/S y controla el acceso y la utilización de los
archivos. El procesador es un recurso y es el SO el que debe determinar cuánto tiempo del procesador debe dedicarse a la
ejecución de un programa de usuario en particular.

Facilidad de evolución de un sistema operativo


Un SO evoluciona en el tiempo por las siguientes razones:

 Actualizaciones de hardware y nuevos tipos de hardware.


 Nuevos servicios, como respuesta a las demandas de los usuarios o necesidades de administradores de sistemas.
 Correcciones de fallos que se descubren con el tiempo.

La necesidad de hacer cambios en forma regular, introduce ciertos requisitos de diseño. El sistema debe tener una
construcción modular, con interfaces bien definidas entre los módulos y debe estar bien documentado.

Evolución histórica de los sistemas operativos


 Procesos en serie.
 Sistemas sencillos de proceso por lotes.
 Sistemas por lotes con multiprogramación.
 Sistemas de tiempo compartido.

Proceso en serie
En las primeras computadoras los programadores interactuaban directamente con el hardware de los mismos, no había
sistema operativo. Se operaba desde una consola consistente en unos indicadores luminosos, unos conmutadores, algún
tipo de dispositivo de entrada y alguna impresora.

Los programas en código máquina se cargaban con un dispositivo de entrada (lector de tarjetas). Se ejecutaban hasta su
culminación donde la impresora mostraba el resultado, si se producía un error se mostraba con los indicadores luminosos.

Presentaban dos problemas principales:

 Planificación: la mayoría de las instalaciones empleaban un formulario de reserva de tiempo de máquina. Si un


usuario reservaba una hora y terminaba a los 45 minutos se desperdiciaba tiempo del computador; por el contrario,
si el usuario tenía dificultades, no terminaba en el tiempo asignado y tenía que parar sin resolver el problema.
 Tiempo de preparación: si se producía un error, el usuario tenía que volver a realizar el proceso de preparación
perdiendo tiempo considerable. El proceso de preparación consistía en cargar compilador y programa en alto nivel
en memoria, salvar el programa objeto (compilado) y luego cargarlo y montarlo junto con las funciones comunes.

Se llamaba proceso en serie porque los usuarios accedían al computador en serie.

Sistemas sencillos de proceso por lotes


El primer sistema operativo por lotes (y el primer sistema operativo de todos) se desarrolló a mediados de los 50 por General
Motors.

La idea central es el uso de un elemento de software conocido como el monitor. Aquí, los usuarios no tenían acceso directo
a la máquina. En su lugar, el usuario debía entregar los trabajos en tarjetas o en cintas al operador de la computadora, quien
agrupaba secuencialmente los trabajos por lotes y ubicaba los lotes enteros en un dispositivo de entrada para su empleo
por parte del monitor. Cada programa se construía de modo que al terminar su ejecución, el monitor cargaba
automáticamente el siguiente programa.

2/8
UTN FRC Resumen SOP – Rodrigo Carrión

El monitor es quien gestiona el problema de la planificación. Se pone en cola un lote de trabajos y éstos son ejecutados tan
rápidamente como sea posible, evitando tiempos de inactividad. El monitor también organiza mejor el tiempo de organización
del trabajo utilizando un lenguaje de control de trabajos, que es un lenguaje para dar instrucciones al monitor.

Este tipo de sistemas necesitaban nuevas características como:

 Protección de memoria: mientras se ejecuta un programa de usuario no debe modificar la zona de memoria donde
está el monitor.
 Temporizador: se utiliza para evitar que un solo trabajo monopolice el sistema.
 Instrucciones privilegiadas: algunas instrucciones máquina solo las puede ejecutar el monitor.
 Interrupciones: le flexibilidad al sistema operativo para ceder y retomar el control de los programas de usuario.

Sistemas por lotes con multiprogramación


Aún con el secuenciamiento automático de trabajos ofrecido por un sistema operativo sencillo por lotes, el procesador está
desocupado con frecuencia, ya que los dispositivos de E/S son lentos comparados al microprocesador.

Consiste en tener varios programas de usuario en la memoria, y cuando el programa que está en ejecución va esperar por
E/S, el procesador cambia a otro trabajo que no esté esperando por E/S. Este proceso es conocido como
multiprogramación o multitarea.

Estos sistemas mantienen varios trabajos listos para ejecutarse en memoria principal, por lo que requieren alguna forma de
gestión de memoria, además debe decidir cuál ejecutar, haciendo uso de un algoritmo de planificación.

Sistemas de tiempo compartido


La técnica de tiempo compartido consiste en que el tiempo del procesador se comparte entre diversos usuarios. Múltiples
usuarios acceden simultáneamente al sistema por medio de terminales, donde el sistema operativo intercala la ejecución de
cada programa de usuario en ráfagas cortas o cuantos (quantum) de computación. El tiempo de respuesta de un sistema
correctamente diseñad debería ser comparable al de un computador dedicado.

Características de los sistemas operativos modernos


 Arquitectura micronúcleo.
 Multihilos.
 Multiproceso simétrico.
 Sistemas operativos distribuidos.
 Diseño orientado a objetos.

Arquitectura micronúcleo
La arquitectura micronúcleo asigna solamente unas pocas funciones esenciales al núcleo. Otros servicios del sistema
operativo los proporcionan procesos que se ejecutan en modo usuario y que el micronúcleo trata como cualquier otra
aplicación.

Este enfoque simplifica la implementación, proporciona flexibilidad, y se adapta bien para entornos distribuidos.

Multihilos
Los multihilos son una técnica por lo cual un proceso, ejecutando una aplicación, se divide en hilos que pueden ejecutarse
concurrentemente.

 Hilo: unidad de trabajo que se puede expedir para su ejecución. Conjunto de instrucciones que pertenecen a un
proceso. Se les suele llamar procesos ligeros o contextos de ejecución. Se ejecuta secuencialmente y es
interrumpible para que el procesador puede ceder el turno a otro hilo.
 Proceso: un conjunto de uno o más hilos y los recursos del sistema asociados (código, datos, archivos abiertos y
dispositivos). Al dividir una aplicación en múltiples hilos, el programador tiene un gran control sobre la modularidad
de la aplicación y la coordinación de los sucesos relativos al sistema.

3/8
UTN FRC Resumen SOP – Rodrigo Carrión

Los multihilos son muy útiles para las aplicaciones que ejecutan un número de tareas esencialmente independientes que no
necesitan ser consecutivas.

Multiproceso simétrico
Es un término que se refiere a una arquitectura hardware y al comportamiento de la misma. Un multiprocesador simétrico
puede definirse como un sistema de computadores de un solo usuario con las siguientes características:

 Existencia de múltiples procesadores.


 Estos procesadores comparten la misma memoria principal y dispositivos de E/S.
 Todos los procesadores pueden ejecutar las mismas funciones (simétrico).

Ventajas:

 Rendimiento: se puede ejecutar más de un proceso simultáneamente, cada uno en un procesador diferente.
 Disponibilidad: el fallo de un procesador no detiene la máquina, el sistema continúa funcionando con un
rendimiento reducido.
 Crecimiento incremental: se incrementa el rendimiento del sistema agregando un procesador adicional.
 Escalabilidad: variedad de productos con diferentes precios y características de rendimiento basados en el número
de procesadores del sistema.

La existencia de múltiples microprocesadores es transparente al usuario.

Sistema operativo distribuido


Un sistema operativo distribuido proporciona la ilusión de un único espacio de memoria principal y un único espacio de
memoria secundaria, además de otros mecanismos de acceso unificados.

Diseño orientado a objetos


Posibilita añadir extensiones modulares a un pequeño núcleo. Permite a los programadores personalizar el SO sin romper
la integridad del mismo, y también facilita el desarrollo de herramientas distribuidas y sistemas operativos distribuidos
abiertos.

Microsoft Windows
Reseña histórica
 MS DOS 1.0 (1981). Sistema operativo de Microsoft para la primera computadora personal de IBM. Se ejecutaba
en 8K de memoria utilizando el microprocesador Intel 8086.

 MS DOS 2.0 (1983). Para el PC XT de IBM. Añadió soporte para discos duros y ofrecía directorios jerárquicos
(directorios con subdirectorios y archivos). Se añadieron también características de UNIX como el
redireccionamiento de E/S (capacidad de cambiar la identidad de la entrada o salida de una aplicación) y la impresión
subordinada (background). La memoria creció hasta 24 Kb.

 MS DOS 3.0 (1984). Para el PC AT de IBM con micro Intel 80286 que añadió direccionamiento extendido y recursos
de protección de memoria, pero DOS no los utilizó. Uso el 80286 como un “8086 rápido” para mantener
compatibilidad. Los requisitos de memoria crecieron hasta 36 KB.
1. MS DOS 3.1 (1984). Añade soporte para redes de PC.
2. MS DOS 3.3 (1987). Soporte para PS/2. El sistema pasó a utilizar 46 KB.

 Windows 3.0 (1990). El DOS estaba siendo utilizado en un entorno que iba más allá de sus capacidades. Microsoft
comienza el desarrollo de una Interfaz Gráfica de Usuario (GUI) que podría ejecutarse entre el usuario y el DOS. En
1990, Microsoft presenta una versión de la GUI, el Windows 3.0, la cual seguía maniatada por la necesidad de
ejecutarse sobre DOS.

4/8
UTN FRC Resumen SOP – Rodrigo Carrión

 Windows NT (1993). Luego de una tentativa fallida por Microsoft de desarrollar junto a IBM un SO de nueva
generación que aprovechara las características de los actuales microprocesadores, IBM desarrolla OS/2 y Microsoft
lanza Windows NT. Ofrece multitarea en entornos monousuarios y multiusuarios.

 Windows NT 4.0. Después de varias versiones NT 3.X, Microsoft desarrolla la versión 4.0, que proporciona la misma
interfaz de Windows 98. El mayor cambio consiste en que varios de los componentes gráficos que se ejecutaban
tanto en modo usuario como formando parte del subsistema Win 32 en 3.X, han sido trasladados al ejecutor de
Windows NT, que ejecuta en modo núcleo, lo que implica una aceleración en tales ejecuciones. El inconveniente es
que servicios del sistema tienen acceso a funciones graficas de bajo nivel, pudiendo impactar con la fiabilidad del
SO.

 Windows 2000 (2000). Nuevamente el ejecutor y la arquitectura micronúcleo son fundamentalmente los mismos que
en NT 4.0. Se han añadido nuevas características, como el soporte al procesamiento distribuido. El directorio activo
es un servicio del directorio distribuido capaz de traducir los nombres de objetos arbitrarios a cualquier tipo de
información acerca de los mismos. Una consideración final sobre Windows 2000 es la distribución entre Windows
2000 Server y Professional, en donde la versión Server incluye servicios para su uso como servidor de red.

 Windows XP (2001).

 Windows Server 2003 (2003).

 Windows Vista (2007).

 Windows Server 2008 (2008).

 Windows 7 (2009).

 Windows 8 (2011).
1. Windows 8.1 (2012).

 Windows Server 2012 (2012).

Arquitectura

Como en casi todos los sistemas operativos, se separa el software orientado a las aplicaciones del software del sistema
operativo.

El software del modo núcleo tiene acceso a los datos del sistema y al hardware. El software restante, que se encuentra en
modo usuario, tiene acceso limitado a los datos del sistema.

5/8
UTN FRC Resumen SOP – Rodrigo Carrión

Organización del sistema operativo


Windows no tiene una arquitectura micronúcleo pura, sino una modificación de la misma.

Windows es altamente modular. Cualquier modulo puede ser eliminado, actualizado o reemplazado sin volver a escribir el
sistema completo o sus Interfaces de Programas de Aplicación (API). Sin embargo, a diferencia de in sistema micronúcleo,
Windows está configurado para que la mayoría de las funciones externas al micronúcleo se ejecuten en modo núcleo, todo
por una razón de rendimiento.

Uno de los objetivos de diseño de Windows es la compatibilidad, que sea capaz de ejecutar sobre distintas plataformas de
hardware, por eso utiliza la siguiente estructura por niveles:

 Capa de abstracción del hardware (HAL): aísla el sistema operativo de las diferencias de hardware específicas
de cada plataforma. El SO da órdenes que pasan por la HAL y ésta las “transforma” para que el hardware específico
las entienda; y al revés, el hardware da órdenes a al SO a través de la HAL para que el SO las entienda. Así no hay
dependencia entre el SO y el hardware.
 Núcleo (kernel): formado por los componentes más usados y fundamentales del sistema operativo (planificación
de hilos, cambios de contexto, gestión de excepciones e interrupciones y sincronización de microprocesadores).
 Controladores de dispositivos: incluye los drivers de dispositivos que traducen las llamadas a funciones de E/S
del usuario a peticiones a dispositivos hardware de E/S específicos.
 Sistema ejecutivo: Contiene los servicios básicos del sistema operativo, como la gestión de memoria, la gestión
de procesos e hilos, seguridad, E/S y comunicación entre procesos.

Módulos del Sistema ejecutivo


El Sistema Ejecutivo de Windows incluye módulos para las funciones específicas del sistema y proporciona una API para el
software en modo usuario.

 Administrador de E/S: distribuye los controladores de dispositivos (drivers) entre los distintos procesos.
 Administrador de objetos: crea, gestiona y elimina los objetos del Ejecutor de Windows.
 Monitor de seguridad: impone la validación de acceso y la generación de reglas de auditoría para los objetos
protegidos.
 Administrador de procesos/hilos: crea y elimina objetos y sigue la pista de los objetos proceso e hilo.
 Servicios de llamadas a procedimiento local (LPC): impone las relaciones cliente/servidor entre las aplicaciones
y los subsistemas del Ejecutor dentro de un mismo sistema, de forma similar al servicio de llamadas a procedimiento
remoto (RPC) utilizadas en el procesamiento distribuido.
 Administrador de memoria virtual: traduce direcciones virtuales en el espacio de direcciones del proceso a
páginas físicas en la memoria de la computadora.
 Administrador de caché: mejora el rendimiento de las E/S sobre archivos.
 Módulos para gráficos/ventanas: crea las interfaces de pantalla (ventanas) y gestiona los dispositivos gráficos.

Procesos de usuario
 Procesos de soporte de sistemas especiales: proceso de inicio de sesión y la gestión de sesión.
 Procesos de servicio: otros servicios como el registro de sucesos.
 Subsistemas de entorno: ofrecen servicios nativos de Windows a las aplicaciones de usuario y de este modo
proporcionan un entorno de SO. Cada subsistema incluye DLLs (bibliotecas de enlace dinámico) que convierten las
llamadas de las aplicaciones de usuario en llamadas que interprete Windows.
 Aplicaciones de usuario: programas que se ejecutan sobre el SO. Pueden ser Win32, Posix, OS/2, MS-DOS, etc.

Modelo cliente/servidor
Cada subsistema de entorno y subsistema del servicio ejecutivo se implementan como uno o más procesos. Cada proceso
espera la solicitud de un cliente para uno de sus servicios. Un cliente (un programa de aplicación u otro módulo del SO)
solicita un servicio enviando un mensaje. El mensaje es encaminado a través del sistema ejecutivo hasta el servidor
apropiado. El servidor lleva a cabo la operación solicitada y devuelve el resultado o la información de estado por medio de otro
mensaje, que se encamina de vuelta al cliente mediante el servicio ejecutivo.

6/8
UTN FRC Resumen SOP – Rodrigo Carrión

Ventajas
 Simplifica el sistema ejecutivo. Es posible construir diversos API. Se pueden añadir fácilmente nuevas interfaces.
 Mejora la fiabilidad. Cada módulo de los servicios ejecutivos se ejecuta como un proceso separado, con su propia
partición de memoria, protegido de otros módulos. Un cliente puede fallar sin corromper el resto del SO.
 Proporciona una base adecuada para la computación distribuida.

UNIX
Historia
 Se desarrolló en los Laboratorios Bell operando en una PDP-7 en 1970.
 Se reescribió en lenguaje de programación C, demostrando las ventajas de usar un lenguaje de alto nivel.

Descripción
El hardware básico está rodeado por el software del SO (el kernel). UNIX cuenta con varios servicios e interfaces de usuario
que se consideran parte del sistema (interprete de órdenes, conocido como shell, o un software de interfaz gráfica). El nivel
exterior está formado por las aplicaciones de los usuarios y la interfaz de usuario del compilador C. Los programas de usuario
pueden invocar servicios del SO directamente o a través de programas de biblioteca (librerías).

Arquitectura general de UNIX

Núcleo tradicional de UNIX

7/8
UTN FRC Resumen SOP – Rodrigo Carrión

Linux
Historia
 Linux aparece como variante de UNIX para la arquitectura del IBM PC.
 La versión inicial fue escrita por Linus Torvals.
 Torvals distribuyó una primera versión de Linux en Internet en 1991. Desde entonces un gran número de personas
han contribuido al desarrollo de Linux.
 Linux es libre y está disponible su código fuente.
 Linux es altamente modular y fácilmente configurable. Esto hace que sea fácil de obtener el rendimiento óptimo para
múltiples plataformas de hardware.

Estructura modular
Linux está organizado como un conjunto de bloques independientes denominados módulos cargables, que tienen dos
características importantes:

 Enlace dinámico: un módulo del núcleo puede cargarse y enlazarse dentro del núcleo. También, un módulo puede
ser desenlazado y borrado de la memoria en cualquier momento. Esto facilita la tarea de configuración y protege la
memoria del núcleo. En Linux, un programa de usuario o un usuario puede cargar y descargar explícitamente
módulos del núcleo usando las órdenes insmod y rmmod.

 Módulos apilables: los módulos se organizan jerárquicamente, pudiendo definir dependencias entre módulos. Esto
tiene dos ventajas:
1. El código común de un conjunto de módulos similares puede ser trasladado a un único módulo, reduciendo
la duplicación.
2. El núcleo puede asegurar que los módulos necesarios estén presentes, despreocupándose de descargar
un módulo del que dependen otros módulos en ejecución y cargando cualquier módulo adicional necesario
cuando se cargue un módulo nuevo.

Los principales componentes del núcleo son los siguientes:

•Señales. El núcleo utiliza las señales para llamar a un proceso. Por ejemplo, las señales se utilizan para notificar ciertos
fallos a un proceso como, por ejemplo, la división por cero.
•Llamadas al sistema. Forma en la cual un proceso requiere un servicio de núcleo específico.
•Procesos y planificador. Crea, gestiona y planifica procesos.
•Memoria virtual. Asigna y gestiona la memoria virtual para los procesos.
•Sistemas de ficheros. Proporciona un espacio de nombres global y jerárquico para los fiche- ros, directorios y otros
objetos relacionados con los ficheros. Además, proporciona las funciones del sistema de ficheros.
•Protocolos de red. Da soporte a la interfaz Socket para los usuarios, utilizando la pila de protocolos TCP/IP.
•Controladores de dispositivo tipo carácter. Gestiona los dispositivos que requiere el núcleo para enviar o recibir datos
un byte cada vez, como los terminales, los módems y las impresoras.
•Controladores de dispositivo tipo bloque. Gestiona dispositivos que leen y escriben datos en bloques, tal como varias
formas de memoria secundaria (discos magnéticos, CDROM, etc.).
•Controladores de dispositivo de red. Gestiona las tarjetas de interfaz de red y los puertos de comunicación que permiten
las conexiones a la red, tal como los puentes y los encaminadores.
•Traps y fallos. Gestiona los traps y fallos generados por la CPU, como los fallos de memoria.
•Memoria física. Gestiona el conjunto de marcos de páginas de memoria real y asigna las páginas de memoria virtual.
•Interrupciones. Gestiona las interrupciones de los dispositivos periféricos.

8/8
UTN FRC Resumen SOP – Rodrigo Carrión

Unidad Nº2 – Administración y gestión de archivos


Archivos
Archivo: Son unidades lógicas de información creada por los procesos. Espacio de direcciones lógicas contiguas. Son un
mecanismo de abstracción.

Nombre
Cuando un proceso crea un archivo, le asigna nombre. Cuando el proceso termina, el archivo sigue existiendo y otros
procesos pueden tener acceso a él mediante su nombre.

Las reglas exactas para nombrar archivos varían según el sistema. Algunos sistemas de archivos distinguen entre
mayúsculas y minúsculas (UNIX), pero otros no (MS-DOS).

Muchos sistemas de archivos manejan nombres de archivos en dos partes, separadas con un punto. La parte que sigue al
punto se denomina extensión de archivo, y por lo general indica algo acerca del archivo. En algunos sistemas (como UNIX)
las extensiones de archivo son sólo convenciones y el SO no vigila que se usen de alguna forma específica. El nombre sirve
de recordatorio para el usuario en vez de servirle información a la computadora. En cambio, Windows tiene conocimiento
de las extensiones y les asigna un significado. A cada extensión se le asigna un programa “dueño”, haciendo que cuando
un usuario haga doble clic sobre el archivo, se abra el programa asociado a la extensión con el nombre de archivo como
parámetro (si haces doble clic en documento.doc se abre documento.doc en Word).

Estructuras de archivos
1. Sucesión no estructurada de bytes: el SO no sabe que contiene el archivo, ni le interesa; lo único que ve son
bytes. Cualquier significado debe ser impuesto por los programas a nivel usuario. Utilizado por UNIX y Windows.
Orece la máxima flexibilidad al considerar los archivos solo como secuencias de bytes.
2. Secuencia de registros de longitud fija: cada registro tiene cierta estructura interna. La operación de lectura
devuelve un registro y la operación de escritura sobrescribe o anexa un registro.
3. Árbol de registros: los registros pueden ser de diferente longitud. Cada registro posee un campo clave en una
posición fija del registro. El árbol se ordena según el campo clave con el objetivo de encontrar con rapidez una clave
en particular.

9/9
UTN FRC Resumen SOP – Rodrigo Carrión
Tipos de archivos
1. Archivos regulares: contienen información del usuario. Figura 4-2. Pueden ser de texto (ASCII) o binarios.
a. ASCII: consisten en líneas de texto. Pueden exhibirse e imprimirse tal cual, y pueden editarse con cualquier
editor de textos. Facilitan la conexión de la salida de un programa con la entrada de otro.
b. Binarios: poseen una estructura interna conocida por los programas que los usan. Solo pueden ser
visualizados por la aplicación que los creó.
2. Directorios: archivos del sistema que sirven para mantener la estructura del sistema de archivos (contiene otros
archivos y directorios).
3. Archivos especiales de caracteres: tienen que ver con E/S y sirven para modelar dispositivos de E/S en serie,
tales como terminales, impresoras y redes.
4. Archivos especiales de bloques: sirven para modelar discos (se leen y escriben bloques).

Métodos de acceso
 Acceso secuencial: el archivo se lee desde el principio hasta el final, no pudiendo realizar saltos o leerlos en otro
orden. El tiempo de acceso es lento (excepto si el archivo se encuentra en el principio). Usado en cintas magnéticas.
 Acceso aleatorio: los archivos pueden leerse en cualquier orden. Se puede acceder a ellos a través de una clave
o índice independientemente de su posición, sin tener que pasar por los datos anteriores. Usado en discos.
Atributos de un archivo
Atributo: información adicional de un archivo que agrega el SO, como la fecha y la hora de creación, tamaño, etc. Los
atributos varían según el SO.

Operaciones con archivos


Los SO ofrecen diferentes operaciones para almacenar y recuperar la información. Las más comunes son:

1. CREATE (crear): se crea el archivo sin datos. Se reserva espacio en el disco y se establecen algunos atributos.
2. DELETE (borrar): borrar un archivo para liberar espacio en disco.
3. OPEN (abrir): hace que el sistema obtenga los atributos y la lista de direcciones de disco y los coloque en la memoria
principal para después accederlos
4. CLOSE (cerrar): cierra el archivo cuando han acabado todos los accesos, ya que no son necesarios los atributos y
direcciones en disco.
5. READ (leer): se leen datos del archivo. Se lee desde la posición actual, y debe especificarse cuantos datos se
necesita y el búfer donde deben colocarse.
6. WRITE (escribir): lee los datos de un archivo, generalmente, en la posición actual. Si la posición actual es el fin del
archivo, aumenta el tamaño; si la posición actual es un punto intermedio, se sobrescriben los datos.
7. APPEND (añadir): forma restringida de WRITE; solo se pueden añadir datos al final del archivo.
8. SEEK (buscar): para los archivos de acceso aleatorio, especifica el punto a partir del cual se tomaran los datos
(escribir o leer).
9. GET ATTRIBUTES: se leen los atributos de un archivo para que un proceso los utilice.
10. SET ATTRIBUTES: el usuario puede establecer algunos atributos o modificarlos después de la creación del archivo.
11. RENAME (renombrar): cambiar el nombre de un archivo existente.
10 /
9
UTN FRC Resumen SOP – Rodrigo Carrión

Directorios
Directorio: son archivos que contienen a otros archivos o directorios. Son carpetas.

Jerarquía de directorios
 Directorio Raíz: directorio que contiene a todos los archivos.
 Directorios de un solo nivel: un directorio (directorio raíz) contiene todos los
archivos. Las ventajas son la sencillez y la rapidez para buscar archivos. Este
sistema es problemático en sistemas multiusuario (ejemplo, dos usuarios crean un
archivo con el mismo nombre sobrescribiendo al anterior).

 Directorios de dos niveles: un directorio raíz que contiene a su vez un


directorio para cada usuario, eliminando los conflictos presentes en el
sistema de directorios de un nivel. No satisface a los usuarios que tienen una
gran cantidad de archivos.











 Directorios jerárquicos: consiste en una jerarquía general, un árbol de directorios.
Posibilita crear un número arbitrario de subdirectorios ofreciendo a los usuarios una
herramienta potente para organizar sus archivos.






11 /
9
UTN FRC Resumen SOP – Rodrigo Carrión

Nombres de ruta
Ruta: son mecanismos para especificar nombres de archivos en un árbol de directorios.

 Ruta absoluta: consiste en el camino que hay que seguir para llegar desde el directorio raíz hasta el archivo.
 Ruta relativa: consiste en el camino que hay que seguir desde el directorio de trabajo (directorio actual) hasta el
archivo.
Un usuario puede designar un directorio como el directorio de trabajo actual, en cuyo caso todos los nombres de las
rutas que no empiecen en el directorio raíz se toman en forma relativa al directorio de trabajo.

Operaciones con directorios


Ejemplos de operaciones de UNIX:

1. CREATE (crear): crea un directorio vacío, excepto por punto y punto-punto que se crean automáticamente por el
sistema o en unos cuantos casos lo hace el programa mkdir.
2. DELETE (borrar): elimina un directorio, siempre y cuando esté vacío (no se considera punto ni punto-punto).
3. OPENDIR (abrir): Los directorios se pueden leer. Por ejemplo, para listar todos los archivos en un directorio, un
programa de listado abre el directorio para leer los nombres de todos los archivos que contiene. Antes de poder leer un
directorio se debe abrir, en forma análoga al proceso de abrir y leer un archivo.
4. CLOSEDIR (cerrar): cierra un directorio para desocupar espacio en las tablas internas.
5. READDIR (leer): devuelve la siguiente entrada en un directorio abierto. Siempre devuelve una entrada en formato
estándar, sin importar la estructura de directorio.
6. RENAME (renombrar): cambiar el nombre del directorio.
7. LINK (enlazar): permite que un archivo aparezca en más de un directorio. A un vínculo de este tipo, que incrementa el
contador en el nodo-i del archivo se le llama algunas veces vínculo duro (o liga dura), una variante es el vinculo
simbólico.
8. UNLINK (desenlazar): se elimina una entrada de directorio. Si el archivo que se quiere eliminar aparece solo en un
directorio (caso normal), se elimina del sistema de archivos. Si está presente en varios directorios, solo se elimina
la ruta de acceso especificada, los demás permanecen.

Implementación de sistemas de archivos


Organización del sistema de archivos
Los sistemas de archivos se almacenan en discos. Los discos pueden dividirse en particiones, con sistemas de archivos
independientes en cada partición. El sector 0 del disco se llama registro maestro de arranque (MBR, Master Boot Record) y
sirve para arrancar la computadora. Al final del MBR está la tabla de particiones, que contiene las direcciones inicial y final
de cada partición. Una partición estará marcada como activa. Cuando se enciende la computadora, el BIOS lee el MBR del
disco y lo ejecuta. Lo primero que hace el programa del MBR es localizar la partición activa, leer su primer bloque, llamado
bloque de arranque, y ejecutarlo. El programa del bloque de arranque carga el SO en esa partición.

La organización de una partición varía


según el sistema de archivos. El primer
elemento es el superbloque que contiene
todos los parámetros clave acerca del
sistema de archivos y se transfiere del disco
a la memoria cuando se arranca la
computadora. A continuación, podría haber
información acerca de bloques libres, luego
podrían estar los nodos-i. Después podría
venir el directorio raíz, y por último el resto
del disco suele contener los demás
directorios y archivos.

12 /
9
UTN FRC Resumen SOP – Rodrigo Carrión

Implantación de archivos
 Asignación continua: es el esquema de asignación más simple que consiste en almacenar cada archivo en una
serie contigua de bloques de disco. Usado en los CD y DVD.

Ventajas:

- Fácil implementación: para localizar los bloques de un archivo solo se necesitan dos números, la dirección
del primer bloque y el número de bloques del archivo.
- Buen desempeño en lectura: puede leerse todo el archivo del disco en una sola operación. Sólo necesita
un solo desplazamiento del brazo del disco (para el primer bloque).

Desventajas:

- Fragmentación del disco: cuando se elimina un archivo, sus bloques se liberan, dejando una serie de
bloques libres en el disco, resultado que el disco se componga de archivos y huecos.
- Cuando se va a crear un archivo nuevo se hace necesario conocer su tamaño final para recoger un hueco
del tamaño correcto en el cual colocarlo. Este diseño es molesto para el usuario que no sabe cuál va a ser
el tamaño del archivo.

 Asignación por lista enlazada: consiste en mantener cada archivo como una lista enlazada de bloques de disco.
La primera palabra de cada bloque se usa como puntero al siguiente bloque, el resto del bloque es para datos.

Ventajas:

- Pueden usarse todos los bloques del disco. No se pierde espacio por fragmentación del disco.
- Sólo es necesario conocer la dirección del primer bloque.

Desventajas:

- Acceso aleatorio lento. Para llegar al bloque n, el SO tiene que comenzar por el principio y leer los n-1
bloques que lo preceden, uno por uno.
- La cantidad de datos almacenados en un bloque no es potencia de 2 porque el puntero ocupo unos cuantos
bytes. Influye en la eficiencia de programas que leen y escriben en bloques de tamaño de potencia de 2.

13 /
9
UTN FRC Resumen SOP – Rodrigo Carrión

 Asignación por lista enlazada utilizando una tabla en la memoria: se eliminan las desventajas de la asignación
por lista enlazada ya que se saca el apuntador de cada bloque de disco y se lo coloca en una tabla en la memoria
denominada “tabla de asignación de archivo” (FAT, file allocation table).

Ventajas:

- Todo el bloque se utiliza para datos.


- Acceso aleatorio mucho más fácil.
- La cadena está cargada en memoria, pudiéndose seguir sin tener que leer el disco.
- Se necesita la dirección del primer bloque para localizar todos los demás.

Desventajas:

- Toda la tabla debe estar en memoria todo el tiempo.


- No se escala muy bien en los discos grandes.

14 /
9
UTN FRC Resumen SOP – Rodrigo Carrión

 Nodos-i: asocia a cada archivo una estructura de datos llamada nodo-i (nodo índice) que contiene los atributos y
direcciones de disco de los bloques del archivo. Dado el nodo-i, es posible hallar todos los bloques del archivo. Es
usado en Linux.

Por lo general, este arreglo es mucho más pequeño que el espacio ocupado por la tabla de archivos descrita en la
sección anterior. La razón es simple: la tabla para contener la lista enlazada de todos los bloques de disco es
proporcional en tamaño al disco en sí. Si el disco tiene n bloques, la tabla necesita n entradas. A medida que aumenta
el tamaño de los discos, esta tabla aumenta linealmente con ellos. En contraste, el esquema del nodo-i requiere un
arreglo en memoria cuyo tamaño sea proporcional al número máximo de archivos que pueden estar abiertos a la vez.
No importa si el disco es de 10 GB, de 100 GB o de 1000 GB.
Ventaja:

- El nodo-i sólo está en memoria cuando el archivo correspondiente está abierto.

Desventaja:

- Cada nodo-i tiene espacio para un número fijo de dirección de disco, haciendo que se llene cuando el archivo
crece. Para solucionar esto se reserva la última dirección de disco no para un bloque de datos, sino para
dirección de un bloque que contenga más direcciones de bloques de disco. Para archivos más grandes, una
de las direcciones en el nodo–i es la dirección de un bloque en el disco llamado bloque simplemente
indirecto, el cual contiene direcciones en disco adicionales. Si con esto no es suficiente, otra dirección del
nodo–i, el bloque doblemente indirecto contiene la dirección de un bloque que tiene una lista de bloques
simplemente indirectos, donde cada uno de estos apunta a unos centenares de bloques de datos. Si aún
esto no basta, se puede utilizar un bloque triplemente indirecto.

15 /
9
UTN FRC Resumen SOP – Rodrigo Carrión

Implantación de directorios
Para poder leer un archivo, es preciso abrirlo primero. Cuando se abre un archivo, el SO utiliza el nombre de ruta
proporcionado por el usuario para localizar la entrada de directorio. Ésta proporciona la información necesaria para hallar
los bloques de disco. Dependiendo del sistema, esta información puede ser la dirección de disco de todo el archivo (con
asignación contigua), el número del primer bloque (ambos esquemas de lista enlazada) o el número del nodo-i. En todos los
casos, la función principal del sistema de directorios es establecer una correspondencia entre el nombre de archivo ASCII y
la información necesaria para localizar datos. Todo sistema de archivos mantiene atributos de los archivos.

Una posibilidad obvia es guardarlos directamente en la entrada de directorio. Muchos sistemas hacen precisamente esto.
En un diseño sencillo, un directorio es una lista de entradas de tamaño fijo, una por archivo, que contiene un nombre de
archivo (de longitud fija), una estructura con los atributos del archivo y una o más direcciones de disco que indiquen donde
están los bloques de disco.

En los sistemas que usan Nodos-i, otra posibilidad es almacenar los atributos en los nodos-i, en lugar de en las entradas de
directorio (la entrada de directorio es más corta: solo guarda nombre y nodo-i). Hasta ahora hemos supuesto que los archivos
tienen nombres cortos de longitud fija. Sin embargo, casi todos los SO actuales reconocen nombres de archivos más largos,
de longitud de variable. Una alternativa para esto, es abandonar la idea de que todas las entradas de directorio tienen el
mismo tamaño. Con este método, cada entrada contiene una porción fija, que por lo regular principia con la longitud de la
entrada y seguida de los atributos. Este encabezado de longitud fija va seguido del nombre de archivo en sí, que puede
tener cualquier longitud. Una desventaja de este método es que cuando se elimina un archivo queda en el directorio un
hueco de tamaño variable (mismo caso de la asignación continua), aunque es factible compactar el directorio porque está
por completo en memoria. Otro problema es que una sola entrada de directorio podría cruzar fronteras de página, por lo que
podría presentarse un fallo de página durante la lectura de un nombre de archivo.

Otra forma de manejar los nombres variables es hacer que todas las entradas de directorio sean de longitud fija y mantener
los nombres de archivo juntos en un heap al final del directorio. Tiene la ventaja de que si se elimina una entrada siempre
cabrá ahí el siguiente archivo creado.
16 /
9
UTN FRC Resumen SOP – Rodrigo Carrión
Una pequeña ganancia aquí es que ya no hay una verdadera necesidad de que los nombres de archivos empiecen en límites
de palabras, por lo que no se necesitan caracteres de relleno después de los nombres de archivos en la figura 4-15(b), como
se hizo en la figura 4-15(a).

Una forma de acelerar la búsqueda es utilizar una tabla de hash en cada directorio. Se examina la entrada de tabla
correspondiente al código de hash calculado a partir del nombre del archivo especificado. Si está desocupada, se coloca en
ella un apuntador a la entrada del archivo. Si ya está en uso esa ranura, se construye una lista enlazada, encabezada por
esa entrada de tabla, que encadena todas las entradas que tienen el mismo valor de hash. Aunque la búsqueda es más
rápida, la administración de este método es más compleja.

 Directorios en CP/M: sólo hay un directorio, lo único que el sistema de archivos tiene que hacer para consultar un
nombre de archivo es buscarlo en el directorio. Una vez que encuentra la entrada, también tiene de inmediato los
números de bloque en el disco, ya que están almacenados ahí mismo en la entrada, al igual que todos los atributos.

 Directorios en MS-DOS: los directorios tienen tamaño variable, sus entradas son de 32 bytes de longitud fija y
contiene el nombre de archivo, los atributos y el número del primer bloque de disco, que se usa como índice de una
tabla contenida en memoria (asignación por lista enlazada con una tabla en memoria). Siguiendo la cadena, se
pueden encontrar todos los bloques.

17 /
9
UTN FRC Resumen SOP – Rodrigo Carrión

 Directorios en Windows 98: nombres de archivo más largos y se introdujo FAT-32. Se adicionan cinco campos
nuevos donde estaban los 10 bytes desocupados. El campo NT sirve para asegurar la compatibilidad con Windows
NT. Los archivos poseían dos nombres, uno largo para Windows NT y un nombre de 8 + 3 por compatibilidad. Se
puede acceder desde los dos nombres.

 Directorios en UNIX: cada entrada de directorio contiene sólo un nombre de archivo y su número de nodo-i. Toda
la información acerca del tipo, tamaño, tiempos, propietario y bloques de disco está contenida en el nodo-i. Cuando
se abre un archivo, el sistema de archivos debe tomar el nombre que se le proporciona y localizar sus bloques de
disco. Lo primero que hace el sistema de archivos es localizar directorio raíz. En UNIX su nodo-i está situado en un
lugar fijo del disco. La localización de un nodo-i una vez que se tiene su número es directa, ya que cada uno tiene
una posición fija en el disco.

Archivos compartidos
Un archivo compartido es aquel que aparece al mismo tiempo en diferentes directorios que pertenecen a usuarios distintos.
Si un archivo de un usuario A aparece en algún directorio de un usuario B, el archivo compartido se llama enlace (link). El
sistema de archivos deja de ser un árbol, es una gráfica acíclica dirigida.

Hay dos formas de enlazar archivos:

 Enlace duro: los directorios que comparten un archivo, no poseen los bloques de disco, sino que apuntan al mismo
nodo-i que corresponde al archivo. Este es el esquema de UNIX.

Desventaja: si el propietario elimina el archivo y se limpia el nodo-i, algún directorio con un enlace a ese archivo,
apuntara a un nodo-i no válido. Si el nodo-i se reasignara a otro archivo, el enlace apuntará a un archivo incorrecto.
Una solución es eliminar el archivo original, pero mantener el nodo-i para el enlace, manteniendo la cuenta en 1.

 Enlace simbólico (accesos directos): el enlace se genera creando un archivo de tipo LINK en el directorio que
quiere crear el enlace. Este archivo sólo contiene el nombre de ruta del archivo con el cual está enlazado, que es
18 /
9
UTN FRC Resumen SOP – Rodrigo Carrión
utilizado para buscar el archivo original cuando se lo quiere leer.

Desventajas:

- Cuando el dueño elimina el archivo original, este se destruye, quedando los archivos de enlace obsoletos,
ya que el sistema no lo va a poder localizar. Pasa algo similar cuando se mueve el archivo.
- Necesitan un procesamiento adicional: leer la ruta, analizarla, seguirla, componente por componente hasta
llegar al nodo-i. Puede requerir muchos accesos a disco.
- Se necesita un nodo-i adicional por cada enlace, y si el nombre de ruta es largo, se necesita otro bloque
adicional para almacenarla.

Ventaja: pueden servir para enlazar archivos por red, especificando la dirección de red de la máquina en la que está
el archivo.

Implementación del Sistema de Archivos en Windows NTFS

19 /
9
UTN FRC Resumen SOP – Rodrigo Carrión
ESTRUCTURA DEL SISTEMA DE ARCHIVOS.
Cada volumen (partición de disco) de NTFS contiene archivos, directorios, mapas de bits y otras estructuras de datos. Cada
volumen se organiza como una secuencia lineal de bloques, en donde el tamaño del bloque está fijo para cada volumen y
varía entre 512 bytes y 64 KB, dependiendo del tamaño del volumen. La mayoría de los discos NTFS utilizan bloques de 4
KB como un compromiso entre los bloques grandes (para las transferencias eficientes) y los bloques pequeños (para un
nivel bajo de fragmentación interna). Para hacer referencia a los bloques se utiliza su desplazamiento desde el inicio del
volumen, mediante el uso de números de 64 bits.
La Figura 12.17 muestra la estructura de un volumen NTFS, que está formado por cuatro regiones. Los primeros sectores
de un volumen están ocupados por el sector de arranque de la partición (aunque se llame sector, puede estar formado por
un máximo de 16 sectores), que contiene información sobre la estructura del volumen, las estructuras del sistema de
ficheros, así como la información de arranque de inicio y el código. Esto es seguido por la tabla maestra de ficheros (Master
File Table, MFT), que contiene información sobre todos los ficheros y carpetas (directorios) de este volumen NTFS, así
como la información sobre espacio disponible no asignado. En esencia, el MFT es una lista de todos los contenidos de este
volumen NTFS, organizada como un conjunto de filas en una estructura de base de datos relacional.

Sector de arranque de partición: En los primeros 8kb se contiene la información sobre el volumen (tipo de partición, largo,
etc), junto con el bloque de código básico para iniciar al sistema operativo. Contiene también un puntero a la MFT.
MFT – Master File Table: La Tabla Maestra de archivos contiene el dónde y como están almacenados los archivos, junto con
todos los atributos asociados a estos.
Archivos de Sistema: Contienen la información sobre los datos y operaciones que se realizan sobre el sistema de archivos:
espacio libre, log de transaccionalidad, etc.
Área de archivos: Donde realmente se almacenan los datos del usuario.

Tabla maestra de ficheros MFT


La principal estructura de datos en cada volumen es la MFT (Master File Table, Tabla de archivos maestra), la cual es una
secuencia lineal de registros de un tamaño fijo de 1 KB. Cada registro de la MFT describe a un archivo o directorio. Contiene
los atributos del archivo, como su nombre y las etiquetas de hora, además de la lista de direcciones de disco en donde se
encuentran sus bloques. Si un archivo es muy grande, algunas veces es necesario utilizar dos o más registros de la MFT para
contener la lista de todos los bloques, en cuyo caso el primer registro de la MFT (conocido como registro base) apunta a los
otros registros de la MFT.
La misma MFT es un archivo, y como tal se puede colocar en cualquier parte dentro el volumen, con lo cual se elimina el
problema con los sectores defectuosos en la primera pista. Además, el archivo puede crecer según sea necesario, hasta un
tamaño máximo de 2^48 registros.
Cada registro de la MFT consiste en una secuencia de pares (encabezado de atributo, valor). Cada atributo empieza con un
encabezado que le indica qué atributo es, y qué tan largo es el valor. Algunos valores de atributos son de longitud variable,
como el nombre del archivo y los datos. Si el valor del atributo es lo bastante corto como para caber en el registro de la MFT, se
coloca ahí. A éste se le conoce como archivo inmediato. Si es demasiado largo, se coloca en cualquier otra parte en el disco y
se coloca un apuntador a él en el registro de la MFT. Esto hace a NTFS muy eficiente para pequeños campos; es decir, los que
pueden caber dentro del mismo registro de la MFT.
Cada uno de los registros describe un archivo normal que tiene atributos y bloques de datos, de igual forma que cualquier otro
archivo. Cada uno de estos archivos tiene un nombre que empieza con un signo de dólar, para indicar que es un archivo de
metadatos. El primer registro describe el archivo de la MFT. En especial, indica en dónde se encuentran los bloques del archivo
de la MFT, de manera que el sistema pueda encontrarlo. Sin duda, Windows necesita una forma de buscar el primer bloque del
archivo de la MFT para poder encontrar el resto de la información del sistema de archivos. La forma de encontrar el primer
bloque del archivo de la MFT es buscar en el bloque de inicio, en donde se instala su dirección cuando se da formato al
volumen con el sistema de archivos.

20 /
9
UTN FRC Resumen SOP – Rodrigo Carrión

21 /
9
UTN FRC Resumen SOP – Rodrigo Carrión

Administración del espacio en disco


Hay dos estrategias generales para almacenar un archivo: asignar n bytes consecutivos de espacio en disco, o dividir el ar
de que, si el archivo crece, probablemente tendrá que pasarse a otro lugar del disco. Por esta razón, casi todos los sistemas
de archivos dividen los archivos en bloques de tamaño fijo que no necesitan estar adyacentes.

Tamaño de bloque
Una vez que se ha decidido almacenar archivos en bloques de tamaño fijo, se debe decidir qué tamaño deben tener los
bloques. Dada la forma como están organizados los discos, el sector, la pista y el cilindro son candidatos para utilizarse
como unidad de asignación. Tener una unidad de asignación grande, como un cilindro, implica que cada archivo, incluso un
archivo de un byte, ocupará todo un cilindro, desperdiciando espacio. Por otro lado, el empleo de una unidad de asignación
pequeña implica que cada archivo consistirá en muchos bloques. La lectura de cada bloque normalmente requiere una
búsqueda y un retardo rotacional, así que la lectura de un archivo que consta de muchos bloques pequeños será lenta. El
tiempo en milisegundos requerido para leer un bloque de k bytes es la suma de los tiempos de búsqueda, retardo rotacional
y transferencia.

En resumen, un tamaño de bloque grande tiene mejor tasa de transferencia, pero desperdicia espacio; un tamaño de
bloque pequeño aprovecha el espacio del almacenamiento, pero disminuye el desempeño.

Control de bloques libres


Una vez que se ha escogido el tamaño de bloque, se debe decidir cómo administrar a los bloques libres. Se usan dos
técnicas para este control:

 Lista enlazada de bloques de disco: en la que cada bloque guarda tantos números de bloques de disco como
quepan en él. Con bloques de 1 KB y números de bloque de 32 bits, cada bloque de la lista libre contendrá los
números de 255 bloques libres (se necesita una ranura para el puntero al siguiente bloque).
Sólo es preciso mantener un bloque de punteros en la memoria principal. Cuando se crea un archivo tomas los
bloques que necesita del bloque de punteros. Cuando el bloque se agota, se lee del disco un nuevo bloque de
punteros. Cuando se borra un archivo, sus bloques se liberan y se añaden al bloque de punteros en memoria. Si
este bloque se llena, se escribe en el disco. Esto puede generar una cantidad innecesaria de operaciones de E/S
de disco (sobre todo los archivos temporales). Para evitar esto, se divide el bloque de punteros lleno.

 Mapa de bits: un disco con n bloques requiere un mapa de bits con n bits. Los bloques libres se representan con
unos en el mapa y los bloques asignados con ceros (o viceversa).

El mapa de bits requiere menos espacio, ya que utiliza 1 bit por bloque y no 32 bits como la lista enlazada.

Sólo si el disco está casi lleno el método de la lista enlazada requerirá menos bloques que el mapa de bits. Si hay suficiente
memoria principal para contener el mapa de bits, este método es preferible. En cambio, si sólo se puede dedicar un bloque
de memoria para seguir la pista a los bloques libres, y el disco está casi lleno, la lista enlazada puede ser mejor.

22 /
9
UTN FRC Resumen SOP – Rodrigo Carrión

Administración de cuotas de disco


Los SO multiusuario tienen un mecanismo para evitar que las personas acaparen demasiado espacio de disco. El
administrador del sistema asigna a cada usuario una porción máxima (límites) de archivos y bloques y el SO cuida que los
usuarios no excedan su cuota.

Cuando se abre un archivo, sus atributos y direcciones de disco se colocan en una “tabla de archivos abiertos” en la memoria
principal. Cada archivo tiene una entrada que indica quien es el dueño del archivo, por lo que cualquier aumento en el
tamaño del archivo se carga automáticamente a la cuota del dueño. Una segunda tabla contiene los registros de cuota de
los usuarios que tiene algún archivo abierto en ese momento, para poder localizar los distintos límites. Cada vez que se
añade un bloque a un archivo, se incrementa el total de bloques cargados al usuario y se verifica este valor contra los límites
estricto y flexible. Se puede exceder el límite flexible, pero no el estricto. Cuando un usuario desea iniciar su sesión, el SO
verifica el archivo de cuotas para ver si este se ha excedido su límite flexible (ya sea en número de archivos o bloques). Si
se ha excedido, se le advierte (mediante un mensaje) y el contador de advertencias se reduce en uno. Si este llega a cero,
no se le permite iniciar sesión nuevamente.

23 /
9
UTN FRC Resumen SOP – Rodrigo Carrión

Unidad Nº3 – Administración de procesos


Proceso: es un programa ejecutándose, el programa está en la memoria principal al ejecutarlo, sino está en el disco. Es
una unidad de actividad que se caracteriza por la ejecución de una secuencia de instrucciones, un estado actual, y un
conjunto de recursos del sistema asociados.
Programa != Proceso
El programa es pasivo. – Codigo + datos
El proceso es un programa en ejecución. – Pila, registros, contador de programa.
Ejemplo: Ejecutemos dos instancias de Internet Explorer. Mismo programa. Procesos serapados.
En cualquier instante puntual del tiempo, mientras el proceso está en ejecución, este proceso se puede caracterizar por una
serie de elementos, incluyendo los siguientes:
• Identificador. Un identificador único asociado a este proceso, para distinguirlo del resto de procesos.
• Estado. Si el proceso está actualmente corriendo, está en el estado en ejecución.
• Prioridad: Nivel de prioridad relativo al resto de procesos.
• Contador de programa. La dirección de la siguiente instrucción del programa que se ejecutará.
• Punteros a memoria. Incluye los punteros al código de programa y los datos asociados a dicho proceso, además de
cualquier bloque de memoria compartido con otros procesos.
• Datos de contexto. Estos son datos que están presenten en los registros del procesador cuando el proceso está
corriendo.
• Información de estado de E/S. Incluye las peticiones de E/S pendientes, dispositivos de E/S (por ejemplo, una unidad
de cinta) asignados a dicho proceso, una lista de los ficheros en uso por el mismo, etc.
• Información de auditoría. Puede incluir la cantidad de tiempo de procesador y de tiempo de reloj utilizados, así como
los límites de tiempo, registros contables, etc.
La información de la lista anterior se almacena en una estructura de datos, que se suele llamar bloque de control de proceso
(process control block) (Figura 3.1), que el sistema operativo crea y gestiona.

24 / 16
UTN FRC Resumen SOP – Rodrigo Carrión

Estados
La principal responsabilidad del SO es controlar la ejecución de los procesos, para lo cual hay que describir el
comportamiento que se querrá que tengan los procesos.

Modelo de dos estados


Es el modelo más sencillo, teniendo en cuenta que el proceso puede estar ejecutándose en el procesador o no; un proceso
puede estar en dos estados: en Ejecución o No Ejecución. Aquellos procesos que no están en ejecución tienen que
guardarse en algún tipo de cola, para que esperen su turno de ejecución.

Creación de procesos y terminación de procesos


Cuando se añade un proceso a los que ya está administrando el SO, hay que construir las estructuras de datos que se
utilizan para esta administración y asignar el espacio de direcciones en la memoria principal para el proceso. Estas acciones
constituyen la creación de un proceso.

Cuatro sucesos comunes conducen a la creación de un proceso:

25 / 16
UTN FRC Resumen SOP – Rodrigo Carrión
Las causas típicas para la terminación de los procesos son:

1. En un trabajo por lotes se incluye la instrucción de detención o se hace una llamada al SO.
2. En una aplicación interactiva, es la acción del usuario la que indica cuando termina el proceso.
3. Un proceso puede ser eliminado por un proceso padre o cuando éste termine.
4. También se puede terminar por una serie de fallos o errores.

Modelo de cinco estados


El modelo de dos estados no es adecuado, ya que algunos procesos en el estado de No Ejecución están listos para
ejecutarse, mientras que otros están bloqueados esperando a que termina una operación de E/S.

La forma más común de solventar esto es dividir el estado de No Ejecución en dos estados: Listo y Bloqueado. Luego se
incorporan dos estados más por una cuestión de utilidad, quedando cinco estados:

 Ejecución: proceso actualmente en ejecución.


 Listo: proceso preparado listo para ejecutarse.
 Bloqueado: procesos que no se va a ejecutar hasta que se produzca cierto suceso (como una operación de E/S).
 Nuevo: proceso que se acaba de crear, pero que no ha sido admitido por el SO en el grupo de procesos ejecutables.
Normalmente permanece almacenado en disco.
 Terminado: el proceso ha sido excluido del grupo de ejecutables, porque se detuvo o porque fue abandonado por
alguna razón. El SO conserva temporalmente las tablas y otra información asociado al proceso terminado para que
le dé tiempo a otros programas para extraer información necesaria de él, luego se borran del sistema.

Ahora hay dos colas, una de Listos y una de Bloqueados. A medida que se admiten procesos en el sistema, se sitúan en la
cola de Listos. Cuando llega la hora de que el SO escoja otro proceso para ejecutar, selecciona uno de la cola de Listos
(cola FIFO). Cuando se produce un suceso, todos los procesos de la cola Bloqueados que están esperando a dicho suceso
se pasan a la cola de Listos. El SO debe recorrer toda la cola de Bloqueados, buscando aquellos procesos que esperan el
suceso, pudiendo haber cientos o incluso miles de procesos en dicha cola. Sería más eficiente tener una cola para cada
suceso.

Si la expedición de procesos está dictada por un esquema de prioridades, entonces es conveniente tener un cierto número
de colas de Listos, una para cada nivel de prioridad. El SO podrá determinar fácilmente cuál es el proceso de prioridad más
alta que lleva más tiempo esperando.

Transiciones
 Nulo → Nuevo: se crea un nuevo proceso para ejecutar un programa.
 Nuevo → Listo: el SO está preparado para aceptar un proceso más.
 Listo → Ejecución: momento de seleccionar un nuevo proceso para ejecutar, el SO elige uno de los procesos del
estado Listo.
 Ejecución → Terminado: el proceso en ejecución es finalizado por el SO.
 Ejecución → Listo: la razón más común es que el proceso en ejecución ha alcanzado el tiempo máximo permitido
de ejecución ininterrumpida. Hay otras causas, como los niveles de prioridad o que un proceso ceda voluntariamente
el control del procesador.
 Ejecución → Bloqueado: un proceso solicita por algo por lo que debe esperar.
26 / 16
UTN FRC Resumen SOP – Rodrigo Carrión
 Bloqueado → Listo: se produce el suceso que el proceso estaba esperando.
 Listo → Terminado: por ejemplo, un padre termina con un proceso hijo, o el mismo padre termina, terminando con
él todos sus hijos.
 Bloqueado → Terminado: mismo caso de Listo → Terminado.

Procesos suspendidos
Hay una buena justificación para agregar más estados al modelo. Las actividades de E/S son mucho más lentas que las de
cálculo y, por lo tanto, el procesador en un sistema de monoprogramación está la mayor parte del tiempo desocupado. El
procesador es tan rápido comparado con la E/S que suele ser habitual que todos los procesos de memoria estén esperando
por E/S. Incluso con multiprogramación, el procesador podría estar desocupado la mayor parte del tiempo.

Una solución es el intercambio, o sea, mover una parte del proceso o todo el proceso de la memoria principal al disco.
Cuando ninguno de los procesos en la memoria principal está en estado Listo, el SO pasa al disco uno de los procesos en
Bloqueado y lo lleva a una cola de Suspendidos. El SO trae entonces otro proceso de la cola de Suspendidos o acepta la
solicitud de creación de un nuevo proceso. La ejecución continúa con el proceso recién llegado.

No obstante, el intercambio es una operación de E/S, pero como la E/S con el disco es la E/S más rápida de un sistema
(comparado con una impresora o una cinta) suele mejorar el rendimiento.

Podemos analizar el concepto de procesos suspendidos, definiendo un proceso suspendido como el que cumple las
siguientes características:

1.El proceso no está inmediatamente disponible para su ejecución.

2.El proceso puede estar o no a la espera de un evento, si es así, la condición de bloqueo es inde- pendiente de la condición
estar suspendido, y si sucede el evento que lo bloquea, eso no habi- lita al proceso para su ejecución inmediata.

3.El proceso fue puesto en estado suspendido por un agente: bien el proceso mismo, el proceso padre o el sistema operativo,
con el propósito de prevenir su ejecución.

4.El proceso no puede ser recuperado de este estado hasta que el agente explícitamente así lo indique.

Modelo de siete estados


Al emplear el intercambio, se debe añadir un nuevo estado al modelo del comportamiento de los procesos, el estado
Suspendido. A su vez, un proceso en estado Suspendido puede estar Bloqueado o Listo, por eso se necesitan cuatro
estados:

 Listo: proceso en memoria principal y listo para la ejecución.


 Bloqueado: proceso en memoria principal, esperando un suceso.
 Bloqueado y suspendido: proceso en memoria secundaria esperando un suceso.
 Listo y suspendido: proceso en memoria secundaria disponible para la ejecución en cuanto se cargue en la
memoria principal.

Transiciones
 Bloqueado → Bloqueado y suspendido: si no hay procesos Listos, entonces al menos un proceso Bloqueado se
expulsa para dar cabida a otro proceso que no esté Bloqueado.
 Bloqueado y suspendido → Listo y suspendido: se produce un suceso que estaba esperando en memoria
secundaria.
 Listo y suspendido → Listo: cuando no hay procesos Listos en memoria principal, el SO tendrá que traer uno para
continuar la ejecución.
 Listo → Listo y suspendido: puede ser necesario suspender un proceso Listo si ésta es la única forma de liberar
espacio en memoria principal. El SO puede suspender un proceso Listo de más baja prioridad en lugar de uno
Bloqueado que sea de prioridad más alta, si cree que el proceso Bloqueado pronto estará Listo.
 Nuevo → Listo y suspendido, Nuevo → Listo: cuando se crea un nuevo proceso, se lo puede añadir a la cola de
Listos o a la de Listos y suspendidos. En el segundo caso puede deberse a poco espacio en memoria principal.
 Bloqueado y suspendido → Bloqueado: un proceso termina y se libera memoria; hay un proceso en Bloqueados
27 / 16
UTN FRC Resumen SOP – Rodrigo Carrión
y suspendidos que tiene una prioridad mayor a la de cualquier proceso de Listos y suspendidos, así que el SO
supone que ocurrirá el suceso que espera pronto.
 Ejecución → Listo y suspendido: hay un proceso en Bloqueados y suspendidos de prioridad alta que se acaba
de desbloquear, para ello expulsa al proceso en ejecución y lo suspende.
 Varios → Terminado: un proceso en cualquier estado puede pasar al estado Terminado.





















Descripción de procesos
Estructuras de control del sistema operativo
Si el SO va a administrar los procesos y los recursos, entonces tiene que disponer de información sobre el estado actual de
cada proceso y de cada recurso; para ello, el SO construye y mantiene tablas de información sobre cada entidad que está
administrando. Los SO organizan la información principalmente en cuatro categorías:

 Tablas de memoria: se utiliza para seguir la pista de la memoria principal (real) y secundaria (virtual). Parte de la
memoria principal está reservada para uso del SO, el resto es para los procesos. Incluyen información como
asignación de memoria principal y secundaria a los procesos, información de protección de regiones compartidas
(por los procesos) de memoria.
 Tablas de dispositivos de E/S: utilizadas por los SO para administrar los dispositivos y canales de E/S, los cuales
pueden estar disponibles o asignados a un proceso en particular.
 Tablas de archivos: ofrecen información sobre la existencia de los archivos, su posición en la memoria secundaria,
su estado actual y otros atributos.
 Tablas de procesos: sirve para administrar los procesos. Se genera un número para cada proceso, para poder
identificarlo. 
Estas tablas están enlazadas o relacionadas, disponen de referencias cruzadas. La memoria, la E/S y los archivos son
administrados en nombre de los procesos, por lo que debe haber alguna referencia directa o indirecta a estos recursos
en las tablas de procesos.

Estructuras de control de procesos


Lo que un SO debe saber para administrar y controlar los procesos es: dónde está el proceso y conocer los atributos de
éste.

Bloque de control de proceso e Imagen de proceso


Un proceso constará, al menos, de la memoria suficiente para albergar los programas y los datos del proceso. Además de
esto, en la ejecución de un programa entra en juego normalmente una pila, que se utiliza para llevar la cuenta de las llamadas
a procedimientos y de los parámetros que se pasan entre los procedimientos. Por último, asociado a cada proceso hay una
28 / 16
UTN FRC Resumen SOP – Rodrigo Carrión
serie de atributos utilizados por el SO para su control. Estos atributos se conocen como bloque de control del proceso
(PCB). Esta colección de programas, datos, pila y atributos se conoce como imagen del proceso.

En el caso más simple, la imagen del proceso se guarda como un bloque contiguo, o continuo de memoria. Este bloque se
mantiene en memoria secundaria, habitualmente disco. Para que el SO pueda administrar el proceso, al menos una pequeña
parte de su imagen, que contiene la información a usar por el SO, debe mantenerse en memoria principal. Para ejecutar el
proceso, la imagen completa debe cargarse a la memoria principal, o al menos a la memoria virtual. Por lo tanto, las tablas
mantenidas por el SO, deben mostrar la ubicación de cada segmento o página (dependiendo el esquema que se use) de
cada imagen de proceso.

Los SO modernos utilizan un esquema de gestión de memoria en donde la imagen de un proceso consiste en un conjunto
de bloques que no tienen por qué estar almacenados consecutivamente. Esto permite al SO tener que traer solo una parte
de un proceso en particular. De este modo, en un momento dado, una parte de la imagen de un proceso puede estar en la
memoria principal y el resto en la memoria secundaria. Las tablas de procesos mantenidas por el SO, deben mostrar la
ubicación de cada segmento o página de cada imagen de proceso.

Atributos de los procesos


La información de los BCP se puede agrupar en tres categorías:

 Identificación del proceso: cada proceso tiene un identificador (PID).


 Información de estado del procesador: formada por el contenido de los registros del procesador.
 Información de control del proceso: información adicional para que el SO controle y coordine los procesos activos.

La importancia del PCB


El PCB es la estructura de datos más importante de un SO. Cada PCB contiene toda la información de un proceso necesaria
para el SO. Puede decirse que el conjunto de los PCB definen el estado del SO.

29 / 16
UTN FRC Resumen SOP – Rodrigo Carrión

Control de procesos
Modos de ejecución
 Modo de usuario: Ofrece un conjunto limitado de instrucciones que no permiten acceder a determinados elementos
del sistema. Para cambiar a modo usuario es “sencillo”, consiste en perder privilegios.
 Modo núcleo: Aquí el software tiene control completo sobre el procesador y de todas sus instrucciones, registros y
memoria. El cambio a modo núcleo se realiza cuando un proceso ejecuta una llamada al sistema o interrupción.

La razón de usar dos modos, es porque es necesario proteger al SO y a las tablas importantes del mismo. Existe un bit en
la palabra del estado del programa (PSW) que indica al procesador el modo de ejecución. Para cambiar el modo de ejecución
se cambia el bit. El SO ejecuta en modo núcleo y el resto de los procesos lo hacen en modo usuario.

Funciones del núcleo de un SO


 Gestión de procesos: creación y terminación, planificación y activación de procesos, intercambio de procesos,
gestión de PCB, sincronización de procesos, y soporte para la comunicación entre ellos.
 Gestión de memoria: reserva de espacio de direcciones para los procesos, intercambio, gestión de páginas y
segmentos.
 Gestión de E/S: gestión de buffers, asignación de canales de E/S y dispositivos para los procesos.
 Funciones de soporte: tratamiento de interrupciones, auditoria, supervisión.
El motivo por el cual se usan los otros modos es claro. Se necesita proteger al sistema operativo y a las tablas clave del
sistema, por ejemplo, los bloques de control de proceso, de la interferencia con programas de usuario. En modo núcleo, el
software tiene control completo del procesador y de sus instrucciones, registros, y memoria. Este nivel de control no es
necesario y por seguridad no es recomendable para los programas de usuario.

Creación de procesos
La creación de un proceso incluye los siguientes pasos:

1. Asignar un identificador de proceso único al proceso: se añade una nueva entrada a la tabla principal de procesos.
2. Reservar espacio para el proceso: incluye todos los elementos de la imagen del proceso. Se debe asignar espacio
para el PCB.
3. Iniciar el PCB: la información del estado del procesador se inicia generalmente con todas las entradas en cero
excepto por el contador de programa y los punteros de pila del programa. La información de control del procesador
se inicia a partir de los valores estándares por omisión y los atributos que se han solicitado para el proceso.
4. Establecer los enlaces apropiados: por ejemplo, poner el nuevo proceso en la cola de Listos o Listos y
suspendidos.
5. Crear o ampliar otras estructuras de datos: por ejemplo, el SO puede mantener un registro de auditoria por cada
proceso que se puede usar más adelante a efectos de facturación y/o de análisis de rendimiento del sistema.

Cambio de proceso
Un cambio de proceso puede producirse en cualquier momento en que el SO haya tomado el control a partir del proceso
que está actualmente ejecutándose. Los posibles sucesos que pueden dar el control al SO son:

 Interrupción: originada por un suceso externo e independiente del proceso en ejecución. El control se transfiere a
un gestor de interrupciones quien se encarga del tipo de interrupción ocurrida:
o Interrupción de reloj: el SO determina si el proceso ha consumido el tiempo máximo permitido. Si esto pasa,
el proceso que se está ejecutando pasa a Listo y se debe expedir otro proceso.
o Interrupción de E/S: el SO determina que acción de E/S se ha producido. Si es un suceso que muchos
procesos estaban esperando, se los pasa a Listo, luego el SO debe decidir si reanudar la ejecución o
ejecutar uno de los procesos Listos de mayor prioridad.
o Fallo de memoria: referencias a memoria virtual de una palabra que no está en memoria principal. El proceso
que cometió el fallo pasa a estar Bloqueado hasta que se cargue el bloque en memoria, donde cambia a
Listo.
 Trap: condición de error o excepción generada dentro del proceso en ejecución. Si es un error fatal, el proceso pasa
a Terminado. Si no es fatal, depende del error y del SO, puede intentar una recuperación o informar al usuario.
 Llamada al sistema: el uso de una llamada al sistema hace que el proceso de usuario pase al estado Bloqueado y el
control pase al SO.

30 / 16
UTN FRC Resumen SOP – Rodrigo Carrión

 Cuando la CPU conmuta a otro proceso, el sistema debe salvar el estado del viejo proceso y cargar el estado para el
nuevo proceso vía un cambio de contexto

 El contexto de un proceso está representado en el PCB

 El tiempo que lleva el cambio de contexto es sobrecarga; el sistema no hace trabajo útil mientras está conmutando.

 El tiempo depende del soporte de hardware.

31 / 16
UTN FRC Resumen SOP – Rodrigo Carrión

Procesos e hilos
Hilo: conjunto de instrucciones que pertenecen a un proceso. Es la unidad de procesamiento más pequeña que puede ser
planificada por un SO.

Proceso: conjunto de uno o más hilos y los recursos del sistema asociados (memoria, datos, archivos abiertos y
dispositivos). Es un programa en ejecución, una tarea, controlado y ejecutado por el procesador.

Entornos monohilo y multihilo


 Entorno monohilo: un solo hilo de ejecución por
proceso. No existe el concepto de hilo. MS-DOS
soporta un solo proceso y un solo hilo. UNIX soporta
múltiples procesos con un hilo cada uno.
 Entorno multihilo: varios hilos de ejecución dentro
de un proceso. En un entorno multihilo continúa
existiendo un solo PCB y un espacio de dirección de
usuario asociado al proceso, pero ahora hay pilas
separadas por cada hilo, así como diferentes PCB
para cada hilo. Todos los hilos de un proceso
comparten el estado y los recursos del proceso y
tienen el mismo acceso a los datos.

Elementos de un proceso
 Un espacio de direcciones virtuales que contiene la imagen del proceso.
 Acceso protegido a los procesadores, otros procesos, archivos y recursos de E/S.

Elementos de los hilos de un proceso


 Un estado de ejecución del hilo (Ejecución, Listo, etc.).
 Un contexto de hilo que se almacena cuando no está en ejecución; una forma de ver a un hilo es como un contador de
programa independiente dentro de un proceso.
 Una pila de ejecución.
 Almacenamiento estático para las variables locales.
 Acceso a memoria y a los recursos del proceso, compartidos con todos los otros del mismo proceso.

Modelos de proceso monohilo y multihilo


En un modelo de proceso monohilo, la representación de un
proceso incluye su PCB y un espacio de direcciones de usuario, así
como las pilas de usuario y un núcleo para gestionar la secuencia
de llamadas/retornos durante la ejecución del proceso.

En un entorno multihilo, continúa existiendo un solo PCB y un


espacio de direcciones de usuario asociados al proceso, pero ahora
hay pilas separadas, así como distintos bloques de control para
cada hilo, que contienen los valores de los registros, prioridad y otra
información.

Todos los hilos de un proceso comparten el estado y los recursos del proceso, residen en el mismo espacio de direcciones y
tienen acceso a los mismos datos.

Ventajas de la implementación de hilos


Los beneficios claves están relacionados con el rendimiento.

 Se tarda mucho menos tiempo en crear un nuevo hilo en un proceso existente que crear un nuevo proceso.
 Se tarda mucho menos tiempo en terminar un hilo que un proceso.
 Se tarda mucho menos tiempo en cambiar entre dos hilos de un mismo proceso.
32 / 16
UTN FRC Resumen SOP – Rodrigo Carrión
 Aumenta la eficiencia de la comunicación entre programas en ejecución. Los hilos de un mismo proceso comparten
memoria y archivos, pueden comunicarse entre sí sin invocar al núcleo.
 Es más eficiente relacionar un conjunto de hilos que un conjunto de procesos.
 Ejemplo: servidor de archivos, se crea un nuevo hilo por cada solicitud.
 Útiles en monoprocesadores para simplificar programas que llevan a cabo diferentes funciones.

Estados de un hilo
Los principales estados de un hilo son: Ejecución, Listo y Bloqueado. No hay estado de Suspensión ya que esos estados
pertenecen al concepto de procesos. Hay cuatro operaciones básicas relacionadas con el cambio de estado de hilos.

 Creación: cuando se crea un nuevo proceso, se crea un hilo para ese proceso. Luego, un hilo de un proceso puede
crear otros hilos dentro del mismo proceso.
 Bloqueo: un hilo espera por un suceso.
 Desbloqueo: se produce el suceso por el que un hilo se bloqueó.
 Terminación: cuando un hilo finaliza, se liberan su contexto y sus pilas.

Implementación de hilos
 Hilos a nivel de usuario (ULT, User Level Thread): todo el trabajo de gestión de hilos lo realiza la aplicación y el
núcleo no es consciente de la existencia de hilos. Es posible programar cualquier aplicación como multihilo mediante
una biblioteca de hilos, la cual contiene el código para: crear y destruir hilos, intercambiar mensajes y datos entre
hilos, planificar la ejecución de hilos y salvar y restaurar el contexto de los hilos.

Todas las operaciones se llevan a cabo en el espacio de usuario y dentro de un mismo proceso.

Ventajas:

- El intercambio de hilos no necesita los privilegios del modo núcleo. Se evita la sobrecarga de dos cambios de
modo (de usuario a núcleo, y de núcleo a usuario).
- Se puede realizar una planificación específica para una aplicación si afectar a la planificación del SO.
- Se pueden ejecutar en cualquier SO.

Desventajas:

- Cuando se ejecuta una llamada al SO, se bloquea el hilo en ejecución y todos los hilos del proceso.
- No aprovechan las ventajas de los multiprocesadores. El núcleo asigna un proceso a un solo procesador cada
vez, teniéndose que ejecutar un hilo de cada proceso en cada instante.

 Hilos a nivel de núcleo (KLT, Kernel Level Thread): todo el trabajo de gestión de hilos lo realiza el núcleo.
Ejemplos: Windows 2000, Linux y OS/2.

El núcleo realiza la planificación en función de los hilos.

Ventajas:

- El núcleo puede planificar simultáneamente múltiples hilos del mismo proceso en múltiples procesadores.
- Si se bloquea uno de los hilos de un proceso, el núcleo puede planificar otro hilo del mismo proceso.

Desventaja: el paso del control de un hilo a otro dentro del mismo proceso necesita un cambio de modo a modo de
núcleo.

 Combinación: este enfoque puede combinar las ventajas de ULT y KLT. Ejemplo: Solaris. 
En un sistema combinado, la creación de hilos se realiza por completo en el espacio de usuario, como la mayor parte
de la planificación y sincronización de hilos dentro de una aplicación. Los múltiples ULT de una aplicación se asocian
en un número (menor o igual) de KLT. El programador debe ajustar el número de KLT para una máquina y aplicación
en particular para lograr los mejores resultados posibles.
En los enfoques combinados, múltiples hilos de la misma aplicación pueden ejecutar en paralelo en múltiples
procesadores, y una llamada al sistema bloqueante no necesita bloquear el proceso com- pleto. Si el sistema está bien
diseñado, este enfoque debería combinar las ventajas de los enfoques puros ULT y KLT, minimizando las desventajas.

33 / 16
UTN FRC Resumen SOP – Rodrigo Carrión

Multiproceso simétrico (SMP)


SMP: ofrece paralelismo mediante la duplicación de procesadores.

Arquitecturas SMP
Para la arquitectura de SMP hay cuatro categorías:

 Flujo de instrucción simple/dato simple (SISD): Un flujo simple de instrucciones operan sobre una secuencia
simple de datos almacenados en memoria.
 Flujo de instrucción simple/datos múltiples (SIMD): Un mismo flujo de instrucciones opera sobre conjuntos
diferentes de datos por diferentes unidades de procesamiento (procesadores vectoriales).
 Flujo de instrucciones múltiples/datos simples (MISD): Una secuencia de datos se transmite a un conjunto de
procesadores, los cuales ejecutan una operación distinta sobre ellos (nunca implementada).
 Flujo de instrucciones múltiples/datos múltiples (MIMD): Un conjunto de procesadores ejecutan instrucciones
diferentes sobre conjuntos de datos diferentes simultáneamente

Los MIMD se clasifican en:

 Agrupación (multicomputador): cada procesador tiene


una memoria dedicada, cada elemento del proceso es un
autocomputador. Se comunican a través de alguna red o
líneas dedicadas.
 Multiprocesadores con memoria compartida: los
procesadores comparten una memoria común y se
comunican entre sí por esa memoria. Se pueden clasificar
según la forma en que se asignan los procesos:

34 / 16
UTN FRC Resumen SOP – Rodrigo Carrión

Micronúcleo
Micronúcleo: es un núcleo pequeño del SO que proporciona las bases para ampliaciones modulares.

Antecesores de la arquitectura micronúcleo


 SO monolíticos: cualquier procedimiento podía llamar a cualquier otro. Esta falta de estructura se volvía
insostenible cuando el SO alcanzó proporciones considerables.
 SO por capas: las funciones se organizaban jerárquicamente y sólo se produce interacción entre capas adyacentes. 
Con el enfoque por capas, la mayor parte o todas las capas ejecutan en modo núcleo. El problema es que realizar
grandes modificaciones en una capa puede tener numerosos efectos en el código de las capas adyacentes (por
encima y por debajo).

Arquitectura micronúcleo
La idea básica detrás del diseño de microkernel es lograr una alta confiabilidad al dividir el sistema operativo en módulos
pequeños y bien definidos, sólo uno de los cuales (el microkernel) se ejecuta en modo kernel y el resto se ejecuta como
procesos de usuario ordinarios, sin poder relativamente. En especial, al ejecutar cada driver de dispositivo y sistema de
archivos como un proceso de usuario separado, un error en alguno de estos procesos puede hacer que falle ese
componente, pero no puede hacer que falle todo el sistema. Así, un error en el driver del dispositivo de audio hará que el
sonido sea confuso o se detenga, pero la computadora no fallará. En contraste, en un sistema monolítico con todos los
drivers en el kernel, un driver de audio con errores puede hacer fácilmente referencia a una dirección de memoria inválida y
llevar a todo el sistema a un alto rotundo en un instante.

Los componentes externos al micronúcleo se implementan como procesos servidores; estos interactúan uno con otro sobre
una base común, a través de mensajes distribuidos a través del micronúcleo. Entonces, el micronúcleo funciona como
distribuidor de mensajes, validándolos, pasándolos entre componentes, y otorgando el acceso al hardware. También actúa
como protector de mensajes, evitando el intercambio de mensajes cuando no está permitido.

Ventajas de la implementación micronúcleo


1. Uniformidad de interfaces: todos los servicios se utilizan mediante el paso de mensajes.
2. Extensibilidad: facilidad para añadir nuevos servicios.
3. Flexibilidad: se adapta a las necesidades de los usuarios (añadir o quitar características para eficiencia).
4. Portabilidad: los cambios necesarios para transferir el sistema a un nuevo procesador son menores y tienden a estar
unidos en grupos lógicos.
5. Fiabilidad: un micronúcleo puede probarse de forma rigurosa. Se utilizan APIs.
6. Soporte a sistemas distribuidos: un proceso puede enviar un mensaje sin saber en qué máquina reside el
destinatario.
35 / 16
UTN FRC Resumen SOP – Rodrigo Carrión
7. Soporte para SO orientados a objetos (SOOO): los componentes son objetos con interfaces bien definidas,
entonces, la interacción entre componentes utiliza esa interfaz.

Diseño de micronúcleo
Un micronúcleo de incluir aquellas funciones que dependen directamente del hardware y cuya funcionalidad es necesaria
para dar soporte a las aplicaciones y servidores que ejecutan en modo núcleo. Se engloban en tres categorías: gestión de
memoria a bajo nivel, comunicación entre procesos, y gestión de interrupciones y E/S.

Hilos y procesos en Linux


Estados de un proceso en Linux
 Ejecución: abarca dos estados, ejecutando y listo.
 Interrumpible: estado de bloqueo, el proceso espera un suceso.
 Ininterrumpible: otro estado de bloqueo, a diferencia del anterior, no acepta señales, espera directamente una
condición de hardware.
 Parado: proceso detenido y sólo puede reanudarse por otro proceso.
 Zombie: proceso terminado, pero permanece en la tabla de procesos.

Hilos en Linux
Cuando dos procesos comparten la misma memoria virtual, operan como hilos dentro de un único proceso, pero Linux no
diferencia entre hilo y proceso.
En Linux se crea un nuevo proceso copiando los atributos del proceso actual. Un nuevo proceso se puede clonar de forma que
comparte sus recursos, tales como archivos, manejadores de señales y memoria virtual. Cuando los dos procesos comparten la
misma memoria virtual, funcionan como hi- los de un solo proceso. Sin embargo, no se define ningún tipo de estructura de
datos independiente para un hilo.

36 / 16
UTN FRC Resumen SOP – Rodrigo Carrión

Comunicación entre procesos o IPC


Condiciones de competencia: cuando dos o más procesos leen o escriben datos compartidos y el resultado final depende
de qué proceso termina último. Ejemplo: el spooler de impresión.
Para prevenir las condiciones de carrera, los procesos concurrentes cooperativos deben ser sincronizados.

Regiones críticas o Sección critica: es la parte del programa en que se tiene acceso a la memoria compartida.

Exclusión mutua: dos o más procesos no pueden leer o escribir datos compartidos al mismo tiempo. Para evitar las

condiciones de competencia hay que cumplir con lo siguiente:

1. Dos procesos no pueden estar al mismo tiempo dentro de sus regiones críticas.
2. No pueden hacerse suposiciones sobre las velocidades ni el número de las CPUs.
3. Ningún proceso que se esté ejecutando fuera de su región crítica puede bloquear otros procesos.
4. Ningún proceso deberá tener que esperar de manera indefinida para entrar en su región crítica.

Exclusión mutua sin espera ocupada


Otra alternativa para lograr exclusión mutua, es empleando modelos sin espera activa: aquí cuando a un proceso no se le
permite entrar a la región crítica, en lugar de esperar y perder tiempo en la CPU, se bloquea. Cuando se le habilita la entrada,
se desbloquea. Para lograr esto se debe hacer uso de algunas primitivas de comunicación entre procesos, unas de las más
sencillas son el par sleep(dormir) y wakeup(despertar):

 sleep: hace que el invocador se bloquee, es decir, que se suspenda hasta que otro proceso lo despierte.
 wakeup: tiene un parámetro, el proceso que se va a despertar o activar.

Tanto sleep como wakeup tienen un parámetro, una direccion de memoria que se utiliza para asociar las llamadas a sleep con
las llamadas a wakeup

El problema del productor-consumidor


Este es un modelo que utiliza las dos primitivas nombradas anteriormente. Dos procesos comparten un búfer de tamaño fijo.
Uno de ellos, el productor, coloca la información allí y el otro, el consumidor, la saca. Los problemas de este modelo surgen
cuando el productor quiere colocar un nuevo elemento en el búfer, pero este ya está lleno. La solución es que el productor
se desactive y se vuelva a activar cuando el consumidor haya sacado uno o más elementos. Asimismo, si el consumidor
quiere sacar un elemento del búfer y ve que está vacío, se desactiva hasta que el productor coloca algo allí y lo activa.

Siendo cuenta el número de elementos del búfer y N el número de elementos máximo que se puede guardar, el código de
37 / 16
UTN FRC Resumen SOP – Rodrigo Carrión
este modelo es:

A pesar de que este modelo no posee espera activa,


sigue teniendo el problema de las interrupciones de reloj
en momentos inoportunos.

Ejemplo: si cuenta no está restringido. El búfer está vacío


y el consumidor acaba de leer cuenta para ver si es 0. En
ese instante, el planificador decide dejar de ejecutar el
consumidor y comienza a ejecutar el productor. Este
inserta un elemento en el búfer, incrementa la cuenta y
ve que el valor es 1. Al estar cuenta en 1, el productor
intuye que consumidor está dormido y llama a wakeup()
para activarlo. Pero el consumidor todavía no está
inactivo, entonces la señal de activar se pierde. Cuando
se ejecute el consumidor usará el valor de cuenta que
había leído antes, que era 0 y se desactivará. El
productor llenará el búfer y se
desactivará y permanecerán ambos inactivos para siempre.

Exclusión mutua sin espera ocupada


 Semáforos: consiste en una variable entera para contar el número de llamadas wakeup. Son un tipo de variable a
la que se le aplican dos operaciones, down y up. La operación down, aplicada a un semáforo determina si su valor
es mayor a 0. En tal caso, decrementa el valor y simplemente continúa. Si el valor es 0, el proceso se desactiva sin
terminar la operación down por el momento. La operación up, incrementa el valor del semáforo indicado. Si uno o
más procesos están inactivos en espera de un semáforo, sin haber podido terminar una operación down previa, el
sistema escoge uno de ellos y le permite terminar dicha operación.

Ambas operaciones son atómicas, o sea que se garantiza que una vez iniciada una operación de semáforo, ningún
otro proceso podrá tener acceso al semáforo antes de que la operación haya terminado o se haya bloqueado.

Utilizando semáforos al modelo productor-consumidor, se tiene:

- lleno = 0, para contar el número


de ranuras ocupadas.
- vacío = N, para contar el número
de ranuras desocupadas.
- mutex = 1, para asegurar que el
productor y consumidor no
tengan acceso al búfer al mismo
tiempo.

Los semáforos resuelven el problema del despertar perdido.

Los semáforos que solo pueden adoptar dos valores, se denominan semáforos binarios o mutex. Las variables lleno
y vacío son semáforos de sincronización, garantizando que ciertas secuencias de sucesos se presenten o no
(producto deje de producir cuando el búfer esté lleno, y el consumido deje de consumir cuando esté vacío).

 Monitores: un monitor es una colección de procedimientos, variables y estructuras de datos que se agrupan en un
tipo especial de modulo o paquete. Los procesos pueden invocar a los procedimientos de un monitor cuando lo
deseen, pero no pueden acceder en forma directa a sus estructuras de datos internas desde procedimientos
declarados fuera de dicho monitor. Los monitores tienen una propiedad importante que los hace útiles para lograr
la exclusión mutua: solo un proceso puede estar activo en un monitor a la vez. Son una construcción del lenguaje
de programación.

38 / 16
UTN FRC Resumen SOP – Rodrigo Carrión

 Transferencia de mensajes: este método utiliza dos primitivas, send y receive, que son llamadas al sistema, no
construcciones del lenguaje. Específicamente, cada una se estructura:
o send(destino, mensaje): envía un mensaje a un destino dado.
o receive(origen, mensaje): recibe un mensaje de un origen dado.

Si no hay mensajes disponibles, el receptor puede bloquearse hasta que llegue uno, o bien, regresar de inmediato
con un código de error.

Los sistemas de transferencia de


mensajes presentan muchos
problemas y cuestiones de diseño
difíciles. Cabe la posibilidad de que en
la red se pierdan los mensajes. Para
protegerse contra tal perdida, el
emisor y el receptor pueden convenir
en que tan pronto como el receptor
reciba un mensaje, devolverá un
mensaje especial de acuse. Si el emisor no recibe tal acuse dentro de cierto plazo, retransmitirá el mensaje. Otro
problema, es lo que sucede si el mensaje se recibe de forma correcta, pero el acuse se pierde. El emisor retransmitirá
el mensaje y el emisor lo obtendrá dos o más veces. Este problema se resuelve anexando números de sucesión
consecutivos a cada mensaje original. Si el receptor recibe un mensaje con el mismo número de sucesión que el
mensaje anterior, sabrá que está repetido y puede ignorarlo. Cuando el emisor y el receptor están en la misma
máquina, el desempeño es importante, en este caso la transferencia de mensajes entre procesos es más lenta que
una operación de semáforo o entrar en un monitor.

En el problema del productor-consumidor se usan N mensajes (que serían N ranuras en el búfer de memoria
compartida). Lo primero que hace el consumidor es enviar N mensajes vacíos al productor. Cada vez que éste tiene
que entregar un mensaje al consumidor, toma un mensaje vacío y devuelve uno lleno.

Si el productor trabaja más rápido que el consumidor, todos los mensajes se llenarán y estarán esperando al
consumidor, el productor se bloqueará, en espera de un mensaje vacío.

Si el consumidor es más rápido, todos los mensajes estarán vacíos en espera de que el productor los llene, el
consumidor se bloqueará esperando un mensaje lleno.

39 / 16
UTN FRC Resumen SOP – Rodrigo Carrión

Planificación de procesos (Scheduling o calendarización)


Una computadora con multiprogramación suele tener varios procesos compitiendo por la CPU al mismo tiempo (cuando dos
o más estados están en estado Listo). Si sólo hay una CPU, es preciso decidir cuál proceso se ejecutará a continuación,
entrando en juego el planificador.

Además de escoger el proceso que más conviene ejecutar, el planificador debe preocuparse por aprovechar con eficiencia
la CPU, porque la conmutación de procesos es costosa.

Planificador: parte del SO que toma la decisión de que proceso ejecutar a continuación, utilizando un algoritmo de
planificación, y durante cuánto tiempo.

40 / 16
UTN FRC Resumen SOP – Rodrigo Carrión

PLANIFICACIÓN A LARGO PLAZO


El planificador a largo plazo determina qué programas se admiten en el sistema para su procesamiento. De esta forma, se
controla el grado de multiprogramación. Una vez admitido, un trabajo o programa de usuario se convierte en un proceso y se
añade a la cola del planificador a corto plazo. En algunos sistemas, un proceso de reciente creación comienza en la zona de
intercambio, en cuyo caso se añaden a la cola del planificador a medio plazo. La decisión de qué trabajo admitir el siguiente,
puede basarse en un sencillo FIFO, o puede ser una herramienta para gestionar el rendimiento del sistema.
PLANIFICACIÓN A MEDIO PLAZO
La planificación a medio plazo es parte de la función de intercambio. Con frecuencia, la decisión de intercambio se basa en
la necesidad de gestionar el grado de multiprogramación. En un sistema que no utiliza la memoria virtual, la gestión de la
memoria es también otro aspecto a tener en cuenta. De esta forma, la decisión de meter un proceso en la memoria, tendrá
en cuenta las necesidades de memoria de los procesos que están fuera de la misma.
PLANIFICACIÓN A CORTO PLAZO
En términos de frecuencia de ejecución, el planificador a largo plazo ejecuta con relativamente poca frecuencia y toma la
decisión de grano grueso de admitir o no un nuevo proceso y qué proceso admitir. El planificador a medio plazo se ejecuta
más frecuentemente para tomar decisiones de intercambio. El planificador a corto plazo, conocido también como activador,
ejecuta mucho más frecuentemente y toma las decisiones de grano fino sobre qué proceso ejecutar el siguiente.
El planificador a corto plazo se invoca siempre que ocurre un evento que puede conllevar el bloqueo del proceso actual y
que puede proporcionar la oportunidad de expulsar al proceso actualmente en ejecución en favor de otro. Algunos ejemplos
de estos eventos son:
• Interrupciones de reloj.
• Interrupciones de E/S.
• Llamadas al sistema.
• Señales (por ejemplo, semáforos).

Criterios de planificación
Hay diversas situaciones en las que es necesario planificar:
 Utilización de CPU – Es el porcentaje de tiempo que el procesador está ocupado.
 Procesamiento total (Throughput) – número de procesos que completan su ejecución por unidad de tiempo.
 Tiempo de retorno – cantidad de tiempo para ejecutar un determinado proceso.
 Tiempo de Espera – cantidad de tiempo que un proceso ha estado esperando en las colas
 Tiempo de respuesta – cantidad de tiempo que transcurre desde que fue hecho un requerimiento hasta que se
comienza a recibir la respuesta.

Tipos de algoritmos de planificación


 Planificación no apropiativa: escoge el proceso que se ejecutará y le permite ejecutarse hasta que se bloquee o
ceda la CPU de forma voluntaria. Una vez que la CPU ha sido asignada al proceso, ya no se le puede arrebatar.
 Planificación apropiativa: escoge un proceso y le permite ejecutarse durante un tiempo establecido. Si al término
41 / 16
UTN FRC Resumen SOP – Rodrigo Carrión
de este tiempo el proceso continúa en ejecución, se le suspende y el planificador escoge otro proceso para que se
ejecute (si hay disponible). Una vez que la CPU ha sido asignada al proceso, se le puede arrebatar este.

Categorías de algoritmos de planificación


Lo que el planificador debe optimizar en un sistema, no es lo mismo para todos. Por lo tanto, se diferencian tres entornos que
vale la pena distinguir:

 Por lotes: suelen ser aceptables los algoritmos no apropiativos, o los apropiativos con intervalos de tiempo largos
para cada proceso (no hay usuarios impacientes esperando que el sistema responda con rapidez). Este enfoque
reduce la conmutación de procesos y, por lo tanto, mejora el desempeño.
 Interactivo: la expropiación es indispensable para evitar que un proceso acapare la CPU y niegue servicio a otros.
 Tiempo real: a veces no es necesaria la apropiación, porque los procesos saben que tal vez no se ejecuten durante
mucho tiempo y, por lo general, realizan su trabajo y se bloquean rápido. A diferencia de los sistemas interactivos,
ejecutan programas cuyo fin es apoyar a la aplicación actual.

Algoritmos de planificación en sistemas por lotes


 Primero en llegar, primero en ser atendido (FCFS, First Come, First Served o FIFO): este algoritmo es el más
sencillo de todos y es no apropiativo. Aquí, la CPU se asigna a los procesos en el orden que la solicitan. De manera
básica, hay una sola cola de procesos listos. Cuando el primer trabajo entra al sistema, se le inicia de inmediato y
se le permite ejecutar todo el tiempo que desee. A medida que llegan otros trabajos, se les coloca al final de la cola.
Cuando se bloquea el proceso en
ejecución, se ejecuta el primer
proceso de la cola. Si un proceso
bloqueado vuelve a estar listo, se
le coloca al final de la cola como si
fuera un trabajo recién llegado. La
gran ventaja de este algoritmo es
que es muy fácil de entender y de
programar. La desventaja es que
puede hacer uso ineficiente de la CPU.
 Primero el proceso más corto (SJF, Simple Job First): es un algoritmo no apropiativo. Su funcionamiento es similar
al FCFS, pero la diferencia es que, si hay varios trabajos de la misma importancia en la cola de entrada, el
planificador escoge al trabajo más corto primero. Vale la pena señalar que esta estrategia de trabajo más corto
primero sólo es óptima si todos los trabajos están disponibles en forma simultánea.
 Menor tiempo restante (SRTF, Short
Remaining Time First): esta es una
versión apropiativa de la estrategia
anterior. Siempre se escoge el proceso
en base al tiempo que falta para que
termine de ejecutarse. Cuando llega un
trabajo nuevo, su tiempo total se
compara con el tiempo que resta para
que el proceso actual termine de
ejecutarse. Si es menor, el proceso
actual se suspende y se pone en
marcha el trabajo recién llegado. La
ventaja de este esquema es que permite
que trabajos cortos nuevos obtengan un
buen servicio. También necesita
conocer con antelación los tiempos de
ejecución.

42 / 16
UTN FRC Resumen SOP – Rodrigo Carrión
Algoritmos de planificación en sistemas interactivos
 Planificación Round Robin: es uno de los métodos más antiguos, sencillos y equitativos muy utilizado. A cada
proceso se le asigna un intervalo de tiempo, llamado cuanto (quantum), durante el que se le permitirá ejecutarse.
Si al termino del cuanto el proceso se sigue ejecutando, se le expropia la CPU asignándosela a otro proceso.
Claro que, si el proceso se bloquea o termina antes de expirar el cuanto, la conmutación de la CPU se efectúa en
ese momento. Lo único que necesita hacer el planificador es mantener una lista de procesos ejecutables. Cuando
un proceso consume su cuanto, se le coloca al final de la lista. Un aspecto importante es la magnitud del cuanto:
un quantum demasiado
corto causa demasiadas
conmutaciones de
procesos y reduce la
eficiencia de la CPU, pero
uno demasiado largo
puede reducir la rapidez de
respuesta a solicitudes
interactivas cortas. Aun
cuando de alrededor de 20-50 ms suele ser un término medio razonable.
 Por prioridades: a cada proceso se le asigna una prioridad, y el proceso listo que tenga mayor prioridad es el que
se ejecuta. Para evitar que los procesos con prioridades altas se ejecuten de manera indefinida, el planificador
podría disminuir la prioridad del proceso que se está ejecutando. Otra alternativa, es asignar a cada proceso un
cuanto de tiempo máximo en el cual
pueda ejecutarse, y una vez cumplido
el tiempo, se ejecutará el proceso con
la siguiente prioridad más alta. Las
prioridades pueden asignarse
estáticamente (por el usuario) o
dinámicamente (por el SO). En
muchos casos en conveniente
agrupar los procesos en clases de
prioridad y utilizar calendarización por
prioridades entre las clases, pero
Round Robin dentro de cada clase.
 Colas múltiples: se establecen clases de prioridad. Los procesos de la clase más alta se ejecutan durante un
quantum. Los procesos de la siguiente clase más alta se ejecutaban en dos quantums. Los procesos de la siguiente
clase se ejecutaban durante cuatro quantums, y así sucesivamente. Cada vez que un proceso se gastaba todos los
quantums asignados, se le bajaba a la clase inmediata inferior.


43 / 16
UTN FRC Resumen SOP – Rodrigo Carrión

 Planificación garantizada: consiste en hacer “promesas” reales en cuanto al desempeño y luego cumplirlas. Si hay
n usuarios, cada uno recibe 1/n de la capacidad de la CPU, lo mismo pasa con procesos en un sistema
monousuario. Para cumplir estar promesas, el sistema necesita llevar la cuenta de cuanto tiempo de CPU ha recibido
cada proceso desde su creación. Luego se calcula el tiempo de CPU al que cada uno tiene derecho, que sería el
tiempo desde la creación dividido n procesos existentes. Entonces se puede calcular el cociente entre el tiempo de
CPU de consumido entre el tiempo al que el proceso tiene derecho. El algoritmo consiste entonces en ejecutar el
proceso cuyo cociente es más bajo. Un cociente de 0.5 significa que utilizó la mitad del tiempo prometido, y uno de
2.0 significa que utilizó el doble del tiempo que debería tener. El algoritmo es para ejecutar el proceso con la menor
proporción hasta que se haya desplazado por debajo de su competidor más cercano.

Interbloqueos
Definición: Un conjunto de procesos se encuentra en un interbloqueo, si cada proceso en el conjunto está esperando a que
se produzca un evento que sólo puede ser ocasionado por otro proceso en el conjunto. Puesto que todos ellos están
esperando, ninguno causara jamás ninguno de los eventos que podrían despertar a algún otro miembro del conjunto, y todos
seguirán esperando de manera indefinida. Pueden ocurrir cuando se ha otorgado a los procesos acceso exclusivo a
recursos.

Recursos
Recurso: es cualquier cosa que un solo proceso puede usar en un instante dado. Puede ser un dispositivo de hardware (ej.
Una unidad de cinta) o una pieza de información (ej. Un registro bloqueado en una base de datos). Es cualquier cosa que
se debe adquirir, utilizar y liberar con el transcurso del tiempo. Para algunos recursos puede haber varias instancias
idénticas (ej. Varias cintas), solo se puede utilizar una de ellas para satisfacer cualquier petición de ese recurso.

Hay dos tipos de recursos:

 Recurso apropiable: recurso que se le quita al proceso que lo tiene sin efectos dañinos. Ejemplo: la memoria.
 Recurso no apropiable: recurso que no se lo puede quitar del proceso que lo tiene sin hacer que el cómputo falle.
Ejemplo: la grabación de un CD. Generalmente, es donde intervienen los interbloqueos.

Condiciones para un bloqueo irreversible


Deben cumplirse cuatro condiciones para que haya un bloqueo irreversible:

1. Exclusión mutua: solo un proceso a la vez puede usar un recurso.


2. Retención y espera: los procesos que tienen recursos previamente otorgados pueden solicitar nuevos recursos.
3. No apropiación: los recursos ya otorgados no pueden arrebatarse al proceso que los tiene; deben ser liberados de
manera explícita por el proceso que los contiene.
4. Espera circular: existe un conjunto {P0, P1, …, Pn} de procesos esperando tal que P0 está esperando por un
recurso que es retenido por P1, P1 está esperando por un recurso que es retenido por P2, …, Pn–1 está esperando
por un recurso que es retenido por Pn, y Pn está esperando por un recurso que es retenido por P0

Deben existir estas cuatro condiciones para que ocurra un bloqueo irreversible. Si falta alguna de ellas, no podrá ocurrir.

Modelado de bloqueos irreversibles


Se emplean grafos dirigidos. Hay dos nodos, los
círculos son procesos, y los cuadrados son
recursos. Un arco dirigido de un nodo recurso
(cuadro) a un nodo proceso (circulo) significa que
el recurso fue solicitado previamente por, y
asignado a, y actualmente este contenido por ese
proceso. (a) el recurso R está asignado
actualmente al proceso A. Un arco dirigido de un
proceso a un recurso significa que el proceso está
actualmente bloqueado, en espera de ese recurso.
(b) el proceso B espera al recurso S.

44 / 16
UTN FRC Resumen SOP – Rodrigo Carrión
Los grafos de recursos son una herramienta que nos permite ver si una sucesión dada de solicitudes/liberaciones conduce
a un bloqueo irreversible.

Estrategias para enfrentar los interbloqueos


 Ignorar el problema: pretender que el interbloqueo nunca ocurrió en el sistema: usado en la mayoría de los SO
incluido UNIX 
 Detección y recuperación: dejar que ocurran los interbloqueos, detectarlos y tomar acción.
 Evasiónevitarlos en forma dinámica mediante la asignación cuidadosa de los recursos.
 Prevención: se anula una de las cuatro condiciones necesarias para que haya un interbloqueo.

Prevención de interbloqueos
Garantizar que no se cumpla al menos una de las condiciones de interbloqueos.
 Atacar la condición de exclusión mutua: hacer que los recursos no sean exclusivos. Evitar asignar un recurso
cuando no sea absolutamente necesario, y tratar de asegurarse que la menor cantidad posible de procesos reclamen
ese recurso.
 Atacar la condición de retener y esperar: evitar que los procesos que contienen recursos esperen por más
recursos. Para ello, se exige que todos los procesos soliciten todos sus recursos antes de comenzar a trabajar. Si
todo está disponible, se le asignará los recursos que necesite hasta terminar. Si uno o más recursos están ocupados,
no se asignará ningún recurso y el proceso tendrá que esperar. Ineficiente, porque muchos procesos no saben
cuántos recursos necesitarán, además no se hará uso óptimo de los recursos.
 Atacar la condición no apropiativa: Si un proceso que mantiene algunos recursos requiere otro recurso, no le
puede ser inmediatamente asignado, entonces todos los recursos mantenidos son liberados. Los recursos
apropiados son agregados a la lista de recursos por los cuales el proceso está esperando, el proceso se reiniciará
solo cuando pueda reganar sus viejos recursos, tanto como los nuevos que está requiriendo.
 Atacar la condición de espera circular: hay varias formas: una forma sería simplemente tener una regla de que
cualquier proceso tiene derecho tan sólo a un recurso en todo momento. Si necesita un segundo recurso, tendrá
que liberar el primero (es imposible para un proceso que copia un archivo grande de una cinta a una impresora). La
otra forma es con una numeración global de todos los recursos. Los recursos pueden solicitar los recursos que
quieran, pero siempre en orden numérico (no puede pedir el recurso 3, y luego el 1). La desventaja es que es casi
imposible encontrar un ordenamiento que satisfaga a todos.

Detección y recuperación de un interbloqueo


Detección de interbloqueos:

 Con un recurso de cada tipo: solo hay un recurso de cada tipo (una impresora, una grabadora, un disco, etc.),
pero no más que un recurso de cada clase. Para un sistema así, podemos construir un gráfico de recursos, si
contiene uno o más ciclos, quiere decir que hay un interbloqueo. Cualquier proceso que forme parte de un ciclo está
en interbloqueo. Si no existen ciclos, el sistema no está en interbloqueo
 Con múltiples recursos de cada tipo: utiliza matrices y comparación entre vectores para detectar
interbloqueos. A medida que algoritmo avanza, se van marcando los procesos para indicar que pueden completarse
y, por lo tanto, no están en interbloqueo. Cuando el algoritmo finaliza, se sabe que cualquier proceso desmarcado
está en interbloqueo.

45 / 16
UTN FRC Resumen SOP – Rodrigo Carrión
Técnicas de recuperación:

 Recuperación mediante apropiación: arrebatarle de manera temporal un recurso a su actual poseedor y dárselo a
otro proceso. Es difícil o imposible implantar.
 Recuperación mediante reversión (Rollback): los procesos pasan por puntos de verificación periódicamente. En
estos puntos, el estado de un proceso (la imagen de memoria y el estado de los recursos, es decir, si están
asignados o no a dicho proceso) se graban en un archivo. Cuando se detecta un bloqueo irreversible, un proceso
que tiene un recurso solicitado se revierte hasta un momento anterior a la adquisición del recurso, iniciando uno de
sus puntos de verificación previos.
 Recuperación por eliminación de procesos: es la forma más burda, pero eficaz. Consiste en eliminar uno o más
procesos. Se elimina un proceso del ciclo, y si esto no ayuda, se repite hasta romper el ciclo. Una alternativa, podría
eliminarse un proceso fuera del ciclo para liberar sus recursos. El proceso a eliminar se escoge con mucho cuidado
porque está reteniendo recursos que algún proceso del ciclo necesita.

Se dice que un estado es seguro si hay cierto orden de programación en el que se puede ejecutar cada proceso hasta
completarse, incluso aunque todos ellos solicitaran de manera repentina su número máximo de recursos de inmediato.

 Si un sistema está en un estado seguro -> no hay interbloqueo.


 Si un sistema está en un estado inseguro > posibilidad de interbloqueo
 Evasión -> asegura que el sistema nunca va a entrar en un estado inseguro.

La diferencia entre un estado seguro y uno inseguro es que, desde un estado seguro, el sistema puede garantizar que todos
los procesos terminarán; desde un estado inseguro, no se puede dar esa garantía

Inanición
Es un problema relacionado con los sistemas multitarea, donde a un proceso o un hilo de ejecución se le deniega siempre
el acceso a un recurso compartido. Sin este recurso, la tarea a ejecutar no puede ser nunca finalizada.

La inanición es una situación similar al interbloqueo, pero las causas son diferentes. En el interbloqueo, dos procesos o dos
hilos de ejecución llegan a un punto muerto cuando cada uno de ellos necesita un recurso que es ocupado por el otro. En
cambio, en este caso, uno o más procesos están esperando recursos ocupados por otros procesos que no se encuentran
necesariamente en ningún punto muerto.

La utilización de prioridades en muchos SO multitarea podría causar que procesos de alta prioridad estuvieran ejecutándose
siempre y no permitieran la ejecución de procesos de baja prioridad, causando inanición en estos.

46 / 16
UTN FRC Resumen SOP – Rodrigo Carrión

Unidad Nº4 – Administración de memoria


Estrategias de administración
Monoprogramación sin intercambio ni paginación
Este es el esquema de administración de memoria más sencillo. Consiste en ejecutar solo un programa a la vez, repartiendo
la memoria entre ese programa y el SO. Se ejecuta un solo proceso a la vez.
Desventajas:

 Se ejecuta un proceso por vez

 Se asigna memoria, no se libera


 Baja utilización de la memoria
 Baja utilización del procesador

Multiprogramación con particiones fijas (ocurre fragmentación interna)


La multiprogramación aumenta el aprovechamiento de la CPU. Existen varias formas de lograr multiprogramación. La forma
más fácil es dividir la memoria en n partes de distinto tamaño, cada una con una cola de entrada. Cuando llega un trabajo, se
lo pone en la cola de la partición más pequeña en la que cabe.

Desventaja: cuando la cola de una partición grande está vacía pero


la de una partición pequeña está llena, los trabajos pequeños tienen
que esperar para entrar en memoria, aunque haya mucha memoria
desocupada.

Una alternativa, sería mantener una sola cola. Cada vez que se
desocupe una partición, el trabajo más cercano al frente, y que quepa
en esa partición, se cargará y ejecutará. La única desventaja seria
desperdiciar una partición grande en un trabajo pequeño
(fragmentación interna). Para eliminar la desventaja anterior, una
estrategia distinta seria examinar toda la cola cada vez que se
desocupe una partición y elegir el trabajo más grande que entre en
ella. Este enfoque discrimina los trabajos pequeños.

Una solución a lo anterior seria tener por lo menos una partición pequeña, para ejecutar trabajos pequeños.

Otra estrategia se basa en la regla de que un trabajo elegible para ejecutarse no puede pasarse por alto más de k veces.
Cada vez que se lo saltea, se le suma un punto. Cuando tiene k puntos, no se le puede ignorar.

Reubicación
El programador no sabe en qué parte de la memoria principal se situará el programa cuando se ejecute, mientras
el programa se está ejecutando, este puede llevarse al disco y traerse de nuevo a la memoria principal en un área
diferente (reubicado). Deben traducirse las referencias de memoria encontradas en el código del programa en
direcciones de memorias físicas
Ejemplo (ver imagen): Como muestran las figuras 3-2(a) y (b), se tienen dos programas, cada uno con un tamaño de 16 KB. El primero
está sombreado para indicar que tiene una llave de memoria diferente a la del segundo y empieza saltando a la dirección 24, que contiene
una instrucción MOV; el segundo, saltando a la dirección 28, que contiene una instrucción CMP. Las instrucciones que no son relevantes
para este análisis no se muestran. Cuando los dos programas se cargan consecutivamente en la memoria, empezando en la dirección 0,
tenemos la situación de la figura 3-2(c). Una vez que los programas se cargan se pueden ejecutar. Como tienen distintas llaves de
memoria, ninguno de los dos puede dañar al otro. Pero el problema es de una naturaleza distinta. Cuando se inicia el primer programa,
ejecuta la instrucción JMP 24, que salta a la instrucción, como se espera. Este programa funciona de manera normal. Sin embargo,
después de que el primer programa se ha ejecutado el tiempo suficiente, el sistema operativo tal vez decida ejecutar el segundo programa,
que se carga encima del primero, en la dirección 16,384. La primera instrucción ejecutada es JMP 28, que salta a la instrucción ADD en
el primer programa, y no a la instrucción CMP a la que se supone debe saltar. Es muy probable que el programa falle en menos de 1
segundo.

47 /
7
UTN FRC Resumen SOP – Rodrigo Carrión
Una posible solución es modificar la instrucción en el momento en que el programa se carga en la memoria. Usando una
técnica conocida como reubicación estática, cuando se cargaba un programa en la dirección 16,384, se sumaba el valor constante
16,384 a todas las direcciones del programa durante el proceso de carga.

La reubicación sobre la carga no resuelve el problema de la protección. En los SO multiusuario es indeseable dejar que los
procesos lean y escriban en la memoria perteneciente a otros usuarios.

Protección
 Los procesos no deberían ser capaces de
referenciar sin permiso posiciones de
memoria principal de otro proceso

 Es imposible comprobar las direcciones


absolutas en el tiempo de compilación

 Deben comprobarse en el tiempo de


ejecución

 Es el procesador (hardware), en lugar del


S.O., el que debe satisfacer el requisito de
protección de memoria. El S.O. no puede
anticipar todas las referencias que un
programa hará.

Espacio de direcciones
Un espacio de direcciones es el conjunto de direcciones que puede utilizar un proceso para direccionar la memoria. Cada
proceso tiene su propio espacio de direcciones, independiente de los que pertenecen a otros procesos (excepto en ciertas
circunstancias especiales en donde los procesos desean compartir sus espacios de direcciones).

Los espacios de direcciones no tienen que ser numéricos. El conjunto de dominios .com de Internet es también un espacio
de direcciones. Este espacio de direcciones consiste de todas las cadenas de longitud de 2 a 63 caracteres que se puedan
formar utilizando letras, números y guiones cortos, seguidas de .com.

Algo un poco más difícil es proporcionar a cada programa su propio espacio de direcciones, de manera que la dirección 28
en un programa indique una ubicación física distinta de la dirección 28 en otro programa.

Registro base y limite


La solución sencilla utiliza una versión muy simple de la reubicación dinámica. Lo que hace es asociar el espacio de
direcciones de cada proceso sobre una parte distinta de la memoria física, de una manera simple. Consiste en equipar a la
máquina con dos registros especiales de hardware, llamados base y límite. Cuando se utilizan estos registros, los programas
se cargan en ubicaciones consecutivas de memoria en donde haya espacio y sin reubicación durante la carga como se
muestra en la figura 3-2(c). Cuando se ejecuta un proceso, el registro base se carga con la dirección física donde empieza el
programa en memoria y el registro límite se carga con la longitud del programa. En la figura 3-2(c), los valores base y límite
que se cargarían en estos registros de hardware al ejecutar el primer programa son 0 y 16,384, respectivamente. Los valores
utilizados cuando se ejecuta el segundo programa son 16,384 y 16,384, respectivamente. Si se cargara un tercer programa
de 16 KB directamente por encima del segundo y se ejecutara, los registros base y límite serían 32,768 y 16,384. Cada vez
que un proceso hace referencia a la memoria, ya sea para obtener una instrucción de memoria, para leer o escribir una
palabra de datos, el hardware de la CPU suma de manera automática el valor base a la dirección generada por el proceso
antes de enviar la dirección al bus de memoria. Al mismo tiempo comprueba si la dirección ofrecida es igual o mayor que el
valor resultante de sumar los valores de los registros límite y base, en cuyo caso se genera un fallo y se aborta el acceso.

La desventaja es tener que hacer una suma y una comparación cada vez que se referencia la memoria.

48 /
7
UTN FRC Resumen SOP – Rodrigo Carrión

Administración de memoria
Administrador de memoria: parte del SO que administra todo lo referido a la memoria. Su obligación es mantenerse al
tanto de que partes de la memoria está libre y ocupada, asignar memoria a procesos cuando la necesiten y liberar la misma
cuando estos terminen, y administrar el intercambio entre la memoria y el disco duro cuando la primera es muy pequeña
para contener todos los procesos.
A veces no hay espacio suficiente en memoria principal para contener todos los procesos activos, así que los procesos
excedentes se mantienen en disco y traerlos a la memoria en forma dinámica para que se ejecuten.

Pueden usarse dos enfoques para la administración de memoria:

 Intercambio (swapping): consiste en traer a la memoria un proceso entero, ejecutarlo durante un rato y
regresarlo al disco.
 Memoria virtual: permite que los programas se ejecuten, aunque sólo una parte de ellos esté en memoria.

Intercambio (swapping)
Si la memoria física de la computadora es lo bastante grande como para contener todos los procesos, los esquemas descritos
hasta ahora funcionarán en forma más o menos correcta. Pero en la práctica, la cantidad total de RAM que requieren todos
los procesos es a menudo mucho mayor de lo que puede acomodarse en memoria. En un sistema Windows o Linux común,
se pueden iniciar entre 40 y 60 procesos o más cada vez que se inicia la computadora.

A través de los años se han desarrollado dos esquemas generales para lidiar con la sobrecarga de memoria. La estrategia
más simple, conocida como intercambio, consiste en llevar cada proceso completo a memoria, ejecutarlo durante cierto tiempo
y después regresarlo al disco.

Los procesos inactivos mayormente son almacenados en disco, de tal manera que no ocupan memoria cuando no se están
ejecutando (aunque algunos de ellos se despiertan periódicamente para realizar su trabajo y después vuelven a quedar
inactivos).

La operación de un sistema de intercambio se ilustra en la figura 3-4. Al principio, sólo el proceso A está en la memoria.
Después los procesos B y C se crean o se intercambian desde disco. En la figura 3-4(d), A se intercambia al disco. Después
llega D y sale B. Por último, A entra de nuevo. Como A está ahora en una ubicación distinta, las direcciones que contiene se
deben reubicar, ya sea mediante software cuando se intercambia o (más probablemente) mediante hardware durante la
ejecución del programa. Por ejemplo, los registros base y límite funcionarían bien en este caso.

Cuando el intercambio crea varios huecos en la memoria, es posible combinarlos todos en uno grande desplazando los
procesos lo más hacia abajo que sea posible. Esta técnica se conoce como compactación de memoria. Por lo general no se
realiza debido a que requiere mucho tiempo de la CPU.

Un aspecto que vale la pena mencionar es la cantidad de memoria que debe asignarse a un proceso cuando éste se crea o
se intercambia. Si los procesos se crean con un tamaño fijo que nunca cambia, entonces la asignación es sencilla: el S.O.
49 /
7
UTN FRC Resumen SOP – Rodrigo Carrión
asigna exactamente lo necesario, ni más ni menos.

No obstante, si los segmentos de datos de los procesos pueden crecer, por ejemplo mediante la asignación dinámica de
memoria proveniente de un heap, como en muchos lenguajes de programación, ocurre un problema cuando un proceso
trata de crecer. Si hay un hueco adyacente al proceso, puede asignarse y se permite al proceso crecer en el hueco; si el
proceso está adyacente a otro proceso, el proceso en crecimiento tendrá que moverse a un hueco en memoria que sea lo
bastante grande como para alojarlo, o habrá que intercambiar uno o más procesos para crear un hueco con el tamaño
suficiente. Si un proceso no puede crecer en memoria y el área de intercambio en el disco está llena, el proceso tendrá que
suspenderse hasta que se libere algo de espacio (o se puede eliminar).

Si se espera que la mayoría de los procesos crezcan a medida que se ejecuten, probablemente sea conveniente asignar un
poco de memoria adicional cada vez que se intercambia o se mueve un proceso, para reducir la sobrecarga asociada con la
acción de mover o intercambiar procesos que ya no caben en su memoria asignada. No obstante, al intercambiar procesos
al disco, se debe intercambiar sólo la memoria que se encuentre en uso; es un desperdicio intercambiar también la memoria
adicional.

Si los procesos pueden tener dos segmentos en crecimiento, por ejemplo, cuando el segmento de datos se utiliza como
heap para las variables que se asignan y liberan en forma dinámica y un segmento de pila para las variables locales
normales y las direcciones de retorno, un arreglo alternativo se sugiere por sí mismo, a saber, el de la figura 3-5(b). En esta
figura podemos ver que cada proceso ilustrado tiene una pila en la parte superior de su memoria asignada, la cual está
creciendo hacia abajo, y un segmento de datos justo debajo del texto del programa, que está creciendo hacia arriba. La
memoria entre estos segmentos se puede utilizar para cualquiera de los dos. Si se agota, el proceso tendrá que moverse a
un hueco con suficiente espacio, intercambiarse fuera de la memoria hasta que se pueda crear un hueco lo suficientemente
grande, o eliminarse.

Multiprogramación con particiones variables (ocurre fragmentación externa)


Para vencer algunas de las dificultades con particionamiento fijo, se desarrolló una técnica conocida como particionamiento
dinámico. Con particionamiento dinámico, las particiones son de longitud y número variable. Cuando se lleva un proceso a
la memoria principal, se le asigna exactamente tanta memoria como requiera y no más. Un ejemplo, que utiliza 64 Mbytes
de memoria principal, se muestra en la Figura 7.4. Inicialmente, la memoria principal está vacía, excepto por el sistema
operativo (a). Los primeros tres procesos se cargan justo donde el sistema operativo finaliza y ocupando el espacio justo
para cada proceso (b, c, d). Esto deja un «hueco» al final de la memoria que es demasiado pequeño para un cuarto
proceso. En algún momento, ninguno de los procesos que se encuentran en memoria está disponible. El sistema operativo
lleva el proceso 2 al disco (e), que deja suficiente espacio para cargar un nuevo proceso, el proceso 4 (f). Debido a que el
proceso 4 es más pequeño que el proceso 2, se crea otro pequeño hueco. Posteriormente, se alcanza un punto en el cual
ninguno de los procesos de la memoria principal está listo, pero el proceso 2, en estado Listo-Suspendido, está disponible.

50 /
7
UTN FRC Resumen SOP – Rodrigo Carrión
Porque no hay espacio suficiente en la memoria para el proceso 2, el sistema operativo lleva a disco el proceso 1 (g) y lleva
a la memoria el proceso 2 (h). Como muestra este ejemplo, el método comienza correctamente, pero finalmente lleva a una
situación en la cual existen muchos huecos pequeños en la memoria. A medida que pasa el tiempo, la memoria se
fragmenta cada vez más y la utilización de la memoria se decrementa.

Este fenómeno se conoce como fragmentación externa, indicando que la memoria que es externa a todas las particiones se
fragmenta de forma incremental. Cualquier programa, sin importar lo pequeño que sea, ocupa una partición entera. Podría
haber un programa cuya longitud es menor que 2 Mbytes; ocuparía una partición de 8 Mbytes cuando se lleva a la memoria.
Este fenómeno, en el cual hay espacio interno malgastado debido al hecho de que el bloque de datos cargado es menor que la
partición, se conoce con el nombre de fragmentación interna.

Una técnica para eliminar la fragmentación externa es la compactación: de vez en cuando, el sistema operativo desplaza los
procesos en memoria, de forma que se encuentren contiguos y de este modo toda la memoria libre se encontrará unida en un
bloque.

51 /
7
UTN FRC Resumen SOP – Rodrigo Carrión
Administración de memoria con mapa de bits
Con un mapa de bits, la memoria se divide en unidades de asignación, que pueden ser desde unas cuantas palabras hasta
varios kilobytes. A cada unidad de asignación corresponde un bit del mapa de bits. El bit es 0 si la unidad está desocupada
y 1 si está ocupada (o viceversa).

El tamaño de la unidad de asignación es muy importante. Más pequeña la unidad, mayor tamaño del mapa de bits. A mayor
unidad de asignación, menor tamaño de mapa de bits, pero desperdicia una cantidad de memoria considerable en la última
unidad del proceso si su tamaño no es múltiplo exacto de la unidad de asignación.

El tamaño del mapa de bits depende del tamaño de la unidad de asignación y de la cantidad de memoria.

Desventaja: una vez que se ha decidido traer a la memoria un proceso de k unidades, el administrador de memoria deberá
examinar el mapa de bits en busca de una serie de k bits consecutivos en 0 (operación lenta).

Administración de memoria con listas enlazadas


Consiste en una lista enlazada de segmentos de memoria asignados y libres, donde un segmento es un proceso, o bien, un
hueco vacío entre dos procesos. Cada entrada de la lista especifica un hueco (H) o un proceso (P), la dirección donde
comienza, la longitud y un apuntador a la siguiente entrada.

Pueden usarse varios algoritmos para asignar memoria a un proceso creado (o a un proceso existente que se intercambie
del disco), dando por hecho que el administrador de memoria sabe cuanta debe asignar:

 Primer ajuste: es el método más simple. El administrador de memoria explora la lista de segmentos hasta hallar un
hueco lo bastante grande. Luego el hueco se divide en dos partes, una para el proceso y una para la memoria
desocupada (excepto que sea exacto). Este algoritmo es rápido porque la búsqueda es lo más corta posible.
 Siguiente ajuste: funcionamiento similar al del primer ajuste, sólo que el algoritmo lleva un registro de donde
encuentra cada vez que descubre un hueco adecuado. La siguiente vez que tenga que buscar un hueco, inicia
desde ese punto y no desde el principio. Es más lento que el del primer ajuste.

52 /
7
UTN FRC Resumen SOP – Rodrigo Carrión
 Mejor ajuste: se explora toda la lista y se escoge el hueco más pequeño que sea adecuado. En vez de dividir un
gran hueco que podría necesitarse después, trata de buscar un hueco que esté cerca del tamaño actual necesario,
que coincida mejor con la solicitud y los huecos disponibles. El algoritmo del mejor ajuste es más lento que el del
primer ajuste, ya que debe buscar en toda la lista cada vez que se le llama. De manera sorprendente, también
provoca más desperdicio de memoria que los algoritmos del primer ajuste o del siguiente ajuste, debido a que tiende
a llenar la memoria con huecos pequeños e inutilizables. El algoritmo del primer ajuste genera huecos más grandes
en promedio.
 Peor ajuste: asegura de escoger el hueco más grande disponible, de modo que el hueco restante sea lo bastante
grande como para ser útil. Las simulaciones demuestran que no es muy buena idea.
 Ajuste rápido: mantiene listas separadas para algunos de los tamaños más comunes solicitados. Por ejemplo,
podría mantenerse una tabla de n entradas, donde el primero es un apuntador a la cabeza de una lista de huecos 4
KB, el segundo un apuntador a una lista de huecos de 8 KB, etc. Los de 21KB se podrían meter con los de 20 KB o
una lista con tamaños irregulares. Con este algoritmo, la localización de un hueco del tamaño requerido es
extremadamente rápida, pero tiene la misma desventaja que todos los esquemas que se ordenan por el tamaño del
hueco: cuando un proceso termina o es intercambiado, buscar en sus vecinos para ver si es posible una fusión es
un proceso costoso. Si no se realiza la fusión, la memoria se fragmentará rápidamente en un gran número de
pequeños huecos en los que no cabrá ningún proceso.

Los cuatro primeros algoritmos pueden acelerarse manteniendo listas distintas para los procesos y para los huecos,
enfocándose entonces en inspeccionar huecos y no procesos. La desventaja es que la asignación es más compleja y la
liberación de memoria es más lenta (quitar de la lista de procesos e insertar en la lista de huecos).

Memoria virtual
La idea básica detrás de la memoria virtual es que cada programa tiene su propio espacio de direcciones, el cual se divide
en trozos llamados páginas. Cada página es un rango contiguo de direcciones. Estas páginas se asocian a la memoria
física, pero no todas tienen que estar en la memoria física para poder ejecutar el programa. Cuando el programa hace
referencia a una parte de su espacio de direcciones que está en la memoria física, el hardware realiza la asociación
necesaria al instante. Cuando el programa hace referencia a una parte de su espacio de direcciones que no está en la
memoria física, el sistema operativo recibe una alerta para buscar la parte faltante y volver a ejecutar la instrucción que falló.
La memoria virtual funciona muy bien en un sistema de multiprogramación, con bits y partes de muchos programas en
memoria a la vez. Mientras un programa espera a que una parte del mismo se lea y coloque en la memoria, la CPU puede
otorgarse a otro proceso Hay dos técnicas:

 Paginación.
 Segmentación.

Paginación
La mayoría de los sistemas con memoria virtual utilizan una técnica llamada paginación. En cualquier computadora, los
programas hacen referencia a un conjunto de direcciones de memoria.

Estas direcciones generadas por el programa


se denominan direcciones virtuales y
constituyen el espacio de direcciones
virtual. En computadoras sin memoria
virtual, la dirección virtual se coloca en forma
directa en el bus de memoria y esto hace que
se lea o escriba la palabra física de memoria
que tiene esa dirección. Cuando se utiliza
memoria virtual, las direcciones virtuales no
se envían de manera directa al bus de
memoria, sino a una Unidad de
Administración de Memoria (MMU,
Memory Managment Unit) que establece una
correspondencia entre las direcciones
virtuales y físicas de la memoria.

53 /
7
UTN FRC Resumen SOP – Rodrigo Carrión

El espacio de direcciones virtuales se divide en unidades de tamaño fijo llamadas páginas. Las unidades correspondientes
en la memoria física se denominan marcos de página. Estas dos estructuras por lo general tienen el mismo tamaño.

En el hardware real, un bit de presente/ausente lleva el registro de cuáles páginas están físicamente presentes en la
memoria. En el caso de que un programa trate de usar
una página que no tiene correspondencia, la MMU se
da cuenta de esto y hace que la CPU salte al sistema
operativo. Esta interrupción de sistema se denomina
fallo de página. El sistema operativo escoge un
marco de página que se utilice poco y escribe su
contenido de vuelta al disco (si no está ahí). Después
obtiene la página que se acaba de referenciar en el
marco de página que se acaba de liberar, cambia la
asociación y reinicia la instrucción que origino el trap
(fallo de página).

La MMU interpreta por ejemplo una dirección virtual


de 16 bits de la siguiente manera:

 Los primeros 4 bits indican un número de


página. Este se utiliza como índice para
consultar la tabla de página y así obtener el
número de marco de página correspondiente.
 Los siguientes 12 bits indican un
desplazamiento u offset, por lo que, si se
tienen marcos de página de 4 KB, estos 12
bits se utilizan para direccionar los 4096 bytes
de cada marco.
54 /
7
UTN FRC Resumen SOP – Rodrigo Carrión
El número de página se utiliza como índice en la tabla de páginas, conduciendo al número del marco de página que
corresponde a esa página virtual. Si el bit de presente/ausente es 0, se provoca un trap al sistema operativo. Si el bit es 1,
el número del marco de página encontrado en la tabla de páginas se copia a los 3 bits de mayor orden del registro de salida,
junto con el desplazamiento de 12 bits, que se copia sin modificación de la dirección virtual entrante. En conjunto forman
una dirección física de 15 bits. Después, el registro de salida se coloca en el bus de memoria como la dirección de memoria
física.

Tablas de página
El propósito de la tabla de páginas es establecer una correspondencia entre las páginas virtuales y los marcos de página.
En términos matemáticos, la tabla de páginas es una función, el número de página virtual es su argumento y el número de
marco de página es el resultado. Utilizando el resultado de esta función, el campo de la página virtual en una dirección virtual
se puede reemplazar por un campo de marco de página, formando así una dirección de memoria física.

Diseños para la implementación de tablas de páginas:

 El diseño más sencillo consiste en tener una sola tabla de páginas conformada por un arreglo de registros rápidos
de hardware. Cuando se inicia un proceso, el SO carga los registros con la tabla de páginas del proceso, tomada
de una copia que se guarda en memoria principal. Durante la ejecución, no se necesitan más referencias a la
memoria para la tabla de páginas ni para la transformación de direcciones. Una desventaja es que puede ser costoso
(si la tabla de páginas es grande); además, tener que cargar toda la tabla en cada conmutación de contexto perjudica
el desempeño.
 En el otro extremo, la tabla de páginas podría estar en su totalidad en la memoria principal. Por lo tanto, lo único
que se necesita del hardware es un solo registro que apunte al principio de la tabla de páginas. Este diseño permite
cambiar el mapa de memoria con solo cargar un registro cuando se efectúa una conmutación de contexto. La
desventaja es que requiere una o más referencias a memoria.

Tablas de páginas multinivel: dado que las tablas de páginas pueden ocupar mucha memoria, muchas computadoras
utilizan una tabla de páginas multinivel. En este modelo, no es necesario tener todas las tablas de páginas en memoria todo
el tiempo, las que no se necesitan no deberán tenerse en ella.

Cuando se presenta una dirección virtual a la MMU, ésta extrae un valor que usa como índice para consultar la tabla de
páginas de primer nivel. La entrada a la que se llega al consultar la tabla de páginas de primer nivel, contiene la dirección
del número de marcos de página donde está almacenada una tabla de páginas de segundo nivel (dos niveles).

Estructura de una entrada de tabla de página: el tamaño de cada entrada varía de una computadora a otra, lo común es
de 32 bits. Los atributos son:

 Número de marco de página: este es el campo más importante, el objetivo de la asociación de páginas es mostrar este
valor.
 Bit presente/ausente: si este bit es 1, la entrada es válida y puede usarse; si es 0, la página virtual a la que la entrada
corresponde no está en memoria. Tener acceso a una entrada de tabla de página que tiene este bit en 0 causa un
fallo de página.
 Bits de protección: indican cuales tipos de accesos están permitidos. Bit 0 permite lectura/escritura y Bit 1 lectura.
 Bit de modificada: cuando se escribe en una página, el hardware establece de manera automática el bit de
modificada. Este bit es valioso cuando el sistema operativo decide reclamar un marco de página. Si la página en él
ha sido modificada (es decir, está “sucia”), debe escribirse de vuelta en el disco. Si no se ha modificado (es decir,
está “limpia”) sólo se puede abandonar, debido a que la copia del disco es aun válida.
 Bit de referenciada: se establece cada vez que una página es referenciada, ya sea para leer o escribir. Su función
es ayudar al S.O. a elegir una página para desalojarla cuando ocurre un fallo de página. Las páginas que no se
estén utilizando son mejores candidatos
que las páginas que se están utilizando y
este bit desempeña un importante papel
en varios de los algoritmos de reemplazo
de páginas que estudiaremos más
adelante en este capítulo.
 Bit caché: este bit permite inhabilitar el uso
de caché con la página.


55 /
7
UTN FRC Resumen SOP – Rodrigo Carrión
Memoria asociativa (búferes de consulta para traducción) TLB
Puesto que la velocidad de ejecución por lo general está limitada por la velocidad con que la CPU puede sacar instrucciones
y datos de memoria, tener que hacer dos referencias a la
tabla de página por cada referencia a la memoria reduce
mucho el desempeño.

La solución que se halló consiste en equipar las


computadoras con un pequeño dispositivo de hardware
que traduce direcciones virtuales a direcciones físicas,
sin pasar por la tabla de páginas. Este dispositivo,
llamado búfer de consulta para traducción (TLB),
también conocido como memoria asociativa. Por lo
general, esto está dentro de la MMU. Cada entrada
contiene información sobre una página, incluido el
número de página virtual, un bit que se establece cuando
la página se modifica, el código de protección (permisos)
y el marco de página físico en el que está la página. Otro
bit indica si la entrada es válida.

Cuando se presenta una dirección virtual a la MMU para


que la traduzca, el hardware verifica primero si su número de página virtual está presente en el TLB o no, comparándolo con
todas las entradas simultáneamente. Si se encuentra el número y el acceso no viola los bits de protección, el número de
marco de página se toma directo del TLB, sin recurrir a la tabla de páginas.

Cuando el número de página virtual no está en la TLB, la MMU detecta esto y realiza la consulta ordinaria en la tabla de
páginas. Luego desaloja una de las entradas del TLB y la sustituye por la entrada de tabla de páginas que acaba de buscar.

Tablas de páginas multinivel


El secreto del método de la tabla de páginas
multinivel es evitar mantenerlas en memoria todo el
tiempo, y en especial, aquellas que no se necesitan.
Por ejemplo, suponga que un proceso necesita 12
megabytes: los 4 megabytes inferiores de memoria
para el texto del programa, lo siguientes 4
megabytes para datos y los 4 megabytes superiores
para la pila. Entre la parte superior de los datos y la
parte inferior de la pila hay un hueco gigantesco que
no se utiliza. En la figura 3-13(b) podemos ver cómo
funciona la tabla de página de dos niveles en este
ejemplo. A la izquierda tenemos la tabla de páginas
de nivel superior, con 1024 entradas, que
corresponden al campo TP1 de 10 bits. Cuando se
presenta una dirección virtual a la MMU, primero
extrae el campo TP1 y utiliza este valor como índice
en la tabla de páginas de nivel superior. Cada una de
estas 1024 entradas representa 4 M, debido a que
todo el espacio de direcciones virtuales de 4
gigabytes (es decir, de 32 bits) se ha dividido en
trozos de 4096 bytes. La entrada que se localiza al
indexar en la tabla de páginas de nivel superior
produce la dirección (o número de marco de página)
de una tabla de páginas de segundo nivel. La
entrada 0 de la tabla de páginas de nivel superior
apunta a la tabla de páginas para el texto del
programa, la entrada 1 apunta a la tabla de páginas
para los datos y la entrada 1023 apunta a la tabla de
páginas para la pila. Las otras entradas (sombreadas) no se utilizan. Ahora el campo TP2 se utiliza como índice en la tabla
de páginas de segundo nivel seleccionada para buscar el número de marco de página para esta página en sí. El sistema de
tablas de páginas de dos niveles de la figura 3-13 se puede expandir a tres, cuatro o más niveles. Entre más niveles se
obtiene una mayor flexibilidad, pero es improbable que la complejidad adicional sea de utilidad por encima de tres niveles.
56 /
7
UTN FRC Resumen SOP – Rodrigo Carrión
Algoritmos para el reemplazo de páginas
Cuando se presenta un fallo de página, el SO tiene que escoger la página que desalojará de la memoria para hacer espacio
para colocar la página que traerá del disco. Si la página a desalojar fue modificada mientras estaba en memoria, deberá
reescribirse en el disco para actualizar la copia, sino, simplemente se reemplaza. Para ello existen diferentes tipos de
algoritmos:

 Algoritmo óptimo de reemplazo de página: Cada página se puede etiquetar con el número de instrucciones que
se ejecutarán antes de que se haga referencia por primera vez a esa página. Si una página no se va a utilizar
durante 8 millones de instrucciones y otra no se va a utilizar durante 6 millones de instrucciones, al eliminar la
primera se enviará el fallo de página que la obtendrá de vuelta lo más lejos posible en el futuro. Al igual que las
personas, las computadoras tratan de posponer los eventos indeseables el mayor tiempo posible. Este algoritmo
simplemente dice que debe eliminarse la página con la etiqueta más alta. El único problema con este método es
que no se puede realizar, debido a que en el momento en que se presenta un fallo de página, el SO no tiene forma
de saber cuándo se volverá a hacer referencia a cada una de las páginas. No se puede implementar, pero es útil
como punto de comparación.
 Algoritmo de reemplazo de páginas no usadas recientemente (NRU, Not Recently Used): Para permitir que el
sistema operativo recolecte estadísticas útiles sobre el uso de páginas, la mayor parte de las computadoras con
memoria virtual tienen dos bits de estado asociados a cada página, el bit R se enciende cada vez que se hace
referencia a la página (para leer o escribir). El bit M se establece cuando se escribe en la página (es decir, se
modifica). Es importante tener en cuenta que estos bits se deben actualizar en cada referencia a la memoria, por lo
que es imprescindible que se establezcan mediante el hardware. Una vez que se establece un bit en 1, permanece
así hasta que el sistema operativo lo restablece. Cuando se presenta un fallo de página, el SO examina todas las
páginas y las divide en 4 categorías con base en los valores actuales de sus bits R y M: Clase 0: no referenciada,
no modificada; Clase 1: no referenciada, modificada; Clase 2: referenciada, no modificada; Clase 3: referenciada,
modificada. Aunque las páginas de la clase 1 parecen a primera instancia imposibles, ocurren cuando una
interrupción de reloj borra el bit R de una página de la clase 3. Las interrupciones de reloj no borran el bit M debido
a que esta información se necesita para saber si la página se ha vuelto a escribir en el disco o no. Al borrar R pero
no M se obtiene una página de clase 1. Este algoritmo elimina una página al azar de la clase de menor numeración
que no esté vacía. En este algoritmo está implícita la idea de que es mejor eliminar una página modificada a la que
no se haya hecho referencia en al menos un pulso de reloj, que una página limpia de uso frecuente. Es fácil de
comprender, moderadamente eficiente de implementar y proporciona un rendimiento que puede ser adecuado. Una
aproximación muy ordinaria del LRU.
 Algoritmo de reemplazo de páginas de primero en entrar, primero en salir (FIFO): el SO mantiene una lista de
todas las páginas que están actualmente en la memoria con la más antigua al principio de la lista, y la más nueva
al final. Al presentarse un fallo de página, se elimina la página que esta al principio de la lista y la nueva se agrega
al final. La desventaja es que puede eliminar una página que se usa mucho, por esta razón es raro que se utilice
FIFO en su forma pura. Podría descartar paginas importantes.
 Algoritmo de reemplazo de páginas de segunda oportunidad: es una modificación del FIFO que evita el
problema de descartar una página de uso frecuente es inspeccionar el bit R de la página más antigua. Si es 0, la
página es antigua y no se ha utilizado, por lo tanto, es reemplazada de inmediato. Si es 1, el bit se borra, la página
se coloca al final de la lista de páginas y su tiempo de carga se actualiza, como si acabara de llegar a la memoria.
No es tan eficiente porque cambia constantemente las páginas de su lista. Gran mejora sobre FIFO.

57 /
7
UTN FRC Resumen SOP – Rodrigo Carrión
 Algoritmo de reemplazo de páginas tipo reloj: Mantiene todas las páginas en una lista circular parecida a un reloj,
y una manecilla apunta a la página más antigua. Cuando se presenta un fallo de página, se examina la página a la
que apunta la manecilla. Si su bit R es 0, dicha página se desaloja, la nueva se inserta en su lugar y la manecilla se
avanza una posición. Si R es 1, se borra y la manecilla se avanza a la siguiente página, repitiendo el proceso hasta
encontrar una página con R = 0. Es como el de segunda oportunidad, pero diferente implementación. Realista.


 Algoritmo de reemplazo de páginas menos usadas recientemente (LRU, Least Recently Used): Una buena
aproximación al algoritmo óptimo se basa en la observación de que las páginas que se hayan utilizado con
frecuencia en las últimas instrucciones, tal vez se volverán a usar con frecuencia en las siguientes. Por el contrario,
las páginas que no se hayan utilizado por mucho tiempo probablemente seguirán sin utilizarse por mucho tiempo
más. Cuando se presenta un fallo de página, se desaloja la página que tiene más tiempo sin usarse.
Aunque en teoría el algoritmo LRU es realizable, no es barato. Para implementar el LRU por completo, es necesario
mantener una lista enlazada de todas las páginas en memoria, con la página de uso más reciente en la parte frontal
y la de uso menos reciente en la parte final. La dificultad es que la lista debe actualizarse en cada referencia a
memoria. Buscar una página en la lista, eliminarla y después pasarla al frente es una operación que consume mucho
tiempo, incluso mediante hardware (suponiendo que pudiera construirse dicho hardware). Excelente, pero difícil de
implementar con exactitud.

58 /
7
UTN FRC Resumen SOP – Rodrigo Carrión
Modelo del conjunto de trabajo (algoritmo de reemplazo de páginas de conjunto de trabajo)
Primero hay que entender algunas cosas.

Paginación por demanda: las páginas se traen cuando se necesitan, no por adelantado. Los procesos se inician sin tener
páginas en memoria. Cuando la CPU quiera obtener la primera instrucción habrá un fallo de página y el SO traerá del disco
la página con la primera instrucción. Con el tiempo tiene casi todas las páginas y su ejecución se estabiliza.

Localidad de referencia: durante cualquier fase de su ejecución, el proceso solo hace referencia a una fracción
relativamente pequeña de sus páginas.

Conjunto de trabajo: es el conjunto de páginas que esté usando un proceso en un momento dado. Si la memoria disponible
es demasiado reducida para contener todo el conjunto de trabajo, el proceso causará muchos fallos de página y se ejecutará
con lentitud. Se dice que un programa que causa fallos de páginas cada pocas instrucciones está hiperpaginado (thrashing).
La pregunta es ¿qué pasa cuando un proceso se vuelve a traer de la memoria? El proceso causará fallos de páginas hasta
que se haya cargado su conjunto de trabajo. El problema es cuando se producen muchos fallos de páginas, ya que se hace
lenta la ejecución y desperdicia tiempo de CPU.

Muchos sistemas paginados tratan de mantenerse al tanto de cuál es el conjunto de trabajo de cada proceso y se aseguran
de tenerlo en la memoria antes de permitir ejecutar al proceso. Este enfoque se denomina modelo de conjunto de trabajo, y
está diseñado para reducir de forma considerable la tasa de fallos de página. O sea, que lleva el registro del conjunto de
trabajo de los procesos y garantiza su prepaginación reduciendo los fallos de página. Al proceso de cargar las páginas antes
de permitir que se ejecuten los procesos también se le conoce como prepaginación.

Ahora veamos un algoritmo de reemplazo de páginas basado en el conjunto de trabajo. La idea básica es buscar una página
que no esté en el conjunto de
trabajo y desalojarla. En la figura 3-
20 vemos una porción de una tabla
de páginas para cierta máquina.
Ya que sólo las páginas que están
en memoria se consideran como
candidatos para el desalojo, este
algoritmo ignora las páginas que
no están en la memoria. Cada
entrada contiene (al menos) dos
elementos clave de información: el
tiempo (aproximado) que se utilizó
la página por última vez y el bit R
(referenciada). El rectángulo vacío
de color blanco simboliza los
demás campos que no necesita
este algoritmo, como el número de
marco de página, los bits de
protección y el bit M (modificado).
Muy costoso de implementar.

Aspectos de diseño de los sistemas con paginación


Analizaremos otras cuestiones que deben considerar los diseñadores de sistemas operativos para poder obtener un buen
rendimiento de un sistema de paginación.
Políticas de asignación locales vs. globales
Se refiere a como se debe asignar la memoria entre los procesos ejecutables en competencia.

 Algoritmos locales: corresponden de manera efectiva a asignar a cada proceso una fracción fija de la memoria,
entonces si el proceso solicita una página nueva, deberá ser reemplazada por una sus páginas en memoria.


59 /
7
UTN FRC Resumen SOP – Rodrigo Carrión

 Algoritmos globales: asignan marcos de página de manera dinámica entre los procesos ejecutables. Así, el
número de marcos asignados a cada proceso varía con el tiempo.

En general, los algoritmos globales funcionan mejor, en especial cuando el tamaño del conjunto de trabajo puede variar
durante el tiempo de vida de un proceso. Si se usa un algoritmo local y el conjunto de trabajo crece, habrá hiperpaginación,
aun cuando haya muchos marcos de página libres. Si el conjunto de trabajo se reduce, los algoritmos locales desperdician
memoria. Si se usa un algoritmo global, el sistema debe decidir de manera continua cuantos marcos de página asignará a
cada proceso.

Tamaño de página
Para determinar el mejor tamaño de página se requiere balancear varios factores competitivos. Como resultado, no hay un
tamaño óptimo en general.
Hay dos factores que están a favor de un tamaño de página pequeño:

 Un segmento de texto, datos o pila elegido al azar no llenará un número entero de páginas. En promedio, la mitad
de la página final estará vacía. Dicho desperdicio se denomina fragmentación interna. En general, un tamaño de
página grande hará que haya una parte más grande no utilizada del programa que un tamaño de pagina pequeño.
 Si las páginas son muy chicas, implica que los programas van a necesitar muchas y, por lo tanto, una tabla de
páginas grande. Las transferencias hacia y desde el disco son por lo general de una página a la vez, y la mayor
parte del tiempo se debe al retraso de búsqueda y al retraso rotacional, por lo que transferir páginas pequeñas
requiere casi el mismo tiempo que transferir una grande.

Aspectos de implementación
Los implementadores de los sistemas de memoria virtual tienen que elegir entre los principales algoritmos teóricos: entre el
algoritmo de segunda oportunidad y el de envejecimiento, entre la asignación de páginas local o global, y entre la paginación
bajo demanda o la prepaginación.
 Bloqueo de páginas en memoria: bloquear las páginas involucradas en operaciones de E/S en memoria, de
manera que no se eliminen.
 Almacenamiento de respaldo: se reserva un espacio en disco para el intercambio de páginas. Es el área de
intercambio o Swap.
 Demonios de paginación: proceso en segundo plano que está inactivo la mayor parte del tiempo, pero se despierta
en forma periódica para inspeccionar el estado de la memoria. Si hay muy pocos marcos de página libres, el demonio
de paginación empieza a seleccionar páginas para desalojarlas mediante cierto algoritmo de reemplazo de páginas.
Detecta si la página se modificó y establece M=1.

60 /
7
UTN FRC Resumen SOP – Rodrigo Carrión
Segmentación
Consiste en proporcionar a la máquina muchos espacios de direcciones por completo independientes (puede crecer),
llamados segmentos. Cada segmento consta de una sucesión lineal de direcciones, desde 0 hasta cierto valor máximo. Los
segmentos pueden tener longitudes distintas, y por lo general así es. Además, las longitudes de segmento pueden cambiar
durante la ejecución. La longitud de un segmento de pila puede incrementarse cada vez que se meta algo a la pila y
decrementarse cada vez que se saque algo. Debido a que cada segmento constituye un espacio de direcciones separado,
los distintos segmentos pueden crecer o reducirse de manera independiente, sin afectar unos a otros. Si una pila en cierto
segmento necesita más espacio de direcciones para crecer, puede tenerlo, ya que no hay nada más en su espacio de
direcciones con lo que se pueda topar. Desde luego que un segmento se puede llenar, pero por lo general los segmentos
son muy grandes, por lo que esta ocurrencia es rara. Para especificar una dirección en una memoria segmentada, el
programa debe proporcionar una dirección de dos partes: un número de segmento y una dirección dentro del segmento.
Cabe destacar que un segmento es una entidad lógica, de la cual el programador está consciente y la utiliza como unidad
lógica (procedimiento, arreglo o pila, programa principal).
En una memoria segmentada, el usuario está consciente de lo que hay en cada segmento. Por lo general, un segmento no
contendría un procedimiento y una pila, por ejemplo, sino uno o el otro, no ambos. Como cada segmento contiene sólo un
tipo de objeto, puede tener la protección apropiada para ese tipo específico.
 Más fácil compartir y proteger la
información (un segmento podría ser
de sólo ejecución, prohibiendo la
lectura y escritura).
 Separa los datos de los programas.
 Existencia de fragmentación externa.
 Direccionamiento complicado.
 Consumo de tiempo para la
traducción de la dirección.
 El programador define los
segmentos.

Paginación vs. Segmentación


La implementación de segmentación difiere de la
paginación de una manera esencial: las páginas
tienen un tamaño fijo y los segmentos no.

Algunas veces la segmentación y la paginación se


combinan para proporcionar una memoria virtual
bidimensional.

61 /
7
UTN FRC Resumen SOP – Rodrigo Carrión

Unidad Nº5 – Entrada / Salida


Interrupciones
Interrupción: Prácticamente todos los computadores proporcionan un mecanismo mediante el cual otros módulos (E/S y
memoria) pueden interrumpir la ejecución normal del procesador.
Las interrupciones constituyen una manera de mejorar la utilización del procesador, ya que permiten que el procesador
ejecute otras instrucciones mientras se realiza una operación de E/S.

Funciones de interrupciones
 Permiten que el procesador ejecute otras instrucciones mientras se realiza una operación de E/S
 Mejoran la eficiencia del procesamiento

Clases de interrupciones
 De programa: generadas por alguna condición que se produce como resultado de la ejecución de una instrucción
(división por cero, desbordamiento, etc.).
 De reloj: generadas por un reloj interno del procesador. Permite al SO realizar ciertas funciones de forma regular.
 De E/S: generadas por el controlador de E/S (para indicar que terminaron operaciones de E/S o errores).
 Por fallo del hardware: generadas por fallos tales como un corte de energía o un error de paridad en memoria.

Las interrupciones y el ciclo de instrucción


Con las interrupciones, el procesador se puede dedicar a la ejecución de otras instrucciones mientras una operación de E/S
está en proceso. Cuando el dispositivo externo esté disponible, es decir, cuando esté preparado para aceptar más datos
desde el procesador, el módulo de E/S de dicho dispositivo enviará una señal de solicitud de interrupción al procesador.
Éste responde suspendiendo la operación del programa en curso y bifurcándose a un programa que da servicio al dispositivo
de E/S en particular, conocido como rutina de tratamiento de la interrupción, reanudando la ejecución original después de
haber atendido al dispositivo. El procesador y el SO son los responsables de suspender el programa de usuario y reanudarlo
después en el mismo punto.

Para que sean posibles las interrupciones, se añade un ciclo de interrupción al ciclo de instrucción. En el ciclo de interrupción,
el procesador comprueba si ha
ocurrido alguna interrupción. Si no
hay interrupciones pendientes, el
procesador continúa con el ciclo
de lectura. Si hay una interrupción
pendiente, el procesador
suspende la ejecución del
programa en curso y ejecuta una
rutina de tratamiento de la
interrupción. El programa de
tratamiento de la interrupción
generalmente forma parte del
SO. Cuando termina la rutina, el
procesador puede reanudar la ejecución del programa de usuario en el punto en que sucedió la interrupción.

Tratamiento de las interrupciones


Una interrupción desencadena una serie de sucesos, tanto en el hardware del procesador como en el software. Cuando un
dispositivo de E/S completa una operación de E/S, se produce en el hardware la siguiente secuencia de sucesos:

1. El dispositivo emite una señal de interrupción al procesador.


2. El procesador finaliza la ejecución de la instrucción en curso antes de responder a la interrupción.
3. El procesador envía una señal de reconocimiento al dispositivo que generó la interrupción. Permite al dispositivo
suprimir la señal de interrupción.
4. El procesador necesita ahora prepararse para trasferir el control a la rutina de interrupción. Por lo tanto, es preciso
1/6
UTN FRC Resumen SOP – Rodrigo Carrión
salvar la información necesaria para abandonar la ejecución del programa en curso. Lo requerido es la palabra de
estado del programa (PSW) y la ubicación de la próxima instrucción a ejecutar. Graba la información del proceso
actual.
5. El procesador transfiere el control a la rutina de tratamiento de interrupción.
6. En este punto, se necesita salvar el contenido de los registros del procesador, ya que estos pueden ser utilizados
por la rutina de tratamiento de la interrupción.
7. La rutina de tratamiento de interrupción procesa la interrupción examinando el estado de la operación de E/S o al
evento que causó la interrupción.
8. Cuando se completa el tratamiento de la interrupción, se recuperan los valores de los registros que se salvaron y se
restauran sobre los registros del procesador.
9. La operación final es restaurar los valores de la PSW y el contador de programa. Como resultado, la próxima
instrucción a ser ejecutada será el programa interrumpido previamente (se continúa con el programa interrumpido).

Interrupciones múltiples
Hay dos enfoques para tratar las interrupciones múltiples:

 Tratamiento secuencial: consiste en inhabilitar las interrupciones mientras se esté procesando una. Una
interrupción inhabilitada quiere decir que el procesador ignorará la señal de interrupción, que quedará pendiente y
será comprobada por el procesador después de que éste habilite las interrupciones. La limitación de este enfoque
es que no tiene en cuenta las prioridades relativas o necesidades críticas de tiempo.
 Definición de prioridades: consiste en definir prioridades para las interrupciones y permitir que una interrupción de
una prioridad más alta puede interrumpir a la rutina de tratamiento de una interrupción de prioridad más baja.

2/6
UTN FRC Resumen SOP – Rodrigo Carrión
Multiprogramación
Aún con el uso de interrupciones, puede que un procesador no sea aprovechado eficientemente. Si el tiempo necesario para
completar una operación de E/S es mucho mayor que el código del usuario entre llamadas de E/S (situación habitual),
entonces el procesador va a estar desocupado durante una gran parte del tiempo.

Una solución a este problema es permitir a varios programas de usuario estar activos al mismo tiempo. Cuando el procesador
tiene que tratar con una serie de programas, el orden en que estos se ejecutan dependerá de su prioridad relativa y de si
están esperando una E/S. Cuando un programa es interrumpido y se transfiere el control a la rutina de tratamiento, una vez
que ésta haya terminado, puede que no se devuelva el control inmediatamente al programa que estaba en ejecución al
momento de la interrupción, en cambio, el control puede transferirse a algún otro programa pendiente que tenga mayor
prioridad.

Dispositivos de Entrada/Salida
Tipos de dispositivos
Los dispositivos externos pueden clasificarse en dos categorías:
Dispositivos de Bloque:
 Almacena información en bloques de tamaño fijo (512b hasta 32Kb).
 Se puede leer o escribir un bloque en forma independiente
Dispositivos de Carácter:
 Envía o recibe un flujo de caracteres
 No es direccionable, no tiene operación de búsqueda

Controlador de dispositivos (Drivers)


Una unidad de E/S tiene dos componentes: componente mecánico, es el dispositivo mismo; y un componente
electrónico, el controlador. Un controlador puede manejar varios dispositivos idénticos, pero cada dispositivo puede
tener su propio controlador.
El SO accede al dispositivo por medio del controlador. Su función es convertir un flujo de bits en serie en un bloque de bytes,
almacenado en su buffer, y luego copiar ese bloque en la memoria principal.

Funcionamiento
1. El SO escribe comandos en los registros del controlador.
2. El controlador acepta el comando, lo verifica y ejecuta.
3. La CPU se libera y deja trabajando al controlador.
4. Al finalizar el comando, el controlador emite una interrupción avisando que terminó la operación.
5. La CPU controla y lee los registros del controlador.

Organización del sistema de la E/S


Técnicas de comunicación de la E/S
 E/S programada.
 E/S dirigida por interrupciones.
 DMA (acceso directo a memoria).

3/6
UTN FRC Resumen SOP – Rodrigo Carrión
E/S programada
Cuando el procesador está ejecutando un programa y encuentra una instrucción de E/S, ejecuta dicha instrucción, enviando
una orden al módulo apropiado de E/S. El módulo llevará a cabo la acción requerida y activará los bits apropiados del registro
de estado de E/S., pero no avisa al procesador, ni lo interrumpe. El procesador es el responsable de comprobar
periódicamente el estado del módulo de E/S hasta saber que se completó la operación.

El procesador es responsable de extraer los datos de la memoria ram en una operación de salida y de almacenarlos en ella
en una operación de entrada. El software de E/S se escribe de manera que el procesador ejecuta instrucciones que le dan
control directo de la operación de E/S, incluyendo comprobar el estado del dispositivo, enviar un mandato de lectura o de
escritura, y transferir los datos.

El problema de ésta técnica es que el procesador tiene que esperar mucho tiempo a que el módulo de E/S esté listo. El
procesador, mientras espera, interroga repetidamente por el estado del módulo de E/S, degradando el rendimiento del
sistema.

E/S dirigida por interrupciones


Esta técnica consiste en que el procesador cuando envía una orden de E/S al módulo, se dedique a hacer otra cosa, y no
perder tiempo esperando. El módulo de E/S envía una interrupción cuando finaliza la operación. Por último, el procesador
ejecuta la transferencia de los datos y reanuda el procesamiento anterior.

Aunque es más eficiente que la E/S programada ya que elimina la espera innecesaria, sin embargo, todavía sigue
necesitando la intervención del procesador para la transferencia de datos.

Desventaja de que el procesador participe en la transferencia de datos en la E/S:

 La velocidad de transferencia de E/S está limitada por la velocidad con la que el procesador puede dar servicio a un
dispositivo.
 Deben ejecutarse una serie de instrucciones en cada transferencia de E/S.

DMA (acceso directo a memoria)


Es una técnica de E/S más eficiente que las anteriores. La función de DMA se puede llevar a cabo por un módulo separado
sobre el bus del sistema o puede estar incorporada dentro de un módulo de E/S.

Cuando el procesador desea leer o escribir un bloque de datos, emite una orden hacia el módulo de DMA, enviándole la
siguiente información:

 Si lo que solicita es una lectura o escritura.


 La dirección de memoria del dispositivo involucrado.
 La dirección inicial de memoria desde la que se va a leer o a escribir.
 El número de palabras a leer o escribir.

El procesador continúa entonces con otro trabajo. Habrá delegado la operación de E/S en el módulo DMA. El módulo DMA,
transfiere el bloque entero, una palabra por vez, directamente hacia o desde la memoria, sin pasar por el procesador. Cuando
se completa la transferencia, el módulo DMA envía una señal de interrupción al procesador. De esta manera, el procesador
se involucra sólo al inicio y al final de la transferencia.

El módulo DMA necesita tomar el control del bus para transferir los datos con la memoria, y puede ocurrir que el procesador
necesite el bus. En este caso el procesador tiene que esperar por el módulo DMA (hace una pausa durante un ciclo del bus,
no es una interrupción). Es el método utilizado actualmente.

4/6
UTN FRC Resumen SOP – Rodrigo Carrión

Evolución de las funciones de E/S


1. El procesador controla directamente los dispositivos periféricos.
2. Se añade un controlador o módulo de E/S. El procesador utiliza E/S programada sin interrupciones, y parece aislarse
de los detalles específicos de las interfaces con dispositivos externos.
3. Igual que el punto anterior, pero utilizando interrupciones. Se incrementa la eficiencia, ya que el procesador no
tiene que esperar a que termine la operación de E/S.
4. Se utiliza la técnica DMA. El procesador ya no interviene en la transferencia (sólo al principio y al final).
5. El módulo de E/S pasa a ser un procesador separado con un conjunto de instrucciones especializadas para E/S.
6. El módulo de E/S pasa a tener su propia memoria local, convirtiéndose en una computadora independiente.

A medida que sigue la evolución, el procesador se liberando cada vez más de las tareas relacionadas con la E/S, mejorando
así el rendimiento.

Aspectos de diseño en los sistemas operativos


Objetivos del diseño
Hay dos objetivos primordiales en el diseño del servicio de E/S: eficiencia y generalidad.

La eficiencia es importante porque operaciones de E/S constituyen, a menudo, un cuello en los sistemas informáticos. La
mayoría de los dispositivos de E/S son extremadamente lentos en comparación con la memoria principal y el procesador.
Una manera de abordar este problema es el uso de la multiprogramación, que permite que algunos procesos esperen en
operaciones de E/S mientas otro proceso se está ejecutando.

El segundo gran objetivo es la generalidad. En interés de la simplicidad y la exención de errores, será deseable gestionar
todos los dispositivos de una manera uniforme. Debido a la diversidad de características de los dispositivos, en la práctica
es difícil conseguir una auténtica generalidad. Lo que puede hacerse es emplear un enfoque jerárquico y modular para el
diseño las funciones de E/S.

Independencia del dispositivo: manejo de comandos, operaciones que sean comunes para todos o algunos dispositivos.
5/6
UTN FRC Resumen SOP – Rodrigo Carrión
 Manejo de errores: soluciones a nivel de hardware. Si se produce un error, no se avisa inmediatamente al usuario,
sino que se intenta realizar la operación de nuevo, si después de varios intentos el problema persiste, ahí se informa
al usuario.
 Asignación de dispositivos:
o Dedicados: una vez asignado un dispositivo a un proceso, no se lo puede quitar (ejemplo: impresora).
o Compartidos: discos.
o Virtuales: transforma los dispositivos dedicados en compartidos (ejemplo: spooling de impresión).

Estructura lógica del sistema de E/S


La filosofía jerárquica propone que las funciones del SO deben
separarse según su complejidad, sus rangos característicos de
tiempo y su nivel de abstracción. Con este enfoque, se llega a una
organización del SO en un conjunto de niveles (o capas). Cada capa
realiza una parte de un subconjunto de las funciones necesarias del
SO. Cada capa cuenta con la capa inferior para realizar funciones
más primitivas y para ocultar detalles de estas funciones. Asimismo,
cada capa ofrece servicios a la capa superior. Las capas deben
definirse de forma que los cambios en una capa no provoquen
cambios en otras.

a) Manejador de Interrupciones

 Los procesos se bloquean hasta que finalice la operación de E/S


b) Manejador de dispositivo

 Acepta solicitudes de los niveles superiores

 Emite, ejecuta y verifica comandos del controlador

 Procesa interrupciones

 Cada manejador controla un tipo de dispositivo

 Manejador de disco à conocimiento de sectores, pistas, cilindros, cabezas, movimientos del


brazo del disco, etc.

 Administra la cola de solicitudes pendientes

 Escribe los comandos en los registros del controlador


c) Software de E/S independiente del dispositivo: Ejecuta funciones de E/S comunes a todos los dispositivos
Funciones:

 Sincronización de los manejadores de dispositivo

 Nombre de los dispositivos

 Protección de los dispositivos

 Manejo de buffers

 Administración de bloques libres

 Asignación y liberación de dispositivos de uso exclusivo (impresora)

 Informe de errores (bloques defectuosos)


d) Software a nivel usuario

 Administración de dispositivos (spooling de impresión)

 Administración del demonio de impresión

 Compartición de dispositivos en entornos de red

6/6
UTN FRC Resumen SOP – Rodrigo Carrión

Almacenamiento intermedio de la E/S (Buffering)


Buffering: técnica que soluciona los picos en la demanda de E/S.

Como ya sabemos, la lectura o escritura en dispositivo de E/S es lento, por lo que si un programa de usuario necesita leer
datos de una entrada o escribirlos en una salida y debiera, por ejemplo, leer los datos directamente del dispositivo de entrada,
esto produciría que el programa quede colgado esperando que la lenta operación de lectura termine.

Para evitar este problema lo que se hace es que se lea de los dispositivos de entrada y esos datos leídos se vallan
almacenando en bloques en un almacenamiento intermedio, para que luego el programa de usuario lea los datos de ese
almacenamiento intermedio o buffer.

Este almacenamiento intermedio ofrecido por los sistemas operativos se utiliza para mejorar el rendimiento del sistema.
Para estudiarlo mejor es importante hacer una distinción entre dos tipos de dispositivos: dispositivos orientados a bloque;
son los que almacenan la información en bloques, normalmente de tamaño fijo, haciendo las transferencias de un bloque
cada vez (discos y cintas). Los dispositivos orientados a flujo transfieren los datos como una serie de bytes. No poseen
estructura de bloques (terminales, impresoras, puertos de comunicación, mouse, módem, etc.).

Memoria intermedia sencilla


Cuando un proceso de usuario realiza una solicitud de E/S, el SO le asigna a la operación un espacio en la parte del sistema
de la memoria principal. Para los dispositivos orientados a bloque, las transferencias de entrada se realizan en el espacio
del sistema (memoria principal). Cuando se ha completado la transferencia, el proceso mueve el bloque al espacio del
usuario y solicita otro bloque inmediatamente. Esta técnica se llama lectura por adelantado o entrada anticipada. El proceso
de usuario puede procesar un bloque de datos mientras se está leyendo el siguiente, aumentando la velocidad.

Esta técnica complica al SO ya que debe guardar constancia de las asignaciones


de memorias intermedias del sistema a procesos de usuario. Se pueden aplicar
consideraciones similares a la salida con dispositivos
orientados a bloques. Cuando se transmiten datos a
un dispositivo, deben copiarse primero del espacio de
usuario a un espacio del sistema, desde donde serán
finalmente escritos.

Para la E/S con dispositivos orientados a flujo, el esquema de memoria intermedia sencilla puede aplicarse por líneas o por
bytes.

Memoria intermedia doble


Se puede realizar una mejora sobre la memoria intermedia sencilla asignando a
la operación dos almacenes intermedios del sistema.
De esta forma, un proceso puede transferir datos
hacia (o desde) una memoria intermedia mientras
que el S.O. vacía (o rellena) el otro. Se asigna a la
operación dos buffers intermedios del sistema.

Memoria intermedia circular


Si preocupa el rendimiento de un proceso determinado, sería deseable que las
operaciones de E/S fueran capaces de ir al ritmo del
proceso. La memoria intermedia doble puede ser
inapropiada si el proceso lleva a cabo rápidas
ráfagas de E/S. En este caso, el problema puede
mitigarse usando más de dos memorias
intermedias. Como se emplean más de dos, el
conjunto de memorias intermedias se conoce como
memoria intermedia circular. Permite que las operaciones de E/S se ejecuten a
la misma velocidad que el proceso

7/6
UTN FRC Resumen SOP – Rodrigo Carrión

Planificación de discos
Parámetros de rendimiento del disco
 Tiempo de búsqueda: es el tiempo necesario para mover el brazo del disco hasta la pista solicitada. Tiempo de
búsqueda = tiempo de arranque + tiempo para recorrer las pistasTiempo de búsqueda medio -> 5 a 10 ms.
 Retardo de giro: es el tiempo que tarda en llegar el sector hasta la cabeza del disco. Velocidad de rotación entre
5.400 y 10.000 rpm. Tiempo de acceso = tiempo de búsqueda + retardo de giro.
 Tiempo de transferencia: es el tiempo que tarda en realizar la operación de lectura o escritura. Depende del número
de bytes a transferir, el número de bytes por pista y la velocidad de rotación en revoluciones por segundo.

Políticas de planificación de discos


Las políticas de planificación de discos tratan de reducir el movimiento del brazo del disco. Algunas son:
 Primero en entrar, primero en salir (FIFO): es la manera más sencilla de planificación, lo que significa que los
elementos se procesan de la cola en un orden secuencial. Esta estrategia tiene la ventaja de ser justa porque las
solicitudes son servidas en el orden en que llegaron. El brazo puede desplazarse significativamente.



 Primero el tiempo de servicio más corto (SSTF, Shortest Service Time First): es elegir la solicitud de E/S de
disco que requiera el menor movimiento posible del brazo del disco desde su posición actual. De este modo, siempre
es elige procurando el mínimo tiempo de búsqueda.


8/6
UTN FRC Resumen SOP – Rodrigo Carrión
 SCAN: el brazo solo se puede mover en un sentido, resolviendo todas las solicitudes pendientes en su ruta, hasta
que alcance la última pista o hasta que no haya más solicitudes en esa dirección. Luego, comienza a realizar el
rastreo en sentido opuesto., volviendo a recoger todas las solicitudes en orden. Esta política favorece a los trabajos
con solicitudes de pistas cercanas a los cilindros más interiores y exteriores, así como a los últimos en llegar.



 C-SCAN (SCAN circular): igual al SCAN pero restringe el rastreo a una sola dirección. Así, cuando se haya visitado
la última pista en un sentido, el brazo vuelve al extremo opuesto del disco y comienza a recorrerlo de nuevo, lo que
reduce el retardo máximo sufrido por las nuevas solicitudes.

Selección de un Algoritmo de planificación de Disco


 SSTF es común y tiene una atracción natural.

 SCAN y C-SCAN se desempeñan mejor para sistemas que tienen carga pesada sobre el disco.

 El desempeño depende del número y tipos de requerimientos.


 El servicio de los requerimientos al disco pueden ser influenciado por el método de asignación de archivos.

 El algoritmo de planificación de disco debe ser escrito como un módulo separado del SO, permitiéndose ser
reemplazado por otros algoritmos si es necesario.

 Tanto SSTF o LOOK es una elección razonable como algoritmo por defecto.
9/6
UTN FRC Resumen SOP – Rodrigo Carrión

RAID
La industria ha acordado un esquema estándar para el diseño de base de datos sobre múltiples discos, llamado RAID
(Vector redundante de discos independientes). Sistema de almacenamiento de datos que utiliza múltiples unidades de
almacenamiento de datos (discos duros o SSD) entre los que se distribuyen o replican los datos. RAID combina varios
discos duros en una sola unidad lógica. Así, en lugar de ver varios discos duros diferentes, el sistema operativo ve uno solo.

Características
1. Conjunto de varios discos físicos que forman una única unidad lógica.
2. Los datos se distribuyen entre los diferentes discos.
3. Redundancia utilizada para la recuperación de datos en caso de fallos.
4. Se reemplaza un disco de gran capacidad por varios discos físicos.
5. Mejor rendimiento debido al acceso simultaneo de datos ubicados en discos diferentes.
6. Existen siete niveles de RAID, de 0 a 6 (arquitecturas de diseño diferentes).

Niveles
RAID 0 (sin redundancia)
Este nivel no es un miembro verdadero de la familia RAID, porque no incluye redundancia para mejorar la fiabilidad.

En RAID 0, los datos del sistema están distribuidos a lo largo de todo el vector de discos. Esto tiene una
notable ventaja sobre el uso de un solo disco grande: si hay pendientes dos solicitudes de E/S distintas en
que solicitan dos bloques de datos distintos, entonces existe una buena oportunidad para que los bloques
solicitados estén en discos diferentes. De este modo, se pueden realizar en paralelo las dos solicitudes
reduciendo el tiempo en la cola de E/S.
El disco lógico de este esquema RAID 0, los datos están distribuidos en bandas (strips) a lo largo de los
discos disponibles; estas bandas pueden ser bloques físicos, sectores o alguna otra unidad. Las bandas
se asignan de forma rotatoria a discos físicos consecutivos en el vector RAID. A un conjunto de bandas
lógicamente consecutivas tal que a cada miembro del vector de discos se le asigna exactamente una banda
se le llama lista (stripe). La ventaja de esta distribución es que, si una única petición de E/S consiste de
múltiples bandas contiguas lógicamente, se pueden manejar en paralelo hasta n bandas de esta petición, reduciendo
considerablemente el tiempo de transferencia de E/S.

Es ideal para aplicaciones que requieren alto rendimiento para datos no críticos, para una elevada capacidad de transferencia
de datos y para una elevada tasa de peticiones de E/S.

RAID 1 (mirroring)
RAID 1 se diferencia de los niveles RAID 2 hasta el 6 en el modo en que consigue la redundancia. En RAID 1 la redundancia
se consigue por el simple medio de duplicar todos los datos. Los datos se dividen igual que en RAID 0. Pero en este caso,
cada banda lógica se asigna a dos discos físicos separados, por lo que cada disco del vector tiene un disco espejo que
contiene los mismos datos. Cada solicitud de escritura se actualiza en ambos discos en paralelo.

Este tipo de organización tiene varios aspectos positivos:

- Una solicitud de lectura puede servirse cualquiera de los dos discos que contienen los
datos solicitados, aquel que implique un valor mínimo del tiempo de búsqueda más la
latencia rotacional.
- Una solicitud de escritura requiere ambas bandas, pero esto se puede hacer en paralelo.
Por tanto, el rendimiento de la escritura lo establece el de la escritura más lenta (es decir,
el que implica mayor valor del tiempo de búsqueda más la latencia rotacional).
- La recuperación de fallos es sencilla. Cuando una unidad falla, los datos están todavía
accesibles desde la segunda unidad.

La principal desventaja de RAID 1 es el coste, requiere el doble de espacio de disco que el correspondiente al disco lógico
proporcionado. Debido a esto, una configuración RAID 1 está probablemente limitada a dispositivos que almacenan
software y datos del sistema u otros ficheros altamente críticos.

En un entorno de transacciones, se puede conseguir altas tasas de solicitudes de E/S si la mayor parte de las solicitudes es
de lectura. Es ideal para almacenamiento del SO y de datos críticos.
10 /
6
UTN FRC Resumen SOP – Rodrigo Carrión
RAID 2
Los niveles RAID 2 y 3 utilizan una técnica de acceso paralelo. En un vector de acceso
paralelo, todos los discos participan en la ejecución de cada solicitud de E/S.
Normalmente, el eje de las unidades individuales está sincronizado, por lo que cada
cabeza de disco está en la misma posición de cada disco en un instante dado.

En el caso de RAID 2 y 3 existe también la división de datos. En este caso, las bandas son muy pequeñas, a menudo tan
pequeñas como un único byte o palabra. En RAID 2, se calcula un código de corrección de errores a lo largo de los bits
correspondientes sobre cada disco de datos, y los bits del código se almacenan en las respectivas posiciones de bit sobre
los discos de paridad múltiple. Normalmente, se utiliza código Hamming, que es capaz de corregir errores de un solo bit y
detectar errores de dos bits.

RAID 2 solamente es una buena elección en un entorno efectivo en el que se produjeran muchos errores de disco. Dada la
alta fiabilidad de los discos y de las unidades de disco, RAID 2 está superado y ya no se implementa.

RAID 3 (paridad por intercalación de bits)


Se organiza de una forma similar a RAID 2, diferenciándose en que requiere solo un disco
redundante, no importa el tamaño del vector de discos. RAID 3 emplea acceso paralelo, con los
datos distribuidos en pequeñas bandas. En lugar de un código de corrección de errores, se calcula
un solo bit de paridad para el conjunto de bits en la misma posición de todos los discos de datos.

Teniendo en cuenta que los datos están divididos en pequeñas bandas, puede alcanzar una taza de transferencia de datos
muy alta. Por otro lado, solo se puede ejecutar en cada instante una sola solicitud de E/S (bajo rendimiento en sistemas de
transacciones).

RAID 4
Los niveles RAID 4 al 6 usan una técnica de acceso independiente. Cada disco opera
de manera independiente, por lo que se pueden satisfacer en paralelo solicitudes de
E/S individuales. Son más apropiados para aplicaciones que requieran tasas altas de
solicitudes de E/S, y son relativamente menos apropiados para aplicaciones que
requieran altas tasas de transferencia de datos.

En el caso de RAID 4 al 6, las bandas son relativamente grandes. Con RAID 4, se


calcula una banda de la paridad bit a bit a lo largo de las bandas correspondientes de
cada disco de datos, y los bits de paridad se almacenan en la banda correspondiente del disco de paridad.

Implica una penalización en la escritura de E/S, ya que no solo hay que escribir los datos, sino también los bits de paridad
correspondientes. Posee cuello de botella en el disco de paridad. No se usa en la práctica.

RAID 5 (paridad por intercalación distribuida de bloques)


RAID 5 está organizado de forma similar a RAID 4. La diferencia es que distribuye las
bandas de paridad a través de todos los discos. Para un vector de n discos, la banda de
paridad está sobre un disco distinto para las n primeras bandas y así sucesivamente.
Utiliza bandas grandes.

La distribución de las bandas de paridad a través de todos los discos evita el potencial
cuello de botella en la E/S que hay en RAID 4 que tiene un solo disco de paridad.

RAID 6 (paridad doble por intercalación distribuida de bloque)


En este esquema se realizan dos cálculos distintos de paridad, y se almacenan
en bloques independientes de diferentes discos. Así, un vector RAID 6 cuyos
datos de usuario requieran N discos está formado por N + 2 discos.

La ventaja de RAID 6 es que ofrece disponibilidad de datos extremadamente


alta.
Deberían fallar tres discos para hacer que los datos no estuvieran disponibles.
Por otro lado, sufre una importante penalización de escritura, porque cada escritura afecta a dos bloques de paridad.
11 /
6
UTN FRC Resumen SOP – Rodrigo Carrión

Caché de disco
El término memoria caché se aplica normalmente a una memoria más pequeña y más rápida que la memoria principal y que
se sitúa entre ésta y el procesador.

El mismo concepto puede aplicarse a la memoria de disco. Concretamente, una caché de disco es una memoria intermedia
situada en la memoria principal para sectores de disco. La caché contiene una copia de algunos sectores del disco. Cuando
se hace una solicitud de E/S para un sector específico, se comprueba si el sector está en la cache de disco. Si está, la
solicitud toma los datos de la caché. Si no, se lee el sector solicitado en el disco y se coloca en la caché, quedando disponible
para futuras solicitudes.

Consideraciones sobre el diseño


 Solicitud de E/S: la caché de disco debe entregarse al proceso que los solicitó:
o Los bloques de datos se trasfieren desde la caché a la memoria asignada al proceso de usuario.
o Usando la capacidad de memoria compartida y pasando un puntero a la entrada apropiada de la caché del
disco
 Estrategia de reemplazo: establece que bloque de la caché va a ser reemplazado.
o LRU (usado menos recientemente): bloque sin referencias durante la mayor cantidad de tiempo. Más usado.
o LFU (usado menos frecuentemente): bloque con menor cantidad de referencias.
 Política de escritura:
o Por demanda: los sectores se sustituyen sólo cuando se necesita una entrada en la tabla.
o Planificada previamente: los sectores se sustituyen cada vez que se libera un conjunto de entradas.
o Cada vez que el bloque se actualice
o Solo cuando se reemplaza el bloque
12 /
6
UTN FRC Resumen SOP – Rodrigo Carrión

Unidad Nº6 – Seguridad


Amenazas a la seguridad
La seguridad de computadoras y redes aborda los siguientes cuatro requisitos:

 Secreto: la información debe ser accedida solamente por partes autorizadas.


 Integridad: los elementos pueden ser modificados sólo por
partes autorizadas.
 Disponibilidad: los elementos deben estar disponibles
para las partes autorizadas.
 Autenticidad: verificar la identidad de un usuario.

Tipos de amenazas
 Interrupción: se destruye un elemento del sistema o se
hace inaccesible o inútil. Es un ataque a la disponibilidad.
 Interceptación: una parte no autorizada consigue acceder
a un elemento. Este es un ataque al secreto.
 Modificación: una parte no autorizada no solo consigue
acceder, sino que falsifica un elemento. Este es un ataque
a la integridad.
 Invención: una parte no autorizada inserta objetos falsos
en el sistema. Este es un ataque a la autenticidad.

Componentes de un sistema informático


 Hardware:
o Amenaza a la disponibilidad: comprenden daños accidentales y deliberados a los equipos, así como el hurto.
Hacen falta medidas de seguridad físicas y administrativas para hacer frente a estas amenazas.
 Software:
o Amenaza a la disponibilidad: el software es alterado o dañado para inutilizarlo. Se puede combatir con
copias de seguridad (backups).
o Amenaza al secreto: se realizan copias no autorizadas del software. Se combate con licencias, registros.
o Amenaza a la integridad/autenticidad: un programa sigue funcionando, pero se comporta de forma
diferente a lo normal (virus, ataques). Se pueden usar antivirus.
 Datos:
o Amenaza a la disponibilidad: destrucción de archivos (accidentalmente o mal intencionado).
o Amenaza al secreto: lectura no autorizada de bases de datos y archivos. Un análisis de datos estadísticos
puede revelar datos ocultos.
o Amenaza a la integridad: modificación de archivos existentes o invención de nuevos.
 Redes y líneas de comunicaciones:
o Amenazas pasivas:
• Revelación del contenido de mensajes
• Análisis de trafico
o Amenazas activas: suponen alteraciones del flujo de datos o la creación de un flujo falso. Se pueden dividir
en cuatro categorías:
 Suplantación: una entidad se hace pasar por otra. Un usuario se hace pasar por otro.
 Repetición: incluye la captura previa de un dato único y la subsiguiente retransmisión para
producir un efecto no autorizado.
 Modificación de mensajes: significa que se modifica una porción de un mensaje legítimo o que los
mensajes se retrasan o se desordenan para conseguir un efecto no autorizado.
 Privación de servicio: impide o inhibe el uso normal o la gestión de servicios de comunicaciones.
Esta agresión puede tener como objetivo suprimir mensajes a un destinatario en particular o
interrumpir toda una red.

El objetivo frente a los ataques activos es detectarlos y recuperarse de cualquier interrupción o retardo.
13 /
6
UTN FRC Resumen SOP – Rodrigo Carrión

Protección
La introducción a la multiprogramación originó la posibilidad de compartir recursos entre los usuarios. La necesidad de
compartir recursos introdujo la necesidad de protección. Un sistema operativo puede ofrecer protección de las siguientes
maneras:

 Sin protección alguna: apropiada cuando se ejecutan procedimientos delicados en distintos instantes.
 Aislamiento: cada proceso opera separadamente de los demás.
 Compartición completa o sin compartición: el propietario de un objeto lo declara como público o privado.
 Compartición vía limitaciones de acceso: el SO comprueba la licencia de cada acceso de un usuario específico
a un objeto. Actúa como guardián o vigilante, entre los usuarios y los objetos, asegurando que sólo se producen
los accesos autorizados.
 Acceso vía capacidades dinámicas: creación dinámica de derechos de acceso a los objetos.
 Uso limitado de un objeto: esta forma de protección limita no solo el acceso a un objeto, sino también el uso a que
se puede dedicar dicho objeto. Por ejemplo, se puede dejar ver un documento delicado a un usuario, pero no
imprimirlo.

Protección de la memoria
La separación del espacio de memoria de los diversos procesos se lleva a cabo fácilmente con un esquema de memoria
virtual. La segmentación, paginación o la combinación de ambas proporcionan un medio eficaz de gestión de la memoria
principal.

 Aislamiento total: el SO simplemente debe asegurar que cada segmento o página es accesible solo para el proceso
al que está asignada. Esto se lleva a cabo fácilmente exigiendo que no haya entradas duplicadas en las tablas de
páginas o segmentos.
 Compartimiento: el mismo segmento o página puede ser referenciado en más de una tabla. Este tipo de
compartimiento se consigue mejor en un sistema que soporta segmentación o combinación de segmentación o
paginación

Control de acceso orientado al usuario (autenticación)


La técnica más habitual de control de acceso al usuario en un sistema de tiempo compartido o en un servidor es la conexión
del usuario, que requiere un identificador de usuario (ID) y una contraseña. Este esquema ID/contraseña es un método
notablemente poco fiable de control de acceso al usuario. Los usuarios pueden olvidar sus contraseñas y pueden revelarlas
accidental o deliberadamente. Es una técnica que está sujeta a los intentos de penetración.

El control de acceso a usuario en entornos distribuidos puede ser centralizado o descentralizado:

 Control de acceso centralizado: la red proporciona un servicio de conexión para determinar a quien se le permite
usar la red y a qué se le permite conectarse.
 Control de acceso descentralizado: trata la red como un enlace de comunicación transparente, y el mecanismo de
acceso habitual se realiza por parte del ordenador destino.

Control de acceso orientado a los datos (autorización)


Después de una conexión con éxito, al usuario se le habrá concedido el acceso a uno o más servidores y aplicaciones.
Asociado con cada usuario, puede haber un perfil de usuario que especifique las operaciones y los accesos a archivos
permisibles.

Un modelo general de control de acceso ejercido por un sistema gestor de archivos o bases de datos es el de una matriz
de acceso. Los elementos básicos del modelo son los siguientes:

 Sujeto: entidad capaz de acceder a un objeto (proceso,


usuario, etc.).
 Objeto: cualquier cosa cuyo acceso deba controlarse
(archivos, programas, segmentos de memoria, etc.).
 Derecho de acceso: la manera en que un sujeto
accede a un objeto (leer, escribir, ejecutar).

14 /
6
UTN FRC Resumen SOP – Rodrigo Carrión

Una de las dimensiones de la matriz consiste en los sujetos identificados que pueden intentar acceder a los datos (usuarios
o grupos de usuarios). La otra dimensión enumera a los objetos a los que se puede acceder. Cada entrada de la matriz
indica los derechos de acceso de ese sujeto a ese objeto.

La matriz puede descomponerse en columnas para obtener listas de control de acceso. De esta forma por cada objeto,
hay una lista de control de acceso que muestra los usuarios y sus derechos de acceso.

Con la descomposición por filas se obtienen etiquetas de capacidad de acceso. Ésta especifica los objetos y las
operaciones autorizadas para un usuario. Cada usuario tiene un número de etiquetas y puede estar autorizado o no para
prestarlas o concederlas a otros usuarios.

Intrusos
Una de las dos amenazas más conocidas a la seguridad (la otra es la de los virus) es el intruso, conocido en general como
pirata informático, hacker o cracker.

Tipos de intrusos
 Suplantador: persona no autorizada a utilizar el sistema y se hace pasar por otro usuario legítimo. Es un usuario
externo.
 Abusador: un usuario legítimo que accede a datos, programas o recursos a los que no está autorizado, o estando
autorizado para dicho acceso utilizar sus privilegios de forma maliciosa. Es un usuario interno.
 Usuario clandestino: un individuo que está a cargo del control de la supervisión del sistema y utiliza ese control
para evadir la auditoría y el control de acceso o para suprimir la recopilación de datos. Puede ser externo o interno.

Técnicas de intrusión
El objetivo de los intrusos es obtener acceso a un sistema o aumentar el conjunto de privilegios accesibles en un sistema.
En general, esto requiere que el intruso obtenga información que debería estar protegida. En la mayoría de los casos, esta
información está en forma de contraseña de usuario.

Normalmente, un sistema debe mantener un archivo que asocia una contraseña a cada usuario autorizado. El archivo de
contraseñas puede protegerse de dos maneras:

 Cifrado unidireccional: se almacena una forma cifrada de la contraseña de usuario. Ej: UNIX
 Control de acceso: el acceso a los archivos de contraseñas está limitado a muy pocos usuarios.

Técnicas de obtención de contraseñas


1. Probar las contraseñas por defecto del sistema. Muchos administradores no cambian estos valores.
2. Probar todas las contraseñas cortas (de uno a tres caracteres).
3. Probar palabras del diccionario del sistema o de una lista de contraseñas probables.
4. Reunir información sobre datos personales del usuario (nombre, nombre de familiares, aficiones, etc.).
5. Probar los números de teléfono de los usuarios, DNI, etc.
6. Intervenir la línea entre un usuario remoto y el sistema anfitrión.

Si un intruso tiene que verificar sus conjeturas intentando conectarse, esto constituye un medio de ataque tedioso y fácil de
contrarrestar. Por ejemplo, el sistema puede rechazar simplemente cualquier conexión tras intentarse tres contraseñas.

Protección de contraseñas
Las contraseñas son la primera línea de defensa contra los intrusos. La contraseña sirve para autentificar el ID del individuo
que se conecta al sistema. A su vez, el ID introduce una seguridad en los siguientes sentidos:

 El ID determina si el usuario está autorizado para obtener acceso al sistema.


 El ID determina los privilegios que corresponden al usuario.
 El ID se emplea para el control de acceso discrecional (indicando la lista de los identificadores de otros usuarios,
un usuario puede otorgar permisos para que estos puedan leer ficheros que le pertenecen a él.).

15 /
6
UTN FRC Resumen SOP – Rodrigo Carrión

Vulnerabilidad de las contraseñas


Muchos usuarios utilizan contraseñas cortas y fácilmente adivinables (su propio nombre, nombre de la calle, etc.).

Estrategias de elección de contraseñas


El objetivo es eliminar las contraseñas adivinables a la vez que se permite a los usuarios elegir una contraseña recordable.
Hay cuatro técnicas básicas:

 Educación de los usuarios: difícil de lograr, sobre todo cuando hay un gran número de usuarios. Muchos usuarios
simplemente ignoran estas recomendaciones.
 Contraseñas generadas por computador: Si la naturaleza de la contraseña es demasiado aleatoria, los usuarios
no la recordarán, y pueden sentirse tentados a tenerla escrita. Tienen escasa aceptación por parte de los usuarios.
 Verificación reactiva de contraseñas: el sistema ejecuta periódicamente su propio averiguador de contraseñas
para encontrar contraseñas adivinables. El sistema cancela todas las contraseñas que se adivinen y se lo notifica
al usuario. La desventaja es que consumen muchos recursos, y, además, cualquier contraseña existente será
vulnerable hasta que el inspector reactivo de contraseñas la encuentre.
 Verificación proactiva de contraseñas: es el enfoque más prometedor. Al usuario se le permite elegir su propia
contraseña, pero al momento de la selección, el sistema comprueba si la contraseña está permitida, y, si no es así,
la rechaza. El truco para implantar un verificador de contraseñas proactivo es encontrar el equilibrio entre la
aceptación por parte del usuario y la fuerza de la contraseña. Si el sistema rechaza demasiadas palabras, los
usuarios se quejarán de que es muy difícil encontrar una contraseña. Si el sistema utiliza un algoritmo sencillo para
definir qué es aceptable y qué no, esto podría proporcionar pistas para que los password crackers refinasen sus
técnicas para adivinar las contraseñas. Ejemplo: todas las contraseñas deben tener un mínimo de 8 caracteres,
tener una mayúscula, dígitos numéricos, símbolos, etc.

Detección de intrusos
La detección de intrusos es la segunda línea de defensa. Se basa en el supuesto de que el comportamiento del intruso se
diferencia del comportamiento de un usuario legítimo en formas que pueden cuantificarse.

El comportamiento de un usuario se puede establecer observando su historial, y se pueden detectar desviaciones


significativas en su patrón.

Las técnicas para la detección de intrusos son:

 Detección de anomalías estadísticas: supone la recolección de datos del comportamiento de los usuarios
legítimos durante un período de tiempo. Después se aplican pruebas estadísticas al comportamiento observado
para determinar, con un alto grado de confianza, si los comportamientos no son de usuarios legítimos.

Es eficaz contra atacantes exteriores. Pueden no ser capaces de hacer frente a usuarios legítimos que intenten
obtener acceso a recursos que requieren mayores privilegios.

 Detección basada en reglas: supone el intento de definir un conjunto de reglas que pueden emplearse para decidir
si un comportamiento dado es el de un intruso.

Una herramienta fundamental para la detección de intrusos es un registro de auditoría. Este, consiste en un registro de
actividades en curso por parte de los usuarios. Se utilizan dos planes:

 Registros de auditoría nativos: casi todos los SO multiusuario ya incorporan un software de contabilidad que reúne
información sobre la actividad de los usuarios. No necesita ningún software adicional (lo trae el SO). Puede que no
contengan la información que se necesite o no se disponga de ella en una forma conveniente.
 Registro de auditoría específicos para la detección: registros de auditoría que contiene sólo aquella información
necesaria para el sistema de detección de intrusiones. Puede ser independiente del fabricante, pero tiene un coste
extra por tener dos paquetes de contabilidad ejecutando en una misma máquina.

Cada registro de auditoría contiene los campos siguientes:

 Sujeto: iniciadores de las acciones.


 Acción: operación realizada por el sujeto con un objeto o sobre un objeto.

16 /
6
UTN FRC Resumen SOP – Rodrigo Carrión
 Objeto: receptores de las acciones.
 Condición de excepción: indica las condiciones de excepción, si se produce alguna.
 Uso de recursos: una lista de elementos cuantitativos en la que cada elemento dice la cantidad empleada de un
recurso.
 Marca de tiempo: fecha y hora que indica cuando tuvo lugar la acción.

Software malicioso
Programas malignos
Pueden dividirse en dos categorías:

 Necesitan un programa anfitrión: fragmentos de programa que no tienen existencia independiente de otro
programa.
 Independientes: son programas que por sí mismos pueden ser planificados y ejecutados por el SO.

También se pueden distinguir las amenazas de software que se reproducen y las que no lo hacen.

 No reproducibles: fragmentos de programa que se activan cuando se invoca al programa anfitrión.


 Reproducibles: fragmentos de programa o un programa independiente, que cuando se ejecutan pueden hacer una
copia o más copias de sí mismos que se activarán, más tarde, en el mismo sistema o en algún otro.

Los distintos programas maliciosos son:

 Puerta secreta: es un punto de entrada secreto a un programa que permite a alguien que la conoce conseguir acceso
sin pasar por procedimientos de seguridad. Estas, han sido utilizadas por programadores para depurar y probar los
programas, y se convierten en amenazas cuando se las utiliza para conseguir acceso no autorizado. Son difíciles
de detectar para los SO. Las medidas de seguridad deben centrarse en el desarrollo de programas y en
actualizaciones de software.
 Bomba lógica: es un código incrustado en algún programa legítimo que “explota” cuando se cumplen ciertas
condiciones (presencia o ausencia de archivos, un día concreto de la semana, fecha, usuario en particular que
ejecute la aplicación, etc.). Pueden borrar o modificar datos, hasta hacer que se detenga la máquina.
 Caballos de Troya (troyanos): es un programa aparentemente útil que contiene un código oculto que, cuando se
invoca, lleva a cabo alguna función dañina o no deseada. Se pueden usar para efectuar funciones indirectamente
que un usuario no autorizado no podría efectuar directamente, como cambiar los permisos de un archivo.
 Virus: es un programa que puede infectar a otros programas, alterándolos, como incluir una copia del programa de
virus, que puede entonces seguir infectando a otros programas.
 Gusanos: una vez activo un gusano, puede comportarse como un virus, un troyano o realizar cualquier acción
destructiva. Utilizan las conexiones de red para extenderse de un sistema a otro (correo electrónico, ejecución
remota, conexión remota). Contiene las mismas fases que los virus.
 Zombie: es un programa que secretamente toma posesión de otra computadora conectada a internet, y se usa para
lanzar ataques que hacen difícil de rastrear. Se utilizan en ataques de denegación de servicio.

Fases de un virus
1. Fase latente: el virus está inactivo. Se activará luego por algún suceso. No todos los virus pasan por esta fase.
2. Fase de propagación: el virus hace copias idénticas a él en otros programas o en ciertas áreas del disco.
3. Fase de activación: el virus se activa para llevar a cabo la función para la que está pensado. Puede producirse por
múltiples sucesos el sistema.
4. Fase de ejecución: se lleva a cabo la función. La función puede ser no dañina, como dar un mensaje por pantalla,
o dañina, como la destrucción de archivos.
17 /
6
UTN FRC Resumen SOP – Rodrigo Carrión
Tipos de virus
 Virus parásitos: la forma más tradicional y más común. Se engancha a archivos ejecutables y se reproduce al
ejecutar el programa infectado, buscando otros archivos ejecutables para infectar.
 Virus residente: se alojan en la memoria principal infectando a todos los programas que se ejecutan.
 Virus en sector de arranque: infecta al sector principal de arranque (MBR) y se propaga cuando el sistema arranca
desde el disco que contiene el virus.
 Virus oculto: una forma de virus diseñado explícitamente para esconderse de la detección mediante en software
antivirus.
 Virus polimórfico: un virus que muta con cada infección, haciendo imposible la detección por la “firma” del virus.

Virus de macros
 Son independientes de la plataforma.
 Infectan documentos, no archivos ejecutables.
 Se extiende fácilmente a través del correo electrónico.

Sacan provecho de características de Word y Excel llamadas Macro. Una macro consiste en un programa ejecutable
incrustado en un documento de procesador de texto u otro archivo, utilizado para automatizar tareas repetitivas y ahorrar
pulsaciones de teclas.

18 /
6
UTN FRC Resumen SOP – Rodrigo Carrión

Unidad Nº7 – Procesamiento distribuido


Introducción
Con el incremento de la disponibilidad de computadoras personales y potentes servidores no muy caros, ha habido una
mayor tendencia hacia el proceso de datos distribuido (DDP, Distributed Data Processing), en el que los procesadores, datos
y otros elementos del sistema de proceso de datos pueden estar distribuidos en una organización. Un sistema de
procesamiento distribuido implica la partición de la función de computación y puede, también, conllevar una organización
distribuida de la base de datos, el control de los dispositivos y el control de las interacciones (redes).

Se ha explorado un espectro de capacidades distribuidas de los sistemas operativos, como son:

- Arquitectura de comunicaciones: es el software que da soporte a una red de computadoras independientes.


Ofrece soporte para las aplicaciones distribuidas, tales como correo electrónico, transferencia de archivos y acceso
a terminales remotos. Cada computadora tiene su propio SO, y es posible una mezcla heterogénea de computadoras
y SO, siempre que todas las máquinas soporten la misma arquitectura de comunicaciones. Por ejemplo, protocolo
TCP/IP.
- Sistemas operativos de red: es una configuración de varias estaciones de trabajo y uno o más servidores. Los
servidores proporcionan servicios o aplicaciones a toda la red (como almacenamiento de archivos y gestión de
impresoras). Cada computador tiene su propio SO privado. El usuario es consciente de que existen múltiples
computadoras independientes y debe tratar con ellas explícitamente.
- Sistemas operativos distribuidos: un SO común compartido por una red de computadores. Para los usuarios es
como un SO centralizado, aunque les proporciona un acceso transparente a los recursos de numerosas
computadoras. Este SO puede depender de una arquitectura de comunicaciones para las funciones básicas de
comunicación.

Proceso cliente/servidor
El entorno cliente/servidor está poblado de clientes y servidores.

- Clientes: son, en general, PC monousuario o puestos de trabajo que ofrecen una interfaz de fácil manejo al usuario
final (poseen interfaz gráfica, uso de ventanas y mouse).
- Servidor: proporciona un conjunto de servicios que puede compartir a los clientes (servidores de archivos,
servidores de bases de datos, etc.).
- Red: conjunto de elementos que permiten interconectar clientes y servidores. Ejemplos: LAN (Local Area Network),
WAN (Wide Area Network) e internet.

Aplicaciones cliente/servidor
La característica central de la arquitectura cliente/servidor es la distribución de las tareas de la aplicación entre el cliente y el
servidor. Tanto en el cliente como en el servidor, el software básico es un SO que se ejecuta en sobre el hardware de la
plataforma. La plataforma y el SO del cliente y del servidor pueden ser diferentes. De hecho, pueden existir diferentes
plataformas de clientes y sistemas operativos y diferentes plataformas de servidor en un mismo entorno. Siempre que los
clientes y los servidores compartan los mismos protocolos de comunicación y soporten las mismas aplicaciones, estas
diferencias de bajo nivel no son relevantes.

El software de comunicaciones es el que permite que interactúen el cliente y el servidor (ejemplo, protocolo TCP/IP). Por
supuesto, el objetivo de todo este software de soporte (comunicaciones y sistema operativo) es proporcionar las bases para
las aplicaciones distribuidas. De forma ideal, las funciones que realiza una aplicación se pueden dividir entre el cliente y el
servidor, de manera que se optimice el uso de los recursos.

Un factor esencial en el éxito de un entorno cliente/servidor es la forma en que el usuario interactúa con el sistema. De esta
forma, es decisivo el diseño de la interfaz de usuario en la máquina cliente. En la mayor parte de los sistemas
cliente/servidor, se hace mucho énfasis en proporcionar una interfaz gráfica de usuario (GUI)que sea fácil de usar, fácil de
aprender, potente y flexible.

1/6
UTN FRC Resumen SOP – Rodrigo Carrión

Aplicaciones de bases de datos


La familia más común de aplicaciones cliente/servidor son aquellas que utilizan base de datos relacionales. En este entorno,
el servidor es, básicamente, un servidor de base de datos. La interacción entre el cliente y el servidor se realiza a través de
transacciones, donde el cliente realiza una petición a la base de datos y recibe una respuesta.

El servidor es responsable de mantener la base de datos, para lo que se requiere un complejo sistema gestor de base de
datos. En las máquinas cliente se puede situar diferentes aplicaciones diferentes que hagan uso de la base de datos. El
«pegamento» que une al cliente y al servidor es el software que permite que el cliente haga peticiones para acceder al
servidor de la base de datos. Un ejemplo muy popular es el lenguaje estructurado de consultas (SQL)

Toda la lógica de aplicación -el software para el análisis de datos- está en la parte cliente, mientras que el servidor sólo se
preocupa de la gestión de la base de datos. Que esta configuración sea la apropiada, depende del estilo y del propósito de
la aplicación.

2/6
UTN FRC Resumen SOP – Rodrigo Carrión
Clases de aplicaciones cliente/servidor
Dentro del entorno general cliente/servidor, hay una serie de implementaciones que dividen el trabajo entre el cliente y el
servidor de diferente manera. Algunas de las opciones principales para las aplicaciones de base de datos son:

- Procesamiento basado en una máquina central (host): no es una verdadera computación cliente/servidor. Se
refiere a los entornos mainframe tradicionales en los que virtualmente todo el procesamiento se realiza en el host
central. A menudo, la interfaz de usuario se realiza a través de un interfaz tonto. Incluso si el usuario está empleando
una computadora, la estación del usuario se limita al papel de emulador de terminal.
- Procesamiento basado en el servidor (cliente ligero): es el tipo más básico de configuración cliente/servidor.
Consiste en que el cliente es responsable de ofrecer una interfaz de usuario gráfica, mientras que prácticamente todo
el procesamiento se realiza en el servidor. El razonamiento detrás de estas configuraciones es que la estación de
trabajo del usuario es mejor para proporcionar una interfaz de usuario de fácil manejo, y que las bases de datos y
las aplicaciones se pueden mantener más fácilmente en sistemas centrales. Aunque el usuario obtiene la ventaja
de una mejor interfaz, este tipo de configuraciones no suele generar grandes ventajas en productividad, ni cambios
fundamentales en las funciones de negocio soportadas por el sistema.
- Procesamiento basado en el cliente (uso más común, cliente pesado): en el otro extremo, prácticamente todo
el procesamiento se puede realizar en el cliente, con la excepción de las rutinas de validación de datos y otras
funciones lógicas de la base de datos que se pueden realizar mejor en el servidor. Es posiblemente el enfoque
cliente/servidor más utilizado actualmente. Permite a los usuarios el uso de aplicaciones adaptadas a las
necesidades locales.
- Procesamiento cooperativo (cliente pesado): el procesamiento de la aplicación se realiza de forma óptima,
beneficiándose de las máquinas cliente y servidora y de la distribución de los datos. Es más compleja de configurar y
mantener, pero, a largo plazo, puede ofrecer una mayor productividad a los usuarios y una mayor eficiencia de la
red.

3/6
UTN FRC Resumen SOP – Rodrigo Carrión
Arquitectura cliente/servidor de tres capas
La arquitectura tradicional cliente/servidor implica normalmente dos niveles o capas: la capa del cliente y la capa del servidor.
En los últimos años la arquitectura que más se ha pasado a utilizar es una de tres capas. En esta arquitectura el software
de aplicación está distribuido entre tres tipos de máquinas: una máquina de usuario, un servidor en la capa central y un
servidor en segundo plano (backend). La máquina de usuario en esta arquitectura, por lo general es un cliente ligero. Las
máquinas de la capa central son normalmente una pasarela entre los clientes ligeros y varios servidores de bases de datos
en segundo plano. Las máquinas de la capa central pueden convertir protocolos y cambiar de un tipo de consulta de base
de datos a otra. Además, las máquinas de la capa central pueden mezclar/integrar los resultados de diferentes fuentes de
datos. Finalmente, pueden servir como pasarela entre las aplicaciones de escritorio y las aplicaciones de los servidores en
segundo plano, mediando entre los dos mundos.
La interacción entre el servidor de la capa central y el servidor en segundo plano, también sigue el modelo cliente/servidor.
De esta forma, el sistema de la capa intermedia actúa de cliente y de servidor.

Consistencia de la caché de archivos


Cuando se utiliza un servidor de ficheros, el rendimiento de la E/S de ficheros se puede degradar en comparación con el
acceso local a ficheros, debido a los retrasos generados por la red. Para reducir este problema de rendimiento, los sistemas
individuales pueden utilizar cache de ficheros para almacenar los registros de los ficheros a los que se ha accedido
recientemente. El uso de una caché local debería reducir el número de accesos necesarios al servidor remoto.

Cuando las caches contienen siempre copias exactas de los datos remotos, decimos que las caches son consistentes. Es
posible que las caches se vuelvan inconsistentes cuando se cambian los datos remotos y no se descartan las
correspondientes copias locales en la cache. El problema de mantener actualizadas las copias locales de cache es conocido
como el problema de la consistencia de cache.

El método más simple para la consistencia de caches consiste en emplear técnicas de bloqueo de archivos para evitar
accesos simultáneos a un archivo por más de un cliente Esto garantiza la consistencia a costa de rendimiento y flexibilidad.
Un mecanismo más potente es que
cualquier número de procesos remotos
pueden abrir un archivo para la lectura
y almacenarla en su propia cache. Pero
cuando una solicitud de apertura de
fichero pide accesos de escritura y
otros procesos tienen el fichero abierto
con acceso de lectura, el servidor
realiza dos acciones. Primero, notifica
al proceso que escribe que, aunque
puede mantener una copia local, debe
mandar al servidor todos los bloques
que se cambien inmediatamente.
Puede haber como mucho uno de estos
clientes. Segundo, el servidor notifica a
todos los procesos lectores que tienen
el fichero abierto que el fichero ya no se
puede mantener en cache.
4/6
UTN FRC Resumen SOP – Rodrigo Carrión
Middleware
El desarrollo y utilización de los productos cliente/servidor ha sobrepasado con mucho los esfuerzos para estandarizar todos
los aspectos de la computación distribuida, desde la capa física hasta la capa de aplicación. Esta falta de estándares hace
difícil implementar una configuración cliente/servidor integrada y multivendedor en toda la empresa. Este problema de
interoperabilidad debe ser resuelto, ya que gran parte del beneficio del enfoque cliente/servidor está unido a su modularidad
y la capacidad de combinar plataformas y aplicaciones para proporcionar una solución de negocio.

Para lograr los verdaderos beneficios del mecanismo cliente/servidor, los desarrolladores deben tener un conjunto de
herramientas que proporcionen una manera y estilo de acceso uniforme a los recursos del sistema a través de todas las
plataformas. Esto permitirá a los programadores construir aplicaciones que no sólo parezcan iguales en todos los PC y
estaciones de trabajo, sino que utilicen el mismo método para acceder a los datos, independientemente de la localización
de los mismos.

La forma más común de cumplir estos requisitos es a través del uso de interfaces de programación y protocolos estándares
entre la aplicación y el software de comunicaciones y el sistema operativo. Estos interfaces de programación y protocolos
estándares se denominan middleware. Con los interfaces de programación estándares resulta sencillo implementar la misma
aplicación en varios tipos de servidores y estaciones de trabajo. Esto lógicamente beneficia a los clientes, pero los
vendedores también están motivados para proporcionar estos interfaces. La razón es que los clientes compran aplicaciones,
no servidores; los clientes sólo elegirán aquellos productos de servidor que ejecuten las aplicaciones que ellos quieren. Los
protocolos estandarizados son necesarios para unir a los servidores con los clientes que necesitan acceder a ellos.

Hay diversos paquetes de middleware, que varían desde los muy sencillos a los muy complejos. Lo que tienen todos en
común es la capacidad de esconder la complejidad y disparidad de los diferentes protocolos de red y sistemas operativos.
Los vendedores de clientes y servidores generalmente proporcionan los paquetes de middleware más populares. De esta
forma un usuario puede fijar una estrategia middleware particular y montar equipos de varios vendedores que soporten esa
estrategia

Middleware: conjunto de controladores, API y software adicional que mejoran la conectividad entre una aplicación cliente y
un servidor, brindando acceso uniforme a los recursos del sistema a través de todas las plataformas.

- Middleware formado por:

- Interfaces de programacion
- Protocolos estándares entre la aplicación y el SW de comunicaciones y el sistema operativo
Ventajas:

- Permite construir aplicaciones que utilicen el mismo método para acceder a los datos, independientemente de su
ubicación.
- Facilita la implementación de la aplicación en diferentes tipos de servidores y estaciones de trabajo.
- Se implementa a través de paso de mensajes y de llamadas a procedimiento remoto (RPC)

Arquitectura middleware
El propósito básico del middleware es
permitir a una aplicación o usuario en el
cliente acceder a una variedad de servicios
en el servidor sin preocuparse de las
diferencias entre los servidores. Aunque
hay una amplia variedad de productos
middleware, estos se basan normalmente
en uno de dos mecanismos básicos: el
paso de mensajes o las llamadas a
procedimientos remotos. Desde un punto
de vista lógico, más que desde un punto
de vista de implementación El middleware permite la realización de la promesa de la computación cliente/servidor. El sistema
distribuido entero puede verse como un conjunto de aplicaciones y recursos disponibles para los usuarios. Todas las
aplicaciones operan sobre una interfaz uniforme de programación de aplicaciones (API). El middleware, que se sitúa entre
todas las plataformas cliente y servidor, es el responsable de guiar las peticiones al servidor apropiado.
5/6
UTN FRC Resumen SOP – Rodrigo Carrión

Paso distribuido de mensajes


En los sistemas de proceso distribuido reales se suele dar el caso de que los computadores no compartan una memoria
principal; cada una es un sistema aislado. Por lo tanto, no es posible emplear técnicas de comunicación entre procesadores
basadas en memoria compartida, como son los semáforos y el uso de un área de memoria común. En su lugar, se usan
técnicas basadas en el paso de mensajes.

Con este método, un proceso cliente solicita un servicio y envía, a un proceso servidor, un mensaje que contiene una petición
de servicio. El proceso servidor satisface la petición y envía un mensaje de respuesta. En su forma más simple, solo se
necesitan dos funciones:

- Send: la utiliza el proceso que quiere enviar el mensaje. Especifica un destinatario y el contenido del mensaje.
- Receive: la utiliza el proceso receptor para anunciar su intención de recibir el mensaje, especifica de quién se
recibirá el mensaje y el buffer en donde almacenarlo.

La transferencia de mensajes(send) consiste en:


1. El módulo de paso de mensajes construye el mensaje (destinatario y datos).
2. Se entrega el mensaje al servicio de comunicación (TPC/IP)
3. Se envía el mensaje por el medio de transmisión
4. En el destino, el servicio de comunicación se lo entrega al módulo de paso de mensajes.
5. Se examina el ID del proceso y se almacena el mensaje en el buffer del proceso.

Los procesos hacen uso de los servicios de un módulo de pasos de mensajes, el cual sería un middleware.

6/6
UTN FRC Resumen SOP – Rodrigo Carrión
Las peticiones de servicio se expresan a través de primitivas (función que se desea realizar) y parámetros (paso de los datos
e información de control)

Servicio fiable vs. servicio no fiable


- Servicio fiable:
- Garantiza la entrega de los datos.
- Utiliza un protocolo de transporte fiable.
- Se realiza comprobación de errores y acuse de recibo.
- Se retransmiten y se reordenan los mensajes (en caso de ser necesario).
- Servicio no fiable:
- Simplemente se envía el mensaje al destinatario por la red.
- Utiliza un protocolo de transporte no fiable.
- No se informa si se entregó con éxito.
- Servicio muy simple y rápido (baja sobrecarga de procesamiento y comunicación del servicio de paso de
mensajes).
- Si se requiere fiabilidad, la aplicación deberá garantizarla.

Bloqueante vs no bloqueante
- Primitivas no bloqueantes (asíncronas):
- Cuando se realiza un send o receive no se suspende el proceso.
- Cuando un proceso emite un send, el SO le devolverá el control al proceso cuando ponga en cola el mensaje
de salida.
- Para un receive, se informa mediante una interrupción o este puede comprobar periódicamente su estado.
- Ofrecen un empleo eficiente y flexible del servicio de paso de mensajes.
- Los programas que usan estas primitivas son difíciles de probar y de depurar.
- Primitivas bloqueantes (síncronas):
- Cuando se realiza un send no se devuelve el control al proceso emisor hasta que el mensaje se haya
trasmitido o hasta que el mensaje se haya enviado y obtenido un acuse de recibo.
- Cuando se realiza un receive no devuelve el control al proceso hasta que el mensaje se haya ubicado en el
buffer asignado.

Llamadas a procedimiento remoto (RPC)


Las llamadas a procedimiento remoto son una variante del modelo básico de paso de mensajes. Hoy en día este método es
muy común y está ampliamente aceptado para encapsular la comunicación en un sistema distribuido. Lo fundamental en
esta técnica es permitir a los programas en diferentes maquinas interactuar a través del uso de llamadas a procedimiento,
tal y como lo harían dos programas que están en la misma máquina.

7/6
UTN FRC Resumen SOP – Rodrigo Carrión
Las ventajas de este método son:

1. Las llamadas a procedimiento son una abstracción ampliamente aceptada, utilizada y entendida.

2. El uso de llamadas a procedimiento remoto permite especificar las interfaces remotas como un conjunto de
operaciones con nombre y tipos de datos dados. De esta forma, la interfaz se puede documentar claramente y los
programas distribuidos pueden comprobar estáticamente errores en los tipos de datos.

3. Ya que se especifica una interfaz estandarizada y precisa, el código de comunicación para una aplicación se puede
generar automáticamente.

4. Ya que se especifica una interfaz estandarizada y precisa, los desarrolladores pueden escribir módulos cliente y
servidor que se pueden mover entre computadoras y sistemas operativos con pocas modificaciones y
recodificaciones.

El mecanismo de las llamas a procedimientos remotos puede considerarse como una mejora del paso de mensajes fiables
y bloqueante.

El programa llamador realiza una llamada normal a un procedimiento con los parámetros situados en su máquina. Por
ejemplo: CALL P (X, Y) donde P es el nombre del procedimiento, X son los argumentos pasados e Y son los valores
devueltos.

El espacio de direcciones del llamador debe incluir un procedimiento P de presentación o tonto, o bien debe enlazarse
dinámicamente en el momento de la llamada. Este procedimiento crea un mensaje que identifica al procedimiento llamado e
incorpora los parámetros. Envía el mensaje y queda esperando la respuesta. Cuando se recibe la respuesta, el procedimiento
de presentación retorna al programa llamador, proporcionándole los valores devueltos.

Paso de parámetros
 Por valor: los parámetros simplemente se copian en el mensaje y se envían al sistema remoto.
 Por referencia: difícil de implementar. Para cada objeto se necesita un puntero único y válido para todo el sistema.
No suele merecer la pena el esfuerzo por la sobrecarga que se genera.

Tipos de conexiones o enlaces cliente/servidor


El enlace especifica cómo se establecerá la relación entre un procedimiento remoto y el programa llamante. Se forma un
enlace cuando dos aplicaciones han realizado una conexión lógica y están preparados para intercambiar datos y mandatos.

8/6
UTN FRC Resumen SOP – Rodrigo Carrión
 Conexión no persistente: significa que la conexión lógica se establece entre los dos procesos en el momento de
la llamada a procedimiento remoto y que, tan pronto como se devuelven los valores, se cierra la conexión. Debido
a que la conexión requiere que se mantenga información de estado en ambos extremos, consume recursos. El estilo
no persistente se utiliza para conservar estos recursos. Por otra parte, la sobrecarga que implica establecer las
conexiones, hace que los enlaces no permanentes sean inapropiados para procedimientos remotos que son
llamados frecuentemente.
 Conexión persistente: una conexión que se establece para una llamada a procedimiento remoto se mantiene
después de la finalización de dicha llamada. La conexión puede ser utilizada para futuras llamadas a procedimiento
remoto. Si pasa un periodo determinado de tiempo sin actividad en la conexión, se finaliza la conexión. Para
aplicaciones que hacen llamadas repetidas a procedimientos remotos, el enlace permanente mantiene la conexión
lógica y permite que una secuencia de llamadas utilice la misma conexión.

Sincronismo vs asincronismo
Conceptos análogos a los de mensajes bloqueantes y no bloqueantes.

 RPC síncronas: el proceso llamante espera hasta que el proceso devuelva el valor (como una llamada a una
subrutina).
 RPC asíncronas: no bloquean al llamante y permiten lograr un mayor grado de paralelismo.

Agrupaciones (Clusters)
Cluster: es un grupo de computadoras interconectadas que trabajan juntas como un recurso de proceso unificado que
puede crear la ilusión de ser una única máquina. Son una alternativa al SMP como método de proporcionar alto rendimiento
y alta disponibilidad.

Nodo: forma de nombrar a cada computadora de un cluster.


Proporcionan alto rendimiento y disponibilidad
Ventajas:

 Escalabilidad total: es posible crear agrupaciones grandes que sobrepasen con creces las máquinas autónomas
más grandes. Pueden tener docenas o cientos de máquinas multiprocesador.
 Escalabilidad incremental: una agrupación se configura de tal forma que es posible añadir sistemas nuevos a la
agrupación en pequeños incrementos. Un cluster pequeño se puede expandir sin muchos problemas.
 Alta disponibilidad: como cada uno de los nodos de la agrupación es una computadora autónoma, el fallo de un
nodo no implica la pérdida de servicio.
 Mejor relación rendimiento/precio: es posible
armar una agrupación con una potencia de
proceso igual o mayor que una máquina
grande, a un precio mucho más bajo.

Configuraciones de clusters
Clasificación según si comparten acceso a los discos:

 Servidor en espera Sin disco compartido: los


nodos se conectan mediante enlaces de alta
velocidad (ejemplo: LAN). Si cada computadora
es multiprocesador se mejora el rendimiento y
la disponibilidad.
 Con disco compartido: existe un subsistema
de disco compartido entre los nodos del cluster
(tecnología RAID).

9/6
UTN FRC Resumen SOP – Rodrigo Carrión
Clasificación según la funcionalidad:

Método de agrupación Descripción Ventajas Limitaciones

En caso de fallo en el servidor Alto costo porque el servidor


Pasivo en espera primario, el servidor Sencillo de implementar. secundario no está accesible
secundario toma el control. para procesar tareas.
El servidor secundario también
Secundario activo Costo reducido. Incrementa la complejidad.
se utiliza para procesar tareas.
Los servidores contienen sus
Incrementa la sobrecarga en el
propios discos. Los datos se
servidor y el uso de la red
Servidores separados copian continuamente del Alta disponibilidad.
debido a las operaciones de
servidor primario al
secundario. copia.

Los servidores están


conectados a los mismos
Reduce la sobrecarga en el
discos, pero cada servidor Necesita tecnología RAID o de
Servidores conectados a servidor y el uso de la red
tiene sus propios discos. Sin discos espejo para compensar
discos debido a la eliminación de las
un servidor falla, sus discos el riego de fallo de disco.
operaciones de copia.
pasan a estar a cargo de otro
servidor.
Baja la sobrecarga en el
Varios servidores comparten Requiere software de gestión
Servidores compartiendo servidor y uso de la red.
acceso simultáneo a los de bloqueos. Se utiliza con
discos Reduce el riesgo de caída por
discos. fallo de disco. RAID o discos espejo.

Conceptos de diseño de los sistemas operativos


Gestión de fallos
La forma en que se gestionarán los fallos depende del método de agrupación utilizado. En general, para tratar los fallos se
pueden seguir dos enfoques:

 Agrupación de alta disponibilidad: ofrece una alta posibilidad de que todos los recursos estén en servicio. Si
sucede algún fallo, tal como la caída de un nodo o que se pierda un volumen, se pierden las peticiones en progreso.
Cualquier petición perdida que se reintente, será atendida por una computadora diferente del cluster.
 Agrupación tolerante a fallos: garantiza que los recursos siempre van a estar disponibles. Esto se logra a través
del uso de discos redundantes compartidos y mecanismos para deshacer transacciones incompletas.

La función de intercambiar una aplicación y los datos de un sistema fallido por un sistema alternativo en una agrupación se
denomina resistencia a fallos (failover). La restauración de aplicaciones y de datos al sistema original una vez que se ha
reparado, se denomina restauración de fallos (failback).

Equilibrio de carga
Un cluster necesita tener la capacidad de equilibrar la carga entre todas las computadoras disponibles. Esto incluye el requisito
de que un cluster debe ser escalable. Cuando se añade una nueva computadora al cluster, el servicio de equilibrado de carga
debe incluir automáticamente la nueva computadora en la planificación de las aplicaciones. Los mecanismos del middleware
deben saber que pueden aparecer nuevos servicios en diferentes miembros del cluster, pudiendo migrar de un miembro a otro.

Computación paralela
 Compilador paralelo: Un compilador paralelo determina, en tiempo de compilación, qué partes de la aplicación se
pueden ejecutar en paralelo. Estas partes se pueden asignar a computadoras diferentes del cluster. El rendimiento
depende de la naturaleza del problema y de lo bueno que sea el diseño del compilador.
 Aplicaciones paralelas: En este enfoque, el programador escribe la aplicación para que ejecute en un cluster y
utiliza paso de mensajes para mover datos, según se requiera, entre nodos del cluster. Esto supone una gran carga
para el programador, pero probablemente es la mejor forma de explotar los cluster para algunas aplicaciones.
 Computación paramétrica: Este enfoque se puede utilizar si la esencia de la aplicación es un algoritmo que se
debe ejecutar un gran número de veces, cada vez con un conjunto diferente de condiciones o parámetros iniciales.
Un buen ejemplo es un modelo de simulación, que ejecutará un gran número de diferentes escenarios y luego
calculará estadísticas de los resultados. Para que este enfoque sea efectivo, se necesitan herramientas de
procesamiento paramétricas para organizar, ejecutar y gestionar los trabajos de forma ordenada.

10 /
6
UTN FRC Resumen SOP – Rodrigo Carrión
Arquitectura de un cluster
Las computadoras están conectadas a una LAN de alta velocidad o conmutador hardware. Cada computadora es capaz de
operar independientemente. Además, en cada computadora está instalada una capa de software middleware que permite
la operación del cluster. El middleware del cluster proporciona una imagen única al usuario, conocida como imagen única
del sistema (single-system image). El middleware también podría ser responsable de proporcionar alta disponibilidad, a
través del balanceado de carga y de la respuesta a los fallos de los componentes.
Enumera los siguientes servicios y funciones deseables en un cluster:
 Un único punto de entrada. Un usuario se autentifica en el cluster y no en una determinada computadora.
 Una única jerarquía de ficheros. Los usuarios ven una sola jerarquía de directorios bajo el mismo directorio raíz.
 Un único punto de control. Hay un nodo por defecto encargado de gestionar y controlar el cluster.
 Una única red virtual. Cualquier nodo puede acceder a cualquier otro punto del cluster, incluso si la configuración
del cluster tienen múltiples redes interconectadas. Se opera sobre una única red virtual.
 Un único espacio de memoria. La memoria compartida distribuida permite a los programas compartir variables.
 Un único sistema de control de trabajos. Con un planificador de trabajos en el cluster, un usuario puede enviar
su trabajo sin especificar la computadora que lo ejecutará.
 Un único interfaz de usuario. Todos los usuarios tienen un interfaz gráfico común, independientemente de la
estación de trabajo que utilicen.
 Un único espacio de E/S. Cualquier nodo puede acceder remotamente a cualquier periférico de E/S o disco, sin
conocer su localización física.
 Un único espacio de procesos. Se utiliza un esquema uniforme de identificación de procesos. Un proceso en
cualquier nodo puede crear o se puede comunicar con cualquier otro proceso en un nodo remoto.
 Puntos de control. Esta función salva periódicamente el estado del proceso y los resultados de computación
intermedios, para permitir recuperarse después de un fallo.
 Migración de procesos. Esta función permite balanceado de carga.

Los últimos cuatro elementos de la lista precedente mejoran la disponibilidad del cluster. Los restantes elementos se
preocupan de proporcionar una imagen única del sistema. Un cluster también incluirá herramientas software para permitir
la ejecución eficiente de programas que son capaces de ejecutar en paralelo.

11 /
6
UTN FRC Resumen SOP – Rodrigo Carrión

Procesamiento en tiempo real


Procesamiento en tiempo real: el sistema operativo, en particular el planificador, es el componente más importante de un
sistema de tiempo real. La computación en tiempo real puede definirse como aquella en la que la corrección del sistema
depende no sólo del resultado lógico de la computación sino también del momento en el que se producen los resultados.
En general, en un sistema de tiempo real, algunas de las tareas son tareas de tiempo real, y éstas tienen cierto grado de
urgencia. Tales tareas intentan controlar o reaccionar a eventos que tienen lugar en el mundo exterior

Características de los sistemas en tiempo real


Los sistemas operativos de tiempo real pueden ser caracterizados por tener requisitos únicos en cinco áreas generales:
 Determinismo: el sistema operativo realiza operaciones en instantes de tiempo fijos predeterminados o dentro de
intervalos de tiempo predeterminados. El grado en el que un sistema operativo puede satisfacer de manera
determinista las solicitudes depende de la velocidad a la que es capaz de responder a las interrupciones y de si el
sistema tiene capacidad suficiente para manejar todas las solicitudes dentro del tiempo requerido.
 Reactividad: El determinismo se preocupa de cuánto tiempo tarda el sistema operativo antes del reconocimiento
de una interrupción. La reactividad se preocupa de cuánto tiempo tarda el sistema operativo, después del
reconocimiento, en servir la interrupción. La reactividad incluye los siguientes aspectos:
o La cantidad de tiempo necesario para manejar inicialmente la interrupción y comenzar a ejecutar la rutina
de servicio de la interrupción (RSI). Si la ejecución de la RSI necesita un cambio de proceso, entonces el
retardo será mayor que si la RSI puede ser ejecutada dentro del contexto del proceso actual.
o La cantidad de tiempo necesario para realizar para realizar la RSI. Esto depende, generalmente, de la
plataforma hardware.
o El efecto del anidamiento de interrupciones. Si una RSI puede ser interrumpida por la llegada de otra
interrupción, entonces el servicio se retrasará.
 Control del usuario: es esencial permitirle al usuario un control de grano fino sobre la prioridad de la tarea. El
usuario debe ser capaz de distinguir entre tareas duras y suaves y de especificar prioridades relativas dentro de
cada clase. puede también permitirle al usuario especificar características como el uso de paginación en los
procesos, qué procesos deben residir siempre en memoria principal, qué algoritmos de transferencia a disco deben
utilizarse, qué derechos tienen los procesos de las varias bandas de prioridad, etcétera
 Fiabilidad: un sistema de tiempo real ha de responder y controlar eventos en tiempo real. La pérdida o degradación
de sus prestaciones puede tener consecuencias catastróficas: pérdidas económicas, daños en equipos importantes
e incluso pérdida de vidas.

12 /
6
UTN FRC Resumen SOP – Rodrigo Carrión
 Operación de fallo suave: se refiere a la habilidad del sistema de fallar de tal manera que se preserve tanta
capacidad y datos como sea posible. Un aspecto importante es la estabilidad. Un sistema de tiempo real es estable
si, en los casos en los que sea imposible cumplir los plazos de todas las tareas, el sistema cumplirá los plazos de
sus tareas más críticas, de más alta prioridad, aunque los plazos de algunas tareas menos críticas no se satisfagan.

Para cumplir los requisitos precedentes, los sistemas operativos de tiempo real incluyen de forma representativa las
siguientes características:
 Cambio de proceso o hilo rápido
 Pequeño tamaño (que está asociado con funcionalidades mínimas)
 Capacidad para responder rápidamente a interrupciones externas
 Multitarea con herramientas para la comunicación entre los procesos como semáforos, señales y eventos
 Utilización de ficheros secuenciales especiales que pueden acumular datos de alta velocidad
 Planificación expulsiva basada en prioridades
 Minimización de los intervalos durante los cuales se deshabilitan las interrupciones
 Primitivas para retardar tareas durante una cantidad dada de tiempo y para parar/retornar tareas
 Alarmas y temporizaciones especiales.

Planificación en tiempo real


Los distintos enfoques de la planificación dependen de (1) cuando el sistema realiza análisis de planificabilidad; y si lo hace,
de (2) si se realiza estática o dinámicamente; y de (3) si el resultado del análisis produce un plan de planificación de acuerdo
al cual se desarrollarán las tareas en tiempo de ejecución. En base a estas consideraciones los autores identifican las
siguientes clases de algoritmos:
 Enfoques estáticos dirigidos por tabla. En éstos se realiza un análisis estático de la factibilidad de la planificación.
El resultado del análisis es una planificación que determina cuando, en tiempo de ejecución, debe comenzar a
ejecutarse cada tarea.
 Enfoques estáticos expulsivos dirigidos por prioridad. También se realiza un análisis estático, pero no se
obtiene una planificación. En cambio, el análisis se utiliza para asignar prioridades a las tareas, y así puede utilizarse
un planificador expulsivo tradicional basado en prioridades.
 Enfoques dinámicos basados en un plan. La factibilidad se determina en tiempo de ejecución (dinámicamente)
en vez de antes de comenzar la ejecución (estáticamente). Una nueva tarea será aceptada como ejecutable sólo si
es posible satisfacer sus restricciones de tiempo. Uno de los resultados del análisis de factibilidad es un plan que
se usará para decidir cuándo poner en marcha la tarea.
 Enfoques dinámicos de mejor esfuerzo. No se realiza análisis de factibilidad. El sistema intenta cumplir todos los
plazos y aborta la ejecución de cualquier proceso cuyo plazo haya fallado.

13 /
6
UTN FRC Resumen SOP – Rodrigo Carrión

La planificación estática dirigida por tabla es aplicable a tareas que son periódicas. Los datos de entrada para el análisis
son: tiempo periódico de llegada, tiempo de ejecución, plazo periódico de finalización, y prioridad relativa de cada tarea. El
planificador intenta encontrar un plan que le permita cumplir todos los requisitos de todas las tareas periódicas. Éste es un
enfoque predecible, pero no flexible, dado que un cambio en cualquiera de los requisitos de las tareas requiere rehacer toda
la planificación. El plazo más cercano primero, y otras técnicas de plazos periódicos (expuestas posteriormente) son típicas
de esta categoría de algoritmos de planificación.

La planificación estática con expulsión dirigida por prioridad hace uso del mecanismo de planificación expulsivo dirigido
por prioridades común a la mayoría de los sistemas multiprogramados que no son de tiempo real. En un sistema que no es
de tiempo real, pueden utilizarse en múltiples factores para determinar la prioridad. Por ejemplo, en un sistema de tiempo
compartido, la prioridad de un proceso puede cambiar dependiendo de qué consume más, CPU o E/S. En un sistema de
tiempo real, la asignación de prioridades está relacionada con las restricciones de tiempo asociadas a cada tarea. Un ejemplo
de este enfoque es el algoritmo de tasa monótona (expuesto posteriormente), que asigna prioridades estáticas a las tareas
basándose en sus longitudes y sus periodos.

Con la planificación dinámica basada en un plan, cuando llega una nueva tarea, pero antes de que comience su ejecución,
se intentará crear un plan que contenga las tareas previamente planificadas, así como la nueva. Si la tarea recién llegada
puede ser planificada de manera que se cumplan sus plazos sin que ninguna otra tarea planificada anteriormente pierda un
plazo, la nueva tarea será aceptada poniéndose en marcha el nuevo plan de planificación.

La planificación dinámica de mejor esfuerzo es en enfoque utilizado en muchos sistemas operativos de tiempo real
disponibles comercialmente hoy en día. Cuando llega una tarea, el sistema le asigna una prioridad basada en las
características de la misma. De forma característica se utiliza algún tipo de planificación basada en plazos como la
planificación del plazo más cercano. Así, las tareas no son periódicas y por tanto no es posible realizar un análisis estático de
planificabilidad. Con este tipo de planificación, no sabremos si una determinada restricción de tiempo será satisfecha hasta
que venza su plazo o la tarea se complete. Esta es la principal desventaja de esta forma de planificación. La ventaja es que
es fácil de implementar.
14 /
6

Das könnte Ihnen auch gefallen