Está en la página 1de 19

Integrantes

Bardales Orbegoso Giancarlo


Carhuas Bastidas Jesús
Caycho Alejos Jair
Corales Solano Elohim

Capítulo 1: Introducción
1.1 Que hacen los sistemas operativos
Empezamos analizando la función del sistema operativo en el sistema informático
general. Un sistema operativo se puede dividir aproximadamente en cuatro
componentes: el hardware, el sistema operativo, programas de aplicación y los
usuarios. El hardware es la unidad central de procesamiento (CPU), la memoria y
dispositivos de entrada y salida. Además, proporciona los recursos informáticos
básicos para el sistema. Mientras que el Sistema operativo controla el hardware y
coordina su uso entre diversos programas de aplicación para distintos usuarios.
Proporciona medios para el uso adecuado de estos recursos en el funcionamiento
del sistema informático
1.1.1 Vista de usuario

La vista del usuario de la computadora varía según como lo esté utilizando. La


mayoría de los usuarios de computadoras se sientan frente a una PC, que
consiste en un monitor, teclado, mouse y unidad del sistema. Tal sistema esta
diseñado para facilitar su uso, prestando cierta atención al rendimiento y no a la
utilización de los recursos, por lo que se comparten diversos recursos de hardware
y software. Este rendimiento es, por supuesto, importante para el usuario; pero
tales sistemas están optimizados para la experiencia de un solo un usuario en
lugar de los requisitos de múltiples usuarios.
1.1.2 Vista del sistema

En un cierto punto de vista el sistema operativo es el programa más íntimamente


relacionado 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, etc. El sistema operativo actúa como el administrador de estos recursos.
Al enfrentarse a numerosas y posiblemente conflictivas solicitudes de recursos, el
sistema operativo debe decidir cómo asignarlos a programas y usuarios
específicos para que pueda operar el sistema informático de manera eficiente y
justa
1.1.3 Definiendo sistemas operativos

¿Cómo podemos definir qué es un sistema operativo? En general, no tenemos


una definición completamente adecuada de un sistema operativo. Los sistemas
operativos existen porque ofrecen una manera razonable de resolver el problema
de crear un sistema informático utilizable. El objetivo fundamental de los sistemas
informáticos es ejecutar programas de usuario y facilitar la resolución de
problemas de los usuarios. El hardware de la computadora está construido hacia
este objetivo. Dado que el hardware simple por sí solo no es particularmente fácil
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 se agrupan en una
sola pieza de software: el sistema operativo.

1.2 Organización del sistema informático


Antes de que podamos explorar los detalles de cómo funcionan los sistemas
informáticos, necesitamos un conocimiento general de la estructura de un sistema
informático. En esta sección, nos fijamos en varias partes de esta estructura. La
sección se ocupa principalmente de la organización del sistema informático, por lo
que puede hojearlo o saltearlo si ya entiende los conceptos.
1.2.1 Operación del sistema informático

Un sistema informático moderno de uso general consta de una o más CPU y


varios controladores de dispositivos conectados a través de un bus común que
proporciona acceso a la memoria compartida. Cada controlador de dispositivo está
a cargo de un tipo específico de dispositivo (por ejemplo, unidades de disco,
dispositivos de audio o pantallas de video). La CPU y los controladores de
dispositivos pueden ejecutarse en paralelo, compitiendo por ciclos de memoria.
Para garantizar un acceso ordenado a la memoria compartida, un controlador de
memoria sincroniza el acceso a la memoria.
Para que una computadora comience a funcionar.
1.2.2 Estructura de almacenamiento

La CPU puede cargar instrucciones solo desde la memoria, por lo que cualquier
programa que se ejecute debe estar almacenado allí. Las computadoras de
propósito general ejecutan la mayoría de sus programas desde la memoria
regrabable, 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. Ya hemos
mencionado memoria de solo lectura, ROM) y memoria de solo lectura
programable y borrable eléctricamente, EEPROM). Debido a que la ROM no se
puede cambiar, solo los programas estáticos, como el programa bootstrap descrito
anteriormente, se almacenan allí. La inmutabilidad de la ROM es de uso en
cartuchos de juegos. La EEPROM se puede cambiar, pero no se puede cambiar
con frecuencia y, por lo tanto, contiene principalmente programas estáticos. Por
ejemplo, los teléfonos inteligentes tienen EEPROM para almacenar sus programas
instalados de fábrica.
1.2.3 I/O Estructura

El almacenamiento es solo uno de los muchos tipos de dispositivos de E / S dentro


de una computadora. Una gran parte del código del sistema operativo se dedica a
administrar la E / S, tanto por su importancia para la confiabilidad y el rendimiento
de un sistema como por la naturaleza variable de los dispositivos. Un sistema
informático de propósito general consta de CPU y varios controladores de
dispositivos que están conectados a través de un bus común. Cada controlador de
dispositivo está a cargo de un tipo específico de dispositivo. Dependiendo del
controlador, se puede conectar más de un dispositivo. Un controlador de
dispositivo mantiene algunos almacenamientos intermedios locales y un conjunto
de registros de propósito especial. El controlador del dispositivo es responsable de
mover los datos entre los dispositivos periféricos que controla y su
almacenamiento intermedio local. Normalmente, los sistemas operativos tienen un
controlador de dispositivo para cada controlador de dispositivo. Este controlador
de dispositivo entiende el controlador del dispositivo y proporciona al resto del
sistema operativo una interfaz uniforme con el dispositivo.

