Anda di halaman 1dari 62

a Linux

Introduccion

Modulos
del kernel
de procesos
Gestion

Planificacion
de memoria
Gestion
Sistemas de archivos
Entrada y salida

T EMAS SUPLEMENTARIOS : E L SISTEMA


OPERATIVO L INUX
C URSO DE SISTEMAS OPERATIVOS
Juan Carlos Moreno Henao

Ingeniero electronico
Universidad Nacional de Colombia

Universidad de la Amazonia
5 de noviembre de 2014
Temas suplementarios: El sistema operativo Linux

a Linux
Introduccion

Modulos
del kernel
de procesos
Gestion

Planificacion
de memoria
Gestion
Sistemas de archivos
Entrada y salida

Historia de Linux
El sistema Linux

Linux es un sistema operativo libre y moderno basado en

los estandares
de UNIX.

Fue desarrollado al principio como un kernel


pequeno

pero autocontenido en 1991 por el finlandes Linus


principal de la
Torvalds, con la meta de diseno

compatibilidad con UNIX y lanzado con su codigo


fuente.
de muchos
Linux ha progresado gracias a la colaboracion
usuarios alrededor del mundo, comunicados casi
de Internet. Linux no hubiera sido
exclusivamente a traves
posible sin Internet.

Temas suplementarios: El sistema operativo Linux

a Linux
Introduccion

Modulos
del kernel
de procesos
Gestion

Planificacion
de memoria
Gestion
Sistemas de archivos
Entrada y salida

Historia de Linux
El sistema Linux

Linux ha sido disenado


para correr con eficiencia y
corre en
fiabilidad en plataformas PC, pero tambien
muchas otras plataformas.

El kernel
basico
de Linux es completamente original, pero
puede ejecutar mucho software libre UNIX, resultando en

un sistema operativo compatible con UNIX libre de codigo


propietario.
Linux tiene muchas y variadas distribuciones de Linux,

que incluyen el kernel,


utilidades y aplicaciones.

Temas suplementarios: El sistema operativo Linux

a Linux
Introduccion

Modulos
del kernel
de procesos
Gestion

Planificacion
de memoria
Gestion
Sistemas de archivos
Entrada y salida

Historia de Linux
El sistema Linux

0.01 (mayo de 1991) no tena sistema de red,


La version
corra solo en procesadores Intel compatibles con el
80386 y en hardware PC, tena muy poco soporte para
controladores de dispositivos, y soportaba solo el sistema
de archivos Minix.
1.0 inclua las siguientes caractersticas:
La version

Soporte para protocolos de red TCP/IP estandar


de UNIX.
Sistema de archivos mejorado.
Soporte para una variedad de controladores SCSI para

acceso de disco de alto desempeno.


Soporte de hardware extra.

1.2 (marzo del 95) significo el fin para el kernel

La version
Linux exclusivamente para la plataforma PC.
Temas suplementarios: El sistema operativo Linux

a Linux
Introduccion

Modulos
del kernel
de procesos
Gestion

Planificacion
de memoria
Gestion
Sistemas de archivos
Entrada y salida

Historia de Linux
El sistema Linux

2.0 anadi
o dos
Lanzada en junio de 1996, la version
caractersticas importantes:
Soporte para multiples
arquitecturas (incluyendo un puerto

completo para la plataforma Alpha de 64 bits).


Soporte para arquitecturas multiprocesador.

Otras nuevas caractersticas incluan:

de memoria mejorado.
Codigo
de gestion
TCP/IP mejorado.
Desempeno

Soporte para hilos de kernel


internos, para manejar

dependencias entre modulos


cargables y para carga

automatica
de modulos
por demanda.
estandarizada.
Interfaz de configuracion
Disponible para sistemas PowerMac, Sun Sparc y Motorola
68000.
Temas suplementarios: El sistema operativo Linux

a Linux
Introduccion

Modulos
del kernel
de procesos
Gestion

Planificacion
de memoria
Gestion
Sistemas de archivos
Entrada y salida

Historia de Linux
El sistema Linux

Las versiones 2.4 y 2.6 aumentaron el soporte SMP,

anadieron
un sistema de archivos de registro diario, un

kernel
preventivo y soporte de memoria de 64 bits.
3.0, lanzada en 2011, vigesimo

La version
aniversario del

mejoro la
kernel,
mejoro el soporte de virtualizacion,
de memoria, y creo un nuevo Planificador
gestion
Completely Fair
Completamente Justo (en ingles
Scheduler ).

Temas suplementarios: El sistema operativo Linux

a Linux
Introduccion

Modulos
del kernel
de procesos
Gestion

Planificacion
de memoria
Gestion
Sistemas de archivos
Entrada y salida

Historia de Linux
El sistema Linux

E L SISTEMA L INUX
Linux usa muchas herramientas desarrolladas como parte
del sistema operativo BSD de la universidad de Berkeley,
el Sistema de Ventanas X del MIT y el proyecto GNU de la
Free Software Foundation.
Las bibliotecas principales del sistema fueron iniciadas por
el proyecto GNU, con mejoras proporcionadas por la
comunidad de Linux.
de red de Linux derivaban de
Las herramientas de gestion

