resumen sistemas operativos

14
1 RESUMEN SISTEMAS OPERATIVOS INTRODUCCIÓN Sistema Operativo: programa que controla la ejecución de otros programas. Interfase entre las aplicaciones y el HW, actúa como intermediario entre un usuario y el HW. Objetivos Comodidad: Hacer más cómodo el uso de la computadora. Eficiencia: Uso más eficiente en los recursos de un sistema. Habilidad de evolución: Permitir el desarrollo, prueba e introducción de nuevas funciones al sistema sin interferir con el servicio. Servicios Controlar la ejecución de procesos permitiendo su creación, terminación o suspensión y comunicación. Planificar el uso de la CPU a través del scheduling de procesos. Asignar memoria principal para el proceso en ejecución. Asignar memoria secundaria para uso eficiente y recuperación de datos del usuario. Permitir el acceso controlado desde los procesos a los dispositivos. Desarrollo de Programas: Editores y Depuradores Ejecución de Programas Acceso a dispositivos de E/S Acceso controlado a archivos Acceso al Sistema Detección de errores y respuestas Errores de HW internos y Externos: Errores de Memoria; Errores de Dispositivos Errores de SW: Errores Aritméticos; Acceso no permitido a direcciones de memoria Incapacidad del SO para conceder una solicitud de una aplicación Contabilidad: Recoger estadísticas del uso Monitorizar parámetros de rendimiento Anticipar necesidades de mejoras futuras Dar elementos si es necesario facturar tiempo de procesamiento Administración y planificación del procesador: Imparcialidad, “justicia” en la ejecución (Fairness); Que no haya bloqueos; Manejo de Prioridades. Administración de Memoria: Memoria física vs memoria virtual. Jerarquías de memoria; Protección de programas que compiten o se ejecutan concurrentemente. Administración del almacenamiento– Sistema de archivos: Acceso a medios de almacenamiento externos; Administración de dispositivos: Ocultamiento de dependencias de HW; Administración de accesos concurrentes Batch processing: Definición de un orden de ejecución; maximización del rendimiento (throughput) Requiere : procesador y memoria para ejecutarse. Perspectivas : De arriba hacia abajo: “oculta” el HW y presenta a los programas abstracciones más simples de manejar. Comodidad, “amigabilidad” (friendliness) De abajo hacia arriba: Explota/administra los recursos de HW de uno o más procesadores. Provee un conjunto de servicios a los usuarios del sistema. Maneja la memoria

Upload: joaquin-perez-leibovich

Post on 13-Dec-2015

12 views

Category:

Documents


0 download

DESCRIPTION

Para la facu

TRANSCRIPT

Page 1: RESUMEN SISTEMAS OPERATIVOS

1

RESUMEN SISTEMAS OPERATIVOS

INTRODUCCIÓN

Sistema Operativo: programa que controla la ejecución de otros programas. Interfase entre las aplicaciones y el HW, actúa como intermediario entre un usuario y el HW.

Objetivos

Comodidad: Hacer más cómodo el uso de la computadora.

Eficiencia: Uso más eficiente en los recursos de un sistema. Habilidad de evolución: Permitir el desarrollo, prueba e introducción de nuevas

funciones al sistema sin interferir con el servicio.

Servicios

Controlar la ejecución de procesos permitiendo su creación, terminación o suspensión y

comunicación. Planificar el uso de la CPU a través del scheduling de procesos. Asignar memoria principal para el proceso en ejecución. Asignar memoria secundaria para uso eficiente y

recuperación de datos del usuario. Permitir el acceso controlado desde los procesos a los dispositivos.

Desarrollo de Programas: Editores y Depuradores

Ejecución de Programas

Acceso a dispositivos de E/S

Acceso controlado a archivos

Acceso al Sistema

Detección de errores y respuestas

Errores de HW internos y Externos: Errores de Memoria; Errores de Dispositivos

Errores de SW: Errores Aritméticos; Acceso no permitido a direcciones de memoria

Incapacidad del SO para conceder una solicitud de una aplicación

Contabilidad:

Recoger estadísticas del uso

Monitorizar parámetros de rendimiento

Anticipar necesidades de mejoras futuras

Dar elementos si es necesario facturar tiempo de procesamiento

Administración y planificación del procesador: Imparcialidad, “justicia” en la ejecución

(Fairness); Que no haya bloqueos; Manejo de Prioridades.

Administración de Memoria: Memoria física vs memoria virtual. Jerarquías de memoria;

Protección de programas que compiten o se ejecutan concurrentemente.

Administración del almacenamiento– Sistema de archivos: Acceso a medios de

almacenamiento externos;

Administración de dispositivos: Ocultamiento de dependencias de HW; Administración de

accesos concurrentes

Batch processing: Definición de un orden de ejecución; maximización del rendimiento

(throughput)

Requiere: procesador y memoria para ejecutarse.

Perspectivas:

De arriba hacia abajo: “oculta” el HW y presenta a los programas abstracciones más

simples de manejar. Comodidad, “amigabilidad” (friendliness)

De abajo hacia arriba: Explota/administra los recursos de HW de uno o más

procesadores. Provee un conjunto de servicios a los usuarios del sistema. Maneja la memoria

Page 2: RESUMEN SISTEMAS OPERATIVOS

2

secundaria y dispositivos de I/O. Ejecución simultánea de programas. Multiplexación en tiempo

(CPU) y en espacio (memoria).

Registros del Procesador

Visibles por el usuario: Le permiten al programador optimizar el acceso a memoria

principal. Pueden ser referenciados por lenguaje de máquina. Tipos de registros

Datos

Direcciones: Index, Segment pointer, Stack pointer.

De Control y estado: Para control operativo del procesador. Usados por rutinas

privilegiadas del SO para controlar la ejecución de programas.

Program Counter (PC): Contiene la dirección de la próxima instrucción a ser

ejecutada.

Instruction Register (IR): Contiene la instrucción recientemente ejecutada

Program Status Word (PSW): Contiene códigos de resultado de operaciones.

Habilita/deshabilita Interrupciones. Indica el modo de ejecución (Supervisor/user).

Ejecución de una instrucción:

Procesador lee la instrucción desde la memoria

Procesador ejecuta la instrucción

Instrucción: Fetch y Execute

El procesador busca (fetch) la instrucción en la memoria y se pone en el IR. Categorías: Procesador-memoria: Transfiere datos entre estos.

Procesador-I/O: Transfiere datos a/o desde periféricos.

Procesamiento de Datos: Operaciones aritméticas o lógicas sobre datos.

Control: Alterar secuencia de ejecución

El PC se incrementa después de cada fetch.

DMA: el intercambio de I/O ocurre directamente con la memoria. El procesador le da autoridad

al dispositivo de I/O para leer o escribir a memoria.

Interrupciones: Interrumpen el secuenciamiento del procesador en la ejecución de un proceso.

Dispositivos de I/O más lentos que el procesador.

Clases:

Programadas: generadas por una condición que ocurre como resultado de la ejecución

de una instrucción.

Reloj: generada por un reloj con el procesador. Esto le permite al SO realizar ciertas

funciones regularmente.

Entrada/Salida: generada por un controlador de entrada salida, para señalar la

terminación o el error de operación.

Falla de HW: falla de energía o error de paridad de memoria, por ejemplo.

Interrupt Handler: rutina que atiende una determinada interrupción. Generalmente es parte

del SO.

Ciclo de interrupción: El procesador chequea la existencia de interrupciones. Si no existen

interrupciones, la próxima instrucción del programa es ejecutada. Si hay pendiente alguna

interrupción, se suspende la ejecución del programa actual, se guarda el contexto y se ejecuta la

rutina de manejo de interrupciones.

Múltiples interrupciones:

Deshabilitar las interrupciones mientras una está siendo procesada.

Definir prioridades.

Page 3: RESUMEN SISTEMAS OPERATIVOS

3

Multiprogramación: Procesador tiene más de un programa para ejecutar. La secuencia de

programas es de acuerdo a prioridad, o espera de I/O. Después que se completa la atención de

la interrupción, el control puede o no retornar al programa que se estaba ejecutando al

momento de la interrupción.

KERNEL: Porción del S.O. que se encuentra en la memoria principal. Contiene las funciones

usadas más frecuentemente. Implementa servicios básicos: Manejo de memoria en general;

administración de procesos; comunicación y Concurrencia; gestión del Hardware.

TIPOS DE SO

Considerar que los dispositivos de e/s son más lentos que la CPU.

Monoprogramación: El procesador debe esperar que la instrucción de E/S se complete.

Multiprogramación: Cuando un trabajo necesita realizar E/S, el procesador puede ser utilizado

con otro trabajo. Tiempo compartido: el tiempo del procesador es compartido entre múltiples

trabajos. Múltiples usuarios podrían acceder simultáneamente al sistema utilizando terminales.

Sistemas paralelos: sistema con más de una CPU. Los procesadores comparten memoria

y reloj. Ventajas: aumentar productividad, economía, incrementar confiabilidad. Sistemas distribuidos: el trabajo es distribuido a lo largo de varios procesadores. Cada

procesador cuenta con su propia memoria local. La comunicación se da sobre líneas de

comunicación. Ventajas: compartir recursos, aumento de la productividad, confiabilidad, comunicación.

