Está en la página 1de 93

lOMoARcPSD|15103112

Sistemas Operativos

UNIDAD I
Funciones y Estructura de los Sistemas Operativos
¿Qué hace un Sistema Operativo?

El Sistema Operativo (SO) controla y coordina el uso del hardware entre los diversos programas de aplicación por
parte de los distintos usuarios. Este proporciona los medios para hacer un uso adecuado de los recursos durante el
funcionamiento del sistema informático y proporciona un entorno en el que otros programas pueden llevar a cabo un
trabajo útil.
Enfoques de SO:

 Desde el punto de vita del usuario, un SO es diseñado para que el usuario pueda monopolizar sus
recursos. El objetivo es optimizar su trabajo. Para esto el SO es diseñado para que tenga un uso fácil.
Un usuario puede estar frente a una mainframe (microcomputadora de la cual acceden varias más) en
donde los mismos comparten recursos y pueden intercambiar información, o en frente de un estación de
trabajo conectada a una red de computadoras y servidores, o bien a una computadora de mano o portátil.
En todos estos casos, los SO están diseñados en cuanto a la usabilidad individual.
 Desde el punto de vista del sistema el SO es el programa que está íntimamente relacionado con el
hardware. El SO actúa como el administrador de los recursos, decide como asignarlos a programas y
usuarios específicos, de modo que la computadora pueda operar de forma eficiente y equitativa.

Definición

Un SO es un programa que administra el hardware de una computadora, proporciona las bases para los programas
de aplicación y actúa como un intermediario entre el usuario y el hardware de la computadora.
Un SO es un programa de control, como tal, gestiona la ejecución de los programas de usuario para evitar errores y
mejorar el uso de la computadora.

Conceptos en Sistemas Operativos

Proceso y Programa (Definición en UNIDAD II)

Sistemas Monoprocesador

En un sistema de un único procesador, hay una CPU principal capaz de ejecutar un conjunto de instrucciones de
propósito general, incluyendo instrucciones de procesos de usuario. Casi todos los sistemas disponen de otros
procesadores de propósito especial.
Estos procesadores de propósito especial, son los más comunes y ejecutan un conjunto limitado de instrucciones y
no ejecutan procesas de usuario. En ocasiones, el SO los gestiona enviando información sobre su siguiente tarea y
monitorizando su estado.
Cuando hay un solo CPU de propósito general es el sistema es “monoprocesador”.

1
Downloaded by Geral Diaz (geraldinegeri11@gmail.com)
lOMoARcPSD|15103112

Sistemas Operativos

Sistema Multiprocesador

Estos sistemas disponen de dos o más procesadores que se comunican entre sí, compartiendo el bus de la
computadora y, en ocasiones, la memoria y los dispositivos periféricos.
Sus ventajas principales son:
 Mayor rendimiento: se trata de más trabajo en menor tiempo. La mejora en velocidad con N procesadores
no es N sino que es menor que N.
 Economía de escala: pudiendo resultar más barato que su equivalente con múltiples sistemas de un solo
procesador.
 Mayor fiabilidad: el fallo de un procesador no hará que el sistema deje de funcionar, a lo sumo se
ralentizará.
El multiprocesamiento asimétrico es aquel en que cada procesador tiene asignada una tarea específica. Un
procesador maestro controla el sistema y el resto de los procesadores esperan que el maestro les dé instrucciones o de
lo contrario estos tienen tareas predefinidas.
Los sistemas más comunes utilizan el multiprocesamiento simétrico (SMP), en el que cada procesador realiza todas
las tareas correspondientes al SO, siendo todos los procesadores iguales.
Las diferencias entre estos dos tipos de multiprocesadores pueden darse según sus versiones específicas de
hardware o software.
Los servidores blade son aquellos en donde se le colocan múltiples procesadores, tarjetas de E/S y tarjetas de red
un mismo chasis. Cada procesador arranca independientemente y ejecuta su propio SO.

Multiprogramación

Uno de los aspectos más importantes de los SO es la capacidad para multiprogramar. La multiprogramación
incrementa el uso de la CPU organizando los trabajos de modo que la CPU siempre tenga uno que ejecutar.
La idea es la siguiente: el SO mantiene en memoria simultáneamente varios trabajos, este toma y comienza a
ejecutar uno de los trabajos que están en memoria. Eventualmente, el trabajo tiene que esperar a que se complete otra
tarea y en ese casa el SO simplemente cambia de trabajo y ejecuta otro y así sucesivamente. Mientras haya al menos un
trabajo que necesite ejecutarse, la CPU nunca estará inactiva.
Los sistemas multiprogramados proporcionan un entorno en el que los recursos se usan eficazmente aunque no
proporcionan ninguna interacción con el usuario.

Tiempo compartido(o Multitarea)

Es una extensión lógica de la multiprogramación. En estos, la CPU ejecuta múltiples trabajos conmutando entre
ellos haciendo que los usuarios puedan ejecutar sus programas mientras sucede esto.
El tiempo compartido requiere de un sistema informático interactivo, que proporcione comunicación directa entre
el usuario y el sistema. Este tipo de sistema es usado para que el usuario suministre directamente instrucciones al SO y
reciba su petición mediante dispositivos de E/S.
Estos sistemas emplean mecanismos de multiprogramación y planificación de CPU para proporcionarle al usuario
una pequeña parte de la computadora para que pueda ser compartida por múltiples usuarios.
El tiempo compartido y la multiprogramación requieren mantener simultáneamente en memoria varios trabajos.
Para esto utilizan la cola de trabajos, en la que contienen todos los procesos que residen en disco esperando la

2
Downloaded by Geral Diaz (geraldinegeri11@gmail.com)
lOMoARcPSD|15103112

Sistemas Operativos

asignación de la memoria principal. Si hay varios procesos queriendo entrar en memoria, y hay poco espacio el sistema
es el encargado de realizar la selección a la que se denomina planificación de trabajos.
En estos tipos de sistemas, el tiempo de respuesta debe ser razonable. Esto se hace mediante un mecanismo de
intercambio donde los procesos se intercambian entrando y saliendo de la memoria al disco. Otro mecanismo es la de
memoria virtual, que es una técnica que permite la ejecución de un programa que no está completamente cargado en
memoria haciendo posible la carga de un programa que sea más grande que la memoria física real.
Los sistemas de tiempo compartido también tienen que proporcionar un sistema de archivos. Estos residen en una
colección de discos, en donde se deben tener mecanismos de gestión de los mismos para que protejan los recursos
frente a usos inapropiados.

Sistemas Distribuidos

Es una colección de computadoras físicamente separadas y posiblemente heterogéneas que están conectadas en
red para proporcionar a los usuarios diversos recursos que el sistema mantiene. Algunos SO generalizan el acceso a red
como una forma de acceso a archivos manteniendo los detalles de la conexión de red en el dispositivo de interfaz de red
mientras que otros SO invocan específicamente una seria de funciones de red. Generalmente los sistemas mantienen
una combinación de ambos como el FTP o NFS.
La funcionalidad de los sistemas distribuidos depende de la red que usen. En un SO, un protocolo de red
simplemente necesita en dispositivo de interfaz (adaptador de red) con un controlador de dispositivo que lo gestione y
un software para tratar los datos.
Un Sistema Operativo de Red es un SO que proporciona funcionalidades como la compartición de archivos a través
de la red y que incluye un esquema de comunicación que permite a diferentes procesos, en diferentes computadoras,
intercambiar mensajes.

Red: vía de comunicación entre dos o más sistemas. Las redes varían según el protocolo que usen, las
distancia entre nodos y el medio de transporte. TCP/IP es el más usado.

Sistemas de tiempo real

Estos sistemas suelen tener tareas muy específicas, proporcionando funcionalidades limitadas. Usualmente
disponen de una interfaz de usuario muy limitada o no disponible, prefiriendo invertir su tiempo en monitorizar y
gestionar dispositivos de hardware.
Los sistemas embebidos casi siempre ejecutan SO de tiempo real. Estos se usan cuando se han establecidos rígidos
requisitos de tiempo en la operación de un procesador o del flujo de datos (el procesamiento tiene que hacerse dentro
de las restricciones o tiempo definido o sino el sistema fallará), es por eso que estos sistemas se utilizan como
dispositivos de control en una aplicación.

Modos de operación de un Sistema Operativo

Los SO modernos están controlados mediante interrupciones. Una excepción es una interrupción generada por
software, debida a un error o a una solicitud específica de un programa de usuario de que se realice un servicio del SO.
Dado que los SO u los usuarios comparten los recursos hardware y software del sistema informático, necesitamos
asegurar que un error que se produzca en un programa de usuario sólo genere problemas en el programa que se

3
Downloaded by Geral Diaz (geraldinegeri11@gmail.com)
lOMoARcPSD|15103112

Sistemas Operativos

estuviera ejecutando. Para esto, un SO diseñado apropiadamente debe garantizar que en caso de tal error no se
propague a los demás programas.

Operación en modo Dual


Es un método que proporciona soporte de hardware que permite diferenciar entre los modos de ejecución (usuario
y kernel). Para esto se le agrega un bit de modo al hardware de la computadora para indicar si está en modo kernel o
usuario.
El modo Dual nos permite proteger al SO de que los usuarios puedan causar errores y también proteger a los
mismos de los errores de otros usuarios. Para esto, el hardware hace que las solicitudes privilegiadas sólo se ejecuten de
modo kernel, así, si existiera una de modo usuario este enviaría una excepción al SO.
La falta del modo Dual puede dar serios defectos a un SO. Si un programa de usuario falla, el hardware envía una
excepción al SO y esta transfiere el control al SO a través del vector interrupción. Cuando se produce un error de
programa, SO debe terminar al programa anormalmente.

Ciclo de vida de una instrucción


El control se encuentra inicialmente en manos del SO, donde las instrucciones se ejecutan en modo
kernel. Cuando se da el control a una aplicación de usuario, se pasa a modo usuario. Finalmente el control se
devuelve al SO a través de una interrupción, una excepción o una llamada al sistema.

Temporizador
Debemos asegurar que el SO mantenga el control sobre la CPU. Para lograrlo se utiliza un temporizador. Este puede
utilizarse para interrumpir a la computadora después de un período especificado.
Generalmente, se implementa un temporizador variable mediante un reloj de frecuencia fija o un contador. Cuando
el temporizador interrumpe, el control se transfiere automáticamente al SO, que puede tratar a la interrupción como un
error fatal o darle más tiempo al programa. Entonces podemos usar al temporizador para impedir que un programa de
usuario se esté ejecutando por un tiempo excesivo.

Componentes de un Sistema Operativo

Gestión de Procesos

Un programa en ejecución es un proceso, y un proceso es un trabajo o un programa en ejecución en tiempo


compartido. Como proceso, este necesita para llevar a cabo su tarea ciertos recursos, incluyendo tiempo de CPU,
memoria, archivos y dispositivos de E/S. Estos recursos se proporcionan al proceso en el momento de crearlo o se le
asignan mientras se está ejecutando.
Un programa por sí solo no es un proceso, un programa es una entidad pasiva, mientras que un proceso es una
entidad activa. Un proceso de una solo hebra tiene un contador de programa que especifica la siguiente instrucción que
hay que ejecutar. La ejecución de un proceso debe ser secuencial.
Un proceso multihebra tiene múltiples contadores de programa, apuntando cada uno de ellos a la siguiente
instrucción que haya que ejecutar para una hebra determinada.
Un proceso es una unidad de trabajo en un sistema. Cada sistema consta de una colección de procesos, siendo
alguno de esos procesos del SO y el resto de los usuarios. Estos pueden ejecutarse de forma concurrente.

4
Downloaded by Geral Diaz (geraldinegeri11@gmail.com)
lOMoARcPSD|15103112

Sistemas Operativos

El SO es responsable de las siguientes actividades en lo que corresponde a “gestión de procesos”:


o Crear y borrar los procesos de usuarios y del sistema
o Suspender y reanudar los procesos
o Proporcionar mecanismos para la sincronización de procesos
o Proporcionar mecanismos para la comunicación de procesos
o Proporcionar mecanismos para el tratamiento de interbloqueos

Gestión de la Memoria Principal

La memoria principal es una matriz de palabras o bytes cuyo tamaño se encuentra en el rango de cientos de miles
de millones de posiciones distintas. Cada palabra o byte tiene su propia dirección.
La memoria principal es un repositorio de datos rápidamente accesibles, compartida por la CPU y los dispositivos de
E/S. Para que un programa pueda ejecutarse debe estar asignado a direcciones absolutas y cargado en memoria.
Para mejorar tanto la utilización de la CPU como la velocidad de respuesta de la computadora se deben tener
mecanismo para gestionar la memoria principal, para esto el SO brinda las siguientes funciones:

o Controlar qué partes de la memoria están actualmente en uso y por parte de quién
o Decidir qué datos y procesos añadir o extraer de la memoria
o Asignar y liberar la asignación de espacio de memoria según sea necesario

Gestión de Almacenamiento Secundario

El sistema informático debe proporcionar un almacenamiento secundario como respaldo de la memoria principal.
La mayor parte de los programas se almacenan en un disco hasta que se cargan en memoria, y luego usan el disco como
origen y destino de sus procesamientos.
El SO es responsable de lo siguiente en cuanto a gestión de almacenamiento secundario:
o Gestión del espacio libre
o Asignación de espacio de almacenamiento
o Planificación del disco

Administración de Archivos

Un archivo es una colección de información relacionada definida por su creador. Comúnmente representan
programas y datos. Pueden tener un formato libre o un formato rígido. Estos archivos normalmente se organizan en
directorios para hacer más fácil su uso.
El SO es responsable de las siguientes actividades en lo que se refiere a la administración de archivos:
o Creación y borrado de archivos
o Creación y borrado de directorios para organizar los archivos
o Soporte de primitivas para manipular archivos y directorios
o Asignación de archivos a los dispositivos de almacenamiento secundario
o Copia de seguridad de los archivos en medios de almacenamiento estables

5
Downloaded by Geral Diaz (geraldinegeri11@gmail.com)
lOMoARcPSD|15103112

Sistemas Operativos

Administración del Sistema de E/S

Uno de los propósitos de los SO es ocultar al usuarios la peculiaridades de los dispositivos hardware físicos. Para
cuenta con un subsistema de E/S que cuenta con varios componentes:
 Un componente de gestión de memoria que incluye almacenamiento en búfer, gestión de caché
y gestión de colas
 Una interfaz general para controladores de dispositivo
 Controladores para dispositivos hardware específicos

Protección y Seguridad
El acceso a datos debe regularse, para esto se emplean mecanismo que aseguren que sólo pueden utilizar los
recursos aquellos procesos que hayan obtenido la apropiada autorización del SO.
Protección es cualquier mecanismo que controle el acceso de procesos y usuarios a los recursos definidos por un
sistema informático. Este mecanismo debe proporcionar los medios para la especificación de los controles que hay que
imponer y para la aplicación de dichos controles.
Es responsabilidad de los mecanismos de seguridad defender al sistema frente a ataques internos y externos. La
prevención de algunos de estos ataques es función de los SO en algunos sistemas, mientras que en otros es
responsabilidad de algún software adicional.
La protección y la seguridad requieren que el sistema pueda distinguir a todos sus usuarios. La mayoría de los SO
mantienen una lista con los nombres de usuarios y sus identificadores de usuarios (id) asociados.
La funcionalidad de grupo se puede implementar manteniendo en el sistema una lista de nombres de grupo e
identificadores de grupo. Un usuario puede pertenecer a uno o más grupos, dependiendo de las decisiones de diseño
del SO.

Redes de Comunicaciones

Red: vía de comunicación entre dos o más sistemas. Las redes varían según el protocolo que usen, las distancia
entre nodos y el medio de transporte. TCP/IP es el más usado.
Las redes se caracterizan en función de las distancias entre sus nodos. Una red de área local (LAN) conecta una serie
de computadoras que se encuentran en una misma habitación, planta o edificio. Normalmente, una red de área
expandida (WAN) conecta edificios, ciudades y hasta países. En estos tipos de redes se conectan con distintos protocolos
y constantemente se están actualizando y dando a aparecer nuevos tipos de redes como la red de área metropolitana
(MAN) pudiendo conectar distintos edificios de distintas ciudades.
Los dispositivos BLueTooth y 802.11 utilizan tecn0ologías de comunicación de pocos metros formando una red de
área pequeña.
Los soportes físicos incluyen cobre, fibra óptica, transmisiones inalámbricas, antenas de microondas y aparatos de
radio. A medida rústica, siempre que las computadoras se comuniquen estarán usando o creando algún tipo de red que
varían en cuanto a su rendimiento y fiabilidad.

6
Downloaded by Geral Diaz (geraldinegeri11@gmail.com)
lOMoARcPSD|15103112

Sistemas Operativos

Intérpretes de Comandos

El intérprete de comandos permite introducir directamente comandos que el SO pueda ejecutar.


Algunos SO incluyen el intérprete de comandos en el kernel, mientras que en los SO iterativos, tratan al intérprete
de comandos como un programa especial que se ejecuta cuando se inicia un trabajo o cuando un usuario inicia sesión.
En los SO que disponen de varios intérpretes de comandos estos son conocidos como shells.
La función principal del intérprete de comando es obtener y ejecutar el siguiente comando especificado por el
usuario, muchos de estos para manipular archivos, teniendo dos formas de implementarse; la primera consiste en el que
el propio intérprete tiene el código que el comando debe ejecutar; la segunda, es que el comando se implementa a
través de una serie de programas del sistema.
Otra forma que permite al usuario interactuar con el SO es mediante una interfaz gráfica de usuario o GUI.
Una GUI, permite a los usuarios emplear un sistema de ventanas y menús controlables a través del ratón,
proporcionando una especie de escritorio en donde el usuario mueve el ratón para seleccionar iconos que representan
programas y demás del sistema.

Servicios del Sistema Operativo


El SO proporcionan los siguientes servicios para ser útil al usuario:
 Interfaz de usuario: La interfaz de líneas de comandos permite al usuario introducir y editar comandos. La
interfaz de procesos por lotes es la posibilidad de introducir comandos y directivas por medio de archivos
y luego poder ejecutar los mismos. La más habitual es la interfaz gráfica de usuario.
 Ejecución de programas: El sistema tiene que poder cargar el programa en memoria y ejecutar dicho
programa.
 Operaciones de E/S: Un programa en ejecución puede necesitar llevar a cabo operaciones de E/S, dirigidas
a un archivo o a un dispositivo de E/S. Como lo usuarios no pueden controlar de modo directo a los
dispositivos de E/S el SO debe proporcionar los medios para que puedan interactuar con los mismos.
 Manipulación del sistema de archivos: Los programas necesitan leer, escribir, crear, borrar, buscar en
archivos y directorios para lo que el SO debe presentar los medios para que se realicen estas acciones.
 Comunicaciones: Estas se pueden implementar utilizando memoria compartida o mediante el paso de
mensajes (procedimiento en el que el SO transfiere paquetes de información entre unos procesos a otros).
 Detección de errores: El SO necesita detectar constantemente los posibles errores. Estos pueden
producirse en el hardware del procesador y de memoria, en un dispositivo de E/S o en los programas de
usuarios. Para cada tipo de error el SO debe llevar a cabo la acción apropiada para asegurar en
funcionamiento correcto y coherente.
Hay otros conjuntos de funciones que garantizan la eficiencia del propio sistema. Los sistemas con múltiples
usuarios pueden ser más eficientes cuando se comparten los recursos del equipo entre los distintos usuarios:
 Asignación de recursos: El SO gestiona gran cantidad de recursos, algunos pueden disponer de código
especial software que gestione su asignación mientras que otros pueden tener código general que
gestione su asignación y liberación.
 Responsabilidad: Conviene hacer un seguimiento de qué usuarios emplean qué clases de recursos de la
computadora y en qué cantidad.
 Protección y seguridad: Esto implica asegurar que todos los accesos a los recursos estén controlados y
garantizar que el sistema este protegido frente a posibles intrusos.

7
Downloaded by Geral Diaz (geraldinegeri11@gmail.com)
lOMoARcPSD|15103112

Sistemas Operativos

Llamadas al Sistema

Concepto
Las llamadas al sistema proporcionan un interfaz con la que se puede invocar los servicios que el SO ofrece.
Generalmente están escritas como rutinas en C y C++.
El sistema de soporte en tiempo de ejecución de la mayoría de los lenguajes de programación proporciona una
interfaz de llamadas al sistema que sirve como enlace con las llamadas al sistemas disponible en el SO. Esta intercepta
las llamadas a función dentro de las API (es un programa de interfaz de programación de aplicaciones que ayuda al
programador mediante un conjunto de aplicaciones especificadas) e invoca la llamada al necesaria. Habitualmente cada
llamada tiene asociado en número y la interfaz de llamada al sistema tiene una tabla indexada según dichos números.
Usando esa tabla, la interfaz de llamadas al sistema invoca las llamadas necesarias del kernel des SO y devuelve el estado
de la ejecución de la llamada y los posibles valores de retorno.
Las llamadas al sistema se llevan a cabo de diferentes formas, dependiendo de la computadora que se utilice. Para
pasar parámetros al SO se emplean tres métodos generales:
1. El más sencillo, consiste en pasar los parámetros en una serie de registros, sin embargo, puede
haber más parámetros que registros.
2. En el caso de que haya más parámetros que registros, los parámetros se almacenan en un
bloque en memoria, y la dirección del bloque se pasa como parámetro de un registro (utilizado por LINUS y
SOLARIS)
3. El programa puede insertar los parámetros en pilas en donde el SO se encargará de extraer de la
pila estos parámetros.

Tipos

Control de procesos: Un programa en ejecución necesita poder interrumpir dicha ejecución en forma normal (end)
o en forma anormal (abort). Cuando sucede de tener que interrumpir el sistema de forma anormal en ocasiones se
produce un volcado a memoria y se genera un mensaje de error. La información del volcado se escribe en disco y un
depurador determina la causa del problema. En cualquiera de estos casos el SO debe transferir el control al intérprete
de comando que realizó la invocación del programa en donde el intérprete leerá la siguiente instrucción de acuerdo al
SO utilizado (Sistema iterativo el intérprete de comando sigue con la siguiente comando tomando como obvio que el
usuario ingresará un comando adecuado para responder al error; En GUI una ventana emergente la indicará al usuario
del error y le pedirá que ingrese la acción para continuar; En un sistema de procesamiento por lotes el intérprete de
comando dará por terminado todo el trabajo y continuará con el siguiente trabajo).- Un proceso o trabajo que ejecute
un programa puede cargar (load) y ejecutar (execute) otro programa. Si el control vuelve al programa anterior cuando
el nuevo programa termina, tenemos que guardar la imagen de memoria del programa existente creando un mecanismo
para que un programa llame a otro. Si ambos programas están en ejecución habremos creado un nuevo trabajo que
deberá ser controlado por los mecanismos de multiprogramación. Este control requiere la capacidad de determinar y
restablecer los atributos de un trabajo o proceso, incluyendo la prioridad de trabajo, el tiempo máximo de ejecución
permitido, etc. ( get process attributes y set process attributes). También podemos necesitar terminar un
trabajo que hayamos creado (terminate process).- Muchos sistemas proporcionan llamadas al sistema para volcar la
memoria (dump) sirviendo de mucho para la actividad de depuración.
 Administración de archivos: Necesitamos poder crear (create) y borrar (delete) archivos. Estos requieren
que se proporcionen el nombre del archivo y quizás algunos atributos de los mismos. Un vez creado

8
Downloaded by Geral Diaz (geraldinegeri11@gmail.com)
lOMoARcPSD|15103112

Sistemas Operativos

necesitamos abrirlo (open), escribir (write) o reposicionarlo (reposition).- También podemos hacer estas
operaciones con directorios si es que disponemos de una estructura de directorio en el sistema de archivos.-
Existen otras llamadas para mover (move) y copiar (copy) archivos.
 Administración de dispositivos: Un proceso puede necesitar varios recursos para ejecutarse: memoria
principal, unidades de disco, acceso a archivos, etc. Si los recursos están disponibles pueden ser concedidos y
el control puede devolverse al proceso de usuario. En caso contrario, el proceso tendrá que esperar hasta que
haya suficientes recursos disponibles. Para solicitar (request) y para liberarlo (relese).
 Mantenimiento de información: Existen llamadas con el propósito de transferir información entre programas
de usuario y el sistema operativo, como hora (time) y la fecha (date). Otras llamadas pueden devolver
información al sistema. Además, el SO mantiene información sobre todos sus procesos, y sus llamadas al
sistema para obtener información.
 Comunicaciones: Existen dos tipo de modelos:
 Modelo de pase de mensajes: los procesos se comunican entre sí para transferir
información. Antes de que la comunicación tenga lugar, debe abrirse la conexión
(open connection y close connection). Cada proceso tiene un nombre de proceso
y este se traduce en un identificador el cual el SO puede hacer referencia al mismo
(get hostid y get processid). El proceso receptor debe conceder el permiso
(accept connection).
 Modelo de memoria compartida: los procesos usan las llamada al sistema shared
memory create y shared memory attach para crear y obtener acceso a regiones de
la memoria que son propiedad de otros procesos. Como el SO intenta evitar que un
proceso acceda a la memoria de otro, este modelo requiere que los procesos
involucrado acuerden eliminar esta restricción.
El modelo de paso de mensajes resulta útil para intercambiar cantidades pequeñas de datos, es más fácil de
implementar que el modelo de memoria compartida, pero este modelo permite efectuar la comunicación con mayor
velocidad y con mayor comodidad, sin embargo plantea problemas en lo relativo a la protección y sincronización entre
los procesos que comparten memoria.

Estructuras

Un Sistema Operativo moderno debe hacerse cuidadosamente para que el sistema funcione apropiadamente y
pueda modificarse con facilidad. Un método habitual es dividir la tarea en módulos bien definidos del sistema, con
entradas, salidas y funciones cuidadosamente especificadas.

Estructura Simple o Monolítica

Muchos SO comienzan siendo sistemas pequeños, simples y limitados y luego crecen más allá de su ámbito original.
Un ejemplo es el MS-DOS, en donde las interfaces y los niveles de funcionalidad no están separados, haciendo que este
sea vulnerable a programas erróneos produciendo que el sistema completo falle ante un programa de usuario.
Otro ejemplo de estructuración limitada es el del SO de UNIX. Este consta de dos partes separadas: el kernel y los
programas del sistema.
Esta estructura monolítica era difícil de implementar y mantener.

9
Downloaded by Geral Diaz (geraldinegeri11@gmail.com)
lOMoARcPSD|15103112

Sistemas Operativos

Kernel: Es todo lo que está por debajo de la interfaz de llamada al sistema y por encima del hardware
físico. Proporciona el sistema de archivos, los mecanismos de planificación de la CPU, la funcionalidad de
gestión de memoria y otras funciones del SO a través de las llamadas al sistema. Todas estas funcionalidades
combinadas en un solo nivel.

Estructura Jerárquica o en Niveles

Con el soporte hardware apropiado, los SO pueden dividirse en partes más pequeñas, pudiendo mantener un
control mucho mayor sobre la computadora y sobre las aplicaciones que hacen uso de dicha computadora.
Un sistema puede hacerse modular de muchas formas. Un posible método es mediante una estructura en niveles
en donde el SO se divide en una serie de capas (niveles). El nivel inferior (nivel 0) es el hardware y el nivel superior (nivel
N) es la interfaz de usuario. Un nivel de un SO es un implementación de un objeto abstracto formado por una serie de
datos y por las operaciones que permiten manipular dichos datos.
La principal ventaja de la estructura de niveles es la simplicidad de construcción y depuración. Los niveles se
seleccionan de modo que cada uno use funciones y servicios de los niveles inferiores. De esta manera, el primer nivel
puede depurarse sin afectar al resto. Cuando se detecta algún error se concluye con que el nivel que está depurando es
el del problema y no afectará a los demás.
La principal dificultad que esta estructura presenta es la definición de los adecuados niveles haciéndose necesario
un planificación cuidadosa. Un último problema con las implementaciones por nivel es que tienden a ser menos
eficientes que otros tipos de implementaciones.

Microkernels

A mediados de los años 80 se desarrollo un SO denominado “match” que modularizaba el kernel usando lo que se
denomina microkernel. Este método elimina todos los componentes no esenciales del kernel y los implementa como
programas de sistema y de nivel de usuario, produciendo un kernel mucho más pequeño.
La función principal del microkernel es proporcionar un mecanismo de comunicaciones entre el programa cliente y
los distintos servicios que se ejecuten también en el espacio de usuario. La comunicación se proporciona mediante el
paso de mensajes. El programa cliente y el servicio nunca interactúa directamente, sino que lo hacen indirectamente
intercambiando mensajes con el microkernel.
Otra ventaja es la facilidad para ampliar el SO. Todos los servicios nuevos se añaden al espacio de usuario. Este
microkernel también proporciona mayor seguridad y fiabilidad haciendo que si un servicio falla no afecte al resto del SO.
Lamentablemente el microkernel puede tener un rendimiento peor que otras soluciones, debido a la carga del
procesamiento adicional impuesta por las funciones del sistema.

Máquinas Virtuales

La idea fundamental que subyace a una máquina virtual es la de abstraer el hardware de la computadora, formando
varios entornos de ejecución diferentes, creando así la ilusión de que cada entorno de ejecución está operando en su
propia computadora privada.
Una de las dificultades del método de máquina virtual son los sistemas de disco (espacio físico de almacenamiento
de la máquina real y las virtuales). La solución consiste en brindar discos virtuales, denominados minidiscos en el SO VM
de IBM. La suma de los tamaños de los minidiscos deberá ser menor o igual que la del disco físico (real).

10
Downloaded by Geral Diaz (geraldinegeri11@gmail.com)
lOMoARcPSD|15103112

Sistemas Operativos

Cuando los usuarios disponen de sus propias máquinas virtuales, pueden ejecutar cualquiera de los SO o paquetes
de software disponibles en la máquina subyacente. El software de la máquina virtual se ocupa de multiprogramar las
múltiples máquinas virtuales sobre una única máquina física, no preocupándose de ningún aspecto relativo al software
de soporte de usuario.

Implementación

Recordamos que la máquina subyacente tiene dos modos: el kernel y el usuario. El software de la máquina virtual
puede ejecutarse en modo kernel y la máquina virtual puede ejecutarse sólo en modo usuario. Sin embargo, también
tiene que tener los dos modos la máquina virtual, por consiguiente hay que tener un modo usuario virtual y un modo
kernel virtual ejecutándose ambos en modo usuario físico.
VM funciona en máquinas IBM porque las instrucciones normales de las máquinas virtuales pueden ejecutarse
directamente por hardware. Sólo las instrucciones privilegiadas deben simularse, y por tanto, se ejecutan más
lentamente.

Beneficios

Cada máquina virtual está completamente aislada de las demás por lo que no existen problemas de protección. Sin
embargo, no es posible compartir los recursos de las máquinas. Para esto se podría: Primero, compartir un minidisco con
el mismo concepto de compartición de discos físicos. Segundo, se podría crear una red de máquinas virtuales.
Un sistema de máquinas virtuales es un medio perfecto para la investigación y el desarrollo de SO. Dado que el SO
se ejecuta en modo kernel, un cambio erróneo en un puntero podría dar lugar a un error que destruyera el sistema de
archivos completo.
Un SO opera y controla la máquina completa, por lo que el sistema actual debe detenerse y quedar fuera de uso
mientras que se realizan cambios y se prueban.

Ejemplos

VMware: Es una popular aplicación comercial que abstrae el hardware 80x86 de Intel, creando una serie de
máquinas virtuales aisladas. VMware se ejecuta como una aplicación sobre un sistema operativo host, tal como
Windows o Linux, y que permite al sistema host ejecutar de forma concurrente varios SO huéspedes diferentes como
máquinas virtuales independientes.

Máquina Virtual Java: Java es un popular lenguaje de programación orientado a objetos pero también proporciona
una especificación para una máquina virtual Java, JVM.

11
Downloaded by Geral Diaz (geraldinegeri11@gmail.com)
lOMoARcPSD|15103112

Sistemas Operativos

UNIDAD II
Gestión de procesos
Descripción y control de procesos
Concepto de proceso
Un proceso es un programa en ejecución, es la unidad de trabajo en los sistemas modernos de tiempo compartido.
Un sistema está formado por una colección de procesos: procesos del SO que ejecutan código del sistema y procesos de
usuario que ejecutan código de usuario.
Generalmente, un proceso incluye la pila del proceso, que tiene datos temporales, y una sección de datos, que
contiene las variables globales. El proceso puede incluir un cúmulo de memoria, que es la memoria que se asigna
dinámicamente a los procesos en tiempo de ejecución.
Los sistemas de procesamiento por lotes ejecutan trabajos, mientras que un sistema de tiempo compartido tiene
programas de usuario o tareas.
Aunque el usuario pueda ejecutar un programas a la vez, el SO tiene que dar soporte a sus propias actividades
internas. Todas estas actividades se llaman procesos.
Un programa por sí mismo no es un proceso, es una entidad pasiva, un archivo que contiene una lista de
instrucciones almacenadas en el disco, mientras que un proceso es una entidad activa, con un contador de programa
que especifica la siguiente instrucción que hay que ejecutar y conjunto de recursos asociados. Un programa se convierte
en proceso una vez que carga en memoria un archivo ejecutable.

Estados de un proceso
A medida que se ejecuta un proceso, este va cambiando de estado. El estado de un proceso se define, en parte,
según la actividad actual de dicho proceso. Cada proceso puede estar en uno de los siguientes estados:
 Nuevo: El proceso está siendo creado.
 En ejecución: Se está ejecutando las instrucciones.
 En espera: El proceso está esperando a que suceda un proceso.
 Preparado: El proceso está a la espera de que le asignen un procesador.
 Terminado: Ha terminado la ejecución del proceso.
“Sólo puede haber un proceso ejecutándose en cualquier procesador en cada instante concreto, sin embargo puede
haber muchos procesos preparados y en espera”.

12
Downloaded by Geral Diaz (geraldinegeri11@gmail.com)
lOMoARcPSD|15103112

Sistemas Operativos

Bloque de control de un proceso


Cada proceso se representa en SO mediante un bloque de control de proceso (PCB) que incluye los siguientes
elementos de información:
 Estado del proceso: Este puede ser: nuevo, en ejecución, en espera, preparado o terminado.
 Contador de programa: Indica la dirección de la siguiente instrucción que va a ejecutar dicho proceso.
 Registro de la CPU: Incluyen los acumuladores, registro de índice, punteros de pila y registro de propósito
general, además de toda la información de los indicadores de estado. Esta información debe guardarse
junto con el contador de programa cuando se produce una interrupción, para que luego el proceso pueda
continuar ejecutándose correctamente.
 Información de planificación de la CPU: Esta información incluye la prioridad de procesos, los punteros a
las colas de planificación y cualesquiera otros parámetros de planificación que se requieran.
 Información de gestión de memoria: Incluye información acerca del valor de los registros base y límite,
las tablas de páginas o tablas de segmentos.
 Información contable: Esta información incluye la cantidad de CPU y de tiempo real empleados, los
límites de tiempo asignados, los números de cuenta, el número de trabajo o de proceso, etc.
 Información del estado E/S: Incluye información de la lista de los dispositivos E/S asignados a los
procesos, una lista de archivos abiertos, etc.

Procesos concurrentes
Los procesos del sistema pueden ejecutarse concurrentemente, es decir, puede haber múltiples tareas en la UCP
con varios procesos. Existen varias razones para permitir la ejecución concurrente:
 Compartir recursos físicos: y que los recursos hardware son limitados.
 Compartir recursos lógicos: puesto que varios usuarios pueden interesarse en el mismo elemento
informático.
 Acelerar los cálculos: si queremos que una tarea se ejecute con mayor rapidez, debemos dividirla en
subtareas, cada una de las cuales se ejecutará en paralelo.
 Modularidad: construyendo el sistema de manera modular.
 Comodidad: ejecutando varias tareas a la vez.
“La ejecución concurrente que requiere la cooperación entre procesos necesita un mecanismo para la sincronización
y comunicación de procesos”.

Procesos y Multiprogramación
El objetivo de la multiprogramación es tener en ejecución varios procesos al mismo tiempo con el fin de maximizar
la utilización de la CPU. El objetivo de los sistemas de tiempo compartido es conmutar la CPU entre los distintos
procesos con tanta frecuencia que los usuarios puedan interactuar con cada programa mientras éste se ejecuta. Para
conseguir estos objetivos, el planificador de procesos selecciona un proceso disponible para ejecutar el programa en la
CPU.

Colas de trabajo
A medida que los procesos entran al sistema, se colocan en una cola de trabajos que contiene todos los procesos del
sistema. Los procesos que residen en la memoria principal y están preparados y en espera de ejecutarse se mantienen
en una lista denominada cola de procesos preparados. Generalmente esta cola se almacena en forma de lista enlazada.
El sistema también incluye otras colas. La lista de procesos de un determinado dispositivo de E/S se denomina cola
de dispositivo. Cada dispositivo tiene su propia cola.

13
Downloaded by Geral Diaz (geraldinegeri11@gmail.com)
lOMoARcPSD|15103112

Sistemas Operativos

Hay dos tipos de colas: la cola de procesos preparados y un conjunto de colas de dispositivo.

Planificadores
Durante su tiempo de vida, los procesos se mueven entre las diversas colas de planificación. El SO debe seleccionar
de alguna manera los procesos que se encuentran en esta cola. La selección se realiza mediante un planificador
apropiado.
En un sistema de procesamiento por lotes, se envían más procesos de los que pueden ser ejecutados de forma
inmediata. Estos procesos se guardan en una cola.
El planificador a largo plazo o planificador de trabajos selecciona procesos de esta cola y los carga en memoria para
su ejecución. Este debe seleccionar un nuevo proceso para la CPU frecuentemente. Un proceso puede ejecutarse sólo
durante unos pocos milisegundos antes de tener que esperar por una solicitud de E/S, por lo que este planificador debe
ser rápido.

El planificador a corto plazo o planificador de la CPU selecciona de entre los procesos que ya están preparados para
ser ejecutados y la CPU a uno de ellos. Este se ejecuta con mucho menos frecuencia por lo que debe hacer una selección
cuidadosa. Es encardo de controlar el grado de multiprogramación (números de procesos en memoria).
La mayoría de los procesos pueden describirse como: procesos limitados por E/S (aquel que invierte la mayor parte
de su tiempo en operaciones de E/S en lugar de realizar cálculos); procesos limitados por la CPU (genera solicitudes de
E/S con poca frecuencia usando la mayor parte de su tiempo a realizar cálculos).
Si todos los procesos son limitados por la E/S, la cola de procesos preparados casi siempre estará vacía y el
planificador a corto plazo tendrá poco que hacer. Si todos los procesos son limitados por la CPU, la cola de espera de E/S
casi siempre estará vacía, los dispositivos apenas se usarán, y de nuevo el sistema se desequilibrará. Para obtener un
mejor rendimiento, el sistema dispondrá de una combinación equilibrada de procesos limitados por la CPU y de
procesos limitados por E/S.

Cambio de contexto
Las interrupciones hacen que el SO obligue a la CPU a abandonar su tarea actual, para ejecutar una rutina del kernel.
Cuando se produce una interrupción, el sistema tiene que guardar el contexto actual de proceso que se está ejecutando
en la CPU, de modo que pueda restaurar dicho contexto cuando su procesamiento concluya, suspendiendo el proceso y
reanudándolo después.
La conmutación de la CPU a otro proceso requiere una salvaguarda del estado del proceso actual y una restauración
del estado de otro proceso diferente. Esta tarea se conoce como cambio de contexto. El kernel guarda el contexto del
proceso antiguo en su PCB y carga el contexto almacenado del nuevo proceso que se ha decidido ejecutar.
El tiempo dedicado es tiempo desperdiciado. La velocidad del cambio de contexto varía de una máquina a otra, pero
las velocidades típicas son del orden de unos pocos milisegundos.
También, cuanto más complejo es el SO más trabajo se debe realizar durante un cambio de contexto.

Creación de procesos
Un proceso puede crear otros procesos mientras se ejecuta; para ello se utiliza una llamada al sistema. El proceso
creador se denomina padre, mientras que los nuevos procesos son hijos de dicho proceso. Cada uno de estos nuevos
procesos puede a su vez crear nuevos procesos, dando lugar a un árbol de procesos.
La mayoría de los SO identifican a los procesos mediante un identificador de proceso unívoco o pid, que
normalmente es un número entero.

14
Downloaded by Geral Diaz (geraldinegeri11@gmail.com)
lOMoARcPSD|15103112

Sistemas Operativos

En general, un proceso necesitará ciertos recursos para llevar a cabo sus tareas. Cuando un proceso crea un
subproceso puede obtener sus recursos directamente del SO o puede estar restringido a un subconjunto de los recursos
del padre. El padre puede tener que repartir sus recursos entre sus hijos o bien compartir algunos de ellos con algunos
de sus hijos.
Además, el padre puede pasar datos de inicialización al proceso hijo. Cuando un proceso crea un nuevo proceso
existen dos posibilidades de términos de ejecución:
1º El padre continúa ejecutándose concurrentemente con su hijo
2º El padre espera hasta que alguno o todos sus hijos han terminado de ejecutarse
También existen dos posibilidades en función del espacio de direcciones del nuevo proceso:
1º El hijo es un duplicado del padre (usa el mismo programa y los mismos datos)
2º El hijo carga un nuevo programa

Terminación de procesos
Un proceso termina cuando ejecuta su última instrucción y pide al SO que lo elimine. En este momento, el proceso
puede devolver un valor de estado a su padre. El SO libera la asignación de todos los recursos del proceso, incluyendo
las memorias física y virtual, los archivos abiertos y los búferes de E/S.
También, un proceso puede causar la terminación de otro proceso a través de las adecuadas llamadas al sistema.
Normalmente, dicha llamada sólo puede ser invocada por al padre del proceso que se va a terminar. Es por esto, que un
padre necesita conocer las identidades de sus hijos.
Un padre puede terminar la ejecución de uno de sus hijos por diversas razones:
 El hijo ha excedido el uso de algunos de los recursos que se le han asignado.
 La tarea asignada al hijo ya no es necesaria.
 El padre abandona el sistema, y al SO no permite que un proceso hijo continúe si su padre ya ha terminado.

Comunicación Interprocesos
Los procesos que se ejecutan concurrentemente pueden ser procesos independientes u procesos cooperativos. Un
proceso es independiente si no puede afectar o verse afectado por los restantes procesos que se ejecutan en el sistema
(no comparte datos con ningún otro proceso). Un proceso es cooperativo si puede afectar o verse afectado por los
demás procesos que se ejecutan en el sistema (comparte datos con otros procesos).
Hay ciertas razones que proporcionan un entorno que permita la cooperación entre procesos:
 Compartir información: varios usuarios pueden estar interesados en la misma información.
 Acelerar los cálculos: si queremos que una tarea se ejecute rápido, debemos dividirla en subtareas ejecutando
cada una de ellas en paralelo con las demás.
 Modularidad: podemos querer construir un sistema de forma modular.
 Conveniencia: un usuario puede trabajar unas múltiples tareas a la vez.
La cooperación entre procesos requiere mecanismos de comunicación interprocesos (IPC) que les permitan
intercambiar datos e información. Existen dos modelos fundamentales de comunicación interprocesos: memoria
compartida y paso de mensajes (UNIDAD I). Los dos modelos son bastante comunes en los distintos SO y muchos de
estos sistemas implementan los dos modelos.

Hilos
Procesos e hilos
Como veníamos suponiendo que un proceso era un programa en ejecución con una sola hebra de control, ahora, la
mayoría de los SO proporcionan características que permiten que un proceso tenga múltiples hebras de control.

15
Downloaded by Geral Diaz (geraldinegeri11@gmail.com)
lOMoARcPSD|15103112

Sistemas Operativos

Un hilo (hebra) es una unidad de utilización de la CPU. Comprende un ID de hebra, un contador de programa, un
conjunto de registros y una pila. Comparte con otras hebras que pertenecen al mismo proceso la sección de código, la
sección de datos y otros recursos del SO. Un proceso tradicional tiene una sola hebra de control. Si un proceso tiene
múltiples hebras de control puede realizar más de una tarea a la vez.

Modelos multihilos
El soporte para la hebras de usuario se proporciona por encima del kernel y las hebras se gestionan son soporte del
mismo, mientras que el SO soporta y gestiona directamente las hebras del kernel. Casi todos los SO (Windows XP, Linux,
Mac OS X, Solaris y Tru64 UNIX) soportan las hebras del kernel.
VENTAJAS:
1. Capacidad de respuesta: El uso de múltiples hebras en una aplicación interactiva permite que un programa siga
ejecutándose incluso aunque parte de él este bloqueado o realizando una actividad muy larga, lo que
incrementa la capacidad de respuesta del usuario.
2. Compartición de recursos: Las hebras comparten memoria y recursos del proceso al que pertenecen
permitiendo a una aplicación tener varias hebras de actividades diferentes dentro del mismo espacio de
direcciones.
3. Economía: Las hebras al compartir recursos es más económico que crear y realizar cambios de contexto entre
unas y otras hebras.
4. Utilización sobre arquitecturas multiprocesador: Incrementadas significativamente en una arquitectura
multiprocesador, donde las hebras pueden ejecutarse en paralelo en los diferentes procesadores.
Debe existir una relación entre las hebras de usuarios y las hebras del kernel.

MODELO MUCHO-A-UNO

Asigna múltiples hebras de usuario a una hebra del kernel. La gestión de hebras se hace mediante la biblioteca de
hebras en el espacio de usuario, por lo que resulta eficiente, pero el proceso completa se bloquea se una hebra realiza
una llamada bloqueante al sistema. También, dado que sólo una hebra puede acceder al kernel cada vez, no podrán
ejecutarse varias hebras en paralelo sobre múltiples procesadores. Este modelo permite al programador crear tantas
hebras como el desee pero no se consigue una concurrencia total.

MODELO UNO-A-UNO

Asigna cada hebra de usuario a una hebra del kernel permitiendo que se ejecute otra hebra mientras una hebra hace
una llamada bloqueante al sistema. También permite que se ejecute múltiples hebras en paralelo sobre varios
procesadores. El único inconveniente es que crear una hebra de usuario requiere crear la correspondiente hebra del
kernel. Este modelo permite una mayor concurrencia pero el desarrollador debe tener cuidado de no crear demasiadas
hebras dentro de una aplicación. (Windows, Linux)

MODELO MUCHOS-A-MUCHOS

Multiplex a muchas hebras de usuario sobre un número menor o igual de hebras de kernel. Este modelo no tiene
problemas, los desarrolladores pueden crear tantas hebras de usuarios como sean necesarias y las correspondientes
hebras de kernel pueden ejecutarse en paralelo en un multiprocesador. Asimismo, cuando una hebra realiza en llamada
bloqueante al sistema, el kernel puede planificar otra hebra para su ejecución.

16
Downloaded by Geral Diaz (geraldinegeri11@gmail.com)
lOMoARcPSD|15103112

Sistemas Operativos

Bibliotecas de hilos

Una biblioteca de hebras proporciona al programador una API para crear y gestionar hebras. Existen dos formas
principales de implementar una biblioteca de hebras:
1º Consiste en proporcionar un biblioteca enteramente en el espacio de usuario, sin ningún soporte del kernel. Este
significa que invocar a una función de la biblioteca es como realizar una llamada a una función local en el espacio de
usuario y no una llamada al sistema.
2º Consiste en implementar una biblioteca a nivel kernel, soportado directamente por el SO. Invocar una función en
la API de la biblioteca normalmente de lugar a que se produzca una llamada dirigida al kernel.
Las tres principales bibliotecas de hebras son: POSIX Pthreads (proporcionando como biblioteca a nivel de usuario o
a nivel kernel); Win32 (biblioteca a nivel kernel); Java (permiten crear y gestionar hebras directamente en los programas
java).

Estados de los hilos


Sincronización

Planificación de la UCP
Los mecanismos de planificación de la CPU son las bases de los SO multiprogramados. Mediante la conmutación de
la CPU entre distintas procesos el SO puede hacer que la computadora sea mucho más productiva.

Ráfagas (Ciclo de ráfagas de CPU y de E/S)


La ejecución de un proceso comienza con una ráfaga de CPU. Ésta va seguida de una ráfaga de E/S, a la cual sigue
otra ráfaga de CPU, luego otra ráfaga de E/S, etc. Finalmente, la ráfaga de CPU concluye con una solicitud al sistema para
terminar la ejecución.
La duración de las ráfagas de CPU varía de acuerdo a un proceso a otro y de una computadora a otra, y tienden a
presentar una curva de frecuencia de tipo exponencial, con gran número de ráfagas de CPU cortas y un número
pequeño de ráfagas de CPU largas. Esta distribución sirve para la selección de un algoritmo apropiado para la
planificación de la CPU.

Planificación apropiativa
Puede ser necesario tomar decisiones sobre planificación de la CPU en las siguientes circunstancias:
1. Cuando un proceso cambia del estado de ejecución al estado de espera.
2. Cuando un proceso cambia del estado de ejecución al estado preparado.
3. Cuando un proceso cambia del estado de espera al estado preparado.
4. Cuando un proceso termina.
En la situación 1 y 4 sólo debe seleccionarse un nuevo proceso para su ejecución. El esquema de planificación es sin
desalojo o cooperativo. Este esquema propone que una vez que se ha asignado la CPU a un proceso, este mantiene la
CPU hasta que ésta es liberada bien por la terminación de dicho proceso o bien por la conmutación al estado de espera.
Este, es el único método que se puede emplear en determinadas plataformas hardware dado que no requiere de
hardware adicional (temporizador). Esta técnica afecta al diseño del kernel del SO. Durante el procesamiento de una
llamada el sistema, el kernel puede estar ocupado realizando una actividad en nombre de un proceso.

17
Downloaded by Geral Diaz (geraldinegeri11@gmail.com)
lOMoARcPSD|15103112

Sistemas Operativos

En 2 y 3 existe la opción de planificar un nuevo proceso o no. El esquema de planificación es apropiativo. Esta
requiere de hardware especial. Lamentablemente esta técnica tiene un coste asociado con el acceso de los datos
compartidos.
Dado que las interrupciones pueden producirse en cualquier momento, las secciones de código afectadas por las
interrupciones deben ser resguardadas de un posible uso simultáneo. Sin embargo, el SO tiene que aceptar
interrupciones continuamente, por esto, para que no puedan acceder de forma concurrente varios procesos a estas
secciones de código, se desactivan las interrupciones al principio de cada sesión y se vuelven a activar al final de las
mismas.

Planificador
Cuando la CPU queda inactiva, el SO debe seleccionar una de los procesos que se encuentran en la cola de procesos
preparados para ejecución. El planificador a corta plazo (planificador de CPU) lleva a cabo esa selección. Éste elige uno
de los procesos que están en memoria preparados para ejecutarse y asigna la CPU a dicho proceso.
La cola de procesos preparados puede ser una cola FIFO, una cola apropiativa, un árbol o simplemente una lista
enlazada no ordenada. Los registros que se almacenan en la cola son bloques de control de proceso (PBC) que describen
al proceso en cuestión.

Despachador
El despachador es el módulo que proporciona al control de la CPU a los procesos seleccionados por la el planificador
a corto plazo. Esta función implica:
 Cambio de contexto
 Cambio al modo usuario
 Salto a la posición correcta del programa de usuario para reiniciar dicho programa.
El despachador debe ser lo más rápido posible, ya que se invoca en cada conmutación de proceso. El tiempo que
tarda en detener un proceso e iniciar la ejecución de otro se conoce como latencia de despacho.

Criterios para la planificación


A la hora de decidir que algoritmos utilizar en una situación en particular, debemos considerar las propiedades de
los diversos algoritmos. Los criterios a considerar son los siguientes:
 Utilización de la CPU: Deseamos mantener la CPU tan ocupada como sea posible. La utilización de la CPU se
mide de 0 a 100 por cien.
 Tasa de procesamiento: Es el número de procesos que se completan por unidad de tiempo.
 Tiempo de ejecución: Es la suma de los períodos que el proceso invierte en esperar para cargarse en memoria,
esperar en la cola de procesos preparados, ejecutarse en la CPU y realizar las operaciones de E/S.
 Tiempo de espera: Es la suma de los períodos invertidos en esperar en la cola de procesos preparados.
 Tiempo de respuesta: Es el tiempo que el proceso tarda en empezar a responder, no el tiempo en enviar a la
salida toda la información de respuesta. Generalmente, está limitado por la velocidad del dispositivo de salida.
El objetivo consiste en maximizar la utilización de la CPU y la tasa de procesamiento, y minimizar el tiempo de
ejecución, el tiempo de espera y el tiempo de respuesta.

Algoritmos de planificación
La cuestión de la planificación aborda el problema de decidir a qué proceso de la cola de procesos preparados debe
asignársele la CPU.

18
Downloaded by Geral Diaz (geraldinegeri11@gmail.com)
lOMoARcPSD|15103112

Sistemas Operativos

Planificación FCFS (Primero en llegar, primero en ser servido)


Se asigna primero la CPU al proceso que primero lo solicite. Cuando un proceso entra en la cola de procesos
preparados, su PBC se coloca al final de la cola. Cuando la CPU queda libre, se asigna al proceso que esté al principio de
la cola y ese proceso que pasa a ejecutarse se elimina de la cola.
El tiempo de espera a menudo es bastante largo. Si consideramos el comportamiento de FCFS en un caso dinámico,
suponiendo que tenemos un proceso limitado por CPU y muchos procesos limitados por E/S se produce lo que se
denomina efecto convoy a medida que todos los procesos restantes esperan a que ese único proceso de larga duración
deje de usar la CPU.
Este algoritmo es cooperativo. Una vez que la CPU ha sido asignada a un proceso, dicho proceso conserva la CPU
hasta que la libera, bien porque termina se ejecución o porque realiza una solicitud de E/S.
Este algoritmo resulta especialmente problemático en los sistemas de tiempo compartido, donde es importante que
cada usuario obtenga una cuota de CPU en intervalos regulares. Sería desastroso permitir que un proceso mantuviera la
CPU durante un largo período de tiempo.

SJF (selección del trabajo más corto)


Asocia con cada proceso la duración de la siguiente ráfaga de CPU más corta. Cuando la CPU está disponible, se
asigna al proceso que tiene la siguiente ráfaga de CPU más corta. Si la siguiente ráfaga de CPU de dos procesos es igual
se utiliza la planificación FCFS para romper el empate. Otro término más apropiado sería “Algoritmo de la siguiente
ráfaga de CPU más corta”.
Este algoritmo es probablemente óptimo, en el sentido de que proporciona el tiempo medio de espera mínimo para
un conjunto de procesos dado, consecuentemente el tiempo de espera disminuye.
La dificultad real es conocer la duración de la siguiente solicitud de CPU. Esta planificación se usa frecuentemente
como mecanismo de planificación a largo plazo.
A pesar, este no se puede aplicar en el nivel de la planificación de la CPU a corto plazo, ya que no se conocen la
duración de las ráfagas de CPU, pero podemos predecir su valor, tomando el proceso que tenga la ráfaga de CPU
predicha más corta.
Generalmente, la siguiente ráfaga de CPU se predice como la medida exponencial de las duraciones de las anteriores
ráfagas de CPU.
Este algoritmo puede ser cooperativo o apropiativo. La necesidad de elegir surge cuando un proceso llega a la cola
de procesos preparados mientras que un proceso anterior está todavía en ejecución. La siguiente ráfaga de CPU del
proceso que acaba de llegar puede ser más corta que lo que quede del proceso actualmente en ejecución. Un SJF
apropiativo detendrá el proceso actual en ejecución mientras con SJF cooperativo permitirá que el proceso en ejecución
termine su ráfaga de CPU. (El apropiativo es el SRT)

Planificación por Prioridades


A cada proceso se le asocia una prioridad y la CPU se asigna al proceso que tengo la prioridad más alta. Los procesos
con la misma prioridad se planifican con FCFS. Un algoritmo SJF es simplemente un algoritmo por prioridades donde la
prioridad es la siguiente ráfaga de CPU (predicha). Generalmente, las prioridades se definen un rango de números fijo.
Las prioridades pueden definirse interna o externamente. Las prioridades definidas internamente utilizan algún valor
mensurable para calcular la prioridad de un proceso. Las prioridades definidas externamente se establecen en función
de criterios externos al SO.
La planificación por prioridades puede ser cooperativa o apropiativa. Cuando un proceso llega a la cola de procesos
preparados, su prioridad se compara con la prioridad del proceso actualmente en ejecución. Un apropiativo expulsará

19
Downloaded by Geral Diaz (geraldinegeri11@gmail.com)
lOMoARcPSD|15103112

Sistemas Operativos

de la CPU al proceso actual si la prioridad del proceso que acaba de llegar es mayor. Un cooperativo simplemente
pondrá al proceso llegado al principio de la cola de procesos preparados.
El problema importante de estos algoritmos es el bloqueo indefinido o la muerte por inanición. Un proceso que
está preparado para ejecutarse para está esperando a acceder a la CPU puede considerarse bloqueado. Estos algoritmos
pueden dejar a algunos procesos de baja prioridad esperando indefinidamente.
Una solución a este problema sería usar mecanismos de envejecimiento el cual consiste en aumentar gradualmente
la prioridad de los procesos que están esperando en el sistema por mucho tiempo.

Por turnos (Round-Robin)


Está diseñado especialmente para los sistemas de tiempo compartido. Es similar a FCFS pero se añade la técnica de
desalojo para conmutar entre procesos. En este tipo de sistemas se define una pequeña unidad de tiempo, denominada
cuanto de tiempo (generalmente comprendido entre 10 y 100 milisegundos). La cola de procesos separados se trata
como una cola circular en orden FIFO. El planificador de la CPU recorre la cola de procesos preparados asignado la CPU a
cada proceso durante un intervalo de tiempo de hasta 1 cuanto de tiempo.
El planificador de la CPU toma el primer proceso de la cola de procesos preparados, configura el temporizador para
que interrumpa pasado 1 cuanto de tiempo y despacha el proceso. Puede ocurrir una de dos cosas. El proceso puede
tener una ráfaga de CPU cuya duración sea menor que 1 cuanto de tiempo liberando voluntariamente la CPU o la ráfaga
de CPU del proceso tiene una duración mayor al cuanto de tiempo produciendo el fin de cuanta del temporizador. Este
enviará una interrupción al SO, se ejecutará un cambio de contexto y el proceso se colocará al final de la cola de
procesos preparados.
El tiempo de espera con frecuencia es largo. El rendimiento de este algoritmo depende enormemente del cuanto de
tiempo. Si el cuanto de tiempo es muy pequeño el método por turno se denomina compartición del procesador y crea
la apariencia de que cada una de los n procesos tiene su propio procesador ejecutándose a una velocidad de 1/n de la
velocidad del procesador real.
En general, el tiempo medio de ejecución puede mejorar si la mayor parte de los procesos termina su siguiente
ráfaga de CPU en un solo cuanto de tiempo. Una regla práctica es que le 80% de las ráfagas de CPU deben ser más corta
que el cuanto de tiempo.

SRT (planificación con selección del proceso con tiempo restante más corto)

Colas múltiples
El algoritmo de planificación mediante colas múltiples divide la cola de procesos preparados en varias colas
distintas. Los procesos se asignan permanentemente a una cola, generalmente en función de alguna propiedad del
proceso. Cada cola tiene su propio algoritmo de planificación.
Además debe definirse una planificación entre las colas, la cual suele implementarse como una planificación
apropiativa y prioridad fija. Los procesos se asignan de forma permanente a una cola cuando entran en el sistema,
presentado la ventaja de una baja carga de trabajo de planificación, pero resulta poco flexive.
Otra posibilidad consiste en repartir el tiempo entre las colas. En este caso, cada cola obtiene una cierta porción del
tiempo de CPU con la que puede planificar sus distintos procesos.

Colas múltiples con retroalimentación


El algoritmo de planificación mediante colas multinivel realimentadas permite mover un proceso de una cola a
otra. La idea es separar los procesos en función de las características de sus ráfagas de CPU. Si un proceso utiliza
demasiado tiempo de CPU, se pasa a una cola de prioridad más baja. Este esquema deja los procesos limitados por E/S y

20
Downloaded by Geral Diaz (geraldinegeri11@gmail.com)
lOMoARcPSD|15103112

Sistemas Operativos

los procesos interactivos en las colas de prioridad más alta. Además, un proceso que esté esperando demasiado tiempo
en una cola de baja prioridad puede pasarse a una cola de prioridad más alta evitando el bloqueo indefinido.
En general, un planificador mediante colas multinivel retroalimentadas se defina mediante los parámetros
siguientes:
 El número de colas
 El algoritmo de planificación de cada cola
 El método usado para determinar cuándo pasar un proceso a una cola de prioridad más alta
 El método usado para determinar en qué cola se introducirá un proceso cuando haya que darle servicio
Lamentablemente, es el algoritmo más complejo, puesto que definir el mejor planificador requiere disponer de
algún mecanismo para seleccionar los valores de todos los parámetros.

Coordinación de procesos

