Sistema

Enviado por Juan y clasificado en Otras materias

Escrito el en español con un tamaño de 498,07 KB

  • CONCEPTOS BÁSICOS DE SISTEMAS OPERATIVOS

En este apartado se presentan una serie de conceptos generales sobre sistemas operativos. En él no se pretende realizar una presentación exhaustiva de los mismos, puesto que este tipo de información se puede encontrar en cualquier libro general de sistemas operativos.   El objetivo es recordar algunos conceptos básicos que permitan abordar los distintos problemas planteados a lo largo del libro.             En primer lugar, se definen las funciones del sistema operativo para, a continuación, pasar a describir los componentes básicos del mismo, así como  los diversos tipos de organización que presenta. Por último, se explica cómo se produce la activación del sistema operativo y, concretamente, como se lleva a cabo una llamada al sistema.

1.1.1 Funciones del Sistema Operativo

Un sistema operativo (SO) es un programa que tiene encomendadas una serie de funciones diferentes cuyo objetivo es simplificar el manejo y la utilización de la computadora, haciéndola segura y eficiente.   Las funciones clásicas del sistema operativo se pueden agrupar en las tres categorías siguientes:

  • Gestión de los recursos de la computadora.
  • Ejecución de servicios para los programas.
  • Ejecución de los mandaros de los usuarios.

Con respecto a su faceta de gestor de recursos, hay que tener en cuenta que en una computadora actual suelen coexistir varios programas, del mismo o de varios usuarios, ejecutándose simultáneamente.      Estos programas compiten por los recursos de la computadora, siendo el sistema operativo el encargado de arbitrar su asignación y uso. Como complemento a la gestión de recursos, el sistema operativo ha de garantizar la protección de unos programas frente a otros y ha de suministrar información sobre el uso que se hace de los recursos.

                Por lo que se refiere al sistema operativo como máquina extendida, éste ofrece a los programas un conjunto de servicios o llamadas al sistema que pueden solicitar cuando lo necesiten, proporcionando a los programas una visión de maquina extendida.            Los servicios se pueden agrupar en las cuatro clases siguientes: ejecución de programas, operaciones de E/S, operaciones sobre archivos y detección y tratamiento de errores.

                Por último, el sistema operativo también es un elemento que proporciona la interfaz de usuario del sistema.          El módulo del sistema operativo que permite que los usuarios dialoguen de forma interactiva con el sistema es el intérprete de mandatos o shell.

1.1.2      Componentes del sistema operativo

Como se muestra en la figura 1.1, se suele considerar que un sistema operático está formado por tres capas: el núcleo. Los servicios y el intérprete de mandatos o shell.

                El núcleo es la parte del sistema operativo que interacciona directamente con el hardware de la máquina.              Las funciones del núcleo se centran en la gestión de recursos, como es el procesador, tratamiento de interrupciones y las funciones básicas de manipulación de memoria.

 

Figura 1.1. Componentes del sistema operativo.

                Los servicios se suelen agrupar según su funcionalidad en varios componentes, cada uno de los cuales se ocupa de las siguientes funciones:

  • Gestión de procesos, encargada de la creación, planificación u destrucción de procesos.
  • Gestión de memoria, componente encargada de saber que partes de memoria están libres u cuales ocupadas, así como de la asignación y liberación de memoria según la necesiten los procesos.
  • Gestión de las E/S, se ocupa de facilita el manejo de los dispositivos periféricos.
  • Gestión de archivos y directorios, se encarga de ofrecer mecanismos para que los procesos puedan comunicarse y sincronizarse.
  • Seguridad y protección, este componente debe encargarse de garantizar la identidad de los usuarios y de definir lo que pueden hacer cada uno de ellos con los recursos del sistema.

Por lo que se refiere a la interfaz de usuario, el sistema operativo puede incluir varios intérpretes de mandatos, unos textuales y otros gráficos.

                1.1.3.     Estructura del sistema operativo.

                Un sistema operativo es un programa grande y complejo que está compuesto, como se ha visto en            la sección anterior, por una serie de componentes con funciones bien definidas. Cada sistema               operativo estructura estos componentes de distinta forma:

  • Sistemas Operativos monolíticos.    Un sistema de este tipo no tiene una estructura clara y bien definida.  Todos sus componentes se encuentran integrados en un único programa (el sistema operativo) que ejecuta un único espacio de direcciones.    En este tipo de sistemas todas las funciones que ofrece el sistema operativo se ejecutan en modo núcleo.
  • Sistemas por capas.            En un sistema por capas, el sistema operativo se organiza como una jerarquía de capas, donde cada capa ofrece una interfaz clara y bien definida a la capa superior y solamente utiliza los servicios que le ofrece la capa inferior. La principal ventaja que ofrece este tipo de estructura es la modularidad y la ocultación de la información, lo que facilita enormemente la depuración y verificación del sistema.
  • Modelo Cliente-Servidor. En este tipo de modelo, el enfoque consiste en implementar la mayor parte de los servicios y funciones del sistema operativo en modo núcleo. A esta parte se le denomina micronúcleo y a los procesos que ejecutan el resto de las funciones se les denomina servidores.    La ventaja de este modelo es la gran flexibilidad que presenta.        Cada proceso servidor sólo se ocupa de una funcionalidad concreta, lo que hace que cada parte pueda ser pequeña y manejable.             Esto a su vez facilita el desarrollo y depuración de cada uno s los procesos servidores.               En cuanto a las desventajas, citar que en estos sistemas presentan una mayor sobrecarga e el tratamiento de los servicios que los sistemas monolítico.

1.1.4.     Activación del sistema operativo

Una vez presentadas las funciones y componentes del sistema operativo, es importante describir cuales son las acciones que activan la ejecución del mismo.       El sistema operativo es un servidor que está a la espera de que se le encargue trabajo.  El trabajo del sistema operativo puede provenir de las siguientes fuentes:

  • Llamadas al sistema emitidas por los programas.
  • Interrupciones producidas por los periféricos.
  • Condiciones de excepción o error del hardware.

Cuando es un proceso en ejecución el que desea un servicio del sistema operativo ha de utilizar una instrucción TRAP, que genera la pertinente interrupción.         En los demás casos será una interrupción interna (una excepción) o externa (proveniente de un dispositivo de entrada/salida) a que reclame la atención del sistema operativo.

Cuando se programa en un lenguaje de alto nivel, como el C, la solicitud de un servicio del sistema operativo se hace mediante una llamada a una función (por ejemplo, fork()m que es el servicio POSIX para la creación de un nuevo proceso).                No hay que confundir esta llamada con el servicio del sistema operativo.            La función fork del lenguaje C no realiza el servicio fork, simplemente se limita a solicitar este servicio del sistema operativo.           En general estas funciones que solicitan los servicios del sistema operativo se componen de:

  • Una parte inicial que prepara los parámetros del servicio de acuerdo con la forma en que los espera el sistema operativo.
  • La instrucción TRAP que realiza el paso al sistema operativo.
  • Una parte final que recoge los parámetros de contestación del sistema operativo, para devolverlos al programa que hizo la llamada.

Estas funciones se encuentran en una biblioteca del sistema y se incluyen en el código en el momento de su carga en memoria. Para completar la imagen de que se está llamando a una función, el sistema operativo devuelve un valor, como una función real.                Al programador le parece, por tanto, que invoca al sistema operativo como función.       Sin embargo, esto no es así, puesto que lo que hace es invocar una función que realiza la solicitud al sistema operativo.          La figura 1.2 muestra todos los pasos involucrados en una llamada al sistema operativo, indicando el código que interviene en cada uno de ellos.

Figura 1.2. Pasos de la llamada al sistema operativo.

1.2.        EJERCICIOS RESUELTOS

                Ejercicio 1.1.

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

                Solución.

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:

  • Gestión de los recursos del sistema
  • Ejecución de servicios para programas
  • Ejecución de programas por parte de los usuarios.
  • 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 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 maquina simultáneamente.               Lo más importante es saber, mediante las estructuras adecuadas, que recursos están libres y cuales ocupados.            Atendiendo a esto deberá asignar 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 ejecutando en cada momento, lo que se usa frecuentemente para monitorizar.
  • 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:
  • Ejecutar o destruir procesos.
  • Facilitar la entrada/salida y las operaciones sobre los archivos.
  • 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 S.O. 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 operativo 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.

  • Ejecución de los mandatos de los usuarios.          El S.O. 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 línea de mandatos, como puede ser el bash de UNIX, o gráficas como la de Windows.  Las shells por línea de comando obligan al usuario a aprender todos los mandatos, mientras que las gráficas son mucho más intuitivas.            La shell se comporta como un bucle infinito repitiendo la siguiente secuencia:

 

  • Espera una orden de usuario.
  • Una vez recibida la orden la analiza y, en caso de ser correcta, la ejecuta.
  • Una vez concluida la orden vuelve a la espera de una nueva orden.

Ejercicio 1.2

¿Qué diferencia existe entre un mandato y una llamada al sistema?

Solución

Una llamada al sistema es un servicio que ofrece el sistema operativo a un programa como interfaz de programación, mientras que un mandato es un programa de usuario que utiliza llamadas al sistema para dar servicios de alto nivel solicitados por un usuario al S.O. (desde una Shell u otra interfaz usuario).

El mandato permite que los usuarios dialoguen de forma interactiva con el sistema a través del intérprete de mandatos, o shell.                Las llamadas al sistema son un conjunto de servicios que el sistema operativo ofrece a los programas que se pueden solicitar cuando se necesiten.

                La diferencia esencial entre mandato y llamada al sistema es que el mandato es la forma utilizada por los usuarios para comunicarse con el sistema y la llamada al sistema es el método utilizado por el programador para comunicar su programa con el sistema.

 

 

Ejercicio 1.3

¿Qué tipo de diseño tiene el sistema operativo LINUX?

  • De máquinas virtuales.
  • Monolítico.
  • Jerárquico (por capas)
  • Cliente-Servidor.

Solución.

Un sistema por capas tiene una estructura bien diferenciada y un conjunto de servicios bien diferenciados por cada capa (Figura 1.3). Estos servicios se pueden implementar como procesos separados o no, pero sólo se puede acceder a sus servicios a través de una interfaz bien definida, a través de la cual se aplica el principio de ocultación de la información.

El sistema operativo LINUX tiene un diseño monolítico, ya que todo su núcleo está generado como un único proceso y dentro del mismo se puede acceder a cualquier parte mediante una llamada a función. Tampoco tiene ninguna estructura de diseño clara por capas o de otro tipo (Figura 1.4).

                Figura 1.4 Estructura de un sistema operativo monolítico.

 

 

 

 

                Ejercicio 1.4

                ¿Qué caracteriza más a un Sistema Operativo?

  • El intérprete de mandatos
  • Las llamadas al sistema
  • Los mandatos
  • Sus bibliotecas de programación

Solución

Lo que más caracteriza a un Sistema Operativo son sus llamadas al sistema que proporcionan la visión externa del mismo.   El intérprete de mandatos no es sino un programa que ejecuta los mandatos que recibe de los usuarios.      Los mandatos 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, aunque también da soporte a la interfaz POSIX mediante una máquina virtual.

La respuesta correcta es la B

                Ejercicio 1.5

¿Cuál de las siguientes técnicas hardware tiene mayor influencia en la construcción de un sistema operativo? Razone su respuesta.

  • Microprogramación del procesador.
  • Caché de la memoria principal.
  • DMA.
  • RISC.

Solución

 

La técnica hardware más influyente a la hora de construir un SO es DMA (respuesta c), debido a que:

  • La microprogramación del procesador no afecta en absoluto a la construcción de un SO.
  • La caché de la memoria principal afecta a nivel hardware.
  • La reducción de instrucciones que supone RISC frente a CISC implica una programación distinta de los niveles inferiores del SO y parte de los manejadores.

Sin embargo, el DMA permite que los manejadores de los dispositivos de E/S realicen el proceso de transferencia de datos de estas unidades de E/S a la memoria principal de forma automática y bajo el control de la propia unidad de E/S. Esto permite ahorrar tiempo de CPU, al no existir la E/S programada, tiempo que se puede dedicar a ejecutar procesos distintos a lo que realizan la E/S. El DMA facilita mucho las técnicas de multiprogramación.

 

Ejercicio 1.6

Definir los términos visión externa e interna de un SO. ¿Cuál de las dos determina mejor un SO concreto?¿Por qué?

Solución

La visión interna de un SO es la estructura de dicho SO.   Un SO puede tener diferente estructuras tales como monolítica, por capas o con un modelo cliente-servidor.

        La visión externa de un SO es el conjunto de servicios que dicho SO ofrece al usuario que lo está utilizando, la interfaz que el sistema operativo da al usuario.

        En cuanto a cuál de las dos determina mejora un SO concreto, la respuesta es la visión interna, porque determina la forma funcional del SO, es decir, como SO considerando las llamadas al sistema, la entrada/salida, el control de procesos, la gestión de archivos y directorios, la temporización y sincronización, la protección y planificación de recursos, etc.        Estos son, por definición, los componentes principales de un SO y, por tanto, será dicha visión (interna) la que mejor determine un SO concreto.                Así UNIX y Windows, por ejemplo, se diferencian principalmente por sus diferentes visiones internas (uno es monolítico mientras que el otro es cliente-servidor).

Ejercicio 1.7

¿El intérprete de mandatos de UNIX es interno o externo? Razone su respuesta con un ejemplo.

Solución

Los intérpretes de mandatos UNIX son externos y se denominan SHELLS.    Sin embargo algunos mandatos se tienen que implementar como internos al propio interprete de mandatos debido a que su efecto solo puede lograrse si es el propio interprete el que ejecuta el mandato.   La Figura 1.5 muestra estos conceptos:

                Figura 1.5 API del sistema operativo e interprete de mandatos.

                Por ejemplo, el mandato para borrar un archivo, en UNIX es rm, lo que hace es ejecutar el programa de borrar un archivo directamente, sin analizar la línea de mandatos tecleada por el usuario.

                En MS-DOS el intérprete de mandatos es interno.      Por ejemplo, la orden de borrar un archivo es del nombre del archivo. En MS-DOS el intérprete es el único programa, este lee la línea de mandatos, determina de que mandato se trata y luego salta  a la línea del programa que realiza esa acción.

Ejercicio 1.7

Cuantas instrucciones de la siguiente lista deben ejecutarse exclusivamente en modo núcleo?

  • Inhibir todas las interrupciones.
  • Escribir en los registros de control de un controlador de DMA.
  • Leer el estado de un controlador de periférico.
  • Escribir en el reloj de la computadora.
  • Provocar un trap o interrupción software.
  • Escribir en los registros de la MMU

Solución

  • Inhibir todas las interrupciones.

La información de la inhibición de interrupciones se suele poner en el registro de estado. Esta parte del registro de estado solo se puede modificar en modo núcleo. Por tanto, para inhibir todas las interrupciones se debe estar en modo núcleo.

  • Escribir en los registros de controlador de DMA.

Se debe ejecutar en modo núcleo, para asegurar la protección de los dispositivos periféricos.

  • Leer el estado de un controlador periférico.

Se debe ejecutar en modo núcleo para impedir el acceso directo de los usuarios a la información de los periféricos.                Al utilizar un dispositivo de E/S para acceder a periféricos es necesario haber mandado una señal al microprocesador, que produce una interrupción (pasando a modo núcleo) y da paso al dispositivo de E/S.               Esta es una cuestión de seguridad, ya que los dispositivos periféricos deben estar encapsulados por el SO.

  • Escribir en el reloj de la computadora.

Se debe ejecutar en modo núcleo, porque solo a través del sistema operativo se puede acceder al hardware de la maquina.

  • Provocar un trap o interrupción de software.

La instrucción trap se ejecuta en modo de usuario para poder pasar a modo núcleo. Se pasa a modo núcleo porque se provoca una interrupción por parte de la instrucción.

  • Escribir en los registros de la MMU.

Se debe ejecutar en modo núcleo, ya que el sistema operativo quien se encarga de realizar la gestión de la memoria virtual.

Por tanto, de todas las operaciones descritas, cinco se deben ejecutar en modo núcleo y una en modo usuario.

 

                Ejercicio 1.9

                ¿Cuál de las siguientes combinaciones no es factible?

  • Spooling es un sistema monousuario.
  • Procesamiento por lotes con multiprogramación.
  • Tiempo compartido sin multiprogramación.
  • Multiprogramación en un sistema monousuario.

Solución

