Logo Studenta

Guia parcial 2

¡Este material tiene más páginas!

Vista previa del material en texto

SO - Guía Parcial 2 
 
Cap 1: Introducción. Generalidades 
 
1. Qué es un sistema informático 
Sistema informático: formado por un sistema de computación y recursos humanos. 
Un sistema informático es un conjunto de partes que funcionan relacionándose entre sí con un objetivo preciso. Sus 
partes son: hardware, software y las personas que lo usan. Por ejemplo, una computadora, sus dispositivos 
periféricos y la persona que la maneja, pueden constituir un sistema informático. Un sistema informático puede 
formar parte de un sistema de información; en este último la información, uso y acceso a la misma, no 
necesariamente está informatizada. Por ejemplo, el sistema de archivo de libros de una biblioteca y su actividad en 
general es un sistema de información. Si dentro del sistema de información hay computadoras que ayudan en la 
tarea de organizar la biblioteca, entonces ese es un sistema informático. 
 
2. Qué es un sistema de computación 
Se habla de un sistema de computación cuando se está en presencia de un conjunto que incluye uno o varios 
procesadores con su respectiva unidad de control más los periféricos que el caso amerita. 
Se incuye como elemento integrante de este sistema, el Firmware y el Software, ya que el Hardware solo, no es 
operable. 
 
3. Qué es un sistema operativo. Funciones 
Un sistema operativo es un software que gestiona el hardware de la computadora y proporciona un entorno para 
ejecutar los programas de aplicación. Estos existen porque ofrecen una forma razonable de resolver el problema de 
crear un sistema informático utilizable. Otra definición de sistema operativo: es aquel programa que se ejecuta 
continuamente en la computadora (usualmente denominado kernel), siendo todo lo demás programas del sistema y 
programas de aplicación. 
Tienen como función: 
• administrar los recursos de un sistema de computación 
• Facilitar el uso de los recursos a los usuarios y programas (servir de interfase). 
• Tratan de cumplir con diferentes objetivos (rendimiento, utilización de los recursos, etc), de acuerdo al tipo 
de sistema de computación que administran (Mainframe, PC, sistema en red, Palm, etc.) 
 
 
4. Cuáles son algunas de las tareas de administración que realiza? 
El sistema operativo como administrador de recursos 
El concepto del sistema operativo como algo cuya función primordial es ofrecer a los usuarios una 
Interfaz cómoda es una visión descendente. Una visión ascendente alternativa postula que el sistema operativo está 
ahí para administrar todos los componentes de un sistema complejo. Las computadoras modernas constan de 
procesadores, memorias, temporizadores, discos, ratones, interfaces con redes, impresoras láser y una gran 
variedad de otros dispositivos. En la visión alternativa, la misión del sistema operativo es asegurar un reparto 
ordenado y controlado de los procesadores, memorias y dispositivos de E/S entre los diferentes programas que 
compiten por ellos 
En resumen: 
Como administrador de recursos (tiempo de cpu, espacio de memoria, espacio almacenamiento de archivos, 
dispositivos de entrada/salida, etc.) tiene las siguientes funciones: 
• Asignador: controla a quien le corresponde que recursos. 
• Quitar: cuando sea necesario para resolver equitatividad, conflictos, etc. 
• Control: sólo a través de él, se puede ejecutar programas de usuario, ya que el sistema operativo se encarga 
de monitorear o controlar su ejecución. 
 
5. Cuáles son los recursos que administra? 
 
 
Los Sistemas Operativos son ante todo administradores de recursos; el principal recurso que administran es el 
hardware del computador ;además de los procesadores, los medios de almacenamiento, los dispositivos de 
entrada/salida, los dispositivos de comunicación y los datos. 
Actúa como intermediario entre el usuario y el hardware del computador y su 
propósito es proporcionar el entorno en el cual el usuario pueda ejecutar 
programas. Entonces, el objetivo principal de un Sistema Operativo es, lograr 
que el sistema de computación se use de manera cómoda, y el objetivo 
secundario es que el hardware del computador se emplee de manera eficiente. 
Un Sistema Operativo es un conjunto de programas que controla la ejecución de 
programas de aplicación y actúa como una interfaz entre el usuario y el 
hardware de una computadora, esto es, un Sistema Operativo explota y 
administra los recursos de hardware dela computadora con el objeto de 
proporcionar un conjunto de servicios a los usuarios del sistema. 
 
Administra los recursos de un computador cuando hay dos o más programas que ejecutan simultáneamente y 
requieren usar el mismo recurso (como tiempo de CPU, memoria o impresora). 
Además, en un sistema multiusuario, suele ser necesario o conveniente compartir, además de dispositivos físicos, 
información. Al mismo tiempo, debe tenerse en cuenta consideraciones de seguridad: por ejemplo, la información 
confidencial sólo debe ser accesada por usuarios autorizados, un usuario cualquiera no debiera ser capaz de 
sobreescribir áreas críticas del sistema, etc. (En este caso, un usuario puede ser una persona, un programa, u otro 
computador). En resumen, el sistema operativo debe llevar la cuenta acerca de quién está usando qué recursos; 
otorgar recursos a quienes los solicitan (siempre que el solicitante tenga derechos adecuados sobre el recurso); y 
arbitrar en caso de solicitudes conflictivas. 
 
6. Qué diferencias hay entre un sistema centralizado y uno distribuido 
Definición de ambos: 
Sistema centralizado: Se trata de aquel que utiliza los recursos de una sola computadora, es decir, su memoria, CPU, 
discos y periféricos. Respecto al hardware podemos decir que se suele tratar de un computador caro y de gran 
potencia con terminales alfanuméricos directamente conectados. 
Podemos encontrar este tipo de sistemas operativos en un entorno de empresa en la cual puede haber un soporte 
multiusuario. 
Uno de los primeros modelos de ordenadores interconectados fue el centralizado donde todo el procesamiento de 
la organización se llevaba a cabo en una sola computadora, normalmente en un Mainframe y los usuarios 
empleaban sencillos ordenadores personales. 
Los problemas de este modelo son que cuando la carga de procesamiento aumentaba, se tenía que cambiar el 
hardware del Mainframe, lo cual es más costoso que añadir más computadores personales clientes o servidores que 
aumenten las capacidades. El otro problema que surgió son las modernas interfaces graficas de usuario, las cuales 
podían conllevar a un gran aumento de tráfico en los medios de comunicación y por consiguiente podían colapsar. 
En un entorno familiar se puede encontrar una computadora. Estas tienen un sistema operativo centralizado porque 
el ordenador es único y no necesita trabajar en paralelo con ninguna otra computadora, ya que no se encuentra 
conectado a ninguna. Normalmente estos ordenadores tienen uno o dos procesadores potentes y caros que 
satisfacen las necesidades de cómputo del usuario. 
Sistemas operativos Distribuidos: Según Tanenbaum, un sistema distribuido es “una colección de computadoras 
independientes que aparecen ante los usuarios del sistema como una única computadora” 
De eso podemos entender que las máquinas son autónomas y los usuarios siempre piensan que el sistema es como 
una única computadora. Este sistema se caracteriza por comportarse frente al usuario como una sóla máquina, el 
usuario desconoce sobre que procesador se está ejecutando sus procesos y dónde residen sus ficheros. 
Debe haber un mecanismo de comunicación global entre los procesos, de forma que cualquier proceso pueda 
comunicarse con cualquier otro. También un sistema global de protección. La administración de procesos debe ser la 
misma en todas partes. La forma en que se crean, destruyen y detienen los procesos no debe variar de una máquina 
a otra. También el sistema de archivos debe tener la misma apariencia en todas partes. Como consecuencia lógica de 
hecho de tener una misma interfaz de llamadasal sistema en todas partes, es normal que se ejecuten núcleos 
idénticos en todos los CPU de sistema. Eso facilita la coordinación de las actividades globales. Por ejemplo, cuando se 
inicie un proceso, todos los núcleos deben cooperar en la búsqueda del mejor lugar para ejecutarlo. Los sistemas 
http://www.monografias.com/Computacion/Sistemas_Operativos/
http://www.monografias.com/trabajos15/computadoras/computadoras.shtml
http://www.monografias.com/trabajos5/sisope/sisope.shtml
http://www.monografias.com/trabajos14/medios-comunicacion/medios-comunicacion.shtml
http://www.monografias.com/trabajos12/dispalm/dispalm.shtml
http://www.monografias.com/trabajos14/dispositivos/dispositivos.shtml
http://www.monografias.com/trabajos14/dispositivos/dispositivos.shtml
http://www.monografias.com/trabajos12/fundteo/fundteo.shtml
http://www.monografias.com/trabajos16/objetivos-educacion/objetivos-educacion.shtml
http://www.monografias.com/trabajos37/la-moda/la-moda.shtml
http://www.monografias.com/trabajos15/computadoras/computadoras.shtml
http://www.monografias.com/trabajos15/computadoras/computadoras.shtml
http://www.monografias.com/trabajos14/verific-servicios/verific-servicios.shtml
 
 
distribuidos se basan en la utilización de sistemas de transmisión fiables, eficaces, rápidos que permitan integrar 
sistemas de distintos fabricantes. 
 
 
Algunos ejemplos de sistemas distribuidos son: 
• Una red de estaciones de trabajo en un departamento de una universidad o compañía, donde además de cada 
estación personal, podría existir una pila de procesadores en el cuarto de máquinas, que no estén asignados a 
usuarios específicos sino que se utilicen de manera dinámica cuando sea necesario. 
• Una fábrica de robots, donde los robots actúan como dispositivos periféricos unidos a la misma computadora 
central. 
• Un banco con muchas sucursales por el mundo, cada oficina tiene una computadora maestra para guardar las 
cuentas locales y el manejo de las transacciones locales, la cual se puede comunicar con cualquier computadora de 
la red. Las transacciones hechas se realizan sin importar dónde se encuentre la cuenta o el cliente. 
 