Una situación donde hay varios procesos que manipulan y acceden a los mismos datos concurrentemente y el
resultado de la ejecución depende del orden concreto en que se produzcan los accesos, se conoce como condición de
carrera. Para protegernos de esta situación necesitamos garantizar que sólo un proceso a la vez puede manipular las
variable counter (variable que sirve como contador para indicar que se agrega un elemento o se quita un elemento del
búfer). Para conseguir esta garantía tenemos que sincronizar de alguna manera los procesos.
Estas situaciones se producen frecuentemente en los SO cuando las diferentes partes del sistema manipulan
recursos necesitando que los cambios resultantes no interfieran entre sí.

Secciones críticas
Considere un sistema que consta de n procesos {P0, P1, …, Pn-1}. Cada proceso tiene un segmento de código llamado
sección crítica en el que el proceso puede modificar variables comunes, actualizar una tabla, etc. Cuando un proceso
está ejecutando su sección crítica, ningún otro proceso puede ejecutar su correspondiente sección crítica. Es decir, dos
procesos no pueden ejecutar su sección crítica al mismo tiempo. Este problema, consiste en diseñar un protocolo donde
los procesos cooperen, o sea, cada proceso debe solicitar permisos para entrar un su sección crítica llamando sección de
entrada. La sección crítica puede ir seguida de una sección de salida. El código restante es la sección restante.
Cualquier solución de sección crítica deberá satisfacer los siguientes requisitos:
1. Exclusión mutua: Si un proceso está ejecutando su sección crítica ningún otro proceso puede ejecutar la del
mismo.
2. Progreso: Sólo aquellos procesos que no estén ejecutando se sección restante pueden participar en la decisión
de quién será el próximo a ejecutar la sección crítica.
3. Espera limitada: Existe un número de veces que se permite que otros procesos entren en sus secciones críticas
después de que un proceso haya hecho una solicitud para entrar en su sección crítica y antes de que la misma<
haya sido concedida.
Estamos suponiendo que la los procesos se ejecutan a una velocidad distinta de cero, pero no podemos hacer
ninguna suposición sobre las velocidades de los procesos.
Se usan dos métodos generales para gestionar las secciones críticas en los SO:
 Kernel apropiativo: permite que un proceso sea desalojado mientras se está ejecutando en modo kernel. Son
difícil de diseñar en una estructura SMP, dado que dos procesos se ejecutan simultáneamente en modo kernel
en procesadores diferentes. Este es más adecuado para sistemas de tiempo real porque pueden obtener una
mejor capacidad de respuesta. (Linux, UNIX comercial)

21
Downloaded by Geral Diaz (geraldinegeri11@gmail.com)
lOMoARcPSD|15103112

Sistemas Operativos

 Kernel no apropiativo: no permite que un proceso sea desalojado cuando se está ejecutando en modo kernel.
Este proceso se ejecutará hasta que salga de dicho modo, hasta que se bloquee o que ceda voluntariamente el
control de la CPU. Este está libre de condiciones de carrera. (Windows XP y 2000)
Podemos afirmar que cualquier solución al problema de sección crítica requiere de una herramienta, un cerrojo. Las
condiciones de carrera se evitan requiriendo que las regiones críticas se protejan mediante cerrojos. Es decir, un proceso
debe adquirir un cerrojo antes de entrar en su sección crítica y liberarlo cuando salga de la misma.

Semáforos
Un semáforo es una variable entera a la que sólo se accede mediante dos operaciones atómicas estándar: wait() y
signal(). La operación wait() se denomina P mientras que signal() se denomina V.

wait(S) { signal(S) {
while S <= 0 S++;
S--; }
}
Todas las modificaciones del valor entero del semáforo en las operaciones wait() y signal() deben ejecutarse de
forma indivisible. Es decir, cuando un proceso modifica el valor del semáforo, ningún otro proceso puede modificar
simultáneamente el valor de dicho semáforo. Además, en el caso de wait(), la prueba de valor de S (S<=0) y su posible
modificación (S--) también se debe ejecutar sin interrupción.

Utilización
El valor de un semáforo contador puede variar en un dominio no restringido. Estos se pueden usar para controlar el
acceso a un determinado recurso formado por un número finito de instancias. El semáforo se inicializa con el número de
recursos disponibles. Cada proceso que desee usar un recurso ejecuta una operación wait() en el semáforo
(decrementando la cuenta). Cuando un proceso libera el recurso, ejecuta una operación signal() (incrementado la
cuenta). Cuando la cuenta del semáforo llega a 0, todos los recursos estarán en uso. Después, los procesos que deseen
usar un recurso se bloqueará hasta que la cuenta sea mayor que 0.
El valor de un semáforo binario sólo puede ser 0 y 1. En algunos sistemas los semáforos binarios son denominados
cerrojos mútex, ya que son cerrojos que proporcionan exclusión mutua. Podemos usar semáforos binarios para abordar
el problema de la sección crítica en el caso de múltiples procesos. Los n procesos comparten un semáforo mútex
inicializado en 1.
También usamos los semáforos para resolver diversos problemas de sincronización.

Implementación
La principal desventaja de los semáforos es que requiere de una espera activa. Mientras que un proceso está en su
sección crítica cualquier otro proceso que quiera usar su sección crítica deberá ejecutar un bucle continuamente en el
código de entrada. Esta espera desperdicia ciclos de CPU que algunos otros procesos podrían usar de manera
productiva. Estos tipos de semáforos se denominan cerrojo mediante bucle sin fin (permanecen en bucle sin fin, pero
tienen una gran ventaja y es que no requiere de ningún cambio de contexto cuando un proceso tiene que esperar para
adquirir un cerrojo).
Para salvar la necesidad de la espera activa, podemos modificar la definición de las operaciones de semáforo wait()
y signal(). Cuando un proceso ejecuta la operación wait() en lugar de entrar en una espera activa, al proceso puede
bloquearse a sí mismo. La operación de bloqueo coloca al proceso en una cola de espera con el semáforo y el estado del
proceso pasa al estado de espera. A continuación, el control se transfiere al planificador de la CPU que seleccionará otro
proceso.

22
Downloaded by Geral Diaz (geraldinegeri11@gmail.com)
lOMoARcPSD|15103112

Sistemas Operativos

Un proceso bloqueado, que está esperando en un semáforo S, debe reiniciarse cuando algún otro proceso ejecuta
una operación signal(). EL proceso se reinicia mediante una operación wakeup(), que cambia al proceso del estado de
espera a preparado y este se coloca en la cola de procesos preparados (reanuda el ejecución de una proceso
bloqueado). La operación block() suspende al proceso que la ha invocado.
La lista de procesos en espera puede implementarse mediante un campo de enlace en cada bloque de control de
procesos (PBC). Cada semáforo contiene un valor entero y un puntero a la lista de bloque PBC. El uso correcto de
semáforos no depende de la gestión de cola que se emplee para la lista de los semáforos.
El aspecto crítico de los semáforos es que se deben ejecutar automáticamente: tenemos que garantizar que no se
realicen conjuntamente las operaciones wait() y signal() sobre el mismo semáforo.
Este esquema funciona correctamente sobre un entorno de un solo procesador. En un entorno de
multiprogramación hay que deshabilitar las interrupciones en cada procesador pudiendo disminuir el rendimiento.
Es importante recordar, que con la señales wait() y signal() no hemos eliminado la “espera activa” si no que la
hemos eliminada de la sección de entrada y trasladado a la sección crítica haciendo que está casi nunca esté ocupada.

Interbloqueos e inanición
Decimos que un conjunto de procesos está en un estado de interbloqueo cuando todos los procesos del conjunto
están esperando un suceso que sólo puede producirse como consecuencia de las acciones de otro proceso del conjunto.
El bloqueo indefinido o muerte por inanición se da en una situación en la que algunos procesos esperan de forma
indefinida dentro del semáforo.
Los semáforos proporcionan un mecanismo adecuado y efectivo para el proceso de sincronización, un uso incorrecto
de los mismos puede dar lugar a errores de temporización que son difíciles de detectar.

Problemas clásicos de sincronización


Problema del búfer limitado
Se utiliza para ilustrar la potencia de las primitivas de sincronización. Supongamos que la cola consta de n búferes,
siendo cada uno capaz de almacenar un elemento. Observamos que la simetría entre el productor y el consumidor se
interpreta como un productor que genera los búferes llenos o como un consumidor que genera búferes vacíos para el
productor.

El problema de los lectores-escritores


Si dos lectores acceden a los datos compartidos no dará lugar a ningún problema. Sin embargo, si un escritor y algún
otro proceso acceden simultáneamente a la base de datos el caos está asegurado. Para asegurar que estos problemas
no afloren requerimos que los procesos de escritura tengan acceso exclusivo a la base de datos compartida. Este
problema es el que se conoce como problema de lectores y escritores.
El primer problema requiere que ningún lector se mantenga en espera a menos que un escritor haya obtenido el
permiso para utilizar el objeto compartido. En este caso, los escritores pueden bloquearse indefinidamente.
El segundo problema requiere que si un escritor está esperando para acceder, ningún proceso lector puede iniciar la
lectura. En este caso los lectores pueden morir por inanición.
La solución más general para este tipo de problemas es adquirir un bloqueo lector-escritor especificando el modo
del bloqueo: acceso escritura o acceso de lectura. Cuando un proceso sólo desea leer solicitará un cerrojo lector-escritor
en modo lectura. Un proceso que quiera modificar datos solicitará un cerrojo lector-escritor de modo escritura. Pueden
múltiples procesos adquirir de forma concurrente un cerrojo lector-escritor de modo lectura pero sólo uno puede
adquirir el cerrojo lector-escritor de modo escritura.

23
Downloaded by Geral Diaz (geraldinegeri11@gmail.com)
lOMoARcPSD|15103112

Sistemas Operativos

Problema de la cena de los filósofos


Considere 5 filósofos que gastan sus vidas comiendo y pensando. Estos comparten una mesa redonda con 5 sillas,
una para cada uno. En el centro de la mesa hay una fuente con arroz y se han puesto sólo 5 palillos. Cuando uno siente
hambre e intenta comer toma los palillos más cercanos. Estos pueden coger sólo un palillo a la vez. Cuando consigue los
dos palillos come sin soltarlos y cuando termina los coloca nuevamente en la mesa y vuelve a pensar.
Este problema plantea muy bien los problemas de control de concurrencia. Una solución sencilla consiste en
representar cada palillo mediante un semáforo. Un filósofo intenta tomar un palillo con la operación wait() en dicho
semáforo y libera sus palillos ejecutando signal() en los semáforos adecuados. Aunque esta solución garantiza que dos
vecinos de mesa no coman nunca simultáneamente puede crear interbloqueos (suponiendo que todos sientan hambre y
tomen un palillo cada uno, ninguno podrá comer).
Las soluciones son:
 Permitir como máximo haya 4 filósofos sentados en la mesa
 Permitir a cada filósofo tomar sus palillos sólo si ambos están disponibles
 Utilizar una solución asimétrica, un filósofo impar toma primero el palillo de su izquierda y luego el que está a
su derecha, mientras que el filósofo de la derecha toma primera el de la derecha y luego el de la izquierda.

Monitores
Para abordar a los errores que resultan de los semáforos, los investigadores han desarrollado una estructura de
sincronización de alto nivel llamada monitor.

Utilización
Un tipo de dato monitor tiene un conjunto de operaciones definidas por el programador que gozan de la
característica de exclusión mutua dentro del monitor. También contiene la declaración de una serie de variables cuyos
valores definen el estado de una instancia de dicho tipo, junto con los cuerpos de los procedimientos o funciones que
operan sobre dichas variables. Un procedimiento dentro de un monitor sólo puede acceder a las variables declaradas
localmente dentro del monitor y a sus parámetros formales, y de forma similar, a las variables locales de un monitor sólo
pueden acceder los procedimientos locales.
La estructura de un monitor asegura que sólo un proceso esté activo cada vez dentro del mismo. Para que esta
estructura sea eficiente para abordar los problemas de sincronización necesitamos definir mecanismos adicionales de
sincronización. Estos mecanismos los proporciona la estructura condition (condition x, y;). Un programador puede
definir una o más variables de este tipo. Las únicas operaciones que se pueden invocar en una variable de condición son
wait() y signal().
La operación x.wait() indica que el proceso que lo invoca queda suspendido hasta que otro proceso invoque la
operación x.signal(), la cual hace que se reanude exactamente uno de los procesos suspendidos.
Existen dos posibilidades para que dos procesos puedan continuar con su ejecución:
1. Señalizar y esperar. P espera hasta que Q salga del monitor o espere que se produzca otra condición.
2. Señalizar y continuar. Q espera hasta que P salga del monitor o espere a que se produzca otra condición.

Solución del problema de la cena de los filósofos usando monitores


Propone la restricción de que un filósofo puede empezar a comer sólo si sus palillos están disponibles. Para codificar
esta solución tenemos que tener en cuenta tres estados posibles de los filósofos (pensar, hambre y comer). La
distribución de los palillos en la mesa se controla a través de un monitor. Cada vez que uno quiere empezar comer debe
solicitar una instrucción pickup(). Luego de comer este debe ejecutar la instrucción putdown().

24
Downloaded by Geral Diaz (geraldinegeri11@gmail.com)
lOMoARcPSD|15103112

Sistemas Operativos

Interbloqueos (Deadlock)

En un entorno de multiprogramación, varios procesos pueden competir por un número finita de recursos. Un
proceso solicita los recursos, si estos no están disponibles pasa al estado de espera. Pero es posible que un proceso en
este estado nunca salga del mismo porque sus recursos están siempre acopados por otros procesos. Cuando sucede esto
se dice que ha ocurrido un interbloqueo.

Modelo del Deadlock


Un sistema consta de un número finito de recursos, que se distribuyen entre una serie de procesos en competición.
Los recursos se dividen en varios tipos, constando cada uno de ellos de un cierto número de instancias.
Si un proceso solicita una instancia de un tipo de recurso, la asignación de cualquier instancia del tipo satisfará la
solicitud. Si no es así, los tipos de recursos no se han definido apropiadamente.
Un proceso debe solicitar cada recurso antes de utilizarlo y debe liberarlo después de usado. Un proceso puede
solicitar tantos recursos como necesite para llevar a cabo su tarea. Obviamente que el números de recursos solicitados
no debe exceder los disponibles en el sistema.
En modo de operación normal, un proceso emplea los recursos siguiendo la secuencia:
1. Solicitud. Si esta no puede ser concedida inmediatamente entonces el proceso solicitante esperará.
2. Uso. El proceso opera sobre el recurso.
3. Liberación. El proceso libera el recurso.
La solicitud y liberación de los recursos son llamadas al sistema. Las solicitudes y liberaciones que el SO no gestiona
pueden hacerse mediante operaciones wait() y signal() de los semáforos o a través de la adquisición de un cerrojo
mútex.
Un conjunto de procesos estará en un estado de interbloqueo cuando todos los procesos del conjunto estén
esperando a que se produzca un suceso que sólo puede producirse como resultado de la actividad de otros procesos del
conjunto. Los interbloqueos también pueden ser por tipos de recursos diferentes.
Los programas multihebra son buenos candidatos para los interbloqueos, porque las distintas hebras pueden
competir por la utilización de los recursos compartidos.

Condiciones necesarias
Una situación de interbloqueo puede producirse si se dan simultáneamente las cuatro condiciones en un sistema:
1. Exclusión mutua: Al menos un recurso puede ser usado por un proceso cada vez. Si otro proceso lo solicita, éste
tendrá que esperar.
2. Retención y espera: Un proceso debe estar reteniendo al menos un recurso y esperando para adquirir otros
adicionales.
3. Sin desalojo: Los recursos no pueden ser desalojados.
4. Espera circular: Debe existir un conjunto de procesos {P0, P1, …, Pn} de procesos en espera, tal que P0 esté
esperando a un recurso retenido por P1, P1 esté esperando un recurso retenido por P2, …, Pn-1 esté esperando a
un recurso retenido por Pn, y Pn esté esperando un recurso retenido por P0.
Insistimos en que deben darse las 4 condiciones para que se produzca el interbloqueo.

Grafo de asignación de recursos


Los interbloqueos pueden definirse mediante un grafo dirigido. Este consta de un conjunto de vértices V y de un
conjunto de aristas E. El conjunto de vértices V puede dividirse en dos tipos diferentes de nodos: P = {P0, P1, …, Pn} que es

25
Downloaded by Geral Diaz (geraldinegeri11@gmail.com)
lOMoARcPSD|15103112

Sistemas Operativos

el conjunto formado por todos los procesos activos del sistema, y, K = {R0, R1, …, Rn} que es el conjunto formado por
todos los tipos de recursos del sistema.
Una arista dirigida desde el proceso Pi al tipo de recurso Rj significa que el proceso Pi ha solicitado una instancia del
recurso Rj y que actualmente está esperando por el mismo. Esta se denomina arista de solicitud.
Una arista dirigida desde el recurso Rj hacia el proceso Pi quiere decir que se ha asignado una instancia del tipo de
recurso Rj al proceso Pi. Esta se denomina arista de asignación.
Si un grafo no tiene ciclos entonces el sistema no está en estado de interbloqueo. Si existe ciclos, entonces puede o
no estar en estado de interbloqueo.

Tratamiento (Métodos para tratar los Interbloqueos)


En general, podemos abordar al problema de interbloqueo de una de las tres formas:
 Podemos emplear un protocolo para impedirlos o evitarlos, asegurando que el sistema nunca estará en tal
situación
 Podemos permitir que el sistema entre en estado de interbloqueo, detectarlo y realizar una recuperación
 Podemos ignorar el problema y actuar como nunca se producirán (usada por la mayoría de los SO)
Para garantizar que nunca se produzcan interbloqueos, el sistema puede emplear un esquema de prevención o
evasión de interbloqueos.
La prevención de interbloqueos proporciona un conjunto de métodos para asegurar que al menos una de las
condiciones necesarias no pueda cumplirse. Restringen el modo en que se realizan las solicitudes.
La evasión de interbloqueos requiere que se proporcione de antemano al SO información sobre qué recursos se
solicitarán y utilizarán durante la ejecución de un proceso. Con estos datos se puede decir si el proceso tiene que
esperar o no.
Si un sistema no garantiza que nunca se producirá un interbloqueo, ni proporciona mecanismos para la detección y
recuperación de los mismos, entonces puede darse que el sistema deje de funcionar y tendrá que reiniciarse
manualmente. (Windows, UNIX)

Prevención
Asegurando que una de las cuatro condiciones no se cumpla podemos prevenir la aparición de interbloqueos.

Exclusión mutua
Se aplica a los recursos que no pueden ser compartidos. Un proceso no necesita nunca esperar para acceder a un
recurso compartible, sin embargo, no podemos evitar los interbloqueos negando la condición de exclusión mutua, ya
que algunos recursos son intrínsecamente no compartibles.
Retención y espera
Para asegurar que esta condición nunca se produzca, debemos garantizar que cuando un proceso solicite un recurso,
éste no esté reteniendo ningún otro proceso. Un posible protocolo consiste en exigir que cada proceso solicite todos sus
recursos antes de comenzar su ejecución. La posible alternativa sería un protocolo que permitiera a un proceso solicitar
recursos sólo cuando no tenga ninguno retenido.
Las desventajas de implementar este protocolo es que la tasa de utilización de los recursos puede ser baja y puede
producirse el fenómeno de inanición esperando indefinidamente a un proceso que necesite varios recursos.

26
Downloaded by Geral Diaz (geraldinegeri11@gmail.com)
lOMoARcPSD|15103112

Sistemas Operativos

Sin desalojo
Para impedirlo, usamos el siguiente protocolo: si un proceso está reteniendo varios recursos y solicita otro recurso
que no se le puede asignar, entonces todos sus recursos quedan a disposición de los que procesos que los necesiten. El
proceso podrá ejecutarse sólo cuando junte todos sus recursos.

Espera circular
Una forma de garantizar que no se cumpla es imponer una ordenación total de todos los tipos de recursos y requerir
que cada proceso solicite sus recursos en orden creciente de enumeración.

Evasión
Las técnicas de evasión de interbloqueos tienen algunos efectos colaterales, como son una baja tasa de utilización
de los dispositivos y un menor rendimiento del sistema. Un método alternativo para evitar los interbloqueos consiste en
requerir información adicional sobre cómo van a ser solicitados los recursos.
El modelo más simple y útil requiere que cada proceso declare al número máximo de recursos de cada tipo que
puede necesitar. Así es posible construir un algoritmo que garantice que el sistema nunca entrará en estado de
interbloqueo.
El algoritmo de evasión de interbloqueo examina dinámicamente el estado de asignación de cada recurso con el fin
de asegurar que nunca se produzca la condición de espera circular. El estado de asignación del recurso está definido por
el número de recursos disponibles y asignados y la demanda máxima de los procesos.

Estado seguro
Un estado es seguro sólo si existe una secuencia segura. Una secuencia de procesos {P0, P1, …, Pn} es una secuencia
segura para el estado de asignación actual si, para cada Pi, las solicitudes de recursos que Pi pueda todavía hacer pueden
ser satisfechas mediante los recursos actualmente disponibles, junto con los recursos retenidos por todos los P j con j<i.
Si los recursos que Pi necesita no están disponibles este puede esperar. Cuando lo adquiere, completa su tarea y luego
los libera.
Un estado seguro implica que ni puede producirse interbloqueo. Sin embargo, no todos los estados inseguros
representan un interbloqueo. Podemos definir un algoritmo que asegure siempre que el sistema está en estado seguro,
haciendo que cuando se reciba una solicitud, ésta sea asignada sólo si deja al sistema en estado seguro.

Grafo de asignación de recursos


Si tenemos un sistema con sólo una instancia de cada tipo de recurso, puede utilizarse una variante del grafo de
asignación de recursos para evitar interbloqueos. Esta variante es un nuevo de tipo de arista, denominada arista de
declaración. Esta indica que el proceso Pi pude solicitar un recurso Rj en algún instante futuro.
Antes que el proceso Pi inicia su ejecución, todas sus aristas de declaración deben estar indicadas en su grafo de
asignación de recursos. Si no se crea ningún ciclo entonces la asignación de recurso dejará al sistema en un estado
seguro. De lo contrario, si se crea un ciclo, el estado del sistema será inseguro, por lo que el proceso Pi tendrá que
esperar para que su solicitud sea satisfecha.

Algoritmo del banquero


Los sistemas de asignación de recursos con múltiples instancias de cada tipo de recurso. Este algoritmo es menos
eficiente que el de grafo.
Cuando entra en el sistema un proceso nuevo, debe declarar el número máximo de instancias de cada tipo de
recurso que puede necesitar. Este número no puede exceder el total de recursos del sistema. Cuando un usuario solicita

27
Downloaded by Geral Diaz (geraldinegeri11@gmail.com)
lOMoARcPSD|15103112

Sistemas Operativos

un conjunto de recursos, el sistema debe determinar si la asignación de dichos recursos dejará al sistema en un estado
seguro. En caso afirmativo se les asignará, de lo contrario tendrá que esperar.
Deben utilizarse varias estructuras de datos para implementar este algoritmo:
 Avilable (disponible). Un vector longitud m indica el número de recursos disponibles de cada tipo.
 Max. Una matriz n x m que indica la demanda máxima de cada proceso
 Allcation (asignación). Una matriz n x m que define el número de recursos de cada tipo actualmente asignados
a cada proceso
 Need (necesidad). Una matriz n x m que indica la necesidad restante de recursos de cada proceso.
Consta de dos algoritmos: algoritmo de seguridad y algoritmo de solicitud de recursos.

Detección
Si un sistema no emplea ni algoritmos de prevención ni de evasión de interbloqueos, entonces puede producirse una
situación de interbloques en el sistema. El sistema debe proporcionar:
 Un algoritmo que examine el estado del sistema para determinar si se ha producido en interbloqueo.
 Un algoritmo para recuperase del interbloqueo.
Los esquemas de detección y recuperación tiene un coste significativo asociado, que incluye no sólo el coste (tiempo
de ejecución) si no también las potenciales pérdidas inherentes al proceso de recuperación de un interbloqueo.

Una sola instancia de cada tipo de recurso


Si todos los recursos tienen una única instancia, entonces podemos definir un algoritmo de detección de
interbloqueos que utilice una variante del grafo de recursos, denominada grado de espera. Obtendremos este grafo a
partir del grafo de asignación de recursos eliminado los nodos y colapsando las correspondientes aristas.
Existirá un interbloqueo si y sólo si el grafo de espera contiene ciclos. Para detectarlos, el sistema necesita mantener
el grafo de espera e invocar un algoritmo periódicamente que compruebe se existe un ciclo en el grafo. Esto requiere del
orden n2 operaciones, donde n es el número de vértices del grafo.

Varias instancias de cada tipo de recurso


Un algoritmo de detección de interbloqueos que pueda aplicarse a los sistemas de asignación de recursos con
múltiples instancias de cada tipo de recurso es similar a las utilizadas en el algoritmo del banquero.
 Avilable (disponible). Un vector longitud m indica el número de recursos disponibles de cada tipo.
 Allcation (asignación). Una matriz n x m que define el número de recursos de cada tipo actualmente asignados
a cada proceso
 Request. Una matriz n x m que indica la solicitud actual efectuada por cada proceso.
Este algoritmo requiere del orden m x n2 operaciones para detectar si el sistema se encuentre en un estado de
interbloqueo.

Utilización del algoritmo de detección


Para saber cuándo debemos invocar el algoritmo de detección de interbloqueos debemos saber:
 ¿Con qué frecuencia se producirá el problema de interbloqueo?
 ¿Cuántos procesos se verán afectados por el interbloqueo cuando se produzca?
Si los interbloqueos se producen frecuentemente, entonces el algoritmo de detección debe invocarse
frecuentemente. Los recursos asignados a los procesos en interbloqueo estarán inactivos hasta que el interbloqueo se
elimine.

28
Downloaded by Geral Diaz (geraldinegeri11@gmail.com)
lOMoARcPSD|15103112

Sistemas Operativos

Los interbloqueos se producen sólo cuando algún proceso realiza una solicitud que no se puede conceder de forma
inmediata. En este caso, podemos no sólo identificar el conjunto de interbloqueos sino también el proceso concreto que
ha causado dicho interbloqueo.
Si se invoca el algoritmo de detección de interbloqueos para cada solicitud de recursos, esta dará lugar a una
considerable sobrecarga en el tiempo de uso del procesador. Una técnica más barata consiste en invocar el algoritmo de
detección de interbloqueos en intervalos menos frecuentes.

Recuperación
Una posibilidad es informar al operador de que se ha producido un interbloqueo y dejar que lo trate de forma
manual. Otra posibilidad es dejar que sea el sistema le que haga la recuperación automáticamente. Existen dos opciones
para romper un interbloqueo. Una consiste en interrumpir uno o más procesos para romper la cadena de espera
circular. Otra consiste en desalojar algunos recursos de uno o más de los procesos bloqueados.

Terminación de procesos
Lo que se puede hacer es:
 Interrumpir todos los procesos interbloqueados pero a un precio muy alto (los cálculos parciales deben
descartarse)
 Interrumpir un proceso cada vez hasta que el ciclo de interbloqueo se elimine requiriendo una gran cantidad
de trabajo adicional, ya que después de haber interrumpido cada proceso hay que invocar un algoritmo de
detección de interbloqueos.
Si empleamos el método de terminación parcial, deberemos interrumpir aquellos procesos cuya terminación tenga
un coste mínimo. Lamentablemente, el término coste mínimo no es demasiado preciso. Hay muchos factores que
influyen en qué procesos seleccionar, entre los que se incluyen:
1. Prioridad del proceso
2. Durante cuánto tiempo ha estado el proceso ejecutándose y cuánto tiempo de adicional necesita el proceso
para completar sus tareas
3. Cuántos y qué tipo de recursos ha utilizado al proceso
4. Cuántos más recursos necesita el proceso para completarse
5. Cuántos procesos hará falta terminar
6. Si se trata de un proceso interactivo o de procesamiento por lotes

Apropiación de recursos
Para eliminar los interbloqueos desalojamos de forma sucesiva los recursos de los procesos y asignamos dichos
recursos a otros procesos hasta que el ciclo de interbloqueo se interrumpa. Necesitamos abordar tres cuestiones:
1. Selección de una víctima. Se analizará qué recursos hay que apropiarse y de qué procesos.
2. Anulación. Si nos apropiamos de un recurso de un proceso deberíamos ver qué deberíamos hacer con el mismo.
En general, la solución más sencilla es realizar una operación de anulación completa: interrumpir el proceso y
reiniciarlo.
3. Inanición. Cómo podemos garantizar que los recursos no se tomen siempre del mismo proceso.

29
Downloaded by Geral Diaz (geraldinegeri11@gmail.com)
lOMoARcPSD|15103112

Sistemas Operativos

UNIDAD III
Gestión de la Memoria Principal
Administración de la Memoria Principal
El propósito de una Sistema Informático es ejecutar programas. Estos programas, junto con los datos a los que
acceden, deben encontrase en memoria principal durante la ejecución.

Fundamentos
La memoria está compuesta de una matriz de palabras cada una con su propia dirección. La CPU extrae
instrucciones de la memoria de acuerdo con el valor del contador de programa. Estas instrucciones pueden provocar
operaciones adicionales de carga o de almacenamiento en direcciones de memoria específicas.

Hardware básico
La memoria principal y los registros integrados dentro del procesador son las únicas áreas de almacenamiento a las
que la CPU puede acceder directamente. La memoria principal es accedida mediante una transacción del bus de
memoria. Este acceso puede requerir muchos ciclos de reloj del procesador para poderse completar, un cuyo caso el
procesador puede detenerse, ya que no dispondrá de los datos requeridos para completar la instrucción que se esté
ejecutando. Esto es intolerable, y para que no sea así, usamos un búfer de memoria utilizado para resolver la diferencia
de velocidad, al cual lo llamamos memoria caché.
También debemos garantizar una correcta operación que proteja al SO de los posibles accesos por parte de los
procesos de usuarios y también que proteja a los procesos de usuarios de otros. Para esto, primero tenemos que
asegurarnos de que cada proceso disponga de un espacio de memoria determinando el rango de direcciones legales a
las que el proceso pueda acceder. Podemos proporcionar esta protección utilizando un registro base que almacena la
dirección de memoria física legal más pequeña y un registro límite que especifica el tamaño del rango. La protección se
consigue haciendo que el hardware de la CPU compare todas las direcciones generadas en modo usuario con el
contenido de esos registros. Estos registros sólo pueden ser cargados por SO usando una instrucción especial.

Reasignación
Consiste en seleccionar uno de los procesos de la cola de entrada (contiene procesos esperando a ser cargados en
memoria) y cargar dicho proceso en memoria. A medida que éste se ejecuta va accediendo a las instrucciones y datos
contenidos en la memoria.
Las direcciones pueden representarse de diferentes formas. Las direcciones del programa fuente son generalmente
simbólicas. Normalmente, un compilador se encargará de reasignar estas direcciones simbólicas a direcciones
reubicables. El editor de montaje se encargará de reasignar las direcciones reubicables a direcciones absolutas. Cada
operación de reasignación constituye una relación de un espacio de direcciones a otro. Estos pueden realizarse en los
cualquiera de los pasos:
 Tiempo compilación. Si sabemos en el momento de realizar la compilación dónde va a residir el proceso
