Está en la página 1de 41

Preguntas del Capítulo 1 del Libro de SO de Silberschatz

1. Cuáles son los componentes de un sistema informático


Posee 4 componentes:
• El hardware
• El sistema operativo
• Los programas de aplicación
• Los usuarios
2. Cuáles son los recursos de un sistema de computación?
Tiempo de CPU, espacio de memoria principal, espacio de almacenamiento secundario, otros
dispositivos de E/S
3. A qué se denomina programas de Aplicación?
Los programas de aplicación definen las formas en que estos recursos se emplean para resolver los
problemas informativos de los usuarios.
4. Qué es un sistema operativo, Cuáles son sus funciones principales?
Un programa que actúa como intermediario entre el usuario de una computadora y el hardware de la
computadora.
Objetivos del sistema operativo:
• Ejecuta programas de usuario y facilita la resolución de problemas de los usuarios.
• Hacer que el sistema de computación sea cómodo de usar
• Utilizar el hardware de la computadora de manera eficiente
5. Por qué se dice que un sistema operativo es similar a un gobierno?
Como un gobierno, no realiza ninguna función útil por si mismo: simplemente proporciona un entorno en
el que otros programas pueden llevar un trabajo útil.
6. Qué pretende un usuario de una PC del SO de su máquina?
En este caso, el sistema operativo se diseña principalmente para que sea de fácil uso y de buen
rendimiento. No se le presta atención a la utilización de recursos (el modo en el que se comparten los
recursos del hardware y el software).
7. Qué pretende un usuario de una mainframe o minicomputador del SO de su máquina?
Los mainframe o los llamados minicomputador son en general sistemas de mucha potencia de
procesamiento y capacidad de E/S y además de que son de tiempo compartido o multiusuarios, por lo
que cada usuario desearía ver el sistema como si fuera sólo para él, sin retrasos excesivos en tiempos de
respuesta
8. A qué se denomina una terminal boba?
Son terminales de modo texto, (solo caracteres, sin mouse).
9. Qué son las estaciones de trabajo (work-station) y qué son los servidores?
10. Cómo trabaja un sistema cliente-servidor?
11. Qué diferencia hay entre un sistema centralizado y un sistema distribuido?
Sistema Centralizado
• Eficiencia: utilización de Recursos (sin tiempos Muertos, que se use todo el tiempo)
• Equitatividad: Distribuir equitativamente los recursos

Sistema distribuido
• Usabilidad: Facilidad de Uso
• Eficiencia: utilización de Recursos (sin tiempos Muertos, que se use todo el tiempo)
12. Qué es una red?
13. Qué son los sistemas interactivos y a cuáles se les denomina sistemas o procesos batch?
Hoy se dice que un sistema batch es el que no tiene interacción humana, el interactivo sí

14. Desde el punto de vista del sistema operativo, cuáles son los recursos que necesitan los programas
para ejecutarse?

15. En qué consiste las tareas de administración que lleva a cabo un SO?
Como toda tarea de administración, él es el responsable de los recursos (físicos y lógicos) y su uso. Eso
incluye: Planificación, Asignación, Control, Sincronización, entre lo más importante
16. Cómo hace un sistema operativo para controlar el recurso CPU?
Lo hace gracias al Hardware, cuando hay errores de ejecución de programas, éste se da cuenta y
despierta al kernel para que se ejecute una rutina de excepción. En particular, si un código de usuario se
excede en tiempo (es controlado por un TEMPORIZADOR), también el hardware despierta al kernel para
que éste le quite la CPU y decida qué hacer.
17. Cómo hace un sistema operativo para controlar el recurso Mp?
Por cada direccionamiento a Memoria principal que un programa haga, un chip (la MMU o controlador de
memoria), controla que se haga en los límites permitidos
18. Cómo hace un sistema operativo para controlar los recursos de E/S?
Nuevamente es el hardware el que controla y avisa a "su jefe", el kernel. Con CPUs que cuentan con más
de un modo de trabajo, Sólo con modo privilegiado o kernel se puede controlar las placas controladoras
de los dispositivos de E/S, por lo que los programas en modo usuario no tienen ninguna posibilidad de
llegar a dichas placas.
19. Cuáles son los pasos que se suceden cuando arranca un computador? Pag 6
Es necesario que el computador tenga un programa de inicio (o también llamado programa de arranque)
que ejecutar. El programa de arranque debe saber como cargar el sistema operativo e iniciar la ejecución
de dicho sistema. Para lograr este objetivo, el programa de arranque debe localizar y cargar en memoria
el kernel (núcleo) del sistema operativo. Después, el sistema operativo comienza ejecutando el primer
proceso y espera q se produzca algún suceso.

• Encendido (Cuando usted presiona el botón de encendido, el power light es iluminado y la energía es
distribuida por circuitos internos de la computadora).
• Comienzo del programa de arranque (El microprocesador empieza a ejecutar las instrucciones
almacenadas en la memoria ROM).
• Auto prueba de encendido o POST:power-on self- test (La computadora realiza un diagnostico crucial
del sistema y de cada componente de la computadora)
• carga del Sistema Operativo (El sistema operativo es copiado desde el disco duro a la memoria RAM)
• Chequeo de la configuración (El microprocesador lee los datos de configuración del CMOs (Setup) y
ejecuta cualquier rutina específica para su uso)
• El Sistema Operativo puede crear procesos, llamados Demonios
• Lista para aceptar datos y comandos. (La computadora esta lista para aceptar comandos y datos). El
sistema operativo espera un Evento o suceso.

20. A qué se denomina firmware?


El firmware, prevé guardar las instrucciones y datos de forma no-volátil. Usará el mismo programa por
largo tiempo, por lo que se evita tener que cargarlo cada vez que haga falta (el tiempo de escritura es
mucho mayor que el de lectura). Ejemplo la ROM-BIOS.
21. Cuál es la diferencia entre un programa cableado y un programa almacenado, o lo que es lo mismo
entre Hardware y Software?
En el primero, lo que hay que hacer, ya está preestablecido; mientras que en el otro, se puede cambiar
Algunos autores hablan de programa cableado y almacenado. Lo que quieren decir con el primero, es que
todo lo que hay que hacer, ya está establecido de una vez, es decir, se han fijado los caminos para hacer
las tareas (decimos que es una solución por hardware="cableada"). Con el término "programa
almacenado", se intenta decir que cumple con el modelo de Von Neumann, esto es, se carga o almacena
un programa en memoria y se le "aplica" el ciclo de la instrucción, leyendo, decodificando y ejecutando
una a una las instrucciones (es decir, en contraposición con el programa cableado, "se hace camino al
andar", se va descubriendo qué hacer con cada instrucción); el costo de esto es que necesito de un
procesador para interpretar y ejecutar esas instrucciones, necesito de ese hardware.

El cableado (hardware sin software) resuelve rápido, pero es limitado, rígido. El almacenado (software
con soporte de hardware) resuelve el problema, pero es más caro, más lento pero con una enorme
flexibilidad para resolver una gama muy grande de problemas (depende del repertorio del ISA del
procesador).

O sea, el hardware puede resolver sólo (sin software), pero el software sin hardware, no hace nada.
22. Qué son las interrupciones?
Son eventos que pueden ocurrir en un computador puede ocurrir a través de un dispositivo q acaba de
ser conectado.
23. A qué se denomina una interrupción de hardware?
Si el evento q interrumpe es externo, es decir cuando un dispositivo interrumpe al procesador. El
procesador dejará de hacer lo q estaba haciendo para atender a la interrupción.
24. A qué se denomina una interrupción de software o excepción?
Si el evento es interno, o sea producido por la ejecución de la instrucción en curso.

Interrupción de software, excepciones o trampas son eventos que interrumpen la secuencia normal de
instrucciones ejecutadas por la CPU.
25. A qué se denomina una llamada al sistema?
Una llamada al sistema es un método o función que puede invocar un proceso para solicitar un cierto
servicio al sistema operativo.
Algunos ejemplos de son las siguientes:
• write, que se emplea para escribir un dato en un cierto dispositivo de salida, tales como una pantalla o
un disco magnético.
• read, que es usada para leer de un dispositivo de entrada, tales como un teclado o un disco
magnético.
• open, que es usada para obtener un descriptor de un fichero del sistema, ese fichero suele pasarse a
write.
• close, que se emplea para cerrar un descriptor de fichero.
26. Cuáles son los pasos que se suceden para llevar a cabo una interrupción?
a) identificar qué rutina de interrupción pide que se ejecute, b) salvar los registros que se sobreescribirán
en la ejecución de la rutina de interrupción, c) ejecutar dicha rutina y d) restaurar los registros o no
(según lo resuelto por la rutina y el kernel) e) continuar con el mismo programa u otro que decida el
kernel. VER las diapositivas Cap1 Revisión de Arquitectura que envié.
27. Qué tiene que ver el ciclo de la instrucción con el de la interrupción?
Cuando se produce un error en la ejecución de una instrucción q se estaba ejecutando es entonces
cuando se produce una interrupción.
28. A qué se denomina el vector de interrupciones?
Es una tabla en donde implementa un sistema de prioridad de interrupción. Estos niveles permiten a la
CPU diferir el manejo de interrupciones de baja prioridad todas las interrupciones sin enmascarar y hace
posible una alta prioridad de interrupción para evitar la ejecución de una interrupción de baja prioridad.
29. Por qué se guardan los datos en la pila del sistema?
Porque cuando se detecta que hay una interrupción pendiente de atender, el micro se pasa a modo
kernel, ya que la rutina de interrupción corre en modo kernel, por lo que hay que "salvar" los contenidos
de los registros de la CPU que serán modificados por la rutina de Interrupción. Y lo mejor es guardarlos
en la estructura de pila (en memoria) que posee el kernel (es lo más rápido)
30. Por qué se modela como una pirámide a la estructura de almacenamiento?
Se inventó para establecer un orden que se da de acuerdo al tiempo de respuesta, la complejidad y la
capacidad, todas están relacionadas.
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 o de referencia.
31. Según el modelo de Von Neumann, por qué conviene que la memoria principal sea volátil?
Para que se pueda cambiar de contenido rápidamente (cargar y descargar programas) y cumplir con el
objetivo de la multiprogramación. Las RAM son más apropiadas que las ROM (que son muy lentas para
escribirles)
32. A que se denomina almacenamiento secundario?
Los dispositivos de almacenamiento secundario más comunes son las unidades de disco duro (HDD) y
dispositivos de memoria no volátil (NVM), que proporcionan almacenamiento para ambos: programas y
datos.
El almacenamiento no volátil retiene su contenido cuando se pierde energía.
33. A que se denomina almacenamiento terciario?
memoria caché, CD-ROM o blu-ray, cintas magnéticas, etc. Los que son lo suficientemente lentos y lo
suficientemente grande como para que se usen solo para fines especiales —Para almacenar copias de
seguridad del material almacenado en otros dispositivos, por ejemplo— se llaman almacenamiento
terciario. Pag 20
34. Qué significa “cachear” (caching) una memoria?
Cache significa oculto, ni siquiera es reconocida por el sistema operativo solo es administrada y
reconocida por el hardware
Cachear significa traer una información de capas inferiores antes q el procesador me la pida. Esto levanta
mucho el rendimiento de un computador
35. Qué ventajas tienen las memorias denominadas cachés?
Es más rápida q la memoria principal, esta más próxima del procesador.
Responde muy bien al principio de localidad de referencia.
36. A qué se denomina una operación de E/S?
En un computador tengo puertas (son posiciones direccionales) a través de la cual yo puedo entrar
información o sacar información. El procesador no llega a ver esas operaciones. Las operaciones E/S
llevan su tiempo ya q tienen q ver con el tiempo del periférico o lo lento q puede ser frente al procesador
37. Qué son las placas controladoras, por qué son necesarias?
Las placas controladoras funcionan de intermediario entre el procesador y el monitor o cualquier otro
periférico conectado a nuestra computadora ya q estas placas conocen el funcionamiento del periférico y
es q pide el computador. Por ejemplo, el procesador puede pedir al monitor q muerte por pantalla, pero el
procesador no llega directamente al monitor, primero llega hasta la placa controladora de video.
38. A qué se denomina puertos de una controladora y qué tipos de puertos conoce?
A las posiciones direccionables por la CPU de una placa controladora. Hay al menos 3 tipos de puertos:
a) de estado (muestra el estado del dispositivo: Ready, Busy, Error, etc), b) de Control (sirve para que
CPU le escriba la órden (Lectura, escritura, etc) que quiera que ejecute la placa) y c) de Datos (de ahí la
CPU leerá los datos que le solicitó en una lectura, o la CPU pondrá los datos, si se le pidió escritura)
39. Qué son los drivers, por qué son necesarios?
los sistemas operativos tienen un manejador de dispositivo (driver) para cada controlador de dispositivo.
Este manejador de dispositivo entiende al controlador del dispositivo y proporciona al resto del sistema
operativo una interfaz uniforme con el dispositivo.
40. Cuáles son los distintas formas que se pueden realizar las operaciones de E/S?
41. En qué consiste una operación de E/S programada y cuándo se la utiliza?
intercambia datos entre el CPU y el modulo E/S.
El CPU ejecuta un programa que controla directamente la operación E/S, incluyendo la comprobación del
estado del dispositivo, el envió de la orden de lectura o escritura y la transferencia de datos
42. En qué consiste una operación de E/S con interrupciones y cuándo se la utiliza?
El procesador proporciona la orden de E/S, y continúa ejecutando otras interrupciones, se intercambian
entre el procesador y el módulo de E/S y es interrumpido por el módulo de E/S cuando este ha terminado.
La ventaja que tiene es atención inmediata, el procesador trabaja, pero el dispositivo de entrada y salida
se ocupa
43. En qué consiste una operación de E/S con DMA y cuándo se la utiliza?
hay una sobrecarga elevada cuando se usa para movimiento de datos a granel como E/S NVS. Para
resolver este problema, Se utiliza el acceso (DMA) a memoria directa.
44. Qué son los procesadores de propósito específico y cuándo conviene usarlos?
45. A qué se denomina un sistema multiprocesador, qué ventajas ofrece? Dibuje un modelo de 2 CPUs.
46. Qué problemas hay que resolver en los sistemas multiprocesados?
47. Qué desventajas aparecen cuando crece el número de procesadores?
48. Qué significa que un sistema sea tolerante a las fallas o que ofrezca alta disponibilidad?
Tolerancia a fallos se refiere a la capacidad de un sistema o componente para continuar con la Operación
normal a pesar de la presencia de fallas de hardware o software

49. Qué diferencias hay entre un SMP y un ASMP?


• Un SMP o Multiprocesamiento Simétrico es un sistema con varios procesadores, todos ellos
idénticos y capaces de ejecutar código del kernel o de usuario.
• Un ASMP o Multiprocesamiento Asimétrico es un sistema con varios procesadores, de los cuales
sólo en uno se ejecuta código del kernel y en los otros los de usuario.
50. Por qué hoy se fabrican sistemas multicores, que se obtiene como ventajas?
un microprocesador multicore es aquel que combina dos o más procesadores, lo cual hace que una tarea
pueda ser dividido por los procesadores que exista obteniendo un rápido y eficaz procesamiento.

51. A qué se denomina servidores blade. Qué ventajas ofrecen?


52. Qué son los sistemas en cluster o multicomputador?
53. Qué diferencia hay entre un cluster simétrico y un asimétrico?
Los clusters tienen como ventaja su alta disponibilidad, es decir, si un procesador falla otro se hace
cargo del código que estaba ejecutando. Hay 2 maneras de hacerlo: simétrico: hay al menos 2 sistemas
que ejecutan lo mismo y se controlan entre ellos que lo estén haciendo bien, así que si uno se “cae”, el
otro continúa como si nada hubiera pasado; la otra manera de dar tolerancia a los fallos, es que a la “par”
del sistema que se ejecuta, haya otro “en caliente”, es decir listo para iniciar cuando el que ejecuta falla;
ésto hace entonces, pero con un pequeño retardo (asimétrico)
54. Cuál es la diferencia de que los cluster se implementen en una LAN o en una WAN?
55. Qué es una SAN?
56. Qué significa que un SO ofrezca multiprogramación?
Se refiere a la idea general de poder cargar múltiples programas dentro de un computador para que sean
ejecutados en un determinado momento.
57. A qué se denomina tiempo compartido (multitasking)?
Se refiere a compartir de forma concurrente un recurso computacional (tiempo de ejecución, uso de la
memoria, etc.) entre muchos usuarios por medio de tecnologías de multiprogramación y la inclusión de
interrupción por parte del sistema, permitiendo acortar el tiempo de respuesta del computador y limitar el
uso de la CPU por parte de un proceso dado.
58. Por qué es importante el tiempo de respuesta en los sistemas interactivos?
59. Por qué es importante planificar los trabajos que ejecute una CPU?
60. A qué se denomina un proceso?
Es una colección de uno o más hilos y recursos de sistemas asociados (Como la memoria que contiene
código y datos, archivos abiertos y dispositivos). Esta corresponde estrechamente al concepto de un
programa en ejecución. Al dividir una aplicación en múltiples hilos, el programador tiene un gran control
sobre la modularidad de la aplicación y la coordinación de eventos de la misma.
61. A qué se denomina intercambio o Swap?
62. A qué se denomina memoria virtual?
63. Qué es la memoria lógica, que ve un programador/usuario?
64. Por qué se dice que un SO está gobernado o controlado por interrupciones?
65. Por qué es necesario la ejecución del SO, qué ventajas le ofrece a los programas de usuario?
66. Nombre algunas instrucciones privilegiadas
67. Cómo se realiza una llamada al sistema?

68. A qué se conoce como reloj (clock), qué función cumple?


69. A qué se conoce como temporizador, qué función cumple?
70. Qué diferencia hay entre un programa y un proceso?
71. Qué significa que un proceso tenga muchos hilos o hebras (multihilos o multihebras)?
Significa que a una aplicación (generalmente un proceso), el programador podría haberla diseñado,
dividida en porciones que tienen independencia de ejecución o partes del programa que pueden
ejecutarse en forma autónoma y programada con la estructura de hilos (para windows a veces hebras),
pensando que el lenguaje soporta bibliotecas de hilos y/o el SO reconoce los hilos y lo mejor: que el
hardware es multicore o multiprocesador para acelerar el procesamiento.
72. Puede haber procesos del sistema, para qué sirven?
73. Cuáles son algunas de las tareas que puede hacer un SO, respecto de los procesos?
74. Cuáles son algunas de las tareas que puede hacer un SO, respecto al uso de la memoria?
75. Qué son los archivos?
El archivo tiene nombre y dueño. También suele ser de lectura/escritura.
76. Qué tipos de servicios ofrece un SO respecto de la gestión de archivos?
77. Cuáles son las características distintivas de un disco magnético?
78. Cuáles son las tareas que debe encargarse el SO, respecto a la gestión de disco?
79. Almacenamiento de caché: implementación en hardware o en software, en qué casos se usa?
80. Cuáles son los problemas que hay que resolver, cuando se usan técnicas de caché?
81. Por qué es necesario el uso de cachés en sistemas multiprocesados y qué problemas hay que
resolver?
82. Explique el cuadro de la figura 1.9 (página 23)
83. Por qué se dice que un SO oculta los detalles (peculiaridades) de los dispositivos hardware
específicos? De qué se encarga un subsistema de E/S?
84. Cómo implementa la protección un SO?
85. Cómo implementa la seguridad un SO?
86. Cómo brinda seguridad con los usuarios un SO como Windows NT?
87. En qué consisten los permisos que maneja un SO como UNIX con los archivos?
88. En qué consiste un sistema distribuido?
*Brinda la ilusión de un único espacio de memoria principal.
*Espacio de memoria individual.
*Instalaciones de acceso unificado.
*El estado de la técnica para SO distribuidos es inferior al de los SO uniprocesador y multiprocesamiento
simétrico.

89. Qué significa FTP? Para qué sirve?


90. Qué significa NFS? Para qué sirve?
91. Qué es un protocolo?
92. Qué es TCP/IP?
93. Qué es ATM?
94. Diferencias entre LAN, MAN y WAN.
95. Diferencias entre una red con conexiones alámbricas (cobre), fibra óptica e inalámbricas.
96. Qué es un sistema de red?
97. A qué se les denomina sistemas embebidos?
Es un sistema dentro de otro sistema.
98. Qué es un sistema de tiempo real, qué características tiene?
Un sistema de tiempo real es un sistema informático que interacciona con su entorno físico y responde a
los estímulos del entorno dentro de un plazo de tiempo determinado. No basta con que las acciones del
sistema sean correctas, sino que, además, tienen que ejecutarse dentro de un intervalo de tiempo
determinado
99. Qué significa el término multimedia y en qué afectan los datos multimedia a los SO?
100. A qué se denomina sistemas de mano, qué características tienen?
101. A qué se les denomina cortafuegos?
102. Explique un sistema cliente-servidor. Qué tipos de servidores hay?
103. Qué son los sistemas peer to peer (o sistemas entre pares o iguales)?
104. Qué es la WEB?

Preguntas del Capítulo 2 del Libro de SO de Silberschatz

1. porque se dice que un sistema operativo provee de servicios a los usuarios.

Los servicios específicos proporcionados, por supuesto, difieren de un sistema operativo a otro, pero
podemos identificar clases comunes.

Un conjunto de servicios del sistema operativo proporciona funciones que son útiles para el usuario.

2. A que se le denomina interfase de usuario? Cuáles son las posibles variantes?

Esta interfaz puede tomar varias formas. Más comúnmente se utiliza la

• interfaz gráfica de usuario (GUI). Aquí, la interfaz es un sistema de ventanas con un mouse que sirve
como dispositivo señalador para dirigir E/S, elija de los menús, y hace selecciones y un teclado para
ingresar texto.

• Sistemas móviles tales ya que los teléfonos y tabletas proporcionan una interfaz de pantalla táctil, lo
que permite a los usuarios deslizar sus dedos por la pantalla o presionar los botones en la pantalla para
seleccionar opciones

• Otra opción es una interfaz de línea de comandos (CLI), que usa comandos en modo texto y un
método para ingresarlos (por ejemplo, un teclado para escribir en comandos en un formato específico
con opciones específicas). Algunos sistemas proporcione dos o las tres de estas variaciones.

3. Cuál es la característica que tiene la interfaz de línea de comandos?

permite a los usuarios ingresar directamente los comandos que debe realizar el sistema operativo.

4. En qué consiste un interfaz de proceso por lotes?

5. De qué se trata la interfaz gráfica de usuario?


en lugar de ingresar comandos directamente a través de una interfaz de línea de comandos, los usuarios
emplean un Sistema de menú en una ventana basada en mouse caracterizado por un “escritorio”
metafórico. El usuario mueve el mouse para colocar su puntero en imágenes o iconos, en la pantalla (el
escritorio) que representan programas, archivos, directorios y funciones del sistema. Dependiente de la
ubicación del puntero del mouse, hacer clic en un botón del mouse puede invocar un programa,
seleccione un archivo o directorio, conocido como carpeta, o desplegar un menú que contiene comandos

6. Nombre los otros servicios que debe proveer todo sistema operativo, además de servir de interfaz
con el usuario.

• Interfaz de usuario.

• Ejecución del programa

• Operaciones de E/S.

• Manipulación del sistema de archivos

• Comunicaciones.

• Detección de errores.

• Asignación de recursos

• Inicio sesión.

• Protección y seguridad

7. Porque es necesario que permita la ejecución de los programas?

El sistema debe poder cargar un programa en la memoria y ejecutar ese programa. El programa debe
poder finalizar su ejecución, normal o anormalmente (indicando error).

8. Porque un sistema operativo debe ofrecer un servicio de operaciones de entrada/salida?

El programa de ejecución puede requerir E/S, lo que puede implicar una archivo o un dispositivo de E/S.
Para dispositivos específicos, se pueden desear funciones especiales (como leer desde una interfaz de
red o escribir en un sistema de archivos). Por eficiencia y protección, los usuarios generalmente no
pueden controlar los dispositivos de E/S directamente. Por lo tanto, el sistema operativo debe
proporcionar un medio para hacer la E/S.

9. Cual es el servicio que ofrece con la manipulación del sistema de archivos?

El sistema de archivos es de particular interés. Obviamente, los programas necesitan leer y escribir
archivos y directorios. Ellos también necesitan para crear y eliminar el nombre del equipo, buscar un
archivo determinado y mostrar la información del archivo.

Finalmente, algunos sistemas operativos incluyen administración de permisos para permitir o denegar el
acceso a archivos o directorios en función de la propiedad del archivo. Muchos sistemas operativos
proporcionan una variedad de sistemas de archivos, a veces para permitir elección personal y, a veces,
para proporcionar características o rendimiento específicos

10. Porque se necesita un servicio de comunicaciones?

Hay muchas circunstancias en las que un proceso necesita intercambiar información con otro proceso.
Tal comunicación puede ocurrir entre procesos que se ejecutan en la misma computadora o entre
procesos que se ejecutan en diferentes sistemas informáticos unidos por una red. Las comunicaciones
pueden implementarse a través de memoria compartida, en la que dos o más procesos leen y escriben en
una sección de memoria, o por la transmisión de mensajes, en la que se encuentran paquetes de
información en formatos predefinidos que son movidos por el sistema operativo entre los procesos.

11. Porque hace falta que el sistema operativo detecte los errores, qué tipo de errores?

El sistema operativo debe detectar y corregir errores constantemente Pueden producirse errores en la
CPU y el hardware de memoria (como un error de memoria o una falla de energía), en dispositivos de E/S
(como un error de paridad en el disco, una falla de conexión en una red o falta de papel en la impresora),
y en el programa de usuario (como un desbordamiento aritmético o un intento de acceder a una
ubicación de memoria ilegal). Para cada tipo de error, el funcionamiento el sistema debe tomar las
medidas adecuadas para garantizar una correcta y coherente computación. A veces, no tiene más
remedio que detener el sistema. Otras veces, podría terminar un proceso que causa errores o devolver un
código de error a un proceso para que el proceso detecte y posiblemente corrija.

Existe otro conjunto de funciones del sistema operativo no para ayudar al usuario sino más bien para
asegurar la operación eficiente del sistema mismo. Sistemas con múltiples procesos puede ganar
eficiencia al compartir los recursos de la computadora entre los diferentes procesos.

12. Cuáles son algunas de las funciones que debe contar un sistema operativo para garantizar la
eficiencia del propio sistema de computación?

13. Porque hay que asignar los recursos?

Cuando hay múltiples procesos ejecutándose al mismo tiempo, los recursos deben asignarse a cada uno
de ellos. El sistema operativo gestiona muchos tipos diferentes de recursos. Algunos (como ciclos de
CPU, memoria principal y almacenamiento de archivos) pueden tener un código de asignación especial,

mientras que otros (como los dispositivos de E/S) pueden tener una solicitud mucho más general y
liberar código. Por ejemplo, al determinar la mejor manera de usar la CPU, los sistemas operativos tienen
rutinas de planificación de CPU que tienen en cuenta la velocidad de la CPU, el proceso que debe
ejecutarse, el número de kernels de procesamiento en la CPU y otros factores. También puede haber
rutinas para asignar impresoras, unidades de almacenamiento USB y otros dispositivos periféricos.

14. Porque es necesario la contabilidad del uso de los recursos?

15. Para qué se debe brindar protección y seguridad?

Los propietarios de la información almacenada en un sistema multiusuario o un sistema de computación


en red controlan el uso de esa información. Cuando varios procesos separados se ejecutan
simultáneamente, no debería ser posible que un proceso interfiera con los otros o con el funcionamiento
del sistema en sí. La protección implica garantizar que el acceso al sistema, a los recursos, estén
controlados. La seguridad del sistema se refiere a que personas externas ingresen al sistema. Dicha
seguridad comienza con la exigencia de que cada usuario se autentique o ella misma al sistema,
generalmente por medio de una contraseña, para obtener acceso a los recursos del sistema. Se extiende
a la defensa de dispositivos de E/S externos, incluidos adaptadores de red, desde intentos de acceso no
válidos y controlando todas las conexiones para la detección de robos. Si un sistema debe ser protegido
y seguro, se deben instituir precauciones en todo el mismo. Una cadena es tan fuerte como su eslabón
más débil.

16. Explique cómo trabaja un intérprete de comandos, que significa que los comandos sean internos o
externos?

La función principal del intérprete de comandos es obtener y ejecutar el siguiente comando especificado
por el usuario. Muchos de los comandos dados en este nivel manipulan archivos: crear, eliminar,
enumerar, imprimir, copiar, ejecutar, etc.

17. Que conviene, en intérprete de comandos sea parte del kernel o se ejecute como un proceso de
usuario separado del sistema operativo?

Conviene que el Intérprete de Comandos NO sea parte del kernel, porque es una interfaz de usuario y
puede variar según lo que distintos usuarios quieran pedirle, además de que se podrían incorporar
nuevos comandos o solicitudes, según como va cambiando la tecnología. Si se lo agrega al kernel, habría
que recompilarlo cada modificación, y además se suma más código en modo kernel, lo que no es bueno,
por la estabilidad y seguridad.

18. Qué actividades se puede realizar a través de las interfases gráficas de usuario?

Aquí, en lugar de ingresar comandos directamente a través de una interfaz de línea de comandos, los
usuarios emplean un Sistema de menú en una ventana basada en mouse caracterizado por un
“escritorio” metafórico. El usuario mueve el mouse para colocar su puntero en imágenes o iconos, en la
pantalla (el escritorio) que representan programas, archivos, directorios y funciones del sistema.
Dependiente de la ubicación del puntero del mouse, hacer clic en un botón del mouse puede invocar un
programa, seleccione un archivo o directorio, conocido como carpeta, o desplegar un menú que contiene
comandos

19. A que se denomina “llamadas al sistema”?

Las llamadas al sistema proporcionan una interfaz para los servicios puestos a disposición por un
sistema operativo.
20. En que lenguaje están escritas las rutinas que dan los servicios que se ofrecen como llamadas al
sistema?

Estas llamadas están generalmente disponibles como funciones escritas en C y C ++, aunque ciertas
tareas de bajo nivel (por ejemplo, tareas donde el hardware debe accederse directamente) puede que
tenga que escribirse usando instrucciones de lenguaje ensamblador.

21. Porque si existen las llamadas al sistema, los sistemas operativos ofrecen un interfaz de
programación de aplicaciones (API)?

La API especifica un conjunto de funciones que están disponibles para un programador de aplicaciones,
incluidos los parámetros que se pasan a cada función y los valores de retorno que el programador puede
esperar. Tres de las más comunes API disponibles para los programadores de aplicaciones son:
• API de Windows para sistemas Windows,
• API POSIX para sistemas basados en POSIX (que incluyen prácticamente todos versiones de UNIX,
Linux y macOS)
• API de Java para programas que se ejecutan en la máquina virtual Java.

22. Cuál es la diferencia entre CreateProcess() y NTCreateProcess()?

la Función de Windows CreateProcess () (que, como era de esperar, se usa para crear un nuevo proceso)
en realidad invoca la llamada al sistema NTCreateProcess () en Kernel de Windows.

23. Cuáles son los tres métodos que se usan para pasar parámetros al sistema operativo?

Se utilizan tres métodos generales para pasar parámetros al sistema operativo.


• El enfoque más simple es pasar los parámetros en los registros. Sin embargo, puede haber más
parámetros que registros.
• En estos casos, los parámetros generalmente se almacenan en un bloque o tabla, en la memoria, y la
dirección del bloque se pasa como parámetro en un registro (Figura 2.7). Linux utiliza una
combinación de estos enfoques. Si hay cinco o menos parámetros, Se utilizan registros. Si hay más
de cinco parámetros, el método del bloque se usa.
• El programa también puede colocar o insertar parámetros en una pila y ser sacados de la pila por el
sistema operativo. Algunos sistemas operativos prefieren el método de bloque o pila porque esos
enfoques no limitan el número o longitud de los parámetros que se pasan.

24. Como pueden agruparse en categorías las llamadas al sistema?

Las llamadas al sistema se pueden agrupar aproximadamente en seis categorías principales:

control de procesos,

gestión de archivos,

gestión de dispositivos,

mantenimiento de información,

comunicaciones,

y protección.

25. Nombre algunas de las llamadas al sistema para control de procesos.

llamadas al sistema fork () y exec ().

26. Porque es necesario la llamada sistema para crear procesos?

Todos los procesos (salvo el primero, que es construido por el SO) son creados por las llamadas al
sistema que piden otros procesos. En el caso de los primeros procesos que se crean cuando se inicializa
un SO, son necesarios porque dan servicio a procesos de usuario (aplicaciones), como el demonio de
impresión, de paginación, de intercambio, etc. Luego, los procesos de usuario se van también creando a
pedido (cuando el usuario quiere ejecutar programas). Todo esto es porque es el SO el responsable de
TODOS los procesos y debe llevar cuenta de ellos en sus mecanismos (tablas, algoritmos, etc). De esa
manera, al pasar la petición por una llamad al sistema, queda registrada y él puede tomar la decisión de
continuar o no con la solicitud, de acuerdo a los recursos, permisos, etc.
27. Porque se deben abrir los archivos?

Primero necesitamos poder créate () y delete() archivos. Cualquiera de las llamadas al sistema requiere el
nombre del archivo y quizás algunos de los atributos del archivo. Una vez

el archivo está creado, necesitamos open() y usarlo. También podemos read(), write () o reposition ()
(saltar hasta el final del archivo, por ejemplo). Finalmente, necesitamos close() el archivo, lo que indica
que ya no lo estamos usando.

28. Porque se deben solicitar los dispositivos?

Se pueden pensar los diversos recursos controlados por el sistema operativo como dispositivos.

El sistema con múltiples usuarios puede requerir primero un request() (solicitud) de un dispositivo, para
garantizar su uso exclusivo. Después de que hayamos terminado con el dispositivo, nosotros release()
(liberarlo). Estas funciones son similares a las llamadas al sistema open () y close () para archivos.

29. Para qué se deben crear mecanismos de comunicación entre los procesos?

Hay dos modelos comunes de comunicación entre procesos: el modelo de paso de mensajes y el modelo
de memoria compartida.

En el modelo de paso de mensajes, los procesos intercambian mensajes entre sí para comunicación para
transferirse información

En el modelo de memoria compartida, los procesos usan las llamadas de sistema shared_memory_create
() y shared_memory_attach () para crear y obtener acceso a regiones de memoria que son propiedad de
otros procesos.

30. Qué diferencia hay a simple vista entre un programa que ejecute en un sistema operativo como MS-
DOS y otro que se ejecute en Fre BSD?

31. Qué diferencia hay entre el modelo de memoria compartida y el modelo de paso de mensajes?

El paso de mensajes es útil para intercambiar cantidades más pequeñas de datos, porque no es
necesario cuidar los conflictos. También es más fácil implementar que la memoria compartida para la
comunicación entre computadoras. La memoria compartida permite la máxima velocidad y mayor
rendimiento en la comunicación, ya que se puede hacer a velocidades de transferencia de memoria
cuando tiene lugar dentro de una computadora.

32. Porque son necesarios los programas del sistema?

Los programas del sistema proporcionan un entorno conveniente para el desarrollo y ejecución de
programas.

33. Cuáles son algunas de las categorías en que se agrupan los programas del sistema?

Los programas del sistema proporcionan un entorno conveniente para el desarrollo y ejecución de
programas. Se pueden dividir en:
a. Manipulación de archivos
b. Información de estado, a veces almacenada en una modificación de archivo
c. Soporte de lenguaje de programación
d. Programa de carga y ejecución
e. Comunicaciones
f. Servicios de ejecución background (demonios)
g. Programas de aplicación

La visión del sistema operativo de la mayoría de los usuarios está definida por los programas del
sistema, no por las llamadas reales del sistema.

34. Porque es necesario que existan las llamadas al sistema si ya se ofrecen programas del sistema?

Los programas del sistema se armaron en base a los requerimientos de los usuarios sin mayor
conocimiento de software (los llamados no-calificados) y que se determinó que esos servicios que
ofrecen son los más requeridos.
Las llamadas al sistema, son los servicios simples que ofrecen los SO a través de su interfaz de llamadas
al sistema, para atender necesidades que fueron solicitadas por los programadores de aplicaciones y que
son muy específicas de ellas rutinarias como copiar, editar, crear archivos, etc.

35. Cuáles son los objetivos de diseño de un sistema operativo? De qué depende?

Objetivos de usuario y objetivos del sistema


a. Objetivos del usuario: el sistema operativo debe ser conveniente de usar, fácil de aprender,
confiable, seguro y rápido
b. Objetivos del sistema: el sistema operativo debe ser fácil de diseñar, implementar y mantener,
así como flexible, confiable, libre de errores y eficiente
Dependen del punto de vista que se ponga el diseñador: o es desde afuera (el usuario) o desde
adentro (el sistema mismo)

36. Porque es conveniente dividir en objetivos del usuario y objetivos del sistema?

Porque uno contempla el aspecto, lo que percibe el usuario (el cliente) y otro es el arquitectónico, las
funciones internas y su implementación (la seguridad, la confiabilidad, etc.), objetivos que el usuario final
da por hecho.

37. Por qué es difícil diseñar un sistema operativo?

El primer problema en el diseño de un sistema es definir objetivos y especificaciones. Al más alto nivel, el
diseño del sistema se verá afectado por la elección del hardware y el tipo de sistema: computadora de
escritorio/portátil tradicional, móvil, distribuida, o en tiempo real

Más allá de este nivel de diseño más alto, los requisitos pueden ser mucho más difíciles de especificar.
Sin embargo, los requisitos se pueden dividir en dos grupos básicos: objetivos de usuario y objetivos del
sistema.

Los usuarios quieren ciertas propiedades obvias en un sistema. El sistema debe ser conveniente de usar,
fácil de aprender y de usar, confiable, seguro y rápido. Por supuesto, estas especificaciones no son
particularmente útiles en el diseño del sistema, ya que no hay un acuerdo general sobre cómo lograrlos.

38. Qué diferencia hay entre las políticas y los mecanismos?

Las políticas determinan lo que se hará y los Mecanismos se usan para determinar cómo hacer algo.

39. Qué características tienen los sistemas operativos del tipo microkernel respecto de las políticas y de
los mecanismos?

Los sistemas operativos basados en microkernel (discutidos en la Sección 2.8.3) separan mecanismo y
política a un extremo mediante la implementación de un Conjunto básico de bloques de construcción
primitivos. Estos bloques son casi libres de políticas, lo que permite que Se agreguen mecanismos y
políticas más avanzados a través del kernel creado por los módulos de usuario o programas de usuario
propios.

40. Son las ventajas y desventajas de usar un lenguaje de alto nivel para escribir un sistema operativo?

El código se puede escribir más rápido, es más compacto y es más fácil de entender y depurar.
41. Cuáles son algunas de las posibles estructuras que pueden adoptar los sistemas operativos?

La estructura más simple para organizar un sistema operativo es ninguna estructura.

Un sistema tan grande y complejo como un sistema operativo moderno se debe diseñar cuidadosamente
para que funcione correctamente y se modifique fácilmente. Un enfoque común consiste en dividir la
tarea en pequeños componentes o módulos, más bien que tener un solo sistema. Cada uno de estos
módulos debe estar bien definido como porción del sistema, con interfaces y funciones cuidadosamente
definidas. Puede usar un enfoque similar cuando estructura sus programas: en lugar de colocar todo su
código en la función main (),separa la lógica en un número de funciones, articula parámetros claramente
y devuelva valores, y luego llama a esas funciones de main ().

42. Qué diferencia hay entre una estructura simple como la de MS-DOS y la estructura de niveles como la
de Unix?

En un SO como MS-DOS, no hay protección de espacio de kernel, ya que se ejecutaba en un Intel 8086,
que tenía un único modo de trabajo (no hay instrucciones privilegiadas). En cambio UNIX, desde que
nació se ejecutaba en procesadores que ofrecían modos privilegiados, que le permiten ejecutar su kernel
con ese modo y aislarse de las aplicaciones en los espacios de direcciones, lo que le da protección y
jerarquía.

43. Porque se dice que algunos sistemas operativos son monolíticos? Dé ejemplos.

Porque aunque haya módulos distinguibles, no hay control ni jerarquía entre ellos

Es una técnica común para diseñar sistemas operativos.

Un ejemplo de estructuración tan limitada es el sistema operativo original de UNIX, que consta de dos
partes separables: el kernel y los programas del sistema.

44. Qué ventajas tiene estructurar un sistema operativo con un enfoque por capas o niveles? Qué
desventajas tiene diseñar de este modo?

Que cada nivel da servicios o resuelve sólo funciones asignadas a ese nivel, por lo que sí o sí hay que
pasar por él para resolverlo. Así se arman jerarquías de niveles de servicios que deben ser respetados.
Eso le da mucha estabilidad y seguridad al sistema. Pero es muy lerdo porque a veces hay que acceder a
niveles intermedios que sólo sirven de puentes. Por otro lado, en general, para pasar por cada nivel, hay
que cambiar de modo y de contexto de la CPU, lo que lo hace más lento aún.

45. Porque algunas estructuras de sistemas se denominan de microkernel? Cuál es la función principal
de un microkernel?

El sistema operativo es la pieza fundamental del software y se ejecuta en modo kernel (también conocido
como modo supervisor). En este modo, el sistema operativo tiene acceso completo a todo el hardware y
puede ejecutar cualquier instrucción que la máquina sea capaz de ejecutar.

La función principal del microkernel es proporcionar comunicación entre el programa cliente y los
diversos servicios

46. Como en la comunicación entre un proceso cliente y el servicio?

En los sistemas microkernel, hay procesos clientes y procesos servidores. Los dos tipos se ejecutan en
modo usuario, pero la comunicación entre ellos debe pasar por el kernel, quién sólo dirige o encamina
esa comunicación, que lo hace recibiendo y reenviando mensajes entre los procesos, lo que lo hace lento
pero muy seguro.

47. Nombre algunos ejemplos de sistemas operativos del tipo microkernel.

QNX, macOS e iOS

48. Mencione las características de QNX.

QNX es un sistema operativo en tiempo real para sistemas integrados. El microkernel QNX Neutrino
proporciona servicios para pasan mensajes y planifican procesos. También maneja comunicaciones de
red de bajo nivel e nterrupciones de hardware. Todos los demás servicios en QNX son proporcionados
por procesos estándar

que se ejecutan fuera del kernel en modo de usuario.

49. Porque se dice que Windows nació casi como un sistema operativo de microkernel pero luego se
transformó en un monolítico?

Cuando se diseñó Windows XP, la arquitectura de Windows se había convertido más monolítico que
microkernel.

50. Qué ventajas tiene un diseño modular o usar las técnicas de programación orientadas objetos para
estructurar un sistema operativo?

Aquí, el kernel tiene un conjunto de componentes y pueden enlazarse 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 implementaciones modernas de UNIX, como Linux, macOS y Solaris, así como Windows.

La idea del diseño es que el kernel proporcione servicios básicos, mientras que otros servicios se
implementan dinámicamente a medida que se ejecuta el kernel.

51. Cómo caracteriza a un sistema operativo Solaris? Como a un Mac OSX?


El sistema operativo macOS de Apple está diseñado para ejecutarse principalmente en computadoras de
escritorio y

sistemas de computadoras portátiles

52. Que son las máquinas virtuales?

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.

53. Cómo funcionaba el sistema operativo VM de IBM en 1972?

54. Como se logra implementar una máquina virtual? A que se denomina modo usuario virtual y modo
kernel virtual?

55. Cuáles son los beneficios de trabajar con 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.)

56. Cómo trabaja VMware?

57. Explique cómo hace para ejecutar un programa que fue escrito en Java?

58. Porque es necesario la generación de los sistemas operativos?

59. Cómo se produce el arranque del sistema?

Generalmente, cuando se arranca un sistema operativo se crean varios procesos. Algunos de ellos son
procesos en primer plano; es decir, procesos que interactúan con los usuarios (humanos) y realizan
trabajo para ellos. Otros son procesos en segundo plano, que no están asociados con usuarios específicos
sino con una función espe

Preguntas del Capítulo 3 del Libro de SO de Silberschatz


1. Por qué nace el concepto de proceso?
Las primeras computadoras permitían ejecutar solo un programa a la vez. Este programa tenía control
completo del sistema y tenía acceso a todos los recursos del sistema. En contraste, los sistemas
informáticos contemporáneos permiten múltiples programas para cargarse en la memoria y ejecutarse
simultáneamente. Esta evolución requiere un control más firme y mejor compartimento de los diversos
programas; y estas necesidades dieron como resultado la noción de un proceso, que es un programa en
ejecución. Un proceso es la unidad de trabajo en un sistema informático moderno.
2. Cuáles fueron las denominaciones que le dieron a las actividades de la CPU en los primero tiempos
de la computación?
3. A qué denominaron trabajo en los sistemas de procesamiento por lotes?
Las primeras computadoras eran sistemas por lotes que ejecutaban trabajos
4. A que le denominaron tarea en un sistema de tiempo compartido?
Ejecutaban programas de usuario o Tareas
5. Explique los términos:
a. monoprogramación
b. multiprogramación
c. sistema monousuario
d. sistema multiusuario
e. procesamiento batch
f. procesamiento interactivo
g. sistema de tiempo compartido
h. procesos concurrentes
6. indique cuáles son las zonas de memoria que el sistema operativo reserva o asigna para cada
proceso. Explique el contenido de cada una.
El diseño de memoria de un proceso generalmente se divide en varias secciones, como se muestra en la
Figura 3.1. Estas secciones incluyen:

• Sección de texto: el código ejecutable

• Sección de datos: variables globales

• Sección de almacenamiento dinámico: memoria que se asigna dinámicamente en la ejecución del


programa

• Sección de pila: almacenamiento temporal de datos al invocar funciones (como parámetros de función,
direcciones de retorno y variables locales)

7. Explique con todos los detalles posibles el concepto de proceso.


un proceso es un programa en ejecución. El estado de la actividad actual de un proceso está
representado por el valor del contador de programa (PC) y el contenido de los registros del procesador
8. Por que decimos que no es suficiente definir a un proceso como un programa en ejecución?
un programa en sí mismo no es un proceso. Un programa es una entidad pasiva, como un archivo que
contiene una lista de instrucciones almacenadas en el disco (a menudo llamado un archivo ejecutable).
Por el contrario, un proceso es una entidad activa, con un contador de programa que especifica las
siguientes instrucciones para ejecutar y un conjunto de recursos asociados. Un programa se convierte en
un proceso cuando un archivo ejecutable se carga en la memoria. Se usan dos técnicas para cargar
archivos ejecutables: haciendo doble clic en un icono que representa un archivo ejecutable o ingresando
el nombre del archivo ejecutable en la línea de comandos (como en prog.exe o a.out).
Aunque dos procesos pueden estar asociados con el mismo programa, ellos sin embargo, se consideran
dos secuencias de ejecución separadas.
9. Por qué los diseñadores han clasificado a los procesos según el concepto de estado? Qué ventajas
trajo esta clasificación?
10. Defina cada uno de los estados de un proceso.
A medida que se ejecuta un proceso, cambia de estado. El estado de un proceso se define en partes, por la
actividad actual de ese proceso. Un proceso puede estar en uno de los siguientes estados:

• Nuevo. El proceso se está creando.


• Ejecutando. Las instrucciones se están ejecutando.
• Esperando. El proceso está esperando que ocurra algún evento (como una finalización de E/S o recepción
de una señal).
• Listo. El proceso está esperando ser asignado a un procesador.
• Terminado. El proceso ha finalizado la ejecución.

11. Explique por qué motivo los procesos transicionan de estado en estado (mostrando para cada una de
las transiciones)
12. explique que es el bloque de control de procesos (PCB), para qué sirve?
el PCB simplemente sirve como repositorio de todos los datos necesarios para comenzar o reiniciar, un
proceso, junto con algunos datos contables.
13. Muestre cada uno de los campos que posee un PCB y explique cuál es su sentido.

14. A que se denomina hilo de ejecución?


Este único hilo de control permite que el proceso realice solo una tarea a la vez. Por lo tanto, el usuario
no puede escribir caracteres simultáneamente y ejecutar el corrector ortográfico. La mayoría de los
sistemas operativos modernos han ampliado el concepto de proceso para permitir que un proceso tenga
múltiples hilos de ejecución y así realizar más de una tarea a la vez.
15. Explique el cambio de contexto.
El cambio de contexto es más corto que el de proceso
16. Aquí se denomina planificación de procesos? Por qué es necesaria?
el planificador de procesos selecciona un proceso disponible (posiblemente de un conjunto de varios
procesos disponibles) para la ejecución del programa en un núcleo. Cada núcleo de CPU puede ejecutar
un proceso a la vez.
Para un sistema con un solo núcleo de CPU, nunca habrá más de un proceso ejecutándose a la vez,
mientras que un sistema multinúcleo puede ejecutar múltiples procesos a la vez.
17. Cuantas colas de planificación conoce? Cuál es la función de cada una?

18. Dibuje un diagrama de colas para la planificación de procesos.


19. Qué significa despachar un proceso?

20. Explique qué sucesos podrían ocurrir después de que a un proceso se le asigne la CPU.
De acuerdo a lo que se ve en la diapositiva 14 del Cap 3 de Procesos, un proceso que está en ejecución
(tiene asignada la CPU), podría abandonar ese estado porque: a) Finaliza (normal o anormalmente) b) Se
le termina el tiempo de asignación de la CPU (si el planificador de CPU, trabaja por asignación de tiempo)
y vuelve al estado Ready c) Solicita una operación de E/S d) pidió la creación de un proceso hijo con
fork() o e) espera por un evento (espera una interrupción que lo saque de la espera. En las 3 últimas
opciones el proceso pasa al estado de bloqueo, donde espera por sucesos.

21. Qué sentido tiene el llamado planificador a largo plazo? Cada qué tiempo se ejecuta?
Respuesta en la imagen de pregunta 17
22. Porque se le denomina planificador de corto plazo al scheduler?
Respuesta en la imagen de pregunta 17

23. Que significa el término "grado de multiprogramación"? En que afecta al sistema?


El número de procesos actualmente en memoria se conoce como el grado de multiprogramación.
Si hay más procesos que núcleos, el exceso de procesos tendrá esperar hasta que un núcleo esté libre y
pueda planificarse
24. Cuál es el sentido de un planificador a mediano plazo?
25. A que se denomina intercambio?
como intercambio, porque un proceso puede ser "intercambiado" de la memoria al disco, donde se
guarda su estado actual y luego se "intercambia" desde el disco a la memoria, donde se restaura su
estado. El intercambio es sólo necesario cuando la memoria se ha comprometido en exceso y debe
liberarse
26. Cuál es el criterio para categorizar a los procesos como:
a. limitado por entrada salida: el proceso es uno que pasa más tiempo haciendo E/S de lo que
gasta haciendo cálculos.
b. limitado por CPU: por el contrario, genera solicitudes de E/S con poca frecuencia, usa más
tiempo haciendo cálculos.
27. Por qué es conveniente mezclar procesos de ambas categorías?
Porque los procesos limitados por E/S, pasan poco tiempo (ráfagas cortas) en CPU, así convendría
alternar esos tipos de proceso, para que usen plenamente los recursos y puedan paralelizar en CPU y en
E/S simultáneamente. Es decir, convendría darles prioridad a los limitados por E/S frente a los de CPU (si
ambos están en cola Ready, que se despachen primero los de E/S)

28. Aquí se denomina overhead?


El tiempo de Cambio de contexto es pura sobrecarga (overhead), porque el sistema no hace trabajo útil
mientras hace el intercambio.
29. Cuáles son los pasos de la creación de un proceso?
En el modelo de UNIX, con la llamada al sistema fork(), algunos pasos del SO son:

• Aprueba la llamada fork, para crear un hijo (al verificar los permisos y que hay lugar en la tabla de
procesos: necesita una entrada nueva, para crear un PCB)
• Llena el PCB nuevo (del hijo) con: un nuevo número PID, y hereda todos los entornos (valores de los
registros) de la CPU que estaba usando el padre
• O sea hace una copia exacta del código y datos del padre (en realidad, todavía no genera un nuevo
espacio, hasta que no se modifiquen datos en el hijo, así que el hijo comparte los links del padre al
mismo espacio del padre)
• También el hijo comparte los recursos (archivos abiertos y dispositivos abiertos) del padre
• Luego asigna un número al padre (el PID asignado al hijo) y Cero al hijo
• Luego el planificador decide quién sigue en ejecución (el padre o el hijo, ya que los dos tienen la
misma prioridad)

30. A que se denomina árbol de procesos? Qué función cumple el proceso init?
los procesos nuevos se denominan hijos de ese proceso. Cada uno de estos nuevos procesos a su vez
puede crear otros procesos, formando así un árbol de procesos.
El proceso init como el nuevo padre de procesos huérfanos.

31. Cuáles son las posibilidades de sucesos para un proceso padre, cuando acaba de crear un hijo, en
términos de ejecución?
a) El padre continúa ejecutándose simultáneamente con sus hijos.
b) El padre espera hasta que algunos o todos sus hijos hayan terminado.
c) También hay dos posibilidades de espacio de direcciones para el nuevo proceso:
d) El proceso hijo es un duplicado del proceso padre (tiene el mismo programa y datos como
padre).
e) El proceso hijo tiene un nuevo programa cargado.
32. Cuáles son las posibilidades de sucesos para un proceso padre, cuando acaba de crear un hijo, en
función del espacio de direcciones del nuevo proceso?
El nuevo proceso consiste en una copia del espacio de direcciones del proceso original.
Este mecanismo permite que el proceso padre se comunique fácilmente con su proceso hijo. Ambos
procesos (el padre y el hijo) continúan la ejecución en la instrucción después de fork (), con una
diferencia: el código de retorno para fork () es cero para el nuevo proceso (hijo), mientras que el número
de identificador del proceso del hijo (distinto de cero) es devuelto al padre.

33. Explique con el máximo detalle posible que pasos se realizan cuando se ejecuta fork.
34. Explique los sucesos que ocurren cuando se ejecuta el código de la figura 3.8.
35. Muestre la diferencia entre fork y CreateProcess.
Mientras que fork () tiene el proceso hijo heredando el espacio de direcciones de su padre, CreateProcess
() requiere cargar un programa específico en el espacio de direcciones del proceso hijo en la creación del
proceso. Además, mientras que fork () no pasa parámetros, CreateProcess () espera no menos de 10
parámetros

36. Explique los pasos que suceden cuando termina un proceso.


Un proceso finaliza cuando termina de ejecutar su última instrucción y pregunta al sistema operativo para
eliminarlo utilizando la llamada al sistema exit ().
37. Cuál es la llamada al sistema para terminar un proceso?
Exit()
38. Cuál es la llamada al sistema para esperar la terminación de un hijo? Cómo trabaja?
TerminateProcess()
39. Muestre cuáles son las razones por la cual un proceso padre puede terminar la ejecución de uno de
sus hijos.
Un padre puede terminar la ejecución de uno de sus hijos por una variedad de razones como estas:
• El hijo ha excedido el uso de algunos de los recursos que le han asignado. (Para determinar si esto ha
ocurrido, el padre debe tener un mecanismo para inspeccionar el estado de sus hijos).
• La tarea asignada al hijo ya no es necesaria.
• El padre está terminando y el sistema operativo no permite que un hijo continúe si su padre termina.

40. A que se denomina terminación en cascada?


Algunos sistemas no permiten que exista un hijo si su padre ha terminado. En tales sistemas, si un
proceso termina (ya sea normal o anormalmente), entonces todos sus hijos también deben ser
terminados. Este fenómeno, denominado terminación en cascada, normalmente es iniciada por el sistema
operativo.

41. Como se caracteriza a los procesos que se ejecutan concurrentemente? Que significa que un proceso
sea independiente?
Los procesos dentro de un sistema pueden ser independientes o cooperantes.
Un proceso independiente no puede afectar o verse afectado por la ejecución de otro proceso.
Los procesos cooperativos pueden afectar o verse afectado por otros procesos, incluido el intercambio
de datos
42. Cómo definiría un proceso cooperativo?
cualquier proceso que comparta datos con otros procesos es un proceso cooperativo

43. Cuáles son las ventajas que brinda la ejecución concurrente de procesos cooperativos?
• Comparten información
• Aceleración de la computación
• Modularidad
• conveniencia
44. Porque es necesaria la comunicación entre procesos?
La cooperación de procesos requiere un mecanismo de comunicación entre procesos (IPC) que les
permitirá intercambiar datos, es decir, enviar datos y recibir datos el uno del otro.
45. Explique el modelo de memoria compartida de comunicación interproceso.
En el modelo de memoria compartida, se establece una región de memoria compartida para los procesos
cooperantes. Los procesos pueden intercambiar información leyendo y escribiendo datos en la región
compartida.
46. Explique cómo tiene lugar la comunicación interproceso cuando el modelo es de paso de mensajes.
En el modelo de paso de mensajes, la comunicación se realiza mediante intercambio de mensajes entre
procesos cooperativos.
47. Ventajas y desventajas del modelo de memoria compartida.
El paso de mensajes es útil para intercambiar pequeñas cantidades de datos, porque no es necesario
evitar conflictos. El Paso de mensajes también es más fácil de implementar en un sistema distribuido que
la memoria compartida.
48. Ventajas y desventajas del modelo de paso de mensajes.
La memoria compartida puede ser más rápida que la transmisión de mensajes, dado que los sistemas de
paso de mensajes generalmente se implementan utilizando llamadas al sistema y por lo tanto, requieren
una mayor intervención del kernel. En los sistemas de memoria compartida, las llamadas al sistema solo
son necesarias para establecer regiones de memoria compartida. Una vez que se establece la memoria
compartida, se tratan todos los accesos como accesos a memoria normal (en espacio de usuario), y no
se requiere asistencia del kernel.

49. Explique el problema del productor-consumidor.


consideremos al problema del productor/consumidor, que es un paradigma común para los procesos
cooperativos.
Un proceso productor produce información que es consumida por un proceso consumidor. Por ejemplo,
un compilador puede producir código ensamblador que es consumido por un programa ensamblador. El
ensamblador, a su vez, puede producir módulos de objetos que son consumidos por el cargador. El
problema productor-consumidor también proporciona un modelo útil para el paradigma cliente-servidor.
Generalmente pensamos un servidor como productor y un cliente como consumidor.

50. Explique el código de la figura 3.12 y 3.13


51. Porque se dice que el método de paso de mensajes proporciona mecanismos de comunicación y
sincronización de procesos.
52. Porque se dice que el sistema de paso de mensajes es útil en un entorno distribuido?
El paso de mensajes proporciona un mecanismo para permitir que los procesos se comuniquen y
sincronicen sus acciones sin compartir el mismo espacio de direcciones. Eso es particularmente útil en
un entorno distribuido, donde puede darse la comunicación entre procesos que residen en diferentes
computadoras conectadas por una red.
53. Aquí se denomina un enlace de comunicación entre procesos?
Un enlace de comunicación en este esquema tiene las siguientes propiedades:
• Se establece automáticamente un enlace entre cada par de procesos que se quieren comunicar. Los
procesos sólo necesitan conocer la identificación mutuamente para comunicarse.
• Un enlace está asociado con exactamente dos procesos.
• Entre cada par de procesos, existe exactamente un enlace.
54. Cuáles son los métodos para implementar lógicamente un enlace y las operaciones de envío y
recepción?
Este esquema exhibe simetría en el direccionamiento; es decir, tanto el proceso emisor como el proceso
receptor debe nombrar al otro para comunicarse. Una variante de este esquema emplea asimetría en el
direccionamiento. Aquí, sólo los emisores nombran al receptor; No se requiere que el receptor nombre al
emisor. En este esquema,
Las primitivas send () y receive () se definen de la siguiente manera:

• send(P, message)— Se envía un message al proceso P.


• receive(id, message)-- Se recibe un mensaje de cualquier proceso. La variable id se establece en el nombre
del proceso con el que la comunicación tiene lugar.

55. Que significa que una comunicación sea directa o indirecta?


Bajo comunicación directa, cada proceso que quiera comunicarse debe nombrar explícitamente al
destinatario o al remitente de la comunicación. En este esquema, las primitivas send () y receive ()
Con comunicación indirecta, los mensajes se envían y reciben de buzones de correo o puertos.
56. A que se denomina buzón de correo o puerto?
Un buzón se puede ver de forma abstracta como un objeto en el que los procesos pueden colocar
mensajes y desde donde pueden extraer y eliminar mensajes. Cada buzón tiene una identificación única.
57. Qué diferencia hay que un buzón de correo sea de un proceso o del sistema operativo?
58. Porque es necesaria la sincronización de procesos?
59. Cuáles son las distintas variantes de implementación de la primitivas send y receive, respecto de la
sincronización o bloqueo?
• Send Bloqueante. El proceso que envía se bloquea hasta que el mensaje es recibido por el proceso
receptor o por el buzón.
• Send sin bloqueo. El proceso envía el mensaje y continúa la operación.
• Receive Bloqueante. El receptor se bloquea hasta que haya un mensaje disponible.
• Receive sin bloqueo. El receptor recupera un mensaje válido o un nulo.

60. Cómo afecta el tamaño del almacenamiento en buffer a los procesos que hacen las llamadas send y
receive?
61. Como se da la comunicación de procesos en memoria compartida en POSIX?
62. Como se da la comunicación de procesos en un sistema operativo como Mach?
63. Qué ventajas tiene la llamada a procedimiento remoto (RPC)?
64. Cómo trabajan los buzones en Mach?
Los mensajes son enviados, y recibidos de buzones, que se llaman puertos en Mach. Los puertos son de
tamaño finito y unidireccional; para comunicación bidireccional, se envía un mensaje a un puerto, y se
envía una respuesta a un puerto de respuesta separado. Cada puerto puede tener múltiples remitentes
(emisores), pero solo un receptor. Mach usa puertos para representar recursos tales como tareas, hilos,
memoria y procesadores, mientras que el paso de mensajes proporciona un enfoque orientado a objetos
para interactuar con estos recursos del sistema y servicios.
65. Cómo se comunican los procesos en un sistema operativo como Windows ?
66. A que le denomina llamada a procedimiento local (LPC) Windows?
El recurso de paso de mensajes en Windows se llama llamada a procedimiento local avanzado (ALPC). Se
utiliza para la comunicación entre dos procesos de la misma máquina.
67. Son los dos tipos de puertos que usa Windows?
Windows utiliza dos tipos de puertos: puertos de conexión y puertos de comunicación.

68. Cómo funciona la comunicación en Windows ? Cuál es la limitación del tamaño del mensaje?
La comunicación funciona de la siguiente manera:
➢ El cliente abre un identificador (handle) para el objeto de puerto de conexión del subsistema.
➢ El cliente envía una solicitud de conexión
➢ El servidor crea dos puertos de comunicación privador y devuelve el identificador a uno de ellos
para el cliente.
➢ El cliente y el servidor usan el identificador de puerto correspondiente para enviar mensajes o
devoluciones de llamadas y para escuchar las respuestas.
69. A que se denomina descriptor en esta comunicación?
70. A que se denomina comunicación en sistemas cliente-servidor?
describimos cómo se pueden comunicar los procesos mediante el uso de memoria compartida y paso de
mensajes. Estas técnicas últimas se pueden utilizar para la comunicación en sistemas cliente-servidor
71. Que es un socket? Cómo funciona la comunicación con socket?
Un socket se define como un punto final para la comunicación.
Los sockets permiten que dos procesos en diferentes máquinas se comuniquen a través de una red.
72. Cómo funciona una llamada a procedimiento remoto (RPC)?
Preguntas del capítulo 4

1. defina la diferencia entre el concepto de proceso moderno y de hilo.


2. Redefina el concepto de proceso tradicional o proceso pesado o mono hilo.
3. Explique cómo surge el concepto de hilo. De ejemplos de aplicaciones que se benefician.
4. Explique el gráfico de la figura 4.1 de la página 114. Muestre que significa cada uno de los términos
del gráfico.
5. Explique cómo trabaja una aplicación servidor web con múltiples hilos.
un servidor web acepta solicitudes de clientes para páginas web, imágenes, sonido, etc. Un servidor web
puede estar ocupado al tener varios (quizás miles de) clientes que acceden simultáneamente. Si el
servidor web se ejecuta como un proceso tradicional de un solo hilo, sería capaz de atender solo a un
cliente a la vez, y un cliente puede tener que esperar mucho tiempo para que su solicitud sea atendida.

6. Explique la ventaja de capacidad de respuesta de la programación multihilos.


Capacidad de respuesta. Los múltiples hilos de una aplicación interactiva pueden permitir a un programa
continuar ejecutándose incluso si parte de él está bloqueado o está ejecutando una operación
prolongada, lo que aumenta la capacidad de respuesta al usuario. Esta cualidad es especialmente útil en
el diseño de interfaces de usuario. Por ejemplo, considere lo que sucede cuando un usuario hace clic en
un botón que da como resultado observar el rendimiento de una operación que consume mucho tiempo.
Una aplicación de un solo hilo no respondería al usuario hasta que la operación hubiera sido terminado.
Por el contrario, si la operación que lleva mucho tiempo se realiza en un hilo separado y asíncrono, la
aplicación sigue respondiendo al usuario.

7. Ídem para comparación de recursos.


Compartir recursos. Los procesos pueden compartir recursos solo a través de técnicas como la memoria
compartida y el paso de mensajes. Tales técnicas deben ser organizadas explícitamente por el
programador. Sin embargo, los hilos comparten la memoria y los recursos del proceso al que pertenecen
por defecto. El beneficio de compartir código y datos es que permite a una aplicación tener varios hilos
diferentes de actividad dentro del mismo espacio de direcciones.

8. Ídem para economía.


Economía. Como la creación de procesos consume mucha memoria y recursos, ya que los hilos
comparten los recursos del proceso al que pertenecen, es más económico crear y cambiar hilos (cambio
de contexto de hilos).
Medir empíricamente la diferencia en gastos generales puede ser difícil, pero en la creación general de
hilos consume menos tiempo y memoria que la creación de procesos. Además, el cambio de contexto
suele ser más rápido entre hilos que entre procesos.

9. Ídem para utilización sobre arquitecturas multiprocesador


Escalabilidad. Los beneficios del multihilo pueden ser aún mayores en una arquitectura multiprocesador,
donde los hilos pueden ejecutarse en paralelo en diferentes núcleos de procesamiento. Un proceso de
hilo único solo puede ejecutarse en un procesador, independientemente de cuántos estén disponibles.
Exploramos este tema más adelante en la siguiente sección.

10. Explique que significa que los hilos son soportados en el nivel de usuario y su diferencia con
aquellos hilos soportados por el kernel.
Los soportados en el nivel de usuario: son los que el kernel no sabe de su existencia y deben ser
administrado en nivel de usuario. En librerías o bibliotecas que se ejecutan en modo usuario

Los soportados en el nivel de kernel: éste ya conoce su existencia y los administra (planifica, despacha,
sincroniza, etc.)
11. Explique el modelo muchos a uno. Qué ventajas y desventajas ofrece.
asigna muchos hilos de nivel de usuario a un hilo de kernel. La administración de hilos es realizada por la
biblioteca de hilos en el espacio del usuario, entonces es eficiente
12. Explique el modelo uno a uno. Qué ventajas y desventajas ofrece.
asigna cada hilo de usuario a un hilo del kernel. Eso proporciona más concurrencia que el modelo de
muchos a uno al permitir que otro hilo se ejecute cuando un hilo hace una llamada al sistema bloqueante.
También permite múltiples hilos para ejecutarse en paralelo en multiprocesadores. El único
inconveniente de este modelo es que crear un hilo de usuario requiere crear el correspondiente hilo del
kernel, y una gran cantidad de hilos del kernel pueden afectar el rendimiento de un sistema.
13. Explique el modelo muchos a muchos. Qué ventajas y desventajas ofrece.
multiplexa muchos hilos de nivel de usuario para un número menor o igual de hilos de kernel. El número
de hilos del kernel puede ser específico para una aplicación particular o una máquina particular (una
aplicación se puede asignar más hilos de kernel en un sistema con ocho núcleos de procesamiento de
que un sistema con cuatro núcleos).

14. A que se denomina Pthreads? Qué características posee.


Puede proporcionarse a nivel de usuario o nivel del kernel.
Pthreads se refiere al estándar POSIX (IEEE 1003.1c) que define una API para la Creación y sincronización
de hilos.
15. Cómo trabajan los hilos en win 32?
La biblioteca win 32 establece una relación 1 a 1 entre los hilos en nivel de usuario y en nivel del kernel,
por lo que todos los hilos originales del proceso son reconocidos y administrados por el kernel
16. Cuál es la característica de los hilos en Java?
Los hilos son el modelo fundamental de ejecución del programa en un programa Java y el lenguaje
Java y su API proporcionan un amplio conjunto de características para la creación y gestión de hilos.
Todos los programas Java comprenden al menos un solo hilo de control, incluso un programa Java
simple que consta de solo un método main() se ejecuta como un hilo único en la JVM. Los hilos de
Java están disponibles en cualquier sistema que proporciona una JVM que incluye Windows, Linux y
macOS. La API thread de java también está disponible para aplicaciones de Android.

