Resumen ISO SOA Teorías hasta Paginación PDF

Document Details

VividEuphoria

Uploaded by VividEuphoria

Universidad Nacional de La Plata

Tags

sistemas operativos kernel administración de memoria procesos

Summary

Este documento resume las teorías de sistemas operativos, desde el concepto de kernel y la administración de memoria hasta la paginación. Se incluyen las diferentes maneras de manejo de la memoria, como los modos de ejecución y la gestión de procesos.

Full Transcript

Sistema operativo Intermediario entre el usuario y el hardware Es software, así que necesita procesador y memoria Gestiona el hardware Controla la ejecución de los procesos Provee un conjunto de servicios a los usuarios del sistema Maneja la memoria secund...

Sistema operativo Intermediario entre el usuario y el hardware Es software, así que necesita procesador y memoria Gestiona el hardware Controla la ejecución de los procesos Provee un conjunto de servicios a los usuarios del sistema Maneja la memoria secundaria y dispositivos I/O o Detecta intentos de ejecución de instrucciones de E/S ilegales Objetivos o Comodidad o Eficiencia o Evolución ▪ Soportar nuevos tipos de hardware ▪ Brindar nuevos servicios ▪ Ofrecer mejorar y alternativas a problemas existentes Componentes o Kernel o Shell o Herramientas Servicios o Administración y planificación de procesos o Administración de memoria ▪ Detecta accesos ilegales a memoria o Administración del sistema de archivos o Administración de dispositivos o Detección de errores y respuestas ▪ Debe proteger el vector de interrupciones y las rutinas de atención a interrupciones o Interacción del usuario o Contabilidad Problemas que debe evitar o Que un proceso se apropie de la CPU o Que un proceso ejecute instrucciones privilegiadas o Que un proceso acceda a memoria fuera de su espacio de direcciones Apoyo del hardware o Modos de ejecución: Definen limitaciones en el conjunto de instrucciones que se pueden ejecutar o Interrupcion de clock: Se debe evitar que un proceso se apropie de la CPU o Protección de memoria: Se deben definir limites de memoria a los que puede acceder cada proceso Kernel Código que se encuentra en memoria principal No es un proceso Implementa servicios esenciales o Manejo de memoria ▪ Protección de memoria entre programas ▪ Eficiente o Manejo de CPU o Administración de procesos ▪ Multiplexación ▪ Manejo de prioridades ▪ Que no haya bloqueos o Comunicación y concurrencia o Gestión de la E/S Kernel Monolítico Toda operación del kernel se resuelve en modo kernel Microkernel Se busca estar el menor tiempo posible en modo kernel Se separa el kernel en lo que es indispensable de ejecutar en modo privilegiado y lo que se puede resolver en modo usuario Enfoques de diseño del kernel Primer enfoque: Kernel como entidad independiente El kernel tiene su propia región de memoria Se ejecuta fuera de todo proceso Cuando ocurre una interrupción o una syscall, el contexto del proceso se resguarda y se pasa el control al kernel Tiene su propio stack Finalizada su actividad, le devuelve el control al proceso Segundo enfoque: Kernel “dentro” del proceso El “código” del kernel se encuentra dentro del espacio de direcciones de cada proceso El kernel se ejecuta en el mismo contexto que un proceso de usuario Se puede ver al kernel como una colección de rutinas que el proceso utiliza Dentro de un proceso se encuentra el código del programa de usuario y los modulos que provee el kernel Cada proceso tiene su propio stack, uno en modo usuario y otro en modo kernel El proceso es el que se ejecuta en modo usuario y el kernel en modo kernel, por lo que ocurre un cambio de modo de ejecución cuando se necesite El código del kernel es compartido por todos los procesos Cada interrupción o syscall es atendida en el contexto del proceso que se encontraba en ejecución, pero en modo kernel. Luego pasa a modo usuario cuando termina de atender la interrupción. o Esto hace que sea más eficiente ya que no hay necesidad de hacer un cambio de contexto completo o Su desventaja es que una parte del espacio de direcciones está ocupada por el kernel y el programa no puede usarla Modos de ejecución El bit en la CPU india el modo actual Las instrucciones privilegiadas deben ejecutarse en modo kernel o Necesitan acceder a estructuras del kernel o ejecutar código que no es del proceso En modo usuario el proceso sólo puede acceder a su espacio de direcciones propio El kernel se ejecuta en modo kernel y los demás programas en modo usuario El sistema arranca en modo kernel Cada vez que comienza a ejecutarse un proceso de usuario este bit se debe poner en modo usuario utilizando una instrucción especial La única forma de pasar a modo kernel es con traps o interrupciones. Esto no lo hace el proceso, sinó el hardware. Modo kernel Gestión de procesos: Creación, terminación, planificación, swapping, sincronización. Gestión de memoria: Swapping, gestión, reserva Gestión de E/S: Gestión de buffers, reserva de canales y dispositivos Funciones de soporte: Gestión de interrupciones, auditoria, monitoreo Se puede acceder a estructuras internas o espacios de direcciones de otros procesos Modo usuario Debug de procesos Todas las tareas que no requieran accesos privilegiados No se puede interactuar con el hardware El proceso trabaja en su propio espacio de direcciones Protección de la memoria Se deben poner limites a las direcciones que puede utilizar un proceso o Por ejemplo, con registros base y registro límite (Particiones) o El kernel carga estos registros, los cuales se guardan en la PCB de cada proceso Protección de la CPU La interrupción por clock permite que un proceso no se apropie de la CPU Se implementa a través del clock y un contador El kernel le da valor al contador que decrementa con cada tick de reloj y al llegar a cero puede expulsar al proceso para ejecutar otro System Calls (SysCalls) Forma en que los programas acceden a los servicios del S.O Sus parámetros pueden pasarse a través de registros, bloques, tablas, o el stack Se ejecutan en modo kernel Categorias: 1. Control de procesos 2. Manejo de archivos 3. Manejo de dispositivos 4. Mantenimiento de información del sistema 5. Comunicaciones Pasos que suceden al llamar a una syscall 1. El proceso de usuario llama a una syscall por medio de GlibC 2. GlibC pone los parámetros para la syscall en el stack (o registros según corresponda) y fuerza una excepción (interrupción) 3. El hardware cambia a modo kernel 4. Se coloca el PC y el PSW en el stack (Puede que se pongan más registros, dependiendo la arquitectura) 5. Se coloca en el PC la dirección de la rutina de atención de interrupción 6. Se sacan los parámetros de la syscall del stack o registros 7. Se pueden guardar otros registros del proceso actual en el stack o en la PCB 8. Se cambia al stack del kernel, guardando la dirección del tope del stack en modo usuario en la PCB 9. Se colocan los parámetros para la syscall en el stack o registros necesarios 10. Se ejecuta el código correspondiente a la syscall ▪ Si la syscall bloquea el proceso puede que se guarde más información sobre el proceso bloqueado y se ejecuta el Short Term Scheduler para seleccionar un nuevo proceso 11. Se cambia a modo usuario por una instrucción 12. Se ejecuta la instrucción de retorno 13. Se sacan de la pila el PSW y PC 14. Se continúa la ejecución del proceso suspendido Registros de control y estado PC -> Dirección de la próxima instrucción a ser ejecutada IR -> Instrucción a ser ejecutada PSW o Contiene códigos de resultado de operaciones o Habilita/deshabilita interrupciones o Indica el modo de ejecución Interrupt Handler Programa o rutina que determina la naturaleza de una interrupción y realiza lo necesario para atenderla Generalmente es parte del S.O Programa Es estático No tiene program counter Existe desde que se edita hasta que se borra Proceso Programa en ejecución Es dinámico Tiene program counter Su ciclo de vida es desde que se lo “dispara” hasta que termina Componentes de un proceso Para poder ejecutarse, un proceso incluye como mínimo o Sección de código (.text) o Sección de datos (.rodata,.data,.bss) o Stack/s: Datos temporales, parámetros, direcciones de retorno Atributos de un proceso Identificación del proceso y del proceso padre Identificación del usuario que lo disparó Si hay estructura de grupos, qué grupo lo disparó En ambientes multiusuarios, desde qué terminal y quién lo ejecutó Process Control Block (PCB) Estructura de datos asociada al proceso Existe una por proceso Es lo primero que se crea cuando se crea un proceso y lo último que se borra cuando termina Contiene la información asociada con cada proceso: o PID, PPID o Valores de los registros de la CPU (Como por ejemplo los registros base y límite) o Planificación (Estado, prioridad, tiempo consumido) o Ubicación en memoria o Contabilidad (Uso de memoria, uso de CPU, etc.) o Entrada/Salida (Estado, pendientes, etc.) Stack Un proceso cuenta con 1 o más stacks (En general, uno en modo usuario y otro en modo kernel) Se crean automáticamente y su tamaño es dinámico Formado por stack frames (porción del stack reservada por una subrutina mientras esta se ejecuta) El stack frame tiene los parámetros de la rutina (variables locales) y datos necesarios para recuperar el stack frame anterior (PC, SP) Espacio de direcciones de un proceso Conjunto de direcciones de memoria que ocupa el proceso o Stack, text, datos No incluye su PCB o tablas asociadas EL espacio de direcciones lo limita la arquitectura Es independiente de la ubicación “real” del proceso en la RAM Es el rango de direcciones posibles que un proceso puede utilizar para direccionar sus instrucciones y datos Contexto de un proceso Incluye toda la información que el S.O necesita para administrar el proceso y la CPU para ejecutarlo correctamente El contexto contiene: o Contador de programa o Registros de CPU o Prioridad del proceso o E/S Pendientes o Etc… Context Switch Se produce cuando la CPU cambia de un proceso a otro Se debe resguardar el contexto del proceso saliente, que pasa a ready o waiting y retornará después a la CPU Se debe cargar el contexto del nuevo proceso y comenzar desde la instrucción siguiente a la ultima ejecutada en dicho contexto Es tiempo no productivo de CPU El tiempo que consume depende del hardware Estados de un proceso New o Un proceso es creado por otro proceso o En este estado se crean las estructuras asociadas o El proceso queda en la cola de procesos en espera a ser cargado en memoria Ready o Luego de que el long term scheduler eligió un proceso para cargarlo en memoria, pasa a este estado o Se queda en la cola de procesos listos y espera que el short term scheduler lo elija para utilizar la CPU Running o El short term scheduler eligió al proceso para ejecutarse y pasa a este estado o Tendrá la CPU hasta que se termine su quantum (tiempo asignado) o hasta que necesite realizar una operación de E/S o Siempre que sale de este estado, hay un context switch Waiting o El proceso necesita que se cumpla el evento esperado para continuar (el cual puede ser la terminación de una E/S o la llegada de una señal por parte de otro proceso) o El proceso no está ejecutándose pero tampoco puede ir a ready ya que espera a que finalice una operación o Sigue en memoria pero no tiene la CPU o Al cumplirse el evento pasa al estado de ready Terminated: Finalización del proceso Transiciones de estados de un proceso New -> Ready : Por elección del long term scheduler (carga en memoria) Ready -> Running: Por eleccion del short term scheduler (asignacion de CPU) Running -> Waiting: El proceso se pone en espera de un evento Waiting -> Ready: Se cumplió el evento y vuelve a la cola de listos Running -> Ready: o Caso especial o Cuando el proceso termina su quantum sin haber necesitado ser interrumpido por un evento o El proceso es expulsado de la CPU contra su voluntad (Algoritmos apropiativos) Comportamiento de los procesos CPU-Bound: Mayor parte del tiempo usando la CPU I/O-Bound: Mayor parte del tiempo esperando por I/O Planificación Necesidad de determinar cuál proceso listo ejecutar, en un ambiente multiprogramado Algoritmo de planificación Algoritmo utilizado para realizar la planificación del sistema Colas de planificación de procesos Para realizar la planificación, el S.O utiliza la PCB de cada proceso Las PCB se enlazan en colas siguiendo un orden determinado ▪ Cola de trabajos procesos: Contiene todas las PCB de procesos en el sistema ▪ Cola de procesos listos: PCB de procesos residentes en memoria principal esperando para ejecutarse ▪ Cola de dispositivos: PCB de procesos esperando por un dispositivo de I/O ▪ Entre otras… Módulos de planificación Son modulos del kernel que realizan distintas tareas asociadas a la planificación Se ejecutan ante determinados eventos: o Creación/Terminación de procesos o Eventos de sincronización o de E/S o Finalización del “quantum” Hay 3 planificadores, nombrados en base a la frecuencia de ejecución o Long: Baja frecuencia de ejecución o Short: Alta frecuencia de ejecución Hay otros módulos que pueden no existir pero que de igual forma su función debe ser absorbida por alguno de los anteriores 3 nombrados o Dispatcher: Hace cambio de contexto, cambio de modo de ejecución, “Salta” a la instrucción a ejecutar del proceso elegido por el short term o Loader: Carga en memoria el proceso elegido por el long term. Determina cómo va a estar mapeado el proceso en memoria Long Term Scheduler Controla el grado de multiprogramación Puede no existir y que su tarea la absorba el short term scheduler Controla la admisión de nuevos procesos Decide cuándo se deben cargar nuevos procesos en la memoria principal Medium Term Scheduler (Swapping) Si es necesario, reduce el grado de multiprogramación Saca temporalmente de memoria los procesos que sean necesarios para mantener el equilibro del sistema Sucede cuando requiero más memoria Short Term Scheduler Decide cuál proceso de la cola de listos se elige para ejecutar Utiliza algoritmos apropiativos o no apropiativos Algoritmos de planificación Existen apropiativos y no apropiativos Metas o Equidad: Otorgar una parte justa de la CPU a cada proceso o Balance: Mantener ocupadas todas las partes del sistema Algoritmos apropiativos (Preemptive) Existen situaciones donde el proceso en ejecución se expulsa de la CPU Conviene usarlos en procesos interactivos Algoritmos no apropiativos (No preemptive) Los procesos se ejecutan hasta que él mismo abandona la CPU o Bloqueandose por E/S o finalizando No hay decisiones de planificación durante las interrupciones de clock Conviene usarlos en procesos batch Procesos Batch Utilizan algoritmos no apropiativos Metas o Rendimiento: Maximizar el N° de trabajos por hora o Tiempo de retorno: Minimizar los tiempos entre el comienzo y la finalización de procesos o Uso de la CPU: Mantener la CPU ocupada la mayor cantidad de tiempo posible No interactivos y sin usuarios que esperen una respuesta en una terminal Pueden utilizar distintos algoritmos para ejecutarse o First Come First Served ▪ Es no apropiativo ▪ Se asigna CPU a los procesos en el orden en el que se solicitaron y fueron añadidos a la cola de listos o Shortest Job First ▪ Es no apropiativo, pero puede implementarse de forma apropiativa ▪ Primero ejecuta aquellos procesos que tardan menor tiempo en ejecutar Procesos interactivos Utilizan algoritmos apropiativos Metas o Tiempo de respuesta: Responder a peticiones con rapidez o Proporcionalidad: Cumplir con expectativas de los usuarios No solo se refieren a interacción con el usuario, también puede ser con otros procesos (como por ejemplo, si fuera un servidor web) Pueden utilizar distintos algoritmos para ejecutarse o Round Robin: ▪ Comparte la CPU por un tiempo determinado (fijo) a cada proceso ▪ Si el proceso no finaliza en ese tiempo, se coloca al final de la cola y el siguiente proceso en la cola recibe la CPU ▪ Ofrece un tiempo de respuesta razonable ▪ Es “justo” ▪ Es apropiativo o Prioridades ▪ Cada proceso tiene una prioridad asignada y el planificador elije el proceso con mayor prioridad ▪ Permite que procesos críticos o importantes se ejecuten lo más pronto posible ▪ Es apropiativo o Colas multinivel ▪ Cada proceso se agrupa en diferentes colas según su tipo o prioridad ▪ Proporciona flexibilidad en la gestión de diferentes tipos de procesos ▪ Dentro de cada grupo, se puede utilizar una planificación de tipo round robin ▪ Es apropiativo o Shortest Remaning Time First: ▪ Se ejecuta el proceso que tiene menor tiempo restante de ejecución ▪ Si llega un proceso con un tiempo de ejecución menor, se cambia de proceso en ejecución ▪ Puede provocar inanición para procesos que tengan mucho tiempo restante de ejecución ▪ Es apropiativo Política vs. Mecanismo Existen situaciones en las que es necesario que la planificación de uno o varios procesos de comporte de manera diferente Por lo que el algoritmo de planificación debe estar parametrizado de manera que los procesos/usuarios puedan indicar los parámetros para modificar la planificación El mecanismo lo implementa el kernel El usuario/proceso/administrador utiliza los parámetros para determinar la política Creación de procesos Un proceso es creado por otro proceso Un proceso padre tiene uno o más hijos Se forma un “árbol de procesos” Pasos en la creación de un proceso Crear la PCB Asignar PID único Asignarle memoria para regiones (Stack, text, datos) Crear estructuras de datos asociadas (copiar el contexto del padre, regiones de datos, text y stack) Respecto a la ejecución El padre puede continuar ejecutándose concurrentemente con su hijo El padre puede esperar a que el proceso hijo finalice Respecto al espacio de direcciones El hijo es un duplicado del proceso padre (UNIX) ▪ Se crea un nuevo espacio de direcciones copiando el del padre Se crea el proceso y se le carga adentro el programa (Windows) ▪ Se crea un nuevo espacio de direcciones vacío Cómo sucede Unix: Utiliza 2 syscalls o Fork() : Crea un proceso igual al que la llama o Execve() : Generalmente usada después de fork, carga un nuevo programa en el espacio de direcciones del proceso que la llama Windows: Utiliza 1 syscall o CreateProcess() : Crea un nuevo proceso y carga el programa para ejecución Fork El proceso padre recibe como valor de retorno de esta llamada el PID del hijo El proceso hijo recibe como valor de retorno de esta llamada 0 En caso de error, retorna un valor negativo Terminación de procesos Exit Se retorna el control al sistema operativo El proceso padre puede esperar un código de retorno (via “wait”). Generalmente se lo usa cuando se requiere que el padre espere a los hijos Kill El proceso padre puede terminar la ejecución de sus hijos La tarea asignada al hijo se terminó Cuando el padre termina su ejecución o Habitualmente no se permite a los hijos continuar, pero existe la opción o Terminación en cascada Pasos del Fork/Exec Memoria Los programas y datos deben estar en el almacenamiento principal para poderlos ejecutar y referenciarlos directamente La organización y administración de la memoria principal es uno de los factores más importantes en el diseño de los S.O. Por esto, el S.O Debe: o Llevar un registro de las partes de memoria que se están utilizando y las que no o Asignar espacio en memoria principal a los procesos cuando estos la necesitan o Liberar espacio de memoria asignada a procesos que han terminado o Usar eficientemente la memoria con el fin de alojar el mayor número de procesos Además, el Sistema operativo debe: Lograr que el programador se abstraiga de la alocación de los programas Brindar seguridad entre los procesos para que unos no accedan a secciones privadas de otros Brindar la posibilidad de acceso compartido a determinadas secciones de la memoria (código en común, librerías, etc…) Garantizar la performance del sistema Administración de memoria La memoria física se divide lógicamente para alojar múltiples procesos o Garantiza protección o Depende del mecanismo provisto por el hardware Asignación eficiente para contener el mayor número de procesos y garantizar el mayor uso de la CPU por los mismos Requisitos para administrar la memoria Reubicación El programador no debe ocuparse de conocer dónde será colocado el proceso en la RAM Mientras un proceso se ejecuta puede ser sacado y traído a memoria (swap) y, posiblemente, colocarse en diferentes direcciones Las referencias a la memoria se deben traducir según la ubicación actual del proceso Protección Los procesos no deben referenciar ni acceder a direcciones de memoria de otros proceso (Salvo que tengan permiso) El chequeo de esto se debe realizar durante la ejecución o No es posible anticipar todas las referencias a memoria que un proceso puede realizar Compartición Permitir que varios procesos accedan a la misma porción de memoria (Rutinas comunes, librerías, espacios explícitamente compartidos, etc.) Permite un mejor aprovechamiento de la RAM evitando copias innecesarias de instrucciones y/o datos Direcciones lógicas Referencia a una localidad de memoria independiente de la asignación actual de los datos en la memoria El uso de este tipo de direcciones requiere algún tipo de conversión o traducción a direcciones físicas La traducción de una memoria lógica a física lo realiza el hardware (MMU) Representa una dirección en el espacio de direcciones del proceso Direcciones físicas Referencia una localidad en la RAM (dirección absoluta) Conversión de direcciones Una forma simple es usando registros auxiliares: o Registro base: Dirección de comienzo del espacio de direcciones del proceso en la RAM o Registro límite: Dirección final del proceso o medida del proceso (tamaño de su espacio de direcciones) Ambos valores se fijan cuando el espacio de direcciones del proceso es cargado a memoria y estos varían entre procesos. Por lo que se deben resguardar en la PCB Resolución de direcciones Resolución de direcciones (Adress-binding) o Si la CPU trabaja con direcciones lógicas se deben transformar en la direcciones físicas correspondientes Resolución en momento de compilación y en tiempo de carga o Direcciones lógicas y físicas son idénticas o Para reubicar un proceso es necesario recompilarlo o recargarlo Resolución en tiempo de ejecución o Direcciones lógicas y físicas son diferentes o Las direcciones lógicas son llamadas “Direcciones virtuales” o La reubicación del proceso se puede realizar fácilmente o El mapeo entre “virtuales” y “físicas” es realizado por el hardware, en la “Memory Management Unit” Memory Management Unit (MMU) Dispositivo de hardware que mapea direcciones virtuales a físicas o Es parte del procesador o Resuelve las direcciones en tiempo de ejecución o Sólo se puede reprogramar en modo kernel o El valor en el “registro de realocación” es sumado a cada dirección generada por el proceso de usuario al momento de acceder a la memoria o Los procesos nunca usan direcciones físicas Criterios de asignación de memoria Best Fit o Minima porción donde entra el proceso (mejor en particiones fijas) Worst fit o Mayor porción donde entra el proceso (mejor en particiones dinámicas) o Genera más probabilidad de que entre otro proceso porque deja “huecos más grandes” al finalizar First fit o Primer partición donde entre el proceso Mecanismos de asignación de memoria Particiones fijas La memoria se divide en particiones de tamaño fijo (pueden ser todas del mismo tamaño o no) Cada partición aloja un proceso Cada partición se coloca de acuerdo a algún criterio Genera fragmentación interna Particiones dinámicas La memoria se divide en particiones que varían en tamaño y en número Cada partición aloja un proceso Cada partición se genera en base al tamaño justo que necesita el proceso, de forma dinámica Genera fragmentación externa Fragmentación Interna Se produce en particiones fijas Es la porción de la partición que se asigna a un proceso y no se utiliza No solucionable Externa Se produce en particiones dinámicas Son huecos que van quedando en la memoria a medida que los procesos finalizan Al no encontrarse en forma contigua puede darse el caso de que tengamos memoria libre para alocar un proceso pero que ese espacio no lo podamos utilizar por no ser del tamaño necesario Se puede solucionar utilizando la compactación, pero es un proceso costoso Problemas del esquema de registro límite y base Necesidad de almacenar el espacio de direcciones de forma continua en la memoria física Fragmentación Mantener partes del proceso que no son necesarias Los esquemas de particiones fijas y dinámicas no se utilizan hoy en día Su solución es la segmentación y paginación Segmentación El programa se divide en partes/secciones Un programa es una colección de segmentos o Un segmento es una unidad lógica. Por ej: Programa principal, procedimientos, funciones, variables locales, variables globales, stack, etc.. Puede causar fragmentación externa Todos los segmentos de un programa pueden tener distintos tamaños Las direcciones lógicas consisten en 2 partes o Selector de segmento o Desplazamiento dentro del segmento Tabla de segmentos: Cada proceso tiene su propia tabla o Permite mapear la dirección lógica en física. Cada entrada contiene ▪ Base: Dirección física de comienzo del segmento ▪ Límite: Longitud del segmento Segment Table Base Register (STBR): Apunta a la ubicación de la tabla de segmentos Segment Table Length Register (STLR): Cantidad de segmentos de un programa Esta técnica permite que dos procesos iguales tengan direcciones lógicas que se traduzcan a la misma dirección física. Permitiendo compartir segmentos y además protegerlos entre procesos distintos. Visible al programador Facilita la modularidad, estructuras de datos grandes y da mejor soporte a la compartición y protección Paginación Memoria física dividida lógicamente en “marcos” (Trozos pequeños de igual tamaño) Memoria lógica (espacio de direcciones) en páginas (Trozos de igual tamaño que los marcos) El S.O debe mantener una tabla de páginas por cada proceso. o Cada tabla contiene (entre otras) el marco en la que se coloca cada página La dirección lógica se interpreta como un número de página y un desplazamiento dentro de la misma Puede causar fragmentación interna Una misma página no puede tener 2 segmentos No usa algoritmo de “fit” para colocar los procesos Transparente al programador Elimina la fragmentación externa Segmentación Paginada Cada segmento es dividido en páginas de tamaño fijo (igual a un marco de memoria) Si un segmento es inferior a una página, ocupará únicamente una página Cada proceso tiene una tabla de segmentos y cada uno de estos segmentos tiene su propia tabla de páginas Un registro mantiene la dirección de comienzo de la tabla de segmentos del proceso Es más eficiente trabajar con páginas en memoria principal porque no hay algoritmos de “fit” y hay poca fragmentación La segmentación permite compartir segmentos entre procesos Las direcciones virtuales están formadas por el número de segmento, el número de página y un desplazamiento Para buscar o Se utiliza primero el número de segmento para encontrar las páginas asociadas a ese segmento (tabla de páginas del segmento) o Luego se utiliza el número de página para buscar el número de marco dentro de la tabla de páginas del segmento o Finalmente se utiliza el desplazamiento para generar la dirección real requerida Puede producir fragmentación interna Protección y compartición Protección: Como cada entrada en la tabla de segmentos incluye la longitud y la dirección base, un programa no puede acceder a posiciones fuera de los límites del segmento Compartición: Un segmento puede ser referenciado desde las tablas de segmentos de más de un proceso

Use Quizgecko on...
Browser
Browser