nuevo podremos generar código absoluto.
 Tiempo de carga. Si no conocemos en tiempo de compilación dónde va a residir el proceso el compilador
deberá generar código reubicable.

30
Downloaded by Geral Diaz (geraldinegeri11@gmail.com)
lOMoARcPSD|15103112

Sistemas Operativos

 Tiempo de ejecución. Si los procesos pueden desplazarse durante su ejecución desde un segmento de
memoria a otro entonces es necesario retardar la reasignación hasta el instante de ejecución. Esto lo hacemos
disponiendo de hardware especial (la mayoría de los SO usan este método).

Espacio de direcciones
Una dirección generada por la CPU se denomina dirección lógica, mientras que una dirección vista por la unidad de
memoria se denomina dirección física.
Los métodos de reasignación en tiempo de compilación y en tiempo de carga generan direcciones lógicas y
direcciones físicas idénticas. Sin embargo, los esquemas de reasignación en tiempo de ejecución no. En este caso la
dirección lógica es una dirección virtual. El conjunto de todas las direcciones lógicas generadas por un programa se
denomina un espacio de direcciones lógicas. El conjunto de todas las direcciones físicas correspondientes a estas
direcciones lógicas se denomina un espacio de direcciones físicas.
La correspondencia entre direcciones virtuales y físicas en tiempo de ejecución es establecida por un dispositivo
hardware llamado unidad de gestión de memoria (MMU). El registro base se denomina ahora registro de reubicación
que es la suma de todas las direcciones generadas por un proceso de usuario en el momento de enviarlas a memoria. Ç
El programa de usuario nunca ve las direcciones físicas reales. Este maneja direcciones lógicas y el hardware de
conversión (mapeo) de memoria convierte esas direcciones lógicas en direcciones físicas.

Carga dinámica
El tamaño de un proceso está limitado por el tamaño de la memoria física. Para una mejor utilización del espacio de
memoria se puede utilizar un mecanismo de carga dinámica. Con este, una rutina no se carga hasta que se la invoca.
Todas las rutinas se mantienen en disco en un formato de carga reubicable. Según este método, el programa principal se
carga en memoria y se ejecuta. Cuando una rutina desea llamar a otra, se comprueba que si ya ha sido cargada, si no
está, entonces se convoca al cargador de montaje reubicable para que la cargue en memoria y actualice las tablas de
direcciones del programa para reflejar los cambios. Después se pasa el control a la rutina recién llegada. Esto hace que
una rutina no utilizada no se cargue en memoria. Este mecanismo no requiere de ningún soporte especial en el SO.

Montaje dinámico y biblioteca compartida


El montaje estático es tratado por las bibliotecas de lenguajes como un objeto y es el cargador dentro de la imagen
binaria del programa. El montaje binario es tratado como la carga dinámica pero lo que se pospone hasta el momento
de ejecución es el montaje (enlace) en lugar de la carga.
Con el montaje dinámico se incluye el stub (pequeño fragmento de código que indica cómo localizar la rutina
adecuada de biblioteca residente en memoria o cómo cargar la biblioteca se esa rutina no está todavía presente). Así la
siguiente vez que se ejecute un segmento de código en concreto, se ejecutará directamente la rutina de biblioteca, sin
tener que realizar de nuevo el montaje dinámico. (Este procedimiento también es conocido como bibliotecas
compartidas).
El montaje dinámico suele requerir algo de ayuda del SO. Este es la única entidad que puede comprobar si una
rutina necesaria se encuentra dentro del espacio de memoria de otro proceso y será la única entidad que pueda permitir
a múltiples procesos acceder a las mismas direcciones de memoria.

Intercambio (swapping)
Un proceso debe estar en memoria principal para ser ejecutado. Sin embargo, los proceso pueden ser
intercambiados temporalmente, sacándolos de la memoria y almacenándolos en un almacén de respaldo y volviéndolos
a llevar luego a memoria para continuar su ejecución.

31
Downloaded by Geral Diaz (geraldinegeri11@gmail.com)
lOMoARcPSD|15103112

Sistemas Operativos

Cada vez que un proceso termine su cuanto asignado, se intercambiará por otro proceso. Idealmente, el gestor de
memoria puede intercambiar los procesos con rapidez. Normalmente, el proceso descargado se volverá a cargar en la
misma posición de memoria que ocupaba.
Si la reasignación se realiza en tiempo de ensamblado o en tiempo de carga, no resulta sencillo mover el proceso,
pero si la utilizamos en tiempo de ejecución si podremos moverlo. Los mecanismos de intercambio requieren de un
disco suficientemente rápido y deben proporcionar un acceso directo a las imágenes realizadas de memoria. Cada vez
que el planificador de la CPU decide ejecutar un proceso, llama al despachador, que mira a ver si al siguiente proceso de
la cola se encuentra en memoria. Si no es así y si no hay ninguna región de memoria libre el éste intercambia el proceso
deseado por otro proceso que esté actualmente en memoria.
Para conseguir un eso eficiente de la CPU es necesario que el tiempo de ejecución de cada proceso sea largo en
relación con el tiempo de intercambio. Observamos que la mayor parte del tiempo de intercambio es de transferencia, y
la transferencia total es proporcional a la cantidad de memoria intercambiada.
El intercambio también está restringido en el cambio de proceso, ya que si queremos cambiarlo debemos
asegurarnos de que éste esté completamente inactivo.

(Asignación de memoria contigua)


La memoria está usualmente dividida en dos partes, una para el SO y otra para los procesos de usuario. El vector
interrupción se encuentra normalmente en la parte baja de la memoria, por lo que lo programadores sitúan al SO en
esta posición. Este mecanismos de asignación de memoria consiste en cada proceso está contenido en una única sección
de memoria contigua de memoria.

Mapeo de memoria y protección


Podemos proporcionar memoria y protección utilizando un registro de reubicación (contiene el rango de las
direcciones físicas más pequeñas) y un registro límite (contiene el rango de direcciones lógicas). Con estos registros,
cada dirección lógica debe ser menor al valor contenido en el registro límite. La MMU convertirá la dirección lógica
dinámicamente sumándole el valor contenido en el registro de reubicación que luego se enviará a la memoria.
Cuando el planificador de la CPU selecciona un proceso para su ejecución, el despachador carga en el registro de
reubicación y de límite los valores correctos, como parte del proceso de cambio de contexto, permitiendo proteger al SO
como a los datos de los otros usuarios. Este esquema permite que el SO cambie de tamaño dinámicamente.

Particiones fijas & Particiones Variables


Una de los métodos más simples para asignar la memoria consiste en dividirla en varias particiones de tamaño fijo.
Cada partición puede contener exactamente un proceso, de modo que el grado de multiprogramación estará sujeto al
número de particiones disponibles.
El método de particiones múltiples (MFT), cuando una partición está libre se selecciona un proceso de la cola y se lo
carga en dicha partición. Cuando el proceso termina lo devuelve. Este esquema ya no se utiliza.
El método de particiones fijas (MVT) es muy utilizado en los sistemas de procesamiento por lotes. Consiste en que
el SO mantiene una tabla que indica partes de la memoria que están libres y ocupadas. Inicialmente se denomina
agujero. Cuando llega un proceso buscamos un agujero lo suficientemente grande como para albergar dicho proceso. Si
lo encontramos sólo se asigna la memoria justa necesaria para ejecutar dicho proceso manteniendo el resto de la
memoria libre para otros procesos.
En cualquier momento tendremos una lista de tamaños de bloque disponible y una cola de entrada de procesos. El
SO puede ordenar la cola con algún algoritmo de planificación. Mientras que no haya un bloque de memoria disponible

32
Downloaded by Geral Diaz (geraldinegeri11@gmail.com)
lOMoARcPSD|15103112

Sistemas Operativos

para una proceso solicitante, el SO puede esperar hasta encontrarlo o puede examinar el resto de la cola para ver si
puede satisfacer a algún otro proceso.
Cuando llega un proceso, el sistema busca un agujero para el mismo, cuando lo encuentra y es demasiado grande lo
divide en dos para darle una parte al proceso y dejar la otra mitad para albergar otros procesos. Cuando el proceso
termina su tarea lo libera, y si el agujero es adyacente a algún otro agujero entonces se unen formando un solo agujero
mayor. Este procedimiento es un caso concreto del problema de asignación dinámica de espacio de almacenamiento,
que se ocupa de cómo satisfacer una solicitud de tamaño n a partir de una lista de agujeros libres. Las soluciones
disponibles son:
 Primer ajuste. Se asigna el primer agujero que sea suficientemente grande. La exploración puede comenzar
desde el principio o en el punto en que hubiere terminado la exploración anterior.
 Mejor ajuste. Se asigna el agujero más pequeño que tenga el tamaño suficiente. Debemos explorar la lista
completa salvo que la misma esté ordenada.
 Peor ajuste. Se asigna el agujero de mayor tamaño. Debemos explorar la lista entera salvo que la misma esté
ordenada.
La estrategia de primer ajuste con la de mejor ajuste para la asignación de memoria son mejores que la de peor
ajuste en términos del tiempo necesario y de utilización del espacio de almacenamiento.

Fragmentación
Tanto la estrategia de primer ajuste como la de mejor ajuste sufren del problema denominado fragmentación
externa. Este aparece cuando hay un espacio de memoria total suficiente como para satisfacer una solicitud pero esos
espacios disponibles no son contiguos. Este problema puede llegar a ser muy grave ya que podríamos desperdiciar gran
cantidad de memoria.
Cuando se descompone la memoria física en bloques de tamaño fijo y se asigna la memoria en unidades basadas a
los tamaños de los bloques. Con esta técnica, los bloques asignados a los procesos pueden ser mayor al que un proceso
necesita. La diferencia entre estos dos valores es lo que se conoce como fragmentación interna.
Una solución a este problema consiste en la compartición. El objetivo es mover el contenido de la memoria con el
fin de situar toda la memoria libre de manera contigua, para formar un único bloque de gran tamaño. La compartición
sólo es posible la reubicación es dinámica y se lleva a cabo en tiempo de ejecución.

Paginación
La paginación es un esquema de gestión de memoria que permite que el espacio de direcciones físicas de un
proceso no sea contiguo. Esta, evita el problema de encajar fragmentos de memoria de tamaño variable en el almacén
de respaldo. Tradicionalmente se gestionaba mediante hardware, aunque los sistemas de hoy en día lo hacen mediante
hardware y el SO.
El método básico implica descomponer la memoria física en una serie de bloques de tamaño fijo denominados
marcos y descomponer la memoria lógica en bloques del mismo tamaño denominados páginas. Cuando hay que
ejecutar un proceso, sus páginas se cargan desde el almacén de respaldo en los marcos de memoria disponible. El
almacén de respaldo está dividido en bloques de tamaño fijo que tienen el mismo tamaño que los marcos de memoria.
Toda dirección generada por la CPU está dividida en número de página (p) y un desplazamiento de página (d).La
tabla de página con tiene la dirección base de cada página en memoria física, la cual se combina con el desplazamiento
para definir la dirección de memoria física que se envía a la unidad de memoria.
El tamaño de página es una potencia de 2 variando entre 512 bytes y 16 MB por página, dependiendo de la
arquitectura de la computadora. Si el tamaño del espacio de direcciones lógicas es 2 n y el tamaño de página es 2n
unidades de direccionamiento, entonces los m-n bits de mayor peso de cada dirección lógica designarán el número de

33
Downloaded by Geral Diaz (geraldinegeri11@gmail.com)
lOMoARcPSD|15103112

Sistemas Operativos

páginas, mientras que los n bits de menor peso indicarán el desplazamiento de página. Por lo tanto, la dirección lógica
tiene la estructura siguiente:
Número de página Desplazamiento de página
p (m-n) d (n)
Donde p es un índice de páginas y d es el desplazamiento dentro de la página.
(Podemos darnos cuenta de que el esquema de paginación es una forma de reubicación dinámica)
Cuando usamos un esquema de paginación, no tenemos fragmentación externa, ya que todos los marcos libres
pueden ser asignados a los procesos solicitantes. Sin embargo podemos tener fragmentación interna. Si el tamaño de los
procesos es independiente del tamaño de las páginas, podemos esperar que la fragmentación interna sea como
promedio igual a media página por cado proceso.
Un aspecto importante de la paginación es la clara separación existente entre la visión de la memoria que tiene el
usuario y la memoria física real. Éste diferencia se resuelve gracias al hardware de traducción de direcciones.
Puesto que los SO gestionan la memoria física, éste, debe ser consciente de los detalles relativos a la asignación de
la memoria física. Este información adicional se suele mantener en una estructura denominada tabla de marcos. Esta,
tiene una entrada por cada marco que indica si está libre u ocupado, y en caso de ocupado qué página ha sido asignado.

Soporte hardware
La mayoría de los SO asignan una tabla de páginas para cada proceso, almacenándose un puntero a la tabla de
página, junto con otros valores de los registros en el bloque de control de procesos. La tabla de páginas se mantiene en
memoria principal, utilizándose un registro de la tabla de páginas (PTBR) para apuntar a cada página. Para cambiar las
tablas de páginas, sólo hace falta cambiar este único registro. Reduciendo así sustancialmente el tiempo de cambio de
contexto.
El problema con esta técnica es el tiempo requerido para acceder a una ubicación de memoria del usuario. Este
retardo es intolerable. Es mejor utilizar un mecanismo de intercambio de memoria.
La solución estándar a este problema consiste en utilizar una caché hardware especial de pequeño tamaño y con
capacidad de acceso rápido denominado búfer de consulta de traducción (TLB). Este es una memoria asociativa de alta
velocidad. Cada entrada del búfer TLB está compuesta por una clave y un valor. Cuando se le presenta un elemento a la
memoria asociativa ese elemento se compara simultáneamente con todas las claves. Si se encuentra se devuelve el
correspondiente campo de valor.
El búfer contiene solo unas cuantas entradas de la tabla de páginas. Cuando la CPU genera una dirección lógica, se
presenta el número de página al TLB y si se encuentra, su número de página estará inmediatamente disponible y se
utilizará para acceder a la memoria. En caso contrario, es necesario realizar una referencia a memoria para consultar la
tabla de páginas.
Algunos búferes TLB almacenan identificadores de espacio de direcciones (ASID) en cada entrada TLB para
identificar unívocamente a cada proceso proporcionando una protección del espacio de direcciones correspondiente a
ese proceso.
El porcentaje de veces que se encuentra en número de página en el TLB se denomina tasa de acierto.

Protección
La protección de memoria en un entorno paginado se consigue mediante una serie de bits de protección asociado
con cada marco. Uno de los bits puede definir una página como de lectura-escritura o de sólo lectura. Al mismo tiempo
que se calcula la dirección física, pueden comprobarse los bits de protección. Todo intento de violación provocará una
interrupción el SO.

34
Downloaded by Geral Diaz (geraldinegeri11@gmail.com)
lOMoARcPSD|15103112

Sistemas Operativos

Páginas compartidas
Una ventaja de la paginación es la posibilidad de compartir código común, muy importante en un sistema de tiempo
compartido. Sin embargo, si se trata de código reentrante (es código que no se auto modifica, nunca cambia durante su
ejecución) podrá ser compartido sólo si cada proceso tiene su propia página de datos.

Tabla de Páginas
Páginas jerárquicas
En la mayoría de los sistemas informáticos modernos la tabla de páginas llega a ser excesivamente grande. Como no
conviene asignar la tabla de páginas de forma contigua en la memoria principal, una solución podría basarse en un
algoritmo de paginación de dos niveles, en la que la propia tabla de páginas también está paginada. De este modo una
dirección lógica tendrá esta estructura:
Número de página Desplazamiento de página
p1 p2 d
Donde p1 es un índice a la tabla de página externa y p2 es el desplazamiento dentro de la página de la tabla de
página externa. Esta técnica también se conoce como tabla de páginas con correspondencia (mapeo) directa.
Particionando la tabla de páginas de esta manera, el SO puede dejar particiones sin utilizar hasta que un proceso las
solicite.
Para un sistema de 4 bits ya no resulta apropiado, la solución sería un esquema de 4 niveles, en el que se paginarán
también la propia tabla de páginas externas.

Tabla de páginas Hash


Para gestionar un espacio de direcciones de 32 bits se utiliza esta técnica, donde el valor hash es el número de
página virtual. Cada entrada contiene una lista enlazada de elementos que tienen como valor hash una misma ubicación
(para tratar colisiones). Cada elemento está compuesto de tres campos:
1. Número de página virtual
2. Valor del marco de página mapeado
3. Punto del siguiente elemento de la lista enlazada
Se ha propuesta una variante de este modelo para los espacios de direcciones de 64 bits el cual utiliza una tabla de
páginas en clúster en donde cada tabla hash apunta a varias páginas en lugar de a una sola. Estas son útiles para
espacios dispersos en la que las referencias a memoria no son contiguas.

Tablas de páginas invertidas


Estas tienen una entrada por cada página real (o marco) de la memoria. Cada entrada está compuesta de la
dirección virtual de la página almacenada en dicha ubicación de memoria real, e incluye información del proceso que
posee dicha página.
A menudo requiere que se almacene un identificador de espacio de direcciones en cada entrada de la tabla de
páginas para garantizar la relación correspondiente con el marco de página física. Los sistemas que utilizan este
mecanismo tienen problemas al implementar el concepto de memoria compartida.

Segmentación
El mapeo permite la diferenciación entre memoria lógica y memoria física.
La segmentación es un esquema de gestión de memoria que soporta la visión de la memoria que tienes los usuarios.
Un espacio lógico de direcciones es una colección de segmentos y cada segmento tiene un nombre y una longitud. Las
direcciones especifican tanto el nombre del segmento como el desplazamiento dentro de ese segmento. El usuario
especifica el nombre de segmento y un desplazamiento.
35
Downloaded by Geral Diaz (geraldinegeri11@gmail.com)
lOMoARcPSD|15103112

Sistemas Operativos

Los segmentos están numerados y se hace referencia a ellos mediante un número de segmento, así una dirección
lógica está compuesta por una pareja del tipo <número-segmento, desplazamiento>.

Hardware
Este mapeo se lleva cabo mediante una tabla de segmentos. Cada entrada de esta tabla tiene una dirección base del
segmento y un límite del segmento. La dirección base del segmento contiene la dirección física inicial del lugar donde el
segmento reside dentro de la memoria, mientras que el límite del segmento especifica la longitud de éste.

Memoria Virtual
La técnica de memoria virtual es un mecanismo que permite la ejecución de procesos que no se encuentran
completamente en la memoria. Sus principales ventajas son que los programas pueden tener un tamaño mayor que la
memoria física. También puede abstraer la memoria principal, transformándola conceptualmente en una matriz
uniforme y extremadamente grande, separando así la memoria lógica de la memoria física.

Conceptos y Direcciones Virtuales


El requisito de que las instrucciones deban encontrase en memoria principal tanto necesario como razonable resulta
poco deseable, ya que limita el tamaño de los programas.
La memoria virtual facilita el trabajo de los programadores, porque ya no tienen que preocuparse de la cantidad de
memoria física disponible.
El espacio de direcciones virtuales de un proceso hace referencia a la forma lógica de almacenar un proceso en la
memoria. Esta forma consiste en que el proceso comienza en una cierta dirección lógica y está almacenado de forma
contigua en la memoria. Es responsabilidad de la unidad de gestión de memoria (MMU) establecer la correspondencia
entre las páginas lógicas y los marcos de página física de la memoria.
Los espacios de direcciones virtuales que incluyen este tipo de huecos (gran espacio vacío entre el cúmulo y la pila
que consumen páginas físicas reales a medida que crece el cúmulo) se denominan espacios de direcciones dispersos,
que resultan muy ventajosos porque los huecos pueden llenarse a medida que crece la pila o el cúmulo.
Además también permite que dos o más procesos compartan los archivos y la memoria mediante mecanismos de
compartición de páginas, proporcionando las siguientes ventajas:
 Las bibliotecas del sistema pueden ser compartidas por numerosos procesos.
 Permite que los procesos puedan compartir la memoria.
 Permite que se compartan páginas durante la creación de procesos mediantes llamadas al sistema.

Paginación por demanda


Cargar un programa completo en memoria hace que se ejecuten todas las opciones independientemente de que el
usuario seleccione una de las mismas, lo que resulta engorroso. La estrategia alternativa es la denominada paginación
bajo demanda que consiste en cargar inicialmente las páginas únicamente cuando se necesiten y se utilizan en los
sistemas de memoria virtual. De esta manera, las páginas que no se necesitan nunca llegan a cargarse.
Este sistema es similar al de paginación con intercambio, con el adicional de usar un intercambio perezoso. Este
jamás intercambia una página con la memoria a menos que esa vaya a ser utilizada. Un intercambiador manipula
procesos completos, y un paginador sólo se encarga de las páginas individuales de un proceso. Por lo tanto usaremos el
término de paginador.
El paginador se encarga de calcular qué páginas van ser utilizadas para cargarlas en memoria reduciendo el tiempo
de carga y la cantidad de memoria física necesaria. Entonces necesitamos un soporte hardware para distinguir qué

36
Downloaded by Geral Diaz (geraldinegeri11@gmail.com)
lOMoARcPSD|15103112

Sistemas Operativos

páginas se encuentran en memoria y las que residen en disco. No podemos usar el hardware basado con los bits válido-
inválidos, entonces usamos uno que es el mismo para los mecanismos de paginación e intercambio:
 Una tabla de páginas. Permite marcar una entrada como inválida.
 Memoria secundaria. Almacena aquellas páginas que no están presentes en memoria principal. Usualmente
es un disco de alta velocidad. Se lo conoce como dispositivo de intercambio y la sección del disco utilizada se
llama espacio de intercambio.
Un requisito fundamental para la paginación bajo demanda es la necesidad de poder reiniciar cualquier instrucción
después de un fallo de página. Este es muy difícil de atender y la principal dificultad se presenta cuando una instrucción
modifica varias ubicaciones diferentes.
Este problema puede resolverse de las siguientes formas:
 El microcódigo calcula y trata de acceder a los dos extremos de ambos bloques. Si se va a producir un fallo de
página se produce en ese punto.
 Utilizar registros temporales para almacenar temporales para guardar las ubicaciones de las direcciones
sobrescritas. Si se produce un fallo vuelve a escribirse en memoria las antiguas ubicaciones.

Rendimiento
Puede afectar significativamente el rendimiento de un sistema. Mientras no tenga fallos de página el tiempo de
acceso afectivo será igual al tiempo de acceso a memoria. Sin embargo, si se produce, debemos leer del disco la página y
luego acceder a la misma. Para calcular el tiempo de acceso efectivo, debemos conocer cuánto tiempo se requiere para
dar servicio a un fallo de página.
Resulta crucial mantener una tasa de fallos de página baja en los sistemas de paginación bajo demanda, lo que
provoca una ralentización en la ejecución de los procesos.

Sustitución de páginas
Si aumentamos el grado de multiprogramación estaremos sobreasignando la memoria. Cuando nos encontramos en
la situación de sobreasignamiento el SO puede actuar óptimamente, descargando un proceso de la memoria, liberando
todos los marcos correspondientes y reduciendo el nivel de multiprogramación.

Situación básica de páginas


Utiliza la técnica siguiente: Si no hay ningún marco libre, localizamos una que no esté siendo usado y lo liberamos.
Podemos liberar el marco escribiendo su contenido en el espacio de intercambio y modificando la tabla de páginas para
indicar que esa página ya no se encuentra en memoria. Ahora podemos utilizar el marco para almacenar la página que
causó el fallo de página. Si no hay ningún marco libre entonces necesitamos dos transferencias de páginas
incrementando el tiempo efectivo de acceso.
Podremos reducir esta influencia asociando un bit de modificación en el hardware. Este es modificado cada vez que
se escribe un byte en la página. Entonces cada vez que queramos liberar una página analizaremos este bit para ver si la
página fue modificada o no.
El mecanismo de sustitución de página resulta fundamental para la paginación bajo demanda ya que completa la
separación entre la memoria lógica y física y proporciona a los programadores una memoria virtual mucho mayor que la
física. Pero para implementar la paginación bajo demanda debemos resolver dos problemas fundamentales: hay que
desarrollar un algoritmo de asignación de marcos de marcos y un algoritmo de sustitución de páginas.

37
Downloaded by Geral Diaz (geraldinegeri11@gmail.com)
lOMoARcPSD|15103112

Sistemas Operativos

FIFO (Sustitución de páginas FIFO)


(Primero en llegar, primero en ser servido). Asocia con cada página el instante en que dicha página fue cargada en
memoria. Cuando hace falta sustituir una página, se elige la página más antigua. Cuando se carga en memoria una nueva
página, se inserta al final de la cola.
Este algoritmo es fácil de entender y programar, pero su rendimiento no siempre es bueno. Por un lado, la página
sustituida puede ser un modulo de inicialización o bien contener una variable muy utilizada. Uno de los fundamentos
propuesto por la “anomalía de Belady” fue que “un algoritmo óptimo de sustitución de páginas será aquel que tenga la
tasa más baja de fallos de página y que nunca este sujeto a la anomalía de Belady”. Este algoritmo se realizó y es el MIN
que sustituye la página que no vaya a ser utilizada durante el período de tiempo más largo. Desafortunadamente es muy
difícil de implementar porque requiere un conocimiento futuro de la cadena de referencia.

LRU (Sustitución por páginas LRU)


(Menos recientemente utilizado). Asocia con cada página el instante correspondiente al último uso de dicha página.
Cuando hay que sustituir una página el LRU selecciona la página que no haya sido usada durante un período de tiempo
más largo.
Este algoritmo se considera bastante bueno pero requiere una considerable asistencia hardware. El problema
consiste en determinar un orden para los marcos definidos por instante correspondiente al último uso. Existen dos
implementaciones:
 Contadores. Asociamos a cada entrada en la tabla de páginas un campo de tiempo de uso y añadimos a la CPU
un reloj contador. El reloj se incrementa con cada referencia a memoria. Cuando se realiza una referencia a
una página, se copia el tiempo del reloj en la tabla de páginas. Esto requiere hacer una búsqueda en la tabla
de páginas para encontrar la menos reciente usada. Tenemos que tener los desbordes del reloj.
 Pila. Consiste en mantener una pila de números de páginas. Cada vez que se hace referencia a una página se
extrae esta de la pila y se la coloca en la parte superior. Cada actualización es más cara que el otro método.
Estos algoritmos no sufren de la anomalía de Belady. Estos algoritmos no podrían implementarse sin la ayuda
hardware adicional como la de los registros TLB.

NRU
LFU (menos frecuentemente utilizada). Requiere sustituir la página que tenga el valor más pequeño de contador. La
razón para esta selección es que las páginas más activamente utilizadas deben tener un valor grande en el contador de
referencia. El problema es cuando se sustituye una página que es utilizada en la fase inicial de un proceso.

NFU
MFU (más frecuentemente utilizada). Se basa en el argumento de que la página que tenga el valor de contador más
pequeño acaba probablemente de ser cagada en memoria y todavía tiene que ser utilizada.
Estos dos algoritmos (LFU y NFU) son muy caros de implementar y no tienen una buena aproximación a los otros
algoritmos.

Segunda oportunidad
Es un algoritmo de sustitución FIFO. Sin embargo, cuando se selecciona una página, inspeccionamos su bit de
referencia. Si el valor es 0, sustituimos dicha página, pero si su bit es 1 damos a esa página una segunda oportunidad y
seleccionamos la siguiente página FIFO. Cuando una página obtiene la segunda oportunidad, su bit de referencia se
borra y el bit que controla su instante de llegada se reconfigura para asignarle el instante actual. Así, a una página que se

38
Downloaded by Geral Diaz (geraldinegeri11@gmail.com)
lOMoARcPSD|15103112

Sistemas Operativos

le ha dado una segunda oportunidad no será sustituida hasta que todas las demás hayan sido sustituidas. Además, si una
página se utiliza constantemente nunca será sustituida.
Una forma de aplicarlo es con una cola circular. Se indica un puntero para la página que hay que sustituir. Cuando
hace falta un marco, el puntero avanza hasta que encuentre un bit igual a 0. La desventaja, es que se degenera
convirtiéndose en un algoritmo de sustitución FIFO si todos los bits están activados.

Segunda oportunidad mejorado


Obtenemos la mejora considerando el bit de referencia y el bit de modificación como una pareja ordenada.
Tenemos 4 posibles casos:
1. (0,0). Mejor página para la sustitución.
2. (0,1). No se ha usado pero si se ha modificado.
3. (1,0). Se ha utilizado recientemente paro está limpia.
4. (1,1). Se ha utilizado y modificado recientemente.
Cuando hace falta sustituir una página se hace lo mismo que en el algoritmo del reloj, pero examinamos la clase a la
que dicha página pertenece.

39
Downloaded by Geral Diaz (geraldinegeri11@gmail.com)
lOMoARcPSD|15103112

Sistemas Operativos

UNIDAD IV
Gestión del almacenamiento Secundario
Sistemas de archivos
Introducción
El sistema de archivos es el aspecto más visible de un sistema operativo. Proporciona los mecanismos para el
almacenamiento en línea de los datos y programas del propio sistema operativo y para todos los usuarios del sistema
informático, así como para el acceso a esos datos y programas. El sistema de archivos está compuesto de dos partes
diferenciadas:
 Una colección de archivos, cada uno de los cuales almacena una serie de datos relacionados.
 Estructura de directorios, que organiza todos los archivos del sistema y proporciona información acerca de
los mismos.

Conceptos Básicos

Concepto de Archivo
Las computadoras pueden almacenar información en varios soportes de almacenamiento, como discos magnéticos,
cintas magnéticas y discos ópticos.
El sistema operativo proporciona una vista lógica uniforme para el almacenamiento de la información. El sistema
operativo realiza la abstracción de las propiedades físicas de los dispositivos de almacenamiento, con el fin de definir
una unidad lógica de almacenamiento, el archivo. Los archivos son mapeados por el sistema operativo sobre los
dispositivos físicos. Los contenidos persisten aunque se produzcan fallos de alimentación o reinicios del sistema.
Un archivo es una colección de información relacionada, con un nombre, que se graba en almacenamiento
secundario. Desde la perspectiva del usuario, un archivo es la unidad más pequeña de almacenamiento secundario
lógico. Los archivos de datos pueden ser numéricos, alfanuméricos o binarios, puede haber archivos de formato libre.
La información contenida en un archivo es definida por su creador. En un archivo pueden almacenarse muchos tipos
distintos de información: programas objeto, ejecutables, datos numéricos, texto, registros, imágenes, grabaciones
sonoras, etc. Un archivo tiene una determinada estructura definida que dependerá de su tipo.

