Documentos de Académico
Documentos de Profesional
Documentos de Cultura
|Sistemas Operativos I|
Investigación sobre:
● Organización y Estructura de los Sistemas Operativos.
● Procesos.
● Hilos.
Elaborado por:
- Kremser Pablo
Profesor:
- Guillermo Biderbosts
Alumnos: Kremser Pablo
Sistemas Operativos I
Profesor: Guillermo Biderbosts
26/08/2019
Sistemas monolíticos
Todos los componentes de gestión y programas del sistema están escritos en un solo código
o espacio lógico. La estructura consiste en que no tienen estructura. En estos sistemas
operativos se escriben como un conjunto de procedimientos, cada uno de los cuales puede
llamar a cualquiera de los otros siempre que lo necesite. Cuando se emplea esta técnica,
cada procedimiento del sistema tiene una interfaz bien definida en términos de parámetros
y resultados, y cada una tiene la libertad de llamar a cualquiera otra, si la última ofrece
algún cálculo útil que la primera necesite.
Para construir el programa objeto real del sistema operativo cuando se usa este método, se
compilan todos los procedimientos individuales a archivos que contienen los
procedimientos y después se combinan todos en un solo archivo objeto con el enlazador.
Sin embargo, hasta en los sistemas monolíticos es posible tener cierta estructura. Para
solicitar los servicios (llamadas al sistema) que proporciona el sistema operativo, los
parámetros se colocan en un lugar bien definido (por ejemplo, en la pila) y luego se ejecuta
una instrucción de trap. Esta instrucción cambia la máquina del modo usuario al modo
kernel y transfiere el control al sistema operativo. Después el sistema operativo obtiene los
parámetros y determina cuál es la llamada al sistema que se va a llevar a cabo. Después la
indiza en una tabla que contiene en una ranura k un apuntador al procedimiento que lleva a
cabo la llamada al sistema. Luego de la llamada el control se devuelve al programa del
usuario. Esta organización sugiere una estructura básica para el sistema operativo:
Página 2 de 18
Alumnos: Kremser Pablo
Sistemas Operativos I
Profesor: Guillermo Biderbosts
26/08/2019
Ventajas
● Estos sistemas están programados de forma no modular, lo que los hace de mayor
rendimiento ante los sistemas pensados en un micronúcleo; al carecer del constante
paso de mensajes de estos últimos.
Desventajas
El avance del hardware permitió que se puedan dividir en fragmentos más pequeños. Así el
SO puede tener mayor control sobre la PC y las aplicaciones. Se utiliza el enfoque
descendente. Consiste en organizar el s. o. como una jerarquía de capas, cada una
construida sobre la inmediata inferior. Cada capa consiste en algunas estructuras de datos y
Página 3 de 18
Alumnos: Kremser Pablo
Sistemas Operativos I
Profesor: Guillermo Biderbosts
26/08/2019
un conjunto de rutinas que las capas superiores pueden invocar. La modularidad simplifica
la depuración y la verificación del sistema. Cada capa no necesita saber cómo se han
implementado las operaciones en la capa inferior, sino saber que hacen. La planificación
debe ser muy cuidadosa, ya que una capa solo puede usar las capas que están debajo.
La capa 0 (Reparto del procesador y multiprogramación), esta capa se ocupa del reparto del
procesador, conmutando entre procesos cuando ocurrían interrupciones o expiraban los
temporizadores. En forma general, esta capa se encarga de la multiprogramación básica de
la CPU.
La capa 4 (Programas de usuario), en esta capa están los programas del usuario, los cuales
no se tenían que preocupar por cómo era la administración de procesos, memoria, E/S o
consola.
Página 4 de 18
Alumnos: Kremser Pablo
Sistemas Operativos I
Profesor: Guillermo Biderbosts
26/08/2019
Ventajas:
Desventajas:
Máquinas virtuales
Las máquinas virtuales instrumentan copias “exactas” del hardware simple, con su modo
núcleo / usuario, e / s, interrupciones y todo lo demás que posee una máquina real. Pueden
ejecutar cualquier S. O. que se ejecute en forma directa sobre el hardware. Las distintas
máquinas virtuales pueden ejecutar distintos S. O. y en general así lo hacen. Soportan
periféricos virtuales.
Las máquinas virtuales nos permiten ejecutar un sistema operativo en una ventana en el
escritorio. Podemos emplear una máquina virtual para ejecutar el software hecho para otros
Página 5 de 18
Alumnos: Kremser Pablo
Sistemas Operativos I
Profesor: Guillermo Biderbosts
26/08/2019
Las máquinas virtuales añaden algo de sobrecarga, por lo que no será tan rápido como si se
hubiera instalado el sistema operativo en hardware real.
La virtualización es una excelente opción hoy día, ya que las máquinas actuales en la
mayoría de los casos están siendo "sub-utilizados", llegando a un uso de entre 30% a 60%
de su capacidad. Al virtualizar, la necesidad de nuevas máquinas en una ya existente
permite un ahorro considerable de los costos asociados (energía, mantenimiento, espacio,
etc).
Cliente-Servidor
Se diferencian dos clases de procesos: los servidores, cada uno de los cuales proporciona
cierto servicio, y los clientes, que utilizan estos servicios. Este modelo se conoce como
cliente-servidor. A menudo la capa inferior es un microkernel, pero eso no es requerido. La
esencia es la presencia de procesos cliente y procesos servidor. La comunicación entre
clientes y servidores se lleva a cabo comúnmente mediante el paso de mensajes. Para
obtener un servicio, un proceso cliente construye un mensaje indicando lo que desea y lo
envía al servicio apropiado. Después el servicio hace el trabajo y envía de vuelta la
respuesta.
Página 6 de 18
Alumnos: Kremser Pablo
Sistemas Operativos I
Profesor: Guillermo Biderbosts
26/08/2019
Una generalización obvia de esta idea es hacer que los clientes y los servidores se ejecuten
en distintas computadoras, conectadas mediante una red de área local o amplia. Como los
clientes se comunican con los servidores mediante el envío de mensajes, no necesitan saber
si los mensajes se manejan en forma local en sus propios equipos o si se envían a través de
una red a servidores en un equipo remoto. Por ende, el modelo cliente-servidor es una
abstracción que se puede utilizar para un solo equipo o para una red de equipos. La mayor
parte de la Web opera de esta forma. Una PC envía una petición de una página Web al
servidor y la página Web se envía de vuelta. Éste es un uso común del modelo
cliente-servidor en una red.
En los sistemas operativos modernos, los sistemas cliente-servidor nacen con la finalidad
de minimizar el núcleo (kernel), trasladando el código de todos sus servicios a las capas
superiores; y el núcleo sólo deberá controlar la comunicación, que se realiza mediante
mensajes, entre clientes y servidores o servidores y hardware.
El objetivo es desarrollar la mayoría de las funciones del sistema operativos como procesos
de usuario. Un proceso de usuario, llamado en este caso proceso cliente, envía una solicitud
a un proceso servidor, que realiza el trabajo y devuelve la respuesta.
Los servidores se ejecutan como procesos en modo usuario: No tienen acceso directo al
hardware. Se aíslan y acotan más fácilmente los problemas. Se adapta para su uso en los
sistemas distribuidos.
Página 7 de 18
Alumnos: Kremser Pablo
Sistemas Operativos I
Profesor: Guillermo Biderbosts
26/08/2019
● Por lo general, acepta las conexiones de un gran número de clientes (en ciertos
casos el número máximo de peticiones puede estar limitado).
Ventajas
● Centralización del control: los accesos, recursos y la integridad de los datos son
controlados por el servidor de forma que un programa cliente defectuoso o no
autorizado no pueda dañar el sistema.
● Escalabilidad: se puede aumentar la capacidad de clientes y servidores por separado.
● Fácil mantenimiento: al estar distribuidas las funciones y responsabilidades entre
varios ordenadores independientes, es posible reemplazar, reparar, actualizar, o
incluso trasladar un servidor, mientras que sus clientes no se verán afectados por ese
cambio.
Desventajas
● Congestión del tráfico. Cuando una gran cantidad de clientes envían peticiones
simultáneas al mismo servidor, puede ser que cause muchos problemas para éste.
● El paradigma de C/S clásico no tiene la robustez. Cuando un servidor está caído, las
peticiones de los clientes no pueden ser satisfechas.
● El software y el hardware de un servidor son generalmente muy determinantes.
Normalmente se necesita software y hardware específico, sobre todo en el lado del
servidor, para satisfacer el trabajo. Esto aumentará el coste.
Sistemas Microkernels
En esta nueva concepción, es usual que el núcleo solo contenga lo necesario para la gestión
de memoria y procesos. Todo el resto se ejecuta con el nivel de privilegios de las
aplicaciones que no son del sistema.
En la práctica es un poco difícil conseguir esto sin una pérdida apreciable de rendimiento y
en alguna medida deben incluirse en el núcleo otras funciones como el manejo de hardware
y algunos Drivers.
Página 8 de 18
Alumnos: Kremser Pablo
Sistemas Operativos I
Profesor: Guillermo Biderbosts
26/08/2019
Sin embargo, Sistemas Operativos como QNX son una aproximación bastante cercana. Una
ventaja técnica de la arquitectura de micronúcleo es que teóricamente es posible utilizar el
mismo Sistema Operativo en hardware complejo que en hardware pequeño ya que el núcleo
suele ser de unos pocos Kbyte.
Por otro lado, sus principales dificultades son la complejidad en la sincronización de todos
los módulos que componen el micronúcleo y su acceso a la memoria, la anulación de las
ventajas de Zero Copy, la Integración con las aplicaciones. Además, los procesadores y
arquitecturas modernas de hardware están optimizadas para sistemas de núcleo que pueden
mapear toda la memoria.
Página 9 de 18
Alumnos: Kremser Pablo
Sistemas Operativos I
Profesor: Guillermo Biderbosts
26/08/2019
Sistemas Exokernels
La idea tras los exonúcleos es obligar a los desarrolladores a usar el menor número posible
de abstracciones, permitiéndoles tomar tantas decisiones como sea posible sobre las
abstracciones de hardware. Los exonúcleos son pequeños, ya que su funcionalidad está
limitada a asegurar la protección y el multiplexado de recursos, que son muchísimo más
simples que las implementaciones del paso de mensajes y las abstracciones del hardware de
los núcleos monolíticos tradicionales.
Las aplicaciones pueden pedir direcciones específicas de memoria, bloques de disco, etc. El
núcleo sólo asegura que el recurso está libre y se permite a la aplicación usarlo. Este acceso
de bajo nivel al hardware permite al programador implementar abstracciones
personalizadas y omitir las innecesarias, normalmente contribuyendo a un mejor
desempeño de la aplicación. Esto también permite a los programadores escoger qué nivel
de abstracción desean.
Los exonúcleos pueden ser vistos como una aplicación del principio del "fin al fin" a los
sistemas operativos, en el sentido en que no fuerzan a una aplicación a poner sus
abstracciones en distintas capas de las que fueron diseñadas con diferentes requisitos en
mente. Por ejemplo, en el proyecto del exonúcleo del MIT, el servidor web Cheetah guarda
paquetes preformateados del protocolo IP en el disco, y el núcleo garantiza un acceso
seguro al disco evitando lecturas y escrituras no permitidas, pero cómo se abstrae el
funcionamiento del disco se deja a la elección de las librerías que la aplicación usa.
Características :
El exokernel es eficiente debido al número limitado de operaciones primitivas sencillas que
aporta.
Debido al bajo nivel de seguridad en la multiplexación de los recursos de hardware
proporciona baja utilización de los recursos del sistema.
Abstracciones tradicionales como la Memoria Virtual (VM) y los Interprocesos de
Comunicación (IPC) pueden ser implementados de forma eficiente a nivel de aplicación, en
donde podría extenderse fácilmente, especializarse o sustituirse.
Las aplicaciones pueden crear efectos especiales de las implementaciones de las
abstracciones adaptándolas a sus necesidades y funcionalidades de rendimiento.
Ventajas:
● Mejor utilización de los recursos.
● Mayor rendimiento en los recursos.
● Mayor eficiencia en la utilización de los recursos.
Página 10 de 18
Alumnos: Kremser Pablo
Sistemas Operativos I
Profesor: Guillermo Biderbosts
26/08/2019
Desventajas:
● Mayor complejidad para el desarrollo de software.
● Carece de funcionalidades de alto nivel a comparación de otros Sistemas
Operativos.
Página 11 de 18
Alumnos: Kremser Pablo
Sistemas Operativos I
Profesor: Guillermo Biderbosts
26/08/2019
Procesos
El sistema operativo brinda una representación abstracta y uniforme de los recursos que las
aplicaciones pueden solicitar y acceder (memoria principal, procesador, interfaces de red,
etc.). Esta gestión efectuada por el sistema operativo permite que los recursos estén
disponibles para múltiples aplicaciones, que el procesador físico conmute entre múltiples
aplicaciones, y que puedan utilizarse de forma eficiente.
El enfoque de todos los sistemas operativos modernos recae en un modelo bajo el cual una
aplicación se divide en uno o más procesos para poder ejecutarse.
Programa: Un programa es una secuencia de instrucciones, escritas para realizar una tarea
específica en una computadora. El programador puede acceder al mismo para modificar las
instrucciones e incorporar nuevas tareas. El programa como instancia estática se encuentra
almacenado en la memoria secundaria. Cuando se ejecuta dicho programa, pasa a ocupar
espacio en memoria principal, y se convierte en proceso.
Proceso: Un proceso es una instancia de un programa en ejecución, incluyendo los valores
actuales del contador de programa, los registros y las variables. El programa es la instancia
estática y el proceso es la instancia dinámica. En estos tiene acción el sistema operativo
más que el programador.
Creación de un proceso
Los sistemas operativos necesitan cierta manera de crear y terminar procesos según sea
necesario. Para crear un proceso hay que hacer que un proceso existente ejecute una
llamada al sistema de creación de proceso. Esta llamada al sistema indica al sistema
operativo que cree un proceso y le indica cuál programa debe ejecutarlo.
Página 12 de 18
Alumnos: Kremser Pablo
Sistemas Operativos I
Profesor: Guillermo Biderbosts
26/08/2019
Cada proceso tiene su propio espacio de direcciones, por lo que si modifica una palabra en
su espacio de direcciones, esta modificación no es visible para el otro proceso. El
mecanismo por el cual un proceso crea otro proceso se denomina bifurcación (fork). Los
nuevos procesos pueden ser independientes y no compartir el espacio de memoria con el
proceso que los ha creado o ser creados en el mismo espacio de memoria.
Se usa una variable de tipo semáforo para sincronizar los procesos. Si un proceso está
esperando una señal, se suspende hasta que la señal se envíe. Se mantiene una cola de
procesos en espera en el semáforo. La forma de elegir los procesos de la cola en espera es
mediante una política first in first out.
A menudo, un proceso en ejecución emitirá llamadas al sistema para crear uno o más
procesos nuevos, para que le ayuden a realizar su trabajo. En especial, es útil crear procesos
cuando el trabajo a realizar se puede formular fácilmente en términos de varios procesos
interactivos relacionados entre sí, pero independientes en los demás aspectos.
En los sistemas interactivos, los usuarios pueden iniciar un programa, lo que desencadena
el inicio de un proceso.
La última situación en la que se crean los procesos se aplica sólo a los sistemas de
procesamiento por lotes que se encuentran en las mainframes grandes. Aquí los usuarios
pueden enviar trabajos de procesamiento por lotes al sistema (posiblemente en forma
Página 13 de 18
Alumnos: Kremser Pablo
Sistemas Operativos I
Profesor: Guillermo Biderbosts
26/08/2019
remota). Cuando el sistema operativo decide que tiene los recursos para ejecutar otro
trabajo, crea un proceso y ejecuta el siguiente trabajo de la cola de entrada.
Terminación de procesos
Una vez que se crea un proceso, empieza a ejecutarse y realiza el trabajo al que está
destinado. Tarde o temprano el nuevo proceso terminará, por lo general debido a una de las
siguientes condiciones:
Página 14 de 18
Alumnos: Kremser Pablo
Sistemas Operativos I
Profesor: Guillermo Biderbosts
26/08/2019
Hilos
Definición:
Implementaciones:
En una aplicación ULT pura, todo el trabajo de gestión de hilos lo realiza la aplicación y el
núcleo o kernel no es consciente de la existencia de hilos. Es posible programar una
aplicación como multihilo mediante una biblioteca de hilos. La misma contiene el código
para crear y destruir hilos, intercambiar mensajes y datos entre hilos, para planificar la
ejecución de hilos y para salvar y restaurar el contexto de los hilos.
Todas las operaciones descritas se llevan a cabo en el espacio de usuario de un mismo
proceso. El kernel continúa planificando el proceso como una unidad y asignándole un
único estado (Listo, bloqueado, etc.).
Página 15 de 18
Alumnos: Kremser Pablo
Sistemas Operativos I
Profesor: Guillermo Biderbosts
26/08/2019
En una aplicación KLT pura, todo el trabajo de gestión de hilos lo realiza el kernel. En el
área de la aplicación no hay código de gestión de hilos, únicamente un API (interfaz de
programas de aplicación) para la gestión de hilos en el núcleo. Windows 2000 ,Linux y
OS/2 utilizan este método. Linux utiliza un método muy particular en que no hace
diferencia entre procesos e hilos, para linux si varios proceso creados con la llamada al
sistema "clone" comparten el mismo espacio de direcciones virtuales el sistema operativo
los trata como hilos y lógicamente son manejados por el kernel.
Página 16 de 18
Alumnos: Kremser Pablo
Sistemas Operativos I
Profesor: Guillermo Biderbosts
26/08/2019
✓ La sección de código.
✓ La sección de datos.
Estados de un Hilo:
Los principales estados de un hilo son: ejecución, preparado y bloqueado; y hay cuatro
operaciones básicas relacionadas con el cambio de estado de los hilos:
✓ Creación: En general, cuando se crea un nuevo proceso se crea también un hilo para
ese proceso. Posteriormente, ese hilo puede crear nuevos hilos dándoles un puntero
de instrucción y algunos argumentos. Ese hilo se colocará en la cola de preparados.
✓ Bloqueo: Cuando un hilo debe esperar por un suceso, se le bloquea guardando sus
registros. Así el procesador pasará a ejecutar otro hilo preparado.
Página 17 de 18
Alumnos: Kremser Pablo
Sistemas Operativos I
Profesor: Guillermo Biderbosts
26/08/2019
Al igual que los procesos, los hilos poseen un estado de ejecución y pueden sincronizarse
entre ellos para evitar problemas de compartición de recursos. Generalmente, cada hilo
tiene una tarea específica y determinada, como forma de aumentar la eficiencia del uso del
procesador.
Sincronización de hilos:
Todos los hilos comparten el mismo espacio de direcciones y otros recursos como pueden
ser archivos abiertos. Cualquier modificación de un recurso desde un hilo afecta al entorno
del resto de los hilos del mismo proceso. Por lo tanto, es necesario sincronizar la actividad
de los distintos hilos para que no interfieran unos con otros o corrompan estructuras de
datos.
Página 18 de 18