You are on page 1of 42

Visin general e

introduccin al kernel
Diseo de Sistemas Operativos
Ingeniera en Informtica

Visin general e introduccin al ...


Objetivos:
Revisar conceptos relacionados con sistemas

operativos
Dar una visin general de UNIX, destacando
algunos aspectos del kernel
Dar una visin general de Linux, destacando
algunos aspectos del kernel

Visin general e introduccin al ...


Revisin de conceptos.

Visin general de UNIX.


Visin general de Linux.

Revisin de conceptos
Clasificacin del software
Software de aplicacin

Programas que realizan las tareas en las que el usuario


est realmente interesado

Software de sistema
Programas y libreras de soporte para el software de
aplicacin, por ejemplo el sistema operativo

Revisin de conceptos
Objetivos de un sistema operativo
Abstraccin de los recursos hardware
Almacenamiento heterogeneo Sistema de archivos
Memoria fsica + memoria secundaria Memoria virtual
Variedad de dispositivos de E/S E/S estndar

Reparto de recursos CPU, memora fsica, espacio

de disco, comunicaciones, etc.


Servicios de sistema al software de aplicacin
Semforos
Memoria compartida
Seales
Temporizacin, etc.

Revisin de conceptos
Caractersticas generales de un sistema operativo
Monotarea o multitarea Multitarea expulsiva
(preemptive), proteccin entre tareas, proteccin del
hardware
Monousuario o multiusuario
Monoplataforma o multiplataforma
Monoprocesador o multiprocesador
Interactivo o batch
Tiempo compartido, pudiendo procesar trabajos batch
Kernel monoltico o microkernel (o exokernel)
Sistemas operativos de tiempo real
6

Revisin de conceptos
Caractersticas generales de un sistema operativo
Procesos
Niveles de proteccin
Las instrucciones no pueden ejecutar cualquier instruccin
potencialmente peligrosa
Modo usuario y modo kernel (o supervisor)
Procesos Programa en ejecucin y con su contexto
Descriptor de procesos (PCB Process Control Block)
struct task_struct (elemento de struct thread_info)
Contexto de nivel de usuario
Contexto de nivel de sistema (kernel)
Contexto de registros
7

Revisin de conceptos
Caractersticas generales de un sistema operativo
Planificacin y conmutacin de procesos
Estados de un proceso Listo, En ejecucin, Parado,
Jerarqua de procesos Relacin padre-hijo
Threads (hilos). Threads del kernel
Tipos de planificacin quantum (timeslice), prioridad,
El algoritmo de planificacin del kernel de Linux O(1)

Procesos interumpibles por el kernel (preemptive)

Llamadas al sistema Interfaz entre un proceso y el

sistema operativo
Invocada por el proceso
Causada por una interrupcin software (seal)

Revisin de conceptos
Relacin entre aplicaciones, el kernel y el hardware

Revisin de conceptos
Sistemas monolticos versus microkernel
Enfoque monoltico
Kernels implementados como un gran proceso nico

ejecutndose en un nico espacio de direcciones


kernels en disco como un archivo binario
Todos los servicios del kernel existen y se ejecutan en el
gran espacio de direcciones del kernel
Comunicacin con el kernel es trivial, ya que todo se
ejecuta en modo kernel en el mismo espacio de direccines
El kernel puede llamar directamente a funciones, como si
fuesen aplicaciones en modo usuario
Sencillo y buen rendimiento Mayoria de los sistemas
10
UNIX son monolticos en diseo

Revisin de conceptos
Sistemas monolticos versus microkernel
Enfoque microkernel
Ncleo con funcionalidad mnima
Servicios provistos por servidores que son procesos
El kernel slo gestiona la comunicacin con los servidores
Las distintas partes del S.O. se comunican mediante paso

de mensajes
Chorus, QNX, Mach (GNU Hurd), WNT 3.51

11

Revisin de conceptos
Sistemas monolticos versus microkernel
Enfoque monoltico
+ Eficiente Pocos cambios de contexto
- Depuracin
- Ampliacin (modularidad)
- Dependencias

Enfoque microkernel
+ Fcil implementacin y depuracin
+ Portabilidad
+ La separacin de varios servidores previene la caida
de servidores
12
- Eficiente sobrecarga de comunicaciones

Revisin de conceptos
Linux
Estructura
Monoltico con mdulos cargables
Threaded
Dinmico (aadir y quitar mdulos) e interrumpible
Mayor modularidad que un sistema monoltico puro