Atributos de archivo
Los atributos de un archivo varían de un sistema operativo a otro, pero típicamente son los siguientes:
 Nombre: Es la única información que se mantiene en un formato legible por parte de las personas.
 Identificador: Usualmente es un número, identifica el archivo dentro del sistema de archivos; se trata de la
versión no legible por las personas del nombre de archivo.
 Tipo: Esta información es necesaria para los sistemas que soporten diferentes tipos de archivos.
 Ubicación: Esta información es un puntero a un dispositivo y a la ubicación del archivo dentro de dicho
dispositivo.
 Tamaño: Expresa el tamaño actual del archivo.
 Protección: Información de control de acceso que determina quién puede leer, escribir o ejecutar el archivo.
 Fecha, id del usuario: esta información puede mantenerse para la creación, la última modificación. Esto
puede resultar útil para propósitos de protección, seguridad y monitorización del archivo.

40
Downloaded by Geral Diaz (geraldinegeri11@gmail.com)
lOMoARcPSD|15103112

Sistemas Operativos

La información acerca de los archivos se almacena en la estructura de directorios, que también reside en el
almacenamiento secundario.

Operaciones con los archivos


El sistema operativo puede proporcionar llamadas al sistema para crear, escribir, leer, borrar y truncar archivos.
 Creación de archivos: Para crear un archivo hace falta ejecutar dos pasos:
1. Encontrar espacio para el archivo dentro del sistema de archivos.
2. Incluir en el directorio una entrada para el nuevo archivo.
 Escritura en un archivo: El sistema debe mantener un puntero de escritura que haga referencia a la
ubicación dentro del archivo en la que debe tener lugar la siguiente escritura. El puntero de escritura debe
actualizarse cada vez que se escriba en el archivo nueva información.
 Lectura de un archivo: Exploramos el directorio para hallar la entrada asociada y el sistema necesitará
mantener un puntero de lectura que haga referencia a la ubicación dentro del archivo.
 Borrado de un archivo: Exploramos el directorio en busca del archivo. Habiendo encontrado la entrada de
directorio, liberamos todo el espacio del archivo y borramos también la propia entrada del directorio.
 Truncado de un archivo: El usuario puede querer borrar el contenido de un archivo, pero manteniendo sus
atributos.

Tipos de Archivos
Si un sistema operativo reconoce el tipo de un archivo, podrá operar con ese archivo de formas razonables.
Una técnica común para implementar los tipos de archivo consiste en incluir el tipo como parte del nombre de
archivo. De esta forma, el usuario y el sistema operativo pueden determinar, con sólo analizar el nombre, cuál es el tipo
de cada archivo.
El sistema utiliza la extensión para indicar el tipo del archivo y el tipo de operaciones que pueden realizarse con
dicho archivo. Por ejemplo, sólo los archivos con extensión .com, .exe, .bat pueden ejecutarse.

Estructura de los archivos


Los tipos de archivo también pueden usarse para indicar la estructura interna del archivo.
Además, ciertos archivos deben adaptarse a una estructura requerida, comprensible por parte del sistema.
Una de las desventajas de que el sistema operativo soporte múltiples estructuras de archivo son que el tamaño
resultante del sistema operativo es excesivo. Si el sistema operativo define cinco tipos distintos de estructuras,
necesitará contener el código para soportar esas estructuras de archivo.

Estructura interna de los archivos


Todas las operaciones de E/S de disco se realizan en unidades de un bloque (registro físico) y todos los bloques
tienen el mismo tamaño. Resulta poco probable que el tamaño del registro físico se corresponda exactamente con la
longitud deseada de los registros lógicos. Una solución común a este problema consiste en empaquetar varios registros
lógicos dentro de los bloques físicos.

Métodos de Acceso
Los archivos almacenan información. Cuando hace falta utilizarla, es necesario acceder a esta información y leerla en
la memoria de la computadora.

Acceso Secuencial

41
Downloaded by Geral Diaz (geraldinegeri11@gmail.com)
lOMoARcPSD|15103112

Sistemas Operativos

El método de acceso más simple es el acceso secuencial. La información del archivo se procesa en orden, un registro
después de otro.
Las lecturas y escrituras constituyen el grueso de las operaciones realizadas con un archivo. Una operación de
lectura lee la siguiente porción del archivo e incrementa automáticamente un puntero de archivo, que controla la
ubicación de E/S. De forma similar, la operación de escritura.
En algunos sistemas, puede que un programa sea capáz de saltar hacia adelante o hacia atrás n registros, para algún
cierto valor entero n, quizás n= 1.

Acceso Directo
Otro método es el de acceso directo o acceso relativo. Un archivo está compuesto de registros lógicos de longitud
fija que permiten a los programas leer y escribir registros rápidamente, sin ningún orden concreto.
Para el acceso directo, el archivo se considera como una secuencia numerada de bloques o registros. Por tanto,
podemos leer el bloque 14, luego el 53. No existe ninguna restricción en cuanto al orden de lectura o escritura en los
archivos de acceso directo.
Los archivos de acceso directo tienen una gran utilidad para el acceso inmediato a grandes cantidades de
información y las bases de datos.
Podemos simular fácilmente el acceso secuencial en un archivo de acceso directo, simplemente manteniendo una
variable que defina nuestra posición actual. Sin embargo, simular un archivo de acceso directo sobre un archivo de
acceso secuencial es poco eficiente y engorroso.

Otros Métodos de Acceso


Estos métodos implican generalmente, la construcción de un índice para el archivo. El índice como los índices de un
libro, contiene punteros a los distintos bloques. Para encontrar un registro dentro del archivo, primero exploramos el
índice y luego usamos el puntero para acceder al archivo directamente y para hallar el registro deseado.
Con los archivos de gran tamaño, el propio archivo del índice puede ser demasiado grande como para almacenarlo
en la memoria. Una solución consiste en crear un índice del archivo índice. El archivo índice principal contendría
punteros a los archivos de índice secundarios que a su vez apuntarían a los propios elementos de datos.

Estructura de Directorios
Para gestionar todos los datos, necesitamos organizarlos de alguna manera y esta organización implica el uso de
directorios.

Introducción a los Directorios


El directorio puede considerarse como una tabla de símbolos que traduce los nombres de archivo a sus
correspondientes entradas de directorio.
Cuando consideramos una estructura de directorio concreta, tendremos que tener presentes las operaciones que
habrá que realizar con el directorio:
 Búsqueda de un archivo: Tenemos que poder explorar la estructura de directorio para encontrar la entrada
correspondiente a un archivo concreto
 Crear un archivo: Es necesario poder crear nuevos archivos y añadirlos al directorio.
 Listar un directorio: Enumerar los archivos contenidos en un directorio.
 Renombrar un Archivo.
 Recorrer el sistema de archivos: Acceder a todos los directorios y a todos los archivos contenidos dentro de
una estructura de directorios.

42
Downloaded by Geral Diaz (geraldinegeri11@gmail.com)
lOMoARcPSD|15103112

Sistemas Operativos

Directorio de un único nivel


La estructura de directorio más simple es el directorio de un único nivel. Todos los archivos están contenidos en el
mismo directorio, que resulta fácil de mantener y de comprender. Sin embargo, un directorio de un único nivel tiene
limitaciones significativas cuando el número de archivos se incrementa o cuando el sistema tiene más de un usuario.
Puesto que todos los archivos se encuentran en el mismo directorio, deberán tener nombres distintos.

Directorio de dos niveles


En la estructura de directorio de dos niveles, cada usuario tiene su propio directorio de archivos de usuario (UFD).
Cuando un trabajo de un usuario se inicia o cuando un usuario se conecta al sistema, se explora el directorio maestro de
archivos (MFD). Cuando un usuario hace referencia a un archivo concreto, sólo se explora su propio UFD.
Los propios directorios de usuario deben poder crearse y borrarse según sea necesario.
Aunque la estructura de directorio en dos niveles resuelve el problema de la colisión de nombres, sigue teniendo
ciertas desventajas; esta estructura aísla efectivamente a un usuario y a otro y ese aislamiento es una ventaja cuando los
usuarios son completamente independientes, pero puede llegar a ser una desventaja cuando los usuarios quieren
cooperar en una cierta tarea y poder acceder a los archivos del otro
Un directorio de dos niveles puede verse como una estructura de árbol, o de árbol de altura 2.

Directorios con estructura de árbol


Como puede verse, un directorio en dos niveles como un árbol de dos niveles, la generalización natural consiste en
ampliar la estructura de directorios para que sea un árbol de altura arbitraria.
Esta generalización permite a los usuarios crear sus propios subdirectorios y organizar sus archivos
correspondientes. Los árboles son las estructuras de directorio más común. Cada árbol tiene un directorio raíz y todos
los archivos del sistema tienen un nombre de ruta distintivo.
Un directorio es simplemente otro archivo, pero que se trata de forma especial. Un bit de cada entrada de directorio
define si esa entrada es un archivo (0) o un subdirectorio (1). Se utilizan llamadas especiales para crear y borrar los
directorios.
Los nombres de ruta pueden ser de dos tipos: absolutos y relativos. Un nombre de ruta absoluto comienza en la raíz
y sigue una ruta descendente hasta el archivo especificado, indicando los nombres de los directorios que componen la
ruta. Un nombre de ruta relativo, define una ruta a partir del directorio actual.
Permitir a un usuario definir sus propios subdirectorios hace que el usuario pueda imponer una estructura a sus
archivos.
Con un sistema de directorios con estructura de árbol, podemos permitir que los usuarios accedan a los archivos de
otros usuarios, además de acceder a los suyos propios.

Directorios en un grafo acíclico


Considere dos programadores que estén trabajando en un proyecto conjunto. Ambos quieren que un subdirectorio
se encuentre dentro de su propio directorio. El subdirectorio común debe, por tanto, ser compartido. Cada directorio
compartido existirá en el sistema de archivos en dos o más lugares simultáneamente.
Una estructura en árbol prohíbe la compartición de archivos o directorios. Un grafo acíclico, permite que los
directorios compartan subdirectorios de archivos. El mismo archivo o subdirectorio puede estar en dos directorios
diferentes.
Es importante observar que un archivo (o directorio) compartido no es lo mismo que dos copias de un archivo.

43
Downloaded by Geral Diaz (geraldinegeri11@gmail.com)
lOMoARcPSD|15103112

Sistemas Operativos

Con un archivo compartido, sólo existe un archivo real, por lo que cualquier cambio realizado por un apersona será
inmediatamente visible para la otra. Cada nuevo archivo creado por una persona aparecerá automáticamente en todos
los subdirectorios compartidos.
Un problema se presenta con respecto al borrado de archivos. Una posibilidad consiste en eliminar el archivo
cuando un usuario cualquiera lo borre, pero esta acción puede dejar punteros colgantes al archivo que ha dejado de
existir. Otra técnica de borrado consiste en preservar el archivo hasta que se borren todas las referencias al mismo. Para
implementar esta técnica, debemos disponer de algún mecanismo para determinar que se ha borrado la última
referencia al archivo.

Directorio en forma de grafo general


Archivos Compartidos
La compartición de archivos es muy deseable para aquellos usuarios que quieran colaborar y reducir el esfuerzo
requerido para conseguir desarrollar un programa. Por tanto, los sistemas operativos orientados al usuario deben
satisfacer la necesidad de compartir archivos a pesar de las dificultades inherentes a este mecanismo.
Una vez que se permite compartir los archivos a diversos usuarios, el desafío principal consiste en ampliar la
compartición a múltiples sistemas de archivos, incluyendo sistemas de archivos remotos.

Múltiples usuarios
Dada una estructura de directorio que permite que los usuarios compartan archivos, el sistema debe adoptar un
papel de mediador en lo que a la compartición de archivos respecta. El sistema puede permitir que un usuario acceda a
los archivos de otros usuarios de manera predeterminada, o puede por el contrario requerir que los usuarios concedan
explícitamente el acceso a sus archivos.
Para implementar la compartición y los mecanismos de protección, el sistema debe mantener más atributos de los
archivos y de los directorios que los que se necesitan en un sistema mono-usuario.
La mayoría de los sistemas han terminado por evolucionar para usar el concepto de propietario (o usuario) de un
archivo o directorio y el concepto de grupo. El propietario es el usuario que puede cambiar los atributos y conceder el
acceso y que dispone del máximo grado de control sobre el archivo, todos los restantes usuarios podrán ejecutar otro
subconjunto de operaciones. El propietario del archivo es quien define exactamente qué operaciones pueden ser
ejecutadas por los miembros del grupo y por los restantes usuarios.

Sistemas de Archivos Remotos


La interconexión por red permite la compartición de una serie de recursos.
Con la evolución de las tecnologías de red y de archivos, los métodos de compartición de archivos han ido
cambiando. El primer método que se implementó implicaba la transferencia manual de archivos entre dos máquinas
mediante programas como ftp. El segundo método principal utilizaba un sistema de archivos distribuido. El tercer
método, la World Wide Web, es una reversión del primero de los métodos, y utiliza casi exclusivamente un mecanismo
de intercambio anónimo de archivos.

Modelo Cliente-Servidor
Los sistemas de archivos remotos permiten a una computadora montar uno o más sistemas de archivos desde una o
más máquinas remotas. La máquina que contiene los archivos es el servidor, mientras que la máquina que trata de
acceder a los archivos es el cliente.

44
Downloaded by Geral Diaz (geraldinegeri11@gmail.com)
lOMoARcPSD|15103112

Sistemas Operativos

Un servidor puede dar servicio a múltiples clientes y cada cliente puede utilizar múltiples servidores, dependiendo
de los detalles de implementación de cada arquitectura cliente-servidor.

Sistemas de información Distribuidos


Para hacer que los sistemas cliente-servidor sean más fáciles de gestionar, los sistemas de información distribuidos,
también conocidos como servicios de denominación distribuidos, proporcionan un acceso unificado a la información
necesaria para la informática remota. El sistema de nombres de dominio, por ejemplo, proporciona un servicio de
traducción de nombres de host a direcciones de red para toda Internet.

Protección
Cuando se almacena información en un sistema informático, necesitamos protegerla frente a los daños físicos
(fiabilidad) y frente a los accesos incorrectos (protección).
La fiabilidad se proporciona, generalmente, mediante copias duplicadas de los archivos. Muchas computadoras
tienen programas del sistema que copian automáticamente (o mediante el operador).
Los sistemas de archivos pueden verse dañados por problemas de sobretensiones, o caídas de tensión. Los archivos
también pueden borrarse accidentalmente y los errores en el software del sistema de archivos también pueden
provocar la pérdida del contenido de un archivo.

Tipos de Acceso
La necesidad de proteger los archivos es consecuencia directa de la posibilidad de acceder a esos archivos. Los
sistemas que no permiten el acceso a los sistemas de otros usuarios no necesitan ninguna protección. En forma general,
lo que se necesita es un acceso controlado.
Los mecanismos de protección proporcionan un acceso controlado limitando los tipos de accesos a archivo que
puedan realizarse. Podemos controlar varios tipos de operaciones diferentes:
 Lectura
 Escritura
 Ejecución
 Adición, al final del archivo
 Borrado
 Listado
Se han propuesto muchos mecanismos de protección y cada uno tiene sus ventajas y desventajas y es preciso
valorar si resulta apropiado para cada aplicación en cuestión.

Control de Acceso
La técnica más común para resolver el problema de la protección consiste en hacer que el acceso dependa de la
identidad del usuario. El esquema más general para implementar un acceso dependiente de la identidad consiste en
asociar con cada archivo y directorio una lista de control de acceso que especifique los nombres de usuario y los tipos
de acceso que se permiten para cada uno. El problema principal con las listas de acceso es su longitud.
Para condensar la longitud de la lista de control de acceso, muchos sistemas clasifican a los usuarios en tres grupos:
 Propietario: El usuario que creó el archivo.
 Grupo: Un conjunto de usuarios que están compartiendo el archivo y necesitan un acceso similar al mismo.
 Universo: Todos los demás usuarios del sistema.

45
Downloaded by Geral Diaz (geraldinegeri11@gmail.com)
lOMoARcPSD|15103112

Sistemas Operativos

Otras técnicas de protección


Otra técnica para resolver el problema de la protección consiste en asociar una contraseña con cada archivo. En
primer lugar, el número de contraseñas que un usuario necesita recordar puede llegar a ser muy grande, haciendo que
este esquema resulte poco práctico. En segundo lugar, si se utiliza una única contraseña para todos los archivos, una vez
que esa contraseña sea descubierta todos los archivos serán accesibles. Algunos sistemas permiten a los usuarios
efectuar una contraseña con un subdirectorio, en lugar de con un archivo concreto, para aliviar el problema.

Implementación del Sistemas de archivos

Estructura de un sistema de Archivos


Los discos constituyen el principal tipo de almacenamiento secundario para mantener sistemas de archivos. Tienen
dos características que los convierten en un medio conveniente para el almacenamiento de múltiples archivos:
1. El disco puede ser reescrito de manera directa; es posible leer un bloque del disco, modificarlo y volverlo
a escribir en el mismo lugar.
2. Con un disco, se puede acceder directamente a cualquier bloque de información que contenga.
En lugar de transferir un byte cada vez, las transferencias de E/S entre la memoria y el disco se realizan en unidades
de bloques.
Un sistema de archivos acarrea dos problemas de diseño bastante diferentes. El primer problema es definir qué
aspecto debe tener el sistema de archivos para el usuario. Esta tarea implica definir un archivo y sus atributos, las
operaciones permitidas sobre los archivos y la estructura de directorio utilizada para organizar los archivos. El segundo
problema es crear algoritmos y estructuras de datos que permitan mapear el sistema lógico de archivos sobre los
dispositivos físicos de almacenamiento secundario.
El propio sistema de archivos está compuesto, generalmente, de muchos niveles diferentes. Cada nivel del diseño
utiliza las funciones de los niveles inferiores.
El nivel más bajo, el control de E/S, está compuesto por controladores de dispositivo y rutinas de tratamiento de
interrupción.
El sistema básico de archivos sólo necesita enviar comandos genéricos al controlador de dispositivo apropiado, con
el fin de leer y escribir bloques físicos en el disco.
El módulo de organización de archivos tiene conocimiento acerca de los archivos y de sus bloques lógicos, así como
de sus bloques físicos.
El módulo de organización de archivos incluye también el gestor de espacio libre, que controla los bloques no
asignados y proporciona dichos bloques al módulo de organización de archivos cuando así se solicita.

Programas de Aplicación

Sistema Lógico de Archivos

Módulo de Org. de Archivos

Sistema Básico de Archivos

Control de E/S

Dispositivos

46
Downloaded by Geral Diaz (geraldinegeri11@gmail.com)
lOMoARcPSD|15103112

Sistemas Operativos

Finalmente, el sistema lógico de archivos gestiona la información de metadatos. Los metadatos incluyen toda la
estructura del sistema de archivos, excepto los propios datos. El sistema lógico de archivos gestiona la estructura de
directorio para proporcionar al módulo de organización de archivos la información que éste necesita.

Implementación de un sistema de Archivos


Hay algunos principios básicos que son de aplicación general.
En el disco, el sistema de archivos puede contener información acerca de cómo iniciar un sistema operativo que esté
almacenado allí, acerca del número total de bloques, del número y la ubicación de los bloques libres, de la estructura de
directorios y de los archivos individuales.
A continuación detallamos estructuras:
 Un bloque de control de arranque (por cada volumen) puede contener la información que el sistema
necesita para iniciar un sistema operativo a partir de dicho volumen. Si el disco no contiene un sistema
operativo, este bloque puede estar vacio. Normalmente, es el primer bloque del volumen. En el sistema de
archivos de usuario, se denomina bloque de inicio. En NTFS, se denomina sector de arranque de la partición.
 Un bloque de control de volumen contiene detalles acerca del volumen (o partición), tales como el número
de bloques que hay en la partición, el tamaño de los bloques, el número de bloques libres.
 Se utiliza una estructura de directorios por cada sistema de archivos para realizar los archivos.
 Un bloque FTB por cada archivo contiene numerosos detalles acerca del archivo, incluyendo los permisos
correspondientes, el propietario, el tamaño y la ubicación de los bloques de datos.
LA información almacenada en memoria se utiliza tanto para la gestión de un sistema de archivos como para la
mejora del rendimiento mediante mecanismos de caché. Las estructuras existentes pueden incluir las que a
continuación se describen:
 Una tabla de montaje en memoria contiene información acerca de cada volumen montado.
 Una caché de la estructura de directorios en memoria almacena la información relativa a los directorios a los
que se ha accedido recientemente.
 La tabla global de archivos abiertos contiene una copia del FCB de cada archivo abierto.
 La tabla de archivos abiertos de cada proceso contiene un puntero a la entrada apropiada de la entrada
global de archivos abiertos, así como otras informaciones adicionales.
Para crear un nuevo archivo, un programa de aplicación llama al sistema lógico de archivos. El sistema lógico de
archivos conoce el formato de las estructuras de directorio y, para crear un nuevo archivo, asigna un nuevo FCB.
El sistema lee entonces el directorio apropiado en la memoria, lo actualiza con el nuevo nombre de archivo y el
nuevo FCB y lo vuelve a escribir en el disco.
Ahora que hemos creado un archivo, es necesario abrirlo. La llamada open() pasa un nombre de archivo al sistema
de archivos. La llamada al sistema open() primero busca en la tabla global de archivos abiertos.
A continuación, se crea una entrada en la tabla de archivos abiertos del proceso, con un puntero a la entrada de la
tabla global de archivos abiertos y algunos otros campos de información.
Cuando un proceso cierra el archivo, se elimina la entrada de la tabla del proceso y se decrementa el contador de
aperturas existentes en la tabla global.

Particiones y Montaje
Un disco puede dividirse en múltiples particiones, o bien un volumen puede abarcar múltiples particiones en
múltiples discos.
Cada partición puede ser una partición “en bruto” (sin formato), que no contenga ningún sistema de archivos, o una
partición “procesada”, que si contenga un sistema de archivos.
La información de arranque puede almacenarse en una partición independiente. La información de arranque es,
usualmente, una serie secuencial de bloques, que se cargan como una imagen binaria en la memoria. Esta imagen de
arranque puede contener más información, a parte de las instrucciones relativas a como iniciar un sistema operativo
específico. La máquina puede ser de arranque dual, pudiendo instalarse a múltiples sistemas operativos.
La partición raíz, que contiene el kernel del sistema operativo se monta en el momento del arranque. Como parte de
una operación de montaje, el sistema operativo verifica que el dispositivo contenga un sistema de archivos válido.

47
Downloaded by Geral Diaz (geraldinegeri11@gmail.com)
lOMoARcPSD|15103112

Sistemas Operativos

Finalmente, el sistema operativo registrará en su tabla de montaje de la memoria que se ha montado un sistema de
archivos, indicando el tipo de sistema de archivos de que se trata. Los detalles de esta función dependerán del sistema
operativo.

Sistemas de archivos virtuales


¿Cómo permite el sistema operativo integrar múltiples tipos de sistemas de archivos en una estructura de
directorio?
Un método obvio, pero casi óptimo, de implementar múltiples tipos de sistemas de archivos consiste en escribir
rutinas diferentes de acceso a directorios y a archivos para cada uno de los tipos existentes, la mayoría de los sistemas
operativos utilizan técnicas de orientación a objetos para simplificar, organizar y modularizar la implementación.
Se utilizan estructuras de datos y procedimientos para aislar la funcionalidad básica de llamadas al sistema de los
detalles de implementación. Así, la implementación del sistema de archivos está compuesta de tres niveles principales,
como se muestra esquemáticamente en la siguiente figura:

Interfaz del sistema de archivos

Interfaz VFS

Sistema de Sistema de Sistema de


Archivos Local Tipo Archivos Local Tipo Archivos Remoto

Disco Disco Red

El primer nivel es la interfaz del sistema de archivos, basada en las llamadas open(), read(), write() y close() y en los
descriptores de archivos.
El segundo nivel se denomina sistema de archivos virtual (VFS); este nivel cumple dos importantes funciones:
1. Separa operaciones genéricas del sistema de archivos con respecto a su implementación.
2. El VFS proporciona un mecanismo para representar de forma coherente los archivos a través de una red.
Así el VFS distingue entre los archivos locales y los remotos y los archivos locales se distinguen entre sí de acuerdo
con el tipo de sistema de archivos.
Así el tercer nivel, el nivel de software VFS puede realizar una operación sobre uno de estos objetos invocando la
función apropiada a partir de la tabla de funciones del objeto.

Administración del Espacio en Disco


Puesto que el espacio del disco está limitado, necesitamos reutilizar el espacio de los archivos borrados para los
nuevos archivos, siempre que sea posible. Para controlar el espacio libre del disco, el sistema mantiene una lista de
espacio libre. Esta lista indica todos los bloques de disco libres, aquellos que no están asignados a ningún archivo o
directorio. Para crear un archivo, explotamos la lista de espacio libre hasta obtener la cantidad de espacio requerido y
asignamos ese espacio al nuevo archivo. Cuando se borra un archivo, su espacio de disco se añade a la lista de espacio
libre.

48
Downloaded by Geral Diaz (geraldinegeri11@gmail.com)
lOMoARcPSD|15103112

Sistemas Operativos

Vector de Bits
La lista de espacio libre se implementa como un mapa de bits o vector de bits. Cada bloque está representado por
un byte. Su el bloque esta libre, el byte seguirá igual a 1; si el bloque está asignado el bloque será 0.
La principal ventaja de este enfoque es su relativa simplicidad y la eficiencia que permite a la hora de localizar el
primer bloque libre o n bloques libres consecutivos en el disco.
Podemos ver como determinadas características hardware imponen la funcionalidad software.
Desafortunadamente, los vectores de bytes son ineficientes a menos que se mantenga el vector completo en la
memoria principal.

Lista Enlazada
Otra técnica para la gestión del espacio libre consiste en enlazar todos los bloques del disco libres, manteniendo un
puntero al primer bloque libre en ubicación especial del disco y almacenándolo en la memoria cache. Este primer bloque
contendrá un puntero al siguiente bloque libre del disco, etc. Este esquema, sin embargo, es poco eficiente; para
recorrer la lista, debemos leer cada bloque, lo que requiere un tiempo sustancial de E/S. Afortunadamente, no resulta
frecuente tener que recorrer la lista de espacio libre. Usualmente el sistema operativo simplemente necesita un bloque
libre para poder asignar dicho bloque a un archivo, por lo que se utiliza el primer bloque de la lista de espacio libre. El
método FAT incorpora el control de los bloques libres dentro de la estructura de datos utilizada para el algoritmo de
asignación; en este caso, no hace falta utilizar ningún método separado.

Agrupamiento
Una modificación de la técnica basada en una lista de espacio libre consiste en almacenar las direcciones de n
bloques libres en el primer bloque libre. Los primeros n-1 de estos bloques estarán realmente libres. De este modo,
podrán encontrarse rápidamente las dimensiones de un gran número de bloques libres, a diferencia del caso en que se
utilice la técnica estándar de lista enlazada.

Recuento
Otra técnica consiste en aprovechar el hecho de que, generalmente, puede asignarse o liberarse varios bloques
contiguos. Así, en lugar de mantener una lista de n direcciones de bloques de disco libres, podemos mantener la
dirección del primer bloque libre y el número de n bloques libres contiguos que siguen a ese bloque. Cada entrada en la
lista de espacio libre estará entonces compuesta por una dirección de disco y un contador.

Eficiencia y Rendimiento
Los discos tienden a representar uno de los principales cuellos de botella en el rendimiento de un sistema, ya que
son el más lento de los principales componentes de un sistema informático.

Eficiencia
El uso eficiente del espacio de disco depende en gran medida de los algoritmos de asignación de disco y de
directorio que se utilice.
También debemos considerar los tipos de datos que normalmente se almacenan en la entrada de directorio (o
inodo) de un archivo. Normalmente, suele escribirse una “fecha de la última modificación” para suministrar información
al usuario y para determinar si es necesario realizar una copia de seguridad al archivo. El resultado de mantener esta
información es que, cada vez que se lee el archivo es necesario escribir en uno de los campos de la estructura de
directorio. Esto significa que se necesita leer el bloque de memoria, cambiar una sección y volver a escribir el bloque en

49
Downloaded by Geral Diaz (geraldinegeri11@gmail.com)
lOMoARcPSD|15103112

Sistemas Operativos

el disco, ya que las operaciones de disco solo tienen lugar en unidades de bloque. Por tanto, cada vez que se abre un
archivo para lectura, es necesario también leer y escribir su entrada de directorio.
Este requisito puede resultar bastante poco eficiente para los archivos a los que se acceda frecuentemente, así que
debemos comparar las ventajas que proporciona con el impacto que tiene sobre el rendimiento a la hora de diseñar un
sistema de archivos. Generalmente, tenemos que considerar todos los elementos de datos asociados con un archivo
para ver el efecto que tienen sobre la eficiencia y sobre las prestaciones.
Como ejemplo, considere el impacto que tiene sobre la eficiencia el tamaño de los punteros que se utilicen para
acceder a los datos. La mayoría de los sistemas utilizan punteros de 16 bites o 32 bites en todo el sistema operativo.
Estos tamaños de puntero limitan la longitud de un archivo a 64 KB o 4GB. Algunos sistemas implementan punteros de
64 bytes para incrementar este límite a 264 bytes. Sin embargo, los punteros de 64 bites necesitan más espacio de
almacenamiento y hacen, a su vez, que los métodos de asignación y de gestión del espacio libre utilicen también más
espacio de disco.

