El núcleo del sistema operativo

Slides:



Advertisements
Presentaciones similares
TEMA 1 Introducción a la Programación Concurrente
Advertisements

UNIX COMP 240.
Sistema operativo Componentes de un sistema operativo
Introducción al tiempo real en sistemas empotrados
I.T.E.S.R.C. Romina Tamez Andrea Martínez Ma. De Lourdes Solís
EQUIPO ·# 3 SISTEMAS OPERATIVOS
Sistemas en estratos. Descripción: se organiza en una jerarquía de estratos, estando construido cada uno de ellos sobre el otro que tiene menor jerarquía.
Modelo de procesos de dos estados
Estructuras en Sistemas Operativos
INSTALACIÓN Y MANTENIMIENTO DE SISTEMAS OPERATIVOS
SISTEMAS OPERATIVOS UNIDAD 1..
UTFSM - Sistemas Operativos
Sebastián Sánchez Prieto
JULIO BERNA. Los procesos de usuario emiten peticiones de entrada/salida al sistema operativo. Las peticiones se procesan de forma estructurada en las.
Multiprogramación Procesos Cecilia Hernández
Introducción a los SSOO Sebastián Sánchez Prieto.
HILOS Y COMUNICACIÓN ENTRE PROCESOS
Sebastián Sánchez Prieto
Unidad III Administración de procesos
Hilos - Lightweight process - Procesos ligeros
Introducción a la Programación. Lenguaje de Máquina.
Estructura del sistema operativo
Soporte HW para Administración de Memoria Cecilia Hernández
ICC243 Sistemas Operativos P03: Introducción: Conceptos Prof. Jonathan Makuc.
Teoría de Sistemas Operativos
Hebras Cecilia Hernández. Qué es un proceso? Consiste Espacio de direccionamiento Código a ejecutar Datos estáticos y dinámicos Pila o stack CPU: PC,
Arquitectura NFS El servidor NFS exporta uno o más directorios
Concepto de proceso Sebastián Sánchez Prieto. Procesos 2  S2P, OGP & IGT Definición de proceso Un proceso es un programa en ejecución Componentes:
Overview de Sistemas Operativos
Introducción a los Sistemas Operativos
Introducción al tiempo real en sistemas empotrados
Estructuras en Sistemas Operativos DAISY KATERINE RODRÍGUEZ.
1 Descripción y control de procesos Capítulo 3. 2 Requerimientos de un SO relacionados con procesos Ejecutar concurrentemente múltiples procesos para.
Teoría de Sistemas Operativos Procesos Departamento de Electrónica 2º Semestre, 2003 Gabriel Astudillo Muñoz
E/S Avanzada E/S Avanzada Programación de Sistemas.
COMPONENTES DEL SISTEMA OPERATIVO.
Introducción a los Sistemas Operativos
SISTEMAS OPERATIVOS 1.4 CLASIFICACIÓN DE LOS S.O
Introducción a los SOs.
Tema 8: Introducción a los SOs. Tema 8: 2 Silberschatz, Galvin and Gagne ©2005 Fundamentos de los Computadores (ITT, Sist. Electr.), Introducción.
Integrante: Yohandry Cueto Carnet: # Contenido Kernel Linux Limitaciones del Kernel Linux Kernel Mach Que es Hurd Arquitectura Ventajas Distribuciones.
CONCEPTOS FUNDAMENTALES DEL NIVEL DEL SISTEMA OPERATIVO
W w w. i n a c a p. c l FUNDAMENTOS DE SISTEMAS OPERATIVOS LUIS ALEJANDRO PACHECO TORO.
Sistemas Distribuidos
La arquitectura de Linux Linux no es un bloque monolítico Linux no es un bloque monolítico Varios componentes trabajan en conjunto, diseñados por personas.
Estructura de los Sistemas Operativos
 Qué opinan de un Sistema Operativo (S.O.)?  Qué esperan de un S.O.?  Cuál es el S.O. de su preferencia?  Qué los decepciona de su S.O?  Cómo y por.
Clasificación y estructura. Alejandra Rivero Esteban
INTRODUCCION A SISTEMAS OPERATIVOS
ARQUITECTURA DE SISTEMAS OPERATIVOS.
CARACTERÍSTICAS Es un lenguaje de programación estructurado de propósito general. Está estrechamente asociado al sistema operativo UNIX, ya que el propio.
Unidad 2 – Gestión de Procesos
SISTEMAS OPERATIVOS.
UTFSM - Sistemas Operativos
Responsabilidades:  IPC (Comunicación entre procesos)  Mensajes  Proxies  Señales  La comunicación de la red a bajo nivel.  Planificador de procesos.
Teoría de Sistemas Operativos Estructura de SO Departamento de Electrónica 2º Semestre, 2003 Gabriel Astudillo Muñoz
María Camila Restrepo C. Mantener la Operatividad del sistema
Programación de Clientes Especialidad en Base de Datos.
Sistemas Operativos I Introducción
Elementos y tipos de sistemas operativos
Sistemas Operativos SENA – CEET, Distrito Capital ADSI
Estructuras en Sistemas Operativos DAISY KATERINE RODRÍGUEZ.
ELEMENTO DE COMPETENCIA 3
También es conocido como proceso ligero. Es una entidad básica de utilización de CPU y esta formado por un contador de programa, algunos registros y una.
Desarrollador Profesional de Juegos Programación III Unidad II Hilos de ejecución Threads.
Lenguaje ensamblador Conceptos introductorios. Formatos de Instrucción. Modos de Direccionamiento. Conjunto de instrucciones básico. Introducción al Lenguaje.
Estructura del sistema operativo
SISTEMAS ELECTRÓNICOS 3ºGIERM1 1. Introducción 2. Tipos de datos 3. Estructuras típicas de programación 4. Manejo de bits Tema 7. Programación de microcontroladores.
El núcleo del sistema operativo
El núcleo del sistema operativo
Transcripción de la presentación:

El núcleo del sistema operativo Sebastián Sánchez Prieto

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  1999-2003 S2P, OGP & IGT

Características generales Es la parte más dependiente del HW de todo el sistema operativo Parte en ensamblador Algunas veces con dispositivos cableados Servicios a capas superiores NÚCLEO Decisiones de diseño Objetivos del sistema Dispositivos HW  1999-2003 S2P, OGP & IGT

Funciones (básicas) 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 Mecanismos básicos de gestión de memoria Carga inicial y activación de la configuración del sistema  1999-2003 S2P, OGP & IGT

Diagrama de estados (básico) Ejecución Desalojar Dormir Despachar Espera Listo Despertar  1999-2003 S2P, OGP & IGT

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) Se pueden considerar también las llamadas a procedimientos remotos o RPC Las interrupciones HW se transforman en mensajes a los niveles superiores  1999-2003 S2P, OGP & IGT

Ejemplo -kernel L4 Proporciona: Espacio de direcciones (address space) Hilos (threads) Comunicación entre procesos (IPC) Manejo de interrupciones Manejo de identificadores de tareas, hilos y canales de comunicación Véase: On -Kernel Construction de Jochen Liedtke. 15th ACM Symposium on Operating Systems Principles (SOSP)  1999-2003 S2P, OGP & IGT

Ejemplo: Linux Proporciona: Facilidades básicas Gestión de memoria 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  1999-2003 S2P, OGP & IGT

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.)  1999-2003 S2P, OGP & IGT

Llamadas al sistema Son el mecanismo controlado de acceso por 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. Modo usuario Modo núcleo switch N { case 0: case 1: … case N: } ... syscall N  1999-2003 S2P, OGP & IGT

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  1999-2003 S2P, OGP & IGT

Ejemplo de llamadas Manipulación de archivos Archivo Archivo Interfaz de usuario Interfaz del sistema  1999-2003 S2P, OGP & IGT

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);  1999-2003 S2P, OGP & IGT

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  1999-2003 S2P, OGP & IGT

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);  1999-2003 S2P, OGP & IGT

Implementación de las llamadas Depende de la arquitectura del ordenador IBM 360: instrucción SVC MIPS: instrucción syscall i386: int # Paso de parámetros: En registros internos del procesador En zona de memoria cuya dirección se pasa en registros En la pila  1999-2003 S2P, OGP & IGT

Caso de Linux i386 include/asm-i386/unistd.h #define __NR_exit 1 #define __NR_fork 2 #define __NR_read 3 #define __NR_write 4 #define __NR_open 5 #define __NR_close 6 #define __NR_waitpid 7 #define __NR_creat 8 #define __NR_link 9 ···  1999-2003 S2P, OGP & IGT

Caso de Linux i386 include/asm-i386/unistd.h #define _syscall1(type,name,type1,arg1) \ type name(type1 arg1) \ { \ long __res; \ __asm__ volatile ("int $0x80" \ : "=a" (__res) \ : "" (__NR_##name),"b"((long)(arg1))); \ __syscall_return(type,__res); \ }  1999-2003 S2P, OGP & IGT

Caso de Linux mips include/asm-mips/unistd.h #define _syscall1(type,name,atype,a) \ type name(atype a) \ { \ register long __res __asm__ ("$2"); \ register long __err __asm__ ("$7"); \ __asm__ volatile ("move\t$4,%3\n\t" \ "li\t$2,%2\n\t" \ "syscall" \ : "=r" (__res), "=r" (__err) \ : "i" (__NR_##name),"r" ((long)(a)) \ : "$4","$8","$9","$10","$11","$12","$13","$14","$15","$24"); \ if (__err == 0) \ return (type) __res; \ errno = __res; \ return -1; \ }  1999-2003 S2P, OGP & IGT

Caso de Linux m68k include/asm-m68k/unistd.h #define _syscall1(type,name,atype,a) \ type name(atype a) \ { \ register long __res __asm__ ("%d0") = __NR_##name; \ register long __a __asm__ ("%d1") = (long)(a); \ __asm__ __volatile__ ("trap #0" \ : "=d" (__res) \ : "" (__res), "d" (__a) \ : "%d0"); \ __syscall_return(type,__res); \ }  1999-2003 S2P, OGP & IGT