SISTEMAS OPERATIVOS
CAPÍTULO 0. COMPUTADORES Y PROGRAMAS
1. COMPUTADOR – máquina electrónica que ejecuta programas
informáticos (conjuntos de instrucciones y datos representados en código
binario).
Componentes hardware de un computador: procesador, memoria
principal, los controladores de E/S y los buses.
2. COMPONENTES HARDWARE DE UN
COMPUTADOR
2.1. PROCESADOR – microprocesador o CPU. Ejecuta secuencialmente
instrucciones de un programa y controla el funcionamiento de los
restantes componentes.
Unidad de control – busca e interpreta las instrucciones de un
programa.
Unidad de procesamiento – realiza operaciones aritméticas y lógicas
sobre los datos.
Registros – permiten al procesador almacenar de forma temporal
información para su funcionamiento. Tipos de registros:
De instrucción: contiene la instrucción actual que se tiene que
ejecutar.
Contador de programa: contiene la dirección de memoria donde
se encuentra la próxima instrucción que hay que ejecutar.
Puntero de pila: contiene la dirección de memoria de la próxima
entra libre
De estado del procesador: contiene campos para almacenar
información del estado del procesador en relación con el
programa actualmente en ejecución.
De propósito general: almacenamiento de datos y resultados.
Otros componentes en el circuito integrada de un microprocesador son la
unidad de gestión de memoria (MMU) y la memoria caché.
2.2. MEMORIA PRINCIPAL
Componente hardware donde se almacenan temporalmente los
programas que se van a ejecutar.
Unidad natural de organización de memoria: PALABRA, conjunto ordenado
de n bits contiguos que son manejados por la máquina. Los computadores
actuales tienen un tamaño de palabra de 32 o 64 bits.
Para leer o escribir en la memoria, se debe especificar la dirección física
que se desea leer o escribir, que es un identificador numérico entero
positivo asociado a cada contenido o unidad direccionable de memoria.
Esa unidad direcc. suele ser una palabra.
Si la memoria principal consta de N unidades direccionables entonces el
número n de bits necesarios para representar una dirección física de
memoria se obtiene:
mín {N<=2 elevado n}
n
La memoria principal se puede visualizar como una matriz de celdas, cada
una almacena un bit. El modelo de memoria más sencillo es aquél que
considera cada fila de la matriz contiene una palabra.
2.3. CONTROLADORES E/S
También denominados periféricos: discos magnéticos, discos ópticos,
impresoras, ratones, monitores, teclados…
Cada tipo posee unas características (finalidad, velocidad de transmisión,
capacidad de almacenamiento...)muy distintas entre sí. Para que un
dispositivo pueda ser utilizado por el computador, se debe conectar a un
módulo hardware denominado controlador o adaptador de E/S.
Cada controlador permite controlar a uno o varios dispositivos de un
mismo tipo.
Un controlador de E/S dispone de uno o varios registros (puertos de
E/S),para almacenar datos temporalmente, lo que permite compatibilizar
las bajas velocidades de transferencia de datos que presentan los dispo.
de E/S con las altas velocidades del procesador y la memoria principal.
También dispone de uno o varios registros para almacenar información
relativa al estado de los dispositivos de E/S que controla (ocupado,
preparado, condiciones de error...).
El controlador acepta órdenes del procesador y se encarga de traducir
dicha orden en las órdenes apropiadas de control del periférico.
2.4. BUSES
Es un medio de comunicación compartido entre dos o más dispositivos.
Físicamente son como un conjunto de líneas conductoras. El número de
líneas suele ser una potencia de dos.
En un determinado instante de tiempo solamente puede transmitir
información uno de los dispositivos conectados al bus mientras que la
recepción puede ser realizada simultáneamente por varios dispositivos.
Bus del sistema: bus que conecta a los elementos principales del
computador (procesador, memoria principal y controladores de E/S).
Bus caché: comunica al procesador con la memoria caché de segundo o
tercer nivel.
Bus local: comunica al procesador con el controlador del bus PCI
(Interconexión de Componentes Periféricos). Este se conecta, a través del
bus de memoria, con la memoria principal.
Bus PCI: se conectan los controladores de otros buses más específicos: el
bus SCSI, el bus USB, el bus ISA y el bus IDE.
3. JERARQUÍA DE MEMORIA
La memoria ideal sería una que tuviese una capacidad muy grande,
un tiempo de acceso muy pequeño y que fuese no volátil. Pero esto
no es viable. Diferentes tipos de memorias en un computador:
Registros del procesador. El tiempo de acceso es muy pequeño
(0,3 ns); pero su capacidad de almacenamiento es muy
pequeña (32 o 64 bits).
Memoria caché del procesador. Se trata de una memoria RAM
de acceso asociativo con un tiempo de acceso más pequeño
que la principal; pero con una capacidad mucho menor. En
esta memoria se almacenan copias de algunos bloques de
palabras de la memo. princip.
Cuando el procesador tiene que acceder a una determinada
palabra de memoria comprueba en primer lugar si existe una
copia de dicha palabra almacenada en la memoria caché. En caso
afirmativo, se produce un acierto, la palabra es leída por el
procesador directamente desde la caché. En caso negativo, se
produce un fallo, el procesador debe leer la palabra de la memoria
principal y cargar una copia del bloque de palabras que
contiene a dicha palabra en la memoria caché. De esta forma, si
dicha palabra es accedida próximamente no se producirá un
nuevo fallo. Con el uso de la memoria caché se pretende mejorar
el rendimiento del computador.
La memoria caché se implementa dentro del chip del
procesador, estructurada en varios niveles. Cada nivel de
memoria caché se diferencia del anterior por su tiempo de
acceso y por su capacidad.
Memoria principal. Es una memoria RAM con una capacidad
mucho mayor que la memoria caché pero con un tiempo de
acceso mayor.
Memoria secundaria. Formada por todos los dispositivos de E/S
conectados al computador dedicados al almacenamiento de
programas y/o datos, por ejemplo, los discos duros, las cintas
magnéticas o los discos ópticos (CD, DVD y Blue-Ray). Es no
volátil, por su elevada capacidad de almacenamiento y por su
baja velocidad de transferencia.
4. INSTRUCCIONES Y PROGRAMAS
4.1. REPERTORIO DE INSTRUCCIONES
Instrucción: cadena de bits que se pueden agrupar en campos con
tamaños y significado diferentes. Un campo presente en la mayoría
de las instrucciones es el código de operación, que codifica la
función que debe realizar al ejecutar dicha instrucción. También
suele contener uno o varios campos de dirección. Cada campo
contiene información, que depende del tipo de direccionamiento
utilizado, sobre la localización de algún operando necesario para la
ejecución de la instrucción.
Cada procesador dispone de un conjunto de instrucciones, que se le
llama repertorio de instrucciones, que es capaz de ejecutar. Un
procesador solo puede ejecutar instrucciones de su repertorio.
En un repertorio de instrucciones se pueden encontrar instrucciones
de los siguientes tipos:
De transferencia de datos: copiar o mover datos de una
posición de memoria o un registro a otra posición de memoria
o registro.
De operaciones: realizar sobre operandos almacenados en la
memoria (o registros) operaciones aritméticas, lógicas o de
desplazamiento de bits.
De transferencia de control: controla la secuencia de ejecución
de las instrucciones. Se encuentran las instrucciones de salto
condicional e incondicional.
Privilegiadas de gobierno: modifica o comprueba el estado del
procesador y los controladores de E/S. También para la gestión
de la memoria.
4.2. CICLO DE EJECUCIÓN DE UNA INSTRUCCIÓN
Ciclo de instrucción: secuencia de operaciones realizadas por el
procesador durante la ejecución de una instrucción. Consta de 2
fases:
1. Fase de búsqueda de la instrucción: el procesador busca en la
memoria, de acuerdo con la dirección almacenada en el
registro contador de programa, la instrucción que tiene que
ejecutar. A menos que se indique lo contrario el procesador
incrementa el contador de programa después de cada fase de
búsqueda para que se quede apuntando a la próxima
instrucción que hay que ejecutar.
La instrucción leída en la memoria se almacena en el registro de
instrucción.
2. Fase de ejecución de la instrucción: el procesador decodifica el
campo código de operación de la instrucción almacenada en el
registro de instrucción, interpreta dicho campo de acuerdo con
su repertorio de instrucciones y ejecuta las acciones
adecuadas.
Dependiendo de la frecuencia del reloj del procesador un ciclo de
instrucción, puede emplear uno o varios ciclos de CPU.
4.3. GENERACIÓN DE UN FICHERO EJECUTABLE
Programar en código máquina es bastante molesto y propenso a
errores. Con el fin de simplificar la escritura de los programas se
desarrollaron los lenguajes ensambladores, que son lenguajes de
programación de bajo nivel compuestos de instrucciones
representadas por palabras simbólicas o mnemónicos, que se
corresponden más o menos directamente con el repertorio de
instrucciones de un procesador específico.
Un programa escrito en lenguaje ensamblador se traduce a código
máquina empleando un ensamblador, que toma como entrada un
fichero fuente escrito en lenguaje ensamblador y genera como
salida un fichero objeto escrito en código máquina.
El principal inconveniente de escribir un programa en lenguaje
ensamblador es que es muy dependiente del hardware sobre el que
se va a ejecutar. Por esto, surgieron los lenguajes de alto nivel como
Basic, C, C++, Java…
CAPÍTULO 1. CONSIDERACIONES GENERALES DE LOS
SISTEMAS OPERATIVOS
Un sistema operativo es una capa de software o conjunto de programas
que gestiona de forma eficiente todos los dispositivos hardware del
computador y además suministra a los programas de los usuarios una
interfaz apropiada con el hardware.
OBJETIVOS
Gestionar eficientemente los dispositivos hardware de un computador.
- Tiempo de ejecución asignado a los programas (planificador).
- Administrar ocupación de memoria principal.
- Gestionar memoria secundaria (espacio del área de intercambio y
del sistema de archivos).
- Controlar acceso y uso de los sistemas de archivos.
- Acceso E/S.
Ofrecer a los usuarios una interfaz cómoda con el hardware que les facilite
el uso del computador.
CAPÍTULO 3. PLANIFICACIÓN DE PROCESOS
3.1 INTRODUCCIÓN
Sistema con multiprogramación se pueden ejecutar concurrentemente
varios procesos.
Si la máquina dispone de un único procesador, solo puede usarlo un
proceso (o hilo).
El SO se encarga de planificar qué proceso debe ejecutarse en el
procesador siguiendo criterios de planificación.
Esa parte de planificación se denomina planificador y realiza esta tarea a
diferentes niveles implementando uno o varios algoritmos de
planificación.
3.2 NIVELES DE PLANIFICACIÓN
Un SO con multiprogramación debe distribuir y planificar el uso de los
recursos del computador entre todos los procesos.
- Cola de procesos en el estado preparado: procesos que desean
acceder al procesador para iniciar o continuar su ejecución. Pueden
existir varias colas de procesos en el estado preparado.
- Cola de procesos en el estado preparado en memoria secundaria:
contiene procesos que están a la espera de regresar a la memoria
principal al estado preparado.
- Cola de procesos en el estado bloqueado: los procesos están a la
espera de poder volver al estado preparado tan pronto ocurra el
evento por el que han entrado en el estado bloqueado. Una
posibilidad es disponer de una cola por cada evento posible.
- Cola de procesos en el estado bloqueado en memoria secundaria.
- Cola de trabajos por lotes o cola de entrada.
Un proceso durante su existencia puede pasar por varias colas. El SO
determina cuándo un proceso abandona una cola para acceder a un
recurso o para ingresar en otra cola. Esta actividad se le denomina
planificación de procesos y al componente que la realiza se le denomina
planificador. Existen 3 niveles de planificación:
- A corto plazo: decide qué proceso en la cola de preparados será
ejecutado a continuación en el procesador.
- A medio plazo: decide qué proceso en una cola de memoria
principal es intercambiado a una cola de memoria secundaria, o
viceversa.
- A largo plazo: decide qué trabajo de la cola de trabajo por lotes pasa
a ser ejecutado en el sistema mediante la creación de un proceso.
3.2.1 Planificador a corto plazo