PDF de programación - Sistemas Operativos II - TEMA 6 - Implementación de UNIX

Imágen de pdf Sistemas Operativos II - TEMA 6 - Implementación de UNIX

Sistemas Operativos II - TEMA 6 - Implementación de UNIXgráfica de visualizaciones

Publicado el 14 de Enero del 2017
752 visualizaciones desde el 14 de Enero del 2017
96,1 KB
21 paginas
Creado hace 24a (09/03/2000)
Sistemas Operativos II

T EM A 6

Implementación de
UNIX

Contenido

6.1. Introducción
6.2. El Núcleo (Kernel) de UNIX
6.3. Gestión de Procesos

6.3.1. Estructuras de Control de Procesos
6.3.2. Contexto de un proceso
6.3.3. Estados de un proceso
6.3.4. Interrupciones
6.3.5. Planificación de procesos

6.4. Sistema de Ficheros

6.4.1. Estructura del Sistema de Ficheros
6.4.2. Nodos-i
6.4.3. Estructura de un fichero regular
6.4.4. Directorios
6.4.5. El Sistema de Ficheros de Berkeley
6.4.6. Tablas de control de acceso a ficheros

6.5. Gestión de Memoria

6.5.1. Intercambio (Swapping)
6.5.2. Paginación

6.6. Entrada/Salida

6.6.1. Gestión de los dispositivos de bloque
6.6.2. Gestión de los dispositivos de caracteres

6.7. Comunicación entre Procesos (pipes)
6.8. Referencias

Sistemas Operativos II

TEMA 6

IMPLEMENTACIÓN DE UNIX

6.1. Introducción
Aunque la implementación de UNIX varía de versión en versión y de máquina a máquina, existen
conceptos e ideas que son aplicables a todas. El estudio de la implementación de UNIX es útil por dos
motivos. En primer lugar, muchas ideas empleadas en UNIX son usadas por sistemas operativos más
recientes, como OS/2 o Windows NT. En segundo lugar, el conocimiento de la implementación permite
sacar el máximo partido al sistema operativo a la hora de programar aplicaciones.

6.2. El Núcleo (Kernel) de UNIX
El kernel (núcleo) de UNIX es la parte del sistema que se carga desde disco a memoria cuando el
computador es encendido y permanece siempre en memoria hasta que el sistema es apagado o ocurre
algún error grave. Su mayor parte está escrita
en C, aunque algunos componentes del mismo
están escritos en ensamblador por motivos de
eficiencia.

Programas de usuario

Nivel de
Usuario

Biblioteca de
Llamadas al

Interrupción
Software (trap)

Sistema

con

para

diseñado

facilitar
estos dos

UNIX se basa en dos conceptos básicos:
ficheros y procesos. Por este motivo, el kernel
está
servicios
elementos
relacionados
son entidades
(Figura 1). Los procesos
"activas",
realizan
acciones por sí mismos, mientras que los
ficheros
de
información que son usados por los procesos.

lo que significa que

contenedores

son meros

Interfaz de Llamadas al Sistema

Subsistema de ficheros

Comunicación
entre procesos

Subsistema de
Control de
Procesos

Planificación

Cache de
Buffers

Gestión de
memoria

Carácter

Bloque

Manejadores de Dispositivos

tiene asignado un

El kernel es accedido por los programas
interface conocido
de usuario mediante un
como llamadas al sistema, que permiten a los
programas de usuario gestionar procesos,
ficheros y otros recursos. Toda llamada al
sistema
identificador
numérico. Los procesos realizan una llamada al
sistema colocando los argumentos de la misma
en registros o en la pila (stack) e invocando
una instrucción especial (trap) que pasa de
modo usuario a modo kernel. El identificador
de la llamada al sistema se usa como índice
para acceder a una tabla de llamadas al sistema
que existe en el kernel. Esta tabla es un array
de punteros a funciones que implementan cada
llamada al sistema. Estas funciones acceden a
estructuras de datos residentes en el kernel.
Debido a que no existe una instrucción trap en C, se suministra una biblioteca de funciones escritas en
ensamblador pero que pueden ser invocadas desde programas escritos en C.

Figura 1.- Diagrama de bloques del kernel.

Nivel de
Hardware

Nivel de
Kernel

Control del Hardware

Hardware

El kernel tiene dos componentes principales: el subsistema de control de ficheros y el subsistema de
control de procesos. El subsistema de control de ficheros realiza tareas relacionadas con la gestión de

_________________________________________________________________________________
___
TEMA 6. Implementación de UNIX

Pág. 1

Sistemas Operativos II

ficheros, como la asignación de espacio en disco, administración del espacio libre, control del acceso a los
ficheros e intercambio de información entre ficheros y programas de usuario. Los procesos interactúan con
el subsistema de ficheros a través de un conjunto de llamadas al sistema específicas, como open, close,
read, write, stat, chown, chmod, ... La comunicación entre el subsistema de ficheros y los
dispositivos físicos se realiza mediante los manejadores (drivers) de dispositivo. Se distinguen dos tipos
de dispositivos según la forma en que son accedidos:

q dispositivos de bloques (block devices).
q dispositivos de caracteres (raw devices).

El acceso a los dispositivos de bloques se realiza con la intervención de buffers, que permiten
aumentar la velocidad de transferencia. Un mismo dispositivo físico puede ser manejado tanto en modo
bloque como en modo carácter, dependiendo del manejador que use para acceder a él.

El subsistema de control de procesos lleva a cabo la comunicación y sincronización entre procesos,
gestiona la memoria y la planifica los procesos para su ejecución. Algunas llamadas al sistema para
control de proceso son fork, exec, exit, wait, brk y signal. El módulo de gestión de memoria
controla la asignación de la memoria. Así, por ejemplo, cuando en un momento dado no existe memoria
física suficiente para contener a todos los procesos, el gestor de memoria se encarga de mover algunos
procesos a almacenamiento secundario para permitir que otros se puedan ejecutar. Para ello utiliza
algunos mecanismos como swapping (intercambio) y demanda de páginas. El planificador (scheduler)
asigna la CPU a los procesos. Entra en ejecución cada cierto tiempo y determina si el proceso en ejecución
puede seguir su ejecución o, por el contrario, hay que quitarle la CPU (preemption) para asignársela a otro
proceso. El módulo de comunicación entre procesos permite que procesos arbitrarios intercambien

El control de hardware es la parte del kernel que se encarga del manejo de las interrupciones y de la
comunicación con la máquina. Dispositivos como los discos o terminales pueden interrumpir a la CPU
mientras ésta está ejecutando un proceso. En estos casos, el kernel interrumpirá al proceso en ejecución,
atenderá la interrupción y posteriormente reanudará la ejecución del proceso interrumpido.

El kernel contiene varias estructuras de datos (tabla de procesos, tabla de nodos índice, tabla de
ficheros, ...) que se implementan como tablas de tamaño fijo en lugar de estructuras de datos dinámicas. La
kernel es muy simple. El inconveniente es que limita el
número de entradas de una estructura de datos al número con el que fue originariamente configurada
cuando se generó el sistema. Si se agotan las entradas de una estructura de datos el kernel no puede
asignar nuevo espacio y devolverá un error al proceso correspondiente. Por otro lado, el espacio
reservado para las tablas que no es usado no se puede utilizar para otras tareas. No obstante, en UNIX se
considera más importante la simplicidad de los algoritmos del kernel que tener que aprovechar al máximo
toda la memoria del sistema. De este modo, los algoritmos son más eficientes y fáciles de comprender.

6.3. Gestión de Procesos
Cuando un programa es compilado se almacena en un fichero con un formato especial. Este formato
consta de cuatro partes:

• Una cabecera primaria que incluye, entre otra información, el número de secciones del fichero y el
magic number), que es usado por el kernel para identificar el tipo de fichero
ejecutable (por ejemplo, si los dos primeros caracteres son "#!", se trata de un fichero de texto que
contiene un shell script).

• Un conjunto de cabeceras (headers) de sección, que describen cada sección el fichero. Esta
descripción incluye el tipo y tamaño de la sección y la dirección de memoria virtual que debería
ocupar la sección cuando el programa sea ejecutado.

• Un conjunto de secciones, que contienen el código y los datos que se han de cargar en memoria en
el espacio de direcciones del futuro proceso. Los datos constituyen la representación en lenguaje
máquina de las variables que tienen un valor inicial cuando el programa inicia su ejecución, y la
kernel debería de reservar para las variables sin
inicializar. Esta cantidad se denomina bss y es inicializada cero por el kernel al inicio de la
ejecución del programa.

• Otras secciones, como información sobre la tabla de símbolos e información útil para depuración.

_________________________________________________________________________________
___
TEMA 6. Implementación de UNIX

Pág. 2

Sistemas Operativos II

Cabecera principal (incluye el número mágico)

Cabecera de la primera sección
Cabecera de la segunda sección

Las cabeceras son usadas por el kernel para cargar el programa en memoria e iniciar su ejecución, lo
que da lugar a un proceso. El kernel carga un fichero ejecutable en memoria durante la ejecución de una
llamada al sistema exec. Un proceso en memoria consiste
en tres regiones o segmentos: código, datos y pila. Los
segmentos de código y datos se corresponden con las
secciones de código y datos del fichero ejecutable. La pila
se crea de forma automática y su tamaño varía en tiempo de
ejecución y es controlado por el kernel. La pila consiste en
marcos de pila (stack frames) que son añadidos cuando se
llama a una función y extraídos cuando ésta termina. La
profundidad de la pila la indica un registro denominado
puntero de pila (stack pointer). Un marco de pila contiene
los parámetros de la función, sus variables locales y los
datos necesarios para recuperar el anterior marco de pila,
que incluyen los valores del contador de programa y el stack
pointer que existían cuando se llamó a la
  • Links de descarga
http://lwp-l.com/pdf1244

Comentarios de: Sistemas Operativos II - TEMA 6 - Implementación de UNIX (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad