Está en la página 1de 33

Sistema Operativo – Segundo Semestre 2010

20 – 10 - 10
Hardware de E / S
(HDD)

Debemos saber cómo el S.O., interpreta el Hardware de la máquina.

• Existen 2 tipos de HW1:

1. Dispositivos de bloque: Conjunto de Bytes.

Ejemplo:

• PIO, PIO II, PIO III, PIO IV. (Programmed input/output).


• Ultra DMA 33/66 (66 Mbytes / Seg).
• ATA 100 (100MBytes / Seg.).
ATA: M PC más Baratos. $$$
ATA 1 E

M
ATA 2 E * Jumper En Disco Duro.
Maestro (M) – Esclavo (S) – Cable Selec (CS).

• Servidores SCSI:
1. Cada interfaz hasta 7 unidades.
SCSI: 2. ID. Dispositivo 0 – 7 (El 1° n° de la tarjeta ID.).
3. Tecnología más rápida & ruidosa.
4. Mayor precio de costo ($$$).

• S-ATA I, II, III.


S-ATA: • No existe (M, E). Por cada puerto 1 dispositivo.
• Transferencia más rápida.
• Mayor número de puertos.
• 4 dispositivos (SATA 0 – 3).

1 Hardware.

Visita: TNS Informática VG 2010 - Vespertino


Sistema Operativo – Segundo Semestre 2010

• Serial Attached SCSI: Nueva versión del interface SCSI compatible


SAS: con SATA.
• Precio de costo más elevado ($$$).
• Depende de la interfaz.
• Consumo de energía elevado.

• Conexión por Fibra Óptica.


FC-AL: • Velocidad de transferencia inmensa.
• F.C. 9 GB $150.000.-

2. Dispositivos de carácter: Envía un Bit a la vez. (Bit * Bit).

Ejemplo:

RS232C:
Esta es una interfase entre la computadora y el MODEM (Fibra
Óptica).

COM:

En sistemas tipo DOS, nombre que se le da a un puerto de


comunicación serial. DOS soporta cuatro puertos seriales: COM1,
COM2, COM3 y COM4.

Visita: TNS Informática VG 2010 - Vespertino


Sistema Operativo – Segundo Semestre 2010

Puertos PS/2:
El conector PS/2 o puerto PS/2 toma su nombre de la serie de
ordenadores IBM Personal System/2 que es creada por IBM en 1987,
y empleada para conectar teclados y ratones.

Partes de un HDD (Disco Duro):

Estructura lógica de un disco duro:

SCD

La estructura lógica de un disco duro está formada por:

• El sector de arranque (Master Boot Record).


• Espacio particionado.
• Espacio sin particionar.

Visita: TNS Informática VG 2010 - Vespertino


Sistema Operativo – Segundo Semestre 2010

El sector de arranque es el primer sector de todo disco duro (cabeza 0, cilindro 0, sector 1).
En él se almacena la tabla de particiones y un pequeño programa master de inicialización,
llamado también Master Boot. Este programa es el encargado de leer la tabla de particiones
y ceder el control al sector de arranque de la partición activa. Si no existiese partición activa,
mostraría un mensaje de error.

El espacio particionado es el espacio del disco que ha sido asignado a alguna partición. El
espacio no particionado, es espacio no accesible del disco ya que todavía no ha sido
asignado a ninguna partición. A continuación se muestra un ejemplo de un disco duro con
espacio particionado (2 particiones primarias y 2 lógicas) y espacio todavía sin particionar.

El caso más sencillo consiste en un sector de arranque que contenga una tabla de
particiones con una sola partición, y que esta partición ocupe la totalidad del espacio restante
del disco. En este caso, no existiría espacio sin particionar.

Fuente

Visita: TNS Informática VG 2010 - Vespertino


Sistema Operativo – Segundo Semestre 2010

Estructura De Los Platos Del Disco Duro: Más información

A: Pista.
B: Sector.
C: Sector de una pista.
D: Clúster.

Sector de Arranque

Un master boot record (MBR) es el primer sector ("sector cero") de un dispositivo de


almacenamiento de datos, como un disco duro. A veces, se emplea para el arranque del sistema
operativo con bootstrap, otras veces es usado para almacenar una tabla de particiones y, en
ocasiones, se usa sólo para identificar un dispositivo de disco individual, aunque en algunas
máquinas esto último no se usa y es ignorado.

Visita: TNS Informática VG 2010 - Vespertino


Sistema Operativo – Segundo Semestre 2010

Visita: TNS Informática VG 2010 - Vespertino


Sistema Operativo – Segundo Semestre 2010

¿Porqué es necesario un gestor de arranque en un Sistema Operativo?

• Porque cumple la función de cargar el Kernel. Para la ejecución del Sistema Operativo
en el ordenador.

• La palabra Gestor de Arranque, viene del termino anglosajón: bootstrapping;


(definición utilizada para describir proceso de arranque, o inicio de cualquier
computador).

