Preguntas del libro Pag.79

1. ¿Qué es la multiprogramación? 

La multiprogramación es una técnica en la que se ejecutan simultáneamente varios programas en una computadora sin esperar a que cada uno termine por completo antes de comenzar el siguiente. En lugar de ejecutar un solo programa a la vez, la multiprogramación permite que varios programas compartan el tiempo de CPU.

La idea detrás de la multiprogramación es mantener ocupada la unidad central de procesamiento (CPU) para maximizar su eficiencia y mejorar la utilización de los recursos. Mientras un programa está esperando que se complete una operación de entrada/salida, por ejemplo, la CPU puede cambiar a otro programa listo para ejecutarse.

Algunos de los beneficios de la multiprogramación incluyen:

  1. Mejora de la utilización de la CPU: Evita que la CPU esté inactiva mientras espera que un solo programa termine su ejecución.

  2. Mejora de la respuesta del sistema: Puede haber varios programas en ejecución al mismo tiempo, lo que puede conducir a una respuesta más rápida del sistema.

  3. Mayor productividad: Permite que múltiples usuarios compartan la computadora simultáneamente.


2. ¿Qué es spooling? ¿Cree usted que las computadoras personales avanzadas tendrán spooling como característica estándar en el futuro?

 Spooling (Simultaneous Peripheral Operations On-Line): El spooling es una técnica utilizada en sistemas informáticos para mejorar la eficiencia en el manejo de dispositivos de entrada/salida. En lugar de realizar operaciones de entrada/salida directamente entre el dispositivo y el programa en ejecución, el spooling utiliza una cola de trabajos (jobs) para almacenar temporalmente datos en un dispositivo, permitiendo que el programa continúe su ejecución sin esperar a que se complete la operación de entrada/salida.

Un ejemplo común de spooling es el spool de impresión. En lugar de enviar directamente los datos de impresión desde un programa a la impresora, los datos se envían a un archivo temporal (spool file) mientras el programa continúa su ejecución. Un proceso separado se encarga de enviar los datos desde el archivo temporal a la impresora, permitiendo que el programa principal siga ejecutándose sin tener que esperar a que la impresión se complete.

Respecto a las computadoras personales avanzadas: En la actualidad, muchas funciones que antes requerían spooling ya son manejadas de manera eficiente por los sistemas operativos modernos y las aplicaciones. Por ejemplo, las impresoras en entornos de PC utilizan spooling sin que el usuario tenga que configurarlo directamente, gracias a las capacidades de los sistemas operativos y los controladores de impresora.

En el futuro, es probable que las computadoras personales avanzadas continúen utilizando técnicas similares al spooling para gestionar eficientemente las operaciones de entrada/salida. Sin embargo, la complejidad de estas operaciones podría ser gestionada en gran medida por el sistema operativo y las aplicaciones, sin necesidad de que los usuarios configuren directamente funciones de spooling.


3. En las primeras computadoras, cada byte de datos leídos o escritos se manejaba mediante la CPU (es decir, no había DMA). ¿Qué implicaciones tiene esto para la multiprogramación? 

La ausencia de acceso directo a memoria (DMA, por sus siglas en inglés, Direct Memory Access) en las primeras computadoras tenía implicaciones significativas para la multiprogramación y la eficiencia del sistema en general. En ausencia de DMA, la CPU era responsable de manejar directamente cada operación de entrada/salida, lo que podría afectar negativamente la capacidad del sistema para realizar múltiples tareas eficientemente. Aquí hay algunas implicaciones clave:

  1. Uso intensivo de la CPU: Sin DMA, la CPU tenía que dedicar una cantidad considerable de tiempo a la gestión de cada operación de entrada/salida. Esto podía llevar a una utilización menos eficiente de la CPU, ya que una parte significativa de su tiempo se dedicaba a operaciones de E/S en lugar de la ejecución de programas de aplicación.

  2. Retrasos en la multiprogramación: La multiprogramación se basa en la idea de que la CPU puede cambiar rápidamente entre varios programas, manteniendo ocupada la unidad central de procesamiento. Sin DMA, la CPU podría quedar inactiva durante períodos prolongados mientras espera la finalización de operaciones de entrada/salida, lo que afecta la eficiencia global del sistema multiprogramado.

  3. Mayor latencia en E/S: La gestión manual de operaciones de E/S por parte de la CPU puede dar lugar a mayores tiempos de latencia en las transferencias de datos entre la memoria y los dispositivos periféricos. Esto podría afectar negativamente el rendimiento general del sistema y la capacidad de respuesta.

  4. Menor concurrencia: La falta de DMA podría limitar la capacidad del sistema para admitir múltiples tareas concurrentemente. Los programas tendrían que esperar activamente durante las operaciones de E/S, lo que resultaría en una menor concurrencia y una gestión menos eficiente de los recursos del sistema.


