1 / 17

El núcleo del sistema operativo

El núcleo del sistema operativo. Rina Arauz. Introducción. Objetivo: presentar la estructura interna y funciones del núcleo de un sistema operativo Corresponde al primer nivel jerárquico Suele permanecer en el almacenamiento primario porque su código se ejecuta muy frecuentemente.

bly
Télécharger la présentation

El núcleo del sistema operativo

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. El núcleo del sistema operativo Rina Arauz

  2. Introducción • Objetivo: presentar la estructura interna y funciones del núcleo de un sistema operativo • Corresponde al primer nivel jerárquico • Suele permanecer en el almacenamiento primario porque su código se ejecuta muy frecuentemente Otros niveles Núcleo HW

  3. Es la parte más dependiente del HW de todo el sistema operativo • Proporcionar el entorno adecuado para la existencia de procesos • Manejo de interrupciones. Se transforman generalmente en mensajes para los siguientes niveles • Conmutación del procesador entre hilos o procesos (soporte al diagrama de estados) • Mecanismos básicos de comunicación entre hilos y procesos • Carga inicial y activación de la configuración del sistema

  4. Mecanismo de interrupciones • El hardware salva el contador de programa • Se carga un nuevo contador de programa • Se salvan los registros • Se cambia el valor del puntero de pila • Se conmuta el proceso que estaba bloqueado al estado de listo • El planificador elige el siguiente proceso • Se cede el control a un programa ensamblador que arranca proceso elegido

  5. Niveles de interrupción • Mecanismo empleado para determinar en qué orden se atienden las interrupciones • Puede ser proporcionado por el hardware o por el software • Típicamente existen 32 niveles de nivel de prioridad de interrupción (NPI) • En UNIX se les suele conocer como Interrupt Priority Level o IPL • En W2K se les conoce como Interrupt Request Level o IRQL

  6. Diagrama de manejo de interrupciones Interrupción ¿Nuevo NPI > actual NPI? No Guardar interrupción Sí Crear un nuevo contexto Guardar el CP y lo flags NPI = nuevo NPI Llamada al manejador Bloquear Manejador de interrupción Sí ¿Hay int. pendientes? Desbloquear No Retornar

  7. Niveles de interrupción en W2K 31 Alta Fallo de alimentación IPI Reloj Perfiles Interrupciones HW Dispositivo n ... Dispositivo 1 DPC/Dispatch Interrupciones SW APC Nivel de ejecución ordinario 0 Base

  8. Diagrama de estados (básico) Ejecución Desalojar Dormir Despachar Espera Listo Despertar

  9. Comunicación entre procesos • Para comunicación intramáquina se emplea memoria compartida con primitivas de sincronización (P y V) • Para una comunicación más general se utilizan los mensajes: • Síncronos o bloqueantes (i. e. L4) • Asíncronos o no bloqueantes (i. e. Mach) • Las interrupciones HW se transforman en mensajes a los niveles superiores

  10. Ejemplo: Linux • Proporciona: • Facilidades básicas • Manejo de interrupciones • Manejo del reloj y temporizador • Manejo del estado de los procesos • Planificación de procesos • Manejo de señales • Gestión de memoria • Memoria virtual • Protección • Memoria compartida • Carga dinámica • Proyección de archivos en memoria

  11. Linux: continuación • Sistema de archivos • Archivos, directorios • Bloqueo de archivos • Mecanismos de journaling • VFS • Manejadores de dispositivo (drivers) • Modo carácter • Modo bloque • Comunicación entre procesos • Señales • Tuberías • Colas de mensajes • Semáforos • Memoria compartida • Sockets (TCP/IP) • Subsistema de red • Pilas de protocolos (IPv4, IPv6, IPX, etc.)

  12. Llamadas al sistema • Son el mecanismo controlado de accesopor parte de los procesos a los recursos del S.O. • Método: a través de una instrucción máquina específica • Al ejecutarse esta instrucción toma el control el S.O.(MP) Modo núcleo Modo usuario switch N { case 0: case 1: … case N: } ... syscall N ...

  13. Llamadas al sistema • Tanto su número como su tipo depende del sistema operativo • Amoeba: sólo una llamada al sistema (RPC) • WNT: ni se sabe (su interfaz no es pública) • Tipos de llamada • Comunicación y sincronización de procesos • Ejecución de programas • Manejo de operaciones de E/S • Manipulación del sistema de archivos • Detección y control de errores en tiempo de ejecución • Comunicaciones en red • Funciones de tiempo • Manipulación de la interfaz gráfica

  14. Ejemplo de llamadas • Manipulación de archivos Archivo Archivo Interfaz de usuario Interfaz del sistema

  15. Operaciones (archivos) • int open (const char *pathname, int flags, mode_t mode); • int close (int fd) • int creat (const char *pathname, mode_t mode) • int unlink (const char *pathname); • ssize_t read (int fd, void *buf, size_t count); • ssize_t write (int fd, const void *buf, size_t count); • off_t lseek (int fildes, off_t offset, int whence); • int rename (const char *oldpath, const char *newpath);

  16. Ejemplo: open() • Buscar el archivo en el directorio • Comprobar que el proceso que hace la llamada tiene los privilegios necesarios • Comprobar si la operación es coherente • Identificar el dispositivo y obtener la dirección física • Conseguir espacio si fuera necesario • Crear el descriptor de archivo • Devolver un código al programa que lo ha llamado • En caso de que se produzca un error, el código de retorno de open() es –1 y errno contiene el número de error

  17. Operaciones (procesos y tiempo) • pid_t fork (void); • int execve (const char *file, char *const argv[ ], char *const envp[ ]); • void exit (int status); • pid_t getpid (void); • pid_t wait (int *status); • int nanosleep (const struct timespec *req, struct timespec *rem); • int gettimeofday (struct timeval *tv, struct timezone *tz); • int getitimer (int which, struct itimerval *value); • int setitimer (int which, const struct itimerval *value, struct itimerval *ovalue);

More Related