• Este procedimiento también se conoce como "Bootstrap Loader" (cargador de


inicialización). Existen diferentes tipos de gestor de arranque, como por ejemplo:
GRUB (GRand Unified Bootloader: Gran Gestor de Arranque Unificado), LILO ("Linux
Loader"), NTLDR (NT Loader) en Windows y BootX en MAC.

¿Cuál La función de un Gestor de Arranque?

1. Tras el arranque, el BIOS chequea el teclado y la Memoria RAM. Posteriormente, los


valores que están en la CMOS2, leen la información acerca de los periféricos más
importantes, la hora y la fecha. Se carga el HDD (Disco Duro) y se conoce su
geometría, comienza la carga del Sistema Operativo.

2. Para que esto suceda se lee desde el primer disco duro, el primer sector físico de
datos del tamaño de 512 bytes y se carga a la memoria.

3. El control pasa a este pequeño programa y la ejecución de los comandos en este


determina a partir de ahora el proceso de arranque. Los primeros 512 bytes en el
primer disco duro, son más conocidos como el MBR3.

4. Hasta el mismo momento de cargar el MBR, el arranque es el mismo en cualquier


computador, sin importar el sistema operativo que este tenga instalado. El ordenador
sólo tiene acceso a los dispositivos a través de las rutinas (drivers) grabadas en la
BIOS.

5. En el MBR, es importante saber que los últimos 2 bytes deben contener una cifra
(AA55): un MBR que tenga otra cifra será tratado como no válido por parte de la BIOS
y de todos los sistemas operativos de PC.

6. Tras el proceso de chequeo del Hardware por parte de la BIOS. El gestor de Arranque
alojado en el Master Boot Record, procede a efectuar tres pasos para la ejecución del
Sistema Operativo: Componer una línea de comandos kernel, Cargar un disco ram de
inicio (initrd), si es necesario, Cargar y pasar el control al kernel de Linux. (en el caso
de un Sistema GNU/Linux.

2 (Abreviatura de Complementary Metal Oxide Semiconductor - pronunciado see-moss en inglés).


3 Master Boot Record.

Visita: TNS Informática VG 2010 - Vespertino


Sistema Operativo – Segundo Semestre 2010

¿Dónde se aloja el gestor de arranque de un Sistema Operativo?

• En los últimos 56 b de la TBLC (512 KB).

N° Disco Duro
1 Servo Motor. • Motor que mueve los discos del HDD.

2 Sector Cero. • Master Boot Record, 512 Bytes, Gestor de


Arranque: NtLoader, Bootstrap, Grub.
• Tabla de Particiones, 4 Paticiones Lógicas
3 (Primarias).
PTBL. • Últimos 56 Bytes, dónde se aloja el Gestor de
Arranque.
4 Partición C:/ • En Windows aquí se aloja el S.O.

5 Partición D:/ • Participón de Respaldo.

6 Eje del Cabezal. • Base de Cabezal y aguja.

7 Cabezal. • Lee Información de los platos del HDD.

8 Aguja. • Sujeta el Cabezal del HDD:

Visita: TNS Informática VG 2010 - Vespertino


Sistema Operativo – Segundo Semestre 2010

Partes de un HDD (Anexo).

¿Qué contiene el Gestor de Arranque?

NTLoader C:/ multi(0)disk(0)rdisk(0)partition(1)...


GRUB | LILO /dev/dsk/dksc 0d0s1#/ (ó simplemente: /dev7sda – Abstracción Gnu/linix).
Usados en Sistemas del tipo /Unix → Solaris, HP – UX, TRI - B4

Visita: TNS Informática VG 2010 - Vespertino


Sistema Operativo – Segundo Semestre 2010

25 – 10 – 10
1. Comunicación Entre Procesos:

• Los procesos necesitan comunicación entre ellos.


• Ejemplo:

Un programa en la shell. Puede utilizar la salida de otra aplicación, como


entrada.

• A esto se le conoce como: IPC (Inter Process Communications).

Windows : IPC. System V IPC (Standard de UNIX).

• Existen 3 aspectos a considerar:

1. ¿Cómo se comunica un proceso con otro?: Memoria Compartida. <Estructura de


datos con memoria compartida>.

2. Impedir que los procesos se estorben al realizar actividades importantes. <Proceso


que necesita de la salida de otro para ejecutarse>.

3. Ordenamiento correcto cuando se producen dependencias. Debemos considerar:

• Dos de estos aspectos (2 & 3) también son aplicables a las hebras 4.


• Evitar estorbarse y el ordenamiento correcto de las dependencias.
• En algunos S.O. dos procesos colaboran compartiendo procesos.

2. Condiciones De Competencia:

• El algunos sistemas operativos se da el caso de que dos o más procesos que están
colaborando compartan un área de almacenamiento en que ambos puedan leer y
escribir. Ejemplo: Spooler de impresión.

4 Un hilo de ejecución (Threads), en sistemas operativos, es una característica que permite a una aplicación realizar varias tareas a la
vez (concurrentemente).

Visita: TNS Informática VG 2010 - Vespertino


Sistema Operativo – Segundo Semestre 2010

• Generalmente las soluciones para este tipo de problemas son perfectas pero muchas
veces algo raro e inexplicable.
“GHOST IN THE MACHINE”5.

3. Regiones Críticas:

¿Qué Es Una Región Critica?

Se denomina sección crítica, en programación concurrente, a la porción de código de un programa de


computador en la cual se accede a un recurso compartido (estructura de datos o dispositivo) que no debe
ser accedido por más de un hilo en ejecución.

La sección crítica por lo general termina en un tiempo determinado y el hilo, proceso o tarea sólo
tendrá que esperar un período determinado de tiempo para entrar. Se necesita un mecanismo de
sincronización en la entrada y salida de la sección crítica para asegurar la utilización en exclusiva del
recurso, por ejemplo un semáforo6.

¿Cuál Es Su Función o Su Utilidad?

• Es una forma de evitar, que dos o más procesos escriban en una misma región de
memoria compartida al mismo tiempo.

• Se supone que con esta modalidad se eliminan las Condiciones de Competencia,


(ver apartado N°2).

• Lo que es implementa es una exclusión mutua. Es decir, algún mecanismo para


asegurar que una región de memoria compartida, que está siento utilizada por un
proceso, no pueda ser utilizada por otro al mismo tiempo.

• Este mecanismo evita las condiciones de competencia, pero necesita que se


cumplan cuatro condiciones para que funcione:

1. Dos procesos no pueden estar al mismo tiempo en sus regiones críticas.

2. No pueden haber suposiciones sobre la velocidad ni el número de CPU' s.

3. Ningún proceso que se esté ejecutando afuera de su sección crítica puede bloquear a otros procesos.

4. Ningún proceso debería esperar de manera indefinida para entrar a la sección crítica.

5 Lectura Complementaria.
6 Fuente.

Visita: TNS Informática VG 2010 - Vespertino


Sistema Operativo – Segundo Semestre 2010

4. Semáforos:

• Es un tipo de dato abstracto que permite el uso de un recurso de manera exclusiva


cuando varios procesos están compitiendo por él. El tipo de datos cumple con la
siguiente semántica:

1. El estado interno del semáforos cuenta cuántos procesos pueden utilizar el recurso.

2. Puede ser realizado hasta con un número entero, impidiendo que éste llegue a
negativo alguna vez.

3. Existen tres operaciones con un semáforo:

A) init(): Inicializa el semáforo antes que cualquier proceso haya iniciado alguna
operación wait(), o una operación signal(). Si se inicializa con '1' se ha construido un
semáforo binario.

B) wait(): Si el estado indica cero, el proceso queda con el semáforo en 'rojo' hasta
que sea despertado por otro proceso. Si el estado indica que un proceso más puede
tener acceso al recurso, se decrementa el contador y la operación termina con éxito.

