21.01.2014 Views

Sistema operativo

Sistema operativo

Sistema operativo

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

LECCIÓN 12<br />

SISTEMAS OPERATIVOS<br />

Prof. Ing. Miguel Angel Aguilar Ulloa<br />

© 2009-2010


© Copyright 2009. Ing. Miguel Angel Aguilar Ulloa.<br />

Última actualización: 24/10/2009.<br />

Usted es libre de:<br />

Copiar, distribuir y comunicar públicamente la obra.<br />

LICENCIA<br />

Hacer obras derivadas.<br />

Bajo las siguientes condiciones:<br />

Reconocimiento — Debe reconocer los créditos de la obra de la manera especificada<br />

por el autor o el licenciador (pero no de una manera que sugiera que tiene su apoyo o<br />

apoyan el uso que hace de su obra).<br />

No comercial — No puede utilizar esta obra para fines comerciales.<br />

Compartir bajo la misma licencia — Si altera o transforma esta obra, o genera una obra<br />

derivada, sólo puede distribuir la obra generada bajo una licencia idéntica a ésta.<br />

Texto de la licencia: http://creativecommons.org/licenses/by-nc-sa/3.0/legalcode.<br />

<strong>Sistema</strong>s <strong>operativo</strong>s | © 2009-2010 Prof. Ing. Miguel Angel Aguilar Ulloa<br />

2


1. Definición de un <strong>Sistema</strong> Operativo.<br />

2. Estructura de un <strong>Sistema</strong> Operativo.<br />

3. Kernel.<br />

4. Procesos.<br />

5. Calendarización de Procesos (Scheduling).<br />

6. Sincronización de Procesos.<br />

7. Manejo de Memoria.<br />

8. <strong>Sistema</strong>s de Archivos.<br />

9. <strong>Sistema</strong>s de E/S y Controladores de Dispositivos.<br />

10. <strong>Sistema</strong>s <strong>operativo</strong>s en tiempo real (RTOS).<br />

CONTENIDO<br />

<strong>Sistema</strong>s <strong>operativo</strong>s | © 2009-2010 Prof. Ing. Miguel Angel Aguilar Ulloa<br />

3


1. DEFINICIÓN DE SISTEMA OPERATIVO


Programas alambrados<br />

• En el inicio de la computación digital (e.g. ENIAC), el manejo del<br />

computador era manual por cada instrucción.<br />

• La arquitectura diseñada por John von Neumann presentaba una memoria<br />

que almacenaba datos e instrucciones, las cuales debían ser alimentadas<br />

manualmente.<br />

• Todas las instrucciones son en lenguaje máquina. El programador requiere<br />

un conocimiento electrónico detallado de cada parte del computador,<br />

incluyendo los dispositivos de entrada y salida de datos.<br />

DEFINICIÓN DE SISTEMA OPERATIVO<br />

• Caracterísicas:<br />

Lenguaje de programación: lenguaje de máquina por alambrado físico.<br />

Ventajas: los programas permanecían almacenados.<br />

Desventajas: programación tediosa.<br />

<strong>Sistema</strong>s <strong>operativo</strong>s | © 2009-2010 Prof. Ing. Miguel Angel Aguilar Ulloa<br />

5


ENIAC<br />

DEFINICIÓN DE SISTEMA OPERATIVO<br />

<strong>Sistema</strong>s <strong>operativo</strong>s | © 2009-2010 Prof. Ing. Miguel Angel Aguilar Ulloa<br />

6


Relays<br />

• Algún tiempo después (alrededor de 1955), los relays sustituyeron al<br />

cableado, y el ingreso de instrucciones se efectuaba a través de una consola<br />

de n bits con una palanca.<br />

• Características:<br />

Lenguaje de programación: lenguaje de maquina.<br />

Ventajas: no dependía de alambrado específico.<br />

Desventajas: depuración tediosa y en caso de error requería reescribir<br />

todo el programa.<br />

DEFINICIÓN DE SISTEMA OPERATIVO<br />

<strong>Sistema</strong>s <strong>operativo</strong>s | © 2009-2010 Prof. Ing. Miguel Angel Aguilar Ulloa<br />

7


Tarjetas perforadas<br />

• Una forma de automatización fue el diseño de lectores de tarjetas<br />

perforadas divididas en filas y columnas, representando bits.<br />

• Surge el concepto de cargador de programa, que para el caso de las<br />

tarjetas perforadas era la maquina electrónica encargada de leer las<br />

tarjetas.<br />

• Características:<br />

Lenguaje de programación: lenguaje máquina mediante las tarjetas<br />

perforadas.<br />

Ventajas: muchas instrucciones podían ser escritas en una sola tarjeta,<br />

automatización del sistema de carga.<br />

Desventajas: sigue siendo lenguaje de maquina.<br />

DEFINICIÓN DE SISTEMA OPERATIVO<br />

<strong>Sistema</strong>s <strong>operativo</strong>s | © 2009-2010 Prof. Ing. Miguel Angel Aguilar Ulloa<br />

8


Tarjetas perforadas<br />

DEFINICIÓN DE SISTEMA OPERATIVO<br />

<strong>Sistema</strong>s <strong>operativo</strong>s | © 2009-2010 Prof. Ing. Miguel Angel Aguilar Ulloa<br />

9


Ensamblador<br />

• Junto al refinamiento del componente electrónico, el software empezó a<br />

evolucionar.<br />

• Se creo un lenguaje de bajo nivel que asignaba nombres simbólicos<br />

(nemónicos) a cada instrucción de lenguaje de maquina.<br />

• El ensamblador es el programa encargado de traducir nemónicos en<br />

lenguaje de maquina.<br />

• Características:<br />

Lenguaje de programación: lenguaje ensamblador.<br />

Ventajas: aumento dramático de la productividad, la depuración se<br />

convirtió en un elemento factible, diseño de las primeras bibliotecas de<br />

funciones.<br />

Desventajas: programas complejos.<br />

DEFINICIÓN DE SISTEMA OPERATIVO<br />

<strong>Sistema</strong>s <strong>operativo</strong>s | © 2009-2010 Prof. Ing. Miguel Angel Aguilar Ulloa<br />

10


Lenguaje de alto nivel<br />

• John Backus: programar debe ser una actividad intelectualmente<br />

productiva.<br />

• FORTRAN: primer lenguaje de alto nivel (HLL) traducido.<br />

• El HLL debe ser traducido a lenguaje de maquina o ensamblador.<br />

• Reto: la traducción debe ser eficiente.<br />

• Compilador: programa que traduce código de alto nivel a una forma de<br />

menor nivel.<br />

DEFINICIÓN DE SISTEMA OPERATIVO<br />

<strong>Sistema</strong>s <strong>operativo</strong>s | © 2009-2010 Prof. Ing. Miguel Angel Aguilar Ulloa<br />

11


Proceso de traducción del lenguaje de alto nivel<br />

HLL<br />

Compilador<br />

Lenguaje<br />

Ensamblador<br />

int d;<br />

for (d = 0; d < MAX_COUNTER; d++)<br />

.data<br />

mov r0, 0xAfd<br />

DEFINICIÓN DE SISTEMA OPERATIVO<br />

Ensamblador<br />

Lenguaje<br />

Maquina<br />

0000110101100<br />

0100111000000<br />

0000110001111<br />

<strong>Sistema</strong>s <strong>operativo</strong>s | © 2009-2010 Prof. Ing. Miguel Angel Aguilar Ulloa<br />

12


Operaciones comunes en un sistema<br />

• Ciertas operaciones se volvieron comunes para todos los programas, por<br />

lo que se crearon grupos de tarjetas con estas funciones:<br />

Inicializar dispositivos.<br />

Cargar un programa en memoria.<br />

Cargar el {compilador, ensamblador}.<br />

Ejecutar el {compilador, ensamblador}.<br />

Limpiar el estado entre programas.<br />

Aparece el Operador del sistema (Operador).<br />

DEFINICIÓN DE SISTEMA OPERATIVO<br />

<strong>Sistema</strong>s <strong>operativo</strong>s | © 2009-2010 Prof. Ing. Miguel Angel Aguilar Ulloa<br />

13


Operador del sistema = <strong>Sistema</strong> <strong>operativo</strong><br />

DEFINICIÓN DE SISTEMA OPERATIVO<br />

<strong>Sistema</strong>s <strong>operativo</strong>s | © 2009-2010 Prof. Ing. Miguel Angel Aguilar Ulloa<br />

14


<strong>Sistema</strong> <strong>operativo</strong><br />

• El siguiente paso en la historia fue el reemplazo de operador del sistema<br />

por una forma automatizada.<br />

• El sistema <strong>operativo</strong> es el sistema que se encarga de administrar el<br />

hardware para proveer un servicio al usuario, que no necesariamente<br />

conoce la arquitectura a bajo nivel.<br />

• Un sistema <strong>operativo</strong> es un conjunto coherente de programas cuya<br />

función es la administración del hardware del computador con el fin de<br />

brindar facilidades o servicios a sus usuarios, sean estos administradores de<br />

sistemas, desarrolladores o usuarios.<br />

DEFINICIÓN DE SISTEMA OPERATIVO<br />

<strong>Sistema</strong>s <strong>operativo</strong>s | © 2009-2010 Prof. Ing. Miguel Angel Aguilar Ulloa<br />

15


Condiciones de operación del sistema <strong>operativo</strong><br />

• El sistema <strong>operativo</strong> debe garantizar al usuario las siguientes condiciones<br />

de operación:<br />

Transparencia: el OS no debe interferir con el objetivo del usuario,<br />

ejecutado a través de las aplicaciones.<br />

Eficiencia: el OS debe consumir la menor cantidad de CPU y memoria.<br />

Seguridad: el OS debe garantizar que los recursos (en especial memoria y<br />

almacenamiento) son reservados y mantenidos de forma privada para los<br />

usuarios cuando estos lo requieran.<br />

Interfaz con el usuario: ejecución de comandos mediante instrucciones<br />

de texto (terminal) o metáforas graficas (GUI).<br />

Ejecución de programas: capacidad de cargar un archivo binario en<br />

memoria y ejecutar los contenidos del archivo.<br />

DEFINICIÓN DE SISTEMA OPERATIVO<br />

<strong>Sistema</strong>s <strong>operativo</strong>s | © 2009-2010 Prof. Ing. Miguel Angel Aguilar Ulloa<br />

16


Condiciones de operación del sistema <strong>operativo</strong><br />

Operaciones de E/S: acceso a dispositivos por medio de funciones<br />

especiales que garanticen uso eficiente de recursos.<br />

Almacenamiento persistente: definición, manejo y operación.<br />

Comunicación: definición de los mecanismos<br />

procesos, sean en un solo computador o en varios.<br />

de comunicación entre<br />

Detección de errores: capacidad de actuar frente a errores de software,<br />

hardware o usuario y proveer facilidades de análisis.<br />

Reserva de recursos: el OS debe ser capaz de determinar que recursos se<br />

asignan a cada proceso y como deben distribuirse.<br />

Contabilización: el OS debe almacenar información sobre su uso para<br />

análisis y configuración.<br />

DEFINICIÓN DE SISTEMA OPERATIVO<br />

<strong>Sistema</strong>s <strong>operativo</strong>s | © 2009-2010 Prof. Ing. Miguel Angel Aguilar Ulloa<br />

17


2. ESTRUCTURA DE UN SISTEMA OPERATIVO


• Los OS presentan una estructura jerárquica:<br />

El hardware es el objeto que ejecuta el computo.<br />

El kernel o núcleo del sistema <strong>operativo</strong> se encarga de orquestar la<br />

asignación de recursos, en particular el CPU y dirigir diferentes módulos<br />

para manejo de diversos componentes de hardware.<br />

El shell, una interfaz de comandos directa a los servicios del sistema que<br />

permite cargar otros procesos.<br />

El ecosistema de aplicaciones de usuario, que hacen uso de los servicios<br />

del OS por medio de interfaces de software.<br />

Esta estructura en capas permite al OS crecer de forma ortogonal<br />

(independencia entre niveles).<br />

ESTRUCTURA DE UN SISTEMA OPERATIVO<br />

<strong>Sistema</strong>s <strong>operativo</strong>s | © 2009-2010 Prof. Ing. Miguel Angel Aguilar Ulloa<br />

19


Usuario<br />

Aplicaciones<br />

Servicios (API)<br />

Núcleo<br />

Shell<br />

Drivers<br />

ESTRUCTURA DE UN SISTEMA OPERATIVO<br />

Hardware<br />

*Los bloques en rojo corresponden al sistema <strong>operativo</strong> como tal<br />

<strong>Sistema</strong>s <strong>operativo</strong>s | © 2009-2010 Prof. Ing. Miguel Angel Aguilar Ulloa<br />

20


ESTRUCTURA DE UN SISTEMA OPERATIVO<br />

<strong>Sistema</strong>s <strong>operativo</strong>s | © 2009-2010 Prof. Ing. Miguel Angel Aguilar Ulloa<br />

21


3. KERNEL


Núcleo de un sistema <strong>operativo</strong> (Kernel)<br />

• Es el software responsable de facilitar a aplicaciones acceso al hardware de la<br />

computadora. Es así como es el encargado de gestionar recursos de hardware, a<br />

través de servicios de llamada al sistema.<br />

KERNEL<br />

• La funciones de arranque más importantes son:<br />

Inicializar los registros del procesador.<br />

Inicializar la memoria.<br />

Inicializar los dispositivos del sistema.<br />

Definir las funciones del vector de interrupciones.<br />

Inicializar las colas de calendarización de procesos.<br />

Identificar y montar los medios de almacenamiento persistentes.<br />

Inicializar los servicios del sistema <strong>operativo</strong>.<br />

• Las funciones más importantes en tiempo de ejecución son :<br />

La comunicación entre los programas y el hardware.<br />

Gestión de los distintos programas (tareas) de una máquina.<br />

Gestión del hardware (memoria, procesador, periférico, forma de<br />

almacenamiento, entre otros).<br />

<strong>Sistema</strong>s <strong>operativo</strong>s | © 2009-2010 Prof. Ing. Miguel Angel Aguilar Ulloa<br />

23


El Kernel y las Instrucciones de CPU<br />

• Las instrucciones que ejecuta un computador pueden ser potencialmente<br />

peligrosas si su uso es indiscriminado.<br />

KERNEL<br />

• El procesador mediante un registro y usualmente interrupciones de<br />

hardware dividen las instrucciones en dos modos:<br />

Modo supervisor o privilegiado: instrucciones que solamente el SO puede<br />

acceder.<br />

Modo no privilegiado: instrucciones que cualquier proceso puede acceder<br />

El kernel inicia en modo privilegiado.<br />

<strong>Sistema</strong>s <strong>operativo</strong>s | © 2009-2010 Prof. Ing. Miguel Angel Aguilar Ulloa<br />

24


Tipos de Kernel<br />

Monolitico: todos los servicios se ejecutan en espacio de memoria del<br />

kernel.<br />

KERNEL<br />

Microkernel: un kernel que implementa un conjunto mínimo de servicios<br />

como comunicación entre procesos, manejo de memoria y calendarización,<br />

y permite que se implementen otros servicios por medio de código en<br />

espacio de usuario (servidores o demonios).<br />

Nanokernel: el código que se ejecuta en modo supervisor del hardware<br />

es mínima, generalmente el kernel se reduce a drivers mínimos y el OS se<br />

implementa en espacio de usuario.<br />

Exokernel: un kernel que implementa llamadas a sistema de un sistema<br />

<strong>operativo</strong> para simular otro o proveer mejoras en rendimiento de<br />

aplicaciones.<br />

<strong>Sistema</strong>s <strong>operativo</strong>s | © 2009-2010 Prof. Ing. Miguel Angel Aguilar Ulloa<br />

25


Kernel monolítico vs microkernel<br />

KERNEL<br />

<strong>Sistema</strong>s <strong>operativo</strong>s | © 2009-2010 Prof. Ing. Miguel Angel Aguilar Ulloa<br />

26


Kernel de Linux<br />

KERNEL<br />

<strong>Sistema</strong>s <strong>operativo</strong>s | © 2009-2010 Prof. Ing. Miguel Angel Aguilar Ulloa<br />

27


Llamadas al sistema (System calls)<br />

• Las llamadas a sistema (system calls) son funciones que permiten a los<br />

programas acceder a los servicios del OS.<br />

KERNEL<br />

• Los system calls están disponibles a través de archivos que se incluyen en<br />

el código fuente.<br />

• Conforman una interfaz de software que presenta un comportamiento<br />

determinístico del sistema <strong>operativo</strong><br />

<strong>Sistema</strong>s <strong>operativo</strong>s | © 2009-2010 Prof. Ing. Miguel Angel Aguilar Ulloa<br />

28


Contextos de ejecución<br />

• También pueden verse como un mecanismo de protección del sistema<br />

<strong>operativo</strong> que separa los procesos en dos contextos de ejecución:<br />

KERNEL<br />

Contexto de usuario: los procesos que se ejecutan en este contexto son<br />

los programas de aplicación que pueden accederse desde alguna de las<br />

interfaces de usuario.<br />

Contexto del kernel: los procesos que se ejecutan en este contexto<br />

pueden acceder instrucciones privilegiadas.<br />

• Normalmente una llamada a sistema en espacio de usuario se traduce en<br />

una o mas llamadas de sistema en espacio del kernel.<br />

<strong>Sistema</strong>s <strong>operativo</strong>s | © 2009-2010 Prof. Ing. Miguel Angel Aguilar Ulloa<br />

29


Contextos de ejecución<br />

Espacio Usuario<br />

Espacio Kernel<br />

KERNEL<br />

Aplicación<br />

de usuario<br />

Biblioteca de C<br />

Kernel<br />

Llamada al<br />

sistema<br />

getpid(void)<br />

Transición al kernel (int 80)<br />

eax = _NR_getpid<br />

system_call<br />

system_call_table(eax)<br />

syscall_exit<br />

return<br />

sys_getpid()<br />

return<br />

resume_userspace<br />

<strong>Sistema</strong>s <strong>operativo</strong>s | © 2009-2010 Prof. Ing. Miguel Angel Aguilar Ulloa<br />

30


System calls en Linux<br />

• Linux se caracteriza por garantizar que la operación del sistema <strong>operativo</strong><br />

es segura, por lo tanto, las llamadas a sistema se ejecutan bajo la<br />

interrupción 0x80 con la llamada a sistema deseada como parámetro.<br />

KERNEL<br />

• El parámetro representa una entrada en el vector de interrupciones y<br />

excepciones donde se ha instalado previamente un manejador para la<br />

interrupción, llamado.<br />

<strong>Sistema</strong>s <strong>operativo</strong>s | © 2009-2010 Prof. Ing. Miguel Angel Aguilar Ulloa<br />

31


Agregar nuevos system calls<br />

• Si se desea agregar system calls en Linux, se requiere modificar y agregar<br />

los siguientes archivos:<br />

KERNEL<br />

/usr/src/linux/arch/i386/kernel/syscall_table.S<br />

/usr/src/linux/include/asm-i386/unistd.h<br />

/usr/src/linux/include/linux/syscalls.h<br />

/usr/src/linux/Makefile<br />

/usr/src/linux/mi_syscall/mi_syscall.c<br />

/usr/src/linux/mi_syscall/Makefile<br />

<strong>Sistema</strong>s <strong>operativo</strong>s | © 2009-2010 Prof. Ing. Miguel Angel Aguilar Ulloa<br />

32


4. PROCESOS


• Un programa es un archivo binario almacenado en memoria con la<br />

propiedad de contener código ejecutable que puede ser interpretado por<br />

un CPU.<br />

• Un proceso es una instancia dinámica (copia en memoria) de un programa<br />

que tiene un estado definido independiente de otras instancias.<br />

PROCESOS<br />

• Muchos procesos pueden compartir el mismo programa<br />

• Ejemplo: múltiples instancias del programa de copia de archivos cp en<br />

Linux.<br />

<strong>Sistema</strong>s <strong>operativo</strong>s | © 2009-2010 Prof. Ing. Miguel Angel Aguilar Ulloa<br />

34


Estructura de un proceso<br />

• Un proceso presenta las siguientes partes (segmentos):<br />

Text: código del programa, puede incluir símbolos para depuración si se<br />

especifica en tiempo de compilación.<br />

PROCESOS<br />

PC: contador de programa, indica la dirección de la instrucción actual.<br />

Data: contiene variables y estructuras de datos globales declaradas<br />

estáticamente.<br />

Stack: datos temporales como direcciones de retorno de funciones,<br />

variables locales y parámetros de llamada a funciones.<br />

Heap: área para reserva dinámica de memoria (estructuras de datos<br />

dinámicas), malloc().<br />

<strong>Sistema</strong>s <strong>operativo</strong>s | © 2009-2010 Prof. Ing. Miguel Angel Aguilar Ulloa<br />

35


Estructura de un proceso<br />

PROCESOS<br />

Stack<br />

Heap<br />

Data<br />

Text<br />

<strong>Sistema</strong>s <strong>operativo</strong>s | © 2009-2010 Prof. Ing. Miguel Angel Aguilar Ulloa<br />

36


Estados de un proceso<br />

• Los procesos pueden encontrarse en varios estados distintos:<br />

Nuevo: se crea una nueva instancia de un proceso en memoria y solicita<br />

ingreso a una de las colas de calendarización.<br />

Listo: se crea una estructura de datos en la cola y espera ser ejecutado.<br />

Ejecutándose: el calendarizador guarda el estado del proceso anterior (en<br />

particular el valor del IP), envía una señal al CPU para iniciar un<br />

temporizador por hardware que creara una interrupción posterior, coloca el<br />

valor del IP a la dirección de memoria de la función de inicio del proceso y le<br />

cede el CPU.<br />

En espera: cuando la interrupción ocurre, el manejador de<br />

interrupciones del temporizador cede el procesador al calendarizador,<br />

guarda el estado del proceso actual y lo coloca en la cola respectiva hasta<br />

que la condición de espera termine y pase nuevamente al estado de Listo.<br />

Terminado: el proceso ha finalizado su ejecución y puede ser eliminado,<br />

el OS reclama el espacio de memoria.<br />

PROCESOS<br />

<strong>Sistema</strong>s <strong>operativo</strong>s | © 2009-2010 Prof. Ing. Miguel Angel Aguilar Ulloa<br />

37


Estados de un proceso<br />

PROCESOS<br />

Nuevo<br />

En Espera<br />

Listo<br />

En Ejecucion<br />

Terminado<br />

<strong>Sistema</strong>s <strong>operativo</strong>s | © 2009-2010 Prof. Ing. Miguel Angel Aguilar Ulloa<br />

38


Cambio de contexto<br />

• Al proceso de asignar el CPU a un nuevo proceso se le denomina cambio<br />

de contexto.<br />

PROCESOS<br />

• El cambio de contexto ocurre dentro del modo privilegiado, por tanto, el<br />

kernel que ejecuta sus propios procesos debe guardar el estado de estos.<br />

• Cambiar de contexto es una operación costosa en CPU y una de las<br />

mayores penalizaciones de rendimiento, en particular en OS basados en<br />

microkernel.<br />

• PCB: process control block, la estructura de datos que se manipula en las<br />

colas de calendarización.<br />

<strong>Sistema</strong>s <strong>operativo</strong>s | © 2009-2010 Prof. Ing. Miguel Angel Aguilar Ulloa<br />

39


Bloque de control de proceso (Process control block)<br />

Estado del proceso<br />

PROCESOS<br />

ID del proceso<br />

Contador de Programa<br />

(PC)<br />

Registros del CPU<br />

Información de<br />

calendarización<br />

Información de la<br />

memoria<br />

Información<br />

estadística<br />

Información de E/S y<br />

descriptores de archivos<br />

<strong>Sistema</strong>s <strong>operativo</strong>s | © 2009-2010 Prof. Ing. Miguel Angel Aguilar Ulloa<br />

40


Crear un proceso<br />

• Todo proceso puede crear otros procesos por medio de un system call. El<br />

proceso que crea es un proceso padre, y los nuevos procesos son procesos<br />

hijos. Los procesos se organizan en arboles de procesos.<br />

PROCESOS<br />

• En términos de espacio de direcciones, existen dos posibilidades para un<br />

proceso nuevo:<br />

El proceso es un duplicado del padre.<br />

El proceso contiene un nuevo programa.<br />

En términos de ejecución, existen dos posibilidades:<br />

Los procesos hijo se ejecutan de forma concurrente al padre (no hay<br />

condición de espera).<br />

El padre espera a que los procesos hijo terminen.<br />

<strong>Sistema</strong>s <strong>operativo</strong>s | © 2009-2010 Prof. Ing. Miguel Angel Aguilar Ulloa<br />

41


La instrucción fork()<br />

• En sistemas estilo UNIX, fork() es una función que crea un proceso<br />

nuevo a partir de un proceso en ejecución.<br />

PROCESOS<br />

• El código del proceso es idéntico al código del proceso padre y puede ser<br />

reemplazado en tiempo de ejecución para hacer una llamada a otro proceso<br />

mediante la función execl().<br />

• Ambos procesos pueden ejecutarse en paralelo, y usualmente el proceso<br />

padre espera a la terminación de los procesos hijo por medio de la llamada<br />

wait().<br />

<strong>Sistema</strong>s <strong>operativo</strong>s | © 2009-2010 Prof. Ing. Miguel Angel Aguilar Ulloa<br />

42


Ejemplo del uso de fork()<br />

#include <br />

pid_t ch_pid;<br />

int ch_stat, status;<br />

char *p_arg1, *p_arg2;<br />

void exit();<br />

PROCESOS<br />

int main () {<br />

if ((ch_pid = fork()) < 0) {<br />

/* Could not fork... check errno */<br />

}<br />

}<br />

else if (ch_pid == 0) { /* child */<br />

(void)execl("/usr/bin/prog2", "prog", p_arg1, p_arg2, (char *)NULL);<br />

exit(2); /* execl() failed */<br />

}<br />

else { /* parent */<br />

while ((status = wait(&ch_stat)) != ch_pid) {<br />

if (status < 0 && errno == ECHILD)<br />

break;<br />

errno = 0;<br />

}<br />

}<br />

<strong>Sistema</strong>s <strong>operativo</strong>s | © 2009-2010 Prof. Ing. Miguel Angel Aguilar Ulloa<br />

43


Finalización de un proceso<br />

• Cuando un proceso alcanza la instrucción final en su ejecución, el sistema<br />

<strong>operativo</strong> reclama los recursos del proceso finalizado. El proceso pasa al<br />

estado de finalizado con lo que el sistema activa los mecanismos de<br />

recuperación de memoria, cierre de archivos abiertos y mecanismos de<br />

comunicación entre procesos.<br />

PROCESOS<br />

• Otras condiciones de terminación son:<br />

El proceso finalizo explícitamente por acción de otro proceso mediante<br />

una llamada a sistema.<br />

El proceso excedió los recursos asignados por el sistema <strong>operativo</strong>.<br />

El proceso he cumplido su función y su ejecución no es necesaria.<br />

El proceso padre finalizo y el sistema <strong>operativo</strong> requiere que los procesos<br />

hijos finalicen con el.<br />

<strong>Sistema</strong>s <strong>operativo</strong>s | © 2009-2010 Prof. Ing. Miguel Angel Aguilar Ulloa<br />

44


Procesos concurrentes en el sistema <strong>operativo</strong><br />

• En un OS pueden ocurrir tres condiciones con procesos ejecutándose en<br />

memoria:<br />

PROCESOS<br />

Dos procesos A y B son independientes si la ejecución de A no afecta de<br />

ninguna forma la ejecución de B, tanto en términos de proveer algún<br />

recurso o limitar los recursos del sistema.<br />

Dos procesos A y B son co<strong>operativo</strong>s si alguno de ellos provee recursos o<br />

facilidades al otro.<br />

Dos procesos A y B son competitivos si la ejecución de alguno de ellos<br />

limita la ejecución del otro en términos de recursos.<br />

Por definición todos los procesos compiten por CPU y memoria.<br />

<strong>Sistema</strong>s <strong>operativo</strong>s | © 2009-2010 Prof. Ing. Miguel Angel Aguilar Ulloa<br />

45


Comunicación entre procesos (IPC)<br />

• Gracias a los modelos de multiprogramación y a la presencia de unidades<br />

de procesamiento múltiples en arquitecturas modernas, es posible tener<br />

procesos que se ejecutan de forma simultanea en el sistema.<br />

PROCESOS<br />

• Algunas de las razones por las cuales se implementan mecanismos de<br />

comunicación entre procesos son:<br />

Compartir información de interés común de manera eficiente.<br />

Paralelismo potencial entre partes del código que pueden ejecutarse de<br />

forma concurrente (ARM+DSP).<br />

Modularidad en el diseño de componentes del sistema <strong>operativo</strong> donde<br />

se definen protocolos e interfaces de comunicación.<br />

Conveniencia para el usuario final debido a que el tiempo que toma un<br />

proceso es mucho mas rápido que el de la percepción.<br />

La comunicación entre procesos es no determinística.<br />

<strong>Sistema</strong>s <strong>operativo</strong>s | © 2009-2010 Prof. Ing. Miguel Angel Aguilar Ulloa<br />

46


El modelo de memoria compartida<br />

• La memoria compartida es un modelo de IPC que se basa en acceso<br />

concurrente a una memoria global para todos los procesos.<br />

PROCESOS<br />

• Esta memoria debe ser eficiente (múltiples procesos leen y escriben) y<br />

coherente (la semántica de operaciones sobre la memoria debe tomar en<br />

cuenta la concurrencia y evitar race conditions).<br />

• Los procesos operan usualmente como productores (escriben en espacios<br />

de la memoria compartida llamados buffers) y consumidores (leen de la<br />

memoria compartida).<br />

<strong>Sistema</strong>s <strong>operativo</strong>s | © 2009-2010 Prof. Ing. Miguel Angel Aguilar Ulloa<br />

47


Memoria compartida<br />

PROCESOS<br />

Datos<br />

Privados<br />

Proceso<br />

Datos<br />

Privados<br />

Proceso<br />

Memoria<br />

Compartida<br />

Proceso<br />

Datos<br />

Privados<br />

Proceso<br />

Datos<br />

Privados<br />

<strong>Sistema</strong>s <strong>operativo</strong>s | © 2009-2010 Prof. Ing. Miguel Angel Aguilar Ulloa<br />

48


Ejemplo de memoria compartida<br />

#include <br />

#include <br />

#include <br />

#include <br />

/* Declare storage to be shared across nodes globally so that virtual */<br />

/* addresses are identical on each node. */<br />

long srcBuf[] = {<br />

0xb1ffd1da,<br />

0xb00b00b1,<br />

0xfffedf1d,<br />

0x0badbeef,<br />

0xf1d0d1ed<br />

};<br />

long targetBuf[sizeof(srcBuf) / sizeof(long)];<br />

int main(int argc, char *argv[])<br />