a) Sistemas centralizados: 
Ventajas: 
- Un punto de control. Mayor control de seguridad y protección de la información en un solo punto. 
- Fácil de mantener. Empresa con muchos cambios de requerimientos. Fácil despliegue de los cambios. Soporte en 
un solo punto. 
- Tomas de decisiones. Esta arquitectura es primordial en las tomas de decisiones centralizadas, en otro punto 
llamado de lógica de negocio de la empresa centralizada. 
 
Desventajas: 
- Interfaz de usuario poco llamativo. Por el uso de la red amplia, se evita tener pantalla con imágenes. Debe 
controlar el uso de ancho de banda de la red. 
- Velocidad de repuestas lenta, dependiendo la conexión de la red a la central. 
- Debe haber mecanismo de respaldo o copia del sistema centralizada en caso de contingencia muy estricta, 
muere el sistema central, muere el sistema a nivel general. 
- Crecimiento depende de los equipos que lo soporta. Si la empresa crece en forma exponencial por ejemplo, el 
equipo debe ser cambiado al no tener estos estudios de crecimiento o la actualización de equipo debe ser constante. 
 
 
b) Sistemas distribuidos: 
Ventajas: 
- Aumenta la confiabilidad al sistema. Esta arquitectura tiene redundancia, al fallar uno de los sistemas, las demás 
siguen funcionando. 
- Crecimiento de la empresa es soportable. Se realiza tantas copias del sistema en diferentes nuevos lugares 
geográficos. 
- Tomas de decisiones locales. La lógica de negocio y las tomas de decisiones en cada lugar es independiente uno del 
otro. 
- Distribución de datos. No está centralizada los datos de la empresa. Si la lógica de negocio en tener datos locales en 
las tomas de decisiones es factible, si no, irse a un sistema centralizado. 
- Uso de ancho de banda local. Permite tener interfaz muy amigable o vistosa. Solo se consume el ancho de la banda 
de una red local. 
- Velocidad de respuesta rápida, si los datos están en la red local. 
 
Desventajas: 
- Soporte local de la tecnología. Cada lugar geográfico debe tener su personal que soporte tecnológicamente esta 
arquitectura. 
- Una mala distribución de los datos, es peor que un sistema centralizado, uso en exceso de la red amplia. 
- Costo y complejidad del SW. 
- Costo en llevar los cambios del SW a cada lugar, en caso de mantenimiento. 
- Integridad de los datos es más difícil de controlar. 
- Uso de otra área de la tecnología, SW de seguridad, protección y de redes. 
 
 
En las ventajas y desventajas de cada arquitectura mencionado, se puede escapar muchas más, pero cada 
arquitectura es excluyente. 
 
 
 
7. Cómo logra ejercer poder de gobierno el SO? 
Logra ejercerlo gracias al hardware (este avisa por medio de interrupciones). El Hardware controla sobre CPU, 
memoria y dispositivos E/S 
 
 
Un sistema operativo: debiera comportarse como un gobierno (controla y coordina el uso de los recursos), ya que 
como tal no realiza ninguna función útil por sí mismo, sino que brinda el entorno para que los programas pueden 
hacer más fácil su trabajo. 
Como intermediario brinda facilidad de uso para que el usuario/programa aproveche los recursos. En las 
computadoras embebidas, existe poca interacción con el usuario. 
 
8. A qué se les denomina interrupciones? Cómo se las implementa? 
Interrupciones: son bifurcaciones externas al programa en ejecución, provocadas por señales que vienen del 
exterior. El objetivo es reclamar la atención de la CPU sobre algún acontecimiento o hecho externo importante, 
pidiendo que se ejecute un determinado programa para tratar ese acontecimiento. 
 
9. A qué se denomina excepciones o interrupciones de software? 
Las excepciones o traps se consideran como interrupciones internas al programa en ejecución y tienen un 
tratamiento similar. 
 
10. Para qué sirve la instrucción TRAP? Cómo se la usa? 
El comando TRAP se puede usar para capturar o ignorar las señales del sistema operativo. 
El formato del comando TRAP es: 
trap ?lista-comandos? lista-señales 
Los programas del usuario se comunican con el sistema operativo y le solicitan servicio mediante las llamadas al 
sistema. A cada una de ellas le corresponde un procedimiento de la biblioteca que pueden llamar los programas del 
usuario. Este procedimiento pone los parámetros de la llamada al sistema en un lugar específico, como pueden ser 
los registros de la máquina, para después ejecutar una instrucción TRAP (un tipo de llamada a procedimiento 
protegido) para iniciar el sistema operativo. 
La finalidad del procedimiento de biblioteca es ocultar los detalles de la instrucción TRAP y hacer que las llamadas al 
sistema perezcan llamadas comunes a un procedimiento. 
 
11. Cómo interactúan los ciclos de la instrucción y el de interrupción? 
 
 
 
12. De qué sirve el modelo de pirámide de memoria? 
 El objetivo es conseguir el rendimiento de una memoria de gran velocidad al coste de una memoria de baja 
velocidad, basándose en el principio de cercanía de referencias. 
 
13. Cuál es la función de la memoria tipo caché? 
Aunque la memoria cache es invisible para el sistema operativo, interactúa con otras partes del hardware de gestión 
de memoria. 
Principios de la cache: 
La memoria cache intenta obtener una velocidad cercana a la de las memorias más rápidas disponibles y, al mismo 
tiempo, proporcionar una memoria grande al precio de las memorias de semiconductores, que son menos costosas. 
Existe una memoria principal más lenta y relativamente grande, junto a una memoria cache más pequeña y más 
rápida. La cache contiene una copia de una parte de la memoria principal. Cuando el procesador intenta leer una 
palabra de la memoria, se comprueba si la palabra determinada está en la memoria cache. Si es así, la palabra se 
http://www.monografias.com/trabajos14/verific-servicios/verific-servicios.shtml
http://www.monografias.com/trabajos13/mapro/mapro.shtmlhttp://www.monografias.com/trabajos10/ponency/ponency.shtml
 
 
envía al procesador. Si no, un bloque de memoria principal, formado por un número fijo de palabras se introduce en 
la cache y, después, la palabra se envía al procesador. 
 
14. Cuáles son las técnicas para realizar las operaciones de Entrada/Salida 
Técnicas de comunicación de E/S 
Para las operaciones de E/S son posibles las tres técnicas siguientes: 
• E/S programada 
• E/S dirigida por interrupciones 
• Acceso directo a memoria (DMA) 
 
E/S programada 
Cuando el procesador está ejecutando un programa y encuentra una instrucción de E/S, ejecuta ducha instrucción, 
enviando una orden al módulo apropiado de E/S. Con E/S programada, el módulo de E/S llevará a cabo la acción 
requerida y luego activará los bits apropiados en el registro de estado de E/S. El módulo de E/S no lleva a cabo 
ninguna otra acción para avisar al procesador; de hecho ni lo interrumpe. Así pues, es responsabilidad del 
procesador comprobar periódicamente el estado del módulo de E/S hasta saber que se ha completado la operación. 
E/S dirigida por interrupciones 
El problema de la E/S programada es que el procesador tiene que esperar un largo rato a que el módulo de E/S en 
cuestión esté listo para recibir o transmitir más datos. El procesador, mientras está esperando, debe interrogar 
repetidamente por el estado del módulo de E/S. Como resultado, el nivel de rendimiento del sistema en conjunto se 
degrada fuertemente. 
Una alternativa es que el procesador envíe una orden de E/S al módulo y se dedique a hacer alguna otra tarea útil. El 
módulo de E/S interrumpirá entonces al procesador para requerir sus servicios cuando esté listo para intercambiar 
los datos. El procesador ejecuta entonces la transferencia de los datos y reanuda el procesamiento anterior. 
Casi siempre existirán varios módulos de E/S en un sistema informático, así que hacen falta mecanismos que 
capaciten al procesador para determinar qué dispositivo causó la interrupción y decidir, en caso de varias líneas de 
interrupción, de forma que cada módulo de E/S envía una señal por una línea distinta. Cada línea tiene una prioridad 
diferente o, si no, puede haber una única línea de interrupción, pero utilizando líneas adicionales para indicar la 
dirección del dispositivo. 
Acceso directo a la memoria 
La E/S dirigida por interrupciones, aunque es más eficiente que la simple E/S programada, todavía requiere de la 
intervención activa del procesador para transferir los datos entre la memoria y un módulo de E/S y además cualquier 
transferencia de datos debe recorrer un camino que pasa por el procesador. 
La función de DMA se puede llevar a cabo por medio de un módulo separado sobre el bus del sistema o puede estar 
incorporada dentro de un módulo de E/S. En cualquier caso, la técnica funciona como sigue. Cuando el procesador 
desea leer o escribir un bloque de datos, emite una orden hacia el módulo de DMA, enviándole la información 
siguiente: 
• Si lo que se solicita es una lectura o una escritura 
• La dirección del dispositivo de E/S involucrado 
• La dirección inicial de memoria desde la que se va a leer o a la que se va a escribir 
• El número de palabras a leer o escribir 
El procesador continúa entonces con otro trabajo. Habrá delegado la operación de E/S en el módulo de DMA y dicho 
módulo es el que tendrá que encargarse de ésta. El módulo de DMA transfiere el bloque entero, una palabra cada 
vez, directamente hacia o desde la memoria, sin pasar por el procesador. Cuando se completa la transferencia, el 
módulo de DMA envía una señal de interrupción al procesador. De esta manera, el procesador se ve involucrado sólo 
al inicio y al final de la transferencia. 
 
15. Cuáles son las ventajas de los sistemas multiprocesadores? 
Los sistemas operativos multiprocesador (MP) son un tipo de arquitectura con una importancia creciente y 
ampliamente difundido. La mayoría de los constructores de computadores ofrecen máquinas en las que están 
presentes más de una CPU, configuración que es hoy en día de uso habitual en casi todos los sistemas de tamaño 
medio y grande, incluso ya en ordenadores personales. Asimismo, los fabricantes de procesadores incorporan a sus 
arquitecturas, desde hace unos años, los mecanismos necesarios para que éstos se puedan emplear fácilmente, y 
con un coste reducido (publicidad de Sun Microsystems en 1999: "si compra un procesador, le regalamos otro"), en 
la construcción de este tipo de sistemas 
 
 
Esto quiere decir que los sistemas multiprocesadores proporcionan una alternativa arquitectónica atractiva para 
mejorar el rendimiento de los sistemas informáticos mediante la reunión de un cierto número de procesadores 
estándares de bajo costo y por medio de una comunicación entre estos. La comunicación se puede realizar enviando 
mensajes de un procesador a otro o compartiendo una memoria común. 
El costo relativamente alto de los sistemas multiprocesadores puede ser compensado si se les emplea como 
servidores de cálculo en sistemas distribuidos. 
VENTAJAS: 
·Es económica. 
·El uso de componentes comúnmente disponibles, en grandes cantidades, permite ofrecer mayor rendimiento, a un 
precio menor que el de máquinas con procesadores especialmente diseñados (como por ejemplo las máquinas de 
procesadores vectoriales y de propósito específico). 
·Adicionalmente, las computadoras paralelas son inherentemente escalables, permitiendo actualizarlas para 
adecuarlas a una necesidad creciente. 
·Las arquitecturas “tradicionales” se actualizan haciendo los procesadores existentes obsoletos por la introducción 
de nueva tecnología a un costo posiblemente elevado. Por otro lado, una arquitectura paralela se puede actualizar 
en términos de rendimiento simplemente agregando más procesadores. 
·En 15 ó 20 años, el rendimiento de los Uniprocesadores llegará a su fin, debido a dos razones: Incrementar el 
rendimiento conectando uniprocesadores en paralelo, menos costoso que diseñar un nuevo procesador. 
·El ritmo de innovación en la endoarquitectura es difícil de mantener indefinidamente. 
DESVENTAJAS: 
·En ocasiones se menciona también la limitante física; existen factores que limitan la velocidad máxima de un 
procesador, independientemente del factor económico. 
·Barreras físicas infranqueables, tales como la velocidad de la luz, efectos cuánticos al reducir el tamaño de los 
elementos de los procesadores, y problemas causados por fenómenos eléctricos a pequeñas escalas, restringen la 
capacidad máxima de un sistema uniprocesador, dejando la opción obvia de colocar muchos procesadores para 
realizar cálculos cooperativamente. 
·Cada 2 ó 3 años, alguien anuncia el fin de los UniProcesadores pero a los 2 ó 3 años se disparan las prestaciones por 
una nueva idea arquitectónica. Esto es debido a que hay mucho mercado, mucha inversión, mucho avance: 
segmentación, vectorización, superescalaridad, hyperThreading, etc. 
·Lentitud en las comunicaciones: latencia a memoria local es del orden de pocos ns, en multiprocesador, si un 
Proceso necesita un dato remoto hay alta latencia, del orden de microsegundos. 
 
16. Qué diferencias hay entre multiprocesamiento simétrico y asimétrico? 
Existen dos tipos de multiproceso, el asimétrico y el simétrico. En el asimétrico hay un procesador (maestro) en el 
cual se ejecuta el sistema operativo y los demás (esclavos) donde se ejecutan las demás tareas. La ventaja de éste es 
que al aumentar más procesadores se tiene que hacer un cambio mínimo y fácil para el manejo de éstos y en general 
se eliminan muchos problemas de integridad de datos. La gran desventaja es que al haber sólo una copia del sistema 
operativo en un sólo procesador (maestro) cuando este procesador falla todo el sistema falla porque todos los 
recursos que son manejados por el sistema operativo no pueden ser accesados. 
 
En el simétrico se ejecuta el sistema operativo - o una gran parte de él - en cualquiera de los procesadores 
disponibles y todos ellos tienenacceso a los recursos a menos que cada recurso sea asignado a un procesador 
específico. Aunque es más difícil de implementar tiene muchas más ventajas. Primero, este tipo de sistemas tienden 
a ser más eficientes porque las tareas tanto del sistema operativo como de los usuarios pueden ser distribuídas en 
forma balanceada a todos los procesadores. Debido a que las demandas del sistema operativo pueden ser repartidas 
a todos los procesadores, el tiempo de inactividad de un procesador mientras otro está sobretrabajando es mínimo. 
Segunda, si un procesador falla, es posible que sus tareas sean repartidas entre los demás y no es necesario que todo 
el sistema sea parado o que falle el sistema. Y finalmente, la portabilidad del sistema es mayor debido a que no sigue 
la arquitectura de mastrer/slave. NT implementa este modelo de multiproceso. 
 
17. Qué diferencia hay entre un Dual-core y un SMP? 
Un dual core tiene bancos de registros(tiene una sola CPU, tiene tantos bancos de registros como core dice tener), 
mientras que un SMP tiene un procesador separado para ejecutar códigos diferentes simultáneamente. 
 
18. Cuál es la característica de las multicomputadoras? 
 
 
La característica más importante de estos sistemas es que tienen la memoria distribuida. Esta arquitectura también 
es conocida como arquitectura basada en el paso de mensajes, ya que los procesos deben realizar comunicaciones 
(mensajes) a través de la red de interconexión para poder compartir datos. Estas máquinas, por consiguiente, no 
están limitadas por el ancho de banda de memoria, sino más bien por el de la red de interconexión 
19. A qué se denomina multiprogramación? 
Se denomina multiprogramación a una técnica por la que dos o más procesos pueden alojarse en 
la memoria principal y ser ejecutados concurrentemente por el procesador o CPU. Permite que varios programas de 
usuario estén activos a un mismo tiempo. Cuando el procesador tiene que tratar con una serie de programas, el 
orden en que estos se ejecutan dependerá de su prioridad relativa y de si están esperando E/S. Cuando un programa 
es interrumpido y se transfiere el control a la rutina de tratamiento de la interrupción, una vez que ésta haya 
terminado, puede que no se devuelva el control inmediatamente al programa de usuario que estaba ejecutándose 
en el momento de la interrupción. 
20. Qué diferencia hay entre el modo usuario y el modo kernel? 
El modo kernel sirve para ejecutar el S.O. y permite ejecutar todas las instrucciones. En cambio el modo usuario sirve 
para ejecutar todas las aplicaciones del usuario y no permite que se realicen ciertas instrucciones peligrosas. 
21. En un modelo de pirámide de memoria, quién administra los niveles: 
a. Registros - Hardware 
b. Caché - Hardware 
c. Memoria Principal – El So 
d. Almacenamiento de disco – El SO 
22. Cuáles son las características de los sistemas de tiempo real? 
La aplicación exige se dé respuesta en un tiempo determinístico 
Determinismo 
El determinismo es una cualidad clave en los sistemas de tiempo real. Es la capacidad de determinar con una alta 
probabilidad, cuanto es el tiempo que se toma una tarea en iniciarse. Esto es importante porque los sistemas de 
tiempo real necesitan que ciertas tareas se ejecuten antes de que otras puedan iniciar. 
Esta característica se refiere al tiempo que tarda el sistema antes de responder a una interrupción. Este dato es 
importante saberlo por que casi todas las peticiones de interrupción se generan por eventos externos al sistema (i.e. 
por una petición de servicio), así que es importante determinar el tiempo que tardara el sistema en aceptar esta 
petición de servicio. 
Responsividad 
La responsividad se enfoca en el tiempo que tarda una tarea en ejecutarse una vez que la interrupción ha sido 
atendida. Los aspectos a los que se enfoca son: 
• La cantidad de tiempo que se lleva el iniciar la ejecución de una interrupción 
• La cantidad de tiempo que se necesita para realizar la tarea que pidió la interrupción. 
• Los efectos de interrupciones anidadas. 
Una vez que el resultado del cálculo de determinismo y responsividad es obtenido, se convierte en una característica 
del sistema y un requerimiento para las aplicaciones que correrán en él,(por ejemplo, si diseñamos una aplicación en 
un sistema en el cual el 95% de las tareas deben terminar en cierto período entonces es recomendable asegurarse 
que las tareas ejecutadas de nuestra aplicación no caigan en el 5% de bajo desempeño). 
Usuarios controladores 
En estos sistemas, el usuario (por ejemplo, los procesos que corren en el sistema) tienen un control mucho más 
amplio del sistema. 
• El proceso es capaz de especificar su prioridad 
• El proceso es capaz de especificar el manejo de memoria que requiere (que parte estará en caché y que 
parte en memoria swap y que algoritmos de memoria swap usar) 
• El proceso especifica que derechos tiene sobre el sistema. 
Esto aunque parece anárquico no lo es, debido a que los sistemas de tiempo real usan tipos de procesos que ya 
incluyen estas características, y usualmente estos TIPOS de procesos son mencionados como requerimientos. Un 
ejemplo es el siguiente: 
Los procesos de mantenimiento no deberán exceder el 3% de la capacidad del procesador, a menos que en el 
momento que sean ejecutados el sistema se encuentre en la ventana de tiempo de menor uso. 
Confiabilidad 
La confiabilidad en un sistema de tiempo real es otra característica clave. El sistema no debe solamente estar libre de 
fallas pero más aún, la calidad del servicio que presta no debe degradarse más allá de un límite determinado. 
 
 
El sistema debe de seguir en funcionamiento a pesar de catástrofes, o fallas mecánicas. Usualmente una 
degradación en el servicio en un sistema de tiempo real lleva consecuencias catastróficas, 
Operación a prueba de fallas duras (Fail hard operation) 
El sistema debe de fallar de manera que: cuando ocurra una falla, el sistema preserve la mayor parte de los datos y 
capacidades del sistema en la mayor medida posible. 
Que el sistema sea estable, es decir, que si para el sistema es imposible cumplir con todas las tareas sin exceder sus 
restricciones de tiempo, entonces el sistema cumplirá con las tareas más críticas y de más alta prioridad. 
 
Cap 2: Estructura de los Sistemas Operativos 
 
 
1. Las órdenes tienen distintos niveles de 
ejecución, cuál es el procesador en cada caso? 
a. Comandos 
b. Llamada al sistema 
c. Instrucción en lenguaje ensamblador 
d. Instrucción en lenguaje binario 
 
 
 
 
2. Qué diferencias hay entre la comunicación 
por memoria compartida y por paso de mensajes? 
 
 
 
En la comunicación por memoria compartida, los procesos se pueden comunicar a través de variables compartidas 
(uno escribe y el otro lee la variable). Aquí no interviene el kernel. Es más rápida, pero pueden ocurrir problemas, 
porque pueden ser cortados los procesos en un momento inapropiado. 
Cuando se da con paso de mensajes, participa el so, porque recibe las llamadas al sistema de (mensaje enviado y de 
recibir mensaje). Participa el kernel, es más seguro pero más lento. 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
3. Cómo se implementan las llamadas al sistema? 
Llamadas al sistema: está bien decir que son la “Interfaz que ofrece el SO para que le soliciten servicios”. Por 
supuesto podrá pedirlo cuando el programa se esté ejecutando. Un usuario no puede solicitar interactivamente este 
servicio, escribiendo la llamada al sistema por teclado. Las llamadas al sistema son rutinas escritas en C o en lenguaje 
ensamblador. 
Para efectuar una llamada al sistema, un programa puede llamar a una función (otra interfaz más fácil y amigable: no 
hace falta saber tanto de cómo funciona) (comunicación de un software con otro software) que se encargue de los 
detalles de la solicitud. Entonces dependiendo del sistema operativo y del lenguaje de programación que se use, los 
métodos para acceder a los servicios del sistema operativo son diferentes, aunque en todosse llama a una función, 
que se ejecuta en modo usuario y desde allí se invoca a la llamada al sistema. Los 3 métodos son: a) funciones de API 
(p.ej. en Windows: win32), b) las funciones que vienen en los compiladores, por ej en C (en UNIX) y 3) la API de Java 
para que corran sobre una máquina virtual. Casi siempre, las funciones especifican parámetros que le hacen falta a la 
llamada y también un número de posición (como si fuera un vector), para localizar la dirección de la rutina de la 
llamada al sistema. 
Las llamadas al sistema suelen agruparse por el tipo de servicio que brinda: a procesos, a archivos, a dispositivos, 
comunicaciones y mantenimiento. 
 
4. Qué servicios se proveen con los programas del sistema? Qué ventajas ofrecen? 
Además de los servicios puntuales que brindan las llamadas al sistema a los programas de usuarios, el sistema ofrece 
un conjunto de programas que faciliten el desarrollo y ejecución de programas. Los programas de sistemas pueden 
ser: 
• Administradores de archivos y directorios. 
• Editores de textos. 
• Utilitarios: compiladores, ensambladores, intérpretes para lenguajes de programación, cargadores, enlazadores, 
etc. 
 
5. Qué características tienen los sistemas operativos de estructura simple o monolítica? 
Fuente 1: 
Se denominan sistemas operativos monolíticos a aquellos que concentran todas las funciones en un solo código 
ejecutable. Ya se trate de MS-DOS (que ejecutaba tanto el sistema operativo como las aplicaciones de usuario en un 
único modo de procesador) o de Unix (que a pesar de distinguir modo privilegiado: El kernel y modo usuario: las 
aplicaciones) se observan muchas funciones en un solo nivel y lo que es peor, el código de usuario se introduce en el 
kernel (MS-DOS) o continúa como proceso, sólo que cambiando de modo (UNIX). 
Fuente 2: 
La mayoría de los núcleos de Unix son monolíticos. Hay que recordar que un núcleo monolítico es aquel que incluye 
prácticamente toda la funcionalidad del sistema operativo en un gran bloque de código que se ejecuta como un 
proceso con un único espacio de direcciones. Todos los componentes funcionales del núcleo tienen acceso a todas 
las estructuras de datos y rutinas internas. Si se hacen cambios en cualquier parte del sistema operativo monolítico 
típico, se deberían reenlazar y reinstalar todos los módulos y rutinas y se deberá reinicializar el sistema antes de que 
los cambios tengan efecto. Como resultado, resulta difícil cualquier modificación, como añadir un nuevo controlador 
de dispositivo o una función del sistema de archivos. 
En síntesis, es monolítico porque el código a nivel de usuario y del kernel se ejecutan en el ámbito de un proceso 
 
6. Y los sistemas operativos de enfoque por capas? 
Cuando un sistema operativo se estructura en capas o niveles, permite independencia entre nivel y nivel y sólo 
aparece los servicios que le brindará el nivel inferior a una capa superior. Tiene como principal ventaja la simplicidad 
de la construcción y la depuración. El principal problema es definir las funciones de cada nivel, porque ahí se 
establece la relación de los servicios. Otro problema es que son menos eficientes que otras implementaciones, ya 
que se tarda en comunicar los niveles. 
 
 
 