C) signal(): Una vez que se ha terminado el uso del recurso, el proceso lo señaliza en
el semáforo. Si queda algún proceso bloqueado por el semáforo en 'rojo', éste pasará
a 'verde', desbloqueándolo.

Visita: TNS Informática VG 2010 - Vespertino


Sistema Operativo – Segundo Semestre 2010

27 – 10 – 10
1. Administración De Memoria

• Debemos considerar a la Memoria como un recurso importante del computador.

• Existe una Utopía: Que la memoria no sea volátil y tampoco limitada en su capacidad,
pero eso es inviable.

• Al no cumplirse la quimera, tenemos la Jerarquía de la Memoria:

A) Cache: Pequeña, rápida, costosa y volátil.

B) Memoria Principal: RAM, Volátil y de buena velocidad, mas accesible.

C) Memoria Secundaria: Swap (Área de Intercambio), Memoria Virtual. Económico,


lento, no volátil.

• El Sistema Operativo es el encargado de administrar el uso de estas memorias. Este


maneja un administrador de jerarquía, cuyo nombre le hace honor a su trabajo.

• Administrador De Jerarquía: ¿Qué hace?

- Se mantiene al tanto de qué partes de la memoria se están usando y cuáles no.


- Le asigna memoria a los procesos.
- La libera cuando estos terminan.

1.1. Existen Dos Clases De Administración De Memoria

A) Los que llevan y traen procesos entre la memoria principal y el disco durante la
ejecución.

B) Los que no lo hacen.

• Es importante tener en cuenta que el intercambio de procesos entre la memoria


principal y el disco (Swapping), es un mecanismo artificial obligado. Por la falta de
suficiente memoria RAM para almacenar todos los procesos a la vez.

Visita: TNS Informática VG 2010 - Vespertino


Sistema Operativo – Segundo Semestre 2010

1.2. Monoprogramación Sin Intercambio Ni Paginación

• Este es el esquema de administración de memoria más sencillo que existe. Consiste


en ejecutar un solo programa a la vez, repartiendo la memoria entre este programa y
el sistema operativo.

• En la figura anterior hay tres variantes de este tipo de administración de memoria:

1. El S.O podría estar en la parte más baja de la RAM.

2. Podría estar en ROM, en la parte más alta de la memoria.

3. En la parte ROM más alta de la memoria se almacenan los controladores de los


dispositivos y el sistema operativo se encuentra en la parte más baja de la RAM.

A) El primer diseño se utilizaba en los antiguos mainframes y minicomputadores, ya


casi no se emplea.

B) El segundo diseño se utiliza en algunos computadores de bolsillo, calculadoras,


etc.

C) El tercero se utilizó en los primeros PC, con el sistema operativo MS-DOS, en


donde la porción de ROM de que se habla corresponde a la BIOS.

Visita: TNS Informática VG 2010 - Vespertino


Sistema Operativo – Segundo Semestre 2010