mayor rendimiento que un sistema microkernel


Portabilidad
Escrito casi ntegramente en C estndar, con partes en
ensamblador dependientes de la arquitectura (/arch)
Nuevamente el equilibrio entre la sencillez y eficiencia

gana Linux gana

13

Revisin de conceptos
Linux
Caractersticas principales
S.O. estilo UNIX, compatible POSIX
Multitarea expulsiva, Multiusuario y Multiplataforma
Proteccin de memoria y memoria virtual, kernel threading,

interrumpible (preemptive)
SMP, Clustering
Variantes para Tiempo Real y CPUs sin MMU
Mltiples sistemas de archivos y protocolos de red
Con modelo de dispositivos orientado a objetos
Razonable soporte hardware
Casi todo escrito en C y depuracin en tiempo de ejecucin
Mdulos cargables en tiempo de ejecucin (dinmico)

14

Revisin de conceptos
UNIX/Linux
Algo de historia
1969: UNIX, Thompson & Ritchie (AT&T Bell Labs) proyecto

MULTICS
1978: BSD, Berkeley Software Distribution Distribuidores
comerciales: Sun, HP, IBM, SGI, DEC, Digital, SCO
1984: GNU: Richard Stallman (FSF)
1986: POSIX (Portable Operating System Interface) La
norma POSIX.1 ha uniformado las operaciones de manipulacin
basndose fundamentalmente en las funcionalidades existentes
en System V
1987: MINIX, Andrew Tanenbaum
1989: SVR4, AT&T
15
1991: 'Nacimiento' de Linux

Revisin de conceptos
Linux
Algo de historia
Evolucin de MINIX para 8086 (A.S. Tannenbaum, 12000 lneas

de cdigo abierto)
En 1991 Linus Torvalds pone un mensaje en USENET diciendo
que est escribiendo un S.O. como hobby, y deja los fuentes
disponibles. (0.01)
Poco despus publica la versin 0.02 y pide colaboraciones a
los interesados En menos de un ao ms de 100
colaboradores
Aparecen mltiples distribuciones comerciales y no comerciales
(Slackware, Red Hat, Suse, Mandrake, Caldera, Debian, etc.)
Soporte por parte de grandes empresas (Intel, IBM, Sun, Oracle,
HP, Informix, etc.) y para mltiples plataformas, no slo i386 16

Revisin de conceptos
Linux
Algo de historia
Linux 1.0 aparece en 1994 en forma de distribucin (i386)
Linux 1.2 en 1994 Soporta diferentes arquitecturas (Sparc,

Alpha, MIPS)
Linux 2.0 en 1996 competitivo con sist. UNIXs comerciales
Linux 2.2 (Enero 1999), con muchas mejoras y soporte
hardware
Linux 2.4 (Enero 2001), ms hardware soportado (ISA PnP,
USB) y modificaciones arquitecturales
Linux 2.6 (Diciembre 2003), caractersticas avanzadas,
enterprise, muchas mejoras en la arquitectura
Ultima versin estable 2.6.22 (X.Y.Z X = versin mayor, Y =
17
versin (par = estable, impar = desarrollo), Z = revisin)

Revisin de conceptos
Linux
Modelo de desarrollo de Linux
Modelo Open Source
Licencia GPL
Motivaciones resolver problemas (compartir

soluciones), educacin, reconocimiento, anti-monopolio,


seguridad
Autogestin del proyecto objetivos y motivacin
voluntarios, filosofa y herramientas comunes, desarrollos
en paralelo con poda de ramas fallidas, distribucin
frecuente y pruebas masivas, depuracin masiva por ser
Open Source
18
Resultados de gran calidad

Visin general e introduccin al ...


Revisin de conceptos.

Visin general de UNIX.


Visin general de Linux.

19

Visin general de UNIX


Estructura del sistema UNIX

20

Visin general de UNIX


Diagrama de bloques del kernel de UNIX

21

Visin general de UNIX


Subsistema de archivos en UNIX
Estructura jerrquica y tratamiento consistente de los datos
Crecimiento dinmico de los archivos (crear y borrar archivos)
Proteger los datos de los archivos
Tratar a los dispositivos y perifricos como si fuesen archivos

22

Visin general de UNIX