4. La idea de una familia de computadoras fue introducida en la década de 1960 con las mainframes IBM System/360. ¿Está muerta ahora esta idea o sigue en pie?

La idea de una familia de computadoras, como la introducida por IBM con la serie IBM System/360 en la década de 1960, sigue vigente y ha evolucionado a lo largo del tiempo. La arquitectura System/360 de IBM fue revolucionaria porque ofrecía una línea completa de computadoras compatibles entre sí, lo que permitía a las organizaciones actualizar o expandir sus sistemas sin tener que cambiar radicalmente su infraestructura.

En la actualidad, la idea de una familia de computadoras se ha expandido y adaptado a diferentes formas de tecnología. Aquí hay algunas formas en las que esta idea continúa:

  1. Arquitecturas de CPU compatibles: Muchos fabricantes de microprocesadores, como Intel y AMD, mantienen arquitecturas de CPU compatibles dentro de sus familias de productos. Esto permite a los desarrolladores y usuarios utilizar software y hardware diseñados para una generación de procesadores en modelos más recientes sin necesidad de una reescritura completa.

  2. Sistemas embebidos y dispositivos IoT: En el ámbito de sistemas embebidos y dispositivos de Internet de las cosas (IoT), la idea de familias de procesadores y sistemas es común. Se diseñan familias de microcontroladores y procesadores para abordar diversas aplicaciones dentro de un conjunto coherente de características y compatibilidad.

  3. Arquitecturas de GPU: En el campo de las unidades de procesamiento gráfico (GPU), también se encuentra la idea de familias de arquitecturas. Empresas como NVIDIA y AMD desarrollan familias de GPU con arquitecturas comunes para abordar diferentes segmentos del mercado, desde consumidores hasta estaciones de trabajo y centros de datos.

  4. Computadoras personales y servidores: Aunque las PC y los servidores pueden tener una variedad de arquitecturas de CPU, la compatibilidad de software y hardware dentro de una familia de productos sigue siendo importante. Las familias de procesadores y sistemas operativos facilitan la transición y la actualización sin tener que cambiar completamente la infraestructura.

 

5. Una razón por la cual las GUI no se adoptaron con rapidez en un principio fue el costo del hardware necesario para darles soporte. ¿Cuánta RAM de video se necesita para dar soporte a una pantalla de texto monocromático de 25 líneas x 80 caracteres? ¿Cuánta se necesita para un mapa de bits de 1024 768 píxeles y colores 24 bits? ¿Cuál fue el costo de esta RAM con precios de 1980 (5 dólares/KB)? ¿Cuánto vale ahora?


La cantidad de RAM de video necesaria depende de la resolución de la pantalla y de la profundidad de color (número de bits por píxel). Aquí hay cálculos aproximados para ambas situaciones: 


Pantalla de Texto Monocromático (25 líneas x 80 caracteres):

Supongamos que cada carácter ocupa 1 byte (8 bits). La pantalla completa requeriría: 

  • Tamaño de RAM = Número de líneas × Número de caracteres por línea × Tamaño de cada carácter 
  • Tamaño de RAM = 25 × 80 × 1 byte = 2000 bytes