1.3 Arquitectura del sistema informático


1.3.1 Sistemas de un solo procesador

Hasta hace poco, la mayoría de los sistemas informáticos utilizaban un solo


procesador. En un sistema de un solo procesador, hay una CPU principal capaz
de ejecutar un conjunto de instrucciones de propósito general, incluidas las
instrucciones de los procesos del usuario. Casi todos los sistemas de un solo
procesador también tienen otros procesadores de propósito especial. Pueden
venir en forma de procesadores específicos del dispositivo, como controladores de
disco, teclado y gráficos; o, en mainframes, pueden venir en forma de
procesadores de propósito más general, como los procesadores de E / S que
mueven datos rápidamente entre los componentes del sistema. Todos estos
procesadores de propósito especial ejecutan un conjunto de instrucciones limitado
y no ejecutan procesos de usuario. Esta disposición alivia a la CPU principal de la
sobrecarga de la programación de discos. Las PC contienen un microprocesador
en el teclado para convertir las pulsaciones en códigos que se enviarán a la CPU.
En otros sistemas o circunstancias, los procesadores especiales son componentes
de bajo nivel integrados en el hardware. El sistema operativo no puede
comunicarse con estos procesadores; Ellos hacen su trabajo de manera
autónoma. El uso de microprocesadores para fines especiales es común y no
convierte un sistema de procesador único en un multiprocesador. Si solo hay una
CPU de propósito general, entonces el sistema es un sistema de un solo
procesador.
1.3.2 Sistemas multiprocesador

En los últimos años, los sistemas multiprocesador (también conocidos como


sistemas paralelos o sistemas multinúcleo) han comenzado a dominar el
panorama de la informática. Tales sistemas tienen dos o más procesadores en
comunicación cercana, compartiendo el bus de la computadora y, a veces, el reloj,
la memoria y los dispositivos periféricos. Los sistemas multiprocesador
aparecieron por primera vez prominentemente en servidores y desde entonces
han migrado a sistemas de escritorio y portátiles. Recientemente, múltiples
procesadores han aparecido en dispositivos móviles como teléfonos inteligentes y
tabletas.
1.3.3 Sistemas agrupados

Otro tipo de sistema multiprocesador es un sistema agrupado, que reúne múltiples


CPU. Los sistemas agrupados se diferencian de los sistemas multiprocesador en
que están compuestos por dos o más sistemas individuales (o nodos) unidos.
Tales sistemas se consideran débilmente acoplados. Cada nodo puede ser un
sistema de procesador único o un sistema multinúcleo. Debemos tener en cuenta
que la definición de agrupado no es concreta; muchos paquetes comerciales
luchan para definir un sistema agrupado y por qué una forma es mejor que otra. La
definición generalmente aceptada es que las computadoras agrupadas comparten
almacenamiento y están estrechamente conectadas a través de una red de área
local LAN o una interconexión más rápida.

1.4 Estructura del sistema informático


Un sistema operativo proporciona el entorno en el que se ejecutan los programas.
Internamente, los sistemas operativos varían mucho en su composición, ya que
están organizados en diferentes líneas. Sin embargo, existen muchos puntos en
común que consideramos en esta sección.
Uno de los aspectos más importantes de los sistemas operativos es la capacidad
de multiprograma. Un solo programa no puede, en general, mantener la CPU o los
dispositivos de E / S ocupados en todo momento. Los usuarios individuales con
frecuencia tienen múltiples programas en ejecución. La multiprogramación
aumenta la utilización de la CPU al organizar trabajos (código y datos) para que la
CPU siempre tenga uno para ejecutar.
El sistema operativo mantiene varios trabajos en la memoria simultáneamente.
Como, en general, la memoria principal es demasiado pequeña para acomodar
todos los trabajos, los trabajos se guardan inicialmente en el disco en el grupo de
trabajos. Este grupo consta de todos los procesos que residen en el disco en
espera de la asignación de la memoria principal.

1.5 Operaciones del sistema informático


Los sistemas operativos modernos son impulsados por interrupciones. Si no hay
procesos para ejecutar, no hay dispositivos de E / S para atender y ningún usuario
a quien responder, un sistema operativo se sentará en silencio, esperando que
algo suceda. Los eventos casi siempre son señalados por la ocurrencia de una
interrupción o una trampa. Una captura (o una excepción) es una interrupción
generada por software causada por un error o por una solicitud específica de un
programa de usuario para que se realice un servicio del sistema operativo. La
naturaleza controlada por interrupciones de un sistema operativo define la
estructura general de ese sistema. Para cada tipo de interrupción, segmentos
separados de código en el sistema operativo determinan qué acción se debe
tomar. Se proporciona una rutina de servicio de interrupción para hacer frente a la
interrupción.

1.5.1 Modo dual y operación multimodo

Para garantizar la correcta ejecución del sistema operativo, debemos poder