7. Y los sistemas operativos de tipo microkernel? 
Los sistemas operativos del tipo microkernel, se basan en estructurar las funciones no esenciales de un sistema 
operativo como programas del sistema (es decir que pueden correr en modo usuario) y dejan sólo las funciones 
vitales: planificación de la cpu, gestión de memoria y mecanismo de comunicaciones por paso de mensajes de 
procesos (clientes y servidores) y rutinas de interrupción. Ventajas: 
• La modularidad o capacidad de ampliar el sistema operativo. 
• La portabilidad, es decir es más fácil sólo adecuar el microkernel al nuevo procesador, ya que los procesos se 
pueden recompilar para otro hardware. 
• Seguridad y robustez: porque sí fallan los códigos de los procesos del sistema, porque son atacados por malware, 
no afectan al microkernel. 
Como desventajas a este diseño está el pobre rendimiento que poseen por la carga excesiva de administración, 
debido a la participación del kernel en cualquier comunicación de procesos. 
Un diseño de sistema operativo orientado a objetos o modular, puede resultar muy atractivo. El kernel es modular y 
enlaza dinámicamente los servicios que se van agregando en tiempo de ejecución. Es más eficiente que microkernel 
porque no necesitan los pasos de mensajes para comunicarse los módulos que se enlazan con el kernel. Como 
ejemplo, aparece el sistema operativo Mac OS X de Apple. 
 
8. Qué es una máquina virtual? 
Las máquinas virtuales son software que simulan o abstrae el hardware de la computadora (cpu, memorial, 
unidades de disco, etcétera), creando así la ilusión de que es otro el hardware donde se está ejecutando. Las 
máquinas virtuales van desde la ilusión que les ofrece un sistema operativo a los procesos (ellos creen que disponen 
del computador sólo para sí mismos), hasta un sistema operativo como VM de IBM, que permite ejecutar diferentes 
sistemas operativos sobre un único hardware. Lo más difícil de implementar estas máquinas virtuales, es el hecho de 
que separan el modo kernel en virtual y físico, para poder ejecutar instrucciones privilegiadas que surgen de los 
sistemas operativos invitados a correr sobre la máquina virtual. Además el rendimiento de los software que corren 
sobre máquinas virtuales es mucho menor que si corriera sobre máquinas físicas. Dentro de los beneficios que se 
obtienen con las máquinas virtuales: 
• está la protección que se ofrece por estar completamente aislada de las demás, 
• Un excelente mecanismo para prueba de diferentes sistemas operativos y software. 
• Un mejor aprovechamiento de los recursos de hardware que se puede acceder en sistemas que son servidores 
(en una misma máquina pueden estar servidores de archivo, de base de datos, Web, etc.) 
Como ejemplos de máquinas virtuales de sistemas, se puede nombrar: VMware, VirtualBox, VirtualPC, etc. Como 
máquinas virtuales de procesos (o de aplicación), aparece la máquina virtual java, el entorno .NET de Microsoft, etc. 
 
9. Qué diferencia hay entre hipervisor tipo 1 y tipo 2 
Existen tres tipos principales de hipervisores en el mercado: 
i) Hipervisores de tipo 1 (También llamados nativos, unhosted o bare-metal): en ellos el hipervisor se ejecuta 
directamente sobre el hardware físico; el hipervisor se carga antes que ninguno de los sistemas operativos invitados, 
y todos los accesos directos a hardware son controlados por él. 
Aunque esta es la aproximación clásica y más antigúa de la vitualización por hardware, actualmente las soluciones 
más potentes de la mayoría de fabricantes usa este enfoque. Es el caso de Microsoft Hyper-V, Citrix XEN Server y 
VMWare ESX-Server. 
Nota: es muy frecuente que a los hipervisores en general se les aplique el término VMM (Monitores de máquina 
virtual), mientras que el término “Hypervisor” se reserva para los hipervisores de tipo 1. 
ii) Hipervisores de tipo 2 (también llamados hosted): en ellos el hipervisor se ejecuta en el contexto de un sistema 
operativo completo, que se carga antes que el hipervisor. Las máquinas virtuales se ejecutan en un tercer nivel, por 
encima del hipervisor. 
Son típicos de escenarios de virtualización orientada a la ejecución multiplataforma de software, como en el caso de 
CLR de .NET o de las máquinas virtuales de Java. 
iii) Hipervisores híbridos: en este modelo tanto el sistema operativo anfitrión como el hipervisor interactúan 
directamente con el hardware físico. 
Las máquinas virtuales se ejecutan en un tercer nivel con respecto al hardware, por encima del hipervisor, 
pero también interactúan directamente con el sistema operativo anfitrión. 
Es la aproximación usada en Microsoft Virtual PC, Microsoft Virtual Server, Parallels, VirtualBox, VMWare Server… 
 
 
Nota: en algunas clasificaciones es posible que se incluyanlos VMM de tipo híbrido dentro de los de tipo 2. 
 
 
 
 
 
Los hipervisores de tipo 1 a su vez pueden ser de dos tipos: 
i) Monolíticos: son hipervisores que emulan hardware para sus máquinas virtuales. 
Esta aproximación, usada por productos como VMWare ESX, obliga a usar una gran cantidad de código que se 
interpone entre los recursos físicos reales y las operaciones de acceso a ellos efectuadas por las máquinas virtuales. 
El proceso que sigue una llamada a hardware en un sistema virtualizado usando un hipervisor de tipo monolítico es: 
1) El hardware emulado debe interceptar la llamada. 
2) El VMM redirije estas llamadas hacia los drivers de dispositivo que operan dentro del hipervisor, lo cual requiere 
de numerosos cambios de contexto en el código de la llamada. 
3) Los drivers del hipervisor enrutan la llamada hacia el dispositivo físico. 
Este funcionamiento obliga a desarrollar drivers específicos para el hipervisor de cada componente hardware. 
ii) De MicroKernel: en esta aproximación el hipervisor se reduce a una capa de software muy sencilla, cuya única 
funcionalidad es la de particionar el sistema físico entre los diversos sistemas virtualizados. 
Con esta manera de funcionar los hipervisores de microkernel no requieren de drivers específicos para acceder al 
hardware. 
En el caso de Hyper-V, que es la solución de virtualización de Microsoft basada en hipervisor de tipo 1 de 
microkernel, el acceso a los recursos físicos se hace desde la partición primaria, usando los drivers nativos de 
Windows Server 2008 R2. 
En las particiones hija se utilizan drivers sinténticos, que son simplemente enlaces a los drivers reales ubicados en la 
partición primaria. 
De esta manera los hipervisores de microkernel no sólo aumentan el rendimiento al reducir el código intermedio y el 
número de cambios de contexto necesarios, sino que también aumentan la estabilidad de los sistemas, al haber 
menos componentes, y sobre todo la seguridad, al reducir la superficie de ataque del hipervisor. 
 
10. Qué ventajas tiene ejecutar programas en la máquina virtual de Java? 
Dentro de los beneficios que se obtienen con las máquinas virtuales: 
• está la protección que se ofrece por estar completamente aislada de las demás, 
• Un excelente mecanismo para prueba de diferentes sistemas operativos y software. 
• Un mejor aprovechamiento de los recursos de hardware que se puede acceder en sistemas que son servidores 
(en una misma máquina pueden estar servidores de archivo, de base de datos, Web, etc.) 
 
 
 
 
 
http://www.datakeeper.es/wp-content/uploads/2011/12/Tipos_hipervisores.jpg
 
 
 
 
 
 
 
11. Qué diferencia hay entre compilación e interpretación 
 
 
 
Cap 3: Procesos 
 
1. Qué es un proceso 
Los términos trabajo o proceso se usan indistintamente pero es preferible llamarlos procesos. Un proceso es una 
instancia de un programa en ejecución, y es la base de todo sistema informático. 
La ejecución de un proceso es de manera secuencial, es decir que no se pueden ejecutar más de una instrucción en 
forma simultánea (es decir en paralelo). 
Es una entidad viva que consume recursos, y hay que controlarla para q pueda ejecutarse dentro de los límites 
establecidos. 
El proceso incluye el código, la actividad actual que queda representada por el valor del contador de programa y por 
los contenidos de los registros, y la pila del proceso que contiene datos temporales. 
 
2. Ventajas de la noción de proceso 
Para que se pueda ejecutar un programa en sistemas de computación previamente hay que hacerlos procesos, es 
decir definir algunos mecanismos, darle algunos controles y encuadrarlo de manera que el sistema operativo no 
pierda el control una vez que comienza a ejecutarse ese código. 
 
 
 
3. Espacio de direcciones de un proceso (imagen de un proceso) 
Imagen de un proceso cuando le hemos asignado un espacio en memoria. 
En el espacio de text (texto): está el código, es decir que ahí se carga el archivo ejecutable que fue sacado del disco. 
Es decir que ahí están las instrucciones. 
En data (datos ): se almacenan las variables globales que han sido definidas para esta ejecución. 
Heap (cumulo de memoria): es una zona dinámica, se almacenan algunas 
variables que no caben en la sección de datos (definida estáticamente). Este 
crece desde direcciones más bajas de memoria hacia las más altas. 
Stack (pila): arranca de su posición máxima de memoria y crece hacia 
direcciones más bajas de memoria. 
 