{<br />

int thisPeId;<br />

int numNodes;<br />

/* Pass argc and argv by reference to allow shmem_initialize() to */<br />

/* remove the -np and -key arguments from argv. */<br />

shmem_initialize(&argc, &argv);<br />

thisPeId = my_pe();<br />

numNodes = num_pes();<br />

printf("PE number %d\n", thisPeId);<br />

barrier(); /* Let everyone get synchronized. */<br />

if (!thisPeId) {<br />

shmem_put (targetBuf, srcBuf, sizeof(srcBuf) / sizeof(long), 1);<br />

shmem_get (targetBuf, targetBuf, sizeof(srcBuf) / sizeof(long), 1);<br />

if (!memcmp(srcBuf, targetBuf, sizeof(srcBuf)))<br />

printf("shmem_put() and shmem_get() to node 1 succeeded.\n");<br />

else<br />

printf("shmem_put() and shmem_get() to node 1 failed.\n");<br />

}<br />

/* barrier() prevents node 1 from exiting before it serves the */<br />

/* put and get for node 0. */<br />

barrier();<br />

shmem_finalize();<br />

return (0);<br />

}<br />

PROCESOS<br />

<strong>Sistema</strong>s <strong>operativo</strong>s | © 2009-2010 Prof. Ing. Miguel Angel Aguilar Ulloa<br />

49


Paso de mensajes<br />

• El modelo de paso de mensajes se fundamenta en dos operaciones<br />

esenciales entre procesos:<br />

PROCESOS<br />

send(): envía un conjunto de datos a un proceso.<br />

receive(): recibe un conjunto de datos desde un proceso.<br />

• La comunicación puede ser sincrónica (requiere algún tipo de<br />

ordenamiento temporal) o asincrónica sin orden temporal.<br />

• Una de las características de este modelo es que la sincronización de<br />

procesos debe ser explicita mediante barreras o bloqueos.<br />

• No existe un orden cronológico por tiempo de reloj, debido a que el<br />

ordenamiento de los eventos depende de muchos factores no<br />

determinísticos (interrupciones, timers, operaciones de I/O).<br />

<strong>Sistema</strong>s <strong>operativo</strong>s | © 2009-2010 Prof. Ing. Miguel Angel Aguilar Ulloa<br />

50


Paso de mensajes<br />

PROCESOS<br />

<strong>Sistema</strong>s <strong>operativo</strong>s | © 2009-2010 Prof. Ing. Miguel Angel Aguilar Ulloa<br />

51


Hilos (Threads)<br />

• Cuando se requiere que las tareas compartan valores comunes tales como<br />

variables o estructuras de datos, los procesos presentan un inconveniente.<br />

PROCESOS<br />

• Cada proceso posee un espacio individual de memoria aislado, por lo tanto<br />

debe implementarse alguna forma de IPC.<br />

• IPC es costosa en el sistema <strong>operativo</strong> y tiene efectos complejos<br />

(normalmente negativos) en el orden que el calendarizador del sistema<br />

elige las prioridades que deben ejecutarse.<br />

• Los hilos son procesos livianos que tienen la propiedad de compartir un<br />

solo PBC por conjunto de procesos<br />

<strong>Sistema</strong>s <strong>operativo</strong>s | © 2009-2010 Prof. Ing. Miguel Angel Aguilar Ulloa<br />

52


Hilos (Threads)<br />

• Las aplicaciones de los hilos son variadas, pero generalmente se utilizan<br />

para atender muchas solicitudes de un mismo tipo con el mismo código.<br />

PROCESOS<br />

• Este modelo es útil para aplicaciones cliente/servidor, y en sistemas<br />

empotrados es útil para tener hilos de atención concurrentes que<br />

respondan a atención de eventos (i.e. un hilo que captura audio, un hilo que<br />

envía el audio al DSP y otro hilo que se encarga de enviar el audio<br />

decodificado a los parlantes).<br />

<strong>Sistema</strong>s <strong>operativo</strong>s | © 2009-2010 Prof. Ing. Miguel Angel Aguilar Ulloa<br />

53


Proceso de un solo hilo y multihilo<br />

Proceso de un solo hilo<br />

Proceso de múltiples hilos<br />

PROCESOS<br />

Código Datos Archivos<br />

Código Datos Archivos<br />

Registros<br />

Pila<br />

Registros<br />

Registros<br />

Registros<br />

Pila<br />

Pila<br />

Pila<br />

<strong>Sistema</strong>s <strong>operativo</strong>s | © 2009-2010 Prof. Ing. Miguel Angel Aguilar Ulloa<br />

54


Procesos e hilos en UNIX<br />

Proceso de un solo hilo<br />

Proceso de múltiples hilos<br />

PROCESOS<br />

stack<br />

.text<br />

Espacio de Usuario<br />

rutina1()<br />

var1<br />

var2<br />

main()<br />

rutina1()<br />

rutina2()<br />

Puntero<br />

de Pila<br />

PC<br />

Registros<br />

stack<br />

Hilo 1<br />

stack<br />

Hilo 2<br />

Espacio de Usuario<br />

rutina1()<br />

var1<br />

var2<br />

rutina2()<br />

var1<br />

var2<br />

Puntero<br />

de Pila<br />

PC<br />

Registros<br />

Puntero<br />

de Pila<br />

PC<br />

Registros<br />

.data<br />

arreglo1<br />

arreglo2<br />

ID de Proceso<br />

ID de Grupo<br />

ID de Usuario<br />

.text<br />

main()<br />

rutina1()<br />

rutina2()<br />

ID de Proceso<br />

ID de Grupo<br />

ID de Usuario<br />

.data<br />

arreglo1<br />

arreglo2<br />

<strong>Sistema</strong>s <strong>operativo</strong>s | © 2009-2010 Prof. Ing. Miguel Angel Aguilar Ulloa<br />

55


Pthreads<br />

#include <br />

#include <br />

#include <br />

void * thread1()<br />

{<br />

while(1){<br />

printf("Hello!!\n");<br />

}<br />

}<br />

void * thread2()<br />

{<br />

while(1){<br />

printf("How are you?\n");<br />

}<br />

}<br />

int main()<br />

{<br />

int status;<br />

pthread_t tid1,tid2;<br />

pthread_create(&tid1,NULL,thread1,NULL);<br />

pthread_create(&tid2,NULL,thread2,NULL);<br />

pthread_join(tid1,NULL);<br />

pthread_join(tid2,NULL);<br />

return 0;<br />

}<br />

PROCESOS<br />

<strong>Sistema</strong>s <strong>operativo</strong>s | © 2009-2010 Prof. Ing. Miguel Angel Aguilar Ulloa<br />

56


Ventajas de los hilos<br />

• El OS posee una mayor capacidad de respuesta y eficiencia debido a<br />

concurrencia incrementada.<br />

PROCESOS<br />

• Los recursos de un proceso pesado (o proceso común de sistema) pueden<br />

compartirse en tareas que interactúan, sin necesidad de mecanismos<br />

intermedios.<br />

• La creación de un proceso exige un tiempo de inicialización, así como<br />

mantener el estado del proceso es una actividad costosa, mientras que los<br />

hilos solamente requieren recorrer el estado del PCB.<br />

• Las arquitecturas modernas de computadores proveen mecanismos para<br />

manejo de hilos por hardware.<br />

<strong>Sistema</strong>s <strong>operativo</strong>s | © 2009-2010 Prof. Ing. Miguel Angel Aguilar Ulloa<br />

57


Modelos de sistemas multihilo<br />

• Al igual que en el caso de procesos, el cambio de contexto y las<br />

operaciones en hilos requieren administración por parte del Kernel.<br />

PROCESOS<br />

• Existen varios modelos mediante los cuales los hilos de espacio de usuario<br />

se mapean a hilos de espacio del kernel y el cambio de contexto ocurre<br />

entre ellos:<br />

En el modelo N a 1, muchos hilos de usuario son atendidos por un solo<br />

hilo del kernel.<br />

En el modelo 1 a 1, cada thread de espacio de usuario se mapea a un<br />

thread de espacio del kernel.<br />

En el modelo N a M, varios threads de espacio de usuario se mapean a un<br />

pool de hilos de espacio del kernel.<br />

<strong>Sistema</strong>s <strong>operativo</strong>s | © 2009-2010 Prof. Ing. Miguel Angel Aguilar Ulloa<br />

58


Modelos de sistemas multihilo<br />

Hilos de usuario<br />

N a 1<br />

PROCESOS<br />

Hilo de kernel<br />

K<br />

1 a 1<br />

Hilos de usuario<br />

N a N<br />

K K K Hilos de kernel K K K<br />

<strong>Sistema</strong>s <strong>operativo</strong>s | © 2009-2010 Prof. Ing. Miguel Angel Aguilar Ulloa<br />

59


5. CALENDARIZACIÓN DE PROCESOS (SCHEDULING)


• Una vez que el sistema <strong>operativo</strong> es capaz de manejar varios procesos de<br />

manera concurrente (real o simulada), se requiere determinar como<br />

ordenar la ejecución de los procesos. El SO debe tomar en cuenta varios<br />

aspectos:<br />

Los programas tienden a tener un comportamiento basado en las reglas<br />

de localidad espacial y localidad temporal.<br />

Localidad espacial: las instrucciones mas cercanas a la instrucción actual<br />

tienen mayor probabilidad de ejecutarse que otras mas lejanas.<br />

Localidad temporal: el 90% de tiempo de CPU se gasta en el 10% de las<br />

instrucciones.<br />

La mayor parte de las instrucciones mas onerosas no utilizan el CPU, sino<br />

que son las instrucciones de entrada/salida.<br />

CALENDARIZACIÓN DE PROCESOS (SCHEDULING)<br />

<strong>Sistema</strong>s <strong>operativo</strong>s | © 2009-2010 Prof. Ing. Miguel Angel Aguilar Ulloa<br />

61


El calendarizador de procesos (Scheduler)<br />

• El calendarizador de procesos es un trozo de código dentro del kernel<br />

(monolítico) o un modulo cargable (microkernel) cuya función es<br />

determinar el orden de los procesos de tal forma que la distribución de los<br />

recursos, en particular CPU, sea eficiente.<br />

• El calendarizador de procesos maneja estructuras de datos denominadas<br />

colas de prioridad, en las cuales a los procesos se les otorga un valor<br />

especial que indica si se eligen preferencialmente sobre otros a la hora de<br />

ceder el CPU.<br />

• Existen dos formas de calendarización: preemptiva en donde un proceso<br />

entrante, de tener mayor prioridad o en presencia de interrupciones que<br />

deban ser atendidas, cede el CPU a un nuevo proceso, y no preemptiva,<br />

donde los procesos tienen el procesador por el tiempo que se les asigna sin<br />

ceder el CPU a procesos de mayor prioridad.<br />

CALENDARIZACIÓN DE PROCESOS (SCHEDULING)<br />

<strong>Sistema</strong>s <strong>operativo</strong>s | © 2009-2010 Prof. Ing. Miguel Angel Aguilar Ulloa<br />

62


El dispatcher<br />

• Una vez que el calendarizador (scheduler) ha decidido mediante un<br />

algoritmo que implementa un modelo de scheduling cual proceso debe<br />

utilizar el CPU, un trozo de codigo del kernel, llamado el dispatcher, se<br />

encarga de pasar el control al proceso respectivo.<br />

• Cambia de contexto de ejecución del kernel a contexto de ejecución de<br />

usuario.<br />

• Cambiar el modo de operación a no privilegiado.<br />

• Colocar el valor del PC en la dirección de la siguiente instrucción del<br />

proceso que ahora utiliza el CPU.<br />

CALENDARIZACIÓN DE PROCESOS (SCHEDULING)<br />

<strong>Sistema</strong>s <strong>operativo</strong>s | © 2009-2010 Prof. Ing. Miguel Angel Aguilar Ulloa<br />

63


Control de procesos en el scheduler<br />

• A cada proceso se le asigna un tiempo, usualmente medido en<br />

milisegundos, para poder acceder al CPU. Ese valor se denomina un<br />

quantum.<br />

• Una vez que el kernel ha cedido el procesador, este debe retomar control<br />

del procesador para continuar las tareas administrativas.<br />

• Antes de ceder el procesador, el kernel inicializa un timer de hardware en<br />

el procesador que al finalizar lanza una interrupción que será atendida por<br />

una función definida en el vector de interrupciones que retorna el control al<br />

calendarizador.<br />

CALENDARIZACIÓN DE PROCESOS (SCHEDULING)<br />

<strong>Sistema</strong>s <strong>operativo</strong>s | © 2009-2010 Prof. Ing. Miguel Angel Aguilar Ulloa<br />

64


Criterios de calendarización<br />

• Con base en los siguientes criterios, se diseñan algoritmos de<br />

calendarización que buscan maximizar la eficiencia del sistema:<br />

Uso del CPU: al ser un recurso caro, el mantener el CPU ocupado el<br />

mayor tiempo posible es el objetivo del SO.<br />

Rendimiento (throughput): el trabajo neto que efectúa el CPU puede<br />

estimarse como la cantidad de procesos por unidad de tiempo que el CPU<br />

es capaz de terminar.<br />

Tiempo de finalización por proceso: desde el punto de vista de usuario o<br />

proceso individual, el tiempo que dure un proceso en finalizar.<br />

Tiempo de espera: una métrica de calendarización es cuanto tiempo<br />

debe esperar un proceso antes de ser atendido por el CPU.<br />

CALENDARIZACIÓN DE PROCESOS (SCHEDULING)<br />

Tiempo de respuesta: desde el primer momento en que un trabajo es<br />

iniciado en el procesador, el tiempo que toma en iniciar.<br />

<strong>Sistema</strong>s <strong>operativo</strong>s | © 2009-2010 Prof. Ing. Miguel Angel Aguilar Ulloa<br />

65


FCFS: First Come, First Served<br />

• FCFS se basa en colas FIFO, donde quien llega primero es atendido.<br />

• Este algoritmo es sencillo, y no requiere ningún tipo de prioridad mas que<br />

el tiempo de llegada.<br />

• El tiempo de dispatch es corto, pero los resultados son de baja eficiencia.<br />

• Efecto convoy: procesos pesados arrastran consigo el tiempo de espera de<br />

procesos que tardan menos tiempo, incrementando el tiempo de espera<br />

promedio de todos los procesos.<br />

CALENDARIZACIÓN DE PROCESOS (SCHEDULING)<br />

<strong>Sistema</strong>s <strong>operativo</strong>s | © 2009-2010 Prof. Ing. Miguel Angel Aguilar Ulloa<br />

66


Ejemplo de FCFS<br />

Proceso<br />

Tiempo de ejecución - Burst time (ms)<br />

P1 24<br />

P2 10<br />

P3 3<br />

• Si los procesos llegan en el orden P1, P2 y P3, se tiene el siguiente<br />

diagrama de Gantt:<br />

P1 P2 P3<br />

0 24 34 37<br />

• El tiempo de espera de P1 es 0ms, el de P2 es de 24ms y el de P3 es de<br />

34ms. Así el tiempo promedio de espera es (0 + 24 + 34)/3 = 19.33ms.<br />

• Si los procesos llegan en el orden P3, P2 y P1 el tiempo promedio de<br />

espera es (0 + 3 + 13)/3 = 5.33ms.<br />

CALENDARIZACIÓN DE PROCESOS (SCHEDULING)<br />

P3<br />

P2<br />

P1<br />

0 3 13 37<br />

<strong>Sistema</strong>s <strong>operativo</strong>s | © 2009-2010 Prof. Ing. Miguel Angel Aguilar Ulloa<br />

67


SJF: Shortest Job First<br />

• Una forma intuitiva de calendarizar procesos es dar prioridad a aquellos<br />

con una menor duración, dado que tenderán a terminar primero.<br />

• El calendarizador ordena los eventos por medio de estructuras de datos<br />

dinámicas que permiten calcular el siguiente proceso en la cola (usualmente<br />

un heap).<br />

• Presenta el menor tiempo de espera siempre y cuando sea posible<br />

implementar de forma eficiente el ordenamiento de procesos.<br />

• Requiere el calculo de una estimación del siguiente quantum, no<br />

necesariamente exacto.<br />

CALENDARIZACIÓN DE PROCESOS (SCHEDULING)<br />

<strong>Sistema</strong>s <strong>operativo</strong>s | © 2009-2010 Prof. Ing. Miguel Angel Aguilar Ulloa<br />

