La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

BIOS ¿ Qué es la BIOS ? La BIOS (Basic Input Output System, Sistema de entrada/salida básico) es una memoria ROM, EPROM o FLASH-Ram la cual contiene las.

Presentaciones similares


Presentación del tema: "BIOS ¿ Qué es la BIOS ? La BIOS (Basic Input Output System, Sistema de entrada/salida básico) es una memoria ROM, EPROM o FLASH-Ram la cual contiene las."— Transcripción de la presentación:

1 BIOS ¿ Qué es la BIOS ? La BIOS (Basic Input Output System, Sistema de entrada/salida básico) es una memoria ROM, EPROM o FLASH-Ram la cual contiene las rutinas de más bajo nivel que hace posible que el ordenador pueda arrancar, controlando el teclado, el disco y la disquetera permite pasar el control al sistema operativo. Además, la BIOS se apoya en otra memoria, la CMOS (llamada así porque suele estar hecha con esta tecnología), que almacena todos los datos propios de la configuración del ordenador, como pueden ser los discos duros que tenemos instalados, número de cabezas, cilindros, número y tipo de disqueteras, la fecha, hora, etc..., así como otros parámetros necesarios para el correcto funcionamiento del ordenador. Esta memoria está alimentada constantemente por una batería, de modo que, una vez apaguemos el ordenador no se pierdan todos esos datos que nuestro ordenador necesita para funcionar. Ahora todas las placas suelen venir con una pila tipo botón, la cual tiene una duración de unos 4 ó 5 años (aunque esto puede ser muy variable), y es muy fácil de reemplazar. Antiguamente, las placas traían una pila corriente soldada en la placa base, lo que dificultaba muchísimo el cambio, además de otros problemas como que la pila tuviera pérdidas y se sulfataran ésta y la placa.

2 Además, la BIOS contiene el programa de configuración, es decir, los menús y pantallas que aparecen cuando accedemos a los parámetros del sistema, pulsando una secuencia de teclas durante el proceso de inicialización de la máquina.

3 EL NÚCLEO

4 El núcleo (kernel) del sistema operativo constituye el nivel más bajo de éste y proporciona un interfase entre el hardware y el resto de niveles del sistema operativo (Figura 1). Su finalidad principal es constituir un entorno adecuado en el que se puedan ejecutar los procesos. Esto implica gestionar los recursos básicos del sistema y proporcionar servicios esenciales para los programas de aplicación y usuarios: · Gestión de recursos básicos: -Gestión de memoria. - Creación de procesos y planificación de los mismos. - Mecanismos para la intercomunicación entre procesos. - Mecanismos básicos de entrada/salida. · Servicios para las aplicaciones y usuarios: - Autentificación de usuarios y control de los accesos a los recursos por parte de los procesos. Gestión de ficheros. El núcleo está constituido directamente sobre el hardware, por lo que es la parte del sistema operativo más dependiente de la máquina y constituye, normalmente, la parte del sistema operativo que obligatoriamente debe de contener código en ensamblador. El resto del sistema puede ser escrito en un lenguaje de más alto nivel, lo que facilita el desarrollo y mantenimiento del mismo. Desde la aparición del sistema operativo UNIX, el lenguaje C suele ser el lenguaje en el que desarrollan los sistemas operativos

5  Requisitos Hardware El núcleo necesita unos requisitos mínimos de hardware para poder llevar a cabo sus funciones. Estos requisitos incluyen: · Mecanismo de interrupciones. · Protección de memoria. · Repertorio de instrucciones reservadas. · Reloj de tiempo real. Mecanismo de Interrupciones El hardware ha de suministrar un mecanismo por el que se pueda interrumpir el funcionamiento normal de la CPU. Las interrupciones son necesarias, fundamentalmente, porque permiten mejorar el aprovechamiento de la CPU mediante la aplicación de diversas técnicas (multiprogramación, tiempo compartido, etc.). Las principales fuentes de interrupciones son: · Programas: como consecuencia de la ejecución de una instrucción, se producen algunas de las siguientes situaciones: overflow, divisiones por cero, referencias a direcciones de memoria que no pertenecen al espacio de direcciones del proceso, etc. · Reloj del sistema: cada computador tiene un reloj que interrumpe a la CPU a intervalos regulares. De esta forma es posible, por ejemplo, utilizar políticas de planificación apropiativa (preemptive scheduling). Dispositivos de entrada/salida: los controladores de dispositivo generan interrupciones cuando se completa una operación o cuando se produce algún error. Fallos del hardware: errores de paridad de memoria, caída de la fuente de alimentación, etc.

