Explicar el concepto de Firmware
CONCEPTOS FIRMWARE
El firmware es el conjunto de programas y datos que vienen en una computadora desde su fabricación, en una memoria que no puede ser modificada por el usuario.
Estos programas pueden venir implantados en el propio cableado del ordenador, denominándose en estos casos lógica cableada, y también pueden venir en memorias de sólo lectura (ROM), conociéndose en estos casos como microcódigo o microprograma.
Microcódigo (Microcode).
Se denomina así a la representación simbólica de un microprograma.
Microprograma (Microprograma).
Secuencia de instrucciones elementales en código máquina que corresponden a una operación completa de la computadora.
En general, podemos decir que una máquina microprogramada interpreta instrucciones (microinstrucciones) no existentes directamente en el hardware, basándose en otras más elementales que sí están directamente disponibles en la máquina.
En la actualidad, la microprogramación se utiliza para realizar funciones de control en una computadora y es facultad de los diseñadores de hardware.
Existen varias modalidades de firmware:
- Programas cableados (Wired-in): Son secuencias de acciones que configuran determinados algoritmos implementados en el cableado. El ejemplo más corriente es el de las calculadoras (Figura 2.1).
- Control por programa (Program control): El control se realiza por un programa o conjunto de ellos grabados en una memoria ROM, donde las instrucciones máquina son interpretadas como un juego de señales de control (Figura 2.2).
- Control rígido (Hard-wired): Consiste en una mezcla de los dos anteriores, donde la conversión de códigos de operación.de.Ias instrucciones del programa almacenado en señales de control se establece por cableado (Figura 2.3).
- Control por microprograma (Microprogrammed): Se realiza el control por medio de un almacenado en memoria ROM, cuyas instrucciones son menos numerosas que el mismo programa en código máquina, donde además se puede emular una máquina virtual más potente que la real que configura el propio hardware (Figura 2.4).
Explicar la Estructura Jerárquica de un Sistema Operativo. Niveles. Organización Jerárquica en anillos
Estructura jerárquica
Se dividió el sistema operativo en pequeñas partes, de tal forma que cada una de ellas estuviera perfectamente definida y con un claro interfaz con el resto de elementos.
Se constituyó una estructura jerárquica o de niveles en los sistemas operativos, el primero de los cuales fue el denominado THE (Technische Hogeschool, Eindhoven), de Dijkstra, que se utilizó con fines didácticos:
Sistema jerárquico THE.
Nivel 5 – Usuario [Control de programas de usuario]
Nivel 4 – Archivos [Gestión de archivos]
Nivel 3 - Entrada/salida [Control de las operaciones de entrada/salida]
Nivel 2 – Comunicaciones [Controlador de la consola del operador]
Nivel 1 – Memoria [Gestión de memoria]
Nivel 0 - Gestión CPU [Planificador del procesador]
Nivel -1 – Hardware
En la estructura anterior se basan prácticamente la mayoría de los sistemas operativos actuales. Otra forma de ver este tipo de sistema es la denominada de anillos concéntricos o
En el sistema de rings, cada anillo tiene una apertura, conocida como puerta o trampa, por donde pueden entrar las llamadas de las capas inferiores.
De esta forma, las zonas más internas del sistema operativo o núcleo del sistema estarán más protegidas de accesos indeseados desde las capas más externas. Las capas más internas serán, por tanto, más privilegiadas que las externas.
Explicar y graficar la Estructura de Máquina Virtual de un Sistema Operativo
Máquina virtual
Se trata de un tipo de sistemas operativos que presentan un interfaz a cada proceso, mostrando una máquina que parece idéntica a la máquina real subyacente.
Estos sistemas operativos separan dos conceptos que suelen estar unidos en el resto de sistemas:
- La multiprogramación.
- La máquina extendida.
El objetivo de los sistemas operativos de máquina virtual es el de integrar distintos. sistemas operativos dando la sensación de ser varias máquinas diferentes.
El núcleo de estos sistemas operativos se denomina monitor virtual y tiene como misión llevar a cabo la multiprogramación, presentando a los niveles superiores tantas máquinas virtuales como se soliciten. Estas máquinas virtuales no son máquinas extendidas, sino una réplica de la .máquina real, de manera que en cada una de ellas se pueda ejecutar un sistema operativo diferente, que será el que ofrezca la máquina .extendida al usuario.
Explicar la Estructura Cliente-Servidor de un Sistema Operativo
Cliente-servidor
El tipo más reciente de sistemas operativos es el denominado Cliente-servidor, que puede ser ejecutado en la mayoría de las computadoras, ya sean grandes o pequeñas.
Este sistema sirve para todo; por tanto, es de propósito general y se basa en lo mismo que el resto de sistemas operativos convencionales: el núcleo y los procesos, presentando grandes diferencias en cuanto a la forma de distribuir los trabajos entre sus distintas partes. Suele suministrar mecanismos adecuados para la gestión de:
- Procesos.
- Memoria.
- Comunicación entre procesos.
El núcleo tiene como misión establecer la comunicación entre los clientes y los servidores. Los procesos pueden ser tanto servidores como clientes. Por ejemplo, un programa de aplicación normal es un cliente que llama al servidor correspondiente para acceder a un archivo o realizar una operación de entrada/salida sobre un dispositivo concreto. A su vez, un proceso cliente puede actuar como servidor para otro (Figura 3.5).
Cuales son las prestaciones de un Sistema Operativo desde el punto de vista del programador y del sistema. Llamados al Sistema Operativo. Programas del sistema, explicar y graficar
PRESTACIONES DE UN SISTEMA OPERATIVO
La misión de un sistema operativo es la de ayudar a los usuarios en el manejo de la computadora; para ello deberá proporcionar ciertos servicios que se pueden considerar desde dos puntos de vista distintos:
- Punto de vista del programador
- Ejecución de programas: Facilidades para cargar un programa en memoria y ejecutarlo.
- Operaciones de entrada/salida: Facilidades para que un programa pueda tratar un archivo, enviar o recibir datos a un dispositivo, etc.
- Gestión de archivos: Facilidades de uso y organización del sistema de archivos.
- Punto de vista del sistema
- Asignación de recursos: Mecanismos de resolución de conflictos de asignación de recursos cuando varios procesos o usuarios están compitiendo por ellos.
- Contabilidad: Control de tiempos de utilización de recursos por los usuarios para su facturación o simplemente para la obtención de estadísticas de utilización.
- Protección: Defensa contra acciones no deseadas.
Servicios de usuario
El sistema operativo ofrece servicios a los usuarios de dos formas diferentes: Las llamadas al sistema operativo desde un proceso y la ejecución de programas del propio sistema.
Llamadas al sistema operativo
Constituyen la interfaz entre un programa en ejecución y el sistema operativo. Estas llamadas se pueden agrupar de la siguiente forma:
- Gestión de procesos.
- Gestión de operaciones de entrada/salida.
- Gestión del sistema de archivos.
- Protección.
En general, las llamadas al sistema operativo necesita pasar algún tipo de información para la correcta ejecución del proceso a través de algún registro o bloque de parámetros.
Las llamadas al sistema operativo son como las llamadas a un subprograma desde el punto de vista del programa que llama. Tras la llamada, se ejecuta la rutina del sistema operativo que ha sido invocada, tomando los datos de los parámetros correspondientes; a continuación se devuelve el control al proceso que efectuó la llamada, ejecutándose la siguiente instrucción y, en su caso, tomando los datos de vuelta a los parámetros correspondientes.
• Programas del sistema
En los sistemas operativos actuales, además de las funciones básicas del núcleo que pueden ser ejecutadas a través de llamadas al sistema operativo, existe un conjunto de programas del sistema o de utilidad cuya misión es resolver problemas comunes y frecuentes de los usuarios, ofreciéndoles de forma cómoda y sencilla.
Estos programas los podemos agrupar de la siguiente forma:
• Tratamiento de archivos: Crean, copian, borran, renombran, imprimen, visualizan, vuelcan, ordenan, etc. un archivo, facilitando la gestión de los mismos y los directorios.
• Información: Dan cualquier tipo de información relativa al estado del sistema, de la memoria, de los discos, de usuarios, fecha, hora, etc.
• Editores: Son programas que facilitan la edición de archivos de texto o de programas fuente.
• Ejecución: Son programas para la construcción, depuración y carga de programas ejecutables (Linkers, debuggers, etc.).
• Programas de utilidad: Son programas para la gestión de Bases de Datos, compiladores, comunicaciones, etc .
• Intérprete de comandos: Es el más importante de todos los programas del sistema operativo, ya que es el que crea el entorno de trabajo de los usuarios.
¿Qué es un proceso?, Explicar la diferencia entre programa y proceso a través de la analogía entre el mecánico y la computadora
Un proceso es un programa en ejecución junto con el entorno asociado (registros, variables, etc.).
Ya se ha indicado que el corazón de un sistema operativo es el núcleo, un programa de control que reacciona ante cualquier interrupción de eventos externos y que da servicio a los procesos, creándose, terminándose y respondiendo a cualquier petición de servicio por parte de los mismos.
Modelo
Imaginemos un mecánico de automóviles en un taller donde. Se reparan vehículos con averías complejas en las que se hace necesario consultar el manual de reparaciones de cada modelo, que contiene instrucciones para todas las posibles averías. Además, se permiten reparaciones rápidas a las que se les da mayor prioridad que a las mencionadas anteriormente. Existe en el taller un almacén de repuestos de todo tipo y herramientas suficientes para las reparaciones.
Comparando esta situación con una computadora, se pueden establecer las siguientes analogías:
- El mecánico sería el procesador que va a realizar el trabajo.
- El manual de cada reparación sería el programa.
- Las herramientas serían los recursos disponibles.
- Las piezas de recambio serían los datos.
- La actividad de utilizar las herramientas para desmontar las piezas defectuosas sustituyéndolas por otras nuevas siguiendo las instrucciones del manual equivaldría al proceso.
Supongamos que en un determinado momento el mecánico está realizando una reparación compleja (de las que llevan tiempo) y aparece un vehículo que solicita una reparación de las rápidas (ha aparecido una interrupción). El mecánico suspende momentáneamente la reparación compleja anotando en qué situación se queda dicha reparación y qué operación estaba realizando en este momento (guarda el estado del proceso). Asimismo, sustituye el manual que estaba utilizando por el de la reparación rápida que se dispone a realizar (cambio de programa). Comienza la nueva reparación (cambio de proceso), en la que las herramientas no serán las mismas que antes (distintos recursos); las indicaciones del usuario, las piezas de repuesto (datos) y las indicaciones del manual (programa) llevarán a feliz término la reparación para que el mecánico vuelva a continuación a la reparación inicial.
Con este ejemplo se desea resaltar que un proceso es una actividad que se apoya en datos, recursos, un estado en cada momento y un programa.
Que es el bloque de control del proceso
El bloque de control del proceso (PCB)
Un proceso se representa, desde el punto de vista del sistema operativo, por un conjunto de datos donde se incluyen el estado en cada momento, recursos utilizados, registros, etc., denominado Bloque de Control del Proceso (PCB).
Los objetivos que se pretenden cubrir con el bloque de control del proceso son los siguientes:
- Localización de la información sobre. el proceso por parte del sistema operativo.
- Mantener registrados los datos del proceso en caso de tener que suspender temporalmente su ejecución o reanudarla.
En general, la información contenida en el bloque de control es la siguiente:
- Estado del proceso. Información relativa al contenido del contador de programa (Program Counter, PC), estado del procesador en cuanto a prioridad del proceso, modo de ejecución, etc., y por último el estado de los registros internos de la computadora.
- Estadísticas de tiempo y ocupación de recursos para la gestión de la planificación del procesador.
- Ocupación de memoria interna y externa para el intercambio (swapping).
- Recursos en. uso (normalmente unidades de entrada/salida).
- Archivos en uso.
- Privilegios.
Estas informaciones se encuentran en memoria principal o en disco y se accede a ellas en los momentos en que se hace necesaria su actualización o consulta. Los datos relativos al estado del proceso siempre se encuentran en la memoria principal.
De igual forma existe un Bloque de Control del Sistema (SCB), con unos objetivos globales similares al anterior y entre los que se encuentra el enlazado de los bloques de control de los procesos existentes en el sistema (Figura 4.2).
Trataremos de ver a continuación cómo se realiza el cambio de un proceso a otro, para lo cual supondremos que estamos en una computadora con un solo procesador (sólo un proceso puede estar ejecutándose en cada momento), y existen varios procesos activos compitiendo por el acceso al procesador (se está ejecutando un proceso A y el núcleo del sistema operativo decide que debe ejecutarse en un instante dado otro proceso B). Suponemos que los programas de los procesos A y B están ambos en memoria principal.
Las acciones que realiza el sistema operativo para cambiar el proceso A por el B se denominan cambio de proceso, y son las siguientes (Figura 4.3):
• Deja de ejecutar el proceso en curso (A), cediéndole el control al núcleo del sistema operativo, y aparece lo que se denomina un cambio de contexto pasando del modo usuario al modo supervisor. Antes de realizarse el cambio de contexto se salva el estado del proceso A para su posterior vuelta al punto donde fue interrumpido.
• El núcleo estudia si el proceso B está preparado para su ejecución y, si es así, realiza el cambio de contexto correspondiente pasando del modo supervisor al modo usuario.
A continuación repone el estado del proceso B (en caso de haber sido interrumpido con anterioridad) y, por último, pone en ejecución el proceso B.
El cambio de contexto se producirá en caso de ejecución de una instrucción privilegiada, una llamada al sistema operativo o una interrupción, es decir, siempre que se requiera la atención de algún servicio del sistema operativo.
En el cambio de contexto, el núcleo salva el estado del proceso que se estaba ejecutando en su bloque de control y restaura el proceso que va a ejecutarse a partir de los datos almacenados en su bloque de control.
Cuáles son los estados de los procesos. Explicar y graficar los estados de un proceso y sus transiciones
Estado de los procesos
Los bloques de control de los procesos se almacenan en colas, cada una de las cuales representa un estado particular de los procesos, existiendo en cada bloque, entre otras informaciones, tantos campos como colas en las que el proceso se pueda situar, para que a partir de ellos se indique la cola en que se encuentra (Figura 4.4).
Los estados de los procesos son internos del sistema operativo y transparentes al usuario. Para éste, su proceso estará siempre en ejecución independientemente del estado en que se encuentre internamente en el sistema.
Los estados de los procesos se pueden dividir en dos tipos: activos e inactivos.
Estados activos
Son aquellos que compiten con el procesador o están en condiciones de hacerlo. Se dividen en (Figura 4.5):
• Ejecución. Estado en el que se encuentra un proceso cuando tiene el control del procesador. En un sistema monoprocesador este estado sólo lo puede tener un proceso.
• Preparado. Aquellos procesos que están dispuestos para ser ejecutados, pero no están en ejecución por alguna causa (interrupción, haber entrado en cola estando otro proceso en ejecución, etc.).
• Bloqueado. Son los procesos-que-no -pueden ejecutarse -de momento 'Por necesitar algún recurso no disponible (generalmente recursos de entrada/salida).
Estados inactivos
Son aquellos que no pueden competir por el procesador, pero que pueden volver a hacerla por medio de ciertas operaciones. En estos estados se mantiene el bloque de control del proceso aparcado hasta que vuelva a ser activado. Se trata de procesos que no han terminado su trabajo por causas que lo han impedido (por ejemplo, avería en un dispositivo de entrada/salida) y que pueden volver a activarse desde el punto en que se quedaron sin que tengan que volver a ejecutarse desde el principio (se puede pensar en procesos cuya duración es larga). Son de dos tipos (Figura 4.5):
• Suspendido y bloqueado. Es el proceso que fue suspendido en espera de un evento, sin que hayan desaparecido las causas-de su bloqueo.
• Suspendido preparado. Es el proceso que ha sido suspendido, pero no tiene causa para estar bloqueado.
Explicar las transiciones de Estado de los procesos
Transiciones de estado
Todo proceso a lo largo de su existencia puede cambiar de estado varias veces. Cada uno de estos cambios se denomina transición de estado. Estas transiciones son las siguientes (Figura 4.5):
• Comienzo de la ejecución. Todo proceso comienza al ser dada la orden de ejecución del programa insertándose en la cola de preparados. El encolamiento dependerá de la política de gestión de dicha cola.
• Paso a estado de ejecución. Cuando el procesador se encuentre inactivo y en la cola de preparados exista algún proceso en espera de ser ejecutado, se pondrá en ejecución el primero de ellos.
• Paso a estado bloqueado. Un proceso que se encuentre en ejecución y que solicite una operación a un dispositivo externo (unidad de entrada/salida), teniendo que esperar que dicha operación finalice, será pasado de estado de ejecución a estado bloqueado insertándose su PCB en la cola correspondiente de bloqueados. A partir de ese momento el procesador pone en ejecución el siguiente proceso, que será el primero de la cola de preparados.
• Pasó a estar preparado. Este paso puede ser producido por alguna de las siguientes causas:
- Orden de ejecución de un programa, con lo cual, como ya hemos dicho, el proceso pasa a la cola de preparados.
- Si un proceso está en estado bloqueado por causa de una operación de entrada/salida y ésta finaliza, pasará de la cola de bloqueados a la de preparados.
- Si un proceso está en ejecución y aparece una interrupción que fuerza al sistema operativo a ejecutar otro proceso, el primero pasará al estado preparado y su PCB a la cola de preparados.
- - Activación. Un proceso suspendido previamente sin estar bloqueado pasará al estado 'preparado' al ser activado nuevamente.
• Paso a estado suspendido. Si un proceso está bloqueado y el sistema operativo recibe la orden de suspender, su PCB entrará en la cola de procesos suspendidos bloqueados.
• Paso a estado suspendido preparado. Este paso se puede producir bajo tres circunstancias:
- Suspensión de un proceso preparado pasando éste de la cola de procesos preparados a la de suspendidos preparados.
- Suspensión de un proceso en ejecución, con lo cual el proceso pasa a la cola de suspendidos preparados.
- Desbloqueo de un proceso suspendido bloqueado por desaparecer la causa que impedía el ser activado de nuevo.