• Si el sistema está organizado de esa forma, sólo puede ejecutar un proceso a la vez.
Cuando el usuario ejecuta un comando, el S.O. copia el programa solicitado a la RAM
y lo ejecuta.

• Cuando el proceso termina, el sistema operativo vuelve a mostrar la prompt7 y espera


por un nuevo comando.

• Cuando recibe el nuevo programa hace el mismo proceso. Sobreescribiendo el


programa anterior (en la RAM).

• Con la excepción de algunos pequeños sistemas integrados la monoprogramación ya


casi no se usa. La gran mayoría de los sistemas modernos permite la ejecución de
varios procesos a la vez. Esto dice que cada vez que un proceso se bloquea en
espera de una I/O, otro proceso puede utilizar el CPU.

• La forma más fácil de lograr la multiprogramación es dividir la memoria en n


particiones. Cuando aparece un nuevo programa espera en la cola para entrar en la
partición más pequeña que pueda caber. Puesto que en este esquema las particiones
son fijas, cualquier espacio sobrante de una partición se pierde.

7 Se llama prompt al carácter o conjunto de caracteres que se muestran en una línea de comandos para indicar que está a la espera de
órdenes. Éste puede variar dependiendo del intérprete de comandos y suele ser configurable.

Visita: TNS Informática VG 2010 - Vespertino


Sistema Operativo – Segundo Semestre 2010

• A este esquema se le llama multiprogramación de particiones fijas. El problema de


este esquema es cuando se llenan las particiones pequeñas y quedan solo particiones
grandes disponibles:

1. ¿Qué pasa si llega un proceso que necesita poca memoria?.

2. ¿Cómo discriminar el tamaño de las particiones?.

Modelo De La Multiprogramación

• Se usa la multiprogramación para aprovechar mejor el CPU. Ejemplo:

Si se tienen cinco procesos que consumen sólo un 20% del CPU, éste
debería tener un uso del 100%.

• En ese caso se supone que los procesos no estarían bloqueados al mismo tiempo, lo
que haría cambiar las cosas.

• En los sistemas de tiempo compartido aveces no hay memoria suficiente para


almacenar para contener a todos los procesos. Por eso es necesario intercambiarlos
entre el disco y la memoria principal en forma dinámica para que se ejecuten. Se
pueden utilizar dos enfoques diferentes para tratar este problema.

1. Intercambio: Es la forma más sencilla. Consiste en traer a la RAM un proceso entero,


ejecutarlo, y volverlo a disco.

1.1 Intercambio:

• Utiliza particiones de tamaño variable; El número, ubicación y tamaño varían en forma


dinámica mientras los procesos llegan y se van.

Esto mejora el aprovechamiento de la memoria.


Pero también complica la asignación y liberación de
la misma.

• Cuando el intercambio crea múltiples huecos en la RAM. Se pueden combinar en sólo


uno grande. A este proceso se le denomina compactación de memoria, No suele
hacerse muy seguido pues consume demasiado tiempo de CPU.

Visita: TNS Informática VG 2010 - Vespertino


Sistema Operativo – Segundo Semestre 2010

• Ejemplo: En una máquina con 256 MB de RAM, que puede copiar 4 bytes en 40
nanosegundos se necesitarían aproximadamente 2,7 segundos para compactar toda
la RAM.

• La pregunta que surge es:

¿Cuánta memoria se le debe asignar a un proceso cuando se crea o se


intercambia?

• Si los procesos se crean con un tamaño fijo que nunca cambia, la asignación es
sencilla.

• Si los segmentos de los procesos crecen, se presentará un problema cada vez que un
proceso trate de crecer. Si hay un espacio adyacente al proceso, el proceso podrá
crecer en dicho espacio.

• Si no existe dicho espacio, el proceso entero deberá moverse a otro espacio de la


memoria lo bastante grande como para contenerlo.

• Si un proceso no puede crecer en la memoria, y el área de intercambio en el disco


está llena. Éste deberá esperar, o ser eliminado.

• Si se sabe que los procesos pueden crecer durante su ejecución, lo más conveniente
sería asignar un espacio de memoria extra cada vez que se intercambie un proceso a
la memoria o se cambie de lugar.

Visita: TNS Informática VG 2010 - Vespertino


Sistema Operativo – Segundo Semestre 2010

• Hay que tener cuidado de que cuando se intercambia un proceso a disco sólo se
intercambie la memoria que se está utilizando.

1.2 Mapas de bits:

• Si la memoria se asigna dinámicamente, el sistema operativo debe administrarla. Hay


dos formas de hacerlo. Con bitmaps, o con listas enlazadas.

• Con un bitmap la memoria se divide en pequeñas unidades que pueden ir desde unas
pocas palabras o varios kilobytes.

• A cada una de esas pequeñas unidades se les asigna un bit, del mapa de bits. El bit
es 0 si está libre, 1 si está en uso.

1.3 Listas enlazadas:

• Otra forma de llevar el control de la memoria es mantener una lista enlazada de


segmentos de memoria asignados y libres, donde cada segmento es un proceso, o
un espacio entre dos procesos.

• La lista de segmentos se mantiene ordenada por dirección. Este ordenamiento