6  El mecanismo de interrupciones funciona, generalmente, del siguiente modo. Cada tipo de dispositivo de entrada/salida tiene asociado una dirección de memoria conocida como vector de interrupciones, que contiene la dirección de una rutina que se ejecutará en el caso de que se produzca la interrupción correspondiente. Cuando un dispositivo envía una señal de interrupción al procesador, éste termina la ejecución de la instrucción en curso, determina la fuente de la interrupción, localiza su vector de interrupciones y ejecuta la rutina de tratamiento de la interrupción. Al terminar esta rutina el núcleo suele aplicar la política de planificación de procesos, lo que puede originar que el proceso que continué con su ejecución o bien que se ejecute otro diferente. Cuando un proceso es interrumpido, el núcleo ha de guardar toda la información necesaria para poder reanudar posteriormente su ejecución. Esta información incluye, como mínimo, el contador de programa y el resto de registros de la CPU. Es posible que durante la ejecución de una rutina de tratamiento de una interrupción se produzca otra. Existen dos alternativas para tratar este tipo de situaciones. La primera consiste en desactivar las interrupciones mientras se está procesando una rutina de tratamiento de interrupciones. Si se producen nuevas interrupciones en esos periodos, normalmente se dejan pendientes y son tratadas cuando se vuelven a rehabilitar. La principal ventaja de este esquema es su simplicidad, ya que las interrupciones se atienden en orden estrictamente secuencial. El inconveniente es que no permite establecer prioridades entre interrupciones, lo que es necesario en determinadas situaciones. La segunda alternativa es, precisamente, el establecimiento de prioridades y permitir la interrupción de rutinas de tratamiento cuando se generan otras de mayor prioridad.

7 Núcleos Monolíticos y Micronúcleos (Microkernels)
Las funciones concretas del núcleo van a depender en gran medida de la arquitectura del sistema operativo. Tradicionalmente, los sistemas operativos poseen un núcleo monolítico que suministra la mayoría de los servicios directamente, a través de las llamadas al sistema. El término monolítico implica, no tanto que el núcleo del sistema operativo sea de gran tamaño, sino que esté codificado de forma no modular. Como consecuencia, la alteración de cualquier componente del mismo para modificar o añadir nuevos servicios es difícil. El típico ejemplo de sistema operativo con núcleo monolítico es UNIX. En la actualidad, se tiende hacia arquitecturas basadas en el concepto de micronúcleo (microkernel), que consiste en un núcleo que proporciona, básicamente, un conjunto de servicios esenciales. El resto de los servicios se implementan como procesos servidores a nivel de usuario. Estos servidores presentan una interfaz bien definido y son accedidos por el resto de los procesos mediante paso de mensajes. La filosofía de los sistemas operativos basados en micronúcleo es mantener el núcleo lo más pequeño posible. Las ventajas de este esquema son que el sistema operativo es muy modular y que es fácil implementar, instalar y depurar nuevos servicios, ya que añadir o modificar un servicio no requiere parar el sistema y arrancarlo de nuevo. Como consecuencia, estos sistemas son muy flexibles, hasta el punto de que los usuarios que no estén satisfechos con un servicio aportado por el sistema pueden crearse el suyo propio.

8 Arquitectura de un Micronúcleo
La principal ventaja de los núcleos monolíticos reside en la eficiencia, ya que todas las funciones se llevan a cabo dentro del espacio de direcciones del núcleo. Por el contrario, una llamada al sistema en un micronúcleo suele consistir en el paso de un mensaje entre un proceso cliente y un proceso servidor, que se ejecutan en espacios de direcciones diferentes (y, posiblemente, en máquinas diferentes). Arquitectura de un Micronúcleo No existe una definición que establezca las funciones que debe de realizar un todos incluyen la gestión de los recursos básicos (procesos, memoria, entrada/salida básica e intercomunicación entre procesos). Los micronúcleos se diseñan para ser portables entre máquinas de arquitecturas diferentes, por lo que suelen estar codificados por lenguajes de alto nivel, como C y C++, y están estructurados en capas, de forma que los componentes dependientes del hardware se reducen a un mínimo nivel inferior. La arquitectura de un micronúcleo se muestra a continuación: Los componentes principales son los siguientes:

9

10 * Gestor de Procesos: Gestiona todas las operaciones relativas a procesos, como creación, eliminación y planificación. Los servicios que ofrece suelen estar mejorados o aumentados mediante aplicaciones que se sitúan en un nivel superior, tales como emuladores de sistemas operativos. * Gestor de hebras: Crea, planifica y sincroniza hebras. Una hebra es una actividad planificable que se asigna a un proceso. La política de planificación se puede definir en un módulo a nivel de usuario. * Gestor de comunicaciones: Permite la comunicación entre las hebras de un procesos. En algunos casos, el núcleo incluye soporte para comunicaciones entre hebras de procesos remotos. En otros, el núcleo no es consciente de la presencia de otras máquinas, por lo que suele existir un determinado servicio en un nivel superior para comunicaciones externas. * Gestor de memoria: Gestiona la memoria del sistema local. En algunos casos, el espacio de direcciones virtual está repartido entre varias máquinas, por lo que pueden existir gestores externos de memoria virtual. * Supervisor: Es la parte que está justo por encima del hardware.

11 Aunque la implementación de UNIX varía de versión en versión y de máquina a máquina, existen conceptos e ideas que son aplicables a todas. El estudio de la implementación de UNIX es útil por dos motivos. En primer lugar, muchas ideas empleadas en UNIX son usadas por sistemas operativos más recientes, como OS/2 o Windows NT. En segundo lugar, el conocimiento de la implementación permite sacar el máximo partido al sistema operativo a la hora de programar aplicaciones

12 El Núcleo (Kernel) de UNIX UNIX se basa en dos conceptos básicos:
El kernel (núcleo) de UNIX es la parte del sistema que se carga desde disco a memoria cuando el computador es encendido y permanece siempre en memoria hasta que el sistema es apagado o ocurre algún error grave. Su mayor parte está escrita en C, aunque algunos componentes del mismo están escritos en ensamblador por motivos de eficiencia. UNIX se basa en dos conceptos básicos: ficheros y procesos. Por este motivo, el kernel está diseñado para facilitar servicios relacionados con estos dos elementos (Figura abajo). Los procesos son entidades "activas", lo que significa que realizan acciones por sí mismos, mientras que los ficheros son meros contenedores de información que son usados por los procesos. El kernel es accedido por los programas de usuario mediante un interfase conocido como llamadas al sistema, que permiten a los programas de usuario gestionar procesos, ficheros y otros recursos. Toda llamada al sistema tiene asignado un identificador numérico. Los procesos realizan una llamada al sistema colocando los argumentos de la misma en registros o en la pila (stack) e invocando una instrucción especial (trap) que pasa de modo usuario a modo kernel. El identificador de la llamada al sistema se usa como índice para acceder a una tabla de llamadas al sistema que existe en el kernel. Esta tabla es un array de punteros a funciones que implementan cada llamada al sistema. Estas funciones acceden a estructuras de datos residentes en el kernel. Debido a que no existe una instrucción trap en C, se suministra una biblioteca de funciones escritas en ensamblador pero que pueden ser invocadas desde programas escritos en C.

13 Diagrama de bloques del kernel

14 El kernel tiene dos componentes principales: el subsistema de control de ficheros y el subsistema de control de procesos. El subsistema de control de ficheros realiza tareas relacionadas con la gestión de ficheros, como la asignación de espacio en disco, administración del espacio libre, control del acceso a los ficheros e intercambio de información entre ficheros y programas de usuario. Los procesos interactúan con el subsistema de ficheros a través de un conjunto de llamadas al sistema específicas, como open, close, read, write, stat, chown, chmod, ... La comunicación entre el subsistema de ficheros y los dispositivos físicos se realiza mediante los manejadores (drivers) de dispositivo. Se distinguen dos tipos de dispositivos según la forma en que son accedidos: * dispositivos de bloques (block devices). * dispositivos de caracteres (raw devices).