4. Tabla de Procesos. Bloque de control de Proceso (PCB) 
Cada proceso se representa en el sistema operativo mediante un bloque de 
control de proceso (PCB, process control block), también denominado bloque 
de control de tarea. 
Un bloque de control de proceso contiene muchos elementos de información 
asociados con un proceso específico, entre los que se incluyen: 
• Estado del proceso: nuevo, preparado, etc. 
• Contador de programa: el contador indica la dirección de la siguiente instrucción que va a ejecutar dicho proceso. 
• Registros de la cpu: varían en cuanto a número y tipo, dependiendo de la arquitectura de la computadora. Incluyen 
los acumuladores, registros de índice, punteros de pila y registros de propósito general, además de toda la 
información de los registros de estado. Cuando se produce una interrupción debe guardarse la información de 
estado junto con el contador de programa para q el proceso pueda continuar correctamente. 
• Información de planificación de la cpu: esta información incluye la prioridad del proceso, los punteros a las colas de 
planificación y cualesquiera otros parámetros de planificación que se requieran 
• Información de gestión de memoria: incluye información acerca del valor de los registros base y limite, las tablas de 
páginas o las tablas de segmentos, dependiendo del mecanismo de gestión de memoria utilizado por el sistema 
operativo. 
• Información contable: esta información incluye la cantidad de cpu y de tiempo real empleados, límites de tiempo 
asignados, los números de cuenta, el numero de trabajo o de proceso, etc. 
• Información del estado de E/S: esta información incluye la lista de los dispositivos de E/S asignados al proceso, una 
lista de archivos abiertos, etc. 
En resumen el pcb sirve simplemente como repositorio de cualquier información que pueda variar de un proceso a 
otro. 
 
5. Estados de un proceso 
El estado de un proceso se define, según la actividad actual de dicho proceso. Cada proceso puede estar en uno de 
los siguientes estados: 
a. nuevo: el proceso está siendo creado. 
b. En ejecución: se están ejecutando las instrucciones en una CPU. 
c. En espera: el proceso está esperando a que se produzca un 
suceso (como la terminación de una operación de entrada/salida con la 
recepción de la señal). 
d. Preparado: el proceso tal espera de que se le asigne el 
procesador. 
e. Terminado: ha terminado la ejecución del proceso. 
Cada proceso está representado en el sistema operativo mediante un bloque de control de proceso (PCB) 
 
6. Cambios de contexto y de proceso 
Cuando hablamos de una estructura de sistema operativo multiprogramada hay muchos programas que pueden 
estar siendo ejecutados, entonces para administrar los recursos que son escasos (como ser la cpu que es una sola) se 
hace una alternancia entre los procesos para el uso del cpu para que todos tengan igualdad de oportunidades o bien 
con una asignación de prioridades. Entonces el cambio de proceso seria cuando un proceso sale de ejecución para 
darle lugar a otro proceso que viene del estado listo o preparado para pasar al estado de ejecución. Este proceso es 
elegido por el planificador. Para que un proceso salga de ejecución hay dos formas: 
 
 
• Cuando hace una llamada al sistema para esperar algún evento o una E/S 
• O viene una interrupción y entonces se saca al proceso del cpu (salida involuntaria) 
Entonces el proceso p0 hace una llamada al sistema o es sacado de ejecución por una interrupción. Entonces lo 
primero que se hace es salvar el estado delprocesador en el PCB correspondiente al proceso PCB0, a continuación se 
carga el procesador con los datos de un nuevo proceso que se va a ejecutar (proceso p1) y comienza a ejecutarse el 
p1 y cambia a estado de ejecución hasta q nuevamente ocurre una interrupción o llamada al sistema. Entonces 
salvamos la información del proceso 1 y recuperamos la información del proceso p0 que estaba almacenada en el 
PCB0. Estos pasos se conocen como el cambio de proceso. 
Y en este caso decimos que el procesador hizo un cambio de contexto, paso del contexto del proceso p0 al contexto 
del proceso p1. Para nosotros esto será como un cambio de proceso directamente. 
El objetivo de la multiprogramación es conmutar la CPU entre los distintos procesos con tanta frecuencia que los 
usuarios puedan interactuar con cada programa mientras este se ejecuta. Para conseguir esto el planificador de 
procesos selecciona un proceso disponible para ejecutar el programa en la cpu. 
Cambio de contexto: cuando una cpu cambia a otro proceso (es decir deja de ejecutar uno para pasar a ejecutar otro 
proceso), el sistema debe salvar el estado del viejo proceso y cargar el estado del nuevo proceso a través de un 
cambio de contexto. El contexto de un proceso está representado en el PCB e incluye el valor de los registros de la 
cpu, el estado del proceso y la información de gestión de memoria. El kernel es el que guarda el contexto del proceso 
antiguo en su PCB Y carga el contexto del nuevo proceso que se va a ejecutar. El tiempo de cambio de contexto es 
tiempo desperdiciado, dado que el sistema no realiza ninguna tarea útil durante la conmutación, y la velocidad de 
dicho cambio varia de una maquina a otra, dependiendo de la velocidad de memoria, del número de registros que 
deban copiarse y de la existencia de instrucciones especiales. 
 
7. Procesos batch versus procesos interactivos 
Sistemas batch system: poseen programas que no tienen ningún tipo de interaccion con el ser humano, esos 
programas cuando se ejecutan están haciéndolo de una manera batch (de una manera introactiva). En los primeros 
tiempos de los sistemas de computación la forma de ejecutar de esos programas se denominaban trabajos, el 
usuario no tenia contacto con la máquina, el lanzaba una serie de trabajos en batch, es decir el lotes uno tras otro, y 
para el sistema no existía ningún usuario dueño de esos programas, sino que había un operador principal del sistema 
de cómputo que ponía a ejecutar distinta cantidad de trabajos. 
Procesos interactivos: Cuando se descubrió el disco se vio la posibilidad que el usuario vuelva a tener contacto con la 
maquina a través de ejecutar el mismo sus programas, para poder corregir sus errores y además porque algunos 
eran programas abiertos que requerían el paso de parámetros. Estos sistemas son denominados sistemas de tiempo 
compartido, estos sistemas permitían a los usuarios la posibilidad de sentarse en terminales bobas alrededor de un 
sistema centralizado de un único computador central y ellos compartían su tiempo y podían resolver casi 
simultáneamente sus problemas. Y a este tipo de programas se les llamo tareas. Entonces en un principio se 
denominó trabajo, luego tarea, y hoy en dia lo definimos como proceso. 
 
8. Implementación de colas: batch, ready, bloqueos 
A medida que los procesos entran al sistema se colocan en una cola de trabajos (cuando hablamos de trabajos 
decimos que es un proceso de tipo batch, es decir no tiene interacción con el ser humano) que contiene a todos los 
procesos del sistema, para esto es necesario que haya memoria disponible, caso contrario se almacena en disco a la 
espera de memoria. Los procesos que residen en la memoria principal y están preparados y en espera de ejecutarse 
se mantienen en una lista denominada cola de procesos preparados (ready), generalmente esta cola se almacenan 
en forma de lista enlazada. Cada PCB contiene un campo de puntero que apunta al siguiente PCB de la cola de 
procesos preparados. 
Cuando se asigna la cpu a un proceso, este se ejecuta durante un rato y finalmente termina, es interrumpido o 
espera a que se produzca un determinado suceso, como la terminación de una solicitud de E/S a un dispositivo 
compartido, como por ejemplo un disco, en estos casos el disco puede estar ocupado con la solicitud de E/S de otro 
proceso, por lo tanto nuestro proceso debe esperar para poder acceder al disco (se dice que el proceso esta 
bloqueado esperando el disco). La lista de procesos en espera de un determinado dispositivo de E/S se denomina 
cola del dispositivo. Cada dispositivo tiene su propia cola. 
Por lo tanto los procesos están constantemente migrando entre alguna de estas colas. 
 
9. Planificador de mediano plazo (nivel de multiprogramación) 
 
 
Planificadores: son algoritmos del sistema operativo necesarios para administrar que proceso va a tomar control de 
algún recurso en un momento determinado. Hay distintos tipos de planificadores: 
• En un sistema de procesamiento por lotes los procesos se guardan en cola en un dispositivo de almacenamiento 
masivo (un disco), donde se mantiene para su posterior ejecución. El planificador a largo plazo o planificador de 
trabajos selecciona procesos de esta cola y los carga en memoria para su ejecución. Es llamado con poca frecuencia 
y puede ser lento. Este planificador controla el grado de multiprogramación de un sistema. 
• El planificador de corto plazo o planificador de la cpu selecciona de entre los procesos que ya están preparados 
para ser ejecutados y asigna la cpu a uno de ellos. Este planificador debe ser rápido y se ejecuta al menos una vez 
cada 100 milisegundos. 
• Planificador de mediano plazo: algunos sistemas operativos, como los sistemas de tiempo compartido, pueden 
introducir un nivel intermedio adicional de planificación. La idea de un planificador a medio plazo es que puede ser 
ventajoso eliminar procesos de la memoria y reducir asi el grado de multiprogramación. Después el proceso puede 
volver a ser cargado en memoria, continuando su ejecución en el punto que se interrumpió. Entonces el 
planificador de medio plazo descarga y luego vuelve a cargar el proceso. Este esquema se denomina intercambio y 
puede ser necesario para mejorar la mezcla de procesos o por que se sobrepaso la memoria disponible, 
requiriendo que se libere memoria. Esto es conveniente cuando el grado de multiprogramación es muy grande ya 
que los procesos tiene asignadas porciones de memoria muy pequeñas y de esta forma se logra que los procesos 
que quedan en memoria le queda mayor espacio. Y a medida que van terminando los procesos en memoria se 
hacen pasar a los que se guardaron en disco. 
Los procesos pueden ser descriptos como: 
Procesos limitados por entrada salida: pasan más tiempo haciendo E/S que cálculos. 
Procesos limitados por cpu: pasan más tiempo haciendo cálculos. 
 