Prestaciones
Podemos mejorar las prestaciones de diversas maneras. La mayoría de los controladores de disco incluyen una
memoria local que actúa como caché incorporada en la tarjeta y que es lo suficientemente grande como para almacenar
pistas completas al mismo tiempo. Una vez que se realiza una búsqueda se lee la correspondiente pista en la caché de
disco, comenzando por el sector situado bajo el cabezal de disco. El controlador de disco transfiere entonces al sistema
operativo los sectores solicitados.
Algunos sistemas mantienen una sección separada de memoria principal, reservándola para caché de buffer en la
que se almacenan los bloques bajo la suposición de que en breve volverán a ser utilizados de nuevo. Otros sistemas
almacenan en caché los datos de los archivos utilizando una caché de páginas. La caché de páginas utiliza técnicas de
memoria visual para almacenar en caché los datos de los archivos en forma de páginas, en lugar de cómo bloques del
sistema de archivos. El almacenamiento en caché de los datos de los archivos mediante direcciones virtuales es mucho
más eficiente que el almacenamiento en caché mediando bloques de discos físicos ya que los accesos se producen a la
memoria virtual en lugar del sistema de archivos. Este mecanismo se conoce con el nombre de memoria virtual
unificada.
Hay otras cuestiones que pueden afectar al rendimiento de E/S, como por ejemplo el hecho de si las escrituras en el
sistema de archivos se producen en modo síncrono o asíncrono. Las escrituras síncronas se producen en el orden en el
que el subsistema de disco las recibe, y esas escrituras no se almacenan en buffer. Por tanto, la rutina que realiza la
invocación debe esperar a que los datos alcancen la unidad de disco, antes de continuar con sus tareas. Las escrituras
asíncronas son las que se llevan a cabo la mayor parte de las veces. En una escritura asíncrona, los datos se almacenan
en la caché y el control se devuelve a la rutina que hubiera hecho la invocación.
Algunos sistemas optimizan su caché de páginas utilizando diferentes algoritmos de sustitución, dependiendo del
tipo de acceso al archivo. El acceso secuencial puede optimizarse mediante ciertas técnicas conocidas con el nombre de
liberación retardada y lectura anticipada. La liberación retardada elimina una página del buffer en cuanto se solicita la
página siguiente, las páginas anteriores no volverán probablemente a utilizarse de nuevo, así que representan un
desperdicio de espacio de buffer.
La caché de páginas, el sistema de archivos y los controladores de disco interactúan entre sí de forma bastante
interesante. Cuando se escriben datos en un archivo del disco, las páginas se almacenan temporalmente en la caché y el
controlador de disco ordena su cola de salida de acuerdo con la dirección de disco. Estas dos opciones permiten al
controlador de disco, minimizar los... faltan hojas

50
Downloaded by Geral Diaz (geraldinegeri11@gmail.com)
lOMoARcPSD|15103112

UNIDAD 6 | PROTECCIÓN Y SEGURIDAD


i. Objetivos y principios de la protección

A medida que los sistemas informáticos se han hecho más sofisticados y a medida que su
rango de aplicaciones se ha ido incrementando, también ha crecido la necesidad de
proteger la integridad de esos sistemas. Los conceptos modernos de protección han
evolucionado para incrementar la fiabilidad de cualquier sistema complejo que haga uso
de recursos compartidos.

Necesitamos proporcionar protección por diversas razones. La más obvia es la necesidad


de impedir una violación maliciosa e intencionada de una restricción de acceso por parte
de un usuario. Sin embargo, tiene una mayor importancia la necesidad de garantizar que
cada componente de programa activo en un sistema utilice los recursos del sistema sólo en
ciertas formas que sean coherentes con las políticas establecidas. Este requerimiento tiene
carácter primordial si se quiere disponer de un sistema fiable.

Los mecanismos de protección pueden mejorar la fiabilidad detectando los errores


latentes en las interfaces definidas entre los distintos subsistemas componentes. Un
recurso no protegido no puede defenderse frente te al uso (o mal uso) por parte de un
usuario no autorizado o incompetente. Un sistema orientado a la protección proporcionará
medios para distinguir entre el uso autorizado y el no autorizado.

El papel de la protección en un sistema informático es proporcionar un mecanismo para la


imposición de las políticas que gobiernen el uso de recursos. Estas políticas pueden
establecerse de diversas formas. Algunas están fijas en el diseño de un sistema, mientras
que otras se formulan al administrar ese sistema.

Las políticas de uso de recursos pueden variar según la aplicación y también pueden variar
a lo largo del tiempo. Por estas razones, la protección no es sólo cuestión del diseñador de
un sistema operativo.

Los mecanismos determinan cómo se llevará algo a cabo; las políticas deciden qué es lo
que hay que hacer. La separación entre política y mecanismos resulta importante si
queremos tener una cierta flexibilidad. Es probable que las políticas cambien de un lugar a
otro o a lo largo del tiempo. En el caso peor, cada cambio de política requeriría un cambio
en el mecanismo subyacente; la utilización de mecanismos generales nos permite evitar
este tipo de situaciones

P á g i n a 83 | 91
Sistemas Operativos

Downloaded by Geral Diaz (geraldinegeri11@gmail.com)


lOMoARcPSD|15103112

Principios de la protección

Uno de los principios directores clave y que ha resistido al paso del tiempo a la hora de
proporcionar protección es el principio del mínimo privilegio. Este principio dicta que, a
los programas, a los usuarios, incluso a los sistemas se les concedan únicamente los
suficientes privilegios para llevar a cabo sus tareas.

Considere la analogía de un guardia de seguridad que dispusiera de una tarjeta magnética.


Si esta tarjeta le permite entrar simplemente en las áreas públicas que está vigilando, un
mal uso de esa tarjeta provocará un daño mínimo. Sin embargo, si esa tarjeta permite
acceder a todas las áreas, el daño derivado del robo, la pérdida, el mal uso, la copia u otro
tipo de actividad comprometida realizada con la tarjeta será mucho mayor.

Un sistema operativo que se ajuste al principio del mínimo privilegio implementará sus
características, programas, llamadas al sistema y estructuras de datos de modo que el fallo
o el compromiso de un componente provoquen un daño mínimo y no permitan realizar
más que un daño mínimo. El desbordamiento de un búfer en un demonio del sistema
puede hacer, como, por ejemplo, que el demonio falle, pero no debería permitir la
ejecución de código contenido en la pila del proceso que permitiera a un usuario remoto
obtener privilegios máximos y acceder al sistema completo (como sucede de forma
demasiado frecuente hoy en día).

Dicho sistema operativo también proporcionará llamadas al sistema y servicios que


permitan escribir aplicaciones con controles de acceso de granularidad fina. Proporcionará
mecanismos para activar los privilegios cuando sean necesarios y desactivarlos cuando
dejan de serlo. También resulta ventajosa la creación de pistas de auditoría para todos los
accesos a funciones privilegiadas. La pista de auditoría permite al programador, al
administrador del sistema o a los miembros de las fuerzas del orden revisar todas las
actividades realizadas en el sistema que estén relacionadas con los mecanismos de
protección y de seguridad.

La gestión de los usuarios con el principio del mínimo privilegio implica crear una cuenta
separada para cada usuario, con sólo los privilegios que ese usuario necesite. Un operador
que necesite montar cintas y realizar copias de seguridad de archivos del sistema tendrá
sólo acceso a esos comandos y archivos que necesita para llevar a cabo su tarea. Algunos
sistemas implementan mecanismos de control de acceso basado en roles (RBAC) para
proporcionar esta funcionalidad.

Las computadoras implementadas dentro de una instalación que se ajuste al principio del
mínimo privilegio pueden limitarse a ejecutar servicios específicos, a acceder a máquinas
host remotas a través de servicios específicos y a hacer esto sólo durante períodos
específicos. Normalmente, estas restricciones se implementan activando y desactivando
cada servicio y mediante listas de control de acceso.

El principio de mínimo privilegio puede ayudar a obtener un entorno informático más


seguro. Desafortunadamente, con frecuencia no lo hace. Por ejemplo, Windows 2000 tiene
integrado un complejo esquema de protección, a pesar de lo cual tiene muchos agujeros
P á g i n a 84 | 91
Sistemas Operativos

Downloaded by Geral Diaz (geraldinegeri11@gmail.com)


lOMoARcPSD|15103112

de seguridad. Por comparación, Solaris se considera relativamente seguro, aunque es una


variante de UNIX, que históricamente se diseñó teniendo muy poco presentes los
mecanismos de protección. Una de las razones para esta diferencia puede ser que
Windows 2000 tiene más líneas de código y más servicios que Solaris, por lo que tiene más
componentes a los que dotar de seguridad y proteger. Otra razón podría ser que el
esquema de protección de Windows 2000 es incompleto o protege los aspectos
incorrectos del sistema operativo, dejando otras áreas vulnerables.

Mecanismos de protección

Es más fácil obtener seguridad si hay un modelo claro de lo que se debe proteger y de a
quién se le permite hacer qué cosa.

Dominios de protección
Un sistema computacional contiene muchos “objetos” que necesitan proteccoón. Estos
objetos pueden ser de hardware (por ejemplo, CPUs, segmentos de memoria, discos, etc) o
de software (por ejemplo, procesos, archivos, bases de datos, etc). Cada objeto tiene un
nombre único que se utiliza como referencia, y hay un conjunto finito de operaciones que
los procesos pueden llevar a cabo con los objetos.

Es obvio que se necesita una manera de prohibir que los procesos utilicen objetos sin
autorización. Además, mediante este mecanismo se debe poder restringir a los procesos
para que se lo puedan utilizar un conjunto de las operaciones legales cuando sea
necesario. Por ejemplo, el proceso A tal vez tenga permiso de leer, pero no de escribir en el
archivo F.

Para poder analizar distintos mecanismos de protección, es conveniente introducir el


concepto de un dominio. Un dominio es un conjunto de pares (objeto, permisos). Cada par
especifica un objeto y cierto subconjunto de las operaciones que se pueden realizar en él.
Un permiso en este contexto indica el permiso para realizar una de las operaciones. A
menudo, un dominio corresponde a un solo usuario y le indica lo que puede hacer y lo que
no, pero un dominio también puede ser más general que solo un usuario. Por ejemplo, los
miembros de un equipo de programación que trabajan en cierto proyecto podrían
pertenecer al mismo dominio, de manera que todos tengan acceso a los archivos del
proyecto.

La manera en que se asignan los objetos a los dominios depende de los detalles sobre
quién necesita saber qué. Sin embargo, uno de los conceptos básicos es el POLA (Principle
of Least Authority, Principio de menor autoridad), o la necesidad de saber. En general, la
seguridad funciona mejor cuando cada dominio tiene los mínimos objetos y privilegios
para realizar su trabajo; y no más.

Listas de control de acceso


La mayoría de los dominios no tienen acceso a la mayoría de los objetos, por lo que se
desperdicia mucho espacio en disco al almacenar una matriz muy grande y en su mayor
parte vacía. Sin embargo, hay dos métodos prácticos: almacenar la matriz por filas o
columnas. Los dos métodos son en extremo diferentes.

P á g i n a 85 | 91
Sistemas Operativos

Downloaded by Geral Diaz (geraldinegeri11@gmail.com)


lOMoARcPSD|15103112

ii. El problema de la seguridad

En muchas aplicaciones, merece la pena dedicar un esfuerzo considerable a garantizar la


seguridad del sistema informático. Los sistemas comerciales de gran envergadura que
contengan datos de nóminas u otros datos financieros constituyen objetivos muy
codiciados por los delincuentes. Asimismo, los sistemas que contengan datos relativos a las
operaciones de una corporación pueden resultar de interés para los competidores carentes
de escrúpulos. Además, la pérdida de tales datos ya sea accidentalmente o como
consecuencia del fraude, puede afectar seriamente a la capacidad de esa corporación para
seguir funcionando.

Decimos que un sistema es seguro si sus recursos se utilizan de la forma prevista y si se


accede a ellos tal como se pretendía, en todas las circunstancias. Desafortunadamente, no
es posible conseguir una seguridad total; a pesar de ello, debemos prever mecanismos
para hacer que los fallos de seguridad constituyan la excepción, en lugar de la norma. Las
violaciones de seguridad o la mala utilización de un sistema pueden clasificarse en dos
categorías: intencionadas (maliciosas) o accidentales. Resulta más fácil protegerse frente a
una mala utilización accidental que frente a otra maliciosa. Principalmente, los
mecanismos de protección forman la base de la defensa frente a posibles accidentes. En la
siguiente lista indicamos diversas formas de violaciones de seguridad accidentales y
maliciosas. Asimismo, una amenaza es la posibilidad de que exista una violación de
seguridad, como por ejemplo el descubrimiento de una vulnerabilidad, mientras que un
ataque es un intento de romper la seguridad.
 Ruptura de la confidencialidad: este tipo de violación implica la lectura no
autorizada de determinados datos (o el robo de información). Típicamente, el
objetivo de los intrusos es una ruptura de la confidencialidad. La captura de datos
secretos en un sistema o en un flujo de datos, como por ejemplo información
relativa a tarjetas de crédito o información personal para fingir una identidad
ficticia puede reportar al intruso un beneficio monetario directo.
 Ruptura de la integridad: este tipo de ataque implica la modificación no
autorizada de los datos. Estos ataques pueden, por ejemplo, provocar que se
atribuya una cierta responsabilidad a alguien que es inocente o que se modifique
el código fuente de una aplicación comercial de cierta importancia.
 Ruptura de la disponibilidad: esta violación de seguridad implica la destrucción no
autorizada de datos. Algunos atacantes prefieren causar daño y adquirir un cierto
renombre en lugar de obtener beneficios financieros. La sustitución de la página
de entrada de un sitio web es un ejemplo común de este tipo de ruptura de la
seguridad.
 Robo de servicio: este tipo de violación de seguridad implica el uso no autorizado
de recursos. Por ejemplo, un intruso (o un programa de intrusión) puede instalar
un demonio en un sistema que actúe como servidor de archivos.
 Denegación de servicio: esta violación de seguridad implica impedir el uso
legítimo del sistema. Los ataques de denegación de servicio (DOS, denial-of-
service) son en ocasiones accidentales. Un ejemplo común es el de un programa
gusano que atacó Internet hace ya unos cuantos años y que se transformó en un
ataque DOS cuando un error en el propio programa hizo que no se retardará su
rápida diseminación. Hablaremos más en detalle de los ataques DOS.

P á g i n a 86 | 91
Sistemas Operativos

Downloaded by Geral Diaz (geraldinegeri11@gmail.com)


lOMoARcPSD|15103112

Los atacantes utilizan diversos métodos estándar en sus intentos de romper la seguridad
de los sistemas. El más común es la mascarada, en la que un participante en una
comunicación pretende ser otra persona (u otro host). Mediante la mascarada, los
atacantes rompen la autenticación, es decir, la corrección de la identificación; como
consecuencia, pueden obtener tipos de acceso que normalmente no les estarían
permitidos o escalar sus privilegios, es decir, obtener privilegios de los que normalmente
no podrían disfrutar. Otro ataque común consiste en reproducir un intercambio de datos
previamente capturado: los ataques de reproducción consisten en la repetición maliciosa
o fraudulenta de una transmisión de datos válida. En ocasiones, esa reproducción
constituye el propio ataque, como por ejemplo cuando se repite una solicitud para
transferir dinero, pero frecuentemente la reproducción se realiza en conjunción con una
modificación de mensaje, que de nuevo suele tener como objetivo aumentar los
privilegios. Considere, por ejemplo, los daños que podrían producirse si se sustituyera la
información de un usuario legítimo por la de un usuario no autorizado en una solicitud de
autenticación. Otro tipo de ataque es el ataque por interposición (man-in-the-middle), en
el cual un atacante se introduce dentro del flujo de datos de una comunicación,
haciéndose pasar por el emisor a ojos del receptor y viceversa. En una comunicación por
red, un ataque por interposición puede estar precedido por un secuestro de sesión (hijack
ing), en el que se intercepta una sesión de comunicación activa.

Como ya hemos comentado, resulta imposible garantizar una protección absoluta del
sistema frente a los abusos de carácter malicioso, pero podemos hacer que el coste para
aquel que lo intente sea tan alto como para disuadir a la mayoría de los intrusos. En
algunos casos, como por ejemplo con los ataques de denegación de servicio, es preferible
prevenir el ataque lo suficiente como para detectarlo de modo que puedan adoptarse las
necesarias contramedidas. Para proteger un sistema, debemos adoptar las necesarias
medidas de seguridad en cuatro niveles distintos:
1. Físico: el nodo o nodos que contengan los sistemas informáticos deben dotarse de
medidas de seguridad físicas frente a posibles intrusiones armadas o subrepticias
por parte de potenciales intrusos. Hay que dotar de seguridad tanto a las
habitaciones donde las máquinas residan como a los terminales o estaciones de
trabajo que tengan acceso a dichas máquinas.
2. Humano: la autorización de los usuarios debe llevarse a cabo con cuidado, para
garantizar que sólo los usuarios apropiados tengan acceso al sistema. Sin embargo,
incluso los usuarios autorizados pueden verse “motivados” para permitir que otros
usen su acceso (por ejemplo, a cambio de un soborno). También pueden ser
engañados para permitir el acceso a otros, mediante técnicas de ingeniería social.
Uno de los tipos de ataque basado en las técnicas de ingeniería social es el
denominado phishing; con este tipo de ataque, un correo electrónico o página web
de aspecto autentico llevan a engaño a un usuario para que introduzca
información confidencial. Otra técnica comúnmente utilizada es el análisis de
desperdicios, un término general para describir el intento de recopilar información
para poder obtener un acceso no autorizado a la computadora (por ejemplo,
examinando el contenido de las papeleras, localizando listines de teléfonos o
encontrando notas con contraseñas). Estos problemas de seguridad son cuestiones
relacionadas con la gestión y con el personal, más que problemas relativos a los
sistemas operativos.

P á g i n a 87 | 91
Sistemas Operativos

Downloaded by Geral Diaz (geraldinegeri11@gmail.com)


lOMoARcPSD|15103112

3. Sistema operativo: el sistema debe autoprotegerse frente a los posibles fallos de


seguridad accidentales o premeditados. Un proceso que esté fuera de control
podría llegar a constituir un ataque accidental de denegación de servicio.
Asimismo, una cierta consulta a un servicio podría conducir a la revelación de
contraseñas o un desbordamiento de la pila podría permitir que se iniciara un
proceso no autorizado. La lista de posibles fallos de seguridad es casi infinita.
4. Red: son muchos los datos, en los modernos sistemas informáticos que viajan a
través de líneas arrendadas privadas, de líneas compartidas como Internet, de
conexiones inalámbricas o de líneas de acceso telefónico. La interceptación de
estos datos podría ser tan dañina como el acceso a una computadora, y la
interrupción de la comunicación podría constituir rm ataque remoto de
denegación de servicio, disminuyendo la capacidad de uso del sistema y la
confianza en el mismo por parte de los usuarios.

Amenazas a la seguridad.

Los procesos son, junto con el kernel, el único medio de realizar un trabajo útil en una
computadora. Por tanto, un objetivo común de los piratas informáticos consiste en escribir
un programa que cree una brecha de seguridad o que haga que un proceso normal cambie
su comportamiento y cree esa brecha de seguridad. De hecho, la mayoría de las brechas de
seguridad no relacionadas con programas tienen por objetivo crear una brecha que sí esté
basada en un programa. Por ejemplo, aunque resulta útil iniciar una sesión en un sistema
sin autorización, normalmente es mucho más útil dejar un demonio de tipo puerta trasera
que proporcione información o que permita un fácil acceso incluso aunque se bloquee la
brecha de seguridad original.

Caballo de Troya
Muchos sistemas tienen mecanismos para permitir que programas escritos por unos
usuarios sean ejecutados por otros. Si estos programas se ejecutan en un dominio que
proporcione los derechos de acceso del usuario ejecutante, los otros usuarios podrían
utilizar inapropiadamente estos derechos. Por ejemplo, un programa editor de texto puede
incluir código para buscar ciertas palabras clave en el archivo que hay que editar. Si se
encuentra alguna, el archivo completo puede copiarse en un área especial accesible por el
creador del editor de textos. Un segmento de código que utilice inapropiadamente su
entorno se denomina caballo de Troya. Las rutas de búsqueda de gran longitud, como las
que aparecen frecuentemente en los sistemas UNIX, agravan el problema de los caballos
de Troya. La ruta de búsqueda enumera el conjunto de directorios en el que hay que
buscar cuando se proporciona un nombre de programa ambiguo. Lo que se hace es buscar
en esa ruta un archivo con dicho nombre y ejecutar el archivo. Todos los directorios de esa
ruta de búsqueda deben ser seguros, porque de lo contrario podría introducirse un caballo
de Troya en la ruta de ejecución del usuario y ejecutarse accidentalmente.
El programa se ejecutaría dentro del dominio del usuario, permitiendo que ese programa
hiciera cualquier cosa que el usuario puede hacer, incluyendo por ejemplo borrar los
archivos de usuario.

P á g i n a 88 | 91
Sistemas Operativos

Downloaded by Geral Diaz (geraldinegeri11@gmail.com)


lOMoARcPSD|15103112

Puerta trasera
El diseñador de un programa o un sistema puede dejar detrás suyo un agujero en el
software que sólo él sea capaz de utilizar. Este tipo de brecha de seguridad (o puerta
trasera) era el que se ilustraba en la película Juegos de guerra. Por ejemplo, el código
puede tratar de detectar un ID de usuario o una contraseña específicos y, al detectarlo,
evitar los procedimientos de seguridad normales. Podría incluirse una puerta trasera
inteligente dentro del propio compilador.
Las puertas traseras plantean un difícil problema porque, para detectarlas, tenemos que
analizar todo el código fuente de todos los componentes de un sistema. Puesto que los
sistemas software pueden estar compuestos por millones de líneas de código, este análisis
no se lleva a cabo frecuentemente, y en la mayoría de los casos no se lleva a cabo nunca.

Desbordamiento de pila y de búfer


El ataque por desbordamiento de pila o de búfer es la forma más común para que un
atacante externo al sistema, a través de una conexión de red o de acceso telefónico,
obtenga acceso no autorizado al sistema objetivo. Esencialmente, lo que el ataque hace es
aprovechar un error de un programa. El error puede deberse a un simple caso de mala
práctica de programación, en el que el programador se olvidó de incluir en el código
comprobaciones del límite para un determinado caso de entrada. En este caso, el atacante
envía más datos de los que el programa está esperando. Utilizando un método de prueba y
error, o examinando el código fuente del programa atacado, si es que está disponible, el
atacante determina la vulnerabilidad y escribe un programa para hacer lo siguiente:
1. Desbordar un campo de entrada, un argumento de línea de comandos o un búfer
de entrada (por ejemplo, en un demonio de red) hasta escribir en la zona
correspondiente a la pila.
2. Sobreescribir la dirección actual de retorno de la pila, sustituyéndola por la
dirección de los códigos de ataque cargados en el paso 3.
3. Escribir un fragmento simple de código en el siguiente espacio de la pila, que
incluye los comandos que el atacante quiera ejecutar, como por ejemplo arrancar
un programa shell.

Virus
Los virus son auto-replicantes y están diseñados para “infectar” otros programas. Pueden
causar estragos en un sistema modificando o destruyendo archivos y provocando
funcionamientos inadecuados de los programas y fallos catastróficos del sistema. Un virus
es el fragmento de código integrado dentro de un programa legítimo. Al igual que la
mayoría de los ataques de penetración, los virus son muy específicos de las arquitecturas,
de los sistemas operativos y de las aplicaciones. Los virus constituyen, un problema
especialmente grave para los usuarios de máquina de tipo PC. UNIX y otros sistemas '
operativos multiusuario no son, generalmente, susceptibles a los virus, porque los
programas ejecutables están protegidos contra escritura por el propio sistema operativo.
Incluso si un virus llega a infectar a uno de esos programas, sus poderes están usualmente
limitados, porque otros aspectos del sistema están también protegidos. Los virus suelen
propagarse a través de correo electrónico, siendo el correo basura el vector
más común. También pueden propagarse cuando los usuarios descargan programas
infectados desde servicios de compartición de archivos de Internet o cuando intercambian
discos infectados. Comúnmente, los virus también se envían a sí mismos por correo
electrónico a otras personas que se encuentren dentro de la lista de contacto del usuario
P á g i n a 89 | 91
Sistemas Operativos

Downloaded by Geral Diaz (geraldinegeri11@gmail.com)


lOMoARcPSD|15103112

Herramientas e implementación de defensas de seguridad

Dado que existe una multitud de amenazas al sistema y a la seguridad de la red, existen
muchas soluciones de seguridad. Las soluciones recorren toda la gama que va desde
mejorar la educación del usuario hasta los aspectos tecnológicos relacionados con la
escritura de software libre de errores. La mayor parte de los profesionales de la seguridad
defienden la teoría de la defensa en profundidad, la cual establece que es mejor utilizar
más niveles de defensa que menos.

Política de seguridad
El primer paso para mejorar la seguridad de cualquier aspecto de la informática es
disponer de una política de seguridad. Las políticas son muy variadas, pero, generalmente,
incluyen una declaración que describe qué es lo que se va a proteger. Por ejemplo, una
política puede establecer que debe revisarse el código de todas las aplicaciones a las que
se pueda acceder desde el exterior, antes de implementarlas, o que los usuarios no deben
compartir sus contraseñas, o que debe ejecutarse un análisis de puertos cada seis meses
en todos los puntos de conexión entre una empresa y el exterior. Si no se dispone de una
política, es imposible que los usuarios y los administradores sepan lo que está permitido, lo
que es necesario y lo que no está permitido. La política es un mapa de carreteras para la
seguridad y si un sitio está intentando pasar de una situación poco segura a otra más
segura, necesita un mapa para saber cómo llegar.

Evaluación de la vulnerabilidad
Las evaluaciones pueden cubrir un amplio espectro, desde la ingeniería social a la
evaluación de riesgos y los análisis de puertos. Por ejemplo, la evaluación de riesgos hace
todo lo posible por evaluar los activos de la entidad en cuestión (un programa, un equipo
gerencial, un sistema o una instalación) y determina las probabilidades de que un incidente
de seguridad afecte a la entidad y disminuya su valor. Cuando se conocen las
probabilidades de sufrir una pérdida y el valor de las pérdidas potenciales, puede asignarse
un valor al intento de dotar de seguridad a la entidad. La actividad principal de la mayor
parte de las evaluaciones de vulnerabilidad es una prueba de penetración , en la que se
analiza la entidad para conocer las vulnerabilidades. Normalmente, los análisis de
vulnerabilidades se realizan cuando la actividad de la computadora es relativamente baja,
con el fin de minimizar su impacto.
Un análisis de un sistema individual puede comprobar el siguiente conjunto de aspectos
del sistema:
 Contraseñas cortas o fáciles de adivinar.
 Programas privilegiados no autorizados, tales como programas setuid.
 Programas no autorizados en directorios del sistema.
 Programas de duración inesperadamente larga.
 Protecciones inapropiadas en los directorios del sistema y de los usuarios.
 Protecciones inapropiadas en archivos de datos del sistema, como el archivo de
contraseñas, los controladores de dispositivos o el propio kernel del sistema
operativo.
 Entradas peligrosas en la ruta de búsqueda de un programa.
 Cambios en los programas del sistema, detectados mediante valores de sumas de
comprobación.
 Demonios de red ocultos o inesperados.
P á g i n a 90 | 91
Sistemas Operativos

Downloaded by Geral Diaz (geraldinegeri11@gmail.com)


lOMoARcPSD|15103112

Interbloqueo
69. El bloque mutuo o interbloque se produce porque se trabaja con:
a) Recursos compartidos
b) Recursos dedicados
c) Poca memoria RAM

70. El bloqueo mutuo o interbloqueo se produce cuando…


a) Un proceso A tiene asignada la unidad de DVD y solicita la impresora que esta siendo
utilizada por el proceso B.
b) Dos procesos esperan la unidad de DVD y no se les asigna porque están usando el disco.
c) Un proceso A tiene asignada la unidad de DVD y solicita la impresora que esta asignada a un
proceso B, el cual a su vez pide la unidad de DVD.

71. El bloqueo mutuo es equivalente al bloqueo indefinido?


a) No, son problemas diferentes.
b) En algunos sistemas operativos es lo mismo.
c) Si, en todos los sistemas operativos es lo mismo.

72. Las condiciones para que se produzca un bloqueo mutuo son cuatro ¿ cual de las
siguientes afirmaciones corresponde a la condición de retención y espera?
a) Cada recurso, o bien se asigna exactamente a un proceso o bien se encuentra disponible.
b) Los procesos mantienen recursos que les fueron asignados y pueden solicitar nuevos
recursos.
c) Los recursos ya otorgados a los procesos deben ser devueltos expresamente por sus
propietarios.

73. ¿Cuál de las siguientes condiciones NO es condición necesaria para que se produzcan
bloqueos mutuos?
a) Exclusión mutua.
b) Espera circular.
c) Apropiación.

74. ¿Cuál de las siguientes condiciones deben cumplirse para poder utilizar el algoritmo del
banquero?
a) Los procesos no pueden solicitar de nuevo un recurso que ya fue utilizado por el mismo
proceso.
b) La cantidad máxima de recursos por proceso debe ser asignada a priori.
c) Los procesos deben solicitar los recursos en un orden predeterminado.

75. ¿Qué significa que en un sistema está en un estado seguro?


a) Que existe la posibilidad que todos los procesos terminen.
b) Que no existe bloqueo mutuo.
c) Que no se puede asegurar que no exista bloqueo mutuo en el futuro.

Memoria

78. ¿Todos los SO deben contar con módulos para la administración de la memoria?
a) Si, tanto en los sistemas de monoprogramacion como en lo de multiprogramación.

Downloaded by Geral Diaz (geraldinegeri11@gmail.com)


lOMoARcPSD|15103112

b) No, en algunos casos la memoria es tan pequeña que no necesita administración.


c) No, los SO de monoprogramacion no los necesitan.

79. El administrador de memoria es un proceso que provee de servicios relacionados con la


memoria, tal como:
a) Seleccionar un proceso para cargarlo en la memoria.
b) Asignar y liberar memoria.
c) Controlar el acceso a los dispositivos de E/S.

80. El modulo administrador de memoria tiene entre otras funciones…


a) … suspender un proceso porque se le termino el quantum.
b) … implementar alguna solución al deadlock.

c) … establecer la correspondencia entre las direcciones lógicas y físicas

82. El espacio físico de direcciones es…


a) … el conjunto de posiciones lógicas o abstractas referencias por los procesos.
b) … el conjunto de posiciones reales.
c) … tanto el conjunto de posiciones lógicas como el conjunto de posiciones reales.

83. En la selección de un esquema de administración de memoria se contemplan muchos


factores, pero especialmente se tiene en cuenta…
a) … el diseño de hardware del sistema.
b)…El diseño de software del sistema.
c) … el diseño de firmware del sistema.

84. Cuando se trabaja con MMU


a) … la UCP envía direcciones virtuales a la MMU y la MMU envía direcciones físicas a la
memoria.
b) … la UCP envía direcciones físicas a la MMU y la MMU envía direcciones virtuales a la
memoria.
c) La MMU envía direcciones virtuales a la memoria y la CPU envía direcciones físicas a la
memoria.

85. Se denomina intercambia o (swapping) a…


a) …únicamente al reemplazo de una página, correspondiente a un segmento.
b) …la descarga de un proceso de la memoria para llevarlo al disco, y poder regresarlo más
tarde.
c) …el reemplazo de una página que no tuvo modificaciones.

86. Si en las particiones fijas se conserva una sola lista de espera, y cuando se libera una
partición se selecciona el trabajo más grande que quepa en ella más próximo al frente de la
lista, ¿Qué método se está utilizando?
a) Mejor Ajuste (Best Fit).
b) Peor Ajuste (Worst Fit).
c) Primer Ajuste (First Fit) 87. Cuando se solicita un bloque de tamaño de n palabras, el

Downloaded by Geral Diaz (geraldinegeri11@gmail.com)


lOMoARcPSD|15103112

