Soluciones Temas Examen

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 6

Soluciones

1. ¿Cuáles son las principales funciones de un sistema operativo?


Menciónelas y explique cada una.

El sistema operativo es un programa que se encarga de cubrir el hardware


para facilitar el uso de la computadora, lo que lleva a cabo mediante la
realización de tres funciones principales.
i. Gestión de los recursos del sistema
ii. Ejecución de servicios para programas
iii. Ejecución de programas por parte de los usuarios

i. Gestión de recursos hardware. Esta función es desempeñada por el


núcleo del sistema operativo, que debe ocuparse de asignar los
recursos de la computadora a los programas en ejecución, así como
de evitar que unos programas accedan a los recursos de los otros y
de llevar la contabilidad de los recursos consumidos por cada
programa. Tiene como principal tarea administrar los diferentes
procesos que pueden estar en ejecución en la máquina
simultáneamente. Lo más importante es saber, mediante las
estructuras adecuadas, que recursos están libres y cuáles
ocupados. Atendiendo a esto deberá asiganar a los procesos en
ejecución, dependiendo de la prioridad de cada uno, unos recursos
determinados y recuperar, para su aprovechamiento, los que han
quedado libres porque un proceso ha terminado. El sistema
operativo deberá también hacerse cargo de que los procesos no
accedan a los recursos asignados a otros, velando así por la
seguridad del sistema. Por último, el sistema debe medir la cantidad
de recursos que se están usando en cada momento, lo que se usa
frecuentemente para monitorizar.
ii. Ejecución de servicios para los programas. Esta función se lleva a
cabo en la capa denominada de servicios o llamadas al sistema, que
permite que la ejecución de los programas sea más cómoda. Estas
llamadas se encargan de:
a. Ejecutar y destruir procesos
b. Facilitar la entrada/salida y las operaciones sobre los archivos
c. Detectar y tratar los errores detectados por el hardware

El sistema operativo ofrece principalmente cuatro tipos de servicios


o llamadas al sistema; servicios para lanzar programas y convertirlos
en procesos, pararlos y abortarlos. Debido a la complejidad de las
operaciones de entrada/salida con los periféricos, el SO provee los
servicios necesarios para facilitar la comunicación entre los
procesos y los dispositivos externos (abrir, cerrar, leer, etc). Para
trabajar con archivos el sistema oeprativo ofrece servicios similares
a los de E/S, pero con un nivel de abstracción mayor. Además el
sistema se encarga de tratar los posibles errores que pueda detectar
el hardware.
iii. Ejecución de los mandatos de los usuarios. El SO se encarga
también de la interacción de la computadora con los usuarios, esto
lo lleva a cabo mediante shells. Las shells pueden ser de la línea de
comandos, como puede ser el bash de UNIX, o gráficas como la de
Windows. Las shells por línea de comandos obligan a usuario a
aprender todos los comandos, mientras que las gráficas son mucho
más intuitivas. La shell se comporta como un bucle infinito
repitiendo la siguiente secuencia:

a) Espera una orden del usuario


b) Una vez recibida una orden la analiza y, en caso de ser correcta,
la ejecuta
c) Una vez concluida la orden vuelva a la espera de una nueva
orden

2. ¿Qué caracteriza más un sistema operativo? Justifique su respuesta


A- El intérprete de comandos
B- Las llamadas al sistema
C- Los comandos
D- Las librerías de programación

Las llamadas al sistema proporcionan la visión externa del mismo. El intérprete


de comandos no es sino un programa que ejecuta los comandos que recibe
de los usuarios. Los comandos a su vez no son sino programas que usan las
llamadas al sistema para obtener servicios del sistema operativo.
• En Unix y Linux, la interfaz de llamadas al sistema es la definida en el
estándar POSIX.
• En Windows, la interfaz nativa de llamadas al sistema se denomina
Win32

La opción B es la respuesta correcta.

3. ¿Dónde es más compleja una llamada al sistema, en un sistema operativo


monolítico o en uno por capas? ¿Cuál es más difícil de modificar?

Una llamada al sistema es más compleja en un sistema operativo estructurado


por capas, debido a su estructura, en la que todos los componentes residen
en espacios de direcciones diferentes. Cada uno de ellos se encuentra en una
capa que oferece una interfaz clara a la capa superior y recibe los servicios
que a su vez le ofrece la capa que tiene por debajo. Debido a esto cuando
hacemos una llamda al sistema, esta tiene que ir pasando de capa en capa
antes de ejecutarse, lo que super una mayor complejidad y una mayor
inversión de tiempo.
Por el contrario, en los SO monolíticos todos los componentes se ubican en el
mismo espacio de direcciones, produciendo un programa muy grande en el
que todas las funciones se encuentran en el mismo nivel. La llamda al sitema
es más sencilla, y por tanto más rápida, ya que no tenemos que pasar por
capas para comunicar al usuario con el núcleo, como en los sitemas
operativos estructurados, sino que accedemos directamente.
El problema de los sistemas operativos monolíticos es que al estar todo
contenido en el mismo nivel cuesta mucho hacer modificaciones. El sistema
operativo no tiene una estrucutra clara y bien definida y todos sus
componentes se encuentran en él, de manera que la modificación se hará
sobre un gran programa que constará de múltiples funciones cuya
modificación produciría problemas ya que dentro de las mismas se producen
llamdas a otras funciones.

4. ¿Cómo se solicita una llamada al sistema operativo?