10. Creación de proceso con fork(). Ventajas, desventajas. 
Un proceso crea otros procesos nuevos mientras se ejecuta. El proceso creador se denomina proceso padre y los 
nuevos procesos se denominan hijos, los cuales a su vez pueden también crear otros procesos formando un árbol de 
procesos. La mayoría de los sistemas identifican los procesos mediante un identificador de procesos (pid). 
En general, un proceso necesitará recursos (tiempo de cpu, memoria, etc) para llevar a cabo sus tareas, un 
subproceso o proceso hijo puede obtener sus recursos directamente del sistema operativo (no comparte recursos 
con el proceso padre), puede compartir todos los recursos con el proceso padre o puede estar restringido a un 
subconjunto de los recursos del proceso padre. Es decir que el padre puede tener que repartir sus recursos entre sus 
procesos hijos. Restringir un proceso hijo a un subconjunto de los recursos del padre evita que un proceso pueda 
sobrecargar el sistema creando demasiados subprocesos. 
Cuando un proceso padre cobra otro proceso nuevo, existen dos posibilidades en términos de ejecución: 
• El padre continuaejecutándose concurrentemente con su hijo. 
• El padre espera hasta que alguno o todos sus procesos hijos han terminado de ejecutarse (de manera secuencial). 
También existen dos posibilidades en función del espacio de direcciones del nuevo proceso: 
• El proceso hijo es un duplicado del proceso padre (usa el mismo programa y los mismos datos que el padre). 
• El proceso hijo carga un nuevo programa. 
En UNIX puede crearse un proceso nuevo con la llamada al sistema fork(). El nuevo proceso consta de una copia del 
espacio de direcciones del proceso original. Este mecanismo permite al padre comunicarse fácilmente con su 
proceso hijo. Ambos procesos(padre e hijo) continúan la ejecución en la instrucción que continua a fork(), con una 
diferencia: el código de retorno para fork es cero en el caso del proceso nuevo (hijo), mientras que el padre se le 
devuelve el identificador del proceso hijo (distinto de cero). 
Normalmente uno de los procesos utiliza la llamada al sistema exec() después de una llamada al sistema fork, con el 
fin de sustituir el espacio de memoria del proceso con un nuevo programa. 
Creación de procesos con fork(): la llamada al sistema con fork crea un nuevo proceso (en unix), este proceso nuevo 
es a imagen y semejanza de su padre, todas las áreas de código y datos se copian en una imagen nueva que es la 
imagen del hijo. Esta llamada al sistema fork() es posible que sea simplemente transitoria para crear un envase que 
es el proceso hijo, pero a partir de ahí el proceso hijo va a solicitar al sistema operativo un nuevo código y entonces 
va a hacer una llamada al sistema de tipo exec de manera de que el código que elija el hijo ahora se va a cargar sobre 
el área de texto y se ha cambiado el programa que se estaba ejecutando y por supuesto las variables tienen q ser 
otras, cambiamos totalmente el espacio que usaba el proceso hijo. Cuando se ejecuta la llamada fork() el proceso 
padre queda en espera a que el proceso hijo termine de ejecutarse y después de eso reanuda su ejecución. 
 
 
 
11. Uso de exec() 
La llamada al sistema exec() carga un archivo binario en memoria (destruyendo la imagen en memoria del programa 
que contiene la llamada al sistema excec()) e inicia su ejecución. De esta manera los dos procesos pueden 
comunicarse y seguir después caminos separados. El padre puede crear más hijos, o, si no tiene nada que hacer 
puede ejecutar una llamada al sistema wait() para autoexcluirse de la cola de procesos preparados hasta que el 
proceso hijo se complete. Cuando el proceso hijo se completa el proceso padre reanuda su ejecución después de la 
llamada wait(), terminando su ejecución mediante la llamada exit(). 
 
12. Terminación de proceso. 
Un proceso termina cuando ejecuta la última instrucción y pide al sistema operativo que lo elimine usando la 
llamada al sistema exit(). En este momento el proceso puede devolver un valor de estado a su proceso padre. El 
sistema operativo libera la asignación de todos los recursos del proceso, incluyendo las memorias físicas y virtuales, 
los archivos abiertos y los bufferes de E/S. 
La terminación puede producirse también en otras circunstancias. Un puede causar la terminación de otro proceso a 
través de la adecuada llamada al sistema, la cual solo puede ser invocada por el proceso padre del proceso que se va 
a terminar. 
Un padre puede terminar la ejecución de uno de sus hijos por diversas razones: 
• El proceso hijo a excedido el uso de alguno de los recursos que se le han asignado. 
• Las tareas asignadas al proceso hijo ya no son necesarias. 
• El padre abandona el sistema, y algunos sistemas operativos no permiten que un proceso hijo continue si su 
padre ya ha terminado. Y en tales sistemas entonces si un proceso termina también lo hacen sus hijos produciendo 
un fenómeno conocido como terminación en cascada. 
 
13. Comunicación de procesos: 
Los procesos que se ejecutan concurrentemente en un sistema pueden ser independientes (si no pueden afectar o 
verse afectados por los restantes procesos)o procesos cooperativos (si puede afectar o verse afectado por los demás 
procesos que se ejecutan en el sistema). Entonces cualquier proceso que comparte datos con otros procesos es un 
proceso cooperativo. 
Razones para la cooperación de procesos (ventajas): 
• Compartir información: dado que varios usuarios pueden estar interesados en la misma información. 
• Acelerar los cálculos: si deseamos que una tarea se realice rápidamente debemos dividirla en subtareas, 
ejecutándose cada una de ellas en paralelo con las demás (solo puede ocurrir si la computadora tiene múltiples 
elementos de procesamiento). 
• Modularidad: podemos querer construir el sistema de manera modular, dividiendo las funciones del sistema 
en diferentes procesos. 
• Conveniencia: si un usuario quiere realizar muchas tareas al mismo tiempo como ser: editar, imprimir y 
compilar en paralelo. 
La comunicación entre procesos requiere mecanismos de comunicación interprocesos (IPC) que les permite 
intercambiar datos e información. Hay dos modelos: 
• Memoria compartida: se establece una región de la memoria para que sea compartida por los procesos 
cooperativos. 
• Paso de mensajes: la comunicación tiene lugar mediante el intercambio de mensajes entre los procesos 
cooperativos. 
 
14. Memoria compartida 
Requiere que los procesos que se estén comunicando establezcan una región de memoria compartida. Otros 
procesos que deseen comunicarse usando este segmento de memoria compartida deben conectarse a su espacio de 
direcciones. Habitualmente el sistema operativo no permite que un proceso acceda a la memoria de otro proceso, 
por lo tanto la memoria compartida requiere que dos o más procesos acuerden eliminar esta restricción. Entonces 
podrán intercambiar información leyendo y escribiendo datos en las áreas compartidas. Tareas que se encuentran 
bajo el control del sistema operativo. 
 
15. Paso de mensajes 
Otras forma de conseguir el mismo efecto que la memoria compartida es que el sistema operativo proporcione los 
medios para que los procesos cooperativos se comuniquen entre si a través de una facilidad de paso por mensajes. 
 
 
Permite a los procesos comunicarse y sincronizar sus acciones sin compartir el mismo espacio de direcciones, y es 
especialmente útil en un entorno distribuido, en el que los procesos que se comunican pueden residir en diferentes 
computadores conectadas en red. 
Esta modalidad proporciona al menos dos operaciones, send (envio de mensajes) y receive (recepción de mensajes). 
Los mensajes enviados por un proceso pueden tener un tamaño fijo o variable. También debe existir un enlace de 
comunicación entre los procesos, analizaremos la implementación lógica que tiene varios métodos: 
• Comunicación directa o indirecta 
• Comunicación sincrónica o asincrónica 
• Almacenamiento en buffer explícito o automático. 
 