15 Procesador de comandos
El procesador de comandos, es el pequeño programa que se va a encargar de ejecutar o lanzar los comandos o programas. Los comandos podemos dividirlos en comando internos y comando externos, los comando internos son aquellos que se encuentran incluidos dentro del procesador de comandos, y al estarse ejecutando este, entonces ya se encuentran en la memoria RAM, en consecuencia se ejecutan mucho mas rapido. Los comando externos son aquellos pequeños programas que necesitan ser cargados a memoria para poder ejecutarlos, esto quiere decir que se encuentran almacenados en un dispositivo de almacenamiento secundario o auxiliar, como pueden ser discos duros o discos flexibles. Un ejemplo de un procesador de comandos en MS-DOS es el COMMAND.COM y como ejemplos de los comando internos de este tenemos: CLS, DIR, COPY, etc., comandos externos: FDISK, FORMAT, CHKDSK, etc. En UNIX a los procesadores de comandos se les llama shell y dentro de estos se encuentran: BASH, CSH, KORN, KSH, ZSH, etc., ejemplos de un comandos internos CLEAR, CAL, DATE, etc., de externos: FSCK, FDISK, CAT, etc.

16 Tipos de interrupciones
Las interrupciones por software se comportan de igual manera que las de hardware pero en lugar de ser ejecutadas como consecuencia de una señal física, lo hacen con una instrucción. Hay en total 256 interrupciones, de la 0 a la 7 (excepto la 5) son generadas directamente por el procesador. Las 8 a 0Fh son interrupciones por hardware primitivas de las PC. Desde la AT en adelante, se incorporó un segundo controlador de interrupciones que funciona en cascada con el primero a través de la interrupción 2 (de ahí que en la tabla siguiente se la denomine múltiplex). Las 8 interrupciones por hardware adicionales de las AT se ubican a partir del vector 70h. 

17 D H Gen Descripción ============================================================= 0 0 CPU División por cero 4 4 CPU Desbordamiento Aritmético 5 BIOS Imprimir Pantalla 6 CPU Código de operación inválido 7 CPU Coprocesador no disponible 8 8 HARD Temporizador del sistema (18,2 ticks por seg) 9 9 HARD Teclado