método del Primer Ajuste (First Fit) es el que asigna…


a) …el primer bloque que se encuentra en la lista, de tamaño de la potencia de 2 mas cercano
a n.
b) …el primer bloque que se encuentra en la lista de tamaño mayor o igual a n.
c) …el bloque que de toda la lista es el de tamaño más cercano o igual a n.

88. ¿Cuál de los siguientes métodos de gestión de memoria NO tiene fragmentación


externa?
a) Particiones variables.
b) Paginación
c) Segmentación.

89. La fragmentación externa se produce porque…


a) …se asignan bloques de tamaño fijo.
b) …se asignan bloques de tamaño variable.
c) Ninguna de las dos anteriores es cierta.
90. En un sistema con paginación de la memoria, una página es…
a) …una entidad lógica considerada en dos dimensiones.
b)…una entidad física.
c) …una entidad lógica considerada en una dimensión.

91. En un sistema de paginado…


a) …el espacio lógico se divide en bloques llamados marcos y el espacio físico se divide en
bloques del mismo tamaño llamados paginas.
b) … el espacio físico se divide en bloques llamados marcos y el espacio lógico se divide en
bloques del mismo tamaño llamados paginas.
c) el espacio lógico se divide en bloques llamados paginas y el espacio físico se divide en
bloques del mismo tamaño llamados paginas.

92. En la tabla de páginas, cada entrada en la tabla de páginas contiene…


a) …la dirección base del marco.
b) …la dirección base del programa.
c) …es desplazamiento en la página.

93. Se denomina fallo de pagina…


a)…al reemplazo de una pagina con el algoritmo LRU.
b) …cuando un proceso trata de usar una pagina que no se incorporo a la memoria
c) …cuando un proceso trata de usar una pagina que se encuentra en

130. el método de particiones fijas provoca:


a- fragmentación interna.
b- fragmentación externa.
c- ambos tipos de fragmentación.

131. la fragmentación externa produce:


a-porque se asignan bloques de tamaño variable.

Downloaded by Geral Diaz (geraldinegeri11@gmail.com)


lOMoARcPSD|15103112

b- porque para asignar memoria se priorizan los procesos mas cortos.


c- por ninguna de estas dos razones.

132. una página y un marco:


a- como definición son la misma cosa.
b- la página corresponde al espacio lógico y el marco al espacio físico.
c- la página corresponde al espacio físico y el marco al espacio lógico.

141. que es un administrador de memoria?


a-un dispositivo de hardware llamado MMU.
b- un proceso del SO que provee servicios relacionados con la memoria, a otros procesos.
c- un proceso llamado kernel que impide que un proceso acceda a las direccioens.

142. uno de los problemas de diseños de un administrador de memoria es:


a- desarrollar técnicas de memoria virtual.
b- brindar a todos los procesos al mismo tiempo de uso de la CPU.
c- interpretar los programas de los usuarios.
d- mantener actualizados los contenidos de los CPU de la tabla de procesos.

Un mapeo de direcciones lógicas efectuadas mediante MMU se realiza:


R: durante la compilación, la carga o la ejecución.

El sistema de particiones variables sin reubicación provoca:


R: fragmentación externa.

La pagina y un marco:
R: la pagina corresponde al espacio lógico y el marco al espacio físico.

Ante un falla, en la Asignación global, la pagina que debe salir se la elige:


R: de todo el conjunto de paginas en memoria.

Si se utilizan mapas de bits para la administración de memoria ¿es importante tener en cuenta
el tamaño de la unidad de asignación?
R: si, porque todo el tamaño de la unidad de asignación depende del tamaño del mapa de bits.

128. el método de particiones variables con compactación provoca:


a- fragmentación interna.
b- fragmentación externa.
c- ningún tipo de fragmentación.

129. el sistema de particiones variables sin reubicación provoca:


a-la fragmentación interna.
b- la fragmentación externa.
c- ambas fragmentaciones.
d- ninguna de las dos fragmentaciones.

Archivos

76. En un sistema de multiprogramación ¿los sistemas deben compartir la memoria?


a) SI.

Downloaded by Geral Diaz (geraldinegeri11@gmail.com)


lOMoARcPSD|15103112

b) No.
c) Solo en algunos casos.

77. Generalmente, la memoria principal es pequeña para contener todos los datos y
programas, por lo que:
a) Se pueden cargar muy pocos programas, o se debe comprar mas memoria.
b) El sistema de computación debe proporcionar almacenamiento secundario.
c) Se carga solo un programa completo por vez y se soluciona el problema

94. ¿En cual de los 4 niveles o capas de software de E/S se realiza la conversión de números
enteros binarios a ASCII para su impresión?
a- en el nivel de los manejadores de dispositivos.
b- en el nivel del software independiente del dispositivo
c- en el nivel de los procesos del usuario.

95. ¿Cuál de los siguientes sistemas es de tiempo real?


a- Sistema de control de las calderas de una planta química.
b- Sistema de liquidación de sueldos de los obreros de una industria.
c- Sistema de facturación en línea de un comercio.

96. ¿Qué son los sistemas abiertos?


a- Sistemas a los que puede tener acceso cualquier usuario.
b- Sistemas cuyas especificaciones están estandarizadas.
c- Sistemas cuyas normas de comunicación deben ser las mismas.
d- Sistemas distintos cuyos SOS deben ser solo UNIS.

97.Indicar cual de las siguientes actividades del SO esta relacionada con la administración de
archivos.
a- manejo de dispositivos físicos para la creación de archivos.
b- manejo de dispositivos físicos para la copia de seguridad de archivos en medio de
almacenamiento volátil.
c- operaciones para la correspondencia entre archivos y almacenamiento secundario.

98. Cual es la función principal del núcleo de un SO construido en base al modelo cliente-
servidor.
a- controlar la comunicación entre cliente y servidores.
b- responder a las solicitudes de los procesos clientes.
c- solucionar errores que pueden presentar los servidores.

109. La condición de Carrera se produce porque:


a- la impresora demonio tiene mas de un archivo para imprimir.
b- se satura la cola de spooler.
c- los procesos compiten por los recursos compartidos.

110. la reubicación es:


a- lo mismo que el enlace.
b- todas las direcciones lógicas de un programa fuente.
c- ninguna de las anteriores.

111. que es un controlador?

Downloaded by Geral Diaz (geraldinegeri11@gmail.com)


lOMoARcPSD|15103112

a- una rutina del SO.


b- un programa del usuario que se denomina DRIVER.
c- un componente electrónico al que se conecta un dispositivo de E/S.

112. Porque los archivos de salida para la impresora se someten por lo general a un spooling
en el disco antes de imprimirse en vez de transmitirse directamente desde el programa de
aplicación?
a- porque desde el disco se imprime mejor que directamente.
b- porque la impresora es un dispositivo de salida que debe ser usada en forma exclusiva por
los procesos.
c- ninguna de las opciones anteriores.

113. Que diferencia existe entre bloque (registro físico) y registro(registro lógico)?
a- el bloque es una unidad de tamaño fijo en tanto que el registro es de tamaño variable.
b- el bloque es una unidad de tamaño variable en tanto que el registro es de tamaño fijo.
c- no existe diferencia.

114. en un sistema de multiprogramación ¿Por qué es necesario que los programas


compartan memoria?
a- porque es la única forma en que el hardware permite que se use la memoria.
b- para poder compartir los dispositivos de E/S.
c- ninguna de las opciones anteriores.

115. un dispositivo en bloque es:


a- lo mismo que un dispositivo de carácter pero dedicado.
b- un dispositivo donde cada bloque se lee o escribe independiente de los demás.
c- un dispositivo que no es direccionable

116. un dispositivo de carácter es:


a- lo mismo que un dispositivo de bloque pero que se puede compartir al mismokk tiempo.
b- un dispositivo que no es direccionable.
c- un dispositivo donde cada bloque se lee o escribe independiente de los demás.

117. La velocidad de la UCP es mas rápida que la de los dispositivos de E/S entonces:
a- Con frecuencia, la UCP encontrara los buffers llenos durante la E de datos y vacios durante
la S.
b- Asiduamente, la UCP encontrara los buffers vacios durante la E de datos y llenos durante la
S.
c- frecuentemente, la UCP encontrara los buffers llenos tanto durante la E como en la S de
datos.

126. el enlace se realiza:


a-es el momento de compilación exclusivamente.
b- en la carga o en la ejecución.
c-en cualquiera de los momentos mencionados anteriormente, depende del esquema
utilizado.

127. el enlace de las instrucciones y datos, con las direcciones de memoria puede efectuarse
en:
a- únicamente durante la compilación.
b- durante la compilación, la carga o la ejecución.

Downloaded by Geral Diaz (geraldinegeri11@gmail.com)


lOMoARcPSD|15103112

c- únicamente durante la carga.

133. Que organización de archivos elegiría para maximizar la eficiencia en términos de


velocidad de acceso, uso del espacio de almacenamiento, facilidad de actualización (agregar/
borrar/modificar), cuando los datos se actualizan con mucha frecuencia y se acceden
frecuentemente en orden secuencial?
a- secuencial.
b- secuencial indexada.
c- ninguna de las anteriores.

134. Que organización de archivos elegiría para maximizar la eficiencia en términos de


velocidad de acceso, uso del espacio de almacenamiento, facilidad de actualización (agregar/
borrar/modificar), cuando los datos se actualizan con mucha frecuencia y se acceden
frecuentemente en orden random?
a- secuencial.
b- secuencial indexada.
c- directa.

135. a que se denomina seguridad externa de un sistema?


a- la seguridad externa incluye a todos aquellos mecanismos que tratan de asegurar el sistema
informático, siendo el propio sistema el que controla dichos mecanismos.
b- la seguridad externa incluye a todos aquellos mecanismos que tratan de impedir que las
personas y/o los agentes físicos destruyan la información existente en el sistema, sin que
intervenga el sistema.
c- ninguna de las anteriores.

136. a que se denomina seguridad interna de un sistema?


a- la seguridad interna incluye a todos aquellos mecanismos que tratan de asegurar el sistema
de computación siendo el propio sistema el que controla dichos mecanismos.
b- la seguridad interna incluye a todos aquellos mecanismos que tratan de impedir que las
personas y los agentes físicos, destruyan o dañen la información existente en el sistema sin
intervención del sistema.
c. ninguna de las anteriores.

137. las fiestas de control de acceso se utiliza en:


a- los sistemas con múltiples usuarios.
b- los sistemas monousuarios.
c- tanto en los sistemas con un solo usuario como en aquellos que cuentan con muchos
usuarios.

138. un espacio de direcciones lógico:


a- es el espacio donde se almacena exclusivamente los operadores lógicos: AND, OR, SOR, etc.
b- es el espacio donde escribimos las instrucciones tales como READ PEPE.
c- es una técnica donde los procesos utilizan los dispositivos de almacenamiento masivo
independiente del dispositivo.

139. un espacio físico de direcciones es:


a- el conjunto de direcciones que comparten los procesos.
b- el conjunto de direcciones que direcciona el programador.
c- el conjunto de posiciones reales de memoria inmediata, directamente direccionable.

Downloaded by Geral Diaz (geraldinegeri11@gmail.com)


lOMoARcPSD|15103112

d- el conjunto de posiciones abstractas direccionadas por los procesos.

140. las listas de capacidades generalmente se conservan con el mismo espacio de


direcciones que utiliza el usuario ¿Cómo asegurar el sistema que los usuarios no pueden
modificar el contenido de la lista?
a- ubicándola en direcciones altas de memoria.
b- ubicándola en un segmento de memoria la que solo puede acceder el SO.
c- ninguna de las opciones anteriores.

143. un mapeo de direcciones lógicas efectuado mediante MMU se realiza:


a- en tiempo de ejecución.
b- únicamente durante la compilación.
c- durante la compilación, la carga o la ejecución.

144. ante una falla, en la asignación global, la pagina que debe salir se la elige:
a- del conjunto de paginas del proceso que provoco la falla.
b- de todo el conjunto de páginas en memoria.
c- de las páginas que se encuentran en la memoria virtual.

145. si se utilizan mapas de bits para la administración de memoria ¿es importante tener en
cuenta el tamaño de la unidad de asignación?
a- si, porque el tamaño de la unidad de asignación depende del tamaño del mapa de bits.
b- no, porque el tamaño del mapa de bits depende exclusivamente del tamaño de la memoria.
c- ninguna de las opciones.

146. Que motivos hay para imponer una estructura jerárquica a los sistemas de archivos?
a- permitir a los usuarios crear sus propios subdirectorios y organizar sus archivos, donde el
nombre de un archivo, debe ser único solo en el subdirectorio donde se encuentra.
b- permitir a los usuarios crear sus propio subdirectorios y organizar sus archivos con la
restricción de que el nombre de un archivo debe ser el único en todo el sistema.
c- ninguna de las dos opciones.

147. Cual es la función de la protección de archivos?


a- permitir que la información no sufra daños físicos y no exista un acceso inadecuado a esa
información.
b- Evitar que los archivos no se destruyan accidentalmente.
c- Controlar el acceso de programas, procesos o usuarios a los recursos definidos por un
sistema de computación.

148. Al eliminar un archivo sus bloques se devuelven a la lista de bloques libres pero no se
borran ¿ Seria una buena medida que el SO borrar cada bloque antes de devolverlo ?
a- No, porque impediría que usuarios no autorizados recuperen esos bloques.
b- No, porque seria necesario mas tiempo para llevar a cabo la operación.
c- No, porque la lista de bloques libres aumentaría de tamaño.

149. ¿Cual de los siguientes esquemas seria valido para proteger la información de los
accesos no autorizados a la lista de contraseñas (password)?
a- Utilizar representaciones internas y externas diferentes a la lista de contraseñas.
b- Utilizar un hardware adecuado para la implementación de la lista de contraseñas.
c- Ninguna de las opciones anteriores.

Downloaded by Geral Diaz (geraldinegeri11@gmail.com)


lOMoARcPSD|15103112

150. La posibilidad de usar contraseñas que proporcionan los sistemas de computación son
utiles en:
a- Los sistemas con múltiples usuarios.
b- Los sistemas monousuario.
c- Tanto en los sistemas con un solo usuario como en aquellos que cuentan con muchos
usuarios.

151. ¿Que esquema seria conveniente para implantar una política de protección que permita
a un proceso acceder a un archivo solo n veces?
a- Mantener una lista de permisos por usuarios con un campo adicional que indica el numero
de accesos permitidos.
b- Mantener una lista de permisos por archivos con un campo adicional que indica el numero
de accesos permitidos.
c- Mantener una lista de permisos por procesos con un campo adicional que indica el numero
de accesos permitidos.

152. Cierto SO admite un solo directorio pero permite que el directorio tenga un numero
arbitrario de archivos con nombres de archivos de longitud arbitraria ¿ Se puede simular algo
parecido a un sistema jerárquico de archivos ?
a- No, porque es imposible simular un árbol.
b- Si, respetando ciertas normas en la asignación de los nombres de archivos por ejemplo la
utilización de caracteres especiales en los nombres de archivos.
c- Ninguna de las dos opciones anteriores.

153. En los sistemas de consultas interactivos que requieren un bajo tiempo de respuesta
¿Cuál es el acceso a los archivos conveniente?
a- Secuencial.
b- Directo.
c- ISAM.

154. Considere un sistema que puede atender a 5000 usuarios. Suponga que desea permitir
que 4999 puedan acceder a un archivo determinado ¿Cómo se especifica esto en UNIX?
a- Es imposible especificar esta protección en UNIX.
b- Poniendo al propietario del archivo en un grupo distinto al de los 4999 usuarios restantes.
c- Reuniendo los 4999 usuarios en un grupo.

En un sistema de multiprogramación ¿por qué es necesario que los programas compartan la


memoria?.
R: para poder llevar acabo la multiprogramacion

¿todos los S.Os deben contar con módulos para la administración de la memoria?
R: si, tanto en los sistemas de monoprogramacion como en los de multiprogramación.

En un sistema con segmentación de la memoria, un segmento es:


R: una entidad lógica similar a la pagina, pero considerada en dos dimensiones.

El método de particiones variables provoca:


R: fragmentación externa.

un dispositivo de carácter es:


R: un dispositivo que no es direccionable.

Downloaded by Geral Diaz (geraldinegeri11@gmail.com)


lOMoARcPSD|15103112

¿todos los S.Os deben contar con módulos o drivers para la administración de dispositivos de
E/S?.
R: si.

de acuerdo a todo lo que estudio con relacion al bloqueo mutuo puede concluir que:
R: algunos sistemas operativos proporcionan una solucion.

El bloqueo mutuo o interbloqueo se presenta cuando:


R: un proceso A tiene asiganada la impresora y solicita la unidad de cinta que esta asignada a
un proceso B, el que a su vez pide la impresora.

¿bloqueo mutuo es equivalente al bloqueo indefinido?


R: no, son problemas diferentes.

En términos generales, el algoritmo del avestruz para solucionar el bloqueo mutuo (o


deadlock) es:
R: ignorar el problema.

La velocidad de la UCP es mas rápida que la de los dispositivos de E/S, entonces:


R: asiduamente, la UCP encontrara los buffer vacíos durante la E de datos, y llenos durante la
S.

Un driver es:
R: software.

El deadlock o interbloqueo se presenta cuando:


R: un proceso B tiene la impresora y solicita el plotter que lo tiene asignado un proceso A, que
a su vez pide la impresora.

El espacio lógico de direcciones es:


R: el conjunto de direcciones que direcciona el programador.

El método de particiones variables con compactación provoca:


R: ningún tipo de fragmentación.

La paginación necesita:
R: enlace dinámico.

Porque causa el SO dedica gran parte de su software a la administración de la memoria ?


R: porque la memoria es uno de los recursos mas críticos y de mayor influencia en la
performance del sistema, puesto que al procesador y los dispositivos de E/S acceden a ella
para leer/ escribir la información que manejan.

El método de particiones fijas provoca:


R: fragmentación interna.

La relocalización o reubicación NO es:


R: lo mismo que el enlace, y que todas las direcciones lógicas de un programa fuente.

La paginación es una forma de :

Downloaded by Geral Diaz (geraldinegeri11@gmail.com)


lOMoARcPSD|15103112

R: relocalización dinámica.

A que se denomina seguridad externa de un sistema?


R: la seguridad externa incluye a todos aquellos mecanismos que tratan de impedir que las
personas y los agentes físicos destruyan o dañen la información existente en el sistema, sin
intervención del sistema.

La posibilidad de usar contraseñas que proporcionan los sistema de computación son útiles en:
R: en los sistemas con un solo usuario como en aquellos que cuentan con muchos usuarios.

Las listas de capacidades generalmente se conservan en el mismo espacio de direcciones que


utiliza el usuario.¿cómo asegura el sistema que los usuarios no puedan modificar el contenido
de la lista?
R: ubicando la lista en un segmento de memoria al que solo puede acceder el SO.

el espacio fisico de direcciones es:


R: el conjunto de posiciones reales de memoria inmediata, directamente direccionables.

¿qué es un administrador de Memoria?


R: un proceso del sistema operativo que provee servicios relacionados con la memoria, a otros
procesos.

Uno de los problemas de diseño de un administrador de memoria es:


R: desarrollar técnicas de memoria virtual

Un espacio de direcciones lógico:


R: es el espacio donde escribimos instrucciones tales como READ PEPE.

El enlace de las instrucciones y datos, con las direcciones de memoria puede efectuarse en:
R: durante la compilación, la carga o la ejecución.

Downloaded by Geral Diaz (geraldinegeri11@gmail.com)


lOMoARcPSD|15103112

Interbloqueo

18. En un sistema con segmentación de la memoria, un segmento es:

a) … una entidad lógica considerada en dos dimensiones.

b) … una entidad física.

c) … una entidad lógica considerada en una dimensión.

19. Entre los métodos de acceso de archivos, el acceso directo

a) lee y escribe la siguiente porción del archivo e incrementa automáticamente el puntero

b) Permite el acceso aleatorio a cualquier bloque de arhivo

c) Ninguna de las anteriores

20. La estructura de directorio en dos niveles…

a) Todos los archivos están contenidos en un único directorio.

b) Permite a los usuarios crear sus propios subdirectorios y organizar sus archivos correspondientes sin limites de nivel, partiendo de
unh punto inicial común.

c) Cada usuario tienes su propio directorio de archivos de usuario.

21. En el nombre de un archivo, la extensión indica

a) Un atributo del archivo.

b) La organización del archivo.

c) El tipo del archivo.

22. La asignación contigua de bloques del disco permite manejar…

a) … solamente acceso directo.

b) … tanto acceso secuencial como directo.

c) … solamente acceso secuencial

23. En los sistemas de archivos cuando se usa asignación enlazada…

a) … hay fragmentación externa.

b) … no hay fragmentación externa.

Downloaded by Geral Diaz (geraldinegeri11@gmail.com)


lOMoARcPSD|15103112

c) … hay fragmentación externa e interna.

24. Usar una tabla de asignación de archivos (FAT file allocation table)…

a) … es una variante importante del método de asignación contigua.

b) … es una variante importante del método de asignación enlazada.

c) Ninguna de las anteriores.

25. En la implementación de sistemas de archivos, la asignación indexada…

a) … resuelve las debilidades de los métodos anteriores al reunir todos los punteros en un mismo lugar, el bloque de índices.

b) … no resuelve las debilidades de los métodos anteriores al reunir todos los punteros en un mismo lugar, el bloque de índices.

c) … resuelve las debilidades de los métodos anteriores al reunir todos los punteros en diferentes lugares.

69. El bloqueo mutuo o interbloqueo se produce porque se trabaja con:

a) Recursos compartidos

b) Recursos dedicados

c) Poca memoria RAM

70. El bloqueo mutuo o interbloqueo se produce cuando…

a) Un proceso A tiene asignada la unidad de DVD y solicita la impresora que esta siendo utilizada por el proceso B.

b) Dos procesos esperan la unidad de DVD y no se les asigna porque están usando el disco.

c) Un proceso A tiene asignada la unidad de DVD y solicita la impresora que esta asignada a un proceso B, el cual a su vez pide la
unidad de DVD.

71. El bloqueo mutuo es equivalente al bloqueo indefinido?

a) No, son problemas diferentes.

b) En algunos sistemas operativos es lo mismo.

c) Si, en todos los sistemas operativos es lo mismo.

72. Las condiciones para que se produzca un bloqueo mutuo son cuatro ¿ cual de las siguientes afirmaciones corresponde a la
condición de retención y espera?

a) Cada recurso, o bien se asigna exactamente a un proceso o bien se encuentra disponible.

Downloaded by Geral Diaz (geraldinegeri11@gmail.com)


lOMoARcPSD|15103112

b) Los procesos mantienen recursos que les fueron asignados y pueden solicitar nuevos recursos.

c) Los recursos ya otorgados a los procesos deben ser devueltos expresamente por sus propietarios.

73. ¿Cuál de las siguientes condiciones NO es condición necesaria para que se produzcan bloqueos mutuos?

a) Exclusión mutua.

b) Espera circular.

c) Apropiación.

74. ¿Cuál de las siguientes condiciones deben cumplirse para poder utilizar el algoritmo del banquero?

a) Los procesos no pueden solicitar de nuevo un recurso que ya fue utilizado por el mismo proceso.

b) La cantidad máxima de recursos por proceso debe ser asignada a priori.

c) Los procesos deben solicitar los recursos en un orden predeterminado.

75. ¿Qué significa que en un sistema está en un estado seguro?

a) Que existe la posibilidad que todos los procesos terminen.

b) Que no existe bloqueo mutuo.

c) Que no se puede asegurar que no exista bloqueo mutuo en el futuro.

Memoria

76. En un sistema de multiprogramación ¿los sistemas deben compartir la memoria?

a) SI.

b) No.

c) Solo en algunos casos.

77. Generalmente, la memoria principal es pequeña para contener todos los datos y programas, por lo que:

a) Se pueden cargar muy pocos programas, o se debe comprar mas memoria.

b) El sistema de computación debe proporcionar almacenamiento secundario.

c) Se carga solo un programa completo por vez y se soluciona el problema

78. ¿Todos los SO deben contar con módulos para la administración de la memoria?

Downloaded by Geral Diaz (geraldinegeri11@gmail.com)


lOMoARcPSD|15103112

a) Si, tanto en los sistemas de monoprogramacion como en lo de multiprogramación.

b) No, en algunos casos la memoria es tan pequeña que no necesita administración.

c) No, los SO de monoprogramacion no los necesitan.

79. El administrador de memoria es un proceso que provee de servicios relacionados con la memoria, tal como:

a) Seleccionar un proceso para cargarlo en la memoria.

b) Asignar y liberar memoria.

c) Controlar el acceso a los dispositivos de E/S.

80. El modulo administrador de memoria tiene entre otras funciones…

a) … suspender un proceso porque se le termino el quantum.

b) … implementar alguna solución al deadlock.

c) … establecer la correspondencia entre las direcciones lógicas y físicas

82. El espacio físico de direcciones es…

a) … el conjunto de posiciones lógicas o abstractas referencias por los procesos.

b) … el conjunto de posiciones reales.

c) … tanto el conjunto de posiciones lógicas como el conjunto de posiciones reales.

83. En la selección de un esquema de administración de memoria se contemplan muchos factores, pero especialmente se tiene en
cuenta…

a) … el diseño de hardware del sistema.

b)…El diseño de software del sistema.

c) … el diseño de firmware del sistema.

84. Cuando se trabaja con MMU

a) … la UCP envía direcciones virtuales a la MMU y la MMU envía direcciones físicas a la memoria.

b) … la UCP envía direcciones físicas a la MMU y la MMU envía direcciones virtuales a la memoria.

c) La MMU envía direcciones virtuales a la memoria y la CPU envía direcciones físicas a la memoria.

Downloaded by Geral Diaz (geraldinegeri11@gmail.com)


lOMoARcPSD|15103112

85. Se denomina intercambia o (swapping) a…

a) …únicamente al reemplazo de una página, correspondiente a un segmento.

b) …la descarga de un proceso de la memoria para llevarlo al disco, y poder regresarlo más tarde.

c) …el reemplazo de una página que no tuvo modificaciones.

86. Si en las particiones fijas se conserva una sola lista de espera, y cuando se libera una partición se selecciona el trabajo más
grande que quepa en ella más próximo al frente de la lista, ¿Qué método se está utilizando?

a) Mejor Ajuste (Best Fit).

b) Peor Ajuste (Worst Fit).

c) Primer Ajuste (First Fit)

87. Cuando se solicita un bloque de tamaño de n palabras, el método del Primer Ajuste (First Fit) es el que asigna…

a) …el primer bloque que se encuentra en la lista, de tamaño de la potencia de 2 mas cercano a n.

b) …el primer bloque que se encuentra en la lista de tamaño mayor o igual a n.

c) …el bloque que de toda la lista es el de tamaño más cercano o igual a n.

88. ¿Cuál de los siguientes métodos de gestión de memoria NO tiene fragmentación externa?

a) Particiones variables.

b) Paginación

c) Segmentación.

89. La fragmentación externa se produce porque…

a) …se asignan bloques de tamaño fijo.

b) …se asignan bloques de tamaño variable.

c) Ninguna de las dos anteriores es cierta.

90. En un sistema con paginación de la memoria, una página es…

a) …una entidad lógica considerada en dos dimensiones.

b)…una entidad física.

c) …una entidad lógica considerada en una dimensión.

Downloaded by Geral Diaz (geraldinegeri11@gmail.com)


lOMoARcPSD|15103112

91. En un sistema de paginado…

a) …el espacio lógico se divide en bloques llamados marcos y el espacio físico se divide en bloques del mismo tamaño llamados
paginas.

b) … el espacio físico se divide en bloques llamados marcos y el espacio lógico se divide en bloques del mismo tamaño llamados
paginas.

c) el espacio lógico se divide en bloques llamados paginas y el espacio físico se divide en bloques del mismo tamaño llamados
paginas.

92. En la tabla de páginas, cada entrada en la tabla de páginas contiene…

a) …la dirección base del marco.

b) …la dirección base del programa.

c) …es desplazamiento en la página.

93. Se denomina fallo de pagina…

a)…al reemplazo de una pagina con el algoritmo LRU.

b) …cuando un proceso trata de usar una pagina que no se incorporo a la memoria

c) …cuando un proceso trata de usar una pagina que se encuentra en la memoria principal.

94. ¿En cual de los 4 niveles o capas de software de E/S se realiza la conversión de números enteros binarios a ASCII para su
impresión?

a- en el nivel de los manejadores de dispositivos.

b- en el nivel del software independiente del dispositivo

c- en el nivel de los procesos del usuario.

95. ¿Cuál de los siguientes sistemas es de tiempo real?

a- Sistema de control de las calderas de una planta química.

b- Sistema de liquidación de sueldos de los obreros de una industria.

c- Sistema de facturación en línea de un comercio.

96. ¿Qué son los sistemas abiertos?

a- Sistemas a los que puede tener acceso cualquier usuario.

Downloaded by Geral Diaz (geraldinegeri11@gmail.com)


lOMoARcPSD|15103112

b- Sistemas cuyas especificaciones están estandarizadas.

c- Sistemas cuyas normas de comunicación deben ser las mismas.

d- Sistemas distintos cuyos SOS deben ser solo UNIS.

97.Indicar cual de las siguientes actividades del SO esta relacionada con la administración de archivos.

a- manejo de dispositivos físicos para la creación de archivos.

b- manejo de dispositivos físicos para la copia de seguridad de archivos en medio de almacenamiento volátil.

c- operaciones para la correspondencia entre archivos y almacenamiento secundario.

98. Cual es la función principal del núcleo de un SO construido en base al modelo cliente-servidor.

a- controlar la comunicación entre cliente y servidores.

b- responder a las solicitudes de los procesos clientes.

c- solucionar errores que pueden presentar los servidores.

109. La condición de Carrera se produce porque:

a- la impresora demonio tiene mas de un archivo para imprimir.

b- se satura la cola de spooler.

c- los procesos compiten por los recursos compartidos.

110. la reubicación es:

a- lo mismo que el enlace.

b- todas las direcciones lógicas de un programa fuente.

c- ninguna de las anteriores.

111. que es un controlador?

a- una rutina del SO.

b- un programa del usuario que se denomina DRIVER.

c- un componente electrónico al que se conecta un dispositivo de E/S.

Downloaded by Geral Diaz (geraldinegeri11@gmail.com)


lOMoARcPSD|15103112

112. Porque los archivos de salida para la impresora se someten por lo general a un spooling en el disco antes de imprimirse en
vez de transmitirse directamente desde el programa de aplicación?

a- porque desde el disco se imprime mejor que directamente.

b- porque la impresora es un dispositivo de salida que debe ser usada en forma exclusiva por los procesos.

c- ninguna de las opciones anteriores.

113. Que diferencia existe entre bloque (registro físico) y registro(registro lógico)?