Un sistema multitarea no tiene porque ser multiusuario: en el caso que no lo sea todo el tiempo de la CPU, estará disponible para la ejecución de los procesos del único usuario de la maquina; en caso contrario, el tiempo de ejecución de la CPU se repartirá en partes (mas o menos iguales) entre los diferentes usuarios de la máquina. En cualquier caso el sistema tendrá la capacidad de ejecutar varios procesos “a la vez” sean del usuario que sean.

                En un sistema multiusuario se puede hacer spooling sin ningún problema, ya que el Spooling consiste en delegar trabajos de impresión y hacerlos en un cierto orden.  Un sistema monousuario puede ser multiprocesos sin problemas.      Este el el caso de UNIX y LINUX cuando arrancan en modo monousuario.       Luego, se puede implementar bien el spooler.

                En un sistema multiprogramado se puede hacer procesamiento por lotes sin problema. Se puede construir un lote con varios programas y ejecutarlo en forma no interactiva.

                Sin embargo, un sistema de tiempo compartido, aunque no es estrictamente necesario si es muy recomendable que sea multitarea (la inmensa mayoría de los SO actuales son de este tipo). Esto se debe que un SO multiusuario debe ir lanzando procesos login a medida que se ven conectando usuarios en la maquina.            Estos procesos deben estar ejecutándose a la vez para permitir que varios usuarios permanezcan al mismo tiempo en el sistema (de ahí a que se deban ser multitarea).          Igual que ocurre con el proceso login, ocurre con el resto de procesos que se ejecuten en el mismo sistema; es decir, en caso que los usuarios diferentes estén ejecutando diferentes procesos (caso muy corriente), estos deben compartir el tiempo del CPU para que todos lo usuarios tengan un buen servicio.

                La multiprogramación se puede implementar perfectamente en un sistema monousuario que sea multiproceso.

                La solución correcta es pues la C.

Ejercicio 1.10

¿Cuál de los siguientes mecanismos hardware no es un requisito para construir un SO multiprogramado con protección entre usuarios? Razone su respuesta.

  • Memoria virtual.
  • Protección de memoria
  • Instrucciones de E/S que sólo pueden ejecutarse en modo núcleo.
  • Dos modos de operación: núcleo y usuario.

Solución

La respuesta correcta es la primera Memoria virtual, ya que si bien es necesario tener una gran cantidad de memoria principal, esto no hace necesario la utilización de mencionado servicio.

En cambio las restantes opciones si son necesarias.   La protección de memoria se hace necesaria en cuanto queremos proteger la imagen de memoria de un proceso frente a la intromisión de otro, que puede ser de un usuario distinto. La ejecución de instrucciones de E/S en modo núcleo se hace necesaria por varios motivos, uno de ellos es que necesitamos que estos procesos los ejecute el SO para que mientras se realicen, pueda poner en ejecución otro proceso, y así aprovechar al mazximo el tiempo de ejecución.       Finalmente, los dos modos de operación se hacen necesarios por seguridad ya que , al trabajar varios usuarios, así como diversos procesos, si solo hubiera un modo de ejecución, un proceso podría ejecutar cualquier instrucción sobre cualquier elemento del computador con las consecuencias en cuanto a seguridad que ello implicaría.

Ejercicio 1.11

¿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?

Solución

Una llamada al sistema es más compleja en un SO por capas debido a es estructura, en la que todos los componentes reciben en espacio de direcciones diferentes. Cada uno de ellos se encuentra en una capa que ofrece una interfaz clara a la capa superior y recibe los servicios que a su vez le ofrecen la capa que tiene por debajo.           Debido a esto cuando hacemos una llamada al sistema, esta tiene que ir pasando de capa en capa antes de ejecutarse, lo que supone 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 dirección, produciendo un programa muy grande en el que todas las funciones se encuentran en el mismo nivel la llamada al sistema 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 SO estructurados, sino que accedemos directamente.

                El problema de los SO monolíticos es que al estar todo contenido en un mismo nivel cuesta mucho hacer modificaciones.                El SO no tiene una estructura clara y bien definida y todos sus componentes se encuentran en el, de manera que la modificación se hará sobre un gran programa que constara de múltiples funciones cuya modificación produciría problemas ya que dentro de las mismas se producen llamadas a otras funciones.

Ejercicio 1.12

¿Cómo se solicita una llamada al SO?

Solución