distinguir entre la ejecución del código del sistema operativo y el código de fi nido
por el usuario. El enfoque adoptado por la mayoría de los sistemas informáticos es
proporcionar soporte de hardware que nos permita diferenciar entre varios modos
de ejecución.
Como mínimo, necesitamos dos modos de operación separados: modo de usuario
y modo de kernel. Se agrega un bit, llamado bit de modo, al hardware de la
computadora para indicar el modo actual: kernel (0) o usuario (1). Con el bit de
modo, podemos distinguir entre una tarea que se ejecuta en nombre del sistema
operativo y una que se ejecuta en nombre del usuario. Cuando el sistema
informático se ejecuta en nombre de una aplicación de usuario, el sistema está en
modo de usuario. Sin embargo, cuando una aplicación de usuario solicita un
servicio del sistema operativo (a través de una llamada del sistema), el sistema
debe pasar del modo de usuario al modo kernel para completar la solicitud.

1.5.2 Temporizador

Debemos asegurarnos de que el sistema operativo mantiene el control sobre la


CPU. No podemos permitir que un programa de usuario se atasque en un bucle
infinito o no pueda llamar a los servicios del sistema y nunca devolver el control al
sistema operativo. Para lograr este objetivo, podemos usar un temporizador. Se
puede configurar un temporizador para interrumpir la computadora después de un
período específico. El período puede ser fijo o variable. Un temporizador variable
generalmente se implementa mediante un reloj de velocidad fija y un contador. El
sistema operativo establece el contador. Cada vez que el reloj hace tictac, el
contador se decrementa. Cuando el contador llega a 0, se produce una
interrupción. Antes de entregar el control al usuario, el sistema operativo asegura
que el temporizador está configurado para interrumpir. Si el temporizador
interrumpe, el control se transfiere automáticamente al sistema operativo, lo que
puede tratar la interrupción como un error fatal o puede dar al programa más
tiempo.

1.6 Gestión de procesos


Un programa no hace nada a menos que sus instrucciones sean ejecutadas por
una CPU. Un programa en ejecución, como se mencionó, es un proceso. Un
programa de usuario de tiempo compartido, como un compilador, es un proceso.
Un programa de procesamiento de textos que ejecuta un usuario individual en una
PC es un proceso. Una tarea del sistema, como enviar un resultado a una
impresora, también puede ser un proceso (o al menos parte de uno). Por ahora,
puede considerar que un proceso es un trabajo o un programa de tiempo
compartido.
El sistema operativo es responsable de:
• Programación de procesos e hilos en las CPU.
• Creación y eliminación de procesos de usuario y sistema.
• Suspender y reanudar procesos.
• Proporcionar mecanismos para la sincronización de procesos.
• Proporcionar mecanismos para la comunicación de procesos.
1.7 Manejo de memoria
La memoria principal es una gran variedad (cientos, billones) de bytes, es central
para la operación de un sistema de cómputo, la memoria es un repositorio de
datos rápidamente accesibles compartidos por la CPU y dispositivos de E/S. El
procesador lee las instrucciones de la memoria principal durante el ciclo de
búsqueda de datos, para que la CPU procese datos del disco, estos datos deben
transferirse a la memoria principal por las llamadas de E/S generadas. A medida
que el programa se ejecuta, accede a las instrucciones del programa y a los datos
de la memoria al generar estas direcciones absolutas, el espacio de la memoria
del programa se declara disponible y el siguiente programa se puede cargar y
ejecutar. Para mejorar tanto la utilización de la CPU como la velocidad de
respuesta de la computadora a sus usuarios, las computadoras deben mantener
varios programas en la memoria, creando una necesidad de administración de la
memoria.
El sistema operativo es responsable de:
• Mantener un registro de qué partes de la memoria se están utilizando
actualmente y quién las está utilizando
• Decidir qué procesos (o partes de procesos) y datos se moverán dentro y fuera
de la memoria
• Asignar y desasignar espacio de memoria según sea necesario

1.8 Administración de almacenamiento


El sistema operativo abstrae de las propiedades físicas de sus dispositivos de
almacenamiento para definir una unidad de almacenamiento lógica, el archivo
1.8.1 Gestión del sistema de archivos
Las computadoras pueden almacenar información en medios físicos: disco
magnético, disco óptico y cinta magnética
Un archivo es una colección de información relacionada definida por su creador.
Los archivos representan programas y datos. Los archivos de datos pueden ser
alfanuméricos, o binarios. Los archivos pueden ser de forma libre (archivos de
texto), o pueden tener un formato rígido (campos fijos).
El sistema operativo es responsable de:
• Crear y borrar archivos o directorios para organizar archivos.
• Primitivas de apoyo para la manipulación de archivos y directorios.
• Mapeo de archivos en almacenamiento secundario
• Copia de seguridad de archivos en medios de almacenamiento estables (no
volátiles)
1.8.2 Gestión de almacenamiento masivo
La memoria principal es demasiado pequeña para alojar todos los datos y
programas, y debido a que los datos que contiene se pierden cuando se pierde la
alimentación, el sistema informático proporciona almacenamiento secundario para
realizar una copia de seguridad de la memoria principal. La mayoría de los
sistemas informáticos modernos utilizan discos.
La mayoría de los programas se almacenan en un disco hasta que se cargan en la
memoria. Luego, utilizan el disco como origen y destino de su procesamiento.
El sistema operativo es responsable de:
• Gestión del espacio libre
• Asignación de almacenamiento
• Programación de discos
Los sistemas operativos pueden incluir el montaje y desmontaje de medios en
dispositivos, la asignación y liberación de los dispositivos para uso exclusivo de los
procesos y la migración de datos del almacenamiento secundario al terciario.
1.8.3 Caching (almacenamiento en caché)
La información se guarda en algún sistema de almacenamiento (más rápido): el
caché.
Cuando necesitamos una información en particular, primero verificamos si está en
el caché. Si no lo está, utilizamos la información de la fuente, colocando una copia
en el caché bajo el supuesto de que la necesitaremos pronto.
Los registros de índice, proporcionan un caché de alta velocidad para la memoria
principal.
La mayoría de los sistemas tienen uno o más cachés de datos de alta velocidad
en la jerarquía de memoria.
Las cachés tienen un tamaño limitado, la administración de caché es un problema
de diseño importante.
La transferencia de datos de la memoria caché a la CPU y los registros suele ser
una función de hardware, sin intervención del sistema operativo.
1.8.4 Sistemas de E / S
El subsistema de E / S consta de varios componentes:
• Un componente de administración de memoria que incluye almacenamiento en
búfer, almacenamiento en caché y cola de impresión
• Una interfaz general de dispositivo-controlador
• Controladores para dispositivos de hardware específicos
1.9 Protección y seguridad
La protección puede mejorar la confiabilidad al detectar errores latentes en las
interfaces entre los subsistemas de componentes. La detección temprana de
errores de interfaz puede prevenir la contaminación de un subsistema saludable.
Considere un usuario cuya información de autenticación es robada. Sus datos
pueden ser copiados o eliminados, aunque la protección de archivos y memoria
estén funcionando. Es el trabajo de la seguridad defender un sistema de ataques
externos e internos.
La mayoría de los sistemas operativos mantienen una lista de nombres de usuario
e identificadores de usuario asociados (ID de usuario). En el lenguaje de Windows,
este es un ID de seguridad (SID). Estas identificaciones numéricas son únicas,
una por usuario.
1.10 Estructuras de datos del kernel
1.10.1 Listas, pilas y colas
Una matriz es una estructura de datos simple en la que se puede acceder
directamente a cada elemento, ejemplo: memoria principal.
Las listas son las estructuras de datos fundamentales, representan una colección
de valores de datos como una secuencia.
Las listas vinculadas admiten elementos de diferentes tamaños y permiten una
fácil inserción y eliminación de elementos.
La pila es una estructura de datos ordenada secuencialmente que utiliza el
principio de último en entrar, primero en salir (LIFO) para agregar y eliminar
elementos, la inserción y eliminación de elementos de una pila se conocen como
empujar y pop, respectivamente.
Una cola es una estructura de datos ordenada secuencialmente que utiliza el
principio de primero en entrar, primero en salir (FIFO): los compradores que
esperan en una línea de salida en una tienda, los autos que esperan en línea en
una señal de tráfico, los trabajos que se envían a una impresora se imprimen en el
orden en que fueron presentados.
1.10.2 árboles
Un árbol es una estructura de datos que se puede usar para representar datos
jerárquicamente.
En un árbol general, un padre puede tener un número ilimitado de hijos. En un
árbol binario, un padre puede tener a lo sumo dos hijos, lo que denominamos el
hijo izquierdo y el hijo derecho.
1.10.3 Funciones hash y mapas
Una función hash toma datos como su entrada, realiza una operación numérica en
estos datos y devuelve un valor numérico, luego se utiliza como un índice en una
tabla para recuperar rápidamente los datos. Dos entradas podrían dar como
resultado el mismo valor de salida.
Mapa hash asocia (o mapea) pares [clave: valor] usando una función hash.
La contraseña recuperada se compara con la contraseña introducida por el
usuario para la autenticación.
1.10.4 Bitmaps
La unidad de disco puede dividirse en miles de unidades individuales, llamadas
bloques de disco. Se puede utilizar un mapa de bits para indicar la disponibilidad
de cada bloque de disco.
1.11 Entornos informáticos
1.11.1 Computación tradicional
El "entorno de oficina típico" hace apenas unos años, consistía en PC conectadas
a una red, con servidores que brindaban servicios de archivo e impresión. Las
terminales conectadas a mainframes también prevalecían en muchas compañías,
con menos opciones de acceso remoto y de portabilidad.
Ahora las empresas establecen portales, que proporcionan accesibilidad web a
sus servidores internos. Las computadoras de red (o clientes ligeros) se utilizan en
lugar de las estaciones de trabajo tradicionales donde se desea mayor seguridad o
un mantenimiento más sencillo. Las computadoras móviles se pueden sincronizar
con las PC para permitir el uso muy portátil de la información de la empresa,
también pueden conectarse a redes inalámbricas y redes de datos celulares para
usar el portal web de la compañía (así como los innumerables recursos de otras
páginas web).
En casa, la mayoría de los usuarios tenían una sola computadora con una
conexión de módem lenta a la oficina, a Internet o a ambas. Hoy en día, las
rápidas conexiones de datos permiten que las computadoras domésticas sirvan
para páginas web y para que funcionen redes que incluyen impresoras, PC
clientes y servidores. Muchas casas usan firewalls para proteger sus redes de
violaciones de seguridad.
1.11.2 Computación móvil
Portátil y ligera, desarrolladores ahora diseñan aplicaciones que aprovechan las
características únicas de los dispositivos móviles, como los chips, acelerómetros y
giroscopios del sistema de posicionamiento global (GPS). En varios juegos de
computadora que emplean acelerómetros, los jugadores interactúan con el
sistema no mediante el uso de un mouse o un teclado, sino al inclinar, rotar y
agitar el dispositivo móvil.
Dos sistemas operativos dominan actualmente la computación móvil: Apple iOS y
Google Android. iOS fue diseñado para ejecutarse en dispositivos móviles Apple
iPhone y iPad. Android funciona con teléfonos inteligentes y tabletas disponibles
de muchos fabricantes.
1.11.3 Sistemas distribuidos
El acceso a un recurso compartido aumenta la velocidad de computación, la
funcionalidad, la disponibilidad de datos y la confiabilidad.
Una red, en los términos más simples, es una ruta de comunicación entre dos o
más sistemas. Los sistemas distribuidos dependen de las redes.
Las redes se caracterizan en función de las distancias entre sus nodos.
Una red de área local (LAN) conecta las computadoras dentro de una habitación,
un edificio o un campus. Una red de área amplia (WAN) generalmente vincula
edificios, ciudades o países. Una empresa global puede tener una WAN para
conectar sus oficinas en todo el mundo, los dispositivos BlueTooth y 802.11 usan
tecnología inalámbrica para comunicarse a una distancia de varios metros, en
esencia, crear una red de área personal (PAN) entre un teléfono y un auricular o
un teléfono inteligente y una computadora de escritorio.
Cuando los dispositivos informáticos están conectados a teléfonos celulares, crean
una red. Las computadoras se comunican porque usan o crean una red.
El sistema operativo de red proporciona características como el intercambio de
archivos en la red, junto con un esquema de comunicación que permite que
diferentes procesos en diferentes computadoras intercambien mensajes.
Una computadora que ejecuta un sistema operativo de red actúa de forma
autónoma respecto a todas las demás computadoras de la red. El sistema
operativo distribuido proporciona un entorno menos autónomo.
1.11.4 Computación cliente-servidor
Muchos de los sistemas actuales actúan como sistemas de servidor para
satisfacer las solicitudes generadas por los sistemas cliente. Esta forma de
sistema distribuido especializado, llamado sistema cliente-servidor.
1.11.5 Computación Peer-to-Peer
Los clientes y servidores no se distinguen unos de otros. En cambio, todos los
nodos dentro del sistema se consideran pares, y cada uno puede actuar como un
cliente o un servidor, dependiendo de si está solicitando o proporcionando un
servicio.
Skype es un ejemplo de computación de igual a igual. Permite a los clientes
realizar llamadas de voz y videollamadas y enviar mensajes de texto a través de
Internet mediante una tecnología conocida como voz sobre IP (VoIP)
1.11.6 Virtualización
Es una tecnología que permite que los sistemas operativos se ejecuten como
aplicaciones dentro de otros sistemas operativos.
Si las CPU de origen y destino tienen niveles de rendimiento similares, el código
emulado puede ejecutarse mucho más lento que el código nativo.
La emulación se produce cuando un lenguaje informático no se compila en código
nativo, sino que se ejecuta en su forma de alto nivel o se traduce a una forma
intermedia.
Algunos lenguajes, como BASIC, pueden compilarse o interpretarse. Java, en
cambio, siempre se interpreta. La interpretación es una forma de emulación en la
que el código de idioma de alto nivel se traduce a instrucciones de CPU nativas.
Un sistema operativo que se compila de forma nativa para una arquitectura de
CPU particular se ejecuta dentro de otro sistema operativo también nativo de esa
CPU.
1.11.7 Cloud Computing
Ofrece informática, almacenamiento e incluso aplicaciones como un servicio a
través de una red. Es una extensión lógica de la virtualización, porque usa la
virtualización como base para su funcionalidad. Por ejemplo, la instalación de
Amazon Elastic Compute Cloud (EC2) tiene miles de servidores, millones de
máquinas virtuales y petabytes de almacenamiento disponibles para que
cualquiera pueda usarlos en Internet. Los usuarios pagan por mes según la
cantidad de esos recursos que utilizan.
En realidad, hay muchos tipos de computación en la nube, incluyendo
• Nube pública: disponible para cualquier persona que pueda pagar por los
servicios.
• Nube privada: administrada por una empresa para uso propio de esta.
• Nube híbrida: incluye componentes de nube pública y privada
1.11.8 Sistemas integrados en tiempo real
Las computadoras integradas son la forma más frecuente de computadoras.
Motores de automóviles y fabricación de robots para DVD y hornos microondas
suelen tener tareas muy específicas.
Incluso ahora, se pueden computarizar casas enteras, de modo que una
computadora central puede controlar la calefacción y la iluminación, los sistemas
de alarma e incluso cafeteras. El acceso a la web puede permitir que el propietario
de una casa le diga a la casa que se caliente antes de que llegue.
Los sistemas que controlan experimentos científicos, sistemas de imágenes
médicas, sistemas de control industrial y ciertos sistemas de visualización son
sistemas en tiempo real. Un sistema en tiempo real funciona correctamente solo si
devuelve el resultado correcto dentro de sus restricciones de tiempo. Compare
este sistema con un sistema de tiempo compartido, donde es deseable (pero no
obligatorio) responder rápidamente, o un sistema por lotes, que puede no tener
ninguna restricción de tiempo.
1.12 Sistemas Operativos de Código Abierto
1.12.1 Historia
En la década de 1950, una gran cantidad de software estaba disponible en
formato de código abierto. Los hackers originales en el Tech Model Railroad Club
del MIT dejaron sus programas en cajones para que otros trabajen. Los grupos de
usuarios de "Homebrew" intercambiaron códigos durante sus reuniones. Más
tarde, grupos de usuarios específicos de la empresa, como el DEC de Digital
Equipment Corporation, aceptaron contribuciones de programas de código fuente,
los recopilaron en cintas y distribuyeron las cintas a los miembros interesados.
Las compañías de computadoras y software finalmente trataron de limitar el uso
de su software a computadoras autorizadas y clientes que pagan. La liberación de
solo los archivos binarios compilados a partir del código fuente, en lugar del código
fuente en sí, les ayudó a lograr este objetivo, así como a proteger su código y sus
ideas de sus competidores. Otro tema involucrado material con derechos de autor.
Richard Stallman en 1983 inició el proyecto GNU para crear un sistema operativo
libre, de código abierto y compatible con UNIX. La Licencia Pública General de
GNU (GPL) codifica el copylefting y es una licencia común bajo la cual se lanza el
software libre. Fundamentalmente, GPL requiere que el código fuente se distribuya
con cualquier binario y que los cambios realizados en el código fuente se
publiquen bajo la misma licencia GPL.
1.12.2 Linux
En 1991, un estudiante en Finlandia, Linus Torvalds, lanzó un núcleo rudimentario
tipo UNIX utilizando los compiladores y herramientas GNU e invitó a realizar
contribuciones en todo el mundo. La llegada de Internet significó que cualquier
persona interesada podría descargar el código fuente, modificarlo y enviar
cambios a Torvalds. La publicación de actualizaciones una vez por semana
permitió que este llamado sistema operativo Linux creciera rápidamente, mejorado
por varios miles de programadores.
El sistema operativo GNU / Linux resultante ha generado cientos de
Distribuciones únicas, o compilaciones personalizadas, del sistema. Las
principales distribuciones incluyen RedHat, SUSE, Fedora, Debian, Slackware y
Ubuntu. PCLinuxOS es un LiveCD, un sistema operativo que se puede iniciar y
ejecutar desde un CD-ROM sin ser instalado en el disco duro de un sistema.
1.12.3 BSD UNIX
Comenzó en 1978 como un derivado de UNIX de AT&T, en 1994 se lanzó una
versión de código abierto totalmente funcional, 4.4BSD-lite.
Darwin, el componente del núcleo del núcleo de Mac OS X, se basa en BSD UNIX
y también es de código abierto. El nombre del paquete que contiene el kernel
comienza con "xnu".
1.12.4 Solaris
Solaris es el sistema operativo comercial basado en UNIX Sun Microsystems.
Originalmente, el sistema operativo se basaba en BSD UNIX. Sun se trasladó a
System V UNIX de AT&T como su base en 1991. En 2005, Sun abrió la mayor
parte del código de Solaris como el proyecto OpenSolaris. La compra de Sun por
Oracle en 2009, sin embargo, dejó el estado de este proyecto poco claro.
Varios grupos interesados en usar OpenSolaris han comenzado desde esa base y
expandieron sus características. Su conjunto de trabajo es el Proyecto Illumos,
que se ha expandido desde la base de OpenSolaris para incluir más funciones y
ser la base para varios productos.
1.12.5 Sistemas de código abierto como herramientas de aprendizaje
El movimiento de software libre está impulsando a legiones de programadores a
crear miles de proyectos de código abierto, incluidos los sistemas operativos. Los
proyectos de código abierto permiten a los estudiantes usar el código fuente como
una herramienta de aprendizaje. Pueden modificar programas y probarlos, ayudar
a encontrar y corregir errores y, de lo contrario, explorar sistemas operativos,
compiladores, herramientas, interfaces de usuario y otros tipos de programas
maduros y con todas las funciones. La disponibilidad de código fuente para
proyectos históricos, como Multics, puede ayudar a los estudiantes a comprender
esos proyectos y desarrollar el conocimiento que ayudará en la implementación de
nuevos proyectos.
Es probable que las ventajas del software libre y la fuente abierta aumenten el
número y la calidad de los proyectos de código abierto, lo que lleva a un aumento
en el número de personas y empresas que utilizan estos proyectos.
Capítulo 2: Estructuras del Sistema Operativo