Se solicita mediante un mecanismo de interrupciones. Cuando un proceso en


ejecución la solicita, éste utiliza una instrucción TRAP/TRAMPA que genera
una interrupción. Como se muestra en la figura, la rutina de tratamiento de la
interrupción de la trampa usa una tabla interna del SO para determinar qué
rutina activar dependiendo de cuál es la llamda solicitada.

5. ¿Qué es falso acerca de una llamada al sistema?


A- Se implementa con una trampa
B- Su interfaz se ofrece como una función de una librería
C- Produce un cambio a modo kernel
D- Produce siempre un cambio de contexto

La solución A es correcta, ya que siempre que hay una llamada al sistema se


produce una trampa.
La solución B también es correcta, ya que de hecho los usuarios no suelen
usar directamente las llamadas al sistema, sino librerías más sofisticadas que
suelen proporcicionar los fabricantes del SO.
La C también es correcta ya que una llamada al sistema supone entrar a
ejecutar en el espacio del núcleo del SO, para lo que hay que cambiar el
procesador a modo kernel para poder ejecutar las instrucciones que solo se
pueden ejecutar en ese modo.
La D es falsa. Una llamada al sistema no tiene porqué producir un cambio de
contexto.

6. ¿Es un proceso un archivo ejecutable? Describa su respuesta

Un proceso puede decirse que es un archivo ejecutable en ejecución. Cuando


un usuario pide la ejecución de un archivo ejecutable, el sistema operativo se
encarga de crear un proceso, ejecutar y destruirlo en el momento preciso.
Además, hay que tener en cuenta que de un mismo archivo ejecutable pueden
crearse varios procesos. Por ejemplo, varios usuarios pueden haber pedido al
sistema operativo la ejecución de un mismo programa simulatáneamente, lo
que creará varios procesos de un mismo archivo ejecutable.
Por tanto, no puede decirse que un proceso sea un archivo ejecutable, pero sí
que un archivo ejecutable tiene información clave para la ejecución de un
proceso.
Un proceso es pues un programa en ejecución, mientras que un archivo
ejecutable es el objeto que almacena el código del proceso, es decir, incluye la
siguiente información.
• Identificador de que es un ejecutable
• Estado inicial de los registros
• Tamaño del código y de los datos
• El código del programa
• Los datos con valor inicial

7. ¿Cómo se hace en POSIX para que un proceso cree otro proceso que
ejecute otro programa?

En POSIX son necesarios dos servicios:


1. Crear un proceso: se invoca el servicio fork, que realiza una clonación
del proceso que lo solicite pasando este a ser el proceso padre del
nuevo proceso.
2. Ejecutar un programa: se invoca al servicio exec, cuyo objetivo es
cambiar el programa que está ejecutando un proceso.
Así, el servicio fork crea un nuevo proceso de uno original, y servicio exec
hace que el proceso hijo ejecute otro programa distinto al padre.

8. ¿Cuándo entra un proceso en estado zombie?

Un proceso pasa a estado zombie cuando su función ha finalizado pero no se


han liberado sus recursos debido a que el padre no ha ejecutado un wait(). No
se puede librerar el PCB donde se almacena la información de quién es el
padre del proceso hasta que se le pueda informar de que el proceso ha
finalizado.

9. ¿Cuál es la diferencia entre el modo usuario y el modo kernel? Explique


cómo estos modos ayudan al diseño de un sistema operativo.
La mayoría de los SO modernos proveen dos modos de ejecución: el modo
kernel y el modo usuario. La CPU puede ejecutar cada instrucción dentro de
su conjunto de instrucciones y usar cada característica del hardware cuando
se ejecuta en modo kernel. Sin embargo, puede ejecutar solo un subconjunto
de instrucciones cuando se ejecuta en modo usuario. Tener ambos modos
permite a los diseñadores ejecutar programas en modo de usuario y denegar
el acceso a instrucciones críticas.

10. ¿Cuáles de las siguientes instrucciones deben permitirse ejecutarse solo


en modo kernel?

A- Deshabilitar todas las interrupciones


B- Leer la fecha y hora
C- Asignar la fecha y hora
D- Cambiar el mapa de memoria

Las opciones A, C y D deben restringirse solo al modo kernel.

11. ¿Cuáles son las diferencias entre hilos a nivel de usuario e hilos a nivel de
kernel? ¿Bajo qué circunstancias es una mejor que la otra?

a. Los hilos a nivel de usuario son desconocidos por el kernel, por el


contrario, los hilos del kernel son conocidos por kernel.
En sistemas que utilizan el mapeo M:1 o M:N, los hilos de usuario son
planificados por la librería de hilos y el kernel planifica los hilos de kernel.

Los hilos de kernel no necesitan estar asociados a un proceso, mientras


que cada hilo de usuario pertenece a un proceso.
Los hilos de kernel generalmente son más costosos de mantener en
comparación que un hilo de usuario, pues éstos deben estar
representados mediante una estructura de datos en el kernel.

12. Dibuja la estructura del árbol de procesos que obtendríamos al ejecutar el


siguiente fragmento de código.
13. Planificación Procesos
a. SJF con desalojo
b. RR con q = 2

Proceso Tiempo de llegada Tiempo de ráfaga


P1 6 2
P2 0 4
P3 1 1
P4 3 3
P5 5 7

a. Tiempo medio de ejecución: 5,4


Tiempo medio de espera: 2

b. Tiempo medio de ejecución: 6,6


Tiempo medio de espera: 3,2

También podría gustarte