Organizacin del sistema de archivos en UNIX
Boot block cotiene el cdigo de arranque
Superblock Describe el estado del sistema de archivos (tamao,

nmero total de archivos que puede contener, espacio libre dispon.


Lista de inodos Cada archivo en UNIX tiene asociado un inodo,
que lo describe (propietario, permisos, fecha de actualizacin, )
Bloques de datos datos de los archivos, donde cada uno de los
bloques puede ser asignado a un archivo

23

Visin general de UNIX


Representacin interna y gestin de archivos en UNIX
Tabla de inodos Lista de inodos + informacin adicional
Tabla de archivos Estructura global al kernel y tiene una entrada

por cada archivos que los procesos (kern. & usr.) tienen abiertos
Tabla de descriptores de archivos de usuario Estructura local a
cada proceso e idenfica a los archivos abiertos por un proceso

24

Visin general de UNIX


Subsistema de procesos en UNIX
Tabla de procesos Entrada = PID, estado, temporizadores, etc.
U-rea Datos manipulables por el kernel y que son necesarios

slo cuando el proceso se est ejecutando


Tabla de regiones por proceso espacio de direcciones virtuales
del proceso
Tabla de regiones

25

Visin general de UNIX


Contexto de un proceso en UNIX
Contexto de un proceso = Estado del proceso su cdigo, los

valores de sus variables de usuario globales y de sus estructuras


de datos, el valor de los registros de la CPU, los valores
almacenados en su entrada de la tabla de procesos y en su rea de
usuario; y el contenido de sus pilas (stacks) de usuario y kernel
Contexto de nivel de usuario los segmentos de texto, datos y pila
del proceso, las zonas de memoria compartida, direcciones
virtuales en el rea de swap
Contexto de registros el contador de programa, el registro de
estado del procesador (PS), el puntero de la pila, y registros de
propsito general
Contexto de nivel de sistema entrada en la tabla de procesos, Urea, entrada en la tabla de regiones por proceso, tabla de regiones
26
y tabla de pginas, y pila del kernel

Visin general de UNIX


Estados de un proceso en UNIX. Perspectiva general
(1) El proceso se est ejecutando en modo usuario
(2) El proceso se est ejecutando en modo kernel
(3) El proceso est listo para ejecutarse (puede haber varios)
(4) El proceso est durmiendo/bloqueado por una operacin E/S

27

Visin general e introduccin al ...


Revisin de conceptos.

Visin general de UNIX.


Visin general de Linux.

28

Visin general de Linux


De forma general qu es un kernel de un S.O.
Es la parte del S.O. (software de sistema) encargado de

monitorizar y controlar todos los recursos hardware del


ordenador interface entre usuario y el hardware
Controla y media en el acceso al hardware
Abstrae todos los recursos hardware procesos, regiones,
archivos, dispositivos, etc.
Planifica y ubica los recursos del sistema CPU, memoria,
disco, etc.
Impone fuertes medidas de seguridad y proteccin en el
sistema
Responde a las demandas de los servicios por parte de los
29
usuarios

Visin general de Linux


Objetivos de diseo del kernel
Rendimiento eficiencia y velocidad Obtener el mejor

uso de los recursos del sistema con la menor sobrecarga


posible (rpido)
Estabilidad Robistez y capacidad de recuperacin
Flexibilidad y compatibilidad diferentes plataformas y
compatible con muchos sistemas operativos comunes
Seguridad y proteccin Proteger a los usuarios entre ellos
y proteger el sistema de ataque malignos por parte de otros
usuarios
Portabilidad
Extensibilidad y dinamismo Mdulos cargables
30

Visin general de Linux


Diagrama de bloques del kernel de Linux (1)

31

Visin general de Linux


Diagrama de bloques del kernel de Linux (2)

32

Visin general de Linux


Caractersticas destacables de Linux
Sistema operativo tipo UNIX
Multi*
Multitarea expulsiva/interrumpible (preemtive multi-tasking)
Memoria virtual memoria protegida, paginacin, etc.
Libreras compartidas
Carga de funcionalidad a demanda Dinamismo del kernel a

travs de los mdulos cargables


Ejecutables Copy-On-Write (COW) compartidos siempre que
sea posible, compartir marcos de pginas entre el proceso padre y
los procesos hijo, en lugar de duplicarlos
Redes TCP/IP
Soporte de SMP (Symmetric MultiProcessor)
33
Open source cdigo abierto

Visin general de Linux


Arquitectura conceptual de Linux
El S.O. Linux est compuesto por 4 grandes subsistemas
(1) Aplicaciones de usuario
(2) Servicios del S.O.
(3) El kernel de Linux
(4) Controladores hardware
Esta descomposicin se puede representar por niveles

34

Visin general de Linux


Estructura del kernel de Linux a nivel de subsistemas
Planificador de Procesos (Process Scheduler, SCHED) Controla

el acceso de los procesos a la CPU, dando un acceso justo a todos


los procesos
Gestor de Memoria (Memory Manager, MM) Permite que muchos
procesos compartan memoria, implementando mecanismos de
memoria virtual
Sistema de Archivos Virtual (Virtual File System, VFS) Abstrae
los detalles de los dispositivos hardware presentndolos como una
interface de archivos comn
Interface de Red (Networking Interface, NET) Proporciona
acceso a los sistemas de red
Comunicacin entre procesos (Inter-Process Communication, IPC)
Proporciona mecanismos para la comunicacin de procesos
35
(colas de mensaje, semforos y memorias compartidas)

Visin general de Linux


Diagrama de bloques de la estructura del kernel

36

Visin general de Linux


Dependencias entre subsistemas (1)
Todos los subsistemas dependen de SCHED Todos ellos

necesitan supender o reanudar procesos. Por ejemplo, un


proceso que intenta enviar un mensaje a travs de la red
(subsistema NET) el SCHED lo suspende hasta que el
mensaje se enva
El subsistema SCHED utiliza el subsistema MM para ajustar
el mapa de memoria hardware de un proceso especfico
cuando dicho proceso reanuda su ejecucin
El subsistema IPC depende del subsistema MM para soportar
mecanismos de comunicacin de memoria compartida en la
comunicacin entre procesos, y tambin del SCHED puesto
que deben de estar sincronizados los procesos que
37
intervienen en la comunicacin

Visin general de Linux


Dependencias entre subsistemas (2)
El subsistema VFS depende de los subsistemas MM y NET

para soportar sistemas de archivos en red y ram-disks


El subsistema MM utiliza el subsistema VFS para gestionar
los datos del swap (implementa mecanismo de memoria
virtual) Por ejemplo, cuando un proceso accede a memoria
que est actualmente en el rea de swap (swap-out), el
subsistema MM realiza una peticin al subsistema VFS para
traer los datos del dispositivo de almacenamiento secundario,
y suspender el proceso
Todos los subsistemas se basan en recursos comunes
(informacin de estado, etc.) que son propios de cada
subsistema Cada subsistema es responsable de
38
manterner sus propios recursos

Visin general de Linux


Estructuras de datos de los subsistemas (1)
SCHED: Task list
El scheduler mantiene un bloque de datos por cada proceso que
est activo (thread_info, task_struct)
Estos bloques estn almacenados en una lista encadenada
(list_head)
El scheduler siempre mantiene un puntero current que indica el
proceso activo

MM: Memory Map


El MM almacena un mapping de direccin virtual a fsica sobre
un proceso base (page)
La estructura de datos (memory map, mm) se encuentra como
un campo del descriptor de procesos
39

Visin general de Linux


Estructuras de datos de los subsistemas (2)
VFS: I-nodes
El VFS utiliza index-nodes para representar archivos sobre un
sistema de archivos lgico (super_block, inode, file,
dentry_cache, fs_struct)
La estructura de datos inode almacena el mapping de los
nmeros de bloques de archivos a las direcciones de dispositivo
fsicas. Tambin inode puede ser compartida entre procesos

NET: Data Connection


Punteros a informacin del mapping de memoria
Punteros a inodos que representan todos los archivos abiertos
Estructuras de datos que representan todas las conexiones de
red abiertas
40
NET hace transparente muchos dispositivos hardware y protoc.

Visin general de Linux


Diagrama de la estructura del fuente del kernel

41

Visin general de Linux


Caractersticas ms relevantes que aporta Linux 2.6
HyperThreading
Kernel expulsivo/interrumpible (Preemtive kernel)
Scheduler O(1)
Mejora del soporte NUMA (non-uniform memory architecture)
Soporte RMAP (Reverse Mapping for Anonymous Pages)

para memoria virtual


Nueva estructura de dispositivo del kernel (kdev_t)
Threading POSIX mejorado (NGPT (Next Generation POSIX
Threading Package) y NPTL (Native POSIX Thread Library))
Nuevo modelo de driver y estructura de dispositivo unificada
AMD 64-bit, PPC64
42
ACPI, ALSA, USB 2.0

You might also like