2.1 Servicios del sistema operativo


Los sistemas operativos ofrecen un servicio para los usuarios de los programas
obviamente que cada servicio es especifico por ello es que cada uno es distinto a
otro. Estos son para mejorar y facilitar al programador en sus labores. Unos son
para ayudar al usuario y otros son para garantizar el funcionamiento eficiente del
sistema propio.
2.1.1 Interfaz de usuario
Puede tomar varias formas como una de texto y un método para entrar en ello otro
que los comando y directivas para controlar esos comandos.
2.1.2 La ejecución del programa
El sistema debe ser capaz de hacerlo correr al programa y cerrarlo o ponerle fin de
una manera normal o anormal.
2.1.3. I/O operaciones
Para la eficiencia y protección las operaciones dé I/O no puedan controlar los
usuarios generales directamente.
2.1.4 La manipulación del sistema de archivo
Son necesarias para leer y escribir archivos también para crear y eliminar por su
nombre y por ultimo incluye la gestión de permisos para los archivos basados en
las propiedades.
2.1.5 Comunicaciones
Hay muchos momentos en los que deben intercambiar información con otro
proceso. Dicha comunicación se puede producir ejecutándolos en un mismo
momento pueden llegar a ser a través de memoria compartida o paso de
mensajes.
2.1.6 Detección de errores
El sistema debe detectar y corregir los errores constantemente. Para cada tipo de
error el sistema debe tomar las medidas apropiadas para asegurar la computación
correcta y constante.
2.1.7 Asignación de recurso
Los recursos deben asignarse a cada uno de ello debido a que varios trabajos se
ejecutan en el mismo tiempo. El sistema trabaja con varios y diferentes recursos
algunos son únicos en su código.
2.1.8 Contabilidad
Para poder mantener un registro de la cantidad y tipo de recursos de los cuales se
pueda utilizar para la contabilidad o simplemente para recopilar datos.
2.1.9 Protección y seguridad
Los propietarios de información en un sistema al ejecutarlo en una red
multiusuarios la protección no está garantizada por ello para proteger a un sistema
las precauciones deben ser a través de ella.