a- el bloque es una unidad de tamaño fijo en tanto que el registro es de tamaño variable.

b- el bloque es una unidad de tamaño variable en tanto que el registro es de tamaño fijo.

c- no existe diferencia.

114. en un sistema de multiprogramación ¿Por qué es necesario que los programas compartan memoria?

a- porque es la única forma en que el hardware permite que se use la memoria.

b- para poder compartir los dispositivos de E/S.

c- ninguna de las opciones anteriores.

115. un dispositivo en bloque es:

a- lo mismo que un dispositivo de carácter pero dedicado.

b- un dispositivo donde cada bloque se lee o escribe independiente de los demás.

c- un dispositivo que no es direccionable

116. un dispositivo de carácter es:

a- lo mismo que un dispositivo de bloque pero que se puede compartir al mismokk tiempo.

b- un dispositivo que no es direccionable.

c- un dispositivo donde cada bloque se lee o escribe independiente de los demás.

117. La velocidad de la UCP es mas rápida que la de los dispositivos de E/S entonces:

a- Con frecuencia, la UCP encontrara los buffers llenos durante la E de datos y vacios durante la S.

b- Asiduamente, la UCP encontrara los buffers vacios durante la E de datos y llenos durante la S.

c- frecuentemente, la UCP encontrara los buffers llenos tanto durante la E como en la S de datos.

Downloaded by Geral Diaz (geraldinegeri11@gmail.com)


lOMoARcPSD|15103112

126. el enlace se realiza:

a-es el momento de compilación exclusivamente.

b- en la carga o en la ejecución.

c-en cualquiera de los momentos mencionados anteriormente, depende del esquema utilizado.

127. el enlace de las instrucciones y datos, con las direcciones de memoria puede efectuarse en:

a- únicamente durante la compilación.

b- durante la compilación, la carga o la ejecución.

c- únicamente durante la carga.

128. el método de particiones variables con compactación provoca:

a- fragmentación interna.

b- fragmentación externa.

c- ningún tipo de fragmentación.

129. el sistema de particiones variables sin reubicación provoca:

a-la fragmentación interna.

b- la fragmentación externa.

c- ambas fragmentaciones.

d- ninguna de las dos fragmentaciones.

130. el método de particiones fijas provoca:

a- fragmentación interna.

b- fragmentación externa.

c- ambos tipos de fragmentación.

131. la fragmentación externa produce:

Downloaded by Geral Diaz (geraldinegeri11@gmail.com)


lOMoARcPSD|15103112

a-porque se asignan bloques de tamaño variable.

b- porque para asignar memoria se priorizan los procesos mas cortos.

c- por ninguna de estas dos razones.

132. una página y un marco:

a- como definición son la misma cosa.

b- la página corresponde al espacio lógico y el marco al espacio físico.

c- la página corresponde al espacio físico y el marco al espacio lógico.

133. Que organización de archivos elegiría para maximizar la eficiencia en términos de velocidad de acceso, uso del espacio de
almacenamiento, facilidad de actualización (agregar/ borrar/modificar), cuando los datos se actualizan con mucha frecuencia y se
acceden frecuentemente en orden secuencial?

a- secuencial.

b- secuencial indexada.

c- ninguna de las anteriores.

134. Que organización de archivos elegiría para maximizar la eficiencia en términos de velocidad de acceso, uso del espacio de
almacenamiento, facilidad de actualización (agregar/ borrar/modificar), cuando los datos se actualizan con mucha frecuencia y se
acceden frecuentemente en orden random?

a- secuencial.

b- secuencial indexada.

c- directa.

135. a que se denomina seguridad externa de un sistema?

a- la seguridad externa incluye a todos aquellos mecanismos que tratan de asegurar el sistema informático, siendo el propio sistema
el que controla dichos mecanismos.

b- la seguridad externa incluye a todos aquellos mecanismos que tratan de impedir que las personas y/o los agentes físicos
destruyan la información existente en el sistema, sin que intervenga el sistema.

c- ninguna de las anteriores.

136. a que se denomina seguridad interna de un sistema?

a- la seguridad interna incluye a todos aquellos mecanismos que tratan de asegurar el sistema de computación siendo el propio
sistema el que controla dichos mecanismos.

Downloaded by Geral Diaz (geraldinegeri11@gmail.com)


lOMoARcPSD|15103112

b- la seguridad interna incluye a todos aquellos mecanismos que tratan de impedir que las personas y los agentes físicos, destruyan
o dañen la información existente en el sistema sin intervención del sistema.

c. ninguna de las anteriores.

137. las fiestas de control de acceso se utiliza en:

a- los sistemas con múltiples usuarios.

b- los sistemas monousuarios.

c- tanto en los sistemas con un solo usuario como en aquellos que cuentan con muchos usuarios.

138. un espacio de direcciones lógico:

a- es el espacio donde se almacena exclusivamente los operadores lógicos: AND, OR, SOR, etc.

b- es el espacio donde escribimos las instrucciones tales como READ PEPE.

c- es una técnica donde los procesos utilizan los dispositivos de almacenamiento masivo independiente del dispositivo.

139. un espacio físico de direcciones es:

a- el conjunto de direcciones que comparten los procesos.

b- el conjunto de direcciones que direcciona el programador.

c- el conjunto de posiciones reales de memoria inmediata, directamente direccionable.

d- el conjunto de posiciones abstractas direccionadas por los procesos.

140. las listas de capacidades generalmente se conservan con el mismo espacio de direcciones que utiliza el usuario ¿Cómo asegurar
el sistema que los usuarios no pueden modificar el contenido de la lista?

a- ubicándola en direcciones altas de memoria.

b- ubicándola en un segmento de memoria la que solo puede acceder el SO.

c- ninguna de las opciones anteriores.

141. que es un administrador de memoria?

a-un dispositivo de hardware llamado MMU.

b- un proceso del SO que provee servicios relacionados con la memoria, a otros procesos.

c- un proceso llamado kernel que impide que un proceso acceda a las direccioens.

Downloaded by Geral Diaz (geraldinegeri11@gmail.com)


lOMoARcPSD|15103112

142. uno de los problemas de diseños de un administrador de memoria es:

a- desarrollar técnicas de memoria virtual.

b- brindar a todos los procesos al mismo tiempo de uso de la CPU.

c- interpretar los programas de los usuarios.

d- mantener actualizados los contenidos de los CPU de la tabla de procesos.

143. un mapeo de direcciones lógicas efectuado mediante MMU se realiza:

a- en tiempo de ejecución.

b- únicamente durante la compilación.

c- durante la compilación, la carga o la ejecución.

144. ante una falla, en la asignación global, la pagina que debe salir se la elige:

a- del conjunto de paginas del proceso que provoco la falla.

b- de todo el conjunto de páginas en memoria.

c- de las páginas que se encuentran en la memoria virtual.

145. si se utilizan mapas de bits para la administración de memoria ¿es importante tener en cuenta el tamaño de la unidad de
asignación?

a- si, porque el tamaño de la unidad de asignación depende del tamaño del mapa de bits.

b- no, porque el tamaño del mapa de bits depende exclusivamente del tamaño de la memoria.

c- ninguna de las opciones.

146. Que motivos hay para imponer una estructura jerárquica a los sistemas de archivos?

a- permitir a los usuarios crear sus propios subdirectorios y organizar sus archivos, donde el nombre de un archivo, debe ser único
solo en el subdirectorio donde se encuentra.

b- permitir a los usuarios crear sus propio subdirectorios y organizar sus archivos con la restricción de que el nombre de un archivo
debe ser el único en todo el sistema.

c- ninguna de las dos opciones.

147. Cual es la función de la protección de archivos?

a- permitir que la información no sufra daños físicos y no exista un acceso inadecuado a esa información.

Downloaded by Geral Diaz (geraldinegeri11@gmail.com)


lOMoARcPSD|15103112

b- Evitar que los archivos no se destruyan accidentalmente.

c- Controlar el acceso de programas, procesos o usuarios a los recursos definidos por un sistema de computación.

148. Al eliminar un archivo sus bloques se devuelven a la lista de bloques libres pero no se borran ¿ Seria una buena medida que el
SO borrar cada bloque antes de devolverlo ?

a- No, porque impediría que usuarios no autorizados recuperen esos bloques.

b- No, porque seria necesario mas tiempo para llevar a cabo la operación.

c- No, porque la lista de bloques libres aumentaría de tamaño.

149. ¿Cual de los siguientes esquemas seria valido para proteger la información de los accesos no autorizados a la lista de
contraseñas (password)?

a- Utilizar representaciones internas y externas diferentes a la lista de contraseñas.

b- Utilizar un hardware adecuado para la implementación de la lista de contraseñas.

c- Ninguna de las opciones anteriores.

150. La posibilidad de usar contraseñas que proporcionan los sistemas de computación son utiles en:

a- Los sistemas con múltiples usuarios.

b- Los sistemas monousuario.

c- Tanto en los sistemas con un solo usuario como en aquellos que cuentan con muchos usuarios.

151. ¿Que esquema seria conveniente para implantar una política de protección que permita a un proceso acceder a un archivo solo
n veces?

a- Mantener una lista de permisos por usuarios con un campo adicional que indica el numero de accesos permitidos.

b- Mantener una lista de permisos por archivos con un campo adicional que indica el numero de accesos permitidos.

c- Mantener una lista de permisos por procesos con un campo adicional que indica el numero de accesos permitidos.

152. Cierto SO admite un solo directorio pero permite que el directorio tenga un numero arbitrario de archivos con nombres de
archivos de longitud arbitraria ¿ Se puede simular algo parecido a un sistema jerárquico de archivos ?

a- No, porque es imposible simular un árbol.

b- Si, respetando ciertas normas en la asignación de los nombres de archivos por ejemplo la utilización de caracteres especiales en
los nombres de archivos.

c- Ninguna de las dos opciones anteriores.

Downloaded by Geral Diaz (geraldinegeri11@gmail.com)


lOMoARcPSD|15103112

1. La tarea del planificador a largo plazo es:

a) Seleccionar uno de los procesos del almacenamiento masivo (secundario) y cargarlo en la


memoria para su ejecución.
b) Seleccionar uno de los procesos en la memoria y devolverlo al almacenamiento masivo para
reiniciarlo cuando sea oportuno.
c) Ninguna de las opciones anteriores.

2. ¿Qué tarea realiza el planificador a mediano plazo?

a) Libera la cola de procesos bloqueados para permitirles continuar su ejecución.


b) Actúa solo si la cola de procesos listos está vacía.
c) En los sistemas con esquema de intercambio (swapping), ayuda a reducir el grado de
multiprogramación.

3. El planificador de la UCP (o de corto plazo) se encarga de:

a) Impedir que los procesos lean archivos sin autorización.


b) Seleccionar uno de los procesos que se encuentran listos para ejecutar.
c) Asignar memoria a los procesos que producen información.

4. ¿Tiene sentido mantener la cola de procesos bloquados en orden FIFO?

a) No, porque cada uno de los procesos espera que ocurra un evento que se puede producir en
cualquier momento.
b) No, porque los procesos esperan la ocurrencia de eventos que se producirán de acuerdo a la
prioridad previamente establecida.
c) Si, porque la cola de procesos bloqueados siempre tiene orden FIFO.

5. El planificador de la UCP toma decisiones en distintas circunstancias, algunas de las cuales le


exigen un nuevo proceso para su ejecución. ¿Cuál de las siguintes no exige tal selección?

a) Cuando un proceso cambia de ejecutando a bloqueado.


b) Cuando un proceso cambia de bloqueando a listo para ejecutar.
c) Cuando un proceso cambia de ejecutando a listo para ejecutar.

6. La sección crítica es:

a) Las variables que los procesos dejan en el espacio de direcciones del usuario.
b) Una parte del PCB compartido por los procesos.
c) Un segmento de código en el cual se modifican variables compartidas.

7. ¿Qué es un semáforo?

Downloaded by Geral Diaz (geraldinegeri11@gmail.com)


lOMoARcPSD|15103112

a) Una construcción de alto nivel que proporcionan los lenguajes de programación.


b) Una variable especial sobre la que estan definidas ciertas operaciones atómicas.
c) Una variable definida arbitrariamente por el programador.

8. ¿Porqué las operaciones de espera y señal sobre semáforos deben ser indivisibles?

a) Porque de esa forma se facilita el progreso del sistema.


b) Porque permiten la implantación de la exclusión mutua.
c) Porque estan incluidas en el núcleo del SO.

9. ¿Qué es un monitor?

a) Una construccion de alto nivelque proporcionan los lenguajes de programación.


b) Una variable especial sobre la que estan definidas ciertas operaciones atómicas.
c) Una variable definida arbitrariamente por el programador.

10. ¿Cuál es la conveniencia de utilizar variables de condición en los monitores?

a) Permiten proporcionar un mecanismo para la sincronización de procesos con monitores.


b) Permiten alterar el orden de ejecución de los procesos que utilizan el monitor.
c) Permiten la utilización de una estructura FIFO de fácil manipulación.

11. ¿Qué es un proceso?

a) Solo una sucesión de instrucciones para un procesador virtual.


b) Básicamente un programa en ejecución.
c) Una entidad que puede definir y controlar a uno o mas procesadores virtuales.

12. ¿La ejecución de funciones del SO exige un cambio de contexto?

a) Si, porque el SO es un programa que es ejecutado por el procesador.


b) Si, porque las funciones del SO estan insertas en la cola de procesos ‘listos’.
c) No, porque no son procesos.

13. Las decisiones del planificador de mediano plazo puden realizarse en distintas
circunstancias, algunas de las cuales le exigen seleccionar un nuevo proceso para su ejecución.

a) Cuando un proceso cambia de ejecutando a listo para ejecutar.


b) Cuando un proceso cambia de ejecutando a bloqueado.
c) Ninguna de las opciones anteriores.

14. En el algoritmo FIFO de planificación, los procesos trabajan bajo la condición:

a) ejecutar hasta que aparezca uno con menor tiempo de ejecución.

Downloaded by Geral Diaz (geraldinegeri11@gmail.com)


lOMoARcPSD|15103112

b) ejecutar hasta terminar o bloquearse.


c) ejecutar hasta que aparezca uno con mayor prioridad.

15. En la planificación de colas múltiples ¿puede ocurrir una postergación indefinida?

a) Si, si los procesos llegan a la cola de nivel inferior.


b) No, porque esta previsto que los procesos no lleguen nunca a la cola de nivel mas bajo.
c) Ninguna de las opciones anteriores.

16. Las soluciones ‘’con espera ocupada’’ son aquellas donde:

a) un proceso fuera de su sección critica impide que otro ingrese en la suya.


b) un proceso agota su quantum consultando si puede ingresar a su sección crítica.
c) un semáforo se bloquea y hace esperar a todos los procesos.

17. Un sistema con un solo procesador ¿puede no tener procesos de los usuarios ‘’listos’’ ni en

‘’ejecución’’?

a) Si, es posible que todos los procesos estén ‘’bloqueados’’ o que no haya procesos para ejecutar.

18. considere una variante de algoritmo de planificación Round Robin donde los registros en la
cola de procesos ‘’listos’’ son punteros a los BCP ¿cuál sería el resultado de colocar dos punteros al
BCP del mismo proceso en la cola de procesos listos?
a) Se duplicaria el quantum del proceso.

19. ¿Qué es un bloque de control de proceso BCP?

a) una estructura en la que se conservan los datos requeridos a un proceso y que permite, entre otras
cosas, la reanudación del proceso en caso de que haya sido suspendido temporalmente.

20. En la planificación de colas de múltiples niveles con retroalimentación ¿cómo se logra


favorecer los procesos limitados por la E/S?

a) otorgando quantums de tiempo de mayor a menor desde el nivel mas alto al mas bajo.

21. ¿Cuál es el significado de ‘’espera activa’’?

a) cuando un proceso esta en su sección crítica, cualquier otro proceso que intente en esa sección
deberá ejecutar un ciclo continuo en la sección de entrada.

22. Las listas de espera de los semáforos suelen implementarse como ‘’colas’’ FIFO ¿qué
problema podría ocasionar si se implementaran como ‘’pilas’’ LIFO?

a) Se podría ocasionar una postergación indefinida de algunos procesos.

23. ¿Qué es un condición de carrera o competencia?

Downloaded by Geral Diaz (geraldinegeri11@gmail.com)


lOMoARcPSD|15103112

a) Situación en la que los procesos intentan apropiarse de un recurso.

24. ¿cuál es el alcance de las variables declaradas en un monitor?

a) Son variables locales accesibles unicamente para los procedimientos del monitor.

25. ¿por qué el bloqueo mutuo sera un problema mas critico en los Sos del futuro?

a) por el alto grado de multiprocesamiento y paralelisno real.

26. Las soluciones ‘’sin espera ocupada’’ son aquellas donde:

a) los procesos que no pueden acceder a su sección crítica se bloquean.

27. la atención de una interrupción tienen algunos pasos realizados por hardware y otros por
software. ¿cuál de los que se mencionan a continuación es realizado por hardware?

a) Almacenar los registros del procesador.

28. en el algoritmo FIFO, los procesos trabajan bajo la condición:

a) ejecutar hasta terminar o bloquearse.

29. la atención de una interrupción tienen algunos pasos realizados por hardware y otros por
software. ¿cuál de los que se mencionan a continuación es realizado por software?

a) Seleccionar el siguiente proceso a ejecutar.

30. en el algoritmo SJF, los procesos trabajan bajo la condición:

a) ejecutar hasta terminar o bloquearse.

31. si un programador esta trabajando en modo usuario ¿qué tareas puede realizar?

a) Modificar un compilador.

32. Asociado a cada dispositivo de E/S existe una dirección de memoria que contiene la
dirección de inicio de:

a) el bloque de dirección de proceso(BCP)


33. Las soluciones que proporcionan los semáforos resultan efectivas porque:

a) se puede acceder a ellos solo mediante operaciones atómicas.

Downloaded by Geral Diaz (geraldinegeri11@gmail.com)


lOMoARcPSD|15103112

36. La tarea del planificador a largo plazo es:


a) Seleccionar uno de los procesos del almacenamiento masivo (secundario) y cargarlo en la
memoria para su ejecución.
b) Seleccionar uno de los procesos en la memoria y devolverlo al almacenamiento masivo para
reiniciarlo cuando sea oportuno.
c) Ninguna de las opciones anteriores.

37. ¿Qué tarea realiza el planificador a mediano plazo?


a) Libera la cola de procesos bloqueados para permitirles continuar su ejecución.
b) Actúa solo si la cola de procesos listos está vacía.
c) En los sistemas con esquema de intercambio (swapping), ayuda a reducir el grado de
multiprogramación.

38. El planificador de la UCP (o de corto plazo) se encarga de:


a) Impedir que los procesos lean archivos sin autorización.
b) Seleccionar uno de los procesos que se encuentran listos para ejecutar.
c) Asignar memoria a los procesos que producen información.

39. ¿Tiene sentido mantener la cola de procesos bloquados en orden FIFO?


a) No, porque cada uno de los procesos espera que ocurra un evento que se puede producir en
cualquier momento.
b) No, porque los procesos esperan la ocurrencia de eventos que se producirán de acuerdo a la
prioridad previamente establecida.
c) Si, porque la cola de procesos bloqueados siempre tiene orden FIFO.

40. El planificador de la UCP toma decisiones en distintas circunstancias, algunas de las cuales le
exigen un nuevo proceso para su ejecución. ¿Cuál de las siguintes no exige tal selección?
a) Cuando un proceso cambia de ejecutando a bloqueado.
b) Cuando un proceso cambia de bloqueando a listo para ejecutar.
c) Cuando un proceso cambia de ejecutando a listo para ejecutar.

41. La sección crítica es:


a) Las variables que los procesos dejan en el espacio de direcciones del usuario.
b) Una parte del PCB compartido por los procesos.
c) Un segmento de código en el cual se modifican variables compartidas.

42. ¿Qué es un semáforo?


a) Una construcción de alto nivel que proporcionan los lenguajes de programación.
b) Una variable especial sobre la que estan definidas ciertas operaciones atómicas.
c) Una variable definida arbitrariamente por el programador.

43. ¿Porqué las operaciones de espera y señal sobre semáforos deben ser indivisibles?
a) Porque de esa forma se facilita el progreso del sistema.
b) Porque permiten la implantación de la exclusión mutua.
c) Porque estan incluidas en el núcleo del SO.

44. ¿Qué es un monitor?


a) Una construccion de alto nivelque proporcionan los lenguajes de programación.

Downloaded by Geral Diaz (geraldinegeri11@gmail.com)


lOMoARcPSD|15103112

48. Las decisiones del planificador de mediano plazo puden realizarse en distintas
circunstancias, algunas de las cuales le exigen seleccionar un nuevo proceso para su ejecución.
a) Cuando un proceso cambia de ejecutando a listo para ejecutar.
b) Cuando un proceso cambia de ejecutando a bloqueado.
c) Ninguna de las opciones anteriores.

1) Las hebras se ejecutan :


a) En modo kernel
b) En modo usuario
c) En modo kernel y usuario en paralelo

2) Que es una hebra


a) Una porción mínima de uso de la ucp
b) Un proceso
c) Un programa en ejecución

3) La planificación por turnos (no apropiativa) se ejecuta:


a) Hasta terminar o bloquearse
b) Hasta que llegue otro de mayor prioridad
c) Hasta agotar su quantum

La tarea del planificador a largo plazo es:

a) Seleccionar uno de los procesos del almacenamiento masivo y cargarlo en la


memoria para su ejecución.
b) Seleccionar uno de los procesos en la memoria y devolverlo al
almacenamiento masivo para reiniciarlo cuando sea oportuno.
c) Ninguna de las opciones anteriores.

Qué tarea realiza el planificador de mediano plazo?


a) Libera la cola de procesos bloqueados para permitirles continuar su
ejecución.
b) Actúa solo si la cola de procesos listos está vacía.
c) En los sistemas con esquema de intercambio (swaping), ayuda a reducir el
grado de multiprogramación.
El planificador de la UCP (o de corto plazo) se encarga de :
a) Impedir que los procesos lean archivos sin autorización
b) Seleccionar uno de los procesos que se encuentran para ejecutar (*)
c) Asignar memoria a los procesos que producen información.

4) ¿Tiene sentido mantener la cola de procesos bloqueados en orden FIFO?


a) No, porque cada uno de los procesos espera que ocurra un evento que se puede
producir en cualquier momento (*)

Downloaded by Geral Diaz (geraldinegeri11@gmail.com)


lOMoARcPSD|15103112

b) No, porque los procesos esperan la ocurrencia de eventos que se producirán de


acuerdo a la prioridad previamente establecida.
c) Sí, porque la cola de procesos bloqueados siempre tiene orden

5) El planificador de la UCP toma decisiones en distintas circunstancias, algunas de


las cuales le exigen un nuevo proceso para su ejecución. ¿Cuál de los siguientes no
exige tal selección?:
a) Cuando un proceso cambia de ejecutando a bloqueado.
b) Cuando un proceso cambia de bloqueado a listo para ejecutar (*)
c) Cuando un proceso cambia de ejecutando a listo para ejecutar.

6) La sección crítica es:


a) Las variables que los procesos dejan en el espacio de direcciones del usuario.
b) Una parte del PCB compartido por los procesos.
c) Un segmento de código en el cual se modifican variables compartidas

7) ¿Qué es un semáforo?
a) Una construcción de alto nivel que proporcionan los lenguajes de programación.
b) Una variable especial sobre la que están definidas ciertas operaciones atómicas
c) Una variable definida arbitrariamente por el programador.

8) ¿Porque las operaciones de espera y señal sobre semáforos deben ser


indivisibles?
a) Porqué de esa forma se facilita el programa del sistema.
b) Porque permiten la implantación de la exclusión mutua (*)
c) Porque están incluidas en el núcleo del SO.

9) ¿Qué es un monitor?
a) Una construcción de alto nivel que proporcionan los lenguajes de
programación.
b) Una variable especial sobre la que están definidas ciertas operaciones atómicas.
c) Una variable definida arbitrariamente por el programador.

10) ¿Cuál es la conveniencia de utilizar variables de condición en los monitores?


a) Permiten proporcionar un mecanismo para la sincronización de procesos con
monitores.
b) Permiten alterar el orden de ejecución de los procesos que utilizan el monitor.
c) Permiten la utilización de una estructura FIFO de fácil manipulación.

11) ¿Qué es un proceso?


a) Sólo una sucesión de instrucciones para un procesador virtual.
b) Básicamente un programa en ejecución.
c) Una entidad que puede definir y controlar a uno o más procesadores virtuales.

Downloaded by Geral Diaz (geraldinegeri11@gmail.com)


lOMoARcPSD|15103112

12) ¿La ejecución de funciones del SO exige un cambio de contexto?


a) Sí, porque el SO es un programa que es ejecutado por el procesador.
b) Sí, porque las funciones del SO están insertas en la cola de procesos “listos”
c) No, porque no son procesos.

13) Las decisiones del planificador de mediano plazo pueden realizarse en distintas
circunstancias, algunas de las cuales le exigen seleccionar un nuevo proceso para
su ejecución… <continúa>.
a) Cuando un proceso cambia de ejecutado a listo para ejecutar
b) Cuando un proceso cambia de ejecutando a bloqueado
c) Ninguna de las opciones anteriores.

14) En el algoritmo FIFO de planificación, los procesos trabajan bajo la condición:


a) Ejecutar hasta que aparezca uno con menor tiempo de ejecución.
b) Ejecutar hasta terminar o bloquearse.
c) Ejecutar hasta que aparezca uno con mayor prioridad.

15) En el algoritmo SJF, los procesos trabajan bajo la condición:


a)Ejecutar hasta terminar o bloquearse.

16) En la planificación de colas múltiples, ¿puede ocurrir una postergación indefinida?


a) Sí, si los procesos llegan a la cola de nivel inferior.
b) No, porque está previsto que los procesos no lleguen nunca a la cola de nivel más
bajo.
c) Ninguna de las opciones anteriores.

17) En la planificación de colas de múltiples niveles con retroalimentación, ¿cómo se


logra favorecer los procesos limitados por la E/S?
a) Otorgando quantum de tiempo de mayor a menor desde el nivel más alto al más
bajo.

18) Las soluciones “con espera ocupada” son aquellas donde:


a) Un proceso fuera de sección crítica impide que otro ingrese en la suya.
b) Un proceso agota su quantum consultando si puede ingresar a su sección
crítica.
c) Un semáforo se bloquea y hace esperar a todos los procesos.

19) Un sistema con un solo procesador ¿puede no tener procesos de los usuarios
“listos” ni “en ejecución”?

Downloaded by Geral Diaz (geraldinegeri11@gmail.com)


lOMoARcPSD|15103112

1. Que es una interrupción

Mecanismo por el cual los módulos del hardware pueden interrumpir el


funcionamiento del procesador

2. A qué se debe que el acceso a DMA a la memoria principal tiene


mayor prioridad, que el acceso del procesador a la memoria principal

El módulo dma toma el control para la transferencia de datos

3. Por qué es conveniente utilizar una memoria jerárquica

Se logra un buen balance entre costo y rendimiento

4. Acceso directo a memoria (DMA)

Una técnica de e/s más eficiente que la e/s programada y la por


interrupciones

5. Registros visibles a usuario

Disponible para todos los programas incluso para los de aplicación

6. Interrupciones sirven para

Mejorar la eficiencia del procesamiento

7. Definiciones de SO

Conjunto de prog. En software y firmware que permite que el sistema de


computación funcione con eficiencia y comodidad

8. En la máquina multinivel, en qué nivel actúa el SO

En el nivel 3

9. Si un programador está trabajando en modo usuario que tarea no


puede realizar

Modificar las funciones del núcleo (kernel)

Downloaded by Geral Diaz (geraldinegeri11@gmail.com)


lOMoARcPSD|15103112

10. Que es un proceso

Un programa en ejecución

11. Cuál es el propósito de las llamas al sistema

Proporcionar una interfaz entre el SO y los programas de aplicación

12. El tiempo compartido es equivalente a la multiprogramación?

No, porque el tiempo compartido no es posible sin la multiprogramación.

13. Ventaja principal para el enfoque de capas de un SO

División del sistema op en varios niveles, cada uno encima del otro

14. Qué desarrollos tecnológicos hicieron posible la comput. personal?

Evolución en los microprocesadores

15. Obtener un prog. reentrante (¿)

No deben escribirse instrucciones que modifiquen su código durante su


ejecución

16. Ventaja de arquitectura de máquina virtual para el diseñador de SO

Cada máquina virtual está aislada, por lo que no existen problemas de


seguridad

17. Desventaja de sistemas en lotes

Falta de interacción de los usuarios con el sistema

18. Principal obstáculo al escribir un sistema de tiempo real

Tiempo de respuesta

19. Relación entre lenguaje y máquina virtua​l

Si porque una máquina define el lenguaje y viceversa

Downloaded by Geral Diaz (geraldinegeri11@gmail.com)


19. Un sistema con un solo procesador ¿puede no tener procesos de los usuarios
“listos” ni “en ejecución”?
a) Sí, es posible que todos los procesos estén “bloqueados” o que no haya
procesos para ejecutar.

20. Cual no es función de SO. Compilar un programa de usuario.

44. ¿Qué es un monitor?


a) Una construcción de alto nivel que proporcionan los lenguajes de programación.
b) Una variable especial sobre la que están definidas ciertas operaciones atómicas.
c) Una variable definida arbitrariamente por el programador.

45. ¿Cuál es la conveniencia de utilizar variables de condición en los monitores?


a) Permiten proporcionar un mecanismo para la sincronización de procesos con monitores.
b) Permiten alterar el orden de ejecución de los procesos que utilizan el monitor.
c) Permiten la utilización de una estructura FIFO de fácil manipulación.

46. ¿Qué es un proceso?


a) Solo una sucesión de instrucciones para un procesador virtual.
b) Básicamente un programa en ejecución.
c) Una entidad que puede definir y controlar a uno o más procesadores virtuales.

47. ¿La ejecución de funciones del SO exige un cambio de contexto?


a) Si, porque el SO es un programa que es ejecutado por el procesador.
b) Si, porque las funciones del SO están insertas en la cola de procesos ‘listos’.
c) No, porque no son procesos.

153. En los sistemas de consultas interactivos que requieren un bajo tiempo de respuesta
¿Cuál es el acceso a los archivos conveniente?
a- Secuencial.
b- Directo.
c- ISAM.

154. Considere un sistema que puede atender a 5000 usuarios. Suponga que desea permitir
que 4999 puedan acceder a un archivo determinado ¿Cómo se especifica esto en UNIX?
a- Es imposible especificar esta protección en UNIX.
b- Poniendo al propietario del archivo en un grupo distinto al de los 4999 usuarios restantes.
c- Reuniendo los 4999 usuarios en un grupo.

También podría gustarte