codigo de 4.3BSD; en revancha, recientes derivados de

BSD como FreeBSD han tomado prestado codigo


de
Linux.
Temas suplementarios: El sistema operativo Linux

a Linux
Introduccion

Modulos
del kernel
de procesos
Gestion

Planificacion
de memoria
Gestion
Sistemas de archivos
Entrada y salida

Historia de Linux
El sistema Linux

D ISTRIBUCIONES L INUX

Conjuntos de paquetes precompilados, estandares,


o

distribuciones, incluyen el sistema Linux basico,


un
y paquetes
instalador del sistema, utilidades de gestion,
listos para instalar de herramientas UNIX comunes.
Las primeras distribuciones gestionaban estos paquetes
simplemente proporcionando un medio der desempacar
todos los archivos en los lugares apropiados; las
avanzada de
distribuciones modernas incluyen gestion
paquetes.

Temas suplementarios: El sistema operativo Linux

a Linux
Introduccion

Modulos
del kernel
de procesos
Gestion

Planificacion
de memoria
Gestion
Sistemas de archivos
Entrada y salida

Historia de Linux
El sistema Linux

Entre las primeras distribuciones estaban SLS y


Slackware. Red Hat y Debian son distribuciones populares
de fuentes comerciales y no comerciales, respectivamente.
Otras distribuciones comunes son SuSE y Ubuntu (basado
en Debian).
El formato de archivos de paquete RPM permite
compatibilidad entre diferentes distribuciones de Linux.

El kernel
de Linux es distribuido bajo los terminos
de la
GPL (Licencia publica
general de GNU). Linux no

esta bajo el dominio publico.

Temas suplementarios: El sistema operativo Linux

a Linux
Introduccion

Modulos
del kernel
de procesos
Gestion

Planificacion
de memoria
Gestion
Sistemas de archivos
Entrada y salida

Historia de Linux
El sistema Linux

P RINCIPIOS DE DISE NO
Linux es un sistema multitarea, multiusuario con un
conjunto completo de herramientas compatibles con UNIX.

Su sistema de archivos se adhiere a la semantica


tradicional de UNIX e implementa completamente el

modelo de red estandar


de UNIX.
son la velocidad, la
Las metas principales de diseno

eficiencia y la estandarizacion.

Linux esta disenado


para cumplir con el estandar
POSIX;
al menos dos distribuciones de Linux han logrado
POSIX oficial.
certiifcacion
Linux soporta Pthreads y un subconjunto de control de
procesos POSIX en tiempo real.
Temas suplementarios: El sistema operativo Linux

a Linux
Introduccion

Modulos
del kernel
de procesos
Gestion

Planificacion
de memoria
Gestion
Sistemas de archivos
Entrada y salida

Historia de Linux
El sistema Linux

F IGURA : Componentes de un sistema Linux

Temas suplementarios: El sistema operativo Linux

a Linux
Introduccion

Modulos
del kernel
de procesos
Gestion

Planificacion
de memoria
Gestion
Sistemas de archivos
Entrada y salida

Historia de Linux
El sistema Linux

C OMPONENTES DE UN SISTEMA L INUX


Como la mayora de implementaciones UNIX, Linux

esta compuesto de tres cuerpos principales de codigo;


la

distincion mas importante entre el kernel y todos los otros


componentes.

El kernel
es responsable por mantener las abstracciones
importantes del sistema operativo.

El codigo
del kernel
corre en modo kernel
con acceso total
a todos los recursos fsicos del computador.

Todo el codigo
y las estructuras de datos del kernel
se
mantienen en un mismo y unico
espacio de direcciones.

Temas suplementarios: El sistema operativo Linux

a Linux
Introduccion

Modulos
del kernel
de procesos
Gestion

Planificacion
de memoria
Gestion
Sistemas de archivos
Entrada y salida

Historia de Linux
El sistema Linux

Las bibliotecas de sistema definen un conjunto estandar


del cual las aplicaciones interactuan
de funciones a traves

con el kernel
e implementan mucha de la funcionalidad del
sistema operativo que no necesita los completos

privilegios del codigo


del kernel.

Las utilidades de sistema realizan tareas de gestion


individuales especializadas.
Los programas en modo usuario, ricos y variados, incluyen
multiples
shells como bash.

Temas suplementarios: El sistema operativo Linux

a Linux
Introduccion

Modulos
del kernel
de procesos
Gestion

Planificacion
de memoria
Gestion
Sistemas de archivos
Entrada y salida

RNEL
M ODULOS
DEL K E

Los modulos
son secciones del kernel
que pueden ser
compiladas, cargadas y descargadas independientemente

del resto del kernel.

Un modulo
implementa por lo general un controlador de
dispositivo, un sistema de archivos o un protocolo de red.

La interfaz del modulo


permite que terceros escriban y

distribuyan, en sus propios terminos,


los controladores de
ser
sispositivos o los sistemas de archivos que no podran
distribuidos bajo la GPL.

Temas suplementarios: El sistema operativo Linux

a Linux
Introduccion

Modulos
del kernel
de procesos
Gestion

Planificacion
de memoria
Gestion
Sistemas de archivos
Entrada y salida

