Software">
Nothing Special   »   [go: up one dir, main page]

Libro de Sistemas Operativos

Descargar como docx, pdf o txt
Descargar como docx, pdf o txt
Está en la página 1de 20

Sistemas operativos

Un sistema operativo es un software que administra el hardware de una computadora. Eso


también proporciona una base para los programas de aplicación y actúa como intermediario
entre el usuario de la computadora y el hardware de la computadora. Un aspecto sorprendente
de los sistemas operativos es cómo varían en el cumplimiento de estas tareas en una amplia
variedad de entornos informáticos. Los sistemas operativos están en todas partes, desde
automóviles y electrodomésticos que incluyen dispositivos de "Internet de las cosas", hasta dispositivos
inteligentes
teléfonos, computadoras personales, computadoras empresariales y entornos de computación en la nube.
Para explorar el papel de un sistema operativo en una computadora moderna
ambiente, es importante primero comprender la organización y la arquitectura del hardware de la computadora.
Esto incluye la CPU, la memoria y los dispositivos de E/S,
así como almacenamiento. Una responsabilidad fundamental de un sistema operativo es
asignar estos recursos a los programas.
Dado que un sistema operativo es grande y complejo, debe crearse
pieza por pieza. Cada una de estas piezas debe ser una porción bien delimitada de la
sistema, con entradas, salidas y funciones cuidadosamente definidas. En este capítulo,
proporcionamos una visión general de los principales componentes de un contemporáneo
sistema informático, así como las funciones proporcionadas por el sistema operativo.
Además, cubrimos varios temas para ayudar a preparar el escenario para el resto de
el texto: estructuras de datos utilizadas en sistemas operativos, entornos informáticos,
y sistemas operativos libres y de código abierto.
OBJETIVOS DEL CAPÍTULO
• Describir la organización general de un sistema informático y la función de
interrumpe
• Describir los componentes de un sistema informático multiprocesador moderno.
• Ilustrar la transición del modo usuario al modo kernel.
• Discutir cómo se utilizan los sistemas operativos en varios entornos informáticos.
• Proporcionar ejemplos de sistemas operativos gratuitos y de código abierto.

Qué hacen los sistemas operativos


Comenzamos nuestra discusión observando el papel del sistema operativo en el
sistema informático general. Un sistema informático se puede dividir aproximadamente en cuatro
componentes: el hardware, el sistema operativo, los programas de aplicación,
y un usuario (Figura 1.1).
El hardware: la unidad central de procesamiento (CPU), la memoria y el
Dispositivos de entrada/salida (E/S): proporciona los recursos informáticos básicos para el
sistema. Los programas de aplicación, como procesadores de texto, hojas de cálculo,
compiladores y navegadores web: definen las formas en que estos recursos son
Se utiliza para resolver los problemas informáticos de los usuarios. El sistema operativo controla el
hardware y coordina su uso entre los diversos programas de aplicación para
los diversos usuarios.
También podemos ver un sistema informático como compuesto por hardware, software,
y datos El sistema operativo proporciona los medios para el uso adecuado de estos
recursos en el funcionamiento del sistema informático. Un sistema operativo es
similar a un gobierno. Como un gobierno, no realiza ninguna función útil.
por sí mismo. Simplemente proporciona un entorno dentro del cual otros programas pueden
hacer un trabajo útil.
Para comprender mejor la función del sistema operativo, a continuación exploramos
sistemas operativos desde dos puntos de vista: el del usuario y el del sistema.
1.1.1 Vista de usuario
La vista del usuario de la computadora varía según la interfaz que se utilice.
Muchos usuarios de computadoras se sientan con una computadora portátil o frente a una PC que consta de un
monitor, teclado y ratón. Tal sistema está diseñado para que un usuario
monopolizar sus recursos. El objetivo es maximizar el trabajo (o juego) que el
el usuario está realizando. En este caso, el sistema operativo está diseñado principalmente para
facilidad de uso, con cierta atención prestada al rendimiento y la seguridad y ninguna
pagado a la utilización de recursos: cómo varios recursos de hardware y software
son compartidas.