tiene la ventaja de que cuando un proceso termina o se intercambia a disco, la lista se
actualiza de forma muy sencilla. Generalmente cada proceso que termina tiene dos
vecinos. Esos vecinos pueden ser procesos, o espacio libre.

• Si los procesos y espacios se mantienen en una lista ordenada por dirección, pueden
utilizarse varios algoritmos para asignarle la memoria a un proceso recién creado.

2. Memoria Virtual: Permite que los programas que están en ejecución estén solo
parcialmente presentes en la RAM.

• En los esquemas de memoria vistos anteriormente, todos funcionan bien HASTA que
aparece un proceso demasiado grande para caber completo en la memoria principal.

2.1 ¿Qué hacer en ese caso?

• Lo que se hacía en ese caso era dividir el programa en fragmentos llamados


overlays.

• El overlay 0, comenzaría a ejecutarse primero, luego al terminar éste ejecutaría a 1. Y


así sucesivamente. Algunos sistemas de overlays eran muy complejos y permitían
varios fragmentos a la vez. Éstos se conservaban en el disco y el SSOO las
intercambiaba en forma dinámica según fuera necesario.

Visita: TNS Informática VG 2010 - Vespertino


Sistema Operativo – Segundo Semestre 2010

• Aunque el sistema realizaba el trabajo real de intercambiar los overlays, el


programador era quien tenía el trabajo de dividir el programa en fragmentos. La
división de un programa grande en fragmentos modulares era larga y tediosa.

• El método ideado se conoce como Memoria Virtual, y fue creado por Fotherigham
en 1961. La idea básica de este esquema es que el tamaño combinado del programa,
sus datos y su pila puede ser más grande que la memoria física que se le pueda
asignar.

• Un programa de 16 megabytes podría ejecutarse en un sistema con 4 megabytes de


RAM si se escoge con cuidado cuales 4MB se tendrían en la memoria en cada
instante, intercambiando fragmentos del programa entre el disco y la memoria según
sea necesario.

• Este esquema también puede funcionar en un sistema multiprogramado, con diversos


fragmentos de muchos programas a la vez. Mientras un programa espera que se
traiga del disco una parte de sí mismo, está esperando I/O, por lo cual se bloquea y se
puede utilizar el CPU en otro proceso.

Administración De Memoria

Paginación:

• La mayoría de los sistemas con memoria virtual utiliza esta técnica. Se basa en el
principio de que cualquier computador maneja un conjunto de direcciones de memoria
que los programas pueden producir.

• Si un programa ejecuta una instrucción como:

MOV REG, 1000

• Lo hace para mover el contenido de la dirección de memoria 1000 en REG.

• Las direcciones pueden generarse utilizando indexación, registros base, registros de


segmento y otros.

Visita: TNS Informática VG 2010 - Vespertino


Sistema Operativo – Segundo Semestre 2010

• Las direcciones generadas por el programa son llamadas direcciones virtuales. El


conjunto contenedor de todas las direcciones virtuales se llama espacio de direcciones
virtual.

• En computadores sin memoria virtual, la dirección virtual se coloca directo en el bus


de memoria. Lo que hace que se lea o se escriba la palabra física de memoria que
tiene esa dirección.

• Cuando se usa memoria virtual, esas direcciones no van al bus, sino a la MMU. El
espacio de direcciones virtual se divide en unidades llamadas páginas. Las
direcciones correspondientes a la memoria física se llaman marcos de página.

• Ambos tienen el mismo tamaño, y las transferencias entre RAM y disco siempre se
contabilizan en números de páginas.

• Cuando un programa intenta acceder a la primera dirección (0), como por ejemplo con
la instrucción:
MOV REG,0

• La dirección virtual 0, se le envía a la MMU. Ésta ve qué dirección virtual está en la


pagina 0. Que según su tabla de páginas corresponde al marco de página 2. Así la
MMU transforma la dirección a 8192 (páginas de 4k) y la coloca en el bus.

• Lo anterior indica que la instrucción: MOV REG,8192

• Se transforma en: MOV REG,24576

• Porque la dirección virtual 8192 está en la página virtual 2, lo cual corresponde al


marco de página físico 6 (desde 24576 hasta 28671).

Visita: TNS Informática VG 2010 - Vespertino


Sistema Operativo – Segundo Semestre 2010

• Esta capacidad para establecer una correspondencia entre 16 páginas virtuales y


cualquiera de los 8 marcos de página, ajustando debidamente el mapa de memoria en
la MMU, no resuelve por sí sola el problema de que el espacio de direcciones virtual
es más grande que la memoria física. En el hardware real, un bit de
presencia/ausencia lleva el control de qué páginas están presentes en forma física en
la memoria.

¿Qué pasaría si el programa intenta utilizar una página que no tiene correspondencia física?

• Ejemplo: MOV REG,32780 (En una máquina que llega hasta 32767). La MMU ve que
la página no tiene correspondencia, y hace que el CPU atienda al sistema operativo.

• Esta interrupción de sistema es llamada fallo de página. En este caso el sistema


operativo elige estadísticamente un marco de página que esté siendo poco usado.
Una vez elegido, se intercambia a disco.

• Después de eso se trae la página a la cual se acaba de hacer referencia y la coloca en


el marco recién desocupado, modifica el mapa de memoria y continúa la operación
interrumpida.