18 En cuanto a las interrupciones por software, están divididas entre las llamadas por el BIOS (desde la 10h a la 1Fh) y las llamadas por el DOS (desde la 20h hasta la 3Fh). Esto es sólo la versión oficial, ya que en realidad las interrupciones entre BIOS y DOS se extienden hasta la 7Fh. Cómo funciona una interrupción A partir del offset 0 del segmento 0 hay una tabla de 256 vectores de interrupción, cada uno de 4 bytes de largo (lo que significa que la tabla tiene una longitud de 1KB). Cada vector está compuesto por dos partes: offset (almacenado en la dirección más baja) y segmento (almacenado en la dirección más alta). Cuando se llama a una interrupción (no importa si es por hardware o por software), el procesador ejecuta las siguientes operaciones: PUSHF  (guarda las banderas en el stack) CTF/DI (borra la bandera de Trap y deshabilita interrupciones) CALL FAR [4 * INT#]  (salta a nueva CS:IP, almacenando dirección de retorno en stack)

19 La expresión 4 * INT# es la forma de calcular la dirección de inicio del vector de interrupción a utilizar en el salto. Por ejemplo, el vector de la INT21h estará en la dirección 84h  Al efectuarse el salto, la palabra almacenada en la dirección más baja del vector sustituye al contenido del registro IP (que previamente fue salvado en el stack) y la palabra almacenada en la dirección más alta sustituye al contenido del registro CS (también salvado en el stack). Por ejemplo: La instrucción INT 21h es la usada para efectuar llamadas a las funciones del DOS. Supongamos que en la posición de memoria 0000:0084 está almacenada la palabra 1A40h y en la dirección 0000:0086 está almacenada la palabra 208Ch. La próxima instrucción que se ejecute es la que está en la posición 20C8:1A40 (nuevo CS:IP). El final de una rutina de interrupción debe terminarse con la instrucción IRET, que recupera del stack los valores de CS, IP y Flags. Notemos que un llamado a interrupción implica el cambio de estado automático de la bandera de habilitación de interrupciones. En pocas palabras, esto significa que al producirse una interrupción, esta bandera inhabilita futuras interrupciones. Como la instrucción IRET restablece el registro de flags al estado anterior que tenia antes de producirse la interrupción, las próximas interrupciones se habilitan en el mismo momento en que se produce el retorno desde la rutina de servicio.

20 Paso de parámetros desde el programa a la ISR
Cuando las interrupciones son llamadas por software mediante la instrucción INT xx, por lo general se le deben pasar parámetros a la rutina de servicio de interrupción (ISR). Estos parámetros definen la tarea que debe cumplir la ISR y son pasados en los registros del procesador, lo que es una opción muy veloz. Un ejemplo casi extremo, en donde muchos de los registros del 8086 son utilizados son algunos servicios cumplidos por la INT 13h (disco). Para tomar sólo un caso, en una operación de escritura de un sector, los parámetros se pasan de la siguiente manera: Registro Asignación AH 03 (servicio de escritura de sectores) AL cantidad de sectores a escribir CH 8 bits más bajos del número de cilindro CL (bits 0-5)número de sector CL (bits 6 y 7)2 bits más altos del número de cilindro DH número de cabeza DL número de unidad de disco (hard: mayor a 80h) BX offset del buffer de datosESsegmento del buffer de datos Si bien no está escrito en ningún lado, las interrupciones utilizan el registro AH para identificar el tipo de operación que deben ejecutar. Cuando una interrupción devuelve códigos de error siempre vienen en el registro AL, AX y/o en la bandera de Carry.

21 La interrupción más famosa
Sin lugar a dudas se trata de la INT 21h (funciones del DOS). El número de función se pasa en el registro AH Función Descripción 00h Terminar un programa 01h Entrada de caracteres con salida 02h Salida de un carácter 03h Recepción de un caracter por el puerto serial 04h Envío de un caracter por el puerto serial 05h Salida por puerto paralelo

22 INTERRUPCIONES HARDWARE
Una interrupción se genera cuando se quiere que la CPU deje de ejecutar el proceso en curso y ejecute una función específica de quien produce la interrupción. Cuando se ejecuta esta función específica decimos que la CPU está atendiendo la interrupción. Podemos realizar una clasificación de las interrupciones, atendiendo a la fuente que las produce. Interrupción software, se produce cuando un usuario solicita una llamada del sistema. Interrupciones hardware, son causadas cuando un dispositivo hardware requiere la atención de la CPU para que se ejecute su manejador. Excepciones, son interrupciones causadas por la propia CPU, cuando ocurre algo no deseado, por ejemplo una división por cero. Las interrupciones hardware son producidas por varias fuentes, por ejemplo del teclado, cada vez que se presiona una tecla se genera una interrupción. Otras interrupciones son originadas por el reloj, la impresora, el puerto serie, el floppy, etcétera. Una interrupción de tipo hardware es una señal producida por un dispositivo físico del ordenador. Esta señal informa a la CPU que el dispositivo requiere su atención. La CPU parará el proceso que está ejecutando para atender la interrupción. Cuando la interrupción termina, la CPU reanuda la ejecución en donde fue interrumpida, pudiendo ejecutar el proceso parado originalmente o bien otro proceso.

23 Existe un hardware especifico, para que los dispositivos puedan interrumpir lo que está haciendo la CPU. La propia CPU, tiene entradas específicas para ser interrumpida INT, cuando se activa esta entrada INT, la CPU para lo que está haciendo y activa la salida para reconocer la interrupción INTA, y comienza a ejecutar el código especial que maneja la interrupción. Algunas CPU´s disponen de un conjunto especial de registros, que solo son utilizados en el modo de ejecución de interrupciones, lo que facilita el trabajo de tratar las interrupciones. La placa base del computador utiliza un controlador para decodificar las interrupciones que no son mas que señales eléctricas producidas por los dispositivos, coloca en el bus de datos información de que dispositivo interrumpió y activa la entrada INTde interrupción a la CPU. Este chip controlador protege a la CPU y la aísla de los dispositivos que interrumpen, además de proporcionar flexibilidad al diseño del sistema. El controlador de interrupciones tiene un registro de estado para permitir o inhibir las interrupciones en el sistema.


Descargar ppt "BIOS ¿ Qué es la BIOS ? La BIOS (Basic Input Output System, Sistema de entrada/salida básico) es una memoria ROM, EPROM o FLASH-Ram la cual contiene las."

Presentaciones similares


Anuncios Google