Sistemas Operativos. Un Enfoque Basado en Conceptos PDF
Sistemas Operativos. Un Enfoque Basado en Conceptos PDF
SISTEMAS
OPERATIVOS
Dhananjay M. Dhamdhere
Indian Institute of Technology, Mumbai
Revisor técnico
Jorge Valeriano Assem
Universidad Nacional Autónoma de México
SISTEMAS OPERATIVOS
Segunda edición
ISBN-13: 978-970-10-6405-4
ISBN-10: 970-10-6405-4
ISBN: 0-07-061194-7
1234567890 09765432108
Parte I
Conceptos fundamentales
2 Visión general de los sistemas operativos 31
2.1 El sistema operativo y el sistema de cómputo 31
2.2 La eficiencia, el desempeño de sistema y la conveniencia del usuario 46
2.3 Las clases de sistemas operativos 49
2.4 Los sistemas de proceso por lotes 52
2.5 Sistemas de multiprogramación 56
2.6 Los sistemas de tiempo compartido 65
2.7 Sistemas operativos de tiempo real 71
2.8 Los sistemas operativos distribuidos 73
2.9 Los sistemas operativos modernos 75
Ejercicio 2 77
Bibliografía 80
3 Los procesos y los hilos 84
3.1 Los procesos y los programas 84
3.2 El punto de vista del programador sobre los procesos 87
3.3 La visión del sistema operativo de los procesos 92
3.4 Los hilos 106
3.5 Estudios de casos de procesos y de hilos 115
3.6 Procesos interactuantes: una vista avanzada del programador de los procesos 130
Ejercicio 3 139
Bibliografía 141
4 Planificación 143
4.1 Preliminares 143
4.2 Políticas de planificación no priorizante 148
4.3 Políticas de planificación priorizante 151
4.4 La planificación en la práctica 156
4.5 Planificación en tiempo real 168
4.6 Planificación en Unix 175
Parte II
Tópicos avanzados
9 Sincronización de procesos 403
9.1 La sincronización de acceso a datos y la sincronización de controles 403
9.2 Secciones críticas 404
9.3 Condiciones de ejecución en la sincronización de controles 409
9.4 La implementacion de secciones críticas y operaciones indivisibles 411
9.5 Problemas clásicos de la sincronización de procesos 414
9.6 Estructura de sistemas concurrentes 421
9.7 El planteamiento algorítmico para la implementación de secciones críticas 423
9.8 Semáforos 431
9.9 Regiones críticas condicionadas 443
9.10 Monitores 447
9.11 La sincronización de procesos en Unix 456
9.12 La sincronización de procesos en Linux 457
9.13 La sincronización de procesos en Windows 458
Ejercicio 9 459
Bibliografía 463
10 Paso de mensajes 466
10.1 Vista de conjunto del paso de mensajes 466
10.2 Implementar el paso de mensajes 470
Parte III
Sistemas operativos distribuidos
15 Sistemas operativos distribuidos 625
15.1 Características de sistemas distribuidos 625
15.2 Nodos de sistemas distribuidos 627
15.3 Sistemas operativos de red 627
15.4 Sistemas operativos distribuidos 628
15.5 Comunicación interproceso confiable 631
15.6 Paradigmas de computación distribuidos 637
15.7 Realización de redes (Networking) 644
15.8 Modelo de un sistema distribuido 657
15.9 Cuestiones de diseño en sistemas operativos distribuidos 659
Ejercicio 15 661
Bibliografía 662
16 Problemas teóricos en sistemas distribuidos 664
16.1 Nociones de tiempo y estado 665
16.2 Estados y eventos en un sistema distribuido 665
16.3 Precedencias de tiempo, relojes y eventos 666
16.4 Registrar el estado de un sistema distribuido 672
Ejercicio 16 680
Bibliografía 682
17 Algoritmos de control distribuido 684
17.1 Operación de algoritmos de control distribuido 684
17.2 Corrección de algoritmos de control distribuido 686
17.3 Exclusión mutua distribuida 688
17.4 Manejo del bloqueo mutuo distribuido 693
17.5 Algoritmos de planificación distribuida 698
17.6 Detección de terminación distribuida 701
17.7 Algoritmos de elección 703
17.8 Asuntos prácticos en el uso de algoritmos de control distribuido 705
Ejercicio 17 707
Bibliografía 708
Enfoque general
El libro comienza con la formación de un núcleo de conocimientos sobre lo que hace funcionar a un sistema
operativo, expuestos en el capítulo 2. Se presenta a un sistema operativo como un intermediario entre un sis-
tema de cómputo y los cálculos de los usuarios, cuya tarea es suministrar un buen servicio a éstos y alcanzar
un uso eficiente del sistema de cómputo. Un estudio de la interacción de un sistema operativo con el sistema
de cómputo, por un lado, y con los cálculos del usuario, por el otro, consolida esta visión y le añade detalles
prácticos. Este enfoque tiene el efecto de desmitificar al sistema operativo para el lector nuevo, y adaptarlo a la
formación de un lector experimentado. También enfatiza los aspectos clave de la arquitectura de computadoras,
esenciales para el estudio de los sistemas operativos. Esta parte del libro suministra una base para el estudio de
los detalles de las funciones que realiza un sistema operativo más a fondo.
El resto del libro sigue un enfoque análogo. Cada capítulo identifica conceptos fundamentales incluidos en
alguna funcionalidad de un sistema operativo, describe aspectos relevantes de la arquitectura de computadoras,
estudia técnicas relevantes de los sistemas operativos e ilustra su operación a través de ejemplos. Los aspectos
más importantes de este enfoque son:
La principal ventaja de este enfoque es que los conceptos, las técnicas y los casos de estudio se integran en
capítulos coherentes. Así, muchos detalles de diseño y de implementación parecen “obvios” cuando el lector
los encuentra. Este hecho ayuda a enfatizar la idea de que el estudio de los sistemas operativos debe basarse en
una comprensión sólida de los conceptos. Éste es el mensaje más importante que un texto puede dar a un estu-
diante de sistemas operativos, quien enfrentará tanto una rica diversidad como rápidos cambios en los sistemas
operativos durante su carrera.
Aspectos pedagógicos
Un sistema operativo controla el uso de los recursos de un sistema de cómputo, tales como los
CPU, la memoria y los dispositivos de E/S a fin de satisfacer los requerimientos computacionales
de los usuarios. Éstos esperan conveniencia, calidad de servicio y seguridad al ejecutar sus pro-
gramas, mientras que los administradores del sistema esperan un uso eficiente de los recursos de
la computadora y un buen desempeño al ejecutar los programas de los usuarios. Estas diversas
expectativas se conocen como la conveniencia del usuario, la seguridad y el uso eficiente de
los recursos, y forman las metas principales de un sistema operativo. El grado hasta el cual el
sistema operativo satisface estas metas depende del ambiente de cómputo, es decir, del hardware
del sistema de cómputo, sus interfaces con otras computadoras y la naturaleza de los cómputos
realizados por los usuarios.
Figuras y cuadros
Las figuras ilustran disposiciones prácti-
cas empleadas para manejar los cálculos
Evento
del usuario y el uso de los recursos, la
Contexto de salvar
operación paso a paso de técnicas es-
Manipulación de eventos pecíficas, o la comparación de técnicas
Planificación
alternas para proyectar sus fortalezas y
debilidades. Los cuadros se usan para
Despacho
encerrar aspectos clave de las funcio-
Figura 3.5 Funciones fundamentales para los procesos de control. nalidades del sistema operativo que se
esté estudiando. También sirven como
panorama general o como resúmenes de
temas específicos
begin
size : integer value (..);
buffer: array[1..size] of ...;
copy sample, disk write, housekeeping : string;
Código de programa no of samples : integer;
/* Crear los procesos */
copy sample := create process(move to buffer(), 3);
El código de programa se presenta en for- disk write := create process(write to disk(), 2);
housekeeping := create process(analysis(), 1);
ma de pseudocódigo fácil de entender. /* Mandar información del tamaño a copy sample y disk write */
send (copy sample, size);
send (disk write, size);
/* Verificar el estatus de todos los procesos */
over := false;
while (over = false)
if status(copy sample) = terminated and status(disk write) =
terminated and status(housekeeping) = terminated then
over := true;
terminate();
end;
Ejercicios EJERCICIO 2
Se incluyen ejercicios al final de cada ca- 1. ¿Cuáles de las siguientes deberían ser instrucciones privilegiadas? Explique por qué.
a) Ponga al CPU en modo privilegiado
pítulo. Éstos contienen problemas numé- b) Cargue los registros acotados
c) Cargue un valor en un registro del CPU
ricos basados en el material estudiado en d) Desenmascare algunas interrupciones
e) Termine a la fuerza la operación de E/S.
el texto, así como preguntas conceptuales 2. El CPU deberá estar en el modo privilegiado al ejecutar el código del kernel y en el modo de usuario
(es decir, el modo no privilegiado) al ejecutar un programa del usuario. Explique cómo se logra esto
desafiantes que miden la comprensión de durante la operación de un sistema operativo.
3. Justifique la siguiente declaración: “Debido a la presencia de la memoria cache, un programa requiere
los conceptos y de las técnicas compren- más tiempo del CPU para ejecutarse en un sistema de multiprogramación o de tiempo compartido que
lo que requeriría si fuera a ejecutarse completamente solo, es decir, sin tener a ningún otro programa en
didas en cada capítulo y que también su- el sistema”.
ministran una visión más profunda. 4. Escriba una nota sobre el contenido de los diversos campos de un vector de interrupción.
5. ¿Qué es un estado del CPU? Explique cómo es útil la noción de estado del CPU para implementar la
multiprogramación.
Introducción del capítulo La introducción precede a la primera sección de cada capítulo. Describe su
objetivo, la importancia del capítulo y los temas cubiertos en el mismo.
Instantáneas de los sistemas concurrentes Los estudiantes tienen dificultad para visualizar la operación
concurrente de los procesos en un sistema de software. Esta dificultad conduce a una comprensión inadecuada
de la sincronización de los procesos. Una instantánea ilustra el estado de los diferentes procesos y de los datos de
sincronización a fin de suministrar una visión holística de las actividades en un sistema concurrente.
Secciones optativas Las secciones optativas están dedicadas a temas avanzados. Estas secciones estudian
las bases teóricas de ciertos temas o de aspectos avanzados de su implementación. El instructor las puede incluir
como oferta para un curso de sistemas operativos, dependiendo de la disponibilidad de tiempo, o asignarlas en
forma selectiva para su estudio en casa.
Casos de estudio Los casos de estudio se organizan como secciones independientes. Ilustran aspectos
prácticos, disposiciones e intercambios en el diseño y la implementación de un sistema operativo. Los principa-
les sistemas operativos cubiertos por los casos de estudio son las diferentes versiones de los sistemas operativos
de Unix y Windows, así como el Linux.
Protección
Sincronización Memoria
Programación y
de procesos virtual
seguridad
Implementación
Pase de Bloqueos Sincronización y programación de las operaciones
mensajes mutuos en los SO de multiproceso con archivos
Parte I: Conceptos fundamentales La primera parte consta de siete capítulos. El capítulo 2 se centra en la
interacción de un sistema operativo con un sistema de cómputo y con los cálculos del usuario. También describe
diferentes clases de sistemas operativos, así como los conceptos y las técnicas fundamentales que emplean.
Un sistema operativo usa los conceptos de proceso y hebra de control para administrar la ejecución de los pro-
gramas: de manera informal, tanto un proceso como una hebra de control representan la ejecución de un progra-
ma; usamos proceso como un término genérico. El capítulo 3 describe la visión de los procesos del usuario y del
sistema operativo, es decir, cómo se crean los procesos, cómo interactúan entre sí y cómo los controla el sistema
operativo. Éste traslapa la ejecución de los procesos para suministrar un buen servicio al usuario y asegurar el uso
eficiente de los recursos. El capítulo 4 describe las técnicas de programación que se usan con este propósito.
El sistema operativo comparte la memoria de la computadora entre los procesos. El capítulo 5 trata del
aspecto clave de la fragmentación de la memoria, que es una situación en la cual un área de ésta no puede ser
usada porque es demasiado pequeña; igualmente, este capítulo se refiere a técnicas que abordan la fragmenta-
ción de la memoria. También se estudian las técnicas usadas por el núcleo para administrar sus propias estruc-
turas de datos. El capítulo 6 estudia la implementación de la memoria virtual, que permite la ejecución de un
programa cuyo tamaño excede al de la memoria.
Los dos siguientes capítulos tratan del sistema File, así como la seguridad y la protección de los datos y
los programas almacenados en los archivos. El capítulo 7 describe las instalaciones para la creación, el acceso,
la forma de compartir y el almacenaje confiable de los archivos. El capítulo 8 estudia la manera como se prote-
gen los archivos contra formas ilegales de acceso cometidas por los usuarios.
Parte II: Conceptos avanzados Esta parte consta de seis capítulos dedicados a temas avanzados que tie-
nen que ver con los procesos y su operación, con la implementación de los sistemas de archivos y con la estruc-
tura de los sistemas operativos. El capítulo 9 trata de las técnicas de sincronización que permiten a los procesos
de una aplicación compartir los datos comunes o coordinar sus actividades para alcanzar un objetivo común,
mientras que el capítulo 10 estudia cómo los procesos intercambian mensajes a fin de pasarse información. El
capítulo 11 estudia el bloqueo mutuo, una situación en la cual los procesos se esperan mutuamente por tiempo
indefinido, paralizando con ello una aplicación. El capítulo 12 describe cómo un SO administra los dispositivos
de E/S y describe las técnicas que usa para alcanzar una implementación eficiente de las operaciones con archi-
vos. El capítulo 13 trata acerca de la sincronización y la programación en un sistema operativo de multiproceso.
El capítulo 14 estudia las técnicas de diseño de los sistemas operativos que facilitan la modificación sencilla de
un sistema operativo: 1) para usarse en un sistema de cómputo con una arquitectura diferente, o 2) para satisfa-
cer los nuevos requerimientos de los usuarios.
Parte III: Sistemas operativos distribuidos Un sistema operativo distribuido difiere de uno convencio-
nal en que los recursos, los procesos y las operaciones de control del SO se distribuyen entre nodos diferentes.
Esta diferencia da lugar a una multiplicidad de aspectos relativos a la confiabilidad, la eficiencia, la consistencia
y la seguridad de los cálculos y del SO mismo. Esta parte contiene seis pequeños capítulos que encaran tales
aspectos.
Sistemas
operativos
distribuidos
Algoritmos Tolerancia en la
de control recuperación
distribuidos y en las fallas
Sistemas de
archivos
distribuidos
principios fundamentales de los SO, de modo que por sí misma es adecuada para un curso introductorio sobre
los principios de los sistemas operativos. Las dos primeras partes del libro y las secciones seleccionadas de los
capítulos 15 a 20 de la tercera parte pueden funcionar como un curso sobre los principios de los sistemas opera-
tivos para un plan de estudios de ciencias de la computación o temas relacionados. Sin embargo, todos los temas
estudiados aquí no pueden cubrirse en un semestre, de modo que el instructor podría escoger omitir algunas de
las secciones sobre temas avanzados o los capítulos sobre el pase de mensajes, la sincronización y la programa-
ción en los sistemas operativos de multiproceso, y la estructura de los sistemas operativos; o asignarlos para su
estudio en casa. Juntas, las tres partes del libro cubren los temas necesarios para una secuencia de dos cursos
sobre los principios de los sistemas operativos. Un curso sobre sistemas operativos distribuidos, posiblemente
para alumnos de posgrado, podría emplear la tercera parte del libro como parte sustancial.
Con la excepción de una introducción a la computación, este libro no requiere de ninguna formación
específica. Así, los instructores y los estudiantes posiblemente encuentren que contiene una gran cantidad de
material introductorio que éstos ya conocen. He incluido este material por una razón muy importante: como
se menciona al inicio del prefacio, los estudiantes saben muchas cosas por sí mismos, pero frecuentemente les
faltan conceptos. De modo que es útil que lean incluso material elemental que se presenta con base en concep-
tos. Por la misma razón, considero esencial que los instructores cubran en la clase la mayoría del capítulo 2, y
especialmente los siguientes temas:
• Sección 2.1: SO y el sistema de cómputo, especialmente el hardware para E/S, interrupciones y de pro-
tección de la memoria; y las llamadas del sistema.
• Sección 2.5: Multiprogramación, especialmente la mezcla y la prioridad de los problemas.
D. M. DHAMDHERE
Un sistema operativo (SO) tiene significados distintos para diferentes usuarios. La visión de cada
uno de éstos se denomina visión abstracta porque enfatiza las características que son importan-
tes desde la perspectiva del observador, ignorando todos los otros aspectos. Un sistema operativo
implementa una visión abstracta al actuar como intermediario entre el usuario y el sistema de
cómputo. Este arreglo no solamente permite que un sistema operativo suministre varias funcio-
nalidades al mismo tiempo, sino que también cambie y evolucione con el tiempo. Estudiaremos
de qué manera las visiones abstractas también son útiles para el diseño y la operación de un
sistema, así como durante su operación.
Un sistema operativo tiene dos metas: el uso eficiente de un sistema de cómputo y la conve-
niencia del usuario. Desafortunadamente, esta última a menudo está en conflicto con la primera.
En consecuencia, un sistema operativo no puede proveer a ambos. Comúnmente, encuentra el
equilibrio que resulte más efectivo en el ambiente en el cual se usa un sistema de cómputo;
el uso eficiente es importante cuando un sistema de cómputo es compartido por varios usuarios,
mientras la conveniencia del usuario es importante en computadoras personales. Destinamos
el término utilización efectiva para referirnos al balance entre la eficiencia y la conveniencia
del usuario, que a su vez se ajuste mejor al ambiente. En este capítulo analizamos las facetas de
la conveniencia de uso eficiente y del usuario.
La función primaria de un sistema operativo es admitir la ejecución de los programas del
usuario para asegurar su conveniencia y el uso eficiente de los recursos. En este capítulo descri-
bimos las funciones realizadas por el sistema operativo para atender estas preocupaciones.
• Para una persona que usa un paquete de aplicaciones, un sistema operativo es simple-
mente el software que hace posible que use el paquete.
• Para un técnico en una planta química informatizada, el sistema operativo es el compo-
nente invisible de un sistema de cómputo que controla la planta.
Las respuestas difieren porque la percepción de un usuario acerca de un sistema operativo depen-
de de tres factores: el propósito para el cual una computadora está siendo usada; el ambiente de
cómputo, es decir, el ambiente en el cual se usa el sistema de cómputo; y el grado de identidad
del sistema de cómputo con el propósito que se está atendiendo.
Para el estudiante, el propósito único del sistema de cómputo podría ser usar un navegador
del Internet. El sistema operativo coadyuva a lograr esto, así es que se identifica con el uso del
sistema de cómputo para la navegación en Internet. Un programador desea destinar un sistema
de cómputo al desarrollo de programas de uso general, así es que la habilidad para usar un
compilador para un lenguaje específico es de importancia suprema. Para una persona que usa
un paquete de aplicaciones, el sistema operativo es simplemente un medio de uso del paquete.
Tal usuario es indiferente a las demás capacidades de un sistema operativo. De manera semejan-
te, un técnico en una planta química informatizada considera al sistema operativo como un todo
en el sistema de control de la planta. Un diseñador de sistemas operativos indudablemente tiene
una percepción diferente acerca de lo que es un sistema operativo.
Un concepto común en todas estas percepciones es la utilización de un sistema de cómputo
para un propósito específico o para un conjunto de propósitos. Las intenciones en los ejemplos
anteriores son diferentes, así es que las percepciones del papel del sistema operativo lo son
también.
De entre estos ejemplos, es claro que un usuario percibe al sistema operativo como el soft-
ware que le ayuda a lograr el uso buscado de un sistema de cómputo; las demás capacidades
del sistema de cómputo y su ambiente no parecen tener importancia. Así, el sistema operativo
es simplemente una manera de lograr un propósito establecido. Un usuario preferirá un sistema
operativo que le permite alcanzar su propósito de la manera más simple y rápida posible. Así,
la perspectiva de un usuario siempre está determinada por la conveniencia y la rapidez en la
utilización de la computadora.
Ninguno de los cuatro puntos de vista de un sistema operativo descritos al principio de esta
sección (que se ilustran en la figura 1.1) es completo, pero cada visión es correcta y útil porque le
ayuda a un usuario a entender cómo usar un sistema operativo. Tales visiones se llaman visiones
abstractas. Una visión abstracta se centra en las características esenciales de una entidad desde
la perspectiva del observador. Consecuentemente, contiene algunos elementos de realidad, pero
ignora otros.
INTERNET
INVERSIONES EN LA
BOLSA DE VALORES
Uso Descripción
Recopilación de los La visión abstracta del usuario indica los servicios importantes que un sis-
requerimientos del tema debe suministrar. Puede usarse un conjunto de visiones abstractas para
sistema integrar una especificación de los requerimientos del sistema.
Diseño del sistema El uso de las visiones abstractas permite que un diseñador se centre en una
parte específica del sistema. Los detalles de las demás partes están “ocultos”;
se supone que estas partes se encuentran disponibles. Este enfoque ayuda a
controlar la complejidad del proceso de diseño.
Implementación del La parte cuyos detalles están ocultos en una visión de diseño se convierte en
sistema un módulo, que puede invocarse desde otros módulos. Este hecho conduce
a una implementación modular.
La figura 1.2 contiene una visión abstracta de la estructura de un sistema operativo, que
muestra tres partes principales del mismo. Cada una consta de varios programas. El núcleo
(kernel) es el corazón del sistema operativo, controla la operación de la computadora y provee
un conjunto de funciones y servicios para usar el CPU y los recursos de la computadora. Los
programas que no son de kernel implementan los comandos del usuario. Estos programas no
interactúan con el hardware, sino que usan recursos provistos por los programas de kernel. Los
programas de la interfaz del usuario proveen al usuario una interfaz de comando de línea o bien
una de usuario gráfico (la interfaz gráfica del usuario). Estos programas usan recursos provistos
por los programas que no son de kernel. Un usuario interactúa con los programas en la interfaz
del usuario (comúnmente con el intérprete de comandos) para solicitar el uso de recursos y los
servicios provistos por el sistema.
Programas que no
son de kernel
Kernel (núcleo)
Hardware de la computadora
La visión abstracta de la figura 1.2 tiene propiedades interesantes. Contiene un arreglo jerár-
quico de las capas del programa, en el cual los programas de la capa más alta usan los recursos
provistos por los programas de la capa de abajo. De hecho, cada capa toma una visión abstracta
de la capa inferior. En esta visión, la capa inferior aparece como un sistema que es capaz de eje-
cutar ciertos comandos. Incluso podría ser una máquina que es capaz de realizar ciertas operacio-
nes. El hecho de que la capa inferior conste de un conjunto de programas en vez de un sistema de
cómputo da lo mismo para la capa superior. Cada capa prolonga las capacidades de la máquina
provistas por la capa inferior. La máquina provista por la capa de la interfaz del usuario entiende
los comandos en el lenguaje de comandos del sistema operativo. Esta visión abstracta ayuda a
entender el diseño de un sistema operativo.