2.2 Interfaz de usuario y del sistema operativo


Los dos enfoques fundamentales:
Intérpretes de comandos es un interés de línea operativo que permite a los
usuarios introducir comandos directamente a realizar por el sistema operativo,
Y el otro que permite a los usuarios interactuar con el sistema operativo a través
de una interfaz gráfica de usuario. En esta se utiliza un sistema Windows menú en
el que el ratón se caracteriza por un escritorio. El puntero invoca programas
seleccionado un expediente o una carpeta o un menú que contiene comandos

2.3 Las llamadas al sistema


Una interfaz para los servidores generalmente escritas por C y C++ aunque a
veces el sistema tiene que ser escrito utilizando instrucción en lenguaje
ensamblador
Es el mecanismo por el cual una aplicación usa para solicitar un servicio al
sistema operativo.

2.4 Tipos de llamadas del sistema


Se agrupan en seis grandes rasgos: Control de procesos, gestión archivo, gestión
de dispositivos, mantenimiento de la información, comunicaciones y protección
normalmente se refieren al sistema de nombres genéricos a lo largo se utiliza las
llamadas de sistemas de Windows UNIX y Linux

2.5 Los programas del sistema


Su colección de programas del sistema que representa la jerarquía de equipo
lógico.
Los programas de sistemas también conocidos como utilidades del sistema
proporcionan un ambiente cómodo para el desarrollo y ejecución del programa.
Algunos son simplemente interfaces de usuarios a las llamadas al sistema