Sistemas de tiempo real: Utilizado para controlar dispositivos de aplicaciones delicadas como experimentos científicos, médicos, industria. Hay restricciones de tiempo que se DEBEN

respetar.

Sistemas portables: teléfonos Celulares. Características: Memoria Limitada, Procesadores

Lentos, Pequeñas pantallas.

Usuario – SO Shell, basado en texto o GUI (Graphical User Interfase), basado en gráficos o íconos.

Intérprete de comandos (Command interpreter; CI o CLI). Muestra el prompt. Implementa redirección de Input/Output, control de tareas, etc.

Modo de ejecución

El bit de modo indica el modo actual.

Las instrucciones privilegiadas deben ejecutarse en modo supervisor (necesitan

acceder a estructuras del kernel, o ejecutar código que no es del proceso). El SO se ejecuta en este modo.

Al arrancar el sistema. Las E/S se hacen en este modo.

Cuando hay un trap o una interrupción, el bit de modo se pone en modo supervisor:

Cuando el proceso de usuario intenta por sí mismo ejecutar instrucciones que pueden causar problemas (las llamadas instrucciones privilegiadas) esto el HW lo detecta como una operación

ilegal y produce un trap al SO. Manejo de: CPU, memoria, Input/Output.

Administración multiprocesador, diagnosticos, testing.

Partes del filesystem y la interfase de red.

Page 4: RESUMEN SISTEMAS OPERATIVOS

4

Cuando está en modo usuario, el proceso puede acceder sólo a su espacio de

direcciones, es decir a las direcciones “propias”.

Cuando comienzan a ejecutarse un proceso de usuario, este bit se pone en modo usuario.

Protección de la memoria: Delimitar el espacio de direcciones del proceso. Uso de

registro base y registro límite. El SO puede cargar valores en estos registros a través de instrucciones privilegiadas. Esta acción sólo puede realizarse en modo monitor. La zona de

protección base tiene un registro base y un registro límite, si quiero cargar valores en estos registros los hace el SO a través del modo supervisor.

Protección de la CPU: Uso de interrupción por clock para evitar que un proceso se

apropie de la CPU. Se implementa normalmente a través de un clock y un contador. El SO le da valor al contador que se decrementa con cada tick de reloj y al llegar a cero se produce la

expulsión del proceso. Las instrucciones que modifican el funcionamiento del cronómetro son privilegiadas. Se le asigna al contador el valor que se quiere que se ejecute un proceso. Se la

usa también para el cálculo de la hora actual, basándose en cantidad de interrupciones ocurridas cada tanto tiempo y desde una determinada fecha y hora.

System Calls: Se ejecutan en modo supervisor. Es la forma en que los programas de usuario acceden a los servicios del SO. Los parámetros asociados a las llamadas pueden pasarse

de varias maneras: por registros, bloques o tablas en memoria ó pilas. count=read(file, buffer, nbytes);

Categorías: Control de Procesos

Manejo de archivos Manejo de dispositivos

Mantenimiento de información del sistema Comunicaciones

Cómo se lleva a cabo una System Call? Se emite una interrupción para invocar al Kernel

int $0x80 Se llama al Interruption Handler

System Call Handler El proceso indica con un número la System Call

que desea invocar

Syscall Number

Cada System Call tiene un número asignado dentro del kernel. Nunca debe ser alterado ni

reutilizado en caso de desaparecer una SysCall.

sys_call_table: <kernel_code>/arch/i386/kernel/syscall_t

able.S

Tipos de Kernel:

Monolíticos: Linux. La interacción con el HW la lleva el kernel.

Microkernel: procesos que se comunican es más ineficiente que dos módulos que se

comunican

Page 5: RESUMEN SISTEMAS OPERATIVOS

5

PROCESOS

Un proceso es programa en ejecución, es decir, serie de pasos para llevar a cabo algo.

PROCESO vs. PROGRAMA

PROGRAMA PROCESO

Es estático. Es dinámico.

No tiene program counter. Tiene program counter.

Existe desde que se edita hasta que se borra. Su ciclo de vida comprende desde que se lo “dispara” hasta que termina.

Estructura

Un proceso tiene, como mínimo 3 partes o regiones:

Código, también llamado texto

Datos, variables globales

Stack que contiene datos temporarios como parámetros de subrutinas, variables

temporales y direcciones de retorno. Un proceso cuenta con 2 stack: uno para modo usuario y

otro para modo kernel; las cuales se crean automáticamente y su medida se ajusta en run-

time. El stack está formado por stack frames que son pushed (al llamar a una rutina) y popped

(cuando se retorna de ella). El stack frame tiene los parámetros a la rutina, variables locales, y