68


Ejemplo de SJF<br />

Proceso<br />

Tiempo de ejecución - Burst time (ms)<br />

P1 24<br />

P2 10<br />

P3 3<br />

• El orden de los procesos P1, P2 y P3, y se tiene el siguiente diagrama de<br />

Gantt:<br />

P3<br />

P2<br />

0 3 13 37<br />

• Entonces el tiempo promedio de espera es (0 + 3 + 13)/3 = 5.33ms.<br />

P1<br />

CALENDARIZACIÓN DE PROCESOS (SCHEDULING)<br />

<strong>Sistema</strong>s <strong>operativo</strong>s | © 2009-2010 Prof. Ing. Miguel Angel Aguilar Ulloa<br />

69


Calendarización por prioridad<br />

• En algunos casos, los procesos pueden tener mayor prioridad que otros en<br />

el funcionamiento del sistema.<br />

• Procesos de control de disco presentan mayor prioridad que procesos de<br />

control de despliegue grafico (siempre y cuando no sea un caso de<br />

visualización en tiempo real).<br />

• Un calendarizador por prioridad asigna un valor que indica cual proceso<br />

debe tener primero el CPU.<br />

CALENDARIZACIÓN DE PROCESOS (SCHEDULING)<br />

<strong>Sistema</strong>s <strong>operativo</strong>s | © 2009-2010 Prof. Ing. Miguel Angel Aguilar Ulloa<br />

70


Calendarización por prioridad<br />

• Considere el siguiente caso:<br />

Se tiene un proceso X de baja prioridad y m procesos de mayor prioridad.<br />

Si siempre entran procesos de mayor prioridad que la de X, X nunca entrara<br />

en estado de ejecución a pesar de estar en estado Listo. Esto se conoce<br />

como starvation o inanicion.<br />

En un sistema de colas multinivel como el caso de Linux, la prioridad<br />

representa la cola en la cual se debe colocar el proceso, lo cual determina el<br />

tiempo que se cede el procesador.<br />

CALENDARIZACIÓN DE PROCESOS (SCHEDULING)<br />

<strong>Sistema</strong>s <strong>operativo</strong>s | © 2009-2010 Prof. Ing. Miguel Angel Aguilar Ulloa<br />

71


Ejemplo de calendarización por prioridad<br />

Proceso<br />

Tiempo de ejecución -<br />

Burst time (ms)<br />

Prioridad<br />

P1 24 3<br />

P2 10 1<br />

P3 3 2<br />

• El orden de los procesos P2, P3 y P1, y se tiene el siguiente diagrama de<br />

Gantt:<br />

P2<br />

P3<br />

0 10 13 37<br />

• Entonces el tiempo promedio de espera es (0 + 10 + 13)/3 = 7.66ms.<br />

P1<br />

CALENDARIZACIÓN DE PROCESOS (SCHEDULING)<br />

<strong>Sistema</strong>s <strong>operativo</strong>s | © 2009-2010 Prof. Ing. Miguel Angel Aguilar Ulloa<br />

72


Round Robin<br />

• Un modelo de calendarización es dar a cada proceso la misma cantidad de<br />

tiempo de CPU.<br />

• Los procesos se colocan en una cola circular, en donde el quantum es<br />

idéntico.<br />

• Una de las ventajas de este enfoque es la asignación equitativa del<br />

procesador que conlleva a terminar tareas cortas rápidamente y al avance<br />

de tareas largas durante el mismo periodo.<br />

• El tiempo de espera es largo no obstante cuando los procesos toman<br />

tiempos mucho mayores que el quantum<br />

CALENDARIZACIÓN DE PROCESOS (SCHEDULING)<br />

<strong>Sistema</strong>s <strong>operativo</strong>s | © 2009-2010 Prof. Ing. Miguel Angel Aguilar Ulloa<br />

73


Ejemplo de Round Robin<br />

Proceso<br />

Tiempo de ejecución - Burst time (ms)<br />

P1 24<br />

P2 10<br />

P3 3<br />

• El orden de los procesos P2, P1 y P3, con un quantum de 5ms y se tiene el<br />

siguiente diagrama de Gantt:<br />

P2 P3 P1 P2 P1 P1 P1 P1<br />

0 5 8 13 18 23 28 33 37<br />

• Entonces el tiempo promedio de espera es (0 + 5 + 8)/3 = 4.33ms.<br />

CALENDARIZACIÓN DE PROCESOS (SCHEDULING)<br />

<strong>Sistema</strong>s <strong>operativo</strong>s | © 2009-2010 Prof. Ing. Miguel Angel Aguilar Ulloa<br />

74


<strong>Sistema</strong>s de colas multinivel<br />

• En sistemas computacionales modernos, generalmente el scheduling se<br />

compone de un sistema de colas para diferentes procesos y prioridades,<br />

donde cada cola presenta un valor distinto de prioridad y asignación de<br />

tiempo (i.e. el valor de nice en el calendarizador de Linux).<br />

Colas round robin: procesos críticos de sistema y servicios.<br />

Colas SJF: procesos por llamadas a programas.<br />

Colas de prioridad: llamadas a programas de usuario y manejo de<br />

interactividad.<br />

Colas FCFS: manejo de operaciones de escritura secuencial y respaldo.<br />

CALENDARIZACIÓN DE PROCESOS (SCHEDULING)<br />

<strong>Sistema</strong>s <strong>operativo</strong>s | © 2009-2010 Prof. Ing. Miguel Angel Aguilar Ulloa<br />

75


<strong>Sistema</strong>s de colas multinivel<br />

Procesos del sistema<br />

Procesos interactivos<br />

Procesos interactivos de edición<br />

Procesos de consola<br />

CALENDARIZACIÓN DE PROCESOS (SCHEDULING)<br />

Procesos de usuario<br />

<strong>Sistema</strong>s <strong>operativo</strong>s | © 2009-2010 Prof. Ing. Miguel Angel Aguilar Ulloa<br />

76


Evaluación de la calendarización<br />

• Existen varias formas para evaluar modelos de calendarización:<br />

Los modelos determinísticos suponen una carga determinada del sistema<br />

y efectúan análisis matemático del tiempo promedio de espera del proceso.<br />

Otra forma de efectuar el análisis es por medio de teoría de colas<br />

(investigación de operaciones) donde se estima probabilísticamente el<br />

tamaño del proceso y de esta forma, la distribución de probabilidad de la<br />

atención de procesos en el CPU.<br />

Finalmente, una de las formas mas comunes es construir un simulador<br />

(instancia en software del modelo de calendarización) y generar un diseño<br />

de experimentos que permita efectuar pruebas estadísticas sobre.<br />

CALENDARIZACIÓN DE PROCESOS (SCHEDULING)<br />

<strong>Sistema</strong>s <strong>operativo</strong>s | © 2009-2010 Prof. Ing. Miguel Angel Aguilar Ulloa<br />

77


6. SINCRONIZACIÓN DE PROCESOS


• Cuando dos o mas procesos en un sistema <strong>operativo</strong> comparten recursos,<br />

es necesario identificar en que puntos convergen.<br />

• Por ejemplo, suponga un buffer común que varios procesos escriben y<br />

leen de forma asincrónica.<br />

• ¿Que ocurre cuando dos procesos intentan incrementar el valor que indica<br />

el final del arreglo?.<br />

• ¿Cual valor es el correcto para los procesos que leen?.<br />

SINCRONIZACIÓN DE PROCESOS<br />

<strong>Sistema</strong>s <strong>operativo</strong>s | © 2009-2010 Prof. Ing. Miguel Angel Aguilar Ulloa<br />

79


Race conditions<br />

• Una race condition es una situación donde el flujo de ejecución presenta<br />

resultados incorrectos, a pesar de que la ejecución sigue un curso normal.<br />

• Las race conditions ocurren debido a la existencia de trozos de código que<br />

se ejecutan en paralelo compartiendo variables, y trozos de código que se<br />

ejecutan concurrentemente entre procesos.<br />

• Las secciones de código que comparten variables entre procesos se llaman<br />

secciones criticas.<br />

SINCRONIZACIÓN DE PROCESOS<br />

• El problema de sincronización en sistemas <strong>operativo</strong>s corresponde a<br />

encontrar un protocolo para el acceso a secciones criticas de tal forma que<br />

los procesos puedan cooperar.<br />

<strong>Sistema</strong>s <strong>operativo</strong>s | © 2009-2010 Prof. Ing. Miguel Angel Aguilar Ulloa<br />

80


Ejemplo de race condition<br />

A = 1;<br />

B = 1;<br />

C = A++ + B;<br />

P1: A = 1<br />

P2: A = 1<br />

P2: B = 1<br />

P1: B = 1<br />

P1: A++ = 2<br />

P2: A++ = 3<br />

P1: C = B + A++ = 3<br />

P2: C = B + A++ = 4<br />

SINCRONIZACIÓN DE PROCESOS<br />

Valor final de la variable: C = 4<br />

Valor real para cualquier proceso sin race conditions:<br />

C = 3 !!!<br />

<strong>Sistema</strong>s <strong>operativo</strong>s | © 2009-2010 Prof. Ing. Miguel Angel Aguilar Ulloa<br />

81


El problema de la región crítica<br />

• En el problema de la región critica no es valido suponer ningún tipo de<br />

relación temporal cronológica entre procesos, ni de la rapidez relativa entre<br />

ellos pues no es un problema determinístico.<br />

• Toda solución al problema de la región critica debe cumplir con al menos<br />

tres requerimientos:<br />

Exclusión mutua: solo un proceso ejecuta una región critica a la vez.<br />

SINCRONIZACIÓN DE PROCESOS<br />

Progreso: solamente los procesos que no han ejecutado su región critica<br />

pueden solicitar acceso a esta y el acceso se les garantiza en tiempo finito.<br />

Espera acotada: una vez que un proceso ha solicitado entrada a la región<br />

critica, existe un limite en la espera con respecto a las veces en que otros<br />

procesos acceden a la región critica después de la petición.<br />

<strong>Sistema</strong>s <strong>operativo</strong>s | © 2009-2010 Prof. Ing. Miguel Angel Aguilar Ulloa<br />

82


Locks<br />

• Los bloqueos (locks) son soluciones de hardware que buscan garantizar<br />

acceso atómico por proceso.<br />

• La función test_and_set(var) garantiza a nivel de hardware que las<br />

operaciones que se ejecuten son atómicas, y no pueden ser interrumpidas<br />

en su ejecución.<br />

• Este enfoque es difícil de implementar en programas de aplicación desde<br />

el punto de vista del desarrollador de aplicaciones, y requiere soporte de la<br />

arquitectura para este tipo de operaciones.<br />

SINCRONIZACIÓN DE PROCESOS<br />

• El uso indiscriminado de funciones atómicas incrementa el tiempo de CPU<br />

ocioso (idle) por posibles condiciones de espera y dependencias entre<br />

procesos.<br />

<strong>Sistema</strong>s <strong>operativo</strong>s | © 2009-2010 Prof. Ing. Miguel Angel Aguilar Ulloa<br />

83


Semáforos<br />

• Una solución de software es el uso de semáforos para sincronización.<br />

• Un semáforo es una variable entera que solamente puede accederse<br />

mediante dos funciones atómicas, wait() y signal().<br />

• Los semáforos que tienen valores enteros mayores a 1 se utilizan para<br />

indicar cuantas instancias de un recurso determinado han sido adquiridas<br />

por los procesos.<br />

SINCRONIZACIÓN DE PROCESOS<br />

• Los semáforos cuyos valores son mutuamente excluyentes se denominan<br />

mutex(), ya que excluyen a los procesos entre si del acceso a la región<br />

critica.<br />

• Debe tenerse cuidado de no utilizar busy waiting para utilizar o<br />

implementar semáforos.<br />

<strong>Sistema</strong>s <strong>operativo</strong>s | © 2009-2010 Prof. Ing. Miguel Angel Aguilar Ulloa<br />

84


Bloqueos mutuos<br />

• La sincronización de procesos es un problema no trivial en computación<br />

debido a tres factores esenciales.<br />

• El no determinismo en la interacción entre procesos.<br />

• La interacción entre mecanismos distintos de acceso simultaneo a datos.<br />

• La especificación de reglas de interacción o exclusión son locales a cada<br />

proceso, y no hay un mecanismo global que los controle.<br />

SINCRONIZACIÓN DE PROCESOS<br />

<strong>Sistema</strong>s <strong>operativo</strong>s | © 2009-2010 Prof. Ing. Miguel Angel Aguilar Ulloa<br />

85


Bloqueos mutuos<br />

• Un bloqueo mutuo o deadlock es una situación del sistema <strong>operativo</strong><br />

donde un conjunto de procesos espera infinitamente la continuación de<br />

otros procesos en el conjunto.<br />

• Los procesos pueden verse como actores, y el hardware puede verse como<br />

recursos del sistema.<br />

• Los procesos siguen un protocolo de solicitar un recurso.<br />

SINCRONIZACIÓN DE PROCESOS<br />

<strong>Sistema</strong>s <strong>operativo</strong>s | © 2009-2010 Prof. Ing. Miguel Angel Aguilar Ulloa<br />

86


Bloqueos mutuos<br />

SINCRONIZACIÓN DE PROCESOS<br />

<strong>Sistema</strong>s <strong>operativo</strong>s | © 2009-2010 Prof. Ing. Miguel Angel Aguilar Ulloa<br />

87


Bloqueos mutuos<br />

SINCRONIZACIÓN DE PROCESOS<br />

<strong>Sistema</strong>s <strong>operativo</strong>s | © 2009-2010 Prof. Ing. Miguel Angel Aguilar Ulloa<br />

88


Condiciones de un deadlock<br />

• Existen cuatro condiciones necesarias para que ocurra un deadlock:<br />

• Exclusión mutua: al menos un recurso no puede ser compartido por dos<br />

procesos simultáneamente.<br />

• Retener y esperar: un proceso debe retener al menos un recurso y al<br />

mismo tiempo esperar por que otro este disponible.<br />

• No preempcion: ningún recurso se libera voluntariamente por<br />

requerimiento de otro proceso.<br />

SINCRONIZACIÓN DE PROCESOS<br />

• Espera circular: los procesos forman una cadena cerrada de dependencia<br />

entre sí.<br />

<strong>Sistema</strong>s <strong>operativo</strong>s | © 2009-2010 Prof. Ing. Miguel Angel Aguilar Ulloa<br />

89


Manejo de deadlocks<br />

• Existen cuatro aproximaciones al manejo de deadlocks:<br />

Prevenir el deadlock: definir un conjunto de reglas que los procesos<br />

deben seguir para garantizar que no ocurrirá un deadlock. Este enfoque es<br />

costoso para el OS.<br />

Evitar el deadlock: definir estados seguros donde el sistema garantiza<br />

que nunca entrara en deadlock. Requiere información hacia adelante sobre<br />

las peticiones de recursos.<br />

SINCRONIZACIÓN DE PROCESOS<br />

Detectar el deadlock: identificar cuando el sistema ha entrado en<br />

deadlock y tomar una acción para liberar un recurso (matar un proceso,<br />

forzar preempcion de un recurso).<br />

No hacer nada: generalmente el OS supone que el programador de<br />

aplicaciones se encargara de manejar los posibles casos de deadlock.<br />

<strong>Sistema</strong>s <strong>operativo</strong>s | © 2009-2010 Prof. Ing. Miguel Angel Aguilar Ulloa<br />

90


7. MANEJO DE MEMORIA


• La memoria en los sistemas computacionales puede verse como un arreglo<br />

de bytes de gran tamaño que pueden contener instrucciones o datos.<br />

• Algunas instrucciones hacen referencia a posiciones de memoria a través<br />

de sus operandos.<br />