• El número de páginas se utiliza como índice para consultar la tabla de páginas y así
obtener el número del marco de página que corresponde a esa página virtual. Si el bit
de presencia es 0, se genera la interrupción del sistema.

Visita: TNS Informática VG 2010 - Vespertino


Sistema Operativo – Segundo Semestre 2010

Tablas De Páginas

• El número de página siempre se utiliza como índice para consultar la tabla de


páginas. Así es como se obtiene el número de marco de página que corresponde a
esa página virtual.

• De esa entrada se toma el número de marco de página. En términos matemáticos, la


tabla de páginas es una función, el número de página virtual es su argumento y el
número de marco de página el resultado.

• A pesar de lo sencillo de este esquema. Surgen dos grandes problemas:

1. La tabla de páginas puede ser demasiado grande.

2. La transformación debe ser rápida.

• El primer punto, es consecuencia de que los computadores actuales utilizan


frecuentemente direcciones de 32 bits (si es que no 64). Con páginas de unos 4KB,
un espacio de direcciones virtual tendría alrededor de un millón de páginas. Con un
millón de páginas deben haber un millón de entradas en la tabla de páginas.

• Además hay que recordar que cada uno de los procesos necesita su propia tabla de
páginas. En cuanto a la rapidez corresponde decir que de la página virtual a la física
hay que hacer una referencia cada vez que se direcciona algo en la memoria.

• Una instrucción de este tipo utiliza por lo menos una palabra, y a veces, un operando.
Lo que conlleva a remitirse varias veces a la tabla de páginas cada vez que se ejecuta
una instrucción.

• El diseño más sencillo consiste en tener sólo una tabla de páginas, que consiste en un
arreglo de registros rápidos de hardware, con una entrada por cada página virtual e
indexada por número de página virtual. Cuando se inicia un proceso, el SS.OO
carga los registros con la tabla de páginas del proceso, tomada de una copia que se
guarda en la memoria principal. Lo malo es que esto es costoso, sobretodo si la tabla
de páginas es muy grande.

• Para evitar el problema de tener que almacenar enormes tablas de páginas en la


memoria todo el tiempo, muchos computadores manejan una tabla de páginas
multinivel.

Visita: TNS Informática VG 2010 - Vespertino


Sistema Operativo – Segundo Semestre 2010

• En la figura se muestra un ejemplo sencillo. Hay una dirección virtual de 32 bits que
se divide en un campo de 10 bits, otro más de 10 bits, y un campo de desplazamiento
de 12 bits.

• Como los desplazamientos son de 12 bits, quiere decir que las páginas son de 4KB y
hay 2^20 páginas. La gracia de este esquema es que no es necesario tener todas las
tablas de páginas todo el tiempo. Este diseño es expansible a tres o más niveles. Al
tener más niveles se aumenta la flexibilidad, pero complica más las cosas.

Segmentación

• Los métodos vistos hasta ahora son unidimensionales porque las direcciones virtuales
van desde 0 hasta la dirección máxima, y son consecutivas. En el caso de varios
problemas podría ser mucho mejor dos o más espacios de direcciones distintos que
sólo uno. Un compilador tiene muchas tablas que se van creando a medida que
avanza la compilación.

• Entre ellas están:

1. El texto fuente que se guarda para el listado impreso.


2. La tabla de símbolos, que contiene los nombres y atributos de las variables.
3. La tabla que contiene todas las constantes enteras y de punto flotante empleadas.
4. El árbol de análisis sintáctico.
5. El stack empleado para las llamadas a procedimientos llenos del compilador.

Visita: TNS Informática VG 2010 - Vespertino


Sistema Operativo – Segundo Semestre 2010

• Las primeras cuatro tablas crecen en forma continua mientras avanza la compilación.
La última se agranda y se achica de forma impredecible durante la compilación.

• En una memoria unidimensional, tendrían que asignarse trozos contiguos de espacio


de direcciones virtuales a esas cinco tablas.

¿Qué pasaría si un programa tuviera un número anormalmente grande de variables,


pero una cantidad normal de todo lo demás?

• El espacio asignado a la tabla de símbolos podría llenarse, pero habría espacio de


sobra en las demás tablas. Si el compilador enviara un mensaje de que el programa
tiene demasiadas variables sería ridículo, pues quedan muchas tablas con espacio
libre.

• Otra posibilidad es quitarle espacio a las tablas que les sobra para darle a las que les
falta. Estos desplazamientos son posibles, pero susceptibles a tener superposiciones,
lo cual resulta en un montón de problemas de programación.

• Una solución a esto es asignarle a la máquina varios espacios de direcciones


independientes llamados segmentos. Cada uno de ellos consta de un tamaño que
puede ser desde 0 hasta el máximo permitido.

• Los segmentos no tienen por qué ser todos del mismo tamaño. Además de cambiar
de tamaño durante la ejecución. Un segmento puede contener un procedimiento, un
arreglo, una pila o una colección de variables escalares.

• Además de simplificar el manejo de estructuras de datos que cambian de tamaño. Si


cada procedimiento utiliza un segmento distinto e inicia en la dirección 0. Se simplifica
mucho el enlace de procedimientos que se compilan por separado.