Los modulos
del kernel
permiten que un sistema Linux

pueda armarse con un kernel


mnimo y estandar,
sin
ningun
tipo de controladores de dispositivos adicionales
integrados.

Cuatro componentes que soportan los modulos


de Linux:
de modulos.

Sistema de gestion

Descargador y cargador de modulos.


Sistema de registro de controladores.
de conflictos.
Mecanismo de resolucion

Temas suplementarios: El sistema operativo Linux

a Linux
Introduccion

Modulos
del kernel
de procesos
Gestion

Planificacion
de memoria
Gestion
Sistemas de archivos
Entrada y salida

DE M ODULOS

S ISTEMA DE GESTI ON

de modulos

El sistema de gestion
soporta modulos
de
carga en la memoria y deja que hablen al resto del kernel

La carga de modulos
se divide en dos secciones
separadas.

Gestiona las secciones del codigo


del modulo
en la

memoria del kernel.

Maneja lo smbolos a los cuales los modulos


les
esta permitido referenciar.

Temas suplementarios: El sistema operativo Linux

a Linux
Introduccion

Modulos
del kernel
de procesos
Gestion

Planificacion
de memoria
Gestion
Sistemas de archivos
Entrada y salida

R EGISTRO DE CONTROLADORES

El registro de controladores permite que los modulos


les

digan al resto del kernel


que un nuevo controlador ha
quedado disponible.

El kernel
mantiene tablas dinamicas
de todos los
controladores conocidos, y proporciona un conjunto de

rutinas para permitir que los conductores se anadan


a
estas tablas en cualquier momento o se quiten de ellas.
Las tablas de registro incluyen los siguientes elementos:
Controladores de dispositivo.
Sistemas de archivo.
Protocolos de red.
Formato binario
Temas suplementarios: El sistema operativo Linux

a Linux
Introduccion

Modulos
del kernel
de procesos
Gestion

Planificacion
de memoria
Gestion
Sistemas de archivos
Entrada y salida

DE CONFLICTOS
R ESOLUCI ON
Es un mecanismo que permite que diferentes
controladores de dispositivos reserven recursos de
hardware y protejan esos recursos del uso accidental por
otro controlador.

de conflictos tiene como objetivos:


El modulo
de resolucion

Evitar que los modulos


interfieran con el acceso a los
recursos del harware.
Evitar que autoprobes interfieran con los controladores de
dispositivos existentes.
Resolver conflictos con multiples
controladores que tratan

de acceder a un mismo hardware.


Temas suplementarios: El sistema operativo Linux

a Linux
Introduccion

Modulos
del kernel
de procesos
Gestion

Planificacion
de memoria
Gestion
Sistemas de archivos
Entrada y salida

entre procesos
Comunicacion

DE PROCESOS
G ESTI ON
de procesos de UNIX separa la creacion
de
La gestion
de un nuevo programa en dos
procesos y la ejecucion
operaciones distintas.
La llamada a sistema fork() crea un nuevo proceso.
de una llamada a exec() se ejecuta un nuevo
Despues
programa.
que el
En UNIX, un proceso abarca toda la informacion
sistema operativo debe mantener para rastrear el contexto
de un solo programa.
de una sola ejecucion
En Linux, las propiedades de los procesos caen en tres
grupos: la identidad, el entorno y el contexto.
Temas suplementarios: El sistema operativo Linux

a Linux
Introduccion

Modulos
del kernel
de procesos
Gestion

Planificacion
de memoria
Gestion
Sistemas de archivos
Entrada y salida

entre procesos
Comunicacion

I NDENTIDAD DE UN PROCESO

La identidad de un proceso consiste principalmente de los


siguientes elementos:
ID del Proceso (PID)
Credenciales
Personalidad
Espacio de nombres

Temas suplementarios: El sistema operativo Linux

a Linux
Introduccion

Modulos
del kernel
de procesos
Gestion

Planificacion
de memoria
Gestion
Sistemas de archivos
Entrada y salida

entre procesos
Comunicacion

E NTORNO DE UN PROCESO
El entorno del proceso es heredado de su padre y
esta compuesto de dos vectores terminados en NULL.
El vector argumento
El vector entorno

Pasar variables de entorno entre procesos y heredar


variables por los hijos de un proceso son medios flexibles
a los componentes del software de
de pasar informacion
sistema en modo de usuario.
El mecanismo de variable de entorno proporciona una
del sistema operativo que se puede
personalizacion
de cada proceso, en lugar de ser
configurar en funcion
configurada para el sistema como un todo
Temas suplementarios: El sistema operativo Linux

a Linux
Introduccion

Modulos
del kernel
de procesos
Gestion

Planificacion
de memoria
Gestion
Sistemas de archivos
Entrada y salida

entre procesos
Comunicacion

C ONTEXTO DE UN PROCESO
Contexto es el estado (constantemente cambiante) de un
en cualquier punto en el tiempo.
programa en ejecucion
importante
es la parte mas
El contexto de planificacion

del contexto del proceso; es la informacion que el


planificador necesita para suspender y reiniciar el proceso.

de conteo de los recursos


El kernel
mantiene informacion
actualmente siendo consumidos por cada proceso y los