2.6 Diseño e implementación del sistema operativo


En esta sección se verán los problemas que surgen al diseñar un sistema
operativo
2.6.1 Objetivos de diseño
El primer problema es definir sus especificaciones
El diseño debe ser fácil de implementar, flexible, confiable, eficiente, libre de
errores, etc. estos requisitos son vagos y pueden interpretarse de varias maneras.
Es por eso que no existe una solución única al problema de definir los requisitos
para un sistema operativo. La amplia gama de sistemas existentes muestra que
los diferentes requisitos pueden dar como resultado una gran variedad de
soluciones para diferentes entornos
2.6.2 Mecanismos y políticas
Un principio importante es la separación de la política y del mecanismo. Los
mecanismos determinan cómo hacer algo; Las políticas determinan lo que se
hará.
Por ejemplo, la construcción del temporizador es un mecanismo para garantizar la
protección del CPU, pero decidir la duración de la configuración del temporizador
para un usuario en particular es una decisión de política.
2.6.3 Implementación
Una vez que se diseña un sistema operativo, debe ser implementado. Aquí el
diseñador deberá escoger en que lenguaje lo va a escribir. Debido a que los
sistemas operativos son colecciones de muchos programas, es difícil escoger cual
es el más optimo

2.7 Estructura del sistema operativo


Un sistema tan grande y complejo como un sistema operativo moderno debe
diseñarse cuidadosamente para que funcione correctamente y se modifique
fácilmente. Un enfoque común es dividir la tarea en pequeños componentes o
módulos, en lugar de tener un sistema monolítico.
2.7.1 Estructura simple
se trata de una enorme cantidad de funcionalidades que se pueden combinar en
un solo nivel. Esta estructura monolítica fue difícil de implementar y mantener. Sin
embargo, tiene una clara ventaja en el rendimiento

2.7.2 Enfoque en capas