datos necesarios para recuperar el stack frame previo, el contador de programa y el valor del

stack pointer en el momento del llamado.

Atributos

Identificación del proceso, y del proceso padre.

Identificación del usuario o grupo que lo “disparó”

En ambientes multiusuaurio, desde que terminal y quien lo ejecuto.

PCB (Process Control Block)

Estructura asociada al proceso. Una por proceso. Contiene información asociada con

cada proceso: Estado, Contenido del PC (program counter), Contenido de los Registros de la

CPU. Es lo primero que se crea cuando se crea un proceso y lo último que se borra cuando

termina. Información relacionada con:

Planificación

Ubicación en memoria Accounting

Estado de I/O

Estructuras asociadas al proceso

Del proceso (PCB) De archivos que utiliza

De memoria que utiliza

Otras definiciones

Espacio de direcciones: conjunto de direcciones de memoria que ocupa el proceso, el cual no

incluye su PCB o tablas asociadas. Un proceso en modo usuario puede acceder sólo a su espacio

de direcciones; en modo kernel, a estructuras del kernel o a espacios de direcciones de otros

procesos.

Page 6: RESUMEN SISTEMAS OPERATIVOS

6

Contexto de un proceso: Incluye toda la información que el SO necesita para administrar el

proceso, y que la CPU necesita para ejecutarlo correctamente.

Ejemplo:

registros de cpu, inclusive el contador de programa;

prioridad del proceso

si tiene E/S pendientes, etc.

Cambio de contexto: Se produce cuando la CPU cambia de un proceso a otro. Entonces:

1. se debe resguardar información del proceso saliente, que pasa a espera y retornara después la CPU.

2. se debe cargar la información asociada al nuevo proceso y comenzar desde la instrucción siguiente a la ultima ejecutada.

El tiempo que pasa mientras esto se lleva a cabo, es tiempo no productivo de CPU. El tiempo

que consume depende del soporte de HW. Puede implementarse asociando un conjunto de

registros de CPU a cada proceso...

Colas de planificación:

De procesos: de todos los procesos en el sistema; De procesos listos: residentes en memoria principal, en estado de listo y esperando para

ejecutarse; De dispositivos: procesos esperando por un dispositivo de I/O.

Estados de un proceso

Un usuario “dispara” el proceso. Un proceso es creado por otro proceso: su proceso padre.

Nuevo (new): Se dice que un proceso está en estado de nuevo cuando apenas se encuentra en proceso de crearse. En este estado se crean las estructuras asociadas, y el

proceso queda en la cola de procesos, normalmente en espera de ser cargado en

memoria. Ejecutándose (running): El scheduler de corto plazo lo eligió para asignarle CPU.

Entonces, tendrá la CPU hasta que se termine el período de tiempo asignado (quantum) o hasta que necesite que se produzca un evento.

En espera (waiting): El proceso necesita que se cumpla un evento esperado para

continuar, el cual puede ser la terminación de una I/O solicitada, o la llegada de una señal por parte de otro proceso. Cuando esto sucede, el proceso sigue en memoria, pero

no tiene la CPU. Al cumplirse el evento, pasará al estado de listo. Listo para ejecutar (ready): El scheduller de largo plazo elige el proceso para cargarlo

en memoria. En este estado, el proceso (que está en la cola de procesos listos) sólo necesita que se le asigne CPU.

Terminado (terminated): Cuando un proceso se ha completado, su ejecución pasa a

ser un proceso terminado.

Page 7: RESUMEN SISTEMAS OPERATIVOS

7

Transiciones

New-Ready: Por elección del scheduler de largo plazo (carga en Memoria). Ready-Running: Por elección del scheduler de corto plazo, se le asigna a un proceso

CPU. Running-Waiting: el proceso se pone a dormir, esperando por un evento.

Waiting-Ready: Termino la espera y compite nuevamente por la CPU. CASO ESPECIAL: RUNNING-READY: Cuando el proceso termina su quantum (franja

de tiempo) sin haber necesitado interrumpirlo por un evento, pasa al estado de ready,

para competir por CPU, pues no está esperando por ningún evento...

Módulos de planificación

Son módulos del SO que realizan distintas tareas asociadas a la planificación. Tienen alta

prioridad de ejecución, pues al necesitar la CPU para ejecutarse, compiten también por ella.

Hay tres tipos:

Scheduler de long term: Controla el grado de multiprogramación, es decir, la cantidad

de procesos en memoria. Puede no existir este scheduler y absorber esta tarea el de

short term.

Scheduler de short term: a quién le doy la CPU de los que están listo. Lo hace el

dispatcher. El más frecuente, intervalos cortos entre ejecución y ejecución