17. Qué cuestiones surgen con las llamadas al sistema fork y exec, en los programas multihilos?
18. Cuáles son las distintas maneras de terminar un hilo. Qué características tienen cada una?
1. Cancelación asincrónica. Un hilo termina inmediatamente el objetivo hilo.
2. Cancelación diferida. El hilo objetivo verifica periódicamente si debería terminar, permitiéndole la
oportunidad de terminar de una manera ordenada.

19. Que son las señales?.


Los procesos también se pueden comunicar de otra forma: interrupciones de software. Un proceso puede
enviar lo que se conoce como una señal a otro proceso. Los procesos pueden indicar al sistema lo que
quieren que ocurra cuando llegue una señal. Las opciones son ignorarla, atraparla o dejar que la señal
elimine el proceso (la opción predeterminada para la mayoría de las señales). Si un proceso elige atrapar
las señales que se le envían, debe especificar un procedimiento para el manejo de señales. Cuando llega
una señal, el control cambia de manera abrupta al manejador. Cuando el manejador termina y regresa, el
control regresa al lugar de donde provino, lo cual es análogo a las interrupciones de E/S de hardware.

20. Qué diferencia hay en recibir una señal en forma síncrona o asíncrona?.
Las señales síncronas se entregan al mismo proceso que realizó la operación que causó la señal (esa es
la razón por la que se consideran sincrónico).
Cuando una señal es generada por un evento externo a un proceso en ejecución, El proceso recibe la
señal de forma asíncrona.
21. Cuáles son las distintas variantes en el tratamiento de las señales por parte de los procesos?
Las señales pueden ser sincrónicas (deben ser atendidas ya sea porque las generó el mismo proceso y
no pueden ser ignoradas). Pueden ser asincrónicas, cuando se generan en un evento externo al proceso
(usuario, proceso padre o kernel), en este caso pueden ser ignoradas, postergadas u obligadas a
ejecutar. También pueden clasificarse si el programa para atender esa señal, el código ya está presente
en el kernel o será definido por el usuario.
22. Cuál es el equivalente en Windows de las señales en Unix?.
Texto extraído del libro Sistemas Operativos Modernos de Tanenbaum 3era Edic, Cap 10, Pág 745 (dado
como bibliografía de consulta)
Señales en UNIX. En este caso usan las señales como alarmas o anunciadores de eventos
Un proceso sólo puede tener una alarma pendiente en cualquier momento. Si se hace una llamada a
alarm con un parámetro de 10 segundos, y 3 segundos después se hace otra llamada a alarm con un
parámetro de 30 segundos, sólo se generará una señal 20 segundos después de la segunda llamada. La
segunda llamada a alarm cancela a la primera.
Windows, que apareció más de 20 años después que UNIX, usa Objetos para casi toda su arquitectura y
dispone de Objetos tipo Eventos para dar un servicio similar y mejorado que las señales en UNIX. La
principal ventaja es que se pueden almacenar y encolar varios eventos que el proceso (a través de la
ejecución de sus hilos) puede o debe ejecutar su código. UNIX en su versión original sólo permitía alojar
un solo número de señal (el número funciona como un puntero, al igual que las interrupciones), por lo
que si al proceso le enviaban otra señal, se borraba la anterior. Cap 11, Pág 842:
El administrador de objetos administra la mayoría de los objetos interesantes en modo de kernel que se
utilizan en el nivel ejecutivo. Éstos incluyen los procesos, hilos, archivos, semáforos, dispositivos y
drivers de E/S, temporizadores y muchos otros.

23. Qué ventajas tiene contar con un conjunto compartido de hilos?.


La principal ventaja es que el kernel, ya dispone de un grupo creado de hilos “voluntarios”, que están
suspendidos, esperando que haya solicitudes para activarse. Así que se minimiza el tiempo de creación
de los hilos.

24. Cuáles son los datos específicos de un hilo?.


De la Diapositiva 4:
Un hilo es una unidad básica de utilización de la CPU; comprende una:
• ID de hilo
• Prioridad
• Tiempos propios
• un contador de programa (PC),
• un conjunto de registros y
• una pila.

25. Aquí se denomina proceso ligero o LWP?

Del Libro de Silberschatz, Páginas 34 y 35 de la traducción que les envié:


Muchos sistemas que implementan el modelo muchos a muchos o el de dos niveles, colocan una
estructura de datos intermedia entre los hilos de usuario y de kernel. Esta estructura de datos,
típicamente conocida como un proceso liviano, o LWP: se muestra en la Figura 4.20. Para la biblioteca
de hilos de usuario, el LWP parece ser un procesador virtual en el que la aplicación puede planificar
un hilo de usuario para ejecutar. Cada LWP está conectado a un hilo del kernel, y son los hilos del
kernel los que son planificados por el sistema operativo para ejecutarse en procesadores físicos. Si
un hilo del kernel se bloquea (como cuando espera que se complete una operación de E/S), los
bloques LWP también se bloquean. Arriba de la cadena, el hilo de nivel de usuario conectado al LWP
también se bloquea.

26. Qué ventajas ofrece usar un esquema de procesador virtual (LWP)?


Una aplicación que es limitada por I/O sin embargo, puede requerir múltiples LWP para ejecutarse.
Típicamente, un LWP es requerido para cada llamada de sistema de bloqueo concurrente. Supongamos,
por ejemplo, que tiene Cinco solicitudes diferentes de lectura de archivos simultáneamente, Se necesitan
cinco LWP, porque todos podrían estar esperando la finalización de E/S en el kernel. Si un proceso tiene
solo cuatro LWP, entonces la quinta solicitud debe esperar a que vuelva uno de los LWP del kernel.

O sea: el kernel asigna estos procesadores virtuales o procesos livianos, que en realidad son estructuras
de control que, al ponerlas en el medio de los hilos del kernel y los de usuario, podrían bloquearse sin
bloquear todo el proceso y no se crean tantos hilos del kernel, ya que ese que se correspondía con el
proceso liviano bloqueado, ahora puede asignarse a otro proceso liviano, donde se puede ejecutar otro
hilo de usuario.

27. Que significa la activación del planificador?


Un esquema para la comunicación entre la biblioteca de hilos de usuario y el kernel se conoce como
activación del planificador. Funciona de la siguiente manera: el kernel proporciona una aplicación con un
conjunto de procesadores virtuales (LWP) y la aplicación puede planificar hilos de usuario en un
procesador virtual disponible. Además, el kernel debe informar a la aplicación sobre ciertos eventos. Este
procedimiento es conocido como una llamada ascendente. La biblioteca de hilos maneja las llamadas
ascendentes con un controlador de llamada ascendente y los controladores de llamada ascendente
deben ejecutarse en un procesador virtual.

28. Porque se necesitan las suprallamadas?


Un evento que desencadena una llamada ascendente ocurre cuando un hilo de aplicación está a
punto de bloquearse. En este escenario, el kernel realiza una llamada ascendente a la aplicación
informándole que un hilo se está a punto de bloquear e identificando el hilo específico.
El kernel luego asigna un nuevo procesador virtual a la aplicación. La aplicación ejecuta un
controlador de llamada ascendente en este nuevo procesador virtual, que guarda el estado del hilo
por bloquearse y abandona el procesador virtual en el que el hilo (por bloquearse) se está ejecutando.
El controlador de llamada ascendente luego planifica otro hilo que es elegible para ejecutarse en el
nuevo procesador virtual

Se llaman suprallamadas, porque de “abajo hacia arriba”, del kernel al usuario


29. Que caracteriza a los hilos en Windows? A que se denomina fibra en este sistema operativo?.

Texto extraído del libro Sistemas Operativos Modernos de Tanenbaum 3era Edic, Cap 11, Pág 864
(dado como bibliografía de consulta)

La principal ventaja de las fibras es que la sobrecarga de cambiar entre una fibra y otra es bastante
menor que la sobrecarga de cambiar entre un hilo y otro. Para un cambio de hilo se requiere entrar y
salir del kernel. En un cambio de fibra se guardan y restauran unos cuantos registros sin cambiar los
modos.

Windows, tiene una estructura compleja, porque trata de optimizar todo lo que puede con toda la
“herencia que no puede abandonar, por su OBJETIVO: Compatibilidad con sistemas anteriores”. Así,
todavía conserva el concepto de Trabajo o Job antiguo, ahora le llama tarea: sobre ésta carga todos
los recursos que los procesos del mismo usuario van usando y lo limita, para que no se “despilfarro”.
Luego como novedoso tiene concepto de “fibra”, para decir que es más liviano que un hilo, ya que se
administra en espacio de usuario (éste no depende directo de un único hilo)

30. Qué componentes generales posee un hilo en Windows?.


• Una ID de hilo que identifica de forma exclusiva el hilo
• Un conjunto de registros que representa el estado del procesador.
• Un contador de Programa

31. Cuáles son las principales estructuras de datos de un hilo?


ETHREAD: bloque de hilo en el ejecutivo
KTHREAD: bloque de hilo en el kernel
TEB: bloque de hilo en el entorno

32. Qué datos posee ETHREAD?


• ETHREAD: bloque de hilo en el ejecutivo. Incluye puntero para procesar a que hilo pertenece y a
KTHREAD, en el espacio del kernel.
33. Que datos posee KTHREAD?
• KTHREAD: bloque de hilo en el kernel. Información de planificación y sincronización, pila en modo
kernel, puntero TEB, en el espacio del kernel.
34. Qué datos posee TEB?
• TEB: bloque de hilo en el entorno. ID de hilo, pila en modo de usuario, almacenamiento local de hilos, en
el espacio de usuario.
35. Qué ventajas tiene dividir la tabla de hilos en tres estructuras?
Las tablas en el kernel pueden ser muy grandes, contener mucha información. Entonces Windows (como
ya lo había hecho UNIX con la información de los procesos) decidió dividir la tabla de hilos, por una
cuestión de espacio y tiempo de acceso para los programas que la necesiten acceder. Así la parte que
será accedida por el Ejecutivo (que trata con estructuras como procesos e hilos), por el Kernel
(sincronización y asignación de recursos) y los datos propios del hilo (privados y no necesarios para el
SO) están en estructuras separadas pero vinculadas por punteros.
36. Que caracteriza a los hilos en Linux? Cuáles son las variantes de clone(). Cuáles la variante de clone()
parecida al fork?

Preguntas del Capítulo 2 del Libro de SO de Silberschatz

60. porque se dice que un sistema operativo provee de servicios a los usuarios.

Los servicios específicos proporcionados, por supuesto, difieren de un sistema operativo a otro, pero podemos
identificar clases comunes.

Un conjunto de servicios del sistema operativo proporciona funciones que son útiles para el usuario.

61. A que se le denomina interfase de usuario? Cuáles son las posibles variantes?

Esta interfaz puede tomar varias formas. Más comúnmente se utiliza la

• interfaz gráfica de usuario (GUI). Aquí, la interfaz es un sistema de ventanas con un mouse que sirve como dispositivo
señalador para dirigir E/S, elija de los menús, y hace selecciones y un teclado para ingresar texto.

• Sistemas móviles tales ya que los teléfonos y tabletas proporcionan una interfaz de pantalla táctil, lo que permite a
los usuarios deslizar sus dedos por la pantalla o presionar los botones en la pantalla para seleccionar opciones

• Otra opción es una interfaz de línea de comandos (CLI), que usa comandos en modo texto y un método para
ingresarlos (por ejemplo, un teclado para escribir en comandos en un formato específico con opciones específicas).
Algunos sistemas proporcione dos o las tres de estas variaciones.

62. Cuál es la característica que tiene la interfaz de línea de comandos?

permite a los usuarios ingresar directamente los comandos que debe realizar el sistema operativo.

63. En qué consiste un interfaz de proceso por lotes?

64. De qué se trata la interfaz gráfica de usuario?

en lugar de ingresar comandos directamente a través de una interfaz de línea de comandos, los usuarios emplean un
Sistema de menú en una ventana basada en mouse caracterizado por un “escritorio” metafórico. El usuario mueve el
mouse para colocar su puntero en imágenes o iconos, en la pantalla (el escritorio) que representan programas, archivos,
directorios y funciones del sistema. Dependiente de la ubicación del puntero del mouse, hacer clic en un botón del mouse
puede invocar un programa, seleccione un archivo o directorio, conocido como carpeta, o desplegar un menú que
contiene comandos

65. Nombre los otros servicios que debe proveer todo sistema operativo, además de servir de interfaz con el usuario.

• Interfaz de usuario.

• Ejecución del programa

• Operaciones de E/S.

• Manipulación del sistema de archivos


• Comunicaciones.

• Detección de errores.

• Asignación de recursos

• Inicio sesión.

• Protección y seguridad

66. Porque es necesario que permita la ejecución de los programas?

El sistema debe poder cargar un programa en la memoria y ejecutar ese programa. El programa debe poder
finalizar su ejecución, normal o anormalmente (indicando error).

67. Porque un sistema operativo debe ofrecer un servicio de operaciones de entrada/salida?

El programa de ejecución puede requerir E/S, lo que puede implicar una archivo o un dispositivo de E/S. Para dispositivos
específicos, se pueden desear funciones especiales (como leer desde una interfaz de red o escribir en un sistema de
archivos). Por eficiencia y protección, los usuarios generalmente no pueden controlar los dispositivos de E/S
directamente. Por lo tanto, el sistema operativo debe proporcionar un medio para hacer la E/S.

68. Cual es el servicio que ofrece con la manipulación del sistema de archivos?

El sistema de archivos es de particular interés. Obviamente, los programas necesitan leer y escribir archivos y directorios.
Ellos también necesitan para crear y eliminar el nombre del equipo, buscar un archivo determinado y mostrar la
información del archivo.

Finalmente, algunos sistemas operativos incluyen administración de permisos para permitir o denegar el acceso a
archivos o directorios en función de la propiedad del archivo. Muchos sistemas operativos proporcionan una variedad de
sistemas de archivos, a veces para permitir elección personal y, a veces, para proporcionar características o rendimiento
específicos

69. Porque se necesita un servicio de comunicaciones?

Hay muchas circunstancias en las que un proceso necesita intercambiar información con otro proceso. Tal comunicación
puede ocurrir entre procesos que se ejecutan en la misma computadora o entre procesos que se ejecutan en diferentes
sistemas informáticos unidos por una red. Las comunicaciones pueden implementarse a través de memoria compartida,
en la que dos o más procesos leen y escriben en una sección de memoria, o por la transmisión de mensajes, en la que se
encuentran paquetes de información en formatos predefinidos que son movidos por el sistema operativo entre los
procesos.

70. Porque hace falta que el sistema operativo detecte los errores, qué tipo de errores?

El sistema operativo debe detectar y corregir errores constantemente Pueden producirse errores en la CPU y el hardware
de memoria (como un error de memoria o una falla de energía), en dispositivos de E/S (como un error de paridad en el
disco, una falla de conexión en una red o falta de papel en la impresora), y en el programa de usuario (como un
desbordamiento aritmético o un intento de acceder a una ubicación de memoria ilegal). Para cada tipo de error, el
funcionamiento el sistema debe tomar las medidas adecuadas para garantizar una correcta y coherente computación. A
veces, no tiene más remedio que detener el sistema. Otras veces, podría terminar un proceso que causa errores o
devolver un código de error a un proceso para que el proceso detecte y posiblemente corrija.

Existe otro conjunto de funciones del sistema operativo no para ayudar al usuario sino más bien para asegurar la
operación eficiente del sistema mismo. Sistemas con múltiples procesos puede ganar eficiencia al compartir los recursos
de la computadora entre los diferentes procesos.

71. Cuáles son algunas de las funciones que debe contar un sistema operativo para garantizar la eficiencia del propio
sistema de computación?

72. Porque hay que asignar los recursos?

Cuando hay múltiples procesos ejecutándose al mismo tiempo, los recursos deben asignarse a cada uno de ellos. El
sistema operativo gestiona muchos tipos diferentes de recursos. Algunos (como ciclos de CPU, memoria principal y
almacenamiento de archivos) pueden tener un código de asignación especial,
mientras que otros (como los dispositivos de E/S) pueden tener una solicitud mucho más general y liberar código. Por
ejemplo, al determinar la mejor manera de usar la CPU, los sistemas operativos tienen rutinas de planificación de CPU
que tienen en cuenta la velocidad de la CPU, el proceso que debe ejecutarse, el número de kernels de procesamiento en
la CPU y otros factores. También puede haber rutinas para asignar impresoras, unidades de almacenamiento USB y otros
dispositivos periféricos.

73. Porque es necesario la contabilidad del uso de los recursos?

74. Para qué se debe brindar protección y seguridad?