• Estas operaciones pueden ser de acceso directo (almacenar a una posición<br />

de memoria especificada por el valor del operando) o indirecta (almacenar<br />

o acceder un dato cuya dirección de memoria esta dada por el contenido de<br />

otra dirección de memoria).<br />

MANEJO DE MEMORIA<br />

• La unidad de memoria se encarga de proveer direcciones de forma segura<br />

y consistente a través del OS.<br />

<strong>Sistema</strong>s <strong>operativo</strong>s | © 2009-2010 Prof. Ing. Miguel Angel Aguilar Ulloa<br />

92


Hardware y memoria<br />

• El nivel de memoria mas cercana al procesador son los registros, de acceso<br />

inmediato para todos efectos.<br />

• La memoria principal debe accederse por medio de transacciones del bus<br />

de memoria lo que toma mas de un ciclo de reloj.<br />

MANEJO DE MEMORIA<br />

• Transacción: una operación que se considera atómica (i.e. indivisible).<br />

• Debido a la latencia entre los registros y la memoria, se diseñaron<br />

memorias cache que almacenan datos frecuentemente utilizados y verifican<br />

si la dirección de memoria referenciada ha sido ya almacenada en el cache.<br />

<strong>Sistema</strong>s <strong>operativo</strong>s | © 2009-2010 Prof. Ing. Miguel Angel Aguilar Ulloa<br />

93


Protección de acceso a memoria<br />

• Debido al requerimiento de seguridad de un OS, el acceso a memoria no<br />

debe ser irrestricto.<br />

• En particular, ningún proceso debe tener acceso al mismo espacio en<br />

memoria que cualquier otro proceso.<br />

MANEJO DE MEMORIA<br />

• El registro base y el registro limite se encargan de definir el segmento de<br />

memoria a la que los procesos en espacio de usuario tienen acceso.<br />

• Segmentation fault: intento de violación de las reglas de acceso a memoria<br />

de otro proceso o del kernel, activando una interrupción de error (trap).<br />

• El kernel tiene acceso irrestricto a la memoria del sistema, debido a que<br />

este debe administrarla.<br />

<strong>Sistema</strong>s <strong>operativo</strong>s | © 2009-2010 Prof. Ing. Miguel Angel Aguilar Ulloa<br />

94


La unidad de manejo de memoria (MMU)<br />

• La unidad de manejo de memoria (MMU: memory management unit) es la<br />

que se encarga de traducir las direcciones de memoria generadas desde el<br />

CPU a direcciones en memoria real.<br />

• La MMU recibe direcciones lógicas o virtuales, denominadas de esta forma<br />

debido a que para un proceso especifico corresponden a la dirección<br />

suponiendo inicio en 0x00000000 para su segmento específico.<br />

MANEJO DE MEMORIA<br />

• La MMU produce peticiones al bus de memoria en términos de<br />

direcciones físicas o reales.<br />

• La MMU es una pieza de hardware en el procesador, debido a que ningún<br />

mecanismo de software puede asegurar totalmente la seguridad en el<br />

acceso a memoria.<br />

<strong>Sistema</strong>s <strong>operativo</strong>s | © 2009-2010 Prof. Ing. Miguel Angel Aguilar Ulloa<br />

95


Binding de direcciones de memoria<br />

• Los programas al ser cargados en memoria requieren tener<br />

direccionamiento absoluto en memoria de posiciones relativas (i.e.<br />

variables y estructuras de datos (binding):<br />

• El binding puede ocurrir en tres momentos distintos:<br />

MANEJO DE MEMORIA<br />

Tiempo de compilación: se conoce de antemano el segmento de<br />

memoria que albergara al programa.<br />

Tiempo de carga: las variables después de la compilación poseen<br />

direcciones simbólicas a las cuales el cargador de programas del OS asigna<br />

una dirección cuando el programa es cargado en memoria.<br />

Tiempo de ejecución: un proceso debe ser transportado de un segmento<br />

de memoria a otro, o solicita la carga de un trozo de datos e instrucciones a<br />

memoria.<br />

<strong>Sistema</strong>s <strong>operativo</strong>s | © 2009-2010 Prof. Ing. Miguel Angel Aguilar Ulloa<br />

96


Swapping de memoria<br />

• En diferentes situaciones de calendarización, en el momento en que un<br />

proceso cede a otro el CPU este debe almacenar su estado.<br />

• Existen ocasiones en donde el estado de un programa es suficientemente<br />

grande para requerir ser almacenado en algún medio persistente.<br />

MANEJO DE MEMORIA<br />

• Durante el cambio de contexto entre procesos, el calendarizador elige el<br />

siguiente proceso y mientras el dispatcher se encarga de entregar el<br />

procesador al nuevo proceso, ocurre el almacenamiento del proceso<br />

anterior.<br />

• Un ejemplo directo de espacio de swapping (intercambio) son las<br />

particiones de tipo Swap en Linux.<br />

<strong>Sistema</strong>s <strong>operativo</strong>s | © 2009-2010 Prof. Ing. Miguel Angel Aguilar Ulloa<br />

97


Reserva dinámica de memoria<br />

• Los procesos en muchas ocasiones requieren reservar memoria de manera<br />

dinámica (malloc()).<br />

• Para poder satisfacer de forma apropiada los requerimientos de memoria<br />

de los programas, esta se parte en bloques de tamaño fijo que se administra<br />

a través de un mapa de memoria.<br />

MANEJO DE MEMORIA<br />

• El problema de reserva de memoria equivale a encontrar un trozo de<br />

memoria suficientemente grande para albergar la petición.<br />

• Este problema es un problema conocido en investigación de operaciones<br />

como un problema de optimización lineal entera, cuya solución exacta es<br />

intratable.<br />

<strong>Sistema</strong>s <strong>operativo</strong>s | © 2009-2010 Prof. Ing. Miguel Angel Aguilar Ulloa<br />

98


Metodologías para reservar memoria<br />

• Existen tres estrategias para intentar reservar memoria:<br />

Primer ajuste: encuentre la primer posición de memoria contigua<br />

suficientemente grande para satisfacer la petición.<br />

Mejor ajuste: encuentre el trozo de memoria mas pequeño que puede<br />

satisfacer la petición, deja remanentes de memoria sin usar (hoyos).<br />

MANEJO DE MEMORIA<br />

Peor ajuste: encuentre el trozo de memoria mas grande que pueda ser<br />

utilizado, los hoyos de este ajuste pueden ser utilizados por peticiones mas<br />

pequeñas.<br />

<strong>Sistema</strong>s <strong>operativo</strong>s | © 2009-2010 Prof. Ing. Miguel Angel Aguilar Ulloa<br />

99


Fragmentación<br />

• Cuando la memoria se reserva continuamente y se libera, trozos de<br />

memoria de diferentes tamaños quedan utilizados o disponibles.<br />

• No necesariamente la asignación de memoria es óptima, y pueden quedar<br />

espacios inutilizables.<br />

MANEJO DE MEMORIA<br />

Fragmentación externa: ocurre cuando en total existe espacio disponible<br />

en la memoria, pero peticiones individuales no encuentran espacio contiguo<br />

de tamaño suficiente.<br />

Fragmentación interna: ocurre cuando las peticiones de memoria son<br />

pequeñas y no requieren un bloque completo, dejando espacio libre.<br />

• Es posible tener un caso donde la memoria este utilizada al 50% de forma<br />

real, pero sea inutilizable por alta fragmentación.<br />

<strong>Sistema</strong>s <strong>operativo</strong>s | © 2009-2010 Prof. Ing. Miguel Angel Aguilar Ulloa<br />

100


Paginación<br />

• El requerir memoria contigua es una limitante debido a la fragmentación.<br />

• La paginación (dividir la memoria en trozos de mismo tamaño<br />

denominados paginas) permite reservar memoria de forma discontigua.<br />

• Las direcciones manejadas por el MMU dependen de dos partes: el<br />

numero de pagina en donde están los datos y el offset dentro de la pagina.<br />

MANEJO DE MEMORIA<br />

• Las paginas se administran a través de una tabla de paginas que indica<br />

cuales paginas están en uso y como se efectúa la traducción de las<br />

direcciones lógicas paginadas en direcciones físicas.<br />

• Cuando el CPU genera una dirección de memoria, el hardware se encarga<br />

de particionarla en el numero de pagina y el offset.<br />

<strong>Sistema</strong>s <strong>operativo</strong>s | © 2009-2010 Prof. Ing. Miguel Angel Aguilar Ulloa<br />

101


TLB<br />

• Dentro del MMU, se mantiene un registro base para la tabla de paginas,<br />

que permite modificación rápida de la tabla de paginas o su reemplazo<br />

completo en sistemas con memoria considerable.<br />

• Existe hardware especial que funciona como memoria cache para la<br />

traducción de direcciones lógicas de paginas a direcciones físicas,<br />

denominado TLB (translation look-ahead buffer).<br />

MANEJO DE MEMORIA<br />

• El TLB es una memoria asociativa que mantiene información sobre paginas<br />

recientemente utilizadas.<br />

• Si una pagina esta en el TLB se considera un page hit, de lo contrario es un<br />

page miss.<br />

• El TLB es eficiente si el page miss es bajo.<br />

<strong>Sistema</strong>s <strong>operativo</strong>s | © 2009-2010 Prof. Ing. Miguel Angel Aguilar Ulloa<br />

102


Segmentación<br />

• La segmentación es un esquema de manejo de memoria que se aproxima<br />

a la visión del desarrollador de sus programas.<br />

• Cada segmento maneja su propio trozo de memoria, y debe las direcciones<br />

deben ser especificadas de forma explicita (generalmente se efectúa<br />

automáticamente por el compilador).<br />

MANEJO DE MEMORIA<br />

• Los segmentos corresponden a las secciones que componen un ejecutable:<br />

.data, .text, .stack, .heap.<br />

<strong>Sistema</strong>s <strong>operativo</strong>s | © 2009-2010 Prof. Ing. Miguel Angel Aguilar Ulloa<br />

103


8. SISTEMAS DE ARCHIVOS


• Para la mayoría de usuarios el sistema de archivos es la parte más visible<br />

de un sistema <strong>operativo</strong>.<br />

• Provee un mecanismo para almacenar tanto datos como programas.<br />

• El sistema de archivos está compuesto de dos partes: los archivos que<br />

almacenan datos relacionados, y la estructura del directorio que organiza y<br />

provee información acerca de los archivos en el sistema.<br />

SISTEMAS DE ARCHIVOS<br />

• El estudio de los sistemas de archivos se divide en su interface y su<br />

implementación.<br />

<strong>Sistema</strong>s <strong>operativo</strong>s | © 2009-2010 Prof. Ing. Miguel Angel Aguilar Ulloa<br />

105


Interface de los sistemas de archivos<br />

Concepto de archivo.<br />

Métodos de acceso.<br />

Estructura del directorio.<br />

SISTEMAS DE ARCHIVOS<br />

Montaje de un sistema de archivos.<br />

Protección.<br />

<strong>Sistema</strong>s <strong>operativo</strong>s | © 2009-2010 Prof. Ing. Miguel Angel Aguilar Ulloa<br />

106


Concepto de archivo<br />

• Las computadoras almacenan la información y en varios tipos de medios<br />

de almacenamiento por lo cual es conveniente una vía uniforme de<br />

representar dicha información.<br />

• Un archivo se puede definir como un conjunto de información relacionada<br />

que se graba en un dispositivo de almacenamiento secundario.<br />

SISTEMAS DE ARCHIVOS<br />

• El tipo de información almacenada en un archivo es definido por su<br />

creador, y va desde programas, imágenes, texto, archivos objeto, entre<br />

otros. En general, pueden ser datos o programas.<br />

<strong>Sistema</strong>s <strong>operativo</strong>s | © 2009-2010 Prof. Ing. Miguel Angel Aguilar Ulloa<br />

107


Estructura de un archivo<br />

• Dependiendo del tipo de archivo así este tendrá una determinada<br />

estructura:<br />

Archivo de texto: es una serie de caracteres organizados en líneas.<br />

Archivo fuente: es un conjunto de subrutinas que contienen sentencias<br />

ejecutables.<br />

SISTEMAS DE ARCHIVOS<br />

Archivo objeto: es un conjunto de bloques de bytes que son<br />

interpretados por el enlazador.<br />

Archivo ejecutable: es un conjunto de secciones de código que un<br />

cargador puede llevar a la memoria principal y ejecutarlo.<br />

<strong>Sistema</strong>s <strong>operativo</strong>s | © 2009-2010 Prof. Ing. Miguel Angel Aguilar Ulloa<br />

108


Atributos de un archivo<br />

• Los atributos le confieren una identidad a los archivos, y los más<br />

importantes son:<br />

Nombre: es un nombre entendido por el ser humano.<br />

Identificador:es una etiqueta única dentro del sistema.<br />

Tipo: Los sistemas de archivos lo necesitan para organizar los archivos.<br />

Localización: Ubicación dentro del dispositivo de almacenamiento.<br />

Tamaño: Cantidad de bytes del archivo.<br />

Protección: Permisos de escritura, lectura y ejecución.<br />

Fecha, hora y usuario: Información sobre creación y modificación.<br />

SISTEMAS DE ARCHIVOS<br />

<strong>Sistema</strong>s <strong>operativo</strong>s | © 2009-2010 Prof. Ing. Miguel Angel Aguilar Ulloa<br />

109


Operaciones sobre los archivos<br />

• Para definir un archivo apropiadamente se deben definir operaciones<br />

sobre el mismo. Es el SO el encargado de realizar dichas operaciones a<br />

través de llamadas al sistema. Para efectos de realizar éstas operaciones el<br />

SO hace uso de los atributos del archivo.<br />

• Las operaciones comunes son:<br />

Creación de un archivo.<br />

Escritura del archivo.<br />

Lectura del archivo.<br />

Cambio de ubicación del archivo.<br />

Borrado del archivo.<br />

Truncado del archivo.<br />

Renombrar el archivo.<br />

Copiar el archivo.<br />

SISTEMAS DE ARCHIVOS<br />

<strong>Sistema</strong>s <strong>operativo</strong>s | © 2009-2010 Prof. Ing. Miguel Angel Aguilar Ulloa<br />

110


Tipos de archivos<br />

• Un SO debe reconocer y soportar ciertos tipos de archivos para poder<br />

operar sobre ellos.<br />

• La técnica más común para expresar los tipos de archivos es con<br />

extensiones, que usualmente se separa del nombre con un punto.<br />

Tipo de Archivo Extensión Función<br />

Ejecutable exe, com, bin o ninguno Código a ser ejecutado<br />

SISTEMAS DE ARCHIVOS<br />

Objeto obj, o Compiado, no enlazado<br />

Código Fuente c, cc, java, asm Código fuente de varios<br />

lenguajes<br />

Texto txt, doc Documentos de texto<br />

Bibliotecas Lib, a, so, dll Bibliotecas de rutinas<br />

para aplicaciones<br />

Compresión zip, tar Conjunto de archivos<br />

almacenados en conjunto<br />

usualmente comprimidos<br />

Multimedia mpeg, mov, mp3, avi Archivo binario con A/V<br />

<strong>Sistema</strong>s <strong>operativo</strong>s | © 2009-2010 Prof. Ing. Miguel Angel Aguilar Ulloa<br />

111


Métodos de acceso<br />

• Cuando se requiere la lectura de los datos almacenados en un archivo el<br />

SO debe recurrir a determinados métodos de acceso a los archivos para<br />

efectuar dicha tarea.<br />

• Existen dos tipos de acceso:<br />

1. Secuencial.<br />

2. Directo.<br />

SISTEMAS DE ARCHIVOS<br />

<strong>Sistema</strong>s <strong>operativo</strong>s | © 2009-2010 Prof. Ing. Miguel Angel Aguilar Ulloa<br />

112


Acceso secuencial<br />

• Es el tipo de acceso más simple. La información es procesada en orden un<br />

bloque después del otro.<br />

• Un puntero mantiene la posición actual en el archivo.<br />

• Las operaciones son:<br />

1. Leer siguiente.<br />

2. Escribir siguiente.<br />

SISTEMAS DE ARCHIVOS<br />

Principio<br />

Posición actual<br />

Final<br />

Regresar<br />

Leer / Escribir<br />

<strong>Sistema</strong>s <strong>operativo</strong>s | © 2009-2010 Prof. Ing. Miguel Angel Aguilar Ulloa<br />

113


Acceso directo<br />

• El acceso directo o relativo se basa en que los archivos son creados con<br />

base en bloques de tamaño fijo, lo que permite leer y escribir los archivos<br />

sin ningún orden en particular. Por ejemplo se podría leer el bloque 21,<br />

luego el 54 y finalmente el 4.<br />

• Las operaciones son:<br />

1. Leer n.<br />

2. Escribir n.<br />

SISTEMAS DE ARCHIVOS<br />

• O en combinación con el acceso secuencial<br />

1. Posición n.<br />

2. Leer / Escribir siguiente.<br />

<strong>Sistema</strong>s <strong>operativo</strong>s | © 2009-2010 Prof. Ing. Miguel Angel Aguilar Ulloa<br />

114


Estructura de un directorio<br />

• Es una colección de nodos que contienen información acerca de los<br />

archivos.<br />

• Tanto la estructura del directorio como los archivos residen en el<br />

dispositivo de almacenamiento masivo.<br />

SISTEMAS DE ARCHIVOS<br />

A1<br />

A2<br />

A3<br />

A4<br />

<strong>Sistema</strong>s <strong>operativo</strong>s | © 2009-2010 Prof. Ing. Miguel Angel Aguilar Ulloa<br />

115


Operaciones en un directorio<br />

• Un directorio puede ser visto como una tabla de símbolos que traduce el<br />

nombre de los archivos en entradas del directorio.<br />

• Basado en ésta tabla se pueden realizar las siguientes operaciones en un<br />

directorio:<br />

Buscar un archivo.<br />

Crear un archivo.<br />

Borrar un archivo.<br />

Listar el contenido de un directorio.<br />

Renombrar archivos.<br />

SISTEMAS DE ARCHIVOS<br />

<strong>Sistema</strong>s <strong>operativo</strong>s | © 2009-2010 Prof. Ing. Miguel Angel Aguilar Ulloa<br />

116


Organización de un sistema de archivos<br />

• Un dispositivo de almacenamiento masivo puede ser usado por completo<br />

para almacenar un sistema de archivos. Además, en algunos casos es<br />

deseable tener más de un sistema de archivos.<br />

Directorio<br />

Directorio<br />

SISTEMAS DE ARCHIVOS<br />

Partición A<br />

Archivos<br />

Disco 1<br />

Disco 2<br />

Directorio<br />

Partición C<br />

Archivos<br />

Partición B<br />

Archivos<br />

Disco 3<br />

<strong>Sistema</strong>s <strong>operativo</strong>s | © 2009-2010 Prof. Ing. Miguel Angel Aguilar Ulloa<br />

117


Directorios de un solo nivel<br />

• Es el esquema más simple de directorios. Todos los archivos están en el<br />

mismo directorio por lo cual es fácil de soportar y entender.<br />

• Éste esquema tiene fuertes limitaciones cuando el sistema crece en<br />

cantidad de archivos y de usuarios. Además debido a que todos los archivos<br />

están en el mismo directorio no puede haber nombres duplicados.<br />

SISTEMAS DE ARCHIVOS<br />

Directorios<br />

A B C D E F G H<br />

Archivos<br />

<strong>Sistema</strong>s <strong>operativo</strong>s | © 2009-2010 Prof. Ing. Miguel Angel Aguilar Ulloa<br />

118


Directorios de dos niveles<br />

• En éste esquema cada usuario tiene su directorio.<br />

• Puede haber archivos con el mismo nombre en diferentes usuarios. Todas<br />

las operaciones se realizan únicamente sobre el directorio del usuario<br />

actual.<br />

• La ruta (path) de cada archivo está definido por el nombre del usuario y el<br />

del archivo.<br />

SISTEMAS DE ARCHIVOS<br />

Usuario 1 Usuario 2 Usuario 3<br />

A B C A B A B C<br />

<strong>Sistema</strong>s <strong>operativo</strong>s | © 2009-2010 Prof. Ing. Miguel Angel Aguilar Ulloa<br />

119


Directorios estructurados en árbol<br />

• Es una generalización de la estructura de dos niveles. Los usuarios pueden<br />

crear sus propios subdirectorios. Los directorios o subdirectorios contiene<br />

un conjunto de archivos y subdirectorios.<br />

• Se maneja el concepto de directorio actual sobre el cual se va a trabajar.<br />

Se manejan dos tipos de rutas: absolutas, las cuales están dadas desde la<br />

raíz del sistema de archivos y relativas, las cuales están dadas desde el<br />

directorio actual.<br />

SISTEMAS DE ARCHIVOS<br />

Usuario 1 Usuario 2 Usuario 3<br />

A B C A B A B C<br />

A B A B<br />

<strong>Sistema</strong>s <strong>operativo</strong>s | © 2009-2010 Prof. Ing. Miguel Angel Aguilar Ulloa<br />

120


Montaje del sistema de archivos<br />

• Así como un archivo debe ser abierto antes de utilizado un sistema de<br />

archivos debe ser “montado” antes de ser empleado por el sistema<br />

<strong>operativo</strong>.<br />

• El procedimiento de montaje es directo:<br />

1. Al SO se le es dado el nombre del dispositivo y el punto de montaje (es<br />

la ubicación donde el sistema de archivos será montado. En sistemas<br />

UNIX típicamente el punto de montaje de la raíz del sistema de archivos<br />

es /).<br />

2. El SO verifica si es sistema de archivos es válido.<br />

3. Finalmente el SO obtiene el acceso a los directorios.<br />

INTERFAZ DE LOS SISTEMAS DE ARCHIVOS<br />

<strong>Sistema</strong>s <strong>operativo</strong>s | © 2009-2010 Prof. Ing. Miguel Angel Aguilar Ulloa<br />

121


Montaje del sistema de archivos<br />

/<br />

Prácticas<br />

home<br />

maguilar<br />

Proyectos<br />

home<br />

maguilar<br />

INTERFAZ DE LOS SISTEMAS DE ARCHIVOS<br />

Prácticas<br />

Proyectos<br />

a) <strong>Sistema</strong> de archivos montado b) <strong>Sistema</strong> de archivos montado<br />