Mapa de Bits de 1024 x 768 píxeles y colores de 24 bits:

Para un mapa de bits con colores de 24 bits por píxel, cada píxel necesita 3 bytes (8 bits por cada componente de color). El tamaño total de la RAM sería: 

  • Tamaño de RAM = Ancho de la pantalla × Altura de la pantalla × Tamaño de cada píxel 
  • Tamaño de RAM = 1024 × 768 × 3 bytes = 2,359,296 bytes

Costo en 1980 (a $5 dólares por KB):

Para calcular el costo en 1980, convertimos los tamaños de RAM a kilobytes y multiplicamos por el costo por kilobyte: Costo en 1980 = (Tamaño de RAM / 1024) × Costo por KB 

Costo en 1980 = (2000 / 1024) × 5 dólares ≈ 9.77 dólares

Costo en 1980 = (2,359,296 / 1024) × 5 dólares ≈ 11,520 dólares

Valor Actual:

El costo de la memoria ha disminuido significativamente desde 1980. Hoy en día, los precios de la RAM son mucho más bajos. Podría variar, pero por ejemplo, considerando un costo hipotético actual de $0.01 por KB: Costo Actual ≈ (Tamaño de RAM / 1024) × 0.01 dólares ≈ 0.02 dólares

Costo Actual ≈ (2,359,296 / 1024) × 0.01 dólares ≈ 23 dólares

Estos cálculos son aproximados y los precios reales pueden variar según el mercado y las condiciones económicas. 


6. Hay varias metas de diseño a la hora de crear un sistema operativo, por ejemplo: la utilización de recursos, puntualidad, que sea robusto, etcétera. De un ejemplo de dos metas de diseño que puedan contradecirse entre sí.


Dos metas de diseño que podrían entrar en conflicto entre sí en un sistema operativo son la eficiencia en el uso de recursos y la seguridad robusta.

  1. Eficiencia en el uso de recursos:

    • Ejemplo: Un sistema operativo diseñado para ser altamente eficiente en el uso de recursos podría optar por permitir que las aplicaciones tengan un acceso más directo a los recursos del sistema, sin imponer restricciones significativas. Esto puede acelerar la ejecución de programas y maximizar la utilización de los recursos disponibles.
  2. Seguridad robusta:

    • Ejemplo: Un sistema operativo que se centra en la seguridad robusta puede imponer restricciones estrictas para proteger la integridad del sistema y los datos. Esto podría incluir limitar el acceso directo de las aplicaciones a ciertos recursos y establecer políticas rigurosas para prevenir actividades maliciosas o errores catastróficos.

Estas metas pueden entrar en conflicto porque, en algunos casos, las medidas de seguridad robusta pueden agregar capas adicionales de procesamiento y verificación que consumen recursos significativos. Por ejemplo, la necesidad de verificar constantemente la integridad de las operaciones o validar el acceso a recursos puede ralentizar la ejecución de programas y aumentar la carga del sistema. 


7. ¿Cuál de las siguientes instrucciones debe permitirse sólo en modo kernel?

 a) Deshabilitar todas las interrupciones. 

b) Leer el reloj de la hora del día. 

c) Establecer el reloj de la hora del día. 

d) Cambiar el mapa de memoria. 


La instrucción "Deshabilitar todas las interrupciones" generalmente se permite solo en modo kernel debido a la sensibilidad y la criticidad de esta operación. Cuando se deshabilitan todas las interrupciones, se detiene la capacidad del sistema para responder a eventos externos, como interrupciones de hardware o señales de temporizador.

En modo kernel, el sistema operativo tiene control total sobre los recursos del sistema y puede gestionar adecuadamente la deshabilitación y habilitación de interrupciones. Esto es crucial para garantizar la coherencia y la integridad del sistema durante operaciones críticas, como actualizaciones de estructuras de datos compartidas o manipulación de recursos compartidos.



 

¡Crea tu página web gratis! Esta página web fue creada con Webnode. Crea tu propia web gratis hoy mismo! Comenzar