Los propietarios de la información almacenada en un sistema multiusuario o un sistema de computación en red controlan
el uso de esa información. Cuando varios procesos separados se ejecutan simultáneamente, no debería ser posible que
un proceso interfiera con los otros o con el funcionamiento del sistema en sí. La protección implica garantizar que el
acceso al sistema, a los recursos, estén controlados. La seguridad del sistema se refiere a que personas externas ingresen
al sistema. Dicha seguridad comienza con la exigencia de que cada usuario se autentique o ella misma al sistema,
generalmente por medio de una contraseña, para obtener acceso a los recursos del sistema. Se extiende a la defensa de
dispositivos de E/S externos, incluidos adaptadores de red, desde intentos de acceso no válidos y controlando todas las
conexiones para la detección de robos. Si un sistema debe ser protegido y seguro, se deben instituir precauciones en todo
el mismo. Una cadena es tan fuerte como su eslabón más débil.

75. Explique cómo trabaja un intérprete de comandos, que significa que los comandos sean internos o externos?

La función principal del intérprete de comandos es obtener y ejecutar el siguiente comando especificado por
el usuario. Muchos de los comandos dados en este nivel manipulan archivos: crear, eliminar, enumerar,
imprimir, copiar, ejecutar, etc.

76. Que conviene, en intérprete de comandos sea parte del kernel o se ejecute como un proceso de usuario separado del
sistema operativo?

Conviene que el Intérprete de Comandos NO sea parte del kernel, porque es una interfaz de usuario y puede
variar según lo que distintos usuarios quieran pedirle, además de que se podrían incorporar nuevos comandos
o solicitudes, según como va cambiando la tecnología. Si se lo agrega al kernel, habría que recompilarlo cada
modificación, y además se suma más código en modo kernel, lo que no es bueno, por la estabilidad y
seguridad.

77. Qué actividades se puede realizar a través de las interfases gráficas de usuario?

Aquí, en lugar de ingresar comandos directamente a través de una interfaz de línea de comandos, los usuarios emplean
un Sistema de menú en una ventana basada en mouse caracterizado por un “escritorio” metafórico. El usuario mueve el
mouse para colocar su puntero en imágenes o iconos, en la pantalla (el escritorio) que representan programas, archivos,
directorios y funciones del sistema. Dependiente de la ubicación del puntero del mouse, hacer clic en un botón del mouse
puede invocar un programa, seleccione un archivo o directorio, conocido como carpeta, o desplegar un menú que
contiene comandos

78. A que se denomina “llamadas al sistema”?

Las llamadas al sistema proporcionan una interfaz para los servicios puestos a disposición por un sistema
operativo.

79. En que lenguaje están escritas las rutinas que dan los servicios que se ofrecen como llamadas al sistema?

Estas llamadas están generalmente disponibles como funciones escritas en C y C ++, aunque ciertas tareas de bajo nivel
(por ejemplo, tareas donde el hardware debe accederse directamente) puede que tenga que escribirse usando
instrucciones de lenguaje ensamblador.

80. Porque si existen las llamadas al sistema, los sistemas operativos ofrecen un interfaz de programación de
aplicaciones (API)?

La API especifica un conjunto de funciones que están disponibles para un programador de aplicaciones, incluidos
los parámetros que se pasan a cada función y los valores de retorno que el programador puede esperar. Tres de
las más comunes API disponibles para los programadores de aplicaciones son:
• API de Windows para sistemas Windows,
• API POSIX para sistemas basados en POSIX (que incluyen prácticamente todos versiones de UNIX, Linux y
macOS)
• API de Java para programas que se ejecutan en la máquina virtual Java.

81. Cuál es la diferencia entre CreateProcess() y NTCreateProcess()?

la Función de Windows CreateProcess () (que, como era de esperar, se usa para crear un nuevo proceso) en realidad
invoca la llamada al sistema NTCreateProcess () en Kernel de Windows.

82. Cuáles son los tres métodos que se usan para pasar parámetros al sistema operativo?

Se utilizan tres métodos generales para pasar parámetros al sistema operativo.


• El enfoque más simple es pasar los parámetros en los registros. Sin embargo, puede haber más
parámetros que registros.
• En estos casos, los parámetros generalmente se almacenan en un bloque o tabla, en la memoria, y la
dirección del bloque se pasa como parámetro en un registro (Figura 2.7). Linux utiliza una combinación de
estos enfoques. Si hay cinco o menos parámetros, Se utilizan registros. Si hay más de cinco parámetros, el
método del bloque se usa.
• El programa también puede colocar o insertar parámetros en una pila y ser sacados de la pila por el
sistema operativo. Algunos sistemas operativos prefieren el método de bloque o pila porque esos
enfoques no limitan el número o longitud de los parámetros que se pasan.

83. Como pueden agruparse en categorías las llamadas al sistema?

Las llamadas al sistema se pueden agrupar aproximadamente en seis categorías principales:

control de procesos,

gestión de archivos,

gestión de dispositivos,

mantenimiento de información,

comunicaciones,

y protección.

84. Nombre algunas de las llamadas al sistema para control de procesos.

llamadas al sistema fork () y exec ().

85. Porque es necesario la llamada sistema para crear procesos?

Todos los procesos (salvo el primero, que es construido por el SO) son creados por las llamadas al sistema que piden
otros procesos. En el caso de los primeros procesos que se crean cuando se inicializa un SO, son necesarios porque dan
servicio a procesos de usuario (aplicaciones), como el demonio de impresión, de paginación, de intercambio, etc. Luego,
los procesos de usuario se van también creando a pedido (cuando el usuario quiere ejecutar programas). Todo esto es
porque es el SO el responsable de TODOS los procesos y debe llevar cuenta de ellos en sus mecanismos (tablas,
algoritmos, etc). De esa manera, al pasar la petición por una llamad al sistema, queda registrada y él puede tomar la
decisión de continuar o no con la solicitud, de acuerdo a los recursos, permisos, etc.

86. Porque se deben abrir los archivos?

Primero necesitamos poder créate () y delete() archivos. Cualquiera de las llamadas al sistema requiere el nombre del
archivo y quizás algunos de los atributos del archivo. Una vez

el archivo está creado, necesitamos open() y usarlo. También podemos read(), write () o reposition () (saltar hasta el final
del archivo, por ejemplo). Finalmente, necesitamos close() el archivo, lo que indica que ya no lo estamos usando.

87. Porque se deben solicitar los dispositivos?


Se pueden pensar los diversos recursos controlados por el sistema operativo como dispositivos.

El sistema con múltiples usuarios puede requerir primero un request() (solicitud) de un dispositivo, para
garantizar su uso exclusivo. Después de que hayamos terminado con el dispositivo, nosotros release()
(liberarlo). Estas funciones son similares a las llamadas al sistema open () y close () para archivos.

88. Para qué se deben crear mecanismos de comunicación entre los procesos?

Hay dos modelos comunes de comunicación entre procesos: el modelo de paso de mensajes y el modelo de
memoria compartida.

En el modelo de paso de mensajes, los procesos intercambian mensajes entre sí para comunicación para
transferirse información

En el modelo de memoria compartida, los procesos usan las llamadas de sistema shared_memory_create () y
shared_memory_attach () para crear y obtener acceso a regiones de memoria que son propiedad de otros
procesos.

89. Qué diferencia hay a simple vista entre un programa que ejecute en un sistema operativo como MS-DOS y otro que
se ejecute en Fre BSD?

90. Qué diferencia hay entre el modelo de memoria compartida y el modelo de paso de mensajes?

El paso de mensajes es útil para intercambiar cantidades más pequeñas de datos, porque no es necesario cuidar los
conflictos. También es más fácil implementar que la memoria compartida para la comunicación entre computadoras. La
memoria compartida permite la máxima velocidad y mayor rendimiento en la comunicación, ya que se puede hacer a
velocidades de transferencia de memoria cuando tiene lugar dentro de una computadora.

91. Porque son necesarios los programas del sistema?

Los programas del sistema proporcionan un entorno conveniente para el desarrollo y ejecución de programas.

92. Cuáles son algunas de las categorías en que se agrupan los programas del sistema?

Los programas del sistema proporcionan un entorno conveniente para el desarrollo y ejecución de programas. Se pueden
dividir en:
a. Manipulación de archivos
b. Información de estado, a veces almacenada en una modificación de archivo
c. Soporte de lenguaje de programación
d. Programa de carga y ejecución
e. Comunicaciones
f. Servicios de ejecución background (demonios)
g. Programas de aplicación

La visión del sistema operativo de la mayoría de los usuarios está definida por los programas del sistema, no por
las llamadas reales del sistema.

93. Porque es necesario que existan las llamadas al sistema si ya se ofrecen programas del sistema?

Los programas del sistema se armaron en base a los requerimientos de los usuarios sin mayor conocimiento de software
(los llamados no-calificados) y que se determinó que esos servicios que ofrecen son los más requeridos.
Las llamadas al sistema, son los servicios simples que ofrecen los SO a través de su interfaz de llamadas al sistema, para
atender necesidades que fueron solicitadas por los programadores de aplicaciones y que son muy específicas de ellas
rutinarias como copiar, editar, crear archivos, etc.

94. Cuáles son los objetivos de diseño de un sistema operativo? De qué depende?

Objetivos de usuario y objetivos del sistema


a. Objetivos del usuario: el sistema operativo debe ser conveniente de usar, fácil de aprender, confiable,
seguro y rápido
b. Objetivos del sistema: el sistema operativo debe ser fácil de diseñar, implementar y mantener, así como
flexible, confiable, libre de errores y eficiente
Dependen del punto de vista que se ponga el diseñador: o es desde afuera (el usuario) o desde adentro (el sistema
mismo)

95. Porque es conveniente dividir en objetivos del usuario y objetivos del sistema?

Porque uno contempla el aspecto, lo que percibe el usuario (el cliente) y otro es el arquitectónico, las funciones internas
y su implementación (la seguridad, la confiabilidad, etc.), objetivos que el usuario final da por hecho.

96. Por qué es difícil diseñar un sistema operativo?

El primer problema en el diseño de un sistema es definir objetivos y especificaciones. Al más alto nivel, el diseño del
sistema se verá afectado por la elección del hardware y el tipo de sistema: computadora de escritorio/portátil
tradicional, móvil, distribuida, o en tiempo real

Más allá de este nivel de diseño más alto, los requisitos pueden ser mucho más difíciles de especificar. Sin embargo, los
requisitos se pueden dividir en dos grupos básicos: objetivos de usuario y objetivos del sistema.

Los usuarios quieren ciertas propiedades obvias en un sistema. El sistema debe ser conveniente de usar, fácil de aprender
y de usar, confiable, seguro y rápido. Por supuesto, estas especificaciones no son particularmente útiles en el diseño del
sistema, ya que no hay un acuerdo general sobre cómo lograrlos.

97. Qué diferencia hay entre las políticas y los mecanismos?

Las políticas determinan lo que se hará y los Mecanismos se usan para determinar cómo hacer algo.

98. Qué características tienen los sistemas operativos del tipo microkernel respecto de las políticas y de los mecanismos?

Los sistemas operativos basados en microkernel (discutidos en la Sección 2.8.3) separan mecanismo y política
a un extremo mediante la implementación de un Conjunto básico de bloques de construcción primitivos. Estos
bloques son casi libres de políticas, lo que permite que Se agreguen mecanismos y políticas más avanzados a
través del kernel creado por los módulos de usuario o programas de usuario propios.

99. Son las ventajas y desventajas de usar un lenguaje de alto nivel para escribir un sistema operativo?

El código se puede escribir más rápido, es más compacto y es más fácil de entender y depurar.
100. Cuáles son algunas de las posibles estructuras que pueden adoptar los sistemas operativos?

La estructura más simple para organizar un sistema operativo es ninguna estructura.

Un sistema tan grande y complejo como un sistema operativo moderno se debe diseñar cuidadosamente para que
funcione correctamente y se modifique fácilmente. Un enfoque común consiste en dividir la tarea en pequeños
componentes o módulos, más bien que tener un solo sistema. Cada uno de estos módulos debe estar bien definido como
porción del sistema, con interfaces y funciones cuidadosamente definidas. Puede usar un enfoque similar cuando
estructura sus programas: en lugar de colocar todo su código en la función main (),separa la lógica en un número de
funciones, articula parámetros claramente y devuelva valores, y luego llama a esas funciones de main ().

101. Qué diferencia hay entre una estructura simple como la de MS-DOS y la estructura de niveles como la de Unix?

En un SO como MS-DOS, no hay protección de espacio de kernel, ya que se ejecutaba en un Intel 8086, que tenía un único
modo de trabajo (no hay instrucciones privilegiadas). En cambio UNIX, desde que nació se ejecutaba en procesadores que
ofrecían modos privilegiados, que le permiten ejecutar su kernel con ese modo y aislarse de las aplicaciones en los
espacios de direcciones, lo que le da protección y jerarquía.

102. Porque se dice que algunos sistemas operativos son monolíticos? Dé ejemplos.

Es una técnica común para diseñar sistemas operativos.

Un ejemplo de estructuración tan limitada es el sistema operativo original de UNIX, que consta de dos partes separables:
el kernel y los programas del sistema.

103. Qué ventajas tiene estructurar un sistema operativo con un enfoque por capas o niveles? Qué desventajas tiene
diseñar de este modo?

Que cada nivel da servicios o resuelve sólo funciones asignadas a ese nivel, por lo que sí o sí hay que pasar por él para
resolverlo. Así se arman jerarquías de niveles de servicios que deben ser respetados. Eso le da mucha estabilidad y
seguridad al sistema. Pero es muy lerdo porque a veces hay que acceder a niveles intermedios que sólo sirven de
puentes. Por otro lado, en general, para pasar por cada nivel, hay que cambiar de modo y de contexto de la CPU, lo que lo
hace más lento aún.

104. Porque algunas estructuras de sistemas se denominan de microkernel? Cuál es la función principal de un
microkernel?

El sistema operativo es la pieza fundamental del software y se ejecuta en modo kernel (también conocido como modo
supervisor). En este modo, el sistema operativo tiene acceso completo a todo el hardware y puede ejecutar cualquier
instrucción que la máquina sea capaz de ejecutar.

La función principal del microkernel es proporcionar comunicación entre el programa cliente y los diversos servicios

105. Como en la comunicación entre un proceso cliente y el servicio?

En los sistemas microkernel, hay procesos clientes y procesos servidores. Los dos tipos se ejecutan en modo usuario, pero
la comunicación entre ellos debe pasar por el kernel, quién sólo dirige o encamina esa comunicación, que lo hace
recibiendo y reenviando mensajes entre los procesos, lo que lo hace lento pero muy seguro.

106. Nombre algunos ejemplos de sistemas operativos del tipo microkernel.

QNX, macOS e iOS

107. Mencione las características de QNX.

QNX es un sistema operativo en tiempo real para sistemas integrados. El microkernel QNX Neutrino proporciona servicios
para pasan mensajes y planifican procesos. También maneja comunicaciones de red de bajo nivel e nterrupciones de
hardware. Todos los demás servicios en QNX son proporcionados por procesos estándar

que se ejecutan fuera del kernel en modo de usuario.

108. Porque se dice que Windows nació casi como un sistema operativo de microkernel pero luego se transformó en un
monolítico?

Cuando se diseñó Windows XP, la arquitectura de Windows se había convertido más monolítico que microkernel.

109. Qué ventajas tiene un diseño modular o usar las técnicas de programación orientadas objetos para estructurar un
sistema operativo?

Aquí, el kernel tiene un conjunto de componentes y pueden enlazarse 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 implementaciones
modernas de UNIX, como Linux, macOS y Solaris, así como Windows.

La idea del diseño es que el kernel proporcione servicios básicos, mientras que otros servicios se implementan
dinámicamente a medida que se ejecuta el kernel.

110. Cómo caracteriza a un sistema operativo Solaris? Como a un Mac OSX?

El sistema operativo macOS de Apple está diseñado para ejecutarse principalmente en computadoras de escritorio y

sistemas de computadoras portátiles

111. Que son las máquinas virtuales?

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.

112. Cómo funcionaba el sistema operativo VM de IBM en 1972?

113. Como se logra implementar una máquina virtual? A que se denomina modo usuario virtual y modo kernel virtual?

114. Cuáles son los beneficios de trabajar con 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.)

115. Cómo trabaja VMware?

116. Explique cómo hace para ejecutar un programa que fue escrito en Java?

117. Porque es necesario la generación de los sistemas operativos?

118. Cómo se produce el arranque del sistema?

Generalmente, cuando se arranca un sistema operativo se crean varios procesos. Algunos de ellos son procesos en primer
plano; es decir, procesos que interactúan con los usuarios (humanos) y realizan trabajo para ellos. Otros son procesos en
segundo plano, que no están asociados con usuarios específicos sino con una función específica

Preguntas del Capítulo 3 del Libro de SO de Silberschatz


73. Por qué nace el concepto de proceso?
Las primeras computadoras permitían ejecutar solo un programa a la vez. Este programa tenía control
completo del sistema y tenía acceso a todos los recursos del sistema. En contraste, los sistemas informáticos
contemporáneos permiten múltiples programas para cargarse en la memoria y ejecutarse simultáneamente.
Esta evolución requiere un control más firme y mejor compartimento de los diversos programas; y estas
necesidades dieron como resultado la noción de un proceso, que es un programa en ejecución. Un proceso es
la unidad de trabajo en un sistema informático moderno.
74. Cuáles fueron las denominaciones que le dieron a las actividades de la CPU en los primero tiempos de la
computación?
75. A qué denominaron trabajo en los sistemas de procesamiento por lotes?
Las primeras computadoras eran sistemas por lotes que ejecutaban trabajos
76. A que le denominaron tarea en un sistema de tiempo compartido?
Ejecutaban programas de usuario o Tareas
77. Explique los términos:
a. monoprogramación
b. multiprogramación
c. sistema monousuario
d. sistema multiusuario
e. procesamiento batch
f. procesamiento interactivo
g. sistema de tiempo compartido
h. procesos concurrentes
78. indique cuáles son las zonas de memoria que el sistema operativo reserva o asigna para cada proceso.
Explique el contenido de cada una.
El diseño de memoria de un proceso generalmente se divide en varias secciones, como se muestra en la Figura
3.1. Estas secciones incluyen:

• Sección de texto: el código ejecutable

• Sección de datos: variables globales

• Sección de almacenamiento dinámico: memoria que se asigna dinámicamente en la ejecución del programa

• Sección de pila: almacenamiento temporal de datos al invocar funciones (como parámetros de función,
direcciones de retorno y variables locales)

79. Explique con todos los detalles posibles el concepto de proceso.


un proceso es un programa en ejecución. El estado de la actividad actual de un proceso está representado
por el valor del contador de programa (PC) y el contenido de los registros del procesador
80. Por que decimos que no es suficiente definir a un proceso como un programa en ejecución?
un programa en sí mismo no es un proceso. Un programa es una entidad pasiva, como un archivo que
contiene una lista de instrucciones almacenadas en el disco (a menudo llamado un archivo ejecutable). Por el
contrario, un proceso es una entidad activa, con un contador de programa que especifica las siguientes
instrucciones para ejecutar y un conjunto de recursos asociados. Un programa se convierte en un proceso
cuando un archivo ejecutable se carga en la memoria. Se usan dos técnicas para cargar archivos ejecutables:
haciendo doble clic en un icono que representa un archivo ejecutable o ingresando el nombre del archivo
ejecutable en la línea de comandos (como en prog.exe o a.out).
Aunque dos procesos pueden estar asociados con el mismo programa, ellos sin embargo, se consideran dos
secuencias de ejecución separadas.
81. Por qué los diseñadores han clasificado a los procesos según el concepto de estado? Qué ventajas trajo
esta clasificación?
82. Defina cada uno de los estados de un proceso.
A medida que se ejecuta un proceso, cambia de estado. El estado de un proceso se define en partes, por la
actividad actual de ese proceso. Un proceso puede estar en uno de los siguientes estados:

• Nuevo. El proceso se está creando.


• Ejecutando. Las instrucciones se están ejecutando.
• Esperando. El proceso está esperando que ocurra algún evento (como una finalización de E/S o recepción de una
señal).
• Listo. El proceso está esperando ser asignado a un procesador.
• Terminado. El proceso ha finalizado la ejecución.

83. Explique por qué motivo los procesos transicionan de estado en estado (mostrando para cada una de las
transiciones)
84. explique que es el bloque de control de procesos (PCB), para qué sirve?
el PCB simplemente sirve como repositorio de todos los datos necesarios para comenzar o reiniciar, un
proceso, junto con algunos datos contables.
85. Muestre cada uno de los campos que posee un PCB y explique cuál es su sentido.

86. A que se denomina hilo de ejecución?


Este único hilo de control permite que el proceso realice solo una tarea a la vez. Por lo tanto, el usuario no
puede escribir caracteres simultáneamente y ejecutar el corrector ortográfico. La mayoría de los sistemas
operativos modernos han ampliado el concepto de proceso para permitir que un proceso tenga múltiples hilos
de ejecución y así realizar más de una tarea a la vez.
87. Explique el cambio de contexto.
88. Aquí se denomina planificación de procesos? Por qué es necesaria?
el planificador de procesos selecciona un proceso disponible (posiblemente de un conjunto de varios procesos
disponibles) para la ejecución del programa en un núcleo. Cada núcleo de CPU puede ejecutar un proceso a la
vez.
Para un sistema con un solo núcleo de CPU, nunca habrá más de un proceso ejecutándose a la vez, mientras
que un sistema multinúcleo puede ejecutar múltiples procesos a la vez.
89. Cuantas colas de planificación conoce? Cuál es la función de cada una?
90. Dibuje un diagrama de colas para la planificación de procesos.
91. Qué significa despachar un proceso?

92. Explique qué sucesos podrían ocurrir después de que a un proceso se le asigne la CPU.
De acuerdo a lo que se ve en la diapositiva 14 del Cap 3 de Procesos, un proceso que está en ejecución (tiene
asignada la CPU), podría abandonar ese estado porque: a) Finaliza (normal o anormalmente) b) Se le
termina el tiempo de asignación de la CPU (si el planificador de CPU, trabaja por asignación de tiempo) y
vuelve al estado Ready c) Solicita una operación de E/S d) pidió la creación de un proceso hijo con fork() o
e) espera por un evento (espera una interrupción que lo saque de la espera. En las 3 últimas opciones el
proceso pasa al estado de bloqueo, donde espera por sucesos.

93. Qué sentido tiene el llamado planificador a largo plazo? Cada qué tiempo se ejecuta?
Respuesta en la imagen de pregunta 17
94. Porque se le denomina planificador de corto plazo al scheduler?
Respuesta en la imagen de pregunta 17

95. Que significa el término "grado de multiprogramación"? En que afecta al sistema?


El número de procesos actualmente en memoria se conoce como el grado de multiprogramación.
Si hay más procesos que núcleos, el exceso de procesos tendrá esperar hasta que un núcleo esté libre y pueda
planificarse
96. Cuál es el sentido de un planificador a mediano plazo?
97. A que se denomina intercambio?
como intercambio, porque un proceso puede ser "intercambiado" de la memoria al disco, donde se guarda su
estado actual y luego se "intercambia" desde el disco a la memoria, donde se restaura su estado. El
intercambio es sólo necesario cuando la memoria se ha comprometido en exceso y debe liberarse
98. Cuál es el criterio para categorizar a los procesos como:
a. limitado por entrada salida: el proceso es uno que pasa más tiempo haciendo E/S de lo que gasta
haciendo cálculos.
b. limitado por CPU: por el contrario, genera solicitudes de E/S con poca frecuencia, usa más tiempo
haciendo cálculos.

99. Por qué es conveniente mezclar procesos de ambas categorías?


Porque los procesos limitados por E/S, pasan poco tiempo (ráfagas cortas) en CPU, así convendría alternar
esos tipos de proceso, para que usen plenamente los recursos y puedan paralelizar en CPU y en E/S
simultáneamente. Es decir, convendría darles prioridad a los limitados por E/S frente a los de CPU (si ambos
están en cola Ready, que se despachen primero los de E/S)
100. Aquí se denomina overhead?
El tiempo de Cambio de contexto es pura sobrecarga (overhead), porque el sistema no hace trabajo útil
mientras hace el intercambio.
101. Cuáles son los pasos de la creación de un proceso?
En el modelo de UNIX, con la llamada al sistema fork(), algunos pasos del SO son:

• Aprueba la llamada fork, para crear un hijo (al verificar los permisos y que hay lugar en la tabla de
procesos: necesita una entrada nueva, para crear un PCB)
• Llena el PCB nuevo (del hijo) con: un nuevo número PID, y hereda todos los entornos (valores de los
registros) de la CPU que estaba usando el padre
• O sea hace una copia exacta del código y datos del padre (en realidad, todavía no genera un nuevo
espacio, hasta que no se modifiquen datos en el hijo, así que el hijo comparte los links del padre al
mismo espacio del padre)
• También el hijo comparte los recursos (archivos abiertos y dispositivos abiertos) del padre
• Luego asigna un número al padre (el PID asignado al hijo) y Cero al hijo
• Luego el planificador decide quién sigue en ejecución (el padre o el hijo, ya que los dos tienen la misma
prioridad)

102. A que se denomina árbol de procesos? Qué función cumple el proceso init?
los procesos nuevos se denominan hijos de ese proceso. Cada uno de estos nuevos procesos a su vez puede
crear otros procesos, formando así un árbol de procesos.
El proceso init como el nuevo padre de procesos huérfanos.

103. Cuáles son las posibilidades de sucesos para un proceso padre, cuando acaba de crear un hijo, en
términos de ejecución?
a) El padre continúa ejecutándose simultáneamente con sus hijos.
b) El padre espera hasta que algunos o todos sus hijos hayan terminado.
c) También hay dos posibilidades de espacio de direcciones para el nuevo proceso:
d) El proceso hijo es un duplicado del proceso padre (tiene el mismo programa y datos como padre).
e) El proceso hijo tiene un nuevo programa cargado.
104. Cuáles son las posibilidades de sucesos para un proceso padre, cuando acaba de crear un hijo, en
función del espacio de direcciones del nuevo proceso?
El nuevo proceso consiste en una copia del espacio de direcciones del proceso original.
Este mecanismo permite que el proceso padre se comunique fácilmente con su proceso hijo. Ambos procesos
(el padre y el hijo) continúan la ejecución en la instrucción después de fork (), con una diferencia: el código de
retorno para fork () es cero para el nuevo proceso (hijo), mientras que el número de identificador del proceso
del hijo (distinto de cero) es devuelto al padre.

105. Explique con el máximo detalle posible que pasos se realizan cuando se ejecuta fork.
106. Explique los sucesos que ocurren cuando se ejecuta el código de la figura 3.8.
107. Muestre la diferencia entre fork y CreateProcess.
Mientras que fork () tiene el proceso hijo heredando el espacio de direcciones de su padre, CreateProcess ()
requiere cargar un programa específico en el espacio de direcciones del proceso hijo en la creación del
proceso. Además, mientras que fork () no pasa parámetros, CreateProcess () espera no menos de 10
parámetros

108. Explique los pasos que suceden cuando termina un proceso.


Un proceso finaliza cuando termina de ejecutar su última instrucción y pregunta al sistema operativo para
eliminarlo utilizando la llamada al sistema exit ().
109. Cuál es la llamada al sistema para terminar un proceso?
Exit()
110. Cuál es la llamada al sistema para esperar la terminación de un hijo? Cómo trabaja?
TerminateProcess()
111. Muestre cuáles son las razones por la cual un proceso padre puede terminar la ejecución de uno de
sus hijos.
Un padre puede terminar la ejecución de uno de sus hijos por una variedad de razones como estas:
• El hijo ha excedido el uso de algunos de los recursos que le han asignado. (Para determinar si esto ha
ocurrido, el padre debe tener un mecanismo para inspeccionar el estado de sus hijos).
• La tarea asignada al hijo ya no es necesaria.
• El padre está terminando y el sistema operativo no permite que un hijo continúe si su padre termina.

112. A que se denomina terminación en cascada?


Algunos sistemas no permiten que exista un hijo si su padre ha terminado. En tales sistemas, si un proceso
termina (ya sea normal o anormalmente), entonces todos sus hijos también deben ser terminados. Este
fenómeno, denominado terminación en cascada, normalmente es iniciada por el sistema operativo.

113. Como se caracteriza a los procesos que se ejecutan concurrentemente? Que significa que un
proceso sea independiente?
Los procesos dentro de un sistema pueden ser independientes o cooperantes.
Un proceso independiente no puede afectar o verse afectado por la ejecución de otro proceso.
Los procesos cooperativos pueden afectar o verse afectado por otros procesos, incluido el intercambio de
datos
114. Cómo definiría un proceso cooperativo?
cualquier proceso que comparta datos con otros procesos es un proceso cooperativo

115. Cuáles son las ventajas que brinda la ejecución concurrente de procesos cooperativos?
• Comparten información
• Aceleración de la computación
• Modularidad
• conveniencia
116. Porque es necesaria la comunicación entre procesos?
La cooperación de procesos requiere un mecanismo de comunicación entre procesos (IPC) que les permitirá
intercambiar datos, es decir, enviar datos y recibir datos el uno del otro.
117. Explique el modelo de memoria compartida de comunicación interproceso.
En el modelo de memoria compartida, se establece una región de memoria compartida para los procesos
cooperantes. Los procesos pueden intercambiar información leyendo y escribiendo datos en la región
compartida.
118. Explique cómo tiene lugar la comunicación interproceso cuando el modelo es de paso de mensajes.
En el modelo de paso de mensajes, la comunicación se realiza mediante intercambio de mensajes entre
procesos cooperativos.
119. Ventajas y desventajas del modelo de memoria compartida.
El paso de mensajes es útil para intercambiar pequeñas cantidades de datos, porque no es necesario evitar
conflictos. El Paso de mensajes también es más fácil de implementar en un sistema distribuido que la memoria
compartida.
120. Ventajas y desventajas del modelo de paso de mensajes.
La memoria compartida puede ser más rápida que la transmisión de mensajes, dado que los sistemas de paso
de mensajes generalmente se implementan utilizando llamadas al sistema y por lo tanto, requieren una mayor
intervención del kernel. En los sistemas de memoria compartida, las llamadas al sistema solo son necesarias
para establecer regiones de memoria compartida. Una vez que se establece la memoria compartida, se tratan
todos los accesos como accesos a memoria normal (en espacio de usuario), y no se requiere asistencia del
kernel.

121. Explique el problema del productor-consumidor.


consideremos al problema del productor/consumidor, que es un paradigma común para los procesos
cooperativos.
Un proceso productor produce información que es consumida por un proceso consumidor. Por ejemplo, un
compilador puede producir código ensamblador que es consumido por un programa ensamblador. El
ensamblador, a su vez, puede producir módulos de objetos que son consumidos por el cargador. El problema
productor-consumidor también proporciona un modelo útil para el paradigma cliente-servidor. Generalmente
pensamos un servidor como productor y un cliente como consumidor.

122. Explique el código de la figura 3.12 y 3.13


123. Porque se dice que el método de paso de mensajes proporciona mecanismos de comunicación y
sincronización de procesos.
124. Porque se dice que el sistema de paso de mensajes es útil en un entorno distribuido?
El paso de mensajes proporciona un mecanismo para permitir que los procesos se comuniquen y sincronicen
sus acciones sin compartir el mismo espacio de direcciones. Eso es particularmente útil en un entorno
distribuido, donde puede darse la comunicación entre procesos que residen en diferentes computadoras
conectadas por una red.
125. Aquí se denomina un enlace de comunicación entre procesos?
Un enlace de comunicación en este esquema tiene las siguientes propiedades:
• Se establece automáticamente un enlace entre cada par de procesos que se quieren comunicar. Los procesos
sólo necesitan conocer la identificación mutuamente para comunicarse.
• Un enlace está asociado con exactamente dos procesos.
• Entre cada par de procesos, existe exactamente un enlace.
126. Cuáles son los métodos para implementar lógicamente un enlace y las operaciones de envío y
recepción?
Este esquema exhibe simetría en el direccionamiento; es decir, tanto el proceso emisor como el proceso
receptor debe nombrar al otro para comunicarse. Una variante de este esquema emplea asimetría en el
direccionamiento. Aquí, sólo los emisores nombran al receptor; No se requiere que el receptor nombre al
emisor. En este esquema,
Las primitivas send () y receive () se definen de la siguiente manera:

• send(P, message)— Se envía un message al proceso P.


• receive(id, message)-- Se recibe un mensaje de cualquier proceso. La variable id se establece en el nombre del
proceso con el que la comunicación tiene lugar.

127. Que significa que una comunicación sea directa o indirecta?


Bajo comunicación directa, cada proceso que quiera comunicarse debe nombrar explícitamente al destinatario
o al remitente de la comunicación. En este esquema, las primitivas send () y receive ()
Con comunicación indirecta, los mensajes se envían y reciben de buzones de correo o puertos.
128. A que se denomina buzón de correo o puerto?
Un buzón se puede ver de forma abstracta como un objeto en el que los procesos pueden colocar mensajes y
desde donde pueden extraer y eliminar mensajes. Cada buzón tiene una identificación única.
129. Qué diferencia hay que un buzón de correo sea de un proceso o del sistema operativo?
130. Porque es necesaria la sincronización de procesos?
131. Cuáles son las distintas variantes de implementación de la primitivas send y receive, respecto de la
sincronización o bloqueo?
• Send Bloqueante. El proceso que envía se bloquea hasta que el mensaje es recibido por el proceso
receptor o por el buzón.
• Send sin bloqueo. El proceso envía el mensaje y continúa la operación.
• Receive Bloqueante. El receptor se bloquea hasta que haya un mensaje disponible.
• Receive sin bloqueo. El receptor recupera un mensaje válido o un nulo.

132. Cómo afecta el tamaño del almacenamiento en buffer a los procesos que hacen las llamadas send
y receive?
133. Como se da la comunicación de procesos en memoria compartida en POSIX?
134. Como se da la comunicación de procesos en un sistema operativo como Mach?
135. Qué ventajas tiene la llamada a procedimiento remoto (RPC)?
136. Cómo trabajan los buzones en Mach?
Los mensajes son enviados, y recibidos de buzones, que se llaman puertos en Mach. Los puertos son de
tamaño finito y unidireccional; para comunicación bidireccional, se envía un mensaje a un puerto, y se envía
una respuesta a un puerto de respuesta separado. Cada puerto puede tener múltiples remitentes (emisores),
pero solo un receptor. Mach usa puertos para representar recursos tales como tareas, hilos, memoria y
procesadores, mientras que el paso de mensajes proporciona un enfoque orientado a objetos para interactuar
con estos recursos del sistema y servicios.
137. Cómo se comunican los procesos en un sistema operativo como Windows ?
138. A que le denomina llamada a procedimiento local (LPC) Windows?
El recurso de paso de mensajes en Windows se llama llamada a procedimiento local avanzado (ALPC). Se
utiliza para la comunicación entre dos procesos de la misma máquina.
139. Son los dos tipos de puertos que usa Windows?
Windows utiliza dos tipos de puertos: puertos de conexión y puertos de comunicación.