• La segmentación también facilita el compartimiento de procedimientos y datos en


común entre varios procesos. Ejemplo: Las bibliotecas compartidas (dll o so).

• Cada segmento es una entidad lógica de la cual el programador tiene conocimiento.


Los distintos segmentos pueden tener tipos de protección diferentes. Un segmento de
procedimiento podría especificarse como de sólo ejecución. Un arreglo de
lectura/escritura, pero no de ejecución.

Visita: TNS Informática VG 2010 - Vespertino


Sistema Operativo – Segundo Semestre 2010

• Es diferente a la paginación en un aspecto fundamental: Las páginas son de tamaño


fijo y los segmentos no. Es susceptible a la fragmentación externa; Necesita
compactarse de vez en cuando.

Orígenes De UNIX

• Creado en 1969 debido al fracaso comercial de MULTICS.


• Creado por Ken Thomson y Dennis Ritchie en Bell Labs.
• Escrito originalmente en lenguaje ensamblador, luego reescrito en lenguaje C.
• Estandarizado mediante normas. (POSIX).

Requisitos Para La Instalación De Un Sistema UNIX

• Conocer bien de que Hardware se dispone: Discos, Controladores, Dispositivos de


red, Display (en caso de que se use entorno gráfico).

• Conocer bien el uso que se le dará al sistema, pues de ese conocimiento se obtiene:
El Sistema De Archivos que se usará, El Particionado que se le dará a el o los
discos.

• Sistemas De Archivos: EFS, FFS, EXT2, EXT3, EXT4, XFS, ReiserFS, JFS, SWAP.

Visita: TNS Informática VG 2010 - Vespertino


Sistema Operativo – Segundo Semestre 2010

Sistema de Archivos

¿Pero Qué Son Los Inodos?

• Los Inodos son estructuras de datos propias de los sistemas de archivos utilizados en
los sistemas UNIX.

• Un Inodo contiene las características de un archivo, directorio, links simbólicos, o


cualquier clase de objeto en el sistema de archivos.

• Cada Inodo queda identificado con un número entero único en el sistema de archivos
y los directorios recogen una pareja que lleva el número de Inodo y el nombre, que
lleva al archivo.

• No existe una definición clara para un Inodo, Dennis Ritchie lo explicó de la siguiente
manera:

“Realmente, tampoco lo sé. Era simplemente el nombre que comenzamos a utilizar.


"Índice" es lo mejor que se me ocurre, debido a la estructura algo inusual de un
sistema de ficheros que almacenaba la información del acceso a los archivos como
una lista plana en disco, dejando al margen toda la información jerárquica de los
directorios. Así el número "i'" es un índice sobre la lista, el nodo "i" es el elemento
seleccionado de la lista. (En la primera edición del manual se empleó la notación "i-
nodo"; el guión fue desapareciendo poco a poco).

• Un Archivo tiene las siguientes propiedades:

1. El identificador de Dispositivo.

2. El número de Inodo que identifica al archivo que está dentro del sistema de
archivos.

3. La longitud del archivo (en bytes).

4. El UID del creador o el propietario con privilegios diferenciados.

5. El GID.

6. El modo de acceso.

7. Las Marcas de Tiempo.

8. El número de directorios asociados con este archivo.

Visita: TNS Informática VG 2010 - Vespertino


Sistema Operativo – Segundo Semestre 2010

• Así es el diseño de un sistema de Inodos:

Distintos Sistemas de Archivos Utilizados en UNIX

• Ext2 (Ext3 y ahora Ext4 también):

1. Utilizados y creados con Linux.

2. Maneja una FAT donde se almacenan los Inodos.

3. Maneja un archivo de tamaño máximo de 2TB y una partición de 4TB.

4. Con el Ext3 se le añadió journaling, pero sigue teniendo la estructura del Ext2.

5. Con el Ext4 se aumentó la performance y los tamaños máximos de archivos y de


partición.

6. Son compatibles entre ellos.

• XFS:

1. Sistema de archivos de 64 bits creado por Silicon Graphics.

2. Era propietario para su sistemas UNIX (llamado IRIX), pero en mayo del 2000 se
liberó bajo licencia GNU/GPL.

Visita: TNS Informática VG 2010 - Vespertino


Sistema Operativo – Segundo Semestre 2010

3. Se incorporó a Linux a partir de la versión de kernel 2.4.25.

4. FreeBSD lo soporta desde el 2005 sólo en forma experimental (hasta la versión 7).

5. Soporta sistemas de archivos de hasta 9 exabytes.

6. Posee journaling.

7. Es especialmente rápido con archivos “Grandes”.

• ReiserFS:

1. Sistema de archivos implementado por la empresa Namesys de cuyo desarrollo


estaba a cargo Hans Reiser.

2. Fue incluido oficialmente en Linux a partir de la versión de kernel 2.4.1.

3. Maneja Journaling.

4. Tiene límite para el tamaño máximo de 16 Terabytes.

5. Es especialmente rápido con archivos “pequeños”.

• JFS:

1. Sistema de archivos de 64 bits creado por IBM.

2. Disponible bajo licencia GNU/GPL.

3. Es soportado por Linux, AIX y HP-UX entre otros.

4. Soporta grandes particiones y grandes archivos.

5. Soporta journaling.

• SWAP:

1. En castellano se denominaría “Área de intercambio”.

2. Es un sistema de archivos especial utilizado para almacenar la memoria virtual.

3. De ser una partición esta debería ir en la parte mas rápida del disco, o si se tiene mas
de un disco, en el disco más rápido.

Visita: TNS Informática VG 2010 - Vespertino


Sistema Operativo – Segundo Semestre 2010

Puntos de Montaje

1. UNIX no maneja unidades (como lo hace Window$).

2. Maneja todos sus archivos bajo el alero de un gran directorio raíz (“root” o “/”).

3. Al hacer esto quiere decir que el resto de unidades, discos, o particiones deberían
estar dentro de la misma raíz.

4. Para lograr esto se define un “punto de montaje” que normalmente es un directorio


dedicado a ello.

5. Esto nos indica que el contenido de dicho sistema de archivos aparecerá dentro de el
directorio designado como punto de montaje.

Ejemplo: Supongamos que tenemos un sistema de archivos en UNIX con los


siguientes directorios:

/
|- home/
| |- pepe/
| |- luis/
|
|- mnt/
|- cdrom/

6. Tenemos un CDROM con los siguientes archivos:

/
|- datos1/
|- datos2/
Si elegimos /mnt/cdrom como el punto de montaje el resultado sería el seguiente
/
|- home/
| |- pepe/
| |- luis/
|
|- mnt/
|- cdrom/
|- datos1/
|- datos2/

Visita: TNS Informática VG 2010 - Vespertino


Sistema Operativo – Segundo Semestre 2010

Dispositivos

• Todos los dispositivos en un sistema UNIX son vistos como un archivo.

• Esos archivos están en el directorio /dev.

• Los archivos del directorio /dev no son realmente los dispositivos sino referencias para
ponernos en contacto con el hardware.

• Hay dispositivos de Caracteres y de Bloques:

1. Dispositivos de carácter: Son aquellos a los cuales se accede de forma secuencial


y no se utilizan los buffers del sistema, como un puerto serial /dev/ttyS0.

2. Dispositivos de bloque: Acceso aleatorio y por bloques de datos, se usan los


buffers del sistema, como un disco duro /dev/hda1.

• La mayor parte de los archivos del directorio /dev están asociados al hardware, pero
no todos. Hay varios ejemplos:

1. /dev/null: al leerlo es un archivo vacío, y todo lo que se envía a el desaparece.


Es conocido como el agujero negro de UNIX.

2. /dev/zero: Es una fuente inagotables de ceros, siempre está generando ceros.

3. /dev/random: Es una fuente inagotable de caracteres al azar, siempre los está


generando.

• Como están asociados con archivos, éstos tienen las mismas características (o
propiedades) de los archivos. Tienen un par de propiedades extra como:

1. Tipo (bloques o caracteres).

2. Major number: Indica el tipo de dispositivo.

3. Minor Number: Indica el número de unidad de todos los dispositivos del mismo tipo.

Visita: TNS Informática VG 2010 - Vespertino


Sistema Operativo – Segundo Semestre 2010

Gestor de Arranque

• Es un programa que se graba en el primer sector del disco duro. Cuando se carga y
se ejecuta le solicita al usuario que elija que sistema se va a cargar y qué parámetro
se le va a entregar al que sea elegido.

• Los mas conocidos son NTLoader (Microsoft), LILO (LinuxLoader) y GRUB (Grand
Unified Bootloader). GRUB es el más usado actualmente en los sistemas Linux.

Llamadas a Sistema

• Definen la interfaz entre el sistema operativo y el usuario. Cuando un programa de


usuario necesita algún servicio del sistema operativo tendrá que ejecutar la instrucción
TRAP8.

• Ésta instrucción le transfiere el control al sistema operativo. Después de ejecutarse


(de ser posible o permitido) se le devuelve el control al proceso de usuario.

• Algunas llamadas a sistema para trabajar con procesos:

• Algunas llamadas a sistema para administración de archivos:

8 Es una interrupción no enmascarable que es activada cuando el terminal del mismo nombre se lleva a nivel lógico uno. Esta interrupción
es la de más alta prioridad, por lo que puede ser usada para tratar los acontecimientos más relevantes, tales como errores, fallos de
alimentación, etc.

Visita: TNS Informática VG 2010 - Vespertino


Sistema Operativo – Segundo Semestre 2010

• Algunas llamadas a sistema para administrar directorios y sistemas de archivos:

• Algunas llamadas varias:

• Las llamadas a sistema ejemplificadas recién son para ser utilizadas en un sistema
UNIX que cumple el estándar POSIX. Los sistemas Micro$oft usan otro tipo de
llamadas pero el fin es más o menos el mismo.

• A continuación mostraremos una tabla de equivalencias entre las llamadas a sistema


de un sistema POSIX con un sistema con la API de Win32 (si es que se le puede
llamar equivalencia):

Visita: TNS Informática VG 2010 - Vespertino


Sistema Operativo – Segundo Semestre 2010

• Comandos POSIX & Equivalencias en API Win32:

Profesor: Luis Barrientos V.


E-mail: lbarrientos@virginiogomez.cl

Visita: TNS Informática VG 2010 - Vespertino

También podría gustarte