<strong>Sistema</strong>s <strong>operativo</strong>s | © 2009-2010 Prof. Ing. Miguel Angel Aguilar Ulloa<br />

122


Protección<br />

• Cuando se almacena información en un sistema de archivos se desea que<br />

dicha información esté protegida de daños físicos (confiabilidad) y accesos<br />

inapropiados (protección).<br />

• El creador y/o propietario del archivo es el encargado de que puede ser<br />

hecho con el archivo y por quién.<br />

SISTEMAS DE ARCHIVOS<br />

• Los sistemas de archivos proveen un mecanismo para manejar la<br />

seguridad de los archivos.<br />

<strong>Sistema</strong>s <strong>operativo</strong>s | © 2009-2010 Prof. Ing. Miguel Angel Aguilar Ulloa<br />

123


Tipos de acceso<br />

• La necesidad de proteger los archivos es un resultado directo de la<br />

habilidad de acceso a ellos. EL SO puede controlar la seguridad de los<br />

archivos limitando el tipo acceso a ellos.<br />

• Los tipos de acceso a los archivos son:<br />

Lectura.<br />

Escritura.<br />

Ejecución.<br />

Agregar nueva información.<br />

Borrado.<br />

Listado de atributos del archivo.<br />

INTERFAZ DE LOS SISTEMAS DE ARCHIVOS<br />

<strong>Sistema</strong>s <strong>operativo</strong>s | © 2009-2010 Prof. Ing. Miguel Angel Aguilar Ulloa<br />

124


Control de acceso<br />

• El enfoque más común para la protección de archivos es hacer el acceso a<br />

ellos dependiente de la identidad del usuario.<br />

• El esquema más general para implementar el acceso dependiente de la<br />

identidad es asociar con cada archivo y directorio una lista de control de<br />

acceso (access-control list ACL) especificando el nombre del usuario y el tipo<br />

de acceso permitido para cada usuario.<br />

INTERFAZ DE LOS SISTEMAS DE ARCHIVOS<br />

<strong>Sistema</strong>s <strong>operativo</strong>s | © 2009-2010 Prof. Ing. Miguel Angel Aguilar Ulloa<br />

125


Listas de acceso<br />

• En general existen tres tipos de clasificaciones de usuarios en conexión<br />

con un archivo:<br />

Propietario: el usuario que creó el archivo.<br />

Grupo: Un conjunto de usuarios que comparten un archivo y necesitan el<br />

mismo tipo de acceso.<br />

Universo: Todos los usuarios del sistema.<br />

• Los tres modos de acceso principales son: escritura, lectura y ejecución.<br />

R W X<br />

1. Acceso del propietario 7 1 1 1<br />

2. Acceso del grupo 6 1 1 0<br />

3. Acceso del universo 1 0 0 1<br />

INTERFAZ DE LOS SISTEMAS DE ARCHIVOS<br />

$ chmod 761 <br />

<strong>Sistema</strong>s <strong>operativo</strong>s | © 2009-2010 Prof. Ing. Miguel Angel Aguilar Ulloa<br />

126


Listas de control de acceso en windows<br />

SISTEMAS DE ARCHIVOS<br />

<strong>Sistema</strong>s <strong>operativo</strong>s | © 2009-2010 Prof. Ing. Miguel Angel Aguilar Ulloa<br />

127


Lista de control de acceso en UNIX<br />

SISTEMAS DE ARCHIVOS<br />

<strong>Sistema</strong>s <strong>operativo</strong>s | © 2009-2010 Prof. Ing. Miguel Angel Aguilar Ulloa<br />

128


Implementación de los sistemas de archivos<br />

Estructura del <strong>Sistema</strong> de Archivos.<br />

Implementación del <strong>Sistema</strong> de Archivos.<br />

Implementación de los Directorios.<br />

SISTEMAS DE ARCHIVOS<br />

<strong>Sistema</strong>s <strong>operativo</strong>s | © 2009-2010 Prof. Ing. Miguel Angel Aguilar Ulloa<br />

129


Estructura del sistema de archivos<br />

El sistema de archivos está compuesto de diferentes niveles:<br />

Aplicación<br />

<strong>Sistema</strong> de Archivos<br />

Lógico<br />

SISTEMAS DE ARCHIVOS<br />

Módulo de Organización<br />

de Archivos<br />

<strong>Sistema</strong> de Archivos<br />

Básico<br />

Control de E/S<br />

Dispositivo<br />

<strong>Sistema</strong>s <strong>operativo</strong>s | © 2009-2010 Prof. Ing. Miguel Angel Aguilar Ulloa<br />

130


Estructura del sistema de archivos<br />

Controladores de dispositivo (E/S): Es el nivel más bajo del sistema de<br />

archivos y su función es transferir información entre la memoria principal y<br />

el dispositivo de almacenamiento.<br />

<strong>Sistema</strong> de archivo básico: Le envía comandos genéricos al controlador<br />

(driver) apropiado para leer y escribir los bloques de memoria en el disco.<br />

SISTEMAS DE ARCHIVOS<br />

Módulo de organización de archivos: Sabe de los archivos y sus bloques<br />

lógicos y físicos. Realiza una traducción entre los bloques lógicos y físicos<br />

para el sistema de archivos básico y así llevar a cabo una transferencia.<br />

<strong>Sistema</strong> de archivos lógico: Maneja la meta-información mediante los<br />

bloques de control de archivos (file-control block - FCB). Ésta información<br />

incluye: permisos del archivo, fechas de creación y modificación del archivo,<br />

propietario y grupo del archivo tamaño del archivo, etc.<br />

<strong>Sistema</strong>s <strong>operativo</strong>s | © 2009-2010 Prof. Ing. Miguel Angel Aguilar Ulloa<br />

131


Implementación de los sistemas de archivos<br />

• Existen varias estructuradas tanto en disco como en memoria empleadas<br />

por los sistemas <strong>operativo</strong>s para implementar el sistema de archivos.<br />

• La datos en disco contienen información sobre como bootear el sistema<br />

<strong>operativo</strong> que se encuentra en el disco, número de bloques totales, número<br />

y ubicación de los bloques libres, estructura de los directorios y archivos<br />

individuales.<br />

SISTEMAS DE ARCHIVOS<br />

• La información en memoria es utilizada tanto para manejo del sistema de<br />

archivos, como para mejoramiento del rendimiento. Ésta información es<br />

cargada en tiempo de montaje y descartada en el desmontaje.<br />

<strong>Sistema</strong>s <strong>operativo</strong>s | © 2009-2010 Prof. Ing. Miguel Angel Aguilar Ulloa<br />

132


Abrir y leer archivos<br />

Abrir un archivo<br />

Espacio usuario<br />

open(archivo)<br />

Memoria del kernel<br />

Estructura del directorio<br />

Dispositivo de<br />

almacenamiento<br />

FCB<br />

SISTEMAS DE ARCHIVOS<br />

Leer un archivo<br />

Espacio usuario<br />

Memoria del kernel<br />

Dispositivo de<br />

almacenamiento<br />

Bloques de datos<br />

read(indice)<br />

Tabla de<br />

archivos<br />

abiertos por<br />

proceso<br />

Tabla de<br />

archivos<br />

abiertos del<br />

sistema<br />

FCB<br />

<strong>Sistema</strong>s <strong>operativo</strong>s | © 2009-2010 Prof. Ing. Miguel Angel Aguilar Ulloa<br />

133


<strong>Sistema</strong>s de Archivos Virtuales (Virtual File Systems - VFS)<br />

• Los sistemas de archivos virtuales le proveen una forma orientada a<br />

objetos de implementar los sistemas de archivos.<br />

• Los VFS le proveen al sistema de <strong>operativo</strong> una interface (API) común para<br />

ser utilizada por diferentes sistemas de archivos.<br />

• La API que usa el SO entonces se refiere al VFS en vez del sistema de<br />

archivos en particular.<br />

Interfaz del sistema<br />

de archivos<br />

SISTEMAS DE ARCHIVOS<br />

Interfaz VFS<br />

<strong>Sistema</strong> de archivos<br />

local, tipo 1<br />

<strong>Sistema</strong> de archivos<br />

local, tipo 2<br />

<strong>Sistema</strong> de archivos<br />

de red, tipo3<br />

Disco Disco Red<br />

<strong>Sistema</strong>s <strong>operativo</strong>s | © 2009-2010 Prof. Ing. Miguel Angel Aguilar Ulloa<br />

134


Implementación de directorios<br />

• La selección de los algoritmos para reservar y manejar directorios afectan<br />

directamente el rendimiento de un sistema de archivos.<br />

Lista lineal: Es la forma más simple en donde una lista lineal contiene el<br />

nombre de los archivos con punteros a los bloques de datos. Es fácil de<br />

programa pero consume mucho tiempo.<br />

SISTEMAS DE ARCHIVOS<br />

Tabla hash: es una estructura de datos que asocia llaves o claves con<br />

valores. En ésta caso se usa listas lineales en combinación con una<br />

estructura hash. La búsqueda en las mismas es más rápida pero se pueden<br />

presentar colisiones.<br />

<strong>Sistema</strong>s <strong>operativo</strong>s | © 2009-2010 Prof. Ing. Miguel Angel Aguilar Ulloa<br />

135


Tablas hash<br />

• La operación principal que soporta de manera eficiente es la búsqueda:<br />

permite el acceso a los elementos almacenados a partir de una clave<br />

generada.<br />