140. Cómo funciona la comunicación en Windows ? Cuál es la limitación del tamaño del mensaje?
La comunicación funciona de la siguiente manera:
➢ El cliente abre un identificador (handle) para el objeto de puerto de conexión del subsistema.
➢ El cliente envía una solicitud de conexión
➢ El servidor crea dos puertos de comunicación privador y devuelve el identificador a uno de ellos para
el cliente.
➢ El cliente y el servidor usan el identificador de puerto correspondiente para enviar mensajes o
devoluciones de llamadas y para escuchar las respuestas.
141. A que se denomina descriptor en esta comunicación?
142. A que se denomina comunicación en sistemas cliente-servidor?
describimos cómo se pueden comunicar los procesos mediante el uso de memoria compartida y paso de
mensajes. Estas técnicas últimas se pueden utilizar para la comunicación en sistemas cliente-servidor
143. Que es un socket? Cómo funciona la comunicación con socket?
Un socket se define como un punto final para la comunicación.
Los sockets permiten que dos procesos en diferentes máquinas se comuniquen a través de una red.
144. Cómo funciona una llamada a procedimiento remoto (RPC)?

Preguntas del capítulo 4

37. defina la diferencia entre el concepto de proceso moderno y de hilo.


38. Redefina el concepto de proceso tradicional o proceso pesado o mono hilo.
39. Explique cómo surge el concepto de hilo. De ejemplos de aplicaciones que se benefician.
40. Explique el gráfico de la figura 4.1 de la página 114. Muestre que significa cada uno de los términos del
gráfico.
41. Explique cómo trabaja una aplicación servidor web con múltiples hilos.
un servidor web acepta solicitudes de clientes para páginas web, imágenes, sonido, etc. Un servidor web
puede estar ocupado al tener varios (quizás miles de) clientes que acceden simultáneamente. Si el servidor
web se ejecuta como un proceso tradicional de un solo hilo, sería capaz de atender solo a un cliente a la vez, y
un cliente puede tener que esperar mucho tiempo para que su solicitud sea atendida.

42. Explique la ventaja de capacidad de respuesta de la programación multihilos.


Capacidad de respuesta. Los múltiples hilos de una aplicación interactiva pueden permitir a un programa
continuar ejecutándose incluso si parte de él está bloqueado o está ejecutando una operación prolongada, lo
que aumenta la capacidad de respuesta al usuario. Esta cualidad es especialmente útil en el diseño de
interfaces de usuario. Por ejemplo, considere lo que sucede cuando un usuario hace clic en un botón que da
como resultado observar el rendimiento de una operación que consume mucho tiempo. Una aplicación de un
solo hilo no respondería al usuario hasta que la operación hubiera sido terminado. Por el contrario, si la
operación que lleva mucho tiempo se realiza en un hilo separado y asíncrono, la aplicación sigue
respondiendo al usuario.

43. Ídem para comparación de recursos.


Compartir recursos. Los procesos pueden compartir recursos solo a través de técnicas como la memoria
compartida y el paso de mensajes. Tales técnicas deben ser organizadas explícitamente por el programador.
Sin embargo, los hilos comparten la memoria y los recursos del proceso al que pertenecen por defecto. El
beneficio de compartir código y datos es que permite a una aplicación tener varios hilos diferentes de
actividad dentro del mismo espacio de direcciones.

44. Ídem para economía.


Economía. Como la creación de procesos consume mucha memoria y recursos, ya que los hilos comparten los
recursos del proceso al que pertenecen, es más económico crear y cambiar hilos (cambio de contexto de
hilos).
Medir empíricamente la diferencia en gastos generales puede ser difícil, pero en la creación general de hilos
consume menos tiempo y memoria que la creación de procesos. Además, el cambio de contexto suele ser más
rápido entre hilos que entre procesos.

45. Ídem para utilización sobre arquitecturas multiprocesador


Escalabilidad. Los beneficios del multihilo pueden ser aún mayores en una arquitectura multiprocesador,
donde los hilos pueden ejecutarse en paralelo en diferentes núcleos de procesamiento. Un proceso de hilo
único solo puede ejecutarse en un procesador, independientemente de cuántos estén disponibles. Exploramos
este tema más adelante en la siguiente sección.

46. Explique que significa que los hilos son soportados en el nivel de usuario y su diferencia con aquellos hilos
soportados por el kernel.
Los soportados en el nivel de usuario: son los que el kernel no sabe de su existencia y deben ser administrado
en nivel de usuario. En librerías o bibliotecas que se ejecutan en modo usuario

Los soportados en el nivel de kernel: éste ya conoce su existencia y los administra (planifica, despacha,
sincroniza, etc.)
47. Explique el modelo muchos a uno. Qué ventajas y desventajas ofrece.
asigna muchos hilos de nivel de usuario a un hilo de kernel. La administración de hilos es realizada por la
biblioteca de hilos en el espacio del usuario, entonces es eficiente
48. Explique el modelo uno a uno. Qué ventajas y desventajas ofrece.
asigna cada hilo de usuario a un hilo del kernel. Eso proporciona más concurrencia que el modelo de muchos a
uno al permitir que otro hilo se ejecute cuando un hilo hace una llamada al sistema bloqueante. También
permite múltiples hilos para ejecutarse en paralelo en multiprocesadores. El único inconveniente de este
modelo es que crear un hilo de usuario requiere crear el correspondiente hilo del kernel, y una gran cantidad
de hilos del kernel pueden afectar el rendimiento de un sistema.
49. Explique el modelo muchos a muchos. Qué ventajas y desventajas ofrece.
multiplexa muchos hilos de nivel de usuario para un número menor o igual de hilos de kernel. El número de
hilos del kernel puede ser específico para una aplicación particular o una máquina particular (una aplicación se
puede asignar más hilos de kernel en un sistema con ocho núcleos de procesamiento de que un sistema con
cuatro núcleos).

50. A que se denomina Pthreads? Qué características posee.


Puede proporcionarse a nivel de usuario o nivel del kernel.
Pthreads se refiere al estándar POSIX (IEEE 1003.1c) que define una API para la Creación y sincronización de
hilos.
51. Cómo trabajan los hilos en win 32?
La biblioteca win 32 establece una relación 1 a 1 entre los hilos en nivel de usuario y en nivel del kernel, por lo
que todos los hilos originales del proceso son reconocidos y administrados por el kernel
52. Cuál es la característica de los hilos en Java?
Los hilos son el modelo fundamental de ejecución del programa en un programa Java y el lenguaje Java y
su API proporcionan un amplio conjunto de características para la creación y gestión de hilos. Todos los
programas Java comprenden al menos un solo hilo de control, incluso un programa Java simple que consta
de solo un método main() se ejecuta como un hilo único en la JVM. Los hilos de Java están disponibles en
cualquier sistema que proporciona una JVM que incluye Windows, Linux y macOS. La API thread de java
también está disponible para aplicaciones de Android.

53. Qué cuestiones surgen con las llamadas al sistema fork y exec, en los programas multihilos?
54. Cuáles son las distintas maneras de terminar un hilo. Qué características tienen cada una?
1. Cancelación asincrónica. Un hilo termina inmediatamente el objetivo hilo.
2. Cancelación diferida. El hilo objetivo verifica periódicamente si debería terminar, permitiéndole la
oportunidad de terminar de una manera ordenada.

55. Que son las señales?.


Los procesos también se pueden comunicar de otra forma: interrupciones de software. Un proceso
puede enviar lo que se conoce como una señal a otro proceso. Los procesos pueden indicar al
sistema lo que quieren que ocurra cuando llegue una señal. Las opciones son ignorarla, atraparla o
dejar que la señal elimine el proceso (la opción predeterminada para la mayoría de las señales). Si
un proceso elige atrapar las señales que se le envían, debe especificar un procedimiento para el
manejo de señales. Cuando llega una señal, el control cambia de manera abrupta al manejador.
Cuando el manejador termina y regresa, el control regresa al lugar de donde provino, lo cual es
análogo a las interrupciones de E/S de hardware.

56. Qué diferencia hay en recibir una señal en forma síncrona o asíncrona?.
Las señales síncronas se entregan al mismo proceso que realizó la operación que causó la señal (esa es la razón
por la que se consideran sincrónico).
Cuando una señal es generada por un evento externo a un proceso en ejecución, El proceso recibe la señal de
forma asíncrona.
57. Cuáles son las distintas variantes en el tratamiento de las señales por parte de los procesos?
Las señales pueden ser sincrónicas (deben ser atendidas ya sea porque las generó el mismo proceso y no
pueden ser ignoradas). Pueden ser asincrónicas, cuando se generan en un evento externo al proceso (usuario,
proceso padre o kernel), en este caso pueden ser ignoradas, postergadas u obligadas a ejecutar. También
pueden clasificarse si el programa para atender esa señal, el código ya está presente en el kernel o será
definido por el usuario.
58. Cuál es el equivalente en Windows de las señales en Unix?.
Texto extraído del libro Sistemas Operativos Modernos de Tanenbaum 3era Edic, Cap 10, Pág 745 (dado como bibliografía
de consulta)
Señales en UNIX. En este caso usan las señales como alarmas o anunciadores de eventos
Un proceso sólo puede tener una alarma pendiente en cualquier momento. Si se hace una llamada a alarm con un
parámetro de 10 segundos, y 3 segundos después se hace otra llamada a alarm con un parámetro de 30 segundos, sólo se
generará una señal 20 segundos después de la segunda llamada. La segunda llamada a alarm cancela a la primera.
Windows, que apareció más de 20 años después que UNIX, usa Objetos para casi toda su arquitectura y dispone de
Objetos tipo Eventos para dar un servicio similar y mejorado que las señales en UNIX. La principal ventaja es que se
pueden almacenar y encolar varios eventos que el proceso (a través de la ejecución de sus hilos) puede o debe ejecutar
su código. UNIX en su versión original sólo permitía alojar un solo número de señal (el número funciona como un
puntero, al igual que las interrupciones), por lo que si al proceso le enviaban otra señal, se borraba la anterior. Cap 11,
Pág 842:
El administrador de objetos administra la mayoría de los objetos interesantes en modo de kernel que se utilizan en el
nivel ejecutivo. Éstos incluyen los procesos, hilos, archivos, semáforos, dispositivos y drivers de E/S, temporizadores y
muchos otros.

59. Qué ventajas tiene contar con un conjunto compartido de hilos?.


La principal ventaja es que el kernel, ya dispone de un grupo creado de hilos “voluntarios”, que están
suspendidos, esperando que haya solicitudes para activarse. Así que se minimiza el tiempo de creación de los
hilos.

60. Cuáles son los datos específicos de un hilo?.


De la Diapositiva 4:
Un hilo es una unidad básica de utilización de la CPU; comprende una:
• ID de hilo
• Prioridad
• Tiempos propios
• un contador de programa (PC),
• un conjunto de registros y
• una pila.

61. Aquí se denomina proceso ligero o LWP?

Del Libro de Silberschatz, Páginas 34 y 35 de la traducción que les envié:


Muchos sistemas que implementan el modelo muchos a muchos o el de dos niveles, colocan una
estructura de datos intermedia entre los hilos de usuario y de kernel. Esta estructura de datos,
típicamente conocida como un proceso liviano, o LWP: se muestra en la Figura 4.20. Para la biblioteca de
hilos de usuario, el LWP parece ser un procesador virtual en el que la aplicación puede planificar un hilo de
usuario para ejecutar. Cada LWP está conectado a un hilo del kernel, y son los hilos del kernel los que son
planificados por el sistema operativo para ejecutarse en procesadores físicos. Si un hilo del kernel se
bloquea (como cuando espera que se complete una operación de E/S), los bloques LWP también se
bloquean. Arriba de la cadena, el hilo de nivel de usuario conectado al LWP también se bloquea.

62. Qué ventajas ofrece usar un esquema de procesador virtual (LWP)?


Una aplicación que es limitada por I/O sin embargo, puede requerir múltiples LWP para ejecutarse.
Típicamente, un LWP es requerido para cada llamada de sistema de bloqueo concurrente. Supongamos, por
ejemplo, que tiene Cinco solicitudes diferentes de lectura de archivos simultáneamente, Se necesitan cinco
LWP, porque todos podrían estar esperando la finalización de E/S en el kernel. Si un proceso tiene solo cuatro
LWP, entonces la quinta solicitud debe esperar a que vuelva uno de los LWP del kernel.

O sea: el kernel asigna estos procesadores virtuales o procesos livianos, que en realidad son estructuras de
control que, al ponerlas en el medio de los hilos del kernel y los de usuario, podrían bloquearse sin bloquear
todo el proceso y no se crean tantos hilos del kernel, ya que ese que se correspondía con el proceso liviano
bloqueado, ahora puede asignarse a otro proceso liviano, donde se puede ejecutar otro hilo de usuario.

63. Que significa la activación del planificador?


Un esquema para la comunicación entre la biblioteca de hilos de usuario y el kernel se conoce como activación
del planificador. Funciona de la siguiente manera: el kernel proporciona una aplicación con un conjunto de
procesadores virtuales (LWP) y la aplicación puede planificar hilos de usuario en un procesador virtual
disponible. Además, el kernel debe informar a la aplicación sobre ciertos eventos. Este procedimiento es
conocido como una llamada ascendente. La biblioteca de hilos maneja las llamadas ascendentes con un
controlador de llamada ascendente y los controladores de llamada ascendente deben ejecutarse en un
procesador virtual.

64. Porque se necesitan las suprallamadas?


Un evento que desencadena una llamada ascendente ocurre cuando un hilo de aplicación está a punto de
bloquearse. En este escenario, el kernel realiza una llamada ascendente a la aplicación informándole que
un hilo se está a punto de bloquear e identificando el hilo específico.
El kernel luego asigna un nuevo procesador virtual a la aplicación. La aplicación ejecuta un controlador de
llamada ascendente en este nuevo procesador virtual, que guarda el estado del hilo por bloquearse y
abandona el procesador virtual en el que el hilo (por bloquearse) se está ejecutando. El controlador de
llamada ascendente luego planifica otro hilo que es elegible para ejecutarse en el nuevo procesador
virtual
Se llaman suprallamadas, porque de “abajo hacia arriba”, del kernel al usuario
65. Que caracteriza a los hilos en Windows? A que se denomina fibra en este sistema operativo?.

Texto extraído del libro Sistemas Operativos Modernos de Tanenbaum 3era Edic, Cap 11, Pág 864 (dado como
bibliografía de consulta)

La principal ventaja de las fibras es que la sobrecarga de cambiar entre una fibra y otra es bastante menor que la
sobrecarga de cambiar entre un hilo y otro. Para un cambio de hilo se requiere entrar y salir del kernel. En un cambio
de fibra se guardan y restauran unos cuantos registros sin cambiar los modos.

Windows, tiene una estructura compleja, porque trata de optimizar todo lo que puede con toda la “herencia que no
puede abandonar, por su OBJETIVO: Compatibilidad con sistemas anteriores”. Así, todavía conserva el concepto de
Trabajo o Job antiguo, ahora le llama tarea: sobre ésta carga todos los recursos que los procesos del mismo usuario
van usando y lo limita, para que no se “despilfarro”. Luego como novedoso tiene concepto de “fibra”, para decir que
es más liviano que un hilo, ya que se administra en espacio de usuario (éste no depende directo de un único hilo)

66. Qué componentes generales posee un hilo en Windows?.


• Una ID de hilo que identifica de forma exclusiva el hilo
• Un conjunto de registros que representa el estado del procesador.
• Un contador de Programa

67. Cuáles son las principales estructuras de datos de un hilo?


ETHREAD: bloque de hilo en el ejecutivo
KTHREAD: bloque de hilo en el kernel
TEB: bloque de hilo en el entorno

68. Qué datos posee ETHREAD?


• ETHREAD: bloque de hilo en el ejecutivo. Incluye puntero para procesar a que hilo pertenece y a KTHREAD,
en el espacio del kernel.
69. Que datos posee KTHREAD?
• KTHREAD: bloque de hilo en el kernel. Información de planificación y sincronización, pila en modo kernel,
puntero TEB, en el espacio del kernel.
70. Qué datos posee TEB?
• TEB: bloque de hilo en el entorno. ID de hilo, pila en modo de usuario, almacenamiento local de hilos, en el
espacio de usuario.
71. Qué ventajas tiene dividir la tabla de hilos en tres estructuras?
Las tablas en el kernel pueden ser muy grandes, contener mucha información. Entonces Windows (como ya lo
había hecho UNIX con la información de los procesos) decidió dividir la tabla de hilos, por una cuestión de
espacio y tiempo de acceso para los programas que la necesiten acceder. Así la parte que será accedida por el
Ejecutivo (que trata con estructuras como procesos e hilos), por el Kernel (sincronización y asignación de
recursos) y los datos propios del hilo (privados y no necesarios para el SO) están en estructuras separadas pero
vinculadas por punteros.
72. Que caracteriza a los hilos en Linux? Cuáles son las variantes de clone(). Cuáles la variante de clone()
parecida al fork?

También podría gustarte