scieee AI-readable full text Open interactive document viewer

Apuntes de Sistemas Operativos II

Ros, Salvador; José Manuel, Síaz

Abstract

Manual de la asignautra de sistemas operativos II en castellano Si requiere una copia pedirla a los autores, no se permite su distribución para fines comerciales ni su modificación. Solo su uso para fines educativos.

Full text

U.N.E.D Ingeniería Técnica en Informática de Sistemas SISTEMAS OPERATIVOS II APUNTES 3ª Edición Salvador Ros Muñoz Jose Manuel Díaz Martínez Ejecutándose Zombi Parado Preparado Para ejecución Suspendido Terminación Señal Señal Crear Entrada / Salida Fin Entrada / Salida Planificador Planificador TEMARIO NUEVOS APUNTES SISTEMAS OPERATIVOS -II 1. Conceptos básicos de la arquitectura UNIX. 2. Introducción a los procesos en sistemas UNIX. 3. Control de procesos en sistemas UNIX. 4. Introducción a los procesos en LINUX. 5. Las señales en sistemas UNIX y LINUX. 6. Mecanismos IPC. 7. Gestión de memoria en UNIX. 8. Sistemas de archivos de UNIX. 9. Sistemas de archivos de LINUX. 10. Administración de sistemas LINUX. Apéndice A: Introducción al lenguaje de programación C. TEMA 0 UN MOMENTO DE REFLEXIÓN Creo firmemente que cada vez nuestra tipo de sociedad nos lleva a olvidar a nuestros semejantes mas desfavorecidos o con problemas. La universidad debe ser un foro de conocimientos, es verdad, pero también de humanidad. Analizando cómo en un texto sobre sistemas operativos se podría aportar algo en este sentido, hace un par de años, se publicaron estos apuntes de forma gratuita, hoy la segunda edición está a vuestra disposición y en ella hemos colaborado más profesores. Nos gustaría que antes de empezar vuestro estudio leyerais estas líneas, tranquilos, sin prisas porque creo que merecen un MOMENTO DE REFLEXIÓN. Todos sabéis el coste real de venta de un libro (36 a 44 euros), y lo que va a suponeros editar éste desde formato electrónico, (prácticamente el papel o las fotocopias). Es por ello que nos gustaría que estos apuntes sirvieran para un objetivo más comprometido con las personas y solidario y dedicarais parte de lo que os vais a ahorrar a una causa justa. Sabéis que existen miles de ONG’s y causas justas que necesitan de nuestra solidaridad para seguir realizando su labor y subsistir y también entiendo que cada uno de vosotros tendrá una especial sensibilización hacia alguna de ella, yo también. Pero si no es así me voy a permitir hablaros de una causa que conozco: Se trata de la Federación Menudos Corazones. Esta federación sin ánimo de lucro intenta ayudar a los niños con cardiopatías congénitas y a sus familias. Para aquellos que no sepan lo qué es y lo que supone, sólo tenéis que imaginaros un recién nacido operado de corazón a los pocos días de nacer y que le esperan varias operaciones más a lo largo de su vida. Estas operaciones, en España, sólo se pueden realizar en determinados centros médicos y la estancia media en el hospital es de un mes. Un mes que el niño permanece hospitalizado y las familias, de diversas nacionalidades, desplazadas en una ciudad como Madrid sin poder trabajar y angustiadas por la salud de su hijo. Si os parece esta una buena causa contactar con ellos en su página Web www.menudoscorazones.org, si no elegid vosotros mismos vuestra propia causa solidaria o simplemente disfrutad de vuestros apuntes. Tu ayuda es importante Aprovecho estas líneas para invitar a otros profesores a sumarse a esta iniciativa con alguno de sus apuntes o cualquier otro material que hayan realizado para sus alumnos. Y propongo que está forma de editar la llamemos: LIBROS CON CORAZÓN Gracias a todos. INDICE TEMA 1: CONCEPTOS BASICOS DE LA ARQUITECTURA UNIX 1.1 INTRODUCCION ......................................................................................................... 1 1.2 ARQUITECTURA DEL SISTEMA OPERATIVO UNIX ............................................... 3 1.2.1 Nivel de usuario ............................................................................................... 4 1.2.2 Nivel de núcleo ................................................................................................. 5 1.2.3 Nivel de hardware ............................................................................................ 9 TEMA 2: INTRODUCCION A LOS PROCESOS EN SISTEMAS UNIX 2.1 CONCEPTOS BASICOS ........................................................................................... 11 2.1.1 Definición de proceso .................................................................................... 11 2.1.2 Modos de ejecución ....................................................................................... 12 2.1.3 Espacio de direcciones de un proceso .......................................................... 12 2.1.4 Estructura de datos necesarias para el funcionamiento de UNIX ................ 18 2.1.5 Entornos de ejecución ................................................................................... 22 2.2 CONTEXTO DE UN PROCESO ............................................................................... 23 2.2.1 Contexto a nivel de usuario ........................................................................... 24 2.2.2 Contexto de registros ..................................................................................... 25 2.2.3 Contexto a nivel del sistema .......................................................................... 26 2.2.4 Salvar el contexto........................................................................................... 30 2.3 CAMBIO DE CONTEXTO ......................................................................................... 31 2.3.1 Circunstancias que motivan un cambio de contexto ..................................... 31 2.3.2 Descripción del mecanismo de cambio de contexto ..................................... 32 2.4 MANEJO DE INTERRUPCIONES Y EXCEPCIONES ............................................. 34 2.5 MANEJO DE LLAMADAS AL SISTEMA ................................................................... 37 2.6 FUNCIONES SETJMP Y LONGJMP ........................................................................ 39 2.7 IDENTIFICADORES DE USUARIO Y DE GRUPO .................................................. 41 Indice TEMA 3: CONTROL DE PROCESOS EN SISTEMAS UNIX 3.1 INTRODUCCION ....................................................................................................... 45 3.2 ESTADOS DE LOS PROCESOS ............................................................................. 45 3.2.1 Estado dormir ................................................................................................. 49 3.2.2 Algoritmos para dormir y despertar ............................................................... 53 3.3 CREACION DE PROCESOS: LLAMADA AL SISTEMA FORK ............................... 59 3.4 EJECUCION DE PROCESOS: LLAMADA AL SISTEMA EXEC ............................. 69 3.5 TERMINACION DE PROCESOS: LLAMADA AL SISTEMA EXIT ........................... 74 3.6 LLAMADA AL SISTEMA WAIT ................................................................................. 76 3.7 PLANIFICACIÓN DE PROCESOS ........................................................................... 80 3.7.1 Conceptos Básicos ........................................................................................ 80 3.7.2 Funcionamiento de la Planificación de Procesos .......................................... 80 3.7.3 Parámetros de Planificación .......................................................................... 81 3.8 INTRODUCCIÓN A LAS HEBRAS (THREADS) ...................................................... 83 3.8.1 Concurrencia y Paralelismo ........................................................................... 84 3.8.2 Tipo de hebras ............................................................................................... 86 TEMA 4: INTRODUCCION A LOS PROCESOS EN LINUX 4.1 INTRODUCCION ....................................................................................................... 89 4.2 ESTADOS DE UN PROCESO EN LINUX ................................................................ 89 4.3 DESCRIPCION DE LA TABLA DE PROCESOS ...................................................... 91 4.3.1 Relación entre procesos ................................................................................ 92 4.3.2 Manejo de memoria ....................................................................................... 93 4.3.3 Identificadores de procesos ........................................................................... 94 4.3.4 Archivos .......................................................................................................... 95 4.3.5 Temporización ................................................................................................ 95 4.4 CREACIÓN DE PROCESOS .................................................................................... 96 TEMA 5: LAS SEÑALES EN SISTEMAS UNIX Y LINUX 5.1 INTRODUCCION ....................................................................................................... 99 5.2 CLASIFICACION DE LAS SEÑALES ..................................................................... 100 5.2.1 Señales para finalizar y suspender un proceso .......................................... 101 5.2.2 Señales generadas por una circunstancia física determinada ................... 102 5.2.3 Señal de fallo de alimentación ..................................................................... 103 5.2.4 Señales relacionadas con el manejo de la entrada y salida ....................... 103 Indice 5.2.5 Señal generada por una tubería cerrada .................................................... 103 5.2.6 Señales relacionadas con el manejo de alarmas. ....................................... 103 5.2.7 Señales utilizadas por el programador ........................................................ 104 5.2.8 Señales relacionadas con el control de una actividad ................................ 104 5.2.9 Señales relacionadas con recursos que son modificables por un proceso. ............................................................................................................................... 105 5.2.10 Clasificación de las señales conforme a la norma POSIX ........................ 105 5.3 TRATAMIENTO DE SEÑALES ............................................................................... 108 5.3.1 Generación de Señales ............................................................................... 108 5.3.2 Reacción de un proceso al recibir una señal .............................................. 109 5.3.3 Comprobación por parte del núcleo de la existencia de señales enviadas a un proceso. ................................................................................................... 111 5.3.4 Manipulación o tratamiento de las señales por parte del núcleo. ............... 113 5.3.5 Problemas de consistencia en el tratamiento de señales ........................... 116 5.4 LLAMADAS AL SISTEMA PARA EL MANEJO DE SEÑALES .............................. 119 5.4.1 Llamada al sistema signal............................................................................ 119 5.4.2 Llamada al sistema kill ................................................................................. 122 5.4.3 Llamada al sistema pause ........................................................................... 125 5.4.4 Llamadas al sistema para el manejo de la máscara de señales de un proceso en Unix. .......................................................................................... 127 5.4.5 Llamadas al sistema para el manejo de la máscara de señales de un proceso en Linux. ......................................................................................... 128 TEMA 6: MECANISMOS IPC 6.1 CARACTERISTICAS GENERALES ....................................................................... 131 6.1.1 Objetivos de la interacción entre procesos ................................................. 131 6.1.2 Tipos de mecanismos IPC ........................................................................... 132 6.1.3 Características comunes de los mecanismos IPC ...................................... 132 6.1.4 Creación de llaves........................................................................................ 136 6.1.5 Acceso de un proceso a un mecanismo IPC .............................................. 138 6.2 SEMAFOROS .......................................................................................................... 139 6.2.1 Introducción .................................................................................................. 139 6.2.2 Estructura de datos relacionadas con los semáforos ................................. 141 6.2.3 Llamadas al sistema para manipulación de semáforos .............................. 143 6.2.4 Semáforos en Linux ..................................................................................... 150 6.2.5 Comparación de las características de los semáforos en Unix y Linux ..... 152 6.3 COLAS DE MENSAJES .......................................................................................... 153 6.3.1 Introducción .................................................................................................. 153 6.3.2 Estructuras de datos asociadas a los mensajes ......................................... 153 6.3.3 Llamadas al sistema para manipulación de mensajes................................ 156 6.3.4 Mensajes en Linux ....................................................................................... 163 6.3.5 Comparación de las características de los mensajes en Unix y Linux ....... 164 6.4 MEMORIA COMPARTIDA ...................................................................................... 164 6.4.1 Introducción .................................................................................................. 164 6.4.2 Estructuras de datos utilizadas para compartir memoria ............................ 165 Indice 6.4.3 Llamadas al sistema para manipulación de memoria compartida .............. 166 6.4.4 Memoria compartida en Linux ..................................................................... 172 6.4.5 Comparación de las características de memoria compartida en Unix y Linux ............................................................................................................ 173 6.5 TUBERÍAS Y FIFOS ................................................................................................ 173 6.5.1 Introducción .................................................................................................. 173 6.5.2 Tuberías sin nombre .................................................................................... 173 6.5.3 Tuberías con nombre o FIFO ...................................................................... 178 TEMA 7: GESTION DE MEMORIA EN UNIX 7.1 INTRODUCCION ..................................................................................................... 181 7.2 ESPACIO DE DIRECCIONES VIRTUALES DE UN PROCESO ........................... 182 7.3 POLITICA DE GESTION DE MEMORIA POR INTERCAMBIO ............................. 185 7.3.1 Asignación de espacio de intercambio ........................................................ 185 7.3.2 Transferencia de procesos hacia el dispositivo de intercambio ................. 188 7.3.3 Transferencia de procesos hacia la memoria principal ............................... 192 7.4 POLITICA DE GESTION DE MEMORIA MEDIANTE DEMANDA DE PAGINA .... 193 7.4.1 Introducción .................................................................................................. 193 7.4.2 Estructuras de datos asociadas a la gestión de memoria mediante demanda de páginas .................................................................................................... 195 7.4.3 El ladrón de páginas (page stealer) ............................................................. 204 7.4.4 El manejador de fallos de página ................................................................ 208 7.5 SISTEMA DE GESTION DE MEMORIA HIBRIDO CON INTERCAMBIO Y DEMANDA DE PAGINA .......................................................................................... 209 TEMA 8: SISTEMAS DE ARCHIVOS DE UNIX 8.1 INTRODUCCION ..................................................................................................... 211 8.2 ESTRUCTURA INTERNA DE UN SISTEMA DE ARCHIVOS EN MEMORIA SECUNDARIA .......................................................................................................... 212 8.2.1 Estructura del superbloque .......................................................................... 214 8.2.2 Estructura de la lista de i-nodos .................................................................. 214 8.2.3 Estructura interna de un fichero: Bloques de datos .................................... 217 8.2.4 Directorios .................................................................................................... 223 8.2.5 Enlaces ......................................................................................................... 224 8.3 ESTRUCTURAS DEL NUCLEO EN MEMORIA PRINCIPAL PARA EL ACCESO A LOS FICHEROS ...................................................................................................... 225 8.3.1 Tabla de i-nodos .......................................................................................... 225 8.3.2 Tabla de archivos ......................................................................................... 226 8.3.3 Tabla de descriptores de archivo................................................................. 227 8.4 MANEJO DE I-NODOS ........................................................................................... 229 Indice 8.4.1 Bloqueo de i-nodos: algoritmos iget e iput. ................................................. 229 8.4.2 Conversión de una ruta de acceso a un i-nodo: algoritmo namei .............. 234 8.4.3 Asignación de un i-nodo libre: Algoritmo ialloc. .......................................... 237 8.4.4 Liberación de un i-nodo: Algoritmo ifree ...................................................... 241 8.5 LLAMADAS AL SISTEMA PARA MANEJO DE ARCHIVOS.................................. 243 8.5.1 Función open ............................................................................................... 243 8.5.2 Función close ............................................................................................... 244 8.5.3 Función creat ............................................................................................... 244 8.5.4 Función write ................................................................................................ 245 8.5.5 Función read ................................................................................................ 246 8.5.6 Acceso directo: Función lseek ..................................................................... 246 TEMA 9: SISTEMAS DE ARCHIVOS DE LINUX 9.1 INTRODUCCION ..................................................................................................... 251 9.2 HISTORIA DE LOS SISTEMAS DE ARCHIVOS DE LINUX .................................. 252 9.3 EL SISTEMA DE ARCHIVOS VIRTUAL VFS ......................................................... 253 9.3.1 Características generales del VFS .............................................................. 253 9.3.2 Implementación del VFS de Linux ............................................................... 256 9.4 EL SEGUNDO SISTEMA DE ARCHIVOS EXTENDIDO EXT2FS......................... 258 9.4.1 Objetivos del EXT2FS .................................................................................. 258 9.4.2 Características estándar del Ext2fs ............................................................. 259 9.4.3 Características avanzadas del Ext2fs ......................................................... 259 9.4.4 Implementación del EXT2FS ....................................................................... 263 TEMA 10: ADMINISTRACION DE SISTEMAS LINUX 10.1 CONCEPTOS BASICOS DE UNIX ....................................................................... 267 10.1.1 Creación de una cuenta ............................................................................. 267 10.1.2 Entrar en el sistema ................................................................................... 268 10.1.3 Consolas virtuales ...................................................................................... 268 10.1.4 Intérpretes de comandos y comandos ...................................................... 269 10.1.5 Salida del sistema ...................................................................................... 270 10.1.6 Cambiando la contraseña .......................................................................... 270 10.1.7 Ficheros y directorios ................................................................................. 270 10.1.8 El árbol de directorios ................................................................................ 271 10.1.9 Directorio de trabajo actual ........................................................................ 271 10.2 PRIMEROS PASOS EN UNIX .............................................................................. 273 10.2.1 Acceder al entorno ..................................................................................... 273 10.2.2 Acceder a los directorios............................................................................ 274 10.2.3 Crear directorios nuevos ............................................................................ 275 10.2.4 Copiar ficheros ........................................................................................... 275 10.2.5 Mover ficheros ............................................................................................ 276 10.2.6 Borrar ficheros y directorios ....................................................................... 276 10.2.7 Acceder al contenido de los ficheros ......................................................... 276 10.2.8 La Ayuda. ................................................................................................... 277 10.2.9 Sumario de Órdenes Básicas .................................................................... 278 Indice 10.3 CONTENIDOS DEL SISTEMA DE FICHEROS .................................................. 281 10.4 TIPOS DE INTÉRPRETES DE COMANDOS ....................................................... 284 10.4.1 Caracteres Comodín .................................................................................. 285 10.5 CONCEPTOS DE PERMISOS DE FICHEROS ................................................... 286 10.5.1 Introducción ................................................................................................ 286 10.5.2 Modo de un fichero .................................................................................... 287 10.5.3 Dependencias de los Permisos ................................................................. 293 10.5.4 Modificación de los permisos de un fichero .............................................. 294 10.6 MANEJANDO ENLACES DE FICHEROS ............................................................ 295 10.6.1 Enlaces duros (Hard links) ......................................................................... 295 10.6.2 Enlaces simbólicos .................................................................................... 297 10.7 CONTROL DE TAREAS ....................................................................................... 298 10.7.1 Tareas y procesos...................................................................................... 298 10.7.2 Primer plano y Segundo plano .................................................................. 299 10.7.3 Eliminación de procesos ............................................................................ 301 10.7.4 Parada y relanzamiento de tareas ............................................................. 302 10.7.5 Scripts del Intérprete de Comandos .......................................................... 303 10.7.6 Variables del intérprete de Comandos y el Entorno.................................. 304 10.7.7 La variable de entorno PATH .................................................................... 306 10.7.8 Scripts de inicialización del intérprete ....................................................... 306 10.8 ADMINISTRACIÓN DEL SISTEMA ...................................................................... 307 10.8.1 La cuenta root ............................................................................................ 307 10.8.2 Gestión de Usuarios .................................................................................. 308 10.8.3 Conceptos de gestión de usuarios ............................................................ 308 10.8.4 Añadiendo usuarios ................................................................................... 309 10.8.5 Borrando usuarios ...................................................................................... 310 10.8.6 Poniendo atributos de usuario ................................................................... 310 10.8.7 Grupos ........................................................................................................ 311 10.8.8 Utilizando Tar ............................................................................................. 312 10.8.9 Montando sistemas de ficheros ................................................................. 313 10.8.10 Estableciendo el nombre del ordenador .................................................. 316 APENDICE A: INTRODUCCION AL LENGUAJE DE PROGRAMACION C A.1 INTRODUCCION .................................................................................................... 319 A.2 CICLO DE CREACION DE UN PROGRAMA ........................................................ 320 A.3 ESTRUCTURA DE UN PROGRAMA EN C. .......................................................... 321 A.4 CONCEPTOS BASICOS DE C............................................................................... 323 A.4.1 Identificadores, palabras reservadas, separadores y comentarios ............ 323 A.4.2 Constantes ................................................................................................... 324 A.4.3 Variables ...................................................................................................... 324 A.4.4 Tipos fundamentales de datos .................................................................... 326 A.4.5 Tipos derivados de datos ............................................................................ 328 Apuntes de Sistema Operativos II Salvador Ros Muñoz & Jose Manuel Díaz Martínez 5 ◼ De una forma directa, como es el caso de los programas escritos directamente en lenguaje ensamblador. ◼ Utilizando librerías asociadas al compilador, que contienen las llamadas al sistema. Lo que permite al usuario el poder utilizarlas en sus propios programas. Además, los programas podrán utilizar otras librerías distintas a las estándar del sistema, como por ejemplo librerías de entrada/salida, que permitirán un mayor aprovechamiento de los recursos del sistema operativo. Estas librerías del sistema se enlazan (link) por defecto con el código de los programas creados por los usuarios en tiempo de compilación, formando así parte del código objeto de los programas desarrollados. Algunas de estas librerías se encuentran en el fichero /usr/lib/libc.a. Finalmente, cuando desde un programa se utiliza una llamada al sistema ésta se ejecutará en modo supervisor o núcleo (kernel). Para acceder a este modo se usará una interrupción software denominada trap, que se trata de un código especifico que prepara al proceso que utiliza la llamada al sistema para ejecutarla. Se pueden distinguir dos conjuntos de llamadas al sistema: aquellas que interactúan con el subsistema de archivos y las que interactúan con el subsistema de control de procesos. En los temas siguientes se analizarán ambos tipos de llamadas. .2 Nivel de núcleo En el nivel de núcleo se pueden distinguir el subsistema de archivos y el subsistema de control de procesos. .2.1 Subsistema de archivos Definición: El subsistema de archivos controla los recursos del sistema de archivos y por tanto es el encargado de: * Manipular los archivos. * Reservar espacio de memoria principal a los archivos. * Administrar el espacio libre del sistema de archivos. * Controlar el acceso a los archivos. * Intercambiar datos entre los archivos y el usuario. TEMA 1: Conceptos básicos de la arquitectura UNIX 6 Los procesos interactuarán con el subsistema de archivos mediante un conjunto especifico de llamadas al sistema. Por ejemplo: * open, close, read, write: para abrir, cerrar, leer o escribir un archivo. * stat: consulta los atributos de un archivo. * chown: modifica el registro de propiedad del archivo. * chmod: cambia los permisos de acceso del archivo. El subsistema de archivos es el encargado de acceder a los datos de los archivos localizados en los dispositivos de almacenamiento secundario (ej: discos duros), mediante los manejadores de dispositivos. Definición: Los manejadores de dispositivos se encargan de establecer el protocolo de comunicación entre el núcleo y los periféricos. Se pueden definir dos tipos de manejadores de dispositivos atendiendo a su modo de acceso: ◼ Dispositivos de acceso en modo bloque, que son los que utilizan un mecanismo de buffer que regula el flujo de datos entre el núcleo y el dispositivo, permitiendo un incremento en la velocidad de transferencia de los datos. ◼ Dispositivos de acceso en modo carácter. El acceso a estos dispositivos se realiza sin la intervención de un mecanismo de buffer, es decir, se realiza de forma directa. .2.2 Subsistema de control de procesos Definición: El subsistema de control de procesos es el responsable de: • La sincronización de los procesos. • La comunicación entre procesos. • El control de la memoria principal. Apuntes de Sistema Operativos II Salvador Ros Muñoz & Jose Manuel Díaz Martínez 7 • La planificación de los procesos. Algunas de las llamadas del sistema para controlar los procesos son: • Fork: crea un nuevo proceso. • Exec: para ubicar la imagen binaria de un archivo ejecutable, cargarla y ejecutarla. • Exit: finaliza la ejecución de un proceso. • Wait: sincroniza la ejecución de un proceso con la salida (exit) con la salida de otro proceso que previamente ha sido creado con fork. • Signal: gestión de señales. El subsistema de archivos y el subsistema de control de procesos interactúan cuando se carga un archivo en memoria principal para su ejecución. El subsistema de procesos es el encargado entre otras tareas de llevar los archivos ejecutables a la memoria principal previamente a su ejecución. El subsistema de control de procesos esta formado por tres módulos: ◼ Módulo de gestión de memoria. ◼ Módulo de planificación. ◼ Módulo de comunicación. A) Módulo de gestión de memoria Definición: El módulo de gestión de memoria (swapper o intercambiador) controla la asignación de memoria principal a los procesos, es decir, controla que procesos están en cada instante en memoria principal. En un computador la memoria principal es finita. Todo proceso necesita de un conjunto de informaciones, denominado contexto, para ejecutarse. Esta información se tiene que encontrar (direccionar) en la memoria principal. Si en algún momento el sistema no tiene suficiente memoria principal para todos los procesos, el núcleo los trasladará de la memoria principal a la secundaria, operación que se denomina swapping o intercambio, de esta manera se intenta garantizar que todos los procesos tengan una oportunidad de ejecución. El problema surge al ejecutar varios procesos concurrentemente que compartan direcciones. Para evitar este problema el compilador genera direcciones de un espacio de direcciones virtual que tiene su equivalencia con el espacio físico real. El subsistema de TEMA 1: Conceptos básicos de la arquitectura UNIX 8 manejo de memoria traducirá estas direcciones virtuales a direcciones físicas de memoria, de esta manera el compilador no tiene conocimiento de donde el núcleo cargará la información en última instancia, es más, se podrían mantener copias del mismo programa en memoria. Definición: El subsistema de manejo de memoria es el subsistema del núcleo que colabora con el hardware para traducir direcciones virtuales a física. Por ejemplo, el núcleo del System V divide su espacio de direcciones virtuales en segmentos. El núcleo tendrá que mantener una tabla de segmentos donde cada registro de la tabla corresponde a un segmento activo del sistema. Cada proceso contará con una tabla de segmentos del proceso. En esta tabla cada entrada apunta a una entrada de la tabla de segmentos que contiene la dirección virtual de comienzo del segmento en el proceso. Segmentos compartidos pueden tener distintas direcciones virtuales en cada proceso. Además, la tabla de segmentos, contienen un campo de permiso que indica que tipo de acceso (lectura, escritura, ejecución) a un segmento dado le está permitido al proceso. El concepto de segmento es independiente de la política que se siga de manejo de la memoria principal. La política de manejo de memoria se refiere a las acciones que el núcleo debe realizar para asegurar que los procesos comparten la memoria adecuadamente, ejemplo de políticas son: intercambio (swapping) y demanda de páginas, ambas políticas se estudian en el Tema 7. Por otra parte, el mapeo del núcleo en el espacio virtual es independiente de todos los procesos. El código y los datos del núcleo se encuentran en el sistema permanentemente y todos los procesos lo comparten. Cuando se arranca el sistema, se carga el código del núcleo en memoria y se inicializan las tablas y registros necesarios para poder realizar el direccionamiento virtual de la memoria física. Cuando un código, como por ejemplo las llamadas al sistema, se está ejecutando en modo supervisor el sistema permite el acceso a las direcciones de su núcleo, hecho que queda completamente prohibido en la ejecución en modo usuario, que básicamente se trata de la ejecución de código del usuario. El sistema operativo cambiará de modo de ejecución en función del código que esté ejecutando. Así si se trata de una llamada al sistema pasará a ejecutarse en modo supervisor. Mientras que en la realización por ejemplo de operaciones aritméticas sencillas (suma, resta, etc.) se ejecutará en modo usuario. En este cambio de modo, el hardware y el sistema operativo colaboran. Apuntes de Sistema Operativos II Salvador Ros Muñoz & Jose Manuel Díaz Martínez 9 B) Módulo de planificación Definición: El módulo de planificación (scheduler) asigna el tiempo del procesador (CPU) a los procesos. Un proceso se ejecutará hasta que abandone el procesador bien porque necesita que le sea liberado algún recurso (pasará al estado dormido), o bien porque el núcleo lo preadelante debido a que su tiempo de utilización del procesador a expirado. En ese momento, el planificador seleccionará un nuevo proceso para ejecutar en función de su prioridad. El proceso que se estaba ejecutando volverá a ser ejecutado cuando vuelva a ser el proceso de mayor prioridad en espera y por lo tanto se planifique de nuevo. C) Módulo de comunicación Es el encargado de comunicar los procesos entre si. Existen muchos mecanismos de interconexión, desde los mecanismos síncronos de envío de mensajes hasta los asíncronos basados en el envío de señales. Estos mecanismos serán objeto de estudio en temas posteriores. .3 Nivel de hardware Definición: El módulo de control de hardware es el responsable del manejo de las interrupciones y la comunicación con la máquina Los dispositivos tales como discos o terminales pueden interrumpir a la CPU mientras se ejecuta un proceso, si esto ocurre, el núcleo debe restaurar la ejecución del proceso interrumpido después de que se haya atendido a la interrupción. Las interrupciones no son atendidas por procesos específicos, sino por funciones especiales del núcleo llamadas en el contexto del proceso que en ese momento se está ejecutando.