Se solicita mediante un mecanismo de interrupciones.             Cuando un proceso en ejecución la solicita, este utiliza una instrucción TRAP que genera una interrupción.          Como se muestra en la figura 1.6, la rutina de tratamiento de la interrupción de TRAP usa una tabla interna del SO para determinar que rutina activar dependiendo de cual es la llamada solicitada.

Figura 1.6 Realización de una llamada al sistema.

Cuando se programa en un lenguaje de alto nivel, la solicitud de servicios al SO se hace mediante una llamada a una función determinada, que se encarga de generar la llamada al sistema y el trap correspondiente.

Ejercicio 1.14

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

  • Se implementa con un trap
  • Su interfaz se ofrece como una rutina de biblioteca
  • Produce un cambio a modo supervisor
  • Produce siempre un cambio de contexto.

Solución

 La solución A es correcta, ya que siempre que hay una llamada al sistema se produce un trap (como se ha visto en ejercicios anteriores).

                La solución B también es correcta, ya que de hecho los usuarios no suelen usar directamente las llamadas al sistema, sino bibliotecas mas sofisticadas que suelen proporcionar los fabricantes del SO.      Estas bibliotecas suelen ser código en el que se confía.

                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 supervisor para poder ejecutar las instrucciones que solo se pueden ejecutar en ese modo.

                La D es falsa.         Una llamada al sistema no tiene porque producir un cambio de contexto, excepto si es bloqueante.                En este último caso, siempre se suele producir un cambio de contexto para aprovechar el tiempo de bloqueo del proceso con otro proceso.

Ejercicio 1.15

¿Qué contiene una entrada de la tabla de vectores de interrupción?

  • El nombre de la rutina de tratamiento
  • La dirección de la rutina de tratamiento
  • El numero de la interrupción
  • El nombre de la tarea del SO que trata la interrupción

Solución

La tabla de vectores de interrupción contiene, para cada entrada, la dirección de la rutina de tratamiento de esa interrupción.                La posición en la tabla se corresponde con el número de la interrupción.

                El tratamiento de interrupción,  esquemáticamente, sigue los siguientes pasos:

  • Detección de existencia de interrupción. Se comprueba al final de cada instrucción maquina. Si hay interrupción pendiente, la unidad de control activa un bit del registro de estado.
  • Usando el número de interrupción como índice se entra al vector de interrupción.
  • Salto a la rutina de interrupción, cuya dirección es el contenido del elemento del vector de interrupción.
  • Ejecución de la rutina de tratamiento de interrupción. Para garantizar la seguridad entre los distintos usuarios.              Todas las rutinas de tratamiento deben estar en el espacio del SO.

Luego la solución correcta es la B.

Ejercicio 1.17

¿Qué es mejor para un sistema con varios terminales?

  • Un SO por lotes sin spooling.
  • Un SO por lotes con spooling.
  • Un sistema de tiempo real.
  • Un sistema multiusuario.

Solución

La respuesta correcta es la D, ya que el hecho de tener spooling no es útil para manejar terminales. Los spooler son procesos que gestionan recursos únicos (como la impresora) de forma ordenada mediante una cola de peticiones, técnica que se podría aplicar a una cola de terminales, pero que lo harían muy incomodo y de respuesta lenta.

                Un sistema de tiempo real no sería muy adecuado para la tarea, aunque se podría usar. El problema de esta solución es que los planificadores de tiempo real no se adecuan bien a la ejecución de procesos bajo demanda de usuarios.

                Los sistemas multiusuario están pensados y diseñados para manejar varios usuarios, cada uno  de los cuales tiene, al menos un terminal.            Los planificadores en rodaja y la gestión de interrupciones permiten manejar bien varios terminales sin que los usuarios noten discontinuidades.

Ejercicio 1.18

¿Qué código se ejecuta con las interrupciones inhibidas?

  • Ninguno, ya que podrían perderse interrupciones.
  • Todo el código del sistema operativo.
  • Ciertas partes criticas del sistema operativo.
  • El Código de los procesos del administrador del sistema que tenga la prioridad máxima.

Solución