recursos totales consumidos por el proceso en su duracion


hasta ahora.

Temas suplementarios: El sistema operativo Linux

a Linux
Introduccion

Modulos
del kernel
de procesos
Gestion

Planificacion
de memoria
Gestion
Sistemas de archivos
Entrada y salida

entre procesos
Comunicacion

P ROCESOS E HILOS
interna para los
Linux usa la misma representacion
procesos y para los hilos; un hilo es simplemente un nuevo
proceso que comparte el mismo espacio de direcciones
que su padre.
Tanto los procesos como los hilos se llaman tareas en
Linux.
Solo se distingue entre procesos e hilos cuando se crea
un nuevo hilo con clone().
fork() crea una nueva tarea con su propio contexto de
tarea completamente nuevo.
clone() crea una nueva tarea con su propia identidad,
pero se le permite compartir las estructuras de datos de su
padre.
Temas suplementarios: El sistema operativo Linux

a Linux
Introduccion

Modulos
del kernel
de procesos
Gestion

Planificacion
de memoria
Gestion
Sistemas de archivos
Entrada y salida

entre procesos
Comunicacion

F IGURA : Banderas de la llamada a sistema clone()

Temas suplementarios: El sistema operativo Linux

a Linux
Introduccion

Modulos
del kernel
de procesos
Gestion

Planificacion
de memoria
Gestion
Sistemas de archivos
Entrada y salida

entre procesos
Comunicacion

ENTRE PROCESOS
C OMUNICACI ON
Como UNIX, Linux informa a los procesos que un evento
de senales.

ha ocurrido a traves

Hay un numero
limitado de senales,
y estas no pueden

Solo el hecho de que una senal

llevar informacion:
ocurrida esta disponible para un proceso.

El kernel
de Linux no usa senales
para comunicarse con
corriendo en modo kernel,

los procesos que estan


mas
dentro del kernel

bien, la comunicacion
se logra a traves
y estructuras wait_queue.
de estados de planificacion

Temas suplementarios: El sistema operativo Linux

a Linux
Introduccion

Modulos
del kernel
de procesos
Gestion

Planificacion
de memoria
Gestion
Sistemas de archivos
Entrada y salida

entre procesos
Comunicacion

El mecanismo de tubera (pipe) permite que un proceso


de su padre; los
hijo herede un canal de comunicacion
dfatos escritos a un extremo de la tubera pueden ser
ledos por la otra.
La memoria compartida ofrece un manera

cualesquiera
extremadamente rapida
de comunicacion;
de memoria
datos escritos por un proceso a una region
compartida puede ser leda inmediatamente por
a
cualquiera otro proceso que haya mapeado esa region
su espacio de direcciones.
sin embargo, la memoria
Para obtener sincronizacion,
compartida debe ser usada en conjunto con otro
entre procesos.
mecanismo de comunicacion
Temas suplementarios: El sistema operativo Linux

a Linux
Introduccion

Modulos
del kernel
de procesos
Gestion

Planificacion
de memoria
Gestion
Sistemas de archivos
Entrada y salida

Completely Fair Scheduler

EN L INUX
P LANIFICACI ON
es la
Aunque se cree normalmente que la planificacion
e interrupcion
de procesos, en Linux, la
ejecucion
tambien
incluye la ejecucion
de diversas
planificacion

tareas del kernel.


de tareas del kernel

La ejecucion
abarca tanto las tareas
como por
que son solicitadas por un proceso en ejecucion
las que se ejecutan internamente de parte de un
controlador de dispositivos.

Linux 2.5 introdujo un nuevo algoritmo de planificacion


preventivo, basado en prioridades conocido como O(1).
Temas suplementarios: El sistema operativo Linux

a Linux
Introduccion

Modulos
del kernel
de procesos
Gestion

Planificacion
de memoria
Gestion
Sistemas de archivos
Entrada y salida

Completely Fair Scheduler

Linux 2.6 introdujo el Planificador Completamente Justo