16. Sincronización de procesos: 
La comunicación entre procesos tiene lugar a través de llamadas a las primitivas send y receive. El paso de mensajes 
puede ser con bloqueo o sin bloqueo, también conocidos como sincronicos o asincrónicos: 
• Envio con bloqueo: el proceso que envía se bloquea hasta que el proceso receptor o el buzon de correo 
reciben el mensaje. 
• Envio sin bloqueo: el proceso transmisor envía el mensaje y continua operando. 
• Recepción con bloqueo: el receptor se bloquea hasta que hay un mensaje disponible. 
• Recepción sin bloqueo: el receptor extrae un mensaje valido o mensaje nulo. 
Cuando las operaciones send y receive se realizan ambas con bloqueo tenemos lo que se denomina rendezvous 
entre el transmisor y receptor. 
 
17. Bloqueante 
El bloqueo se considera sincrónico 
a. El send bloqueante tiene al emisor bloqueado hasta que el mensaje es recibido 
b. El receive bloqueante tiene al receptor bloqueado hasta que el mensaje está disponible 
18. No bloqueante 
Los no bloqueantes se consideran asincrónicos 
En un send no bloqueante el emisor envía el mensaje y continúa 
Enun receive no bloqueante el receptor no se detiene, por lo que puede recibir un mensaje válido o nulo 
 
19. Buffer: 
Sea la comunicación directa o indirecta, los mensajes intercambiados por los procesos que se están comunicando 
residen en una cola temporal. Básicamente, tales colas se pueden implementar de tres maneras: 
• Capacidad cero: la cola tiene una longitud máxima de cero; por lo tanto, no puede haber ningún mensaje 
esperando en el enlace. En este caso, el transmisor debe bloquearse hasta que el receptor reciba el mensaje. 
• Capacidad limitada: la cola tiene una longitud finita n; por lo tanto, puede haber en ella n mensajes como máximo. 
Si la cola no está llena cuando se envía el mensaje, este se introduce en la cola (se copia el mensaje o se almacena 
un puntero al mismo), y el transmisor puede continuar la ejecución sin esperar. Sin embargo, la capacidad es finita. 
Si el enlace está lleno, el transmisor debe bloquearse hasta que haya espacio disponible en la cola. 
• Capacidad ilimitada: la longitud de la cola es potencialmente infinita; por lo tanto, puede haber cualquier cantidad 
de mensajes esperando en ella. El transmisor nunca se bloquea. 
 
20. Tamaño 0 
De capacidad cero– 0 messages: el emisor debe esperar siempre al receptor (rendezvous) 
 
 
21. Finito 
De capacidad limitada– longitud finita de N mensajes: el emisor debe esperar si el enlace está lleno 
 
22. Infinito 
De capacidad ilimitada– longitud infinita: el emisor nunca espera 
 
Cap 4: Hilos 
1. Qué es un hilo 
 
 
Unidad básica de utilización de la CPU. Un conjunto de instrucciones particulares que se ejecutan, debido a una 
opción elegida, con el entorno de la pila y variables locales. Se dice que un hilo es la unidad de ejecución 
Otra definición: 
Es un flujo de control dentro de un proceso. Los hilos son las unidades de instrucciones de procesamiento más 
pequeñas que el sistema operativo le da al procesador. Se dice que un hilo es la unidad básica de utilización de la 
CPU. 
Un proceso tradicional (pesado) tiene un solo hilo de control, en cambio sí un proceso tuviera múltiples hilos de 
control, podría realizar varias tareas a la vez. Las ventajas de mecanismos multihilos son que proporcionan mayor 
capacidad de respuesta al usuario, compartición de recursos dentro del proceso, mayor economía y la capacidad de 
aprovechar las ventajas de las arquitecturas multiprocesador. 
 
2. Qué diferencia encuentra entre el concepto de proceso e hilo 
Los hilos se distinguen de los procesos, en que los procesos son independientes, llevan bastante información de 
estados, e interactúan sólo a través de mecanismos de comunicación dados por el sistema. En cambio los hilos, 
comparten recursos de forma directa. Es más rápido cambiar de un hilo a otro dentro del mismo proceso, que 
cambiar de un proceso a otro. Este fenómeno se debe a que los hilos comparten datos y espacios de direcciones, 
mientras que los procesos, al ser independientes, no lo hacen. Al cambiar de un proceso a otro, el sistema operativo 
genera lo que se conoce como overhead (tiempo desperdiciado por el procesador para realizar un cambio de 
contexto). En los hilos, como pertenecen a un mismo proceso, al realizar un cambio de hilo el tiempo perdido es casi 
despreciable. 
 
3. Cuál es la información que se necesita administrar de un hilo 
La información que debe tener todo hilo es un ID, un contador de programa, un conjunto de registros y una pila. 
 
4. Qué recursos se comparten entre los hilos de un mismo proceso? 
Comparten la memoria, la sección de código, la sección de datos y otros recursos del sistema operativo (como los 
archivos abiertos y señales) 
 
5. Por qué les hace falta la pila a los hilos 
Se usa la pila por cuestiones económicas de tiempo. Las pilas de cada proceso contienen trozos o porciones que se 
denominan marcos de pila (este término se refiere a que en esa parte de la pila se han guardado las variables locales 
del procedimiento, los parámetros que se pasan entre los procedimientos, direcciones de retorno). Dentro del kernel 
hay un stack, que se usa por cuestiones inmediatas para salvar la interrupción. PCB 
 
6. Mencione aplicaciones que usan múltiples hilos 
Por ejemplo, un explorador WEB puede tener un hilo para mostrar imágenes mientras que otro hilo recupera datos 
de red. Un procesador de texto tiene un hilo para responder pulsaciones en el teclado, otro para imprimir, otro para 
el corrector ortográfico, etc. Un servidor web también es una aplicación que usa múltiples hilos 
 
7. Qué diferencias encuentra entre los hilos a nivel de usuario y los de nivel de kernel? 
El nivel de usuario: El soporte para los hilos de usuario se proporciona por encima del kernel y los hilos se gestionan 
sin soporte del SO. 
El nivel del kernel (para los hilos del kernel). 
El sistema operativo gestiona directamente los hilos en el kernel. Casi todos los sistemas operativos actuales, 
incluyendo 
Windows xp, Linux, Mac osx, solaris etc. soportan los hilos del kernel. 
 
 
8. Qué son las señales? Qué tipos hay? 
Una señal se usa en los sistemas UNIX para notificar a un proceso que se ha producido un determinado suceso. Una 
señal puede recibirse síncrona o asíncronamente, dependiendo del origen y de la razón por la que el suceso deba ser 
señalizado. Todas las señales, sean síncronas y asíncronas, siguen el mismo patrón: 
1) Una señal se genera debido a que se produce un determinado suceso. 
2) La señal generada se suministra a un proceso. 
3) Una vez suministrada, la señal debe ser tratada 
 
 
Tipos: 
Síncronas: Como ejemplos de señales sincrónicas podemos citar los accesos ilegales a memoria y la división por 
cero. Si un programa en ejecución realiza una de estas acciones, se genera una señal. Las señales síncronas se 
proporcionan al mismo proceso que realizó la operación que causó la señal (esa es la razón por la que se consideran 
síncronas). 
Asíncronas: Cuando una señal se genera por un suceso externo a un proceso de ejecución, dicho proceso recibe la 
señal en modo asíncrono. Ejemplo: la terminación de un proceso mediante la pulsación de teclas específicas, como 
<control-C>, y el fin de tiempo de un temporizador. Normalmente, las señales asíncronas se envían a otro proceso. 
 
9. Hilos en Windows XP 
Implementa un mapeo uno a uno con nivel del kernel 
Cada hilo contiene 
a. Un identificador de hilo 
b. Un grupo de registros 
c. Pilas separadas de usuario y kernel 
d. Un área de almacenamiento privado 
Todos estos conforman el contexto de un hilo. 
Las principales estructuras de datos de un hilo son: 
• ETHREAD (bloque de hilo en el ejecutivo) 
• KTHREAD (bloque de hilo en el kernel) 
• TEB (bloque de entorno del hilo, en espacio de usuario) 
 
 
 
10. Hilos en Linux 
Linux no diferencia entre procesos e hilos. Por eso a ambos se refiere como una tarea: al flujo de control dentro de 
un programa. 
La creación de hilos es hecha a través de la llamada al sistema clone(), donde se especifica un conjunto de 
indicadores, que determina el grado de compartición entre las tareas padre e hijo. Permite a una tarea-hijo 
compartir o no el espacio de direcciones de la tarea de su padre (proceso) 
El nivel variable de compartición se puede hacer porque existe una estructura de datos del kernel específica (struct 
task_struct) para cada tarea del sistema. Quien contiene punteros a otras estructuras: lista de archivos abiertos, 
tratamiento de señales , memoria virtual, etc.

Continuar navegando