Solo se inhiben las interrupciones para ejecutar ciertas partes críticas del SO, por lo que la respuesta correcta es la C.

                La respuesta A no es válida porque hay porciones criticas de código del SO en que es necesario inhibir las interrupciones para no tener problemas. Una de estas porciones es aquella en que se hace el tratamiento básico de la interrupción. Otra es el cambio de contexto.

                La respuesta B no es correcta porque si se inhibieran las interrupciones en todo el SO, los procesos no podrían ser interrumpidos cuando estuvieran ejecutando el código del núcleo, lo que causaría que se retrasase considerablemente el tratamiento de las interrupciones, pudiéndose incluso perder alguna.

                La respuesta D no es correcta porque el administrador es un usuario especial, pero solo es un usuario más.                 Cualquier proceso es interrumpible.

Ejercicio 1.25

¿Qué ventajas tiene escribir un SO utilizando un lenguaje de alto nivel?

Solución

La ventaja principal es su portabilidad: El SO puede ser utilizado en una amplia gama de computadores.    Al sustituir el ensamblador (o aun mejor, el código maquina) que solo sirve para una gama de procesadores concreta, por un lenguaje independiente del procesador, se puede compilar dicho código, manteniéndose el código fuente inalterable para un amplio número de plataformas. Siempre hará falta ensamblador de cada procesador para unas pocas tareas de muy bajo nivel (cambio de contexto, entrada/salida básica, etc.), pero se pasa de miles o millones de líneas en ensamblador a unos pocos cientos.

                También se podría destacar la facilidad a la hora de construir y mantener el código.        Un ejemplo de esto es que todos los errores de sintaxis los da por si solo el compilador, de tal forma que el programador solo se tiene que ocupar de un número más reducido de errores.

                Otra ventaja es que se pueden construir modulos nuevos para el SO de forma sencilla y eficiente usando el lenguaje de alto nivel. Estos modulos son totalmente transportables.

 

Entradas relacionadas:

Etiquetas:
operaciones con vectores ejercicios resueltos ejecucion de los mandatos de los usuarios ¿Cuál de las siguientes combinaciones No es factible? definir los términos visión externa (servicios) e interna (diseño) de un sistema operativo. ¿cuál de las dos determina mejor a un sistema operativo concreto?. ¿por qué?. UN SISTEMA OPERATIVO SE PUEDE MODIFICAR PARA QUE OCUPE MENOS ESPACIO DE MEMORIA Y RECURSOS? El núcleo es la parte del sistema operativo que interacciona directamente con el hardware de la máquina ¿Cuál de las siguientes técnicas hardware tiene mayor influencia en la construcción de un sistema operativo? a) Microprogramación del procesador. b) Cache de la memoria principal. c) DMA d) RISC respuestas examenes it essentials 4.0 hardware y software español ¿Cómo se llaman los programas que están compuestos de otros programas? Quitar Saltos de Linea MS-DOS Qué es FALSO acerca de una llamada al sistema respuestas del modulo conceptos basicos de los sistemas operativos it esential shell de linux ventajas y desventajas de LA multiprogramacion ¿es factible un spolling en un sistema operativo monolitico ¿a que sistemas operativo corresponde cada una de las siguientes tareas? gestion de los recursos de un sistema operativo ¿cuál de los siguientes mecanismos hardware no es un requisito para construir un sistema operativo multiprogramado con protección entre usuarios? razone su respuesta. tipos de sistemas operativos y su funcion Qué es falso acerca de LINUX a. Es un sistema operativo de tiempo real. b. Es un sistema operativo de tiempo compartido. c. Es un sistema operativo con multiprogramación. d. Es un sistema operativo interactivo • Un sistema operativo es un programa que se encarga de simplificar el manejo y la utilización de la computadora, haciéndola segura y eficiente. representa una función que tenga dos tipos de discontinuidades diferentes en un mismo valor de x SISTEMA OPERATIVO ESTRUCTURADO uál de las siguientes combinaciones no es factible?. a. spooling en un sistema monousuario. b. procesamiento por lotes con multiprogramación. c. tiempo compartido sin multiprogramación. d. multiprogramación en un sistema monousuario qué es mejor para un sistema con varias terminales?. a. un sistema operativo por lotes sin spooling. b. un sistema operativo por lotes con spooling. c. un sistema de tiempo real. d. un sistema multiusuario. cuales instrucciones de la siguiente lista deben ejecutarse exclusivamente en modo nucleo (kernel) spooling en un sistema monousuario ¿Qué tipo de diseño tiene el sistema operativo Linux? it essentials 4.0 examenes español sistema operativo monolitico