Scheduler de medium term (swapping): Si es necesario, reduce el grado de

multiprogramación, para ello, saca temporariamente de memoria los procesos que sea

necesario para mantener el equilibrio del sistema.

Términos asociados: swap out (sacar de memoria), swap in (volver a memoria).

Sus nombres provienen de la frecuencia de ejecución.

Hay otros módulos, que pueden no existir como módulos separados de los schedulers vistos,

pero la función debe cumplirse. Ellos son:

Dispatcher: hace cambio de contexto, cambio de modo de ejecución...”despacha” el proceso

elegido por el short term (es decir, “salta” a la instrucción a ejecutar).

Loader: carga en memoria el proceso elegido por el long term.

Planificación

Necesidad de determinar

qué proceso se ejecutará a

continuación en un ambiente

multiprogramado.

CPU-bound: Mayor parte del tiempo utilizando la CPU

I/O-bound: Mayor parte del tiempo esperando por I/O

Velocidad de CPU aumento considerablemente respecto a dispositivos de I/O

Page 8: RESUMEN SISTEMAS OPERATIVOS

8

Pensar: Necesidad de atender rápidamente procesos I/O-bound para mantener el dispositivo

ocupado y aprovechar la CPU para procesos CPU-bound.

Algoritmos apropiativos y no apropiativos

Un algoritmo No Apropiativo (nonpreemptive) permite que el proceso se ejecute hasta el que

mismo (por su propia cuenta) abandona la CPU. Se bloquea, finaliza, etc. No hay decisiones de

planificación durante las interrupciones de reloj.

En los algoritmos Apropiativos existen situaciones que hacen que el proceso en ejecución sea

expulsado de la CPU.

Categorías de los algoritmos de planificación

Según el ambiente es posible requerir algoritmos de planificación diferentes, con diferentes

metas:

Equidad: Otorgar una parte justa de la CPU a cada proceso.

Balance: Mantener ocupadas todas las partes del sistema.

Ejemplos:

Procesos por lotes (batch): No existen usuarios que esperen una respuesta en una

terminal. Se pueden utilizar algoritmos no apropiativos. Metas de este tipo de algoritmos:

Rendimiento: Maximizar el número de trabajos por hora Tiempo de Retorno: Minimizar los tiempos entre el comienzo y la

finalización Uso de la CPU: Mantener la CPU ocupada la mayor cantidad de tiempo

posible

Ejemplos:

FCFS – First Come First Served

SJF – Shortest Job First

SRTF – Shortest Remaining Time First

Procesos Interactivos: No solo interacción con los usuarios. Son necesarios algoritmos apropiativos para evitar que un proceso acapare la CPU. Metas de este tipo de

algoritmos: Tiempo de Respuesta: Responder a peticiones con rapidez

Proporcionalidad: Cumplir con expectativas de los usuarios

Ejemplos:

Round Robin ; Prioridades ; Colas Multinivel ; SRTF

Procesos en Tiempo Real

Política vs mecanismo

Existen situaciones en las que es necesario que la planificación de uno o varios procesos se

comporte de manera diferente. Por ello, el algoritmo de planificación debe estar parametrizado,

de manera que los procesos/usuarios pueden indicar los parámetros para modificar la

planificación.

El Kernel implementa el mecanismo, mientras que el usuario/proceso utiliza los parámetros para

determinar la Política.

Ejemplo:

Un algoritmo de planificación por prioridades y una System Call que permite

modificar la prioridad de un proceso.

Page 9: RESUMEN SISTEMAS OPERATIVOS

9

Un proceso puede determinar las prioridades de los procesos que el crea, según

la importancia de los mismos.

ADMINISTRACIÓN DE MEMORIA

Divis

asignada eficientemente para contener el mayor número de procesos como sea posible.

Requisitos

Reubicación: El programador no debe ocuparse de conocer dónde será colocado el programa

para ser ejecutado. Mientras un proceso se ejecuta, puede ser sacado y traído a la memoria

(swap) y colocarse en diferentes lugares. Las referencias a la memoria se deben traducir según

dirección actual del proceso.

Protección: Los procesos no deben ser capaces de referenciar direcciones de memoria de otros

procesos (salvo que tengan permiso). El chequeo se debe realizar durante la ejecución: el SO no

puede 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; ej:

Rutinas comunes, librerías, espacios explícitamente compartidos, etc. Lleva a un mejor uso de la

memoria, evitando copias innecesarias de instrucciones

Espacio de direcciones

Rango de direcciones (a memoria) posibles que un proceso puede utilizar para direccionar

sus instrucciones y datos. El rango varía dependiendo de la arquitectura

32 bits: 0 .. 232 - 1

64 bits: 0 .. 264 – 1

Debe ser independiente de la ubicación “real” del proceso en la memoria.

Tipo de direcciones

Lógicas: Referencia a una localidad de memoria independiente de la asignación actual de los

datos en la memoria. Se debe realizar una traducción a una dirección física.

Físicas: La dirección absoluta en la memoria principal.

La CPU trabaja con direcciones lógicas. Para acceder a memoria principal, se deben transformar

en direcciones absolutas. Resolución de direcciones (address-binding): transformar la

dirección lógica en la dirección física correspondiente:

Resolución en momento de compilación y en tiempo de carga: Direcciones Lógicas

y Físicas son idénticas

Resolución en tiempo de ejecución:

Direcciones Lógicas y Físicas son diferentes

Direcciones Lógicas son llamadas “Direcciones Virtuales”

El mapeo entre “Virtuales” y “Físicas” es realizado por hardware (MMU (Memory

Management Unit)

Registros utilizados

Registro Base: Dirección de comienzo del proceso.

Registro Limite: Dirección final del proceso o medida del proceso.

Su valor se fija cuando el proceso es cargado a memoria (Context Switch).

Se utiliza la dirección lógica junto con el registro base para obtener una dirección física. El

resultado se compara con el valor del registro límite. Si la dirección generada es incorrecta, se

genera una interrupción al SO.

Page 10: RESUMEN SISTEMAS OPERATIVOS

10

Binding de direcciones

Las direcciones en los programas fuentes son simbólicas. Compiladores relacionan direcciones

simbólicas con direcciones reubicables. El linkeditor/cargador relaciona las direcciones

reubicables con direcciones absolutas.

Memory Management Unit (MMU)

Dispositivo de Hardware que mapea direcciones virtuales a físicas. Es parte del Procesador. Re -

programar el MMU es una operación privilegiada que solo puede ser realizada en modo Kernel. 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. Los procesos nunca ver direcciones físicas.

Carga dinámica

Una rutina no es cargada hasta que no es llamada. Todas las rutinas se mantienen en el disco en

un formado “reubicable”. Cuando una rutina invoca a otra: Se chequea que ya no haya sido

cargada. Si no se cargo, se llama al “cargador” para que la cargue. El “cargador” actualiza el

espacio de direcciones del proceso. El control es pasado a la nueva rutina. Mejor utilización de

la memoria: rutinas no utilizadas no son nunca cargadas

Linkeo Dinámico

Similar a la carga dinámica. El linkeo es postergado hasta el momento de “runtime”. Las

librerías dinámicas no son “adjuntadas estáticamente” al proceso, solo un pequeño “stub” es

adjuntado (el cual indica cómo cargar la rutina apropiada). Todos los programas pueden utilizar

la misma copia de una librería (código) (DLLs). El Linkeo Dinámico requiere soporte del S.O. el

cual es el único que puede localizar una librería en el espacio de direcciones de otro proceso.

Asignación de memoria

La memoria principal debe ser organizada para contener el S.O. (rutinas, librerías, estructuras) y

procesos. El S.O. debe protegerse de cambio de los procesos. Procesos deben protegerse unos

de otros.

Única Partición:

Los procesos ocupan una única partición de memoria

La protección se implementa por un “límite” y un registro de “reubicación”

Particiones

La memoria es dividida en varias regiones (particiones). Los procesos (su espacio de

direcciones) se colocan en las particiones según su tamaño. Técnicas:

Particiones Fijas: Regiones definidas con limites fijados.

Tamaños:

Igual Tamaño

Cualquier proceso cuyo tamaño es menor igual que la partición puede ser

colocado en una partición libre. Si todas están ocupadas Swap. Un programa

puede no entrar en la partición. Ineficiencia: Cualquier programa, sin importar su

tamaño, ocupara una partición.

Diferente Tamaño: Evita el problema de las particiones de igual

tamaño. Complejidad en el algoritmo de selección de partición para un proceso.

Particiones Dinámicas: Las particiones son de tamaño y numero variable. Los

procesos son colocados exactamente en particiones de igual a su tamaño (generadas

dinámicamente).

Fragmentación: Espacio libre de la memoria que no puede ser utilizado por NO

encontrarse de manera contigua.

Page 11: RESUMEN SISTEMAS OPERATIVOS

11

Interna Particiones Fijas: Espacio dentro de la partición sin utilizar

Externa Particiones Dinámicas: Cada vez que entra y sale un proceso se

genera huecos en la memoria, en los que eventualmente un proceso no podría entrar,

pero si entraría si unimos todos los huecos COMPACTACION

Algoritmos de ubicación

Particiones Fijas de igual tamaño: No se necesita un algoritmo

Particiones Fijas de diferente tamaño y Particiones Dinámicas:

First Fit: Recorre las particiones libres en orden, buscando la primera que contenga el

proceso.

Best Fit: Selecciona la partición más pequeña que contiene al proceso. Mucho overhead

en la búsqueda. En particiones dinámicas: se generan muchos huecos pequeños de

memoria libre Fragmentación externa

Worst Fit: Selecciona la partición libre más grande que contenga el proceso. Mal uso en

Particiones Fijas. Buen uso en Particiones Dinámicas.

Next Fit: Mantiene las particiones libres como una lista circular. Selecciona la primera

partición que encuentra que contenga el proceso.

Superposiciones (overlapping): El tamaño de los procesos y sus datos puede exceder el

tamaño de la memoria. Conceptos: Separar el programa en módulos. Cargar los módulos

alternativamente. El dispositivo de “superposiciones” localiza los módulos en el disco. Los

módulos superpuestos se guardan como imágenes absolutas de memoria. Se requiere soporte

de los compiladores.

Swapping: Un proceso puede ser temporalmente sacado de la memoria (swapped out) a un

disco de manera de permitir la ejecución de procesos. Si se descarga considerando las

direcciones físicas.

Al hacer swapped in se debe cargar: en el mismo espacio de memoria que ocupaba antes. Si se

descarga considerando las direcciones lógicas. Se puede cargar en cualquier espacio de

direcciones de memoria.

Paginación

La memoria es dividida lógicamente en pequeños trozos de igual tamaño Marcos

El espacio de direcciones de cada proceso es dividido en trozos de igual tamaño que los

marcos Páginas

El SO mantiene una tabla de páginas por cada proceso:

Contiene el marco en el que está situada cada página.

La dirección lógica consiste en un número de página y un desplazamiento dentro de la

misma.

Segmentación

Esquema que soporta el “punto de vista de un usuario”. Un programa es una colección de

segmentos. Un segmento es una unidad lógica como: Programa Principal, Procedimientos y

Funciones, variables locales y globales, stack, etc. Similar a particiones dinámicas. Todos los

segmentos de un programa pueden no tener el mismo tamaño (código, datos, rutinas). Las

direcciones Lógicas consisten en 2 partes:

Selector de Segmento

Desplazamiento dentro del segmento

Arquitectura

Tabla de Segmentos: Permite mapear la dirección lógica en física. Cada entrada

contiene:

Base: Dirección física de comienzo del segmento

Page 12: RESUMEN SISTEMAS OPERATIVOS

12

Limit: 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

Segmentación Paginada

La paginación: Transparente al programador. Elimina Fragmentación externa.

Segmentación: Es visible al programador. Facilita modularidad, estructuras de datos grandes y

da mejor soporte a la compartición y protección.

Cada segmento es dividido en paginas de tamaño fijo.

El SO puede traer a memoria las “piezas” de un programa a medida que se las solicita.

Definiremos como “Conjunto Residente” a la porción del espacio de direcciones del proceso

que se encuentra en memoria. Con el apoyo del HW se detecta cuándo se necesita una porción

del proceso que no está en su Conjunto Residente

Ventajas: Más procesos pueden ser mantenidos en memoria. Sólo son cargadas algunas

secciones de cada proceso. Con más número de procesos en la memoria principal es más

probable que existan más procesos Ready. Un proceso puede ser más grande que la memoria

Principal. El usuario no se debe preocupar por el tamaño de sus programas. La limitación la

impone el HW y el bus de direcciones.

¿Qué se necesita? El hardware debe soportar paginación por demanda (y/o segmentación). Un

dispositivo de memoria secundaria (disco) que dé el apoyo para almacenar las secciones del

proceso que no están en Memoria Principal (área de intercambio). El SO debe ser capaz de

manejar el movimiento de las páginas (o segmentos) entre la memoria principal y la secundaria

Memoria virtual con paginación

Cada proceso tiene su tabla de páginas. Cada entrada en la tabla referencia al marco en el que

se encuentra la página en la memoria principal. Cada entrada en la tabla de páginas tiene bits

de control (entre otros):

Bit V: Indica si la página se encuentra en memoria o no.

Bit M: Indica si la página fue modificada. Si se modificó se debe reflejar los cambios en

la Memoria Secundaria.

Fallo de página: Ocurre cuando se intenta utilizar una dirección página que no se encuentra en

la memoria principal. El bit V es controlado por el HW. El HW detecta la situación y genera un

trap al S.O. El S.O. coloca al proceso en estado de “Blocked” (espera). El S.O. busca un “Frame

Libre” y genera una operación de E/S al disco para subir a dicho Frame la porción (página) de l

proceso que se necesita. El SO puede asignarle la CPU a otro proceso. La E/S se realizará y

avisará mediante interrupción su finalización. Cuando la operación de E/S finaliza el SO:

Actualiza la tabla de páginas. Coloca el Bit V en 1. Coloca la dirección base del Frame donde se

colocó la página. El proceso que generó el Fallo de Página vuelve estado de Ready (listo).

Performance: Tasa de Fallo de página 0 <= p <= 1.0

Si p = 0 no hay page faults

Si p = 1, cada a memoria genera un page fault

Effective Access Time (EAT): EAT = (1 – p) x memory access

+ p (page fault overhead

+ [swap page out ]

+ swap page in

+ restart overhead)

Tabla de páginas: Cada proceso tiene su tabla de páginas. El tamaño de la tabla de páginas

depende del espacio de direcciones del proceso. El SO pagina las tablas de cada proceso.

Organización: La forma de organizarla depende del HW subyacente

Tabla de 1 nivel: Tabla única lineal

Tabla de 2 niveles (o más)

Page 13: RESUMEN SISTEMAS OPERATIVOS

13

Tabla invertida (Hashing): Utilizada en Arquitecturas donde el espacio de direcciones es

muy grande. Las tablas de paginas ocupan muchos niveles y la traducción es costosa. El número

de página es transformado en un valor de HASH. Con el valor se busca en una tabla asociativa

en Frame. Sólo mantener PTEs de páginas presentes en memoria física. Tabla invertida

organizada como tabla hash en memoria principal: Buscar asociativamente por número de

página virtual. Si está presente en tabla, extraer marco de página y protecciones. Si no está

presente en tabla, corresponde a un fallo de página.

Tamaño de página

Pequeño: Menor Fragmentación Interna. Más paginas requeridas por proceso. Tablas

de páginas mas grandes. Más paginas pueden residir en memoria

Grande: Mayor Fragmentación interna. La memoria secundaria esta diseñada para

transferir grandes bloques de datos más eficientemente. Más rápido mover páginas hacia la

memoria principal.

Translation Lookaside Buffer: Cada referencia en el espacio virtual puede causar 2 (o más)

accesos a la memoria física.

Uno (o más) para obtener la entrada en tabla de paginas

Uno para obtener los datos

Para solucionar este problema, una

memoria cache de alta velocidad es

usada para almacenar entradas de

páginas: TLB. Contiene las entradas

de la tabla de páginas que fueron

usadas más recientemente. Dada

una dirección virtual, el procesador

examina la TLB. Si la entrada de la

tabla de paginas se encuentra en la

TLB (hit), es obtenido el frame y

armada la dirección física. Si la

entrada no es encontrada en la TLB

(miss), el número de página es

usado como índice en la tabla de

páginas del proceso. Se controla si la

página está en la memoria. Si no

está, se genera un Page Fault. La

TLB es actualizada para incluir la

nueva entrada.

Asignación de marcos

¿Cuántas paginas de un

proceso se pueden encontrar en

memoria? Tamaño del Conjunto

Residente

Asignación Dinámica: El número de marcos para cada proceso varía

Asignación Fija: Número fijo de marcos para cada proceso

Asignación equitativa: Ejemplo: si tengo 100 frames y 5 procesos, 20 frames para

cada proceso

Page 14: RESUMEN SISTEMAS OPERATIVOS

14

Asignación Proporcional: Se asigna acorde al tamaño del proceso.

Remplazo de páginas

¿Qué sucede si ocurre un fallo de página y todos los marcos están ocupados?

Se debe seleccionar una página víctima.

¿Cual sería Remplazo Optimo? Que la página a ser removida no sea referenciada en un

futuro próximo.

La mayoría de los remplazos predicen el comportamiento futuro mirando el

comportamiento pasado.

Alcance

Remplazo Global: El fallo de página de un proceso puede reemplazar la página de

cualquier proceso. El proceso no controla su tasa de page-faults. Puede tomar sólo frames de

otro proceso aumentando la cantidad de frames asignados a él. Un proceso de alta prioridad

podría tomar los frames de un proceso de menor prioridad.

Remplazo Local: El fallo de página de un proceso solo puede reemplazar sus propias

páginas – De su Conjunto Residente. No cambia la cantidad de frames asignados. El proceso

puede determinar cual es su tasa de page-faults. Un proceso puede tener frames asignados que

no usa, y no pueden ser usados por otros procesos.

Algoritmo de remplazo

OPTIMO

FIFO

LRU (Least Recently Used)

2da. Chance

NRU (Non Recently Used): Utiliza bits R y M; ~R ,~M > ~R, M > R, ~M > R, M