Con el soporte de hardware adecuado, los sistemas operativos se pueden dividir
en partes que son más pequeñas y más apropiadas. El sistema operativo puede
retener un control mucho mayor sobre la computadora y sobre las aplicaciones
que hacen uso de esa computadora
2.7.3 Microkernels
La función principal del microkernel es proporcionar comunicación entre el
programa cliente y los diversos servicios que también se ejecutan en el espacio
del usuario, mediante un conjunto llamadas mínimas al sistema para implementar
servicios básicos como espacios de direcciones, comunicación entre procesos y
planificación básica.
2.7.4 Módulos
Esta es la mejor metodología actual para el diseño de sistemas operativos ya que
involucra el uso de módulos de kernel cargables. Aquí, el kernel tiene un conjunto
de componentes centrales y enlaces en servicios adicionales a través de módulos,
ya sea en el momento del arranque o durante el tiempo de ejecución. Este tipo de
diseño es común en las implementaciones modernas de UNIX, como Solaris,
Linux y Mac OS X, así como Windows
2.7.5 Sistemas híbridos
En la actualidad muy pocos sistemas operativos adoptan una estructura única y
estrictamente definida. En su lugar combinan diferentes estructuras, lo que da
como resultado sistemas híbridos que abordan los problemas de rendimiento,
seguridad y uso. Por ejemplo, tanto Linux como Solaris son monolíticos, porque
tener el sistema operativo en un solo espacio de direcciones proporciona un
rendimiento muy eficiente. Sin embargo, también son modulares, por lo que la
nueva funcionalidad se puede agregar dinámicamente al kernel.
Entre los principales sistemas híbridos tenemos:
 Apple Mac OS X (sistema operativo)
 iOS (sistema operativo móvil)
 Android (sistema operativo móvil)

2.8 Depuración del sistema operativo


La depuración consiste en encontrar y solucionar errores en un sistema, tanto en
hardware como en software. Los problemas de rendimiento se consideran errores,
por lo que la depuración también puede incluir el ajuste del rendimiento, que busca
mejorar el rendimiento mediante la eliminación de cuellos de botella en el
procesamiento.
2.8.1 Análisis de fallas
 Si un proceso falla, la mayoría de los sistemas operativos escriben la
información de error en un archivo de registro para alertar a los usuarios
que el problema ocurrió.
 El sistema operativo también puede tomar un volcado del núcleo, una
captura de la memoria del proceso y almacenarlo en un archivo para su
posterior análisis.
 Los programas en ejecución y los volcados de núcleo pueden ser
investigados por un depurador, lo que permitirá a un programador explorar
el código y la memoria de un proceso.
2.8.2 Ajuste de rendimiento
Busca mejorar el rendimiento mediante la eliminación de cuellos de botella en el
procesamiento. Para identificar cuellos de botella, debemos poder monitorear el
rendimiento del sistema. Por lo tanto, el sistema operativo debe tener algunos
medios para calcular y mostrar las medidas del comportamiento del sistema.
Otro enfoque del ajuste del rendimiento es utilizar herramientas interactivas de un
solo propósito que permiten a los usuarios y administradores cuestionar el estado
de los distintos componentes del sistema para detectar cuellos de botella.
Un ejemplo claro seria el Administrador de tareas de Windows que es una
herramienta para los sistemas Windows. El administrador de tareas incluye
información de las aplicaciones actuales, así como procesos, CPU y uso de
memoria, y estadísticas de red.
2.8.3 DTrace
Es un framework de rastreo y monitoreo abarcativo y dinámico que es utilizado
para obtener una mirada global a un sistema que este activo, brindando
información como la cantidad de memoria, tiempo de procesador, recursos de red
o recursos del sistema de archivos que estén usando los procesos activos

2.9 Generación del sistema operativo


El sistema operativo normalmente se distribuye en disco, en CD-ROM o DVD-
ROM, o como una imagen "ISO", que es un archivo en el formato de un CD-ROM
o DVD-ROM. Para generar un sistema, utilizamos un programa especial.
Este programa SYSGEN lee de un archivo dado, o le pide al operador del sistema
información sobre la configuración específica del sistema de hardware, o prueba el
hardware directamente para determinar qué componentes están allí. Se deben
determinar los siguientes tipos de información:
 ¿Qué CPU se va a utilizar? ¿Qué opciones (conjuntos de instrucciones
extendidas, aritmética de punto flotante, etc.) están instaladas?
 ¿Cómo se formateará el disco de arranque? ¿En cuántas secciones o
“particiones” se separarán y qué incluirá en cada partición?
 ¿Cuánta memoria está disponible? Algunos sistemas determinarán este
valor ellos mismos haciendo referencia a la ubicación de la memoria
después de la ubicación de la memoria hasta que se genere un error de
"dirección ilegal". Este procedimiento define la dirección legal final y, por lo
tanto, la cantidad de memoria disponible.
 ¿Qué dispositivos están disponibles? El sistema necesitará saber cómo
abordar cada dispositivo (el número del dispositivo), el número de
interrupción del dispositivo, el tipo y modelo del dispositivo y cualquier
característica especial del dispositivo.
 ¿Qué opciones de sistema operativo se desean o qué valores de
parámetros se deben usar? Estas opciones o valores pueden incluir la
cantidad de búferes de qué tamaños se deben usar, qué tipo de algoritmo
de programación de la CPU se desea, cuál es el número máximo de
procesos que se admitirán, etc.
Una vez que se determina esta información, se puede utilizar de varias maneras.
En un extremo, un administrador del sistema puede usarlo para modificar una
copia del código fuente del sistema operativo y en el otro extremo, es posible
construir un sistema que esté completamente basado en tablas

2.10 Arranque del sistema


El procedimiento para iniciar una computadora cargando el kernel se conoce como
iniciar el sistema. En la mayoría de los sistemas informáticos, un pequeño
fragmento de código conocido como el programa bootstrap o el cargador bootstrap
localiza el kernel, lo carga en la memoria principal e inicia su ejecución. Algunos
sistemas informáticos, como las PC, utilizan un proceso de dos pasos en el que un
simple cargador de arranque recupera un programa de inicio más complejo del
disco, que a su vez carga el kernel.