(Completely Fair Scheduler (CFS)), que soluciono muchos
problemas que haba con el planificador O(1).
CFS es un planificador preventivo, con un algoritmo
basado en prioridad con dos rangos de prioridad
separados:
Un rango de tiempo real que va de 0 a 99
nice) que va de -20 a
Un rango de valores finos (en ingles
19.

Temas suplementarios: El sistema operativo Linux

a Linux
Introduccion

Modulos
del kernel
de procesos
Gestion

Planificacion
de memoria
Gestion
Sistemas de archivos
Entrada y salida

Completely Fair Scheduler

CFS
de
CFS elimina la idea tradicional y comun
de porcion
tiempo.
de
En vez de eso, a las tareas se les asigna una porcion
tiempo del procesador.

CFS calcula cuanto tarda un proceso en correr en funcion


del numero
total de tareas.

N tareas ejecutables quiere decir que cada uno tiene 1/N


de tiempo del procesador.
Entonces pesa cada tarea con su valor fino: Un valor fino
alta).
menor implica un peso mayor (prioridad mas
Temas suplementarios: El sistema operativo Linux

a Linux
Introduccion

Modulos
del kernel
de procesos
Gestion

Planificacion
de memoria
Gestion
Sistemas de archivos
Entrada y salida

Completely Fair Scheduler

Luego cada tarea se ejecuta en un tiempo proporcional al


peso de la tarea dividido por el peso total de todas las
tareas ejecutables.
La latencia destino variable configurable es el intervalo
deseado durante el cual cada tarea debe ejecutarse al
menos una vez.

Considerese
el caso simple de dos tareas ejecutables con
igual peso y latencia destino de 10 ms - cada tarea se
ejecuta en 5 ms.
Si hay 10 tareas ejecutables, cada una se ejecuta en 1 ms.

Temas suplementarios: El sistema operativo Linux

a Linux
Introduccion

Modulos
del kernel
de procesos
Gestion

Planificacion
de memoria
Gestion
Sistemas de archivos
Entrada y salida

Memoria virtual
y carga de programas de usuario
Ejecucion

Enlazado dinamico
en Linux

DE MEMORIA
G ESTI ON

de memoria fsico se ocupa de


El sistema de gestion

asignar y liberar paginas,


grupos de paginas
y pequenos
bloques de memoria.
Tiene mecanismos adicionales para manejar la memoria
virtual, memora mapeada en el espacio de direcicones de

los procesos en ejecucion.


Se divide la memoria en cuatro zonas diferentes debido a
caractersticas de hardware.

Temas suplementarios: El sistema operativo Linux

a Linux
Introduccion

Modulos
del kernel
de procesos
Gestion

Planificacion
de memoria
Gestion
Sistemas de archivos
Entrada y salida

Memoria virtual
y carga de programas de usuario
Ejecucion

Enlazado dinamico
en Linux

de zonas y direcciones fsicas en Intel x86-32.


F IGURA : Relacion

Temas suplementarios: El sistema operativo Linux

a Linux
Introduccion

Modulos
del kernel
de procesos
Gestion

Planificacion
de memoria
Gestion
Sistemas de archivos
Entrada y salida

Memoria virtual
y carga de programas de usuario
Ejecucion

Enlazado dinamico
en Linux

G ESTIONANDO LA MEMORIA FI SICA

El asignador de pagina
asigna y libera todas las paginas

fsicas; puede asignar extensiones de paginas


contiguas
fsicamente por demanda.

El asignador usa un algoritmo de descomposicion


binaria (buddy-heap) a fin de hacer seguimiento a las

paginas
fsicas disponibles.

Temas suplementarios: El sistema operativo Linux

a Linux
Introduccion

Modulos
del kernel
de procesos
Gestion

Planificacion
de memoria
Gestion
Sistemas de archivos
Entrada y salida

Memoria virtual
y carga de programas de usuario
Ejecucion

Enlazado dinamico
en Linux

de memoria asignable esta aparejada con un


Cada region
socio adyacente.
Siempre que dos regiones socias asignadas son ambas
mas
grande.
liberadas se combinan para formar una region
solicitud de memoria no puede ser
Si una pequena
region
libre existente,
satisfecha asignando una pequena
libre mas
grande sera subdividida en
entonces una region
dos socios para satisfacer la solicitud.

Temas suplementarios: El sistema operativo Linux

a Linux
Introduccion

Modulos
del kernel
de procesos
Gestion

Planificacion
de memoria
Gestion
Sistemas de archivos
Entrada y salida

Memoria virtual
y carga de programas de usuario
Ejecucion

Enlazado dinamico
en Linux

Las asignaciones de memoria en el kernel


de Linux se dan

estaticamente
(los controladores reservan un area
contigua de memoria durante el tiempo de arranque del

del asignador de
sistema) o dinamicamente
(a traves

paginas).
se usa un asignador de piezas (slabs) para la
Tambien

memoria del kernel.

Temas suplementarios: El sistema operativo Linux

a Linux
Introduccion

Modulos
del kernel
de procesos
Gestion

Planificacion
de memoria
Gestion
Sistemas de archivos
Entrada y salida

Memoria virtual
y carga de programas de usuario
Ejecucion

Enlazado dinamico
en Linux

El cache de pagina
y el sistema de memoria virtual
gestionan la memoria fsica.
tambien

El cache de pagina
es el cache principal del kernel
para
los archivos y el mecanismo principal para E/S para
bloquear dispositivos.

El cache de pagina
almacena paginas
enteras de
contenidos de archivo para E/S de archivos locales y de
red.

Temas suplementarios: El sistema operativo Linux

a Linux
Introduccion

Modulos
del kernel
de procesos
Gestion

Planificacion
de memoria
Gestion
Sistemas de archivos
Entrada y salida

Memoria virtual
y carga de programas de usuario
Ejecucion

Enlazado dinamico
en Linux

de la memoria en un sistema de descomposicion

F IGURA : Division
binaria

Temas suplementarios: El sistema operativo Linux

a Linux
Introduccion

Modulos
del kernel
de procesos
Gestion

Planificacion
de memoria
Gestion
Sistemas de archivos
Entrada y salida

Memoria virtual
y carga de programas de usuario
Ejecucion

Enlazado dinamico
en Linux

F IGURA : Asignador de piezas


Temas suplementarios: El sistema operativo Linux

a Linux
Introduccion

Modulos
del kernel
de procesos
Gestion

Planificacion
de memoria
Gestion
Sistemas de archivos
Entrada y salida

Memoria virtual
y carga de programas de usuario
Ejecucion

Enlazado dinamico
en Linux

M EMORIA VIRTUAL
El sistema de memoria virtual mantiene el espacio de

direcciones visible a cada proceso: Crea paginas


de
memoria virtual por demanda, y gestiona la carga o

intercambio de estas paginas


cuando se solicite.
El gestor de memoria virtual mantiene dos vistas
separadas del espacio de direcciones de un proceso:

Una vista logica


que describe las instrucciones
del espacio de direcciones.
concernientes a la disposicion
Una vista fsica de cada espacio de direcciones que se

almacena en las tablas de pagina


de hardware para el
proceso.
Temas suplementarios: El sistema operativo Linux

a Linux
Introduccion

Modulos
del kernel
de procesos
Gestion

Planificacion
de memoria
Gestion
Sistemas de archivos
Entrada y salida

Memoria virtual
y carga de programas de usuario
Ejecucion

Enlazado dinamico
en Linux

Las regiones de memoria virtual se caracterizan por:


de respaldo, que describe de donde

El almacen
vienen las

las regiones son usualmente


paginas
para una region;
respaldadas por un archivo o por nada (memoria de
demanda cero).
de la region
a escritura (comparticion
de
La reaccion

pagina
o copia por escritura).

El kernel
crea un nuevo espacio de direcciones virtuales.
1

Cuando un proceso ejecuta un nuevo programa con la


llamada a sistema exec().
de un nuevo proceso con la llamada a
En la creacion
sistema fork().

Temas suplementarios: El sistema operativo Linux

a Linux
Introduccion

Modulos
del kernel
de procesos
Gestion

Planificacion
de memoria
Gestion
Sistemas de archivos
Entrada y salida

Memoria virtual
y carga de programas de usuario
Ejecucion

Enlazado dinamico
en Linux

Cuando se ejecuta un nuevo programa, al proceso se le da


un espacio de direcciones virtual vaco y completamente
nuevo; las rutinas de carga del programa pueblan el
espacio de direcciones con regiones de memoria virtual.
Crear un nuevo proceso con fork() implica crear una
copia completa del espacio de direcciones virtuales del
proceso existente.

Temas suplementarios: El sistema operativo Linux

a Linux
Introduccion

Modulos
del kernel
de procesos
Gestion

Planificacion
de memoria
Gestion
Sistemas de archivos
Entrada y salida

Memoria virtual
y carga de programas de usuario
Ejecucion

Enlazado dinamico
en Linux

El kernel
copia los descriptores VMA del proceso padre y

crea luego un nuevo conjunto de tablas de pagina


para el
proceso hijo.

Las tablas de pagina


del proceso padre son copiadas
directamente a las del hijo, con el conteo de referencia de

cada pagian
cubierta aumentando cada vez.
del fork el proceso padre y el proceso hijo
Despues

comparten unas mismas paginas


de memoria fsica en su
espacio de direcciones.

Temas suplementarios: El sistema operativo Linux

a Linux
Introduccion

Modulos
del kernel
de procesos
Gestion

Planificacion
de memoria
Gestion
Sistemas de archivos
Entrada y salida

Memoria virtual
y carga de programas de usuario
Ejecucion

Enlazado dinamico
en Linux

M EMORIA VIRTUAL DEL K E RNEL

constante del
El kernel
de Linux reserva una region
espacio de direcciones virtuales de cada proceso para su
propio uso interno.

Esta area
de memoria virtual contiene dos regiones:

Un area
estatica
que contiene referencias de tablas de

pagina
a cada pagina
fsica de memoria disponible en el
simple de
sistema, de modo que haya una traduccion
direcciones virtuales o fsica cuando se este ejecutando

codigo
kernel.
reservada no esta reservada para
El resto de la seccion

ningun
proposito especfico; sus entradas de tabla de

pagina
pueden modificarse para apuntar a cualquiera otra

area
de memoria.
Temas suplementarios: El sistema operativo Linux

a Linux
Introduccion

Modulos
del kernel
de procesos
Gestion

Planificacion
de memoria
Gestion
Sistemas de archivos
Entrada y salida

Memoria virtual
y carga de programas de usuario
Ejecucion

Enlazado dinamico
en Linux

Y CARGA DE PROGRAMAS DE USUARIO


E JECUCI ON

Linux mantiene una tabla de funciones para cargar


la oportunidad de tratar de
programas; da acada funcion
cargar el archivo dado cuando se llama a exec().
El registro de multiples
rutinas cargadoras permite que

Linux soporte lo formatos binarios ELF y a.out.

Inicialmente, las paginas


de archivos binarios se mapean a
memoria virtual.

Temas suplementarios: El sistema operativo Linux

a Linux
Introduccion

Modulos
del kernel
de procesos
Gestion

Planificacion
de memoria
Gestion
Sistemas de archivos
Entrada y salida

Memoria virtual
y carga de programas de usuario
Ejecucion

Enlazado dinamico
en Linux

Solo cuando un programa trata de acceder a una pagina

dada, resultara un fallo de pagina


en esa pagina
al ser
cargada en la memoria fsica.
Un archivo binario de formato ELF consiste de un

encabezado seguido por varias secciones con alineacion

de pagina.
El cargador ELF funciona leyendo el encabezado y
mapeando las secciones del archivo a regiones separadas
de la memoria virtual.

Temas suplementarios: El sistema operativo Linux

a Linux
Introduccion

Modulos
del kernel
de procesos
Gestion

Planificacion
de memoria
Gestion
Sistemas de archivos
Entrada y salida

Memoria virtual
y carga de programas de usuario
Ejecucion

Enlazado dinamico
en Linux

de memoria para programas ELF


F IGURA : Disposicion

Temas suplementarios: El sistema operativo Linux

a Linux
Introduccion

Modulos
del kernel
de procesos
Gestion

Planificacion
de memoria
Gestion
Sistemas de archivos
Entrada y salida

Memoria virtual
y carga de programas de usuario
Ejecucion

Enlazado dinamico
en Linux

E NLAZADO DIN AMICO


EN L INUX

Linux implementa el enlazado dinamico


en modo usuario a
de una biblioteca especial del enlazador.
traves

Cada programa dinamicamente


enlazado contiene una
funcion
estaticamente

pequena
enlazada cuando el
proceso comienza.
Mapea la biblioteca del enlazador en memoria.

Temas suplementarios: El sistema operativo Linux

a Linux
Introduccion

Modulos
del kernel
de procesos
Gestion

Planificacion
de memoria
Gestion
Sistemas de archivos
Entrada y salida

Memoria virtual
y carga de programas de usuario
Ejecucion

Enlazado dinamico
en Linux

La biblioteca del enlazador determina las bibliotecas

dinamicas
requeridas por los proceso y los nombres de las
variables y funciones necesarias.
Mapea las bibliotecas en medio de la memoria virtual y
resuelve las referencias a los smbolos contenidos en las
bibliotecas.
Las bibliotecas compartidas compiladas tienen que ser de

(position-independent
codigo
independiente de posicion
code (PIC)) para que puedan ser cargadas en cualquier
parte.

Temas suplementarios: El sistema operativo Linux

a Linux
Introduccion

Modulos
del kernel
de procesos
Gestion

Planificacion
de memoria
Gestion
Sistemas de archivos
Entrada y salida

El sistema de archivos ext3

S ISTEMAS DE ARCHIVOS

Para el usuario, el sistema de archivos de Linux aparece

como un arbol
de directorio jerarquico
que obedece la

semantica
de UNIX.

Internamente, el kernel
oculta los detalles de la
y gestiona diferentes sistemas de archivos
implementacion
de una capa de abstraccion,
el sistema virtual de
a traves
archivos (VFS).

Temas suplementarios: El sistema operativo Linux

a Linux
Introduccion

Modulos
del kernel
de procesos
Gestion

Planificacion
de memoria
Gestion
Sistemas de archivos
Entrada y salida

El sistema de archivos ext3

El VFS de Linux esta disenado


en torno a principios
orientados a objetos y se compone de cuatro
componentes, que definen lo que un objeto archivo puede
parecerse:
La estructura de objetos inode representa un archivo
individual.
El objeto file representa un archivo abierto.
El objeto superblock representa un sistema de archivos
entero.
El objeto dentry representa una entrada de directorio
individual.

Temas suplementarios: El sistema operativo Linux

a Linux
Introduccion

Modulos
del kernel
de procesos
Gestion

Planificacion
de memoria
Gestion
Sistemas de archivos
Entrada y salida

El sistema de archivos ext3

contiene una capa de software


El VFS de Linux tambien
para manipular archivos con un conjunto de operaciones
en esos archivos.
Por ejemplo, las operaciones de archivos incluyen, entre
otras (de struct file_operations in
/usr/include/linux/fs.h):
int open(. . .) Abrir un archivo.
ssize_t read(. . .) Leer desde un archivo.
ssize_t write(. . .) Escribir a un archivo.
int mmap(. . .) Mapeo de memoria de un archivo.

Temas suplementarios: El sistema operativo Linux

a Linux
Introduccion

Modulos
del kernel
de procesos
Gestion

Planificacion
de memoria
Gestion
Sistemas de archivos
Entrada y salida

El sistema de archivos ext3

E L SISTEMA DE ARCHIVOS EXT 3

ext3 es el tipo de sistema de archivos estandar


para Linux.
Reemplaza a los antiguos sistemas de archivos para Linux
extfs y ext2.

Hay un nuevo estandar


en desarrollo, ext4, que anade
nuevas caractersticas, como extensiones.
Sin embargo, muchas distribuciones de Linux tienen
soporte para otros populares sistemas de archivos aparte

del estandar
de Linux (como FAT, por ejemplo).

Temas suplementarios: El sistema operativo Linux

a Linux
Introduccion

Modulos
del kernel
de procesos
Gestion

Planificacion
de memoria
Gestion
Sistemas de archivos
Entrada y salida

El sistema de archivos ext3

En ext3 un disco se asigna a archivos en bloques de 1, 2, 4


del tamano
total del sistema de archivos.
y 8 KB en funcion
de clusters disenados

ext3 utiliza polticas de asignacion

para colocar logicamente


bloques adyacentes de un
archivo en bloques adyacentes fsicamente en un disco, de
modo que pueda presentar una solicitud de E/S para
en un
varios bloques de disco como una sola operacion
grupo de bloques.
ext3 mantiene un mapa de bits de bloques libres en un
grupo de bloques y busca un byte libre para asignar al
menos 8 bloques a un tiempo.

Temas suplementarios: El sistema operativo Linux

a Linux
Introduccion

Modulos
del kernel
de procesos
Gestion

Planificacion
de memoria
Gestion
Sistemas de archivos
Entrada y salida

El sistema de archivos ext3

ext3 implementa un registro diario (journaling), que


consiste en que las actualizaciones del sistema de
archivos se escriben primero a un archivo de registros
(log) en forma de transacciones.
Si el computador se cuelga, algunas transacciones
podran estar en el registro diario, pero aun
no puestas en
el sistema de archivos.
de escritura en los discos duros
Mejora el desempeno
convirtiendo la E/S aleatoria en E/S secuencial.

Temas suplementarios: El sistema operativo Linux

a Linux
Introduccion

Modulos
del kernel
de procesos
Gestion

Planificacion
de memoria
Gestion
Sistemas de archivos
Entrada y salida

El sistema de archivos ext3

de bloques de ext3
F IGURA : Polticas de asignacion
Temas suplementarios: El sistema operativo Linux

a Linux
Introduccion

Modulos
del kernel
de procesos
Gestion

Planificacion
de memoria
Gestion
Sistemas de archivos
Entrada y salida

E NTRADA Y SALIDA

El sistema de archivos orientado a dispositivos de Linux


de dos
accede al almacenamiento en disco a traves

caches:

Los datos son puestos en cache en el cache de pagina,


que esta unificado con el sistema de memoria virtual.
Los metadatos son puestos en cache en el cache de bufer,

un cache separado indizado por el bloque de disco fsico.

Temas suplementarios: El sistema operativo Linux

a Linux
Introduccion

Modulos
del kernel
de procesos
Gestion

Planificacion
de memoria
Gestion
Sistemas de archivos
Entrada y salida

Linux divide todos los dispositivos en tres clases:


Los dispositivos de bloques permiten el acceso a bloques
fijo y completamente independientes.
de datos de tamano
Los dispositivos de caracteres incluyen la mayora de los
otros dispositivos; no necesitan soportar la funcionalidad
de los archivos regulares.
Los dispositivos de red se comunican con el subsistema

de red del kernel.

Temas suplementarios: El sistema operativo Linux

a Linux
Introduccion

Modulos
del kernel
de procesos
Gestion

Planificacion
de memoria
Gestion
Sistemas de archivos
Entrada y salida

D ISPOSITIVOS DE BLOQUE

Proporcionan la interfaz principal a todos los dispositivos


de disco en un sistema.
El gestor de solicitudes gestiona la lectura y la escritura
de contenidos de bufer
desde y hacia controladores de

dispositivo de bloque.

Temas suplementarios: El sistema operativo Linux

a Linux
Introduccion

Modulos
del kernel
de procesos
Gestion

Planificacion
de memoria
Gestion
Sistemas de archivos
Entrada y salida

Linux 2.6 introdujo el Completely Fair Queueing (CFQ)


Ahora el planificador de disco por defecto.
Fundamentalmente diferente de los algoritmos tipo
ascensor.
Mantiene un conjunto de listas, una para cada proceso por
defecto.
Usa el algoritmo C-SCAN, con round-robbin entre toda la
E/S pendiente de todos los procesos.
Cuatro bloques de cada proceso puestos de una vez.

Temas suplementarios: El sistema operativo Linux

a Linux
Introduccion

Modulos
del kernel
de procesos
Gestion

Planificacion
de memoria
Gestion
Sistemas de archivos
Entrada y salida

F IGURA : Estructura de bloques de un controlador de dispositivos

Temas suplementarios: El sistema operativo Linux

a Linux
Introduccion

Modulos
del kernel
de procesos
Gestion

Planificacion
de memoria
Gestion
Sistemas de archivos
Entrada y salida

D ISPOSITIVOS DE CAR ACTER

Un controlador de dispositivos que no ofrece acceso


aleatorio a bloques fijos de datos.

Un controlador de dispositivos de caracter


debe registrar
un conjunto de funciones que implementan las diversas
operaciones de E/S de archivo del controlador.

Temas suplementarios: El sistema operativo Linux

a Linux
Introduccion

Modulos
del kernel
de procesos
Gestion

Planificacion
de memoria
Gestion
Sistemas de archivos
Entrada y salida

El kernel
no realiza casi ningun
procesamiento de un
archivo ledo o solicitud de escritura a un dispositivo de

caracter,
sino que simplemente pasa la solicitud al
dispositivo.
a esta regla es que el subconjunto
La principal excepcion

especial de los controladores de dispositivos de caracter


que implementan dispositivos terminales, para los cuales

el kernel
mantiene una interfaz estandar.

Temas suplementarios: El sistema operativo Linux

Anda mungkin juga menyukai