Cada vez más, muchos usuarios interactúan con dispositivos móviles como los teléfonos inteligentes
y tabletas: dispositivos que están reemplazando los sistemas de computadoras de escritorio y portátiles
para algunos usuarios. Estos dispositivos suelen estar conectados a redes a través de
celulares u otras tecnologías inalámbricas. La interfaz de usuario para computadoras móviles
generalmente cuenta con una pantalla táctil, donde el usuario interactúa con el sistema
presionar y deslizar los dedos por la pantalla en lugar de usar un dispositivo físico
teclado y ratón. Muchos dispositivos móviles también permiten a los usuarios interactuar a través de
una interfaz de reconocimiento de voz, como Siri de Apple.
Algunas computadoras tienen poca o ninguna vista de usuario. Por ejemplo, las computadoras integradas en
dispositivos domésticos y automóviles pueden tener teclados numéricos y pueden
encender o apagar las luces indicadoras para mostrar el estado, pero ellos y sus sistemas operativos y
aplicaciones están diseñados principalmente para ejecutarse sin la intervención del usuario.
1.1.2 Vista del sistema
Desde el punto de vista de la computadora, el sistema operativo es el programa más
íntimamente involucrado con el hardware. En este contexto, podemos ver un sistema operativo como un
asignador de recursos. Un sistema informático tiene muchos recursos.
que pueden ser necesarios para resolver un problema: tiempo de CPU, espacio de memoria, almacenamiento
espacio, dispositivos de E/S, etc. El sistema operativo actúa como administrador de estos
recursos. Frente a numerosas y posiblemente contradictorias solicitudes de recursos, la
sistema operativo debe decidir cómo asignarlos a programas específicos y
usuarios para que pueda operar el sistema informático de manera eficiente y justa.
Una visión ligeramente diferente de un sistema operativo enfatiza la necesidad de
controlar los diversos dispositivos de E/S y programas de usuario. Un sistema operativo es un
programa de control Un programa de control gestiona la ejecución de los programas de usuario.
para prevenir errores y uso indebido de la computadora. Se preocupa especialmente
con la operación y control de dispositivos de E/S.
1.1.3 Definición de sistemas operativos
A estas alturas, probablemente pueda ver que el término sistema operativo cubre muchos
roles y funciones. Ese es el caso, al menos en parte, debido a la miríada
diseños y usos de las computadoras. Las computadoras están presentes en tostadoras, automóviles,
barcos, naves espaciales, hogares y negocios. Son la base de las máquinas de juego,
sintonizadores de televisión por cable y sistemas de control industrial.
Para explicar esta diversidad, podemos recurrir a la historia de las computadoras. A pesar de que
Las computadoras tienen una historia relativamente corta, han evolucionado rápidamente. La computación
comenzó como un experimento para determinar qué se podía hacer y rápidamente
movido a sistemas de propósito fijo para usos militares, como descifrar códigos y
trazado de trayectorias y usos gubernamentales, como cálculo de censos. Aquellos
Las primeras computadoras evolucionaron hasta convertirse en mainframes multifuncionales de propósito
general, y
ahí es cuando nacieron los sistemas operativos. En la década de 1960, la Ley de Moore predijo
que el número de transistores en un circuito integrado se duplicaría cada 18
meses, y esa predicción se ha cumplido. Los ordenadores ganaron en funcionalidad
y se encogió de tamaño, dando lugar a un gran número de usos y un gran número y
variedad de sistemas operativos. (Consulte el Apéndice A para obtener más detalles sobre la historia
de sistemas operativos.)
¿Cómo, entonces, podemos definir qué es un sistema operativo? En general, tenemos
no hay una definición completamente adecuada de un sistema operativo. Sistemas operativos
6 Capítulo 1 Introducción
existen porque ofrecen una forma razonable de resolver el problema de crear
un sistema informático utilizable. El objetivo fundamental de los sistemas informáticos es
para ejecutar programas y facilitar la resolución de problemas de los usuarios. Computadora
el hardware se construye hacia este objetivo. Dado que el hardware básico por sí solo no es
particularmente fáciles de usar, se desarrollan programas de aplicación. estos programas
requieren ciertas operaciones comunes, como las que controlan los dispositivos de E/S.
Las funciones comunes de control y asignación de recursos son luego llevadas
juntos en una sola pieza de software: el sistema operativo.
un kernel central junto con middleware que admite bases de datos, multimedia y
gráficos (por nombrar sólo algunos).
En resumen, para nuestros propósitos, el sistema operativo incluye el núcleo siempre en ejecución, marcos de
trabajo de middleware que facilitan el desarrollo de aplicaciones.
y proporcionar funciones y programas del sistema que ayuden a administrar el sistema
mientras se está ejecutando. La mayor parte de este texto se ocupa del núcleo de los sistemas operativos de
propósito general, pero se analizan otros componentes según sea necesario para
explicar completamente el diseño y la operación del sistema operativo.
1.2 Organización del sistema informático
Un sistema informático moderno de propósito general consta de una o más CPU y
una serie de controladores de dispositivos conectados a través de un bus común que proporciona
acceso entre componentes y memoria compartida (Figura 1.2). cada dispositivo
controlador está a cargo de un tipo específico de dispositivo (por ejemplo, una unidad de disco,
dispositivo de audio o pantalla gráfica). Dependiendo del controlador, más de uno
el dispositivo puede estar conectado. Por ejemplo, un puerto USB del sistema puede conectarse a un
Concentrador USB, al que se pueden conectar varios dispositivos. Un controlador de dispositivo mantiene
algo de almacenamiento de búfer local y un conjunto de registros de propósito especial. El dispositivo
controlador es responsable de mover los datos entre los dispositivos periféricos
que controla y su almacenamiento de búfer local.
Normalmente, los sistemas operativos tienen un controlador de dispositivo para cada controlador de dispositivo.
Este controlador de dispositivo comprende el controlador de dispositivo y proporciona la
resto del sistema operativo con una interfaz uniforme para el dispositivo. la cpu y
los controladores de dispositivos pueden ejecutarse en paralelo, compitiendo por los ciclos de memoria. A
garantizar el acceso ordenado a la memoria compartida, un controlador de memoria sincroniza
acceso a la memoria.
En las siguientes subsecciones, describimos algunos conceptos básicos de cómo un sistema de este tipo
opera, centrándose en tres aspectos clave del sistema. Empezamos con interrupciones,
que alertan a la CPU sobre eventos que requieren atención. Luego hablamos de almacenamiento
estructura y estructura de E/S.

1.2.1 Interrupciones
Considere una operación de computadora típica: un programa que realiza E/S. para empezar un
Operación de E/S, el controlador del dispositivo carga los registros apropiados en el dispositivo
controlador. El controlador del dispositivo, a su vez, examina el contenido de estos registros para determinar
qué acción tomar (como "leer un carácter del
teclado"). El controlador inicia la transferencia de datos desde el dispositivo a su local
buffer. Una vez que se completa la transferencia de datos, el controlador del dispositivo informa al
controlador de dispositivo que ha terminado su funcionamiento. El controlador del dispositivo luego da
control a otras partes del sistema operativo, posiblemente devolviendo los datos o un
puntero a los datos si la operación fue una lectura. Para otras operaciones, el dispositivo
el controlador devuelve información de estado como "escritura completada con éxito" o
“dispositivo ocupado”. Pero, ¿cómo informa el controlador al controlador del dispositivo que tiene
terminado su funcionamiento? Esto se logra a través de una interrupción.
1.2.1.1 Resumen
El hardware puede activar una interrupción en cualquier momento enviando una señal al
CPU, generalmente a través del bus del sistema. (Puede haber muchos autobuses dentro
un sistema informático, pero el bus del sistema es la vía de comunicación principal
entre los componentes principales.) Las interrupciones se utilizan para muchos otros fines
también y son una parte clave de cómo interactúan los sistemas operativos y el hardware.
Cuando la CPU se interrumpe, detiene lo que está haciendo e inmediatamente
transfiere la ejecución a una ubicación fija. La ubicación fija normalmente contiene
la dirección inicial donde se encuentra la rutina de servicio para la interrupción.
Se ejecuta la rutina de servicio de interrupción; al finalizar, la CPU reanuda el
cómputo interrumpido. Una línea de tiempo de esta operación se muestra en la Figura 1.3.
Para ejecutar la animación asociada con esta figura, haga clic aquí.
Las interrupciones son una parte importante de la arquitectura de una computadora. Cada computadora
El diseño tiene su propio mecanismo de interrupción, pero varias funciones son comunes.
La interrupción debe transferir el control a la rutina de servicio de interrupción adecuada.
El método sencillo para administrar esta transferencia sería invocar
una rutina genérica para examinar la información de interrupción. La rutina, a su vez

llamaría al controlador específico de interrupción. Sin embargo, las interrupciones deben ser manejadas
rápidamente, ya que ocurren con mucha frecuencia. Una tabla de punteros para interrumpir rutinas.
se puede utilizar en su lugar para proporcionar la velocidad necesaria. La rutina de interrupción
se llama indirectamente a través de la tabla, sin necesidad de una rutina intermedia.
Generalmente, la tabla de punteros se almacena en poca memoria (los primeros cien o más
ubicaciones). Estas ubicaciones contienen las direcciones de las rutinas de servicio de interrupción.
para los diversos dispositivos. Esta matriz, o vector de interrupción, de direcciones es entonces
indexado por un número único, dado con la solicitud de interrupción, para proporcionar la
dirección de la rutina de servicio de interrupción para el dispositivo de interrupción. Operando
sistemas tan diferentes como Windows y UNIX envían interrupciones de esta manera.
La arquitectura de interrupción también debe guardar la información de estado de cualquier
fue interrumpido, para que pueda restaurar esta información después de dar servicio al
interrumpir. Si la rutina de interrupción necesita modificar el estado del procesador, por
ejemplo, modificando los valores de registro; debe guardar explícitamente el estado actual
y luego restaurar ese estado antes de regresar. Después de atender la interrupción, el
dirección de retorno guardada se carga en el contador del programa, y la interrumpida
el cálculo se reanuda como si no se hubiera producido la interrupción.
1.2.1.2 Implementación
El mecanismo de interrupción básico funciona de la siguiente manera. El hardware de la CPU tiene un
cable llamado línea de solicitud de interrupción que la CPU detecta después de ejecutar cada
instrucción. Cuando la CPU detecta que un controlador ha afirmado una señal en
la línea de solicitud de interrupción, lee el número de interrupción y salta a la
rutina de manejo de interrupciones utilizando ese número de interrupción como un índice en
el vector de interrupción. Luego comienza la ejecución en la dirección asociada con
ese índice. El manejador de interrupciones guarda cualquier estado que cambiará durante
su operación, determina la causa de la interrupción, realiza las acciones necesarias
procesamiento, realiza una restauración de estado y ejecuta un retorno de interrupción
Instrucción para devolver la CPU al estado de ejecución anterior a la interrupción. Nosotros
digamos que el controlador del dispositivo genera una interrupción afirmando una señal en el
línea de solicitud de interrupción, la CPU detecta la interrupción y la envía al
manejador de interrupciones, y el manejador borra la interrupción dando servicio al dispositivo.
La figura 1.4 resume el ciclo de E/S impulsado por interrupciones.
El mecanismo básico de interrupción que acabamos de describir permite que la CPU responda a
un evento asíncrono, como cuando un controlador de dispositivo está listo para el servicio.
En un sistema operativo moderno, sin embargo, necesitamos funciones de manejo de interrupciones más
sofisticadas.
1. Necesitamos la capacidad de diferir el manejo de interrupciones durante el procesamiento crítico.
2. Necesitamos una forma eficiente de enviar al controlador de interrupciones adecuado para
un dispositivo.
3. Necesitamos interrupciones multinivel, para que el sistema operativo pueda distinguir entre interrupciones de
alta y baja prioridad y pueda responder con
el grado de urgencia adecuado.
En el hardware de las computadoras modernas, la CPU proporciona estas tres funciones.
y el hardware del controlador de interrupciones.

La mayoría de las CPU tienen dos líneas de solicitud de interrupción. Uno es el no enmascarable
interrupción, que está reservada para eventos como errores de memoria irrecuperables.
La segunda línea de interrupción es enmascarable: la CPU puede apagarla antes
la ejecución de secuencias de instrucciones críticas que no deben ser interrumpidas. El
La interrupción enmascarable es utilizada por los controladores de dispositivos para solicitar servicio.
Recuerde que el propósito de un mecanismo de interrupción vectorial es reducir el
necesidad de un solo controlador de interrupciones para buscar todas las posibles fuentes de interrupciones
para determinar cuál necesita el servicio. En la práctica, sin embargo, las computadoras tienen
más dispositivos (y, por lo tanto, controladores de interrupciones) que elementos de dirección tienen
en el vector de interrupción. Una forma común de resolver este problema es usar la interrupción
encadenamiento, en el que cada elemento en el vector de interrupción apunta a la cabeza de
una lista de controladores de interrupción. Cuando se lanza una interrupción, los manejadores en el
lista correspondiente son llamados uno por uno, hasta que se encuentra uno que puede dar servicio
la solicitud. Esta estructura es un compromiso entre la sobrecarga de un enorme
tabla de interrupciones y la ineficiencia de enviar a un solo controlador de interrupciones.
La Figura 1.5 ilustra el diseño del vector de interrupción para los procesadores Intel.
Los eventos del 0 al 31, que no son enmascarables, se utilizan para señalar varios
condiciones de error Los eventos del 32 al 255, que son enmascarables, se utilizan para
propósitos tales como interrupciones generadas por dispositivos.
El mecanismo de interrupción también implementa un sistema de prioridad de interrupción
niveles Estos niveles permiten a la CPU diferir el manejo de interconexiones de baja prioridad.

interrumpe sin enmascarar todas las interrupciones y hace posible una prioridad alta
interrupción para prevenir la ejecución de una interrupción de baja prioridad.
En resumen, las interrupciones se utilizan en todos los sistemas operativos modernos para
manejar eventos asincrónicos (y para otros propósitos que discutiremos a lo largo del texto). Los controladores
de dispositivos y las fallas de hardware provocan interrupciones. Para permitir
el trabajo más urgente que se debe hacer primero, las computadoras modernas usan un sistema de
interrumpir las prioridades. Debido a que las interrupciones se usan con tanta frecuencia para situaciones
sensibles al tiempo
procesamiento, se requiere un manejo eficiente de interrupciones para un buen rendimiento del sistema.
1.2.2 Estructura de almacenamiento
La CPU puede cargar instrucciones solo desde la memoria, por lo que cualquier programa debe
primero se cargará en la memoria para ejecutarse. Las computadoras de propósito general ejecutan la mayoría
de sus programas desde una memoria reescribible, llamada memoria principal (también llamada
memoria de acceso aleatorio o RAM). La memoria principal comúnmente se implementa en
una tecnología de semiconductores llamada memoria dinámica de acceso aleatorio (DRAM).
Las computadoras también usan otras formas de memoria. Por ejemplo, el primer programa que se ejecuta al
encender la computadora es un programa de arranque, que luego carga
El sistema operativo. Dado que la RAM es volátil, pierde su contenido cuando se enciende.
está apagado o perdido, no podemos confiar en él para mantener el programa de arranque. En su lugar, para este
y algunos otros propósitos, la computadora usa una memoria de solo lectura programable borrable
eléctricamente (EEPROM) y otras formas de
firmwar: almacenamiento en el que se escribe con poca frecuencia y que no es volátil. EEPROM
12 Capítulo 1 Introducción
DEFINICIONES Y NOTACIÓN DE ALMACENAMIENTO
La unidad básica de almacenamiento informático es el bit. Un bit puede contener uno de dos
valores, 0 y 1. Todo el resto del almacenamiento en una computadora se basa en colecciones de bits.
Dados suficientes bits, es asombroso cuántas cosas puede representar una computadora:
números, letras, imágenes, películas, sonidos, documentos y programas, por nombrar
unos pocos. Un byte son 8 bits, y en la mayoría de las computadoras es el más pequeño conveniente
trozo de almacenamiento. Por ejemplo, la mayoría de las computadoras no tienen una instrucción para
muévase un poco pero tenga uno para mover un byte. Un término menos común es palabra,
que es la unidad de datos nativa de una determinada arquitectura informática. se hace una palabra
de uno o más bytes. Por ejemplo, una computadora que tiene registros de 64 bits y
El direccionamiento de memoria de 64 bits normalmente tiene palabras de 64 bits (8 bytes). Un ordenador
ejecuta muchas operaciones en su tamaño de palabra nativo en lugar de un byte a la vez.
El almacenamiento informático, junto con la mayor parte del rendimiento informático, suele ser
medido y manipulado en bytes y colecciones de bytes. Un kilobyte, o
KB, es de 1.024 bytes; un megabyte, o MB, son 10242 bytes; un gigabyte, o GB, es
1,0243 octetos; un terabyte, o TB, son 10244 bytes; y un petabyte, o PB, es 1,0245
bytes Los fabricantes de computadoras a menudo redondean estos números y dicen que
un megabyte es 1 millón de bytes y un gigabyte es 1 billón de bytes. Redes
las medidas son una excepción a esta regla general; se dan en bits
(porque las redes mueven datos poco a poco).
se puede cambiar, pero no se puede cambiar con frecuencia. Además, es de baja velocidad,
por lo que contiene principalmente programas y datos estáticos que no se usan con frecuencia.
Por ejemplo, el iPhone usa EEPROM para almacenar números de serie y hardware.
información sobre el dispositivo.
Todas las formas de memoria proporcionan una matriz de bytes. Cada byte tiene su propio
habla a. La interacción se logra mediante una secuencia de instrucciones de carga o almacenamiento en
direcciones de memoria específicas. La instrucción de carga mueve un byte o palabra
desde la memoria principal a un registro interno dentro de la CPU, mientras que la tienda
La instrucción mueve el contenido de un registro a la memoria principal. Aparte de lo explícito
carga y almacena, la CPU carga automáticamente las instrucciones de la memoria principal
para la ejecución desde la ubicación almacenada en el contador del programa.
Un ciclo típico de instrucción-ejecución, tal como se ejecuta en un sistema con un von
arquitectura de Neumann, primero obtiene una instrucción de la memoria y la almacena
esa instrucción en el registro de instrucciones. Luego se decodifica la instrucción.
y puede hacer que los operandos se obtengan de la memoria y se almacenen en algún
registro interno. Una vez ejecutada la instrucción sobre los operandos, el
El resultado puede volver a almacenarse en la memoria. Observe que la unidad de memoria solo ve
un flujo de direcciones de memoria. No sabe cómo se generan (por
el contador de instrucciones, la indexación, el direccionamiento indirecto, las direcciones literales o algún otro
medios) o para qué sirven (instrucciones o datos). En consecuencia, podemos ignorar
cómo una dirección de memoria es generada por un programa. solo nos interesa
la secuencia de direcciones de memoria generada por el programa en ejecución.
Idealmente, queremos que los programas y los datos residan en la memoria principal de forma permanente. Este
arreglo generalmente no es posible en la mayoría de los sistemas para dos
razones:
1. La memoria principal suele ser demasiado pequeña para almacenar todos los programas y datos necesarios
permanentemente.
2. La memoria principal, como se mencionó, es volátil: pierde su contenido cuando se enciende.
se apaga o se pierde.
Por lo tanto, la mayoría de los sistemas informáticos proporcionan almacenamiento secundario como una
extensión de
memoria principal. El requisito principal para el almacenamiento secundario es que sea capaz de
mantener grandes cantidades de datos de forma permanente.
Los dispositivos de almacenamiento secundario más comunes son las unidades de disco duro (HDD)
y dispositivos de memoria no volátil (NVM), que proporcionan almacenamiento tanto para
programas y datos. La mayoría de los programas (sistema y aplicación) se almacenan en
almacenamiento secundario hasta que se carguen en la memoria. Muchos programas luego usan
almacenamiento secundario como origen y destino de su procesamiento.
El almacenamiento secundario también es mucho más lento que la memoria principal. Por lo tanto, la adecuada
la administración del almacenamiento secundario es de importancia central para un sistema de cómputo, como
se analiza en el capítulo 11.
Sin embargo, en un sentido más amplio, la estructura de almacenamiento que hemos descrito
—que consta de registros, memoria principal y almacenamiento secundario— es solo uno
de muchos posibles diseños de sistemas de almacenamiento. Otros componentes posibles incluyen
memoria caché, CD-ROM o blu-ray, cintas magnéticas, etc. los que son
lo suficientemente lento y lo suficientemente grande como para que se usen solo para fines especiales
— para almacenar copias de seguridad de material almacenado en otros dispositivos, por ejemplo—
se denominan almacenamiento terciario. Cada sistema de almacenamiento proporciona las funciones básicas
de almacenar un dato y mantener ese dato hasta que se recupere en un momento posterior.
Las principales diferencias entre los distintos sistemas de almacenamiento radican en la velocidad, el tamaño y
la
volatilidad.
La amplia variedad de sistemas de almacenamiento se puede organizar en una jerarquía (Figura
1.6) según capacidad de almacenamiento y tiempo de acceso. Como regla general, hay una

compensación entre tamaño y velocidad, con una memoria más pequeña y más rápida más cerca de la
UPC. Como se muestra en la figura, además de diferir en velocidad y capacidad, el
varios sistemas de almacenamiento son volátiles o no volátiles. Almacenamiento volátil, como
mencionado anteriormente, pierde su contenido cuando se desconecta la alimentación del dispositivo,
por lo tanto, los datos deben escribirse en un almacenamiento no volátil para su custodia.
Los cuatro niveles superiores de memoria de la figura se construyen con memoria de semiconductores, que
consta de circuitos electrónicos basados en semiconductores.
Los dispositivos NVM, en el cuarto nivel, tienen varias variantes pero en general son más rápidos
que los discos duros. La forma más común de dispositivo NVM es la memoria flash, que
es popular en dispositivos móviles como teléfonos inteligentes y tabletas. Cada vez más,
La memoria flash se utiliza para el almacenamiento a largo plazo en equipos portátiles, de escritorio y
servidores también.
Dado que el almacenamiento juega un papel importante en la estructura del sistema operativo,
se referirá a él con frecuencia en el texto. En general, utilizaremos los siguientes
terminología:
• El almacenamiento volátil se denominará simplemente memoria. Si necesitamos enfatizar un tipo particular de
dispositivo de almacenamiento (por ejemplo, un registro), lo haremos
tan explícitamente.
• El almacenamiento no volátil retiene su contenido cuando se pierde la energía. Será
denominado NVS. La gran mayoría del tiempo que dedicamos a NVS será
estar en almacenamiento secundario. Este tipo de almacenamiento se puede clasificar en dos
tipos distintos:
◦ Mecánica. Algunos ejemplos de este tipo de sistemas de almacenamiento son HDD, dispositivos ópticos
discos, almacenamiento holográfico y cinta magnética. Si tenemos que enfatizar
un tipo particular de dispositivo de almacenamiento mecánico (por ejemplo, magnético
tape), lo haremos de forma explícita.
◦ Eléctrico. Algunos ejemplos de estos sistemas de almacenamiento son la memoria flash,
FRAM, NRAM y SSD. El almacenamiento eléctrico se denominará NVM. Si
necesitamos enfatizar un tipo particular de dispositivo de almacenamiento eléctrico (por
ejemplo, SSD), lo haremos de forma explícita.
El almacenamiento mecánico es generalmente más grande y menos costoso por byte que
almacenamiento eléctrico. Por el contrario, el almacenamiento eléctrico suele ser costoso, más pequeño,
y más rápido que el almacenamiento mecánico.
El diseño de un sistema de almacenamiento completo debe equilibrar todos los factores
discutido: debe usar solo tanta memoria costosa como sea necesario mientras
proporcionando tanto almacenamiento económico y no volátil como sea posible. Los cachés pueden
ser instalado para mejorar el rendimiento donde una gran disparidad en el tiempo de acceso o
tasa de transferencia existe entre dos componentes.
1.2.3 Estructura de E/S
Una gran parte del código del sistema operativo está dedicada a la gestión de E/S, tanto
debido a su importancia para la confiabilidad y el rendimiento de un sistema y
debido a la naturaleza variable de los dispositivos.
Recuerde desde el comienzo de esta sección que una computadora de propósito general
El sistema consta de múltiples dispositivos, todos los cuales intercambian datos a través de un común
autobús. La forma de E/S impulsada por interrupciones descrita en la Sección 1.2.1 está bien para
mover pequeñas cantidades de datos, pero puede producir una gran sobrecarga cuando se utiliza para
movimiento masivo de datos como NVS I/O. Para resolver este problema, la memoria directa
se utiliza el acceso (DMA). Después de configurar búferes, punteros y contadores para el
dispositivo de E/S, el controlador de dispositivo transfiere un bloque completo de datos directamente a
o desde el dispositivo y la memoria principal, sin intervención de la CPU. Solo
se genera una interrupción por bloque, para decirle al controlador del dispositivo que la operación
se ha completado, en lugar de la única interrupción por byte generada para baja velocidad
dispositivos. Mientras el controlador de dispositivo está realizando estas operaciones, la CPU está
disponible para realizar otros trabajos.
Algunos sistemas de gama alta utilizan una arquitectura de conmutador en lugar de bus. En estos
sistemas, varios componentes pueden hablar con otros componentes al mismo tiempo,
en lugar de competir por bicicletas en un autobús compartido. En este caso, DMA es incluso
más efectivo. La Figura 1.7 muestra la interacción de todos los componentes de una computadora
sistema.
1.3 Arquitectura del sistema informático
En la Sección 1.2, presentamos la estructura general de un sistema informático típico. Un sistema informático se
puede organizar de diferentes maneras,
que podemos categorizar aproximadamente de acuerdo con el número de propósitos generales
procesadores utilizados.
1.3.1 Sistemas de un solo procesador
Hace muchos años, la mayoría de los sistemas informáticos utilizaban un solo procesador que contenía
una CPU con un solo núcleo de procesamiento. El núcleo es el componente que ejecuta instrucciones y registros
para almacenar datos localmente. La única CPU principal con
su núcleo es capaz de ejecutar un conjunto de instrucciones de propósito general, incluyendo
instrucciones de los procesos. Estos sistemas tienen otros procesos de propósito especial.
16 Capítulo 1 Introducción
también. Pueden venir en forma de procesadores específicos del dispositivo, como
controladores de disco, teclado y gráficos.
Todos estos procesadores de propósito especial ejecutan un conjunto de instrucciones limitado y
no ejecutar procesos. A veces, son administrados por el sistema operativo,
en que el sistema operativo les envía información sobre su próxima tarea y
supervisa su estado. Por ejemplo, un microprocesador controlador de disco recibe
una secuencia de solicitudes del núcleo principal de la CPU e implementa su propio disco
cola y algoritmo de programación. Este arreglo libera a la CPU principal de
la sobrecarga de la programación del disco. Las PC contienen un microprocesador en el teclado
para convertir las pulsaciones de teclas en códigos que se enviarán a la CPU. En otros sistemas o
circunstancias, los procesadores de propósito especial son componentes de bajo nivel integrados en
el hardware El sistema operativo no puede comunicarse con estos procesadores; hacen su trabajo de forma
autónoma. El uso de microprocesadores de propósito especial es común y no convierte un sistema de un solo
procesador en un multiprocesador. Si solo hay una CPU de propósito general con un solo núcleo de
procesamiento, entonces
el sistema es un sistema de un solo procesador. De acuerdo con esta definición, sin embargo,
muy pocos sistemas informáticos contemporáneos son sistemas de un solo procesador.
Además, no tenemos una definición universalmente aceptada de lo que es parte de
El sistema operativo. Un punto de vista simple es que incluye todo lo que envía un proveedor cuando solicita
"el sistema operativo". Sin embargo, las características incluidas varían mucho entre los sistemas. Algunos
sistemas ocupan menos de un megabyte
de espacio y carecen incluso de un editor de pantalla completa, mientras que otros requieren gigabytes
de espacio y se basan enteramente en sistemas de ventanas gráficas. Una definición más común, y la que
solemos seguir, es que el sistema operativo
es el único programa que se ejecuta en todo momento en la computadora, generalmente llamado el
núcleo. Junto con el kernel, existen otros dos tipos de programas: system
programas, que están asociados con el sistema operativo pero no son necesariamente parte del kernel, y
programas de aplicación, que incluyen todos los programas
no asociado con el funcionamiento del sistema.
La cuestión de qué constituye un sistema operativo se volvió cada vez más
importante a medida que las computadoras personales se generalizaban y los sistemas operativos se volvían
cada vez más sofisticados. En 1998, el Departamento de Estado de los Estados Unidos
Justice presentó una demanda contra Microsoft, en esencia alegando que Microsoft incluyó
demasiada funcionalidad en sus sistemas operativos y, por lo tanto, impidió la aplicación
proveedores de la competencia. (Por ejemplo, un navegador web era una parte integral de
sistemas operativos de Microsoft). Como resultado, Microsoft fue declarado culpable de usar
su monopolio del sistema operativo para limitar la competencia.
Hoy, sin embargo, si nos fijamos en los sistemas operativos para dispositivos móviles,
ver que una vez más el número de características que constituyen el sistema operativo
esta incrementando. Los sistemas operativos móviles a menudo incluyen no solo un núcleo central
sino también middleware, un conjunto de marcos de software que proporcionan
servicios a los desarrolladores de aplicaciones. Por ejemplo, cada uno de los dos sistemas operativos móviles
más destacados, iOS de Apple y Android de Google, presenta
¿POR QUÉ ESTUDIAR SISTEMAS OPERATIVOS?
Aunque hay muchos practicantes de la informática, solo un pequeño porcentaje de ellos estará involucrado en la
creación o modificación de un sistema operativo. ¿Por qué, entonces, estudiar los sistemas operativos y cómo
funcionan? Simplemente
porque, como casi todo el código se ejecuta sobre un sistema operativo, el conocimiento
de cómo funcionan los sistemas operativos es crucial para una adecuada, eficiente, eficaz y
programación segura. Entender los fundamentos de los sistemas operativos,
cómo manejan el hardware de la computadora y qué proporcionan a las aplicaciones es
no sólo esenciales para quienes los programan, sino también muy útiles para quienes
que escriben programas en ellos y los usan.
1.2 Organización del sistema informático 7
un kernel central junto con middleware que admite bases de datos, multimedia y
gráficos (por nombrar sólo algunos).
En resumen, para nuestros propósitos, el sistema operativo incluye el núcleo siempre en ejecución, marcos de
trabajo de middleware que facilitan el desarrollo de aplicaciones.
y proporcionar funciones y programas del sistema que ayuden a administrar el sistema
mientras se está ejecutando. La mayor parte de este texto se ocupa del núcleo de los sistemas operativos de
propósito general, pero se analizan otros componentes según sea necesario para
explicar completamente el diseño y la operación del sistema operativo
1.3.2 Sistemas multiprocesador
En las computadoras modernas, desde dispositivos móviles hasta servidores, los sistemas multiprocesador ahora
dominan el panorama de la informática. Tradicionalmente, estos sistemas
tienen dos (o más) procesadores, cada uno con una CPU de un solo núcleo. Los procesadores comparten el bus
de la computadora y, a veces, el reloj, la memoria y los dispositivos periféricos. La principal ventaja de los
sistemas multiprocesador se incrementa
rendimiento Es decir, al aumentar el número de procesadores, esperamos obtener
más trabajo hecho en menos tiempo. La relación de aceleración con N procesadores no es N,
sin embargo; es menor que N. Cuando múltiples procesadores cooperan en una tarea, se incurre en una cierta
cantidad de gastos generales para mantener todas las partes funcionando correctamente.
Esta sobrecarga, más la competencia por los recursos compartidos, reduce la ganancia esperada
de procesadores adicionales.
Los sistemas de multiprocesador más comunes utilizan el multiprocesamiento simétrico (SMP), en el que cada
procesador de CPU del mismo nivel realiza todas las tareas, incluidas
funciones del sistema operativo y procesos de usuario. La Figura 1.8 ilustra un típico
Arquitectura SMP con dos procesadores, cada uno con su propia CPU. Note que cada
El procesador de la CPU tiene su propio conjunto de registros, así como un registro privado o local.
cache. Sin embargo, todos los procesadores comparten memoria física a través del bus del sistema.
El beneficio de este modelo es que muchos procesos pueden ejecutarse simultáneamente
—Pueden ejecutarse N procesos si hay N CPU—sin afectar el rendimiento
a deteriorarse significativamente. Sin embargo, dado que las CPU están separadas, uno puede
estar inactivo mientras otro está sobrecargado, lo que resulta en ineficiencias. Estos
las ineficiencias se pueden evitar si los procesadores comparten ciertas estructuras de datos. A
El sistema multiprocesador de esta forma permitirá procesos y recursos, tales
como memoria, para ser compartida dinámicamente entre los diversos procesadores y puede
reducir la variación de la carga de trabajo entre los procesadores. Tal sistema debe ser
cuidadosamente, como veremos en el Capítulo 5 y el Capítulo 6.
La definición de multiprocesador ha evolucionado con el tiempo y ahora incluye
sistemas multinúcleo, en los que múltiples núcleos informáticos residen en un solo chip.
Los sistemas multinúcleo pueden ser más eficientes que múltiples chips con un solo núcleo
porque la comunicación en el chip es más rápida que la comunicación entre chips.
1.3 Arquitecto de sistemas informáticos
Organización del sistema informático
Un sistema informático moderno de propósito general consta de una o más CPU y
una serie de controladores de dispositivos conectados a través de un bus común que proporciona
acceso entre componentes y memoria compartida (Figura 1.2). cada dispositivo
controlador está a cargo de un tipo específico de dispositivo (por ejemplo, una unidad de disco,
dispositivo de audio o pantalla gráfica). Dependiendo del controlador, más de uno
el dispositivo puede estar conectado. Por ejemplo, un puerto USB del sistema puede conectarse a un
Concentrador USB, al que se pueden conectar varios dispositivos. Un controlador de dispositivo mantiene
algo de almacenamiento de búfer local y un conjunto de registros de propósito especial. El dispositivo
controlador es responsable de mover los datos entre los dispositivos periféricos
que controla y su almacenamiento de búfer local.
Normalmente, los sistemas operativos tienen un controlador de dispositivo para cada controlador de dispositivo.
Este controlador de dispositivo comprende el controlador de dispositivo y proporciona la
resto del sistema operativo con una interfaz uniforme para el dispositivo. la cpu y
los controladores de dispositivos pueden ejecutarse en paralelo, compitiendo por los ciclos de memoria. A
garantizar el acceso ordenado a la memoria compartida, un controlador de memoria sincroniza
acceso a la memoria.
En las siguientes subsecciones, describimos algunos conceptos básicos de cómo un sistema de este tipo
opera, centrándose en tres aspectos clave del sistema. Empezamos con interrupciones,
que alertan a la CPU sobre eventos que requieren atención. Luego hablamos de almacenamiento
estructura y estructura de E/S.

Además, un chip con múltiples núcleos usa significativamente menos energía que
Múltiples chips de un solo núcleo, un problema importante para los dispositivos móviles, así como
computadoras portátiles
En la Figura 1.9, mostramos un diseño de doble núcleo con dos núcleos en el mismo chip de procesador. En
este diseño, cada núcleo tiene su propio conjunto de registros, así como su propio
caché local, a menudo conocida como caché de nivel 1 o L1. Note, también, que un nivel 2 (L2)
el caché es local para el chip pero lo comparten los dos núcleos de procesamiento. La mayoría de las
arquitecturas adoptan este enfoque, combinando cachés locales y compartidos, donde local,
los cachés de nivel inferior son generalmente más pequeños y más rápidos que los cachés compartidos de nivel
superior
DEFINICIONES DE LOS COMPONENTES DEL SISTEMA INFORMÁTICO
• CPU: el hardware que ejecuta las instrucciones.
• Procesador: un chip físico que contiene una o más CPU.
• Núcleo: la unidad de cálculo básica de la CPU.
• Multinúcleo: incluye varios núcleos informáticos en la misma CPU.
• Multiprocesador: incluidos varios procesadores.
Aunque prácticamente todos los sistemas ahora son multinúcleo, usamos el término general
CPU cuando se refiere a una sola unidad computacional de un sistema informático y
núcleo y multinúcleo cuando se refiere específicamente a uno o más núcleos en
una CPU
cachés Aparte de las consideraciones arquitectónicas, como caché, memoria y
contención de bus, un procesador multinúcleo con N núcleos aparece en el sistema operativo como N CPU
estándar. Esta característica ejerce presión sobre el sistema operativo
diseñadores, y programadores de aplicaciones, para hacer un uso eficiente de estos núcleos de procesamiento,
un tema que abordamos en el Capítulo 4. Prácticamente todos los sistemas operativos modernos
sistemas, incluidos Windows, macOS y Linux, así como Android e iOS
sistemas móviles: admite sistemas SMP multinúcleo.
Agregar CPU adicionales a un sistema multiprocesador aumentará la potencia informática; sin embargo, como
se sugirió anteriormente, el concepto no escala muy bien,
y una vez que agregamos demasiadas CPU, la contienda por el bus del sistema se convierte en un problema.
cuello de botella y el rendimiento comienza a degradarse. Un enfoque alternativo es
en lugar de proporcionar a cada CPU (o grupo de CPU) su propia memoria local
al que se accede a través de un pequeño y rápido autobús local. Las CPU están conectadas por un compartido
interconexión del sistema, de modo que todas las CPU comparten un espacio de direcciones físicas. Esta
enfoque, conocido como acceso a memoria no uniforme, o NUMA, se ilustra
en la figura 1.10. La ventaja es que, cuando una CPU accede a su memoria local,
no solo es rápido, sino que tampoco hay disputas sobre la interconexión del sistema.
Por lo tanto, los sistemas NUMA pueden escalar de manera más efectiva a medida que se agregan más
procesadores.
Un inconveniente potencial con un sistema NUMA es una mayor latencia cuando una CPU
debe acceder a la memoria remota a través de la interconexión del sistema, creando una posible
penalización de rendimiento. En otras palabras, por ejemplo, la CPU0 no puede acceder al local
memoria de CPU3 tan rápido como puede acceder a su propia memoria local, ralentizando
rendimiento. Los sistemas operativos pueden minimizar esta penalización NUMA a través de
planificación cuidadosa de la CPU y administración de la memoria, como se explica en la Sección 5.5.2
y la Sección 10.5.4. Debido a que los sistemas NUMA pueden escalar para adaptarse a una gran
número de procesadores, se están volviendo cada vez más populares en los servidores como
así como sistemas informáticos de alto rendimiento.
Por último, los servidores blade son sistemas en los que varias tarjetas de procesador, E/S
las placas y las placas de red se colocan en el mismo chasis. La diferencia entre estos y los sistemas
multiprocesadores tradicionales es que cada placa de procesador blade se inicia de forma independiente y
ejecuta su propio sistema operativo. Algunos
Las placas de servidor blade también son multiprocesador, lo que difumina las líneas entre
tipos de computadoras. En esencia, estos servidores constan de múltiples independientes
sistemas multiprocesador.
1.3.3 Sistemas agrupados
Otro tipo de sistema multiprocesador es un sistema en clúster, que reúne varias CPU. Los sistemas agrupados
difieren del multiprocesador
sistemas descritos en la Sección 1.3.2 en que están compuestos de dos o más
sistemas individuales, o nodos, unidos entre sí; cada nodo suele ser un sistema multinúcleo. Dichos sistemas se
consideran débilmente acoplados. debemos notar
que la definición de agrupado no es concreta; muchos paquetes comerciales y de código abierto luchan para
definir qué es un sistema en clúster y por qué uno
forma es mejor que otra. La definición generalmente aceptada es que agrupados
las computadoras comparten almacenamiento y están estrechamente vinculadas a través de una red de área local
LAN
(como se describe en el Capítulo 19) o una interconexión más rápida, como InfiniBand.
El agrupamiento generalmente se usa para proporcionar un servicio de alta disponibilidad, es decir,
servicio que continuará incluso si uno o más sistemas en el clúster fallan.
Generalmente, obtenemos alta disponibilidad agregando un nivel de redundancia en el
sistema. Una capa de software de clúster se ejecuta en los nodos del clúster. Cada nodo puede
monitorear uno o más de los otros (a través de la red). Si la máquina monitoreada
falla, la máquina de monitoreo puede tomar posesión de su almacenamiento y reiniciar el
aplicaciones que se estaban ejecutando en la máquina fallida. Los usuarios y clientes de
las aplicaciones solo ven una breve interrupción del servicio.
La alta disponibilidad proporciona una mayor confiabilidad, lo cual es crucial en muchos
aplicaciones La capacidad de continuar brindando un servicio proporcional al nivel
del hardware superviviente se denomina degradación elegante. Algunos sistemas van más allá
degradación elegante y se denominan tolerantes a fallas, porque pueden sufrir una
falla de cualquier componente individual y aún así continuar la operación. Tolerancia a fallos
requiere un mecanismo que permita detectar, diagnosticar y, si
posible, corregido.
El agrupamiento se puede estructurar de forma asimétrica o simétrica. En el agrupamiento asimétrico, una
máquina está en modo de espera activa mientras que la otra ejecuta las aplicaciones. La máquina host de espera
activa no hace nada más que monitorear
el servidor activo. Si ese servidor falla, el host de espera activa se convierte en el activo
Esta placa es una computadora en pleno funcionamiento, una vez que se llenan sus ranuras.
Consiste en un zócalo de procesador que contiene una CPU, zócalos DRAM, bus PCIe
ranuras y conectores de E/S de varios tipos. Incluso la CPU de propósito general de menor costo contiene
múltiples núcleos. Algunas placas madre contienen múltiples
zócalos del procesador. Las computadoras más avanzadas permiten más de un sistema
tablero, creando sistemas NUMA

servidor. En el agrupamiento simétrico, dos o más hosts ejecutan aplicaciones


y se están monitoreando unos a otros. Esta estructura es obviamente más eficiente, ya que
utiliza todo el hardware disponible. Sin embargo, requiere que más de una
aplicación esté disponible para ejecutarse.
Dado que un clúster consta de varios sistemas informáticos conectados a través de una red, los clústeres también
se pueden utilizar para proporcionar entornos informáticos de alto rendimiento. Dichos sistemas pueden
suministrar una potencia computacional significativamente mayor
que los sistemas de un solo procesador o incluso SMP porque pueden ejecutar una aplicación
simultáneamente en todos los equipos del clúster. La aplicación debe haber sido
escrito específicamente para aprovechar el clúster, sin embargo. Esto implica un
técnica conocida como paralelización, que divide un programa en partes separadas
componentes que se ejecutan en paralelo en núcleos individuales en una computadora o computadoras en un
clúster. Por lo general, estas aplicaciones están diseñadas para que una vez cada
nodo informático en el clúster ha resuelto su parte del problema, los resultados
de todos los nodos se combinan en una solución final.
Otras formas de clusters incluyen clusters paralelos y clustering sobre un
red de área amplia (WAN) (como se describe en el Capítulo 19). Los clústeres paralelos permiten
varios hosts para acceder a los mismos datos en el almacenamiento compartido. Porque la mayoría de las
operaciones
Los sistemas operativos carecen de soporte para el acceso simultáneo de datos por múltiples hosts,
Los clústeres paralelos generalmente requieren el uso de versiones especiales de software y
lanzamientos especiales de aplicaciones. Por ejemplo, Oracle Real Application Cluster
es una versión de la base de datos de Oracle que ha sido diseñada para ejecutarse en paralelo
grupo. Cada máquina ejecuta Oracle y una capa de software rastrea el acceso a la
disco compartido. Cada máquina tiene acceso total a todos los datos de la base de datos. Para proveer
este acceso compartido, el sistema también debe proporcionar control de acceso y bloqueo para
Asegúrese de que no se produzcan operaciones conflictivas. Esta función, comúnmente conocida
como administrador de bloqueo distribuido (DLM), se incluye en algunas tecnologías de clúster.
La tecnología de clústeres está cambiando rápidamente. Algunos productos de clúster son compatibles
miles de sistemas en un clúster, así como nodos agrupados que están separados
por millas Muchas de estas mejoras son posibles gracias al área de almacenamiento
(SAN), como se describe en la Sección 11.7.4, que permite que muchos sistemas
para adjuntar a un grupo de almacenamiento. Si las aplicaciones y sus datos se almacenan en
SAN, el software del clúster puede asignar la aplicación para que se ejecute en cualquier
host que está conectado a la SAN. Si el host falla, cualquier otro host puede tomar
encima. En un clúster de base de datos, docenas de hosts pueden compartir la misma base de datos, en gran
medida
aumentando el rendimiento y la fiabilidad. La Figura 1.11 muestra la estructura general
Operaciones del sistema operativo
Ahora que hemos analizado la información básica sobre la organización y la arquitectura de los sistemas
informáticos, estamos listos para hablar sobre los sistemas operativos. Un sistema operativo proporciona el
entorno dentro del cual se ejecutan los programas.
Internamente, los sistemas operativos varían mucho, ya que están organizados a lo largo de muchos
lineas diferentes Sin embargo, hay muchos puntos en común, que consideramos en
esta sección.
Para que una computadora comience a funcionar, por ejemplo, cuando se enciende
o reiniciado, necesita tener un programa inicial para ejecutarse. Como se menciono anteriormente,
este programa inicial, o programa de arranque, tiende a ser simple. Típicamente, es
almacenado dentro del hardware de la computadora en el firmware. Inicializa todos los aspectos de
el sistema, desde los registros de la CPU hasta los controladores de dispositivos y el contenido de la memoria.
El
programa de arranque debe saber cómo cargar el sistema operativo y cómo
22 Capítulo 1 Introducción
HADOOP
Hadoop es un marco de software de código abierto que se utiliza para distribución
procesamiento de grandes conjuntos de datos (conocidos como big data) en un sistema agrupado que contiene
componentes de hardware simples y de bajo costo. Hadoop está diseñado para escalar
desde un solo sistema hasta un clúster que contiene miles de nodos informáticos.
Las tareas se asignan a un nodo en el clúster y Hadoop organiza la comunicación entre los nodos para
administrar los cálculos paralelos para procesar y fusionar
resultados Hadoop también detecta y gestiona fallas en los nodos, proporcionando una
servicio de computación distribuida eficiente y altamente confiable.
Hadoop está organizado en torno a los siguientes tres componentes:
1. Un sistema de archivos distribuido que administra datos y archivos a través de nodos informáticos
distribuidos.
2. El marco YARN (“Yet Another Resource Negotiator”), que gestiona
recursos dentro del clúster, así como la programación de tareas en los nodos en el
grupo.
3. El sistema MapReduce, que permite el procesamiento paralelo de datos en
nodos en el clúster.
Hadoop está diseñado para ejecutarse en sistemas Linux y aplicaciones Hadoop
se puede escribir usando varios lenguajes de programación, incluyendo secuencias de comandos
lenguajes como PHP, Perl y Python. Java es una opción popular para
desarrollar aplicaciones Hadoop, ya que Hadoop tiene varias bibliotecas Java que
admite MapReduce. Más información sobre MapReduce y Hadoop puede
se encuentra en https://hadoop.apache.org/docs/r1.2.1/mapred tutorial.html
y https://hadoop.apache.org
empezar a ejecutar ese sistema. Para lograr este objetivo, el programa bootstrap
debe ubicar el núcleo del sistema operativo y cargarlo en la memoria.
Una vez que el kernel está cargado y ejecutándose, puede comenzar a proporcionar servicios a
el sistema y sus usuarios. Algunos servicios son proporcionados fuera del núcleo por
programas del sistema que se cargan en la memoria en el momento del arranque para convertirse en sistema
demonios, que se ejecutan todo el tiempo que se ejecuta el núcleo. En Linux, la primera
El programa del sistema es "systemd", e inicia muchos otros demonios. Una vez esto
la fase está completa, el sistema está completamente iniciado y el sistema espera algunos
evento a ocurrir.
Si no hay procesos para ejecutar, no hay dispositivos de E/S para dar servicio y no hay usuarios
a quién responder, un sistema operativo se sentará en silencio, esperando algo
suceder Los eventos casi siempre son señalados por la ocurrencia de una interrupción.
En la Sección 1.2.1 describimos las interrupciones de hardware. Otra forma de interrupción es
una trampa (o una excepción), que es una interrupción generada por software causada
por un error (por ejemplo, división por cero o acceso a memoria inválido) o por
una solicitud específica de un programa de usuario para que un servicio del sistema operativo sea
se realiza mediante la ejecución de una operación especial llamada llamada al sistema.
1.4 Operaciones del sistema operativo 23
1.4.1 Multiprogramación y Multitarea
Uno de los aspectos más importantes de los sistemas operativos es la capacidad de ejecutar
múltiples programas, ya que un solo programa no puede, en general, mantener la CPU
o los dispositivos de E/S ocupados en todo momento. Además, los usuarios normalmente quieren ejecutar
más de un programa a la vez también. La multiprogramación aumenta la CPU
utilización, así como mantener a los usuarios satisfechos, mediante la organización de programas para que
la CPU siempre tiene uno para ejecutar. En un sistema multiprogramado, un programa
en ejecución se denomina proceso.
La idea es la siguiente: El sistema operativo mantiene varios procesos en
memoria simultáneamente (Figura 1.12). El sistema operativo selecciona y comienza
para ejecutar uno de estos procesos. Eventualmente, el proceso puede tener que esperar hasta
alguna tarea, como una operación de E/S, para completar. En un no multiprogramado
sistema, la CPU permanecería inactiva. En un sistema multiprogramado, el operador
el sistema simplemente cambia y ejecuta otro proceso. Cuando ese proceso
necesita esperar, la CPU cambia a otro proceso, y así sucesivamente. Eventualmente, el
el primer proceso termina de esperar y recupera la CPU. Siempre que al menos uno
el proceso necesita ejecutarse, la CPU nunca está inactiva.
Esta idea es común en otras situaciones de la vida. Un abogado no trabaja para
solo un cliente a la vez, por ejemplo. Mientras un caso está esperando para ir a juicio
o tiene papeles mecanografiados, el abogado puede trabajar en otro caso. si ella tiene suficiente
clientes, el abogado nunca estará ocioso por falta de trabajo. (Los abogados ociosos tienden a
convertirse en políticos, por lo que hay un cierto valor social en mantener ocupados a los abogados.)
La multitarea es una extensión lógica de la multiprogramación. en multitarea
sistemas, la CPU ejecuta múltiples procesos cambiando entre ellos, pero
los cambios ocurren con frecuencia, proporcionando al usuario un tiempo de respuesta rápido.
Tenga en cuenta que cuando se ejecuta un proceso, por lo general se ejecuta solo por un breve
tiempo antes de que finalice o necesite realizar operaciones de E/S. La E/S puede ser interactiva;
es decir, la salida va a una pantalla para el usuario y la entrada proviene de un usuario
teclado, ratón o pantalla táctil. Dado que la E/S interactiva generalmente se ejecuta a "velocidades de personas",
puede llevar mucho tiempo completarla. La entrada, por ejemplo, puede ser
Más información sobre este texto de origenPara obtener más información sobre la traducción, se necesita el
texto de origen
Enviar comentarios
Paneles laterales

También podría gustarte