• Funciona transformando la clave con una función hash en un hash, un<br />

número que la tabla hash utiliza para localizar el valor deseado.<br />

SISTEMAS DE ARCHIVOS<br />

• Una colisión se presenta cuando más de un hash apunta al mismo índice.<br />

Llaves<br />

Llave 1<br />

Llave 2<br />

Llave 3<br />

Índices<br />

1<br />

…<br />

573<br />

…<br />

987<br />

Pares llave-valor (registros)<br />

Llave 1 Valor 1<br />

Llave 2 Valor 2<br />

Llave 3 Valor 3<br />

<strong>Sistema</strong>s <strong>operativo</strong>s | © 2009-2010 Prof. Ing. Miguel Angel Aguilar Ulloa<br />

136


Métodos de asignación de bloques de memoria<br />

• Un método de reservación de memoria se refiere a cómo los bloques de<br />

memoria son reservados para los archivos. Los principales métodos son:<br />

1. Asignación contigua.<br />

2. Asignación enlazada.<br />

SISTEMAS DE ARCHIVOS<br />

3. Asignación indexada.<br />

<strong>Sistema</strong>s <strong>operativo</strong>s | © 2009-2010 Prof. Ing. Miguel Angel Aguilar Ulloa<br />

137


Asignación contigua<br />

• Cada archivo ocupa un conjunto contiguo de bloques de memoria.<br />

• Es simple, solo se necesita el número del bloque de inicio y el tamaño en<br />

cantidad de bloques.<br />

• Acceso aleatorio.<br />

SISTEMAS DE ARCHIVOS<br />

• Desperdicia espacio.<br />

• Los archivos no pueden crecer.<br />

<strong>Sistema</strong>s <strong>operativo</strong>s | © 2009-2010 Prof. Ing. Miguel Angel Aguilar Ulloa<br />

138


Ejemplo de asignación contigua<br />

1 2 3 4 5<br />

6 7 8 9 10<br />

Archivo Inicio Tamaño<br />

A 0 2<br />

B 7 3<br />

C 17 4<br />

SISTEMAS DE ARCHIVOS<br />

11 12 13 14 15<br />

16 17 18 19 20<br />

<strong>Sistema</strong>s <strong>operativo</strong>s | © 2009-2010 Prof. Ing. Miguel Angel Aguilar Ulloa<br />

139


Asignación enlazada<br />

• Cada archivo es una lista enlazada de los bloques del disco:<br />

Bloque -> Puntero<br />

SISTEMAS DE ARCHIVOS<br />

<strong>Sistema</strong>s <strong>operativo</strong>s | © 2009-2010 Prof. Ing. Miguel Angel Aguilar Ulloa<br />

140


Ejemplo de asignación contigua<br />

SISTEMAS DE ARCHIVOS<br />

1 2 3 4 5<br />

6 7 8 9 10<br />

Archivo Inicio Final<br />

A 4 15<br />

11 12 13 14 15<br />

16 17 18 19 20<br />

<strong>Sistema</strong>s <strong>operativo</strong>s | © 2009-2010 Prof. Ing. Miguel Angel Aguilar Ulloa<br />

141


Tabla de asignación de archivos (File Allocation Table - FAT)<br />

Nombre Inicio<br />

Archivo 217<br />

618<br />

0<br />

217<br />

SISTEMAS DE ARCHIVOS<br />

339<br />

339<br />

618<br />

<strong>Sistema</strong>s <strong>operativo</strong>s | © 2009-2010 Prof. Ing. Miguel Angel Aguilar Ulloa<br />

142


Asignación indexada<br />

• Brinda todos los punteros juntos en un solo bloque llamado, bloque de<br />

indexación.<br />

Puntero<br />

Puntero<br />

Puntero<br />

Puntero<br />

SISTEMAS DE ARCHIVOS<br />

Tabla de Indexación<br />

<strong>Sistema</strong>s <strong>operativo</strong>s | © 2009-2010 Prof. Ing. Miguel Angel Aguilar Ulloa<br />

143


Ejemplo de asignación contigua<br />

SISTEMAS DE ARCHIVOS<br />

1 2 3 4 5<br />

6 7 8 9 10<br />

Archivo<br />

Bloque índice<br />

A 15<br />

11 12 13 14 15<br />

16 17 18 19 20<br />

<strong>Sistema</strong>s <strong>operativo</strong>s | © 2009-2010 Prof. Ing. Miguel Angel Aguilar Ulloa<br />

144


Ejemplos de sistemas de archivos empleados en sistemas empotrados<br />

<strong>Sistema</strong> de Archivos<br />

ROMFS<br />

CRAMFS<br />

JFFS / JFFS2<br />

YAFFS<br />

Ramdisk<br />

NFS<br />

Descripción<br />

Es un sistema de archivos de solo lectura que se<br />

implementa en memorias flash. Es de solo lectura.<br />

Es una versión compresa del ROMFS<br />

Es un sistema de archivos basado en registros de las<br />

modificaciones que se realiza en los sistemas de<br />

archivos. Se implementa en Flash y es de<br />

escritura/lectura.<br />

Es similar a JFFS/JFFS2 pero presenta un mejor<br />

rendimiento.<br />

Es un sistema de archivos que se ejecuta por completo<br />

en la memoria principal, por tal motivo es volátil.<br />

Es un sistema de archivos que se monta a través de la<br />

red. En sistemas empotrados es ampliamente usado en<br />

la etapa de desarrollo.<br />

SISTEMAS DE ARCHIVOS<br />

<strong>Sistema</strong>s <strong>operativo</strong>s | © 2009-2010 Prof. Ing. Miguel Angel Aguilar Ulloa<br />

145


9. SISTEMAS DE E/S Y CONTROLADORES DE DISPOSITIVOS


<strong>Sistema</strong>s de entrada / salida<br />

• Los trabajos principales de una computadora son el manejo de E/S y el<br />

procesamiento.<br />

• El control de dispositivos es la preocupación más importante de los<br />

diseñadores de SO, debido a la amplia variedad de dispositivos en cuanto a<br />

función y velocidad.<br />

• Para controlar dichos dispositivos se requieren una amplia variedad de<br />

métodos. Éstos métodos conforman el subsistema de E/S del kernel.<br />

• El kernel utiliza los controladores de dispositivos para ofrecen una vía<br />

estándar de acceso al sistema de E/S, así como los systems calls ofrecen una<br />

interfaz estándar entre la aplicación y el SO.<br />

SISTEMAS DE E/S Y CONTROLADORES DE DISPOSITIVOS<br />

<strong>Sistema</strong>s <strong>operativo</strong>s | © 2009-2010 Prof. Ing. Miguel Angel Aguilar Ulloa<br />

147


Hardware de E/S<br />

• Existe una gran variedad de dispositivos de E/S, los cuales se clasifican<br />

según su función: dispositivos de almacenamiento, de transmisión, de<br />

adquisición de datos, de interfaz humana, etc.<br />

• El dispositivo se comunica con la computadora a través de un punto de<br />

conexión ya sea un cable o por el aire mandando señales. A esto se le llama<br />

puerto.<br />

• Si los dispositivos usan un conjunto de cables a esto se le conoce como<br />

bus.<br />

• Un controlador es un circuito electrónico que actúa como una interface<br />

entre un puerto, un bus o un dispositivo y la computadora (Controlador de<br />

USB, de SCSI).<br />

SISTEMAS DE E/S Y CONTROLADORES DE DISPOSITIVOS<br />

<strong>Sistema</strong>s <strong>operativo</strong>s | © 2009-2010 Prof. Ing. Miguel Angel Aguilar Ulloa<br />

148


Comunicación entre el sistema y los dispositivos de E/S<br />

• ¿Cómo es que el CPU puede enviarle comandos y datos a los dispositivos<br />

de E/S?<br />

• La respuesta corta es el controlador tiene registros para control y para<br />

datos, los cuales son escritos y leídos por el procesador.<br />

• Una forma es usar instrucciones especiales de E/S directamente para<br />

comunicarse con los controladores, mediante la especificación de un puerto<br />

y los datos a escribir o leer.<br />

• Otra forma es mapeando los registros del controlador en la memoria así el<br />

CPU puede leer y escribir los mismo directamente como si estuviera<br />

trabajando con la memoria principal.<br />

SISTEMAS DE E/S Y CONTROLADORES DE DISPOSITIVOS<br />

<strong>Sistema</strong>s <strong>operativo</strong>s | © 2009-2010 Prof. Ing. Miguel Angel Aguilar Ulloa<br />

149


Estructura típica de un bus de una computadora<br />

Monitor<br />

Controlador<br />

gráfico<br />

Controlador<br />

de disco IDE<br />

Procesador<br />

Controlador<br />

de memoria<br />

PCI<br />

Interface de<br />

bus de<br />

expansión<br />

Controlador<br />

de disco SCSI<br />

Teclado<br />

Bus de expansión<br />

SISTEMAS DE E/S Y CONTROLADORES DE DISPOSITIVOS<br />

Puerto serial<br />

Puerto paralelo<br />

<strong>Sistema</strong>s <strong>operativo</strong>s | © 2009-2010 Prof. Ing. Miguel Angel Aguilar Ulloa<br />

150


OMAP4<br />

SISTEMAS DE E/S Y CONTROLADORES DE DISPOSITIVOS<br />

<strong>Sistema</strong>s <strong>operativo</strong>s | © 2009-2010 Prof. Ing. Miguel Angel Aguilar Ulloa<br />

151


Polling<br />

La interacción completa entre un CPU y el dispositivo puede ser intricada,<br />

sin embargo, el hadshaking es simple y útil para éste caso. Por ejemplo para<br />

escribir datos a un dispositivo los pasos son los siguientes:<br />

1. El CPU repetidamente lee el bit busy hasta que se limpie.<br />

2. El CPU escribe el comando de escritura en el dispositivo.<br />

3. El CPU define el bit command-ready.<br />

4. Cuando el controlador nota el bit command-ready define el bit busy.<br />

5. El controlador lee el registro de comando y ve el comando de escritura.<br />

Así lee el dato desde el registro de entrada de datos.<br />

6. El controlador limpia el bit de command-ready, el bit de error para<br />

indicar que la transferencia fue exitosa y finalmente limpia el bit busy.<br />

El paso 1 de esta secuencia es lo que se le conoce como polling.<br />

SISTEMAS DE E/S Y CONTROLADORES DE DISPOSITIVOS<br />

<strong>Sistema</strong>s <strong>operativo</strong>s | © 2009-2010 Prof. Ing. Miguel Angel Aguilar Ulloa<br />

152


Interrupciones<br />

• Los dispositivos interrumpen al CPU mediante una línea de interrupción.<br />

• Cuando el CPU recibe la interrupción, ésta es procesada por el manejador<br />

de interrupciones. El manejador de interrupciones es el encargado de<br />

determinar el origen de la interrupción y darle servicio a la misma.<br />

• Generalmente las interrupciones responden a eventos asincrónicos.<br />

• Los CPU modernos cuentan con un controlador de interrupciones que es el<br />

encargado de manejar las interrupciones, como sus prioridades entre otras<br />

cosas.<br />

SISTEMAS DE E/S Y CONTROLADORES DE DISPOSITIVOS<br />

<strong>Sistema</strong>s <strong>operativo</strong>s | © 2009-2010 Prof. Ing. Miguel Angel Aguilar Ulloa<br />

153


Interrupciones<br />

• En general los CPU cuentan con dos líneas de interrupción: las<br />

enmascarables y las no enmascarables.<br />

• Las enmascarables se usan por el CPU para evitar que ciertos procesos no<br />

sean interrumpidos, así las interrupciones son retrasadas o ignoradas.<br />

• Las no enmascarables están reservadas para eventos críticos como errores<br />

no recuperables de memoria.<br />

• El mecanismo de interrupciones es utilizado por excepciones.<br />

SISTEMAS DE E/S Y CONTROLADORES DE DISPOSITIVOS<br />

<strong>Sistema</strong>s <strong>operativo</strong>s | © 2009-2010 Prof. Ing. Miguel Angel Aguilar Ulloa<br />

154


Atención de interrupciones<br />

El driver inicializa el<br />

dispositivo de E/S<br />

Chequeo continuo de<br />

interrupciones<br />

Se una interrupción y cede<br />

al control al manejador de<br />

interrupciones<br />

El manejador da servicio a<br />

la interrupción y retorna<br />

Se reanuda la tarea<br />

interumpida<br />

Inicializa E/S<br />

Entrada lista, salida<br />

completa o un error<br />

genera una interrupción<br />

SISTEMAS DE E/S Y CONTROLADORES DE DISPOSITIVOS<br />

<strong>Sistema</strong>s <strong>operativo</strong>s | © 2009-2010 Prof. Ing. Miguel Angel Aguilar Ulloa<br />

155


Interrupciones vs excepciones<br />

Interrupción: señal que envía un dispositivo de E/S a la CPU para indicar<br />

que la operación de la que se estaba ocupando, ya ha terminado.<br />

Excepción: una situación de error detectada por la CPU mientras<br />

ejecutaba una instrucción, que requiere tratamiento por parte del SO.<br />

(Ejemplo división entre cero, segmentation fault, etc).<br />

SISTEMAS DE E/S Y CONTROLADORES DE DISPOSITIVOS<br />

<strong>Sistema</strong>s <strong>operativo</strong>s | © 2009-2010 Prof. Ing. Miguel Angel Aguilar Ulloa<br />

156


Acceso Directo a Memoria (DMA)<br />

• Se usa para evitar el uso de PIO (programmed I/O), en donde el CPU es<br />

quien realiza las transferencias entre la memoria principal y los dispositivos.<br />

• El DMA consiste en realizar transferencias de grandes bloques de datos<br />

entre los dispositivos y la memoria principal del sistema, lo cual mejora<br />

notablemente el rendimiento del sistema.<br />

SISTEMAS DE E/S Y CONTROLADORES DE DISPOSITIVOS<br />

<strong>Sistema</strong>s <strong>operativo</strong>s | © 2009-2010 Prof. Ing. Miguel Angel Aguilar Ulloa<br />

157


Diagrama de bloque de un sistema con DMA<br />

DMA<br />

Controlador<br />

de disco IDE<br />

CPU<br />

Caché<br />

Bus de memoria del CPU<br />

PCI<br />

Memoria<br />

X<br />

SISTEMAS DE E/S Y CONTROLADORES DE DISPOSITIVOS<br />

<strong>Sistema</strong>s <strong>operativo</strong>s | © 2009-2010 Prof. Ing. Miguel Angel Aguilar Ulloa<br />

158


Proceso de transferencias usando DMA<br />

1. Se le indica al driver que debe transferir datos desde el disco a la<br />

memoria X.<br />

2. El driver le dice al controlador de disco que debe transferir N bytes<br />

desde el disco al búfer X en la memoria.<br />

3. El controlador de disco inicializa el DMA.<br />

4. El controlador de disco envía cada byte al controlador de DMA.<br />

5. El controlador de DMA transfiere los bytes al búfer de la dirección X en<br />

la memoria.<br />

6. Cuando la transferencia finaliza el DMA genera una interrupción al CPU.<br />

SISTEMAS DE E/S Y CONTROLADORES DE DISPOSITIVOS<br />

<strong>Sistema</strong>s <strong>operativo</strong>s | © 2009-2010 Prof. Ing. Miguel Angel Aguilar Ulloa<br />

159


Interface de E/S de las aplicaciones<br />

• Uno de los objetivos al diseñar SO es proveer una interface estándar a las<br />

aplicaciones para hacer uso de los dispositivos de E/S.<br />

• Esto se logra mediante los controladores de dispositivos (device drivers)<br />

los cuales ocultan las diferencias entre los dispositivos y el kernel. Así el<br />

kernel puede hacer uso de los dispositivos de una forma estándar.<br />

SISTEMAS DE E/S Y CONTROLADORES DE DISPOSITIVOS<br />

<strong>Sistema</strong>s <strong>operativo</strong>s | © 2009-2010 Prof. Ing. Miguel Angel Aguilar Ulloa<br />

160


Dimensiones de los dispositivos<br />

De flujo o bloque: los de flujo transfieren datos byte por byte, los de<br />

bloques transfieren un conjunto de bytes en grupos.<br />

Acceso secuencial o aleatorio: los secuenciales accede los datos en<br />

orden, los aleatorios puede buscar cualquier dato sin orden alguno.<br />

Sincrónico y asincrónico: los sincrónicos transfieren datos regularmente y<br />

los asincrónicos transfieren datos en periodos irregulares.<br />

Compartido y dedicado: los compartidos pueden ser empleados por más<br />

un proceso o hilo a la vez, los dedicados no.<br />

Velocidad del dispositivo: Bytes por segundo transferidos.<br />

Escritura-lectura, solo escritura y solo lectura: Dirección de flujo de<br />

datos.<br />

SISTEMAS DE E/S Y CONTROLADORES DE DISPOSITIVOS<br />

<strong>Sistema</strong>s <strong>operativo</strong>s | © 2009-2010 Prof. Ing. Miguel Angel Aguilar Ulloa<br />

161


Estructura de E/S del Kernel<br />

Driver de<br />

SCSI<br />

Controlador<br />

de SCSI<br />

Driver de<br />

USB<br />

Controlador<br />

de USB<br />

Kernel<br />

Subsistema de E/S del Kernel<br />

Driver de<br />

Ethernet<br />

Controlador<br />

de Ethernet<br />

Driver del<br />

teclado<br />

Controlador<br />

de teclado<br />

Driver de la<br />

pantalla<br />

Controlador<br />

de pantalla<br />

SCSI Hub USB Red Teclado Pantalla …<br />

…<br />

…<br />

SISTEMAS DE E/S Y CONTROLADORES DE DISPOSITIVOS<br />

<strong>Sistema</strong>s <strong>operativo</strong>s | © 2009-2010 Prof. Ing. Miguel Angel Aguilar Ulloa<br />

162


Dispositivos de bloque y caracter<br />

• Los dispositivos de bloque como su nombre lo dice son dispositivos<br />

orientados a las transferencias en bloque (dispositivos de almacenamiento<br />

masivo). Los comandos que incluyen son read(), write() y seek().<br />

• Los dispositivos de caracter realizan transferencias byte por bytes del CPU<br />

a los dispositivos. Los comandos que incluyen son get() y put().<br />

SISTEMAS DE E/S Y CONTROLADORES DE DISPOSITIVOS<br />

<strong>Sistema</strong>s <strong>operativo</strong>s | © 2009-2010 Prof. Ing. Miguel Angel Aguilar Ulloa<br />

163


E/S bloqueadores y no bloqueadores<br />

Bloqueadores: el proceso es suspendido hasta que se complete las<br />

transferencia E/S sea completada. Es fácil de emplear pero insuficiente para<br />

algunas necesidades.<br />

No bloqueadores: las llamadas de E/S devuelven tantos datos como estén<br />

disponibles (Ejemplo el teclado).<br />

Asincrónica: retorna inmediatamente sin esperar a que se termine la<br />

transferencia de E/S, así la aplicación continua ejecutándose y en algún<br />

punto en el futuro la finalización de la transferencia E/S se le es comunicada<br />

a la aplicación.<br />

SISTEMAS DE E/S Y CONTROLADORES DE DISPOSITIVOS<br />

<strong>Sistema</strong>s <strong>operativo</strong>s | © 2009-2010 Prof. Ing. Miguel Angel Aguilar Ulloa<br />

164


Métodos E/S sincrónicos vs asincrónicos<br />

Usuario<br />

Kernel<br />

Proceso<br />

Espera<br />

Driver<br />

Manejador de interrupción<br />

Hardware<br />

Transferencia<br />

Tiempo<br />

Sincrónico<br />

Proceso<br />

Driver<br />

Manejador de interrupción<br />

Hardware<br />

Transferencia<br />

Tiempo<br />

Asincrónico<br />

SISTEMAS DE E/S Y CONTROLADORES DE DISPOSITIVOS<br />

<strong>Sistema</strong>s <strong>operativo</strong>s | © 2009-2010 Prof. Ing. Miguel Angel Aguilar Ulloa<br />

165


10. SISTEMAS OPERATIVOS EN TIEMPO REAL (RTOS)


• Un sistema en tiempo real requiere no solo los resultados que genere sean<br />

correctos sino que éstos ser producidos en un periodo de tiempo<br />

determinado.<br />

• Algunos sistemas en tiempo se les conoce como críticamente seguros, en<br />

un cuales un retraso en los tiempos es catastrófico.<br />

• <strong>Sistema</strong> hard real time: éste sistema garantiza que las tareas de tiempo<br />

real serán completadas en el tiempo requerido.<br />

• <strong>Sistema</strong> soft real time: es menos restrictivo, simplemente le asigna una<br />

prioridad más alta a las tareas de tiempo real.<br />

SISTEMAS OPERATIVOS EN TIEMPO REAL (RTOS)<br />

<strong>Sistema</strong>s <strong>operativo</strong>s | © 2009-2010 Prof. Ing. Miguel Angel Aguilar Ulloa<br />

167


Características del sistema<br />

Un único propósito: A diferencia de los sistemas <strong>operativo</strong>s de propósito<br />

general los de tiempo real ésta diseñados parar un propósito específico.<br />

Tamaño pequeño: Usualmente los RTOS se ejecutan en ambientes donde<br />

el espacio fisico es reducido. El footprint se refiere a la cantidad de espacio<br />

requerido para ejecutar el sistema <strong>operativo</strong> y sus aplicaciones, usualmente<br />

los RTOS tienen un footprint pequeño.<br />

No son costosos en masa: Los RTOS se encuentran en muchos<br />

dispositivos de electrónica de consumo por lo cual deben ser baratos para<br />

producción en masa.<br />

Requerimientos de tiempo específicos: Esta es la característica que<br />

define a un sistema en tiempo real, tanto sistemas soft real time como hard<br />

real time.<br />

Los requerimientos de tiempo en un RTOS se resuelven desde dos<br />

aspectos: dándole la prioridad más alta a las tareas de tiempo real y<br />

minimizando el tiempo de respuesta de las interrupciones.<br />

SISTEMAS OPERATIVOS EN TIEMPO REAL (RTOS)<br />

<strong>Sistema</strong>s <strong>operativo</strong>s | © 2009-2010 Prof. Ing. Miguel Angel Aguilar Ulloa<br />

168


Características de un Kernel de tiempo real<br />

• La mayoría de sistemas en tiempo real no proveen las características que<br />

se encuentran en un sistema de propósito general.<br />

• Las razones son:<br />

1. Los sistemas de tiempo real son de propósito específico.<br />

2. Los sistemas de tiempo real usualmente no manejan usuarios.<br />

3. Los sistemas de propósito general usualmente requieren un hardware<br />

que normalmente no está disponible en los sistemas de tiempo real.<br />

SISTEMAS OPERATIVOS EN TIEMPO REAL (RTOS)<br />

<strong>Sistema</strong>s <strong>operativo</strong>s | © 2009-2010 Prof. Ing. Miguel Angel Aguilar Ulloa<br />

169


Memoria virtual en sistemas de tiempo real<br />

• Existen varias enfoques especiales cuando se trata de la memoria virtual<br />

en sistemas de tiempo real:<br />

1. Modo de direccionamiento real: Los programas se general para las su<br />

direcciones físicas reales.<br />

2. Modo de registro de relocalización: Las direcciones físicas de cada<br />

proceso se calculan basado en un registro que le ofrece un offset a las<br />

direcciones del programa.<br />

3. Modo de memoria virtual completo: Se usa el MMU.<br />

SISTEMAS OPERATIVOS EN TIEMPO REAL (RTOS)<br />

<strong>Sistema</strong>s <strong>operativo</strong>s | © 2009-2010 Prof. Ing. Miguel Angel Aguilar Ulloa<br />

170


Memoria virtual en sistemas de tiempo real<br />

CPU<br />

L<br />

Registro de<br />

relocalización R<br />

Tabla<br />

páginas<br />

P = L<br />

TLB<br />

P = L +R<br />

P<br />

Memoria Física<br />

Proceso A<br />

Proceso B<br />

…<br />

Kernel<br />

SISTEMAS OPERATIVOS EN TIEMPO REAL (RTOS)<br />

<strong>Sistema</strong>s <strong>operativo</strong>s | © 2009-2010 Prof. Ing. Miguel Angel Aguilar Ulloa<br />

171


Implementación de RTOS<br />

En general los sistemas de tiempo real deben proveer las siguientes<br />

características:<br />

1. Preemptivo, la calendarización está basada en prioridades.<br />

2. Kernels preemptivos.<br />

3. Latencia debe ser disminuida.<br />

SISTEMAS OPERATIVOS EN TIEMPO REAL (RTOS)<br />

<strong>Sistema</strong>s <strong>operativo</strong>s | © 2009-2010 Prof. Ing. Miguel Angel Aguilar Ulloa<br />

172


Calendarización basada en prioridades<br />

• La característica más importante de un sistema en tiempo real es<br />

responder inmediatamente a procesos tan pronto como los procesos<br />

requieren el CPU.<br />

• Como resultado el calendarizador de un RTOS debe soportar un algoritmo<br />

preemptivo basado en prioridades.<br />

SISTEMAS OPERATIVOS EN TIEMPO REAL (RTOS)<br />

<strong>Sistema</strong>s <strong>operativo</strong>s | © 2009-2010 Prof. Ing. Miguel Angel Aguilar Ulloa<br />

173


Kernels preemptivos<br />

• Los kernels no preemptivos deshabilitan la preempción del los procesos<br />

que corren en modo kernel. Así un proceso se ejecutará hasta que salga del<br />

modo kernel, sea bloqueado o ceda el CPU voluntariamente.<br />

• En contraste un kernel preemptivo permite hacer preempción de un<br />

proceso que corre en modo kernel. Es decir, permite interrumpir los<br />

procesos del kernel.<br />

SISTEMAS OPERATIVOS EN TIEMPO REAL (RTOS)<br />

<strong>Sistema</strong>s <strong>operativo</strong>s | © 2009-2010 Prof. Ing. Miguel Angel Aguilar Ulloa<br />

174


Minimizar la latencia<br />

• La latencia es la cantidad de tiempo que toma darle servicio a un evento<br />

desde que éste sucede.<br />

El evento E ocurre<br />

t0<br />

Tiempo<br />

• Hay dos tipos de latencia que afectan el rendimiento de un sistema en<br />

tiempo real:<br />

1. Latencia de interrupciones.<br />

2. Latencia de despacho.<br />

Latencia<br />

t1<br />

El RTOS responde al evento E<br />

SISTEMAS OPERATIVOS EN TIEMPO REAL (RTOS)<br />

<strong>Sistema</strong>s <strong>operativo</strong>s | © 2009-2010 Prof. Ing. Miguel Angel Aguilar Ulloa<br />

175


Latencia de interrupciones<br />

• Es el tiempo requerido desde el momento en que se ejecuta una<br />

interrupción hasta que se le da servicio la misma.<br />

Tarea T corriendo<br />

Determinar el tipo<br />

de interrupción<br />

Cambio de contexto<br />

ISR<br />

SISTEMAS OPERATIVOS EN TIEMPO REAL (RTOS)<br />

Latencia de la interrupción<br />

<strong>Sistema</strong>s <strong>operativo</strong>s | © 2009-2010 Prof. Ing. Miguel Angel Aguilar Ulloa<br />

176


Latencia de despacho<br />

• Es la cantidad de tiempo requerido por el calendarizador para terminar un<br />

proceso y empezar otro.<br />

Evento<br />

Proceso disponible<br />

Procesamiento<br />

de la<br />

interrupción<br />

Conflictos<br />

Intervalo de respuesta<br />

Latencia de despacho<br />

Despacho<br />

Respuesta al evento<br />

Ejecución del<br />

proceso en<br />

tiempo real<br />

SISTEMAS OPERATIVOS EN TIEMPO REAL (RTOS)<br />

<strong>Sistema</strong>s <strong>operativo</strong>s | © 2009-2010 Prof. Ing. Miguel Angel Aguilar Ulloa<br />

177


Calendarización en sistemas de tiempo real<br />

• Los procesos periódicos requieren el uso del CPU en intervalos<br />

especificados (periodos):<br />

p es la duración del periodo.<br />

d el es tiempo en el cual el proceso debe ser servido (deadline).<br />

t es el tiempo de procesamiento.<br />

t<br />

d<br />

p p p<br />

t<br />

d<br />

t<br />

d<br />

SISTEMAS OPERATIVOS EN TIEMPO REAL (RTOS)<br />

Periodo 1 Periodo 2 Periodo 3<br />

Tiempo<br />

<strong>Sistema</strong>s <strong>operativo</strong>s | © 2009-2010 Prof. Ing. Miguel Angel Aguilar Ulloa<br />

178


Calendarización de dos procesos ´cuando uno tiene prioridad más alta<br />

• Se tienen dos procesos P1 y P2, cuyos periodos son 50 y 100<br />

respectivamente. Y tienen tiempos de procesamiento de 20 y 35<br />

respectivamente. El deadline de cada proceso establece que éste debe ser<br />

completado antes del inicio del siguiente periodo. P2 tiene una prioridad<br />

más alta que P1.<br />

Deadline P1 P1, P2<br />

P2<br />

P1<br />

0 10 20 30 40 50 60 70 80 90 100 110 120<br />

SISTEMAS OPERATIVOS EN TIEMPO REAL (RTOS)<br />

<strong>Sistema</strong>s <strong>operativo</strong>s | © 2009-2010 Prof. Ing. Miguel Angel Aguilar Ulloa<br />

179


Calendarización monotónica<br />

• La prioridad es asignada basada en el inverso del periodo del proceso.<br />

• Periodos más pequeños significan una prioridad más alta, periodos más<br />

largos menor prioridad.<br />

• En el ejemplo P1 tiene una prioridad más alta que P2:<br />

Deadline P1 P1, P2<br />

P1<br />

P2<br />

P2<br />

0 10 20 30 40 50 60 70 80 90 100 110 120<br />

P2<br />

SISTEMAS OPERATIVOS EN TIEMPO REAL (RTOS)<br />

<strong>Sistema</strong>s <strong>operativo</strong>s | © 2009-2010 Prof. Ing. Miguel Angel Aguilar Ulloa<br />

180


Deadline más temprano primero en ser calendarizado<br />

• Las prioridades están basadas en los deadlines, el proceso con el deadline<br />

más temprano tendrá una mayor prioridad.<br />

• Se tienen dos procesos P1 y P2, cuyos periodos son 50 y 80<br />

respectivamente. Y tienen tiempos de procesamiento de 25 y 35<br />

respectivamente.<br />

Deadline<br />

P1 P2 P1 P1 P2<br />

P1 P2 P1 P2 P1 P2<br />

0 10 20 30 40 50 60 70 80 90 100 110 120<br />

130 140 150 160<br />

SISTEMAS OPERATIVOS EN TIEMPO REAL (RTOS)<br />

<strong>Sistema</strong>s <strong>operativo</strong>s | © 2009-2010 Prof. Ing. Miguel Angel Aguilar Ulloa<br />

181


Cormen, T., Leiserson C., Rivest, R. Introduction to Algoritms. The MIT<br />

Press.<br />

Silberschatz, Avi. Operating System Concepts.<br />

Seventh Edition. 2004.<br />

BIBLIOGRAFÍA<br />

<strong>Sistema</strong>s <strong>operativo</strong>s | © 2009-2010 Prof. Ing. Miguel Angel Aguilar Ulloa<br />

182

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!