Download introduccion a los sistemas operativos

Document related concepts

Sistema operativo wikipedia , lookup

Interrupción wikipedia , lookup

Arquitectura de Windows NT wikipedia , lookup

Núcleo (informática) wikipedia , lookup

Proceso de arranque en Linux wikipedia , lookup

Transcript
UNIVERSIDAD SALESIANA
DE BOLIVIA
INGENIERIA DE SISTEMA
DOSSIER
MATERIA
: SISTEMAS OPERATIVOS
PARALELO : SEPTIMO “A”
DOCENTE : Lic. IRENE VEDIA DAZA
1
CAPITULO 1.
INTRODUCCION A LOS SISTEMAS OPERATIVOS
1. INTRODUCCION
Una computadora sin el software es en esencia una masa metálica sin utilidad, con el
software una computadora puede almacenar, procesar y recuperar información.
El software para computadora puede clasificarse en general en dos clases: los programas
de sistema que controlan las operaciones de la computadora y los programas de
aplicación, los cuales resuelven problemas para los usuarios. El programa fundamental
en todos los sistemas de computación es el Sistema Operativo.
Un sistema de computación se puede dividir a grandes rasgos en cuatro componentes:
-
Hardware  Proporciona los recursos de computación básicos ellos son: la CPU,
la memoria y los dispositivos de E/S.
-
Los programas de sistema ( Sistema Operativo)  Controla y coordina el uso del
hardware entre los diversos programas de aplicación de los diferentes usuarios.
-
Los programas de aplicación  definen la forma en que dichos recursos se utilizan
para resolver los problemas de computación de los usuarios. Aquí están los
compiladores, sistema de base de datos, juegos y programa de negocios. Es decir
todos aquellos programas que son escritos por el usuario para resolver problemas
particulares.
Los usuarios  pueden ser personas, máquinas u otros computadores, ellos tratan
de resolver diferentes problemas.
-
Algunas definiciones de Sistema Operativo son:
-
“ Un sistema operativo se puede comparar con un gobierno. Los componentes de
un sistema de computador son su hardware, software y datos. El sistema
operativo nos da los medios para aprovechar adecuadamente estos recursos
durante el funcionamiento del sistema del computador. Al igual que un gobierno
el SO no desempeña ninguna función útil por si solo; lo que hace es crear un
entorno dentro del que otros programas pueden hacer un trabajo útil.”
-
Un sistema operativo es el que controla todos los recursos de la computadora y
proporciona una base sobre la cual puede escribirse los programas de aplicación.
-
“Un sistema operativo es un conjunto de programas que ordenadamente
relacionadas entre sí, contribuyen a que la computadora lleve correctamente su
trabajo”.
-
Un sistema operativo es un conjunto de programas que controlan el
funcionamiento de la computadora.
2
2. HISTORIA DE LA EVOLUCION DE LOS SISTEMAS OPERATIVOS
La evolución de los sistemas operativos ha sido una consecuencia de los avances
producidos en el hardware de las computadoras, desde las primeras que se construyeron,
hasta la gran variedad de ellas que existen hoy en día; por esta razón, hablaremos de
cuatro niveles de sistemas operativos.
La primera computadora digital real, diseñada por el matemático Ingles Charles
Babbage, no tenia sistema operativo.
El primer nivel, constituido por los sistemas operativos básicos, que surgieron en los
años cincuenta con las primeras computadoras, donde todo el trabajo consistía en
controlar y secuenciar la ejecución de los programas y sus datos, que en aquella época
estaban sustentados en tarjetas perforadas. Apareció la denominada secuencia
automática de trabajos consistente en intercalar entre las tarjetas de un programa y otro,
una serie de tarjetas de control con instrucciones o comandos del lenguaje de control
de trabajos (JCL- Job Control Language). El programa que controlaba el
secuenciamiento de los trabajos se denominó monitor y constituyo el primer sistema
operativo.
El segundo nivel estuvo en la década de los sesenta y su ayuda a la programación y a
la gestión de los trabajos fue más decisiva, proporcionando nuevos métodos de trabajo
con el fin de aumentar el rendimiento de utilización del procesador.
Una vez resuelto el problema de la automatización en la ejecución de los trabajos, aún
quedaba mucho tiempo en el que el procesador se encontraba ocioso, con la siguiente
perdida económica. Esta situación se debía fundamentalmente a la diferencia de
velocidad entre el procesador y los dispositivos de entra / salida, cuyo funcionamiento
era principalmente mecánico. Para minimizar el tiempo de espera surgieron métodos
como el on-line y off-line que consisten en conectar directamente los dispositivos
lentos a la computadora (on-line) o hacerlo a través de dispositivos más rápidos off-line.
Proceso On-line
Lectora de tarjetas 
Computadora
 Impresora
Proceso Off-line
Lectora de 
Tarjetas
Unidades de  Computadora  Unidades de  Impresora
cinta
cinta
Con el tiempo aparecieron dispositivos de E/S más veloces que se utilizaron para
resolver el problema existente, aunque también aumento la velocidad y capacidad del
proceso del procesador.
Aparecieron las cintas magnéticas, cuya velocidad era mayor que la de las lectoras de
tarjetas, pero el acceso para escribir directamente en ellas era complicado. Por ello, se
impuso una técnica consistente en perforar los programas en tarjetas, que eran leídas por
una lectora de tarjetas y grabadas en una cinta magnética directamente. Esta cinta se
pasaba a la computadora en bloque para la ejecución de los programas, grabándose los
3
resultados en la nueva cinta. Por último, la cinta de resultados se volcaba sobre la
impresora. Las acciones de copiado de tarjetas a cinta y de cinta a impresora, al ser
lentas y separarse del control de la computadora, permitían a ésta realizar otros trabajos
distintos. Este tratamiento se conoce como Off-line.
Otras técnicas para mejorar el rendimiento que ha venido utilizando los sistemas
operativos de este nivel son las denominadas buffering y spooling.
Buffering
En el caso anterior, el proceso de carga de la cinta a la computadora es relativamente
lento con respecto a la velocidad interna de proceso; además se consume un tiempo
adicional debido al protocolo o conversación que se establece entre el procesador y la
unidad de cinta.
Una forma de mejorar el tiempo que se pierde en los proceso de carga de las cintas es
utilizar una memoria intermedia, también denominada buffer, donde la cinta va
grabando datos hasta que se llena, volcándose éstos en la memoria de una vez, y
mientras el procesador realiza operaciones con los datos recibidos, en paralelo se vuelve
a cargar el buffer. A esta forma de trabajo se denomina buffering.
Spooling
Con la aparición de discos magnéticos como dispositivo de almacenamiento masivo de
información con acceso directo desapareció el problema que representaban las cintas
magnéticas, ya que solo podían ser escritas después de ser leídas por completo,
requiriendo además un tratamiento secuencial desde su principio hasta su final, mientras
que los discos pueden ser leídos y escritos simultáneamente y en cualquier punto de su
superficie.
La técnica de SPOOL (Simultaneous Peripheral Operation On-Line) permite que la
salida de un programa se escriba en un buffer y posteriormente sea llevada a un disco
magnético en espera de poder ser enviada a una impresora o cualquier otro periférico de
salida que en ese momento pueda estar ocupado. De esta forma el procesador puede
estar ejecutando un trabajo mientras se imprimen.
El tercer nivel de sistemas operativos apareció en la década de los setenta. Para
mejorar aún mas el rendimiento en los sistemas informáticos se utiliza el concepto de
multiprogramación consistente en la ejecución, en un mismo procesador, de varios
programas a la vez. Para ello existen modalidades de proceso por lote (batch), el tiempo
compartido (sharing) y el tiempo real (real time) en el que, a través de políticas de
asignación, se ejecutan varios programas intercalando la ejecución de sus instrucciones
en el procesador.
El proceso batch consiste en ir solicitando la ejecución de procesos que no precisan
conversión con le usuario (no conversacionales) y estas peticiones van situándose en
una cola, siendo el sistema operativo el que da entrada a un conjunto de ellos para su
ejecución.
4
Los procesos actuales son en su mayoría interactivos o conversacionales y necesitan un
determinado dialogo con el usuario. Por ello aparece el tiempo compartido, consistente
en un conjunto de terminales que están continuamente solicitando atención del
procesador, siendo el sistema operativo quien va intercalando dicha atención entre los
distintos usuarios.
Por último, el tiempo real es la posibilidad que tienen determinados procesos en un
sistema multiprogramado de obtener respuestas del procesador en un tiempo muy
pequeño. Ejemplo los sistema de reserva de vuelos.
El cuarto nivel es el constituido por las últimas innovaciones en los sistemas
operativos aparecidas todas aquellas a partir de la década de los ochenta. En primer
lugar indicaremos que no se trata, en estos casos, de aumentar el rendimiento en la
utilización del procesador, sino de aumentar la seguridad, la velocidad de proceso y las
prestaciones que pueden ofrecerse al usuario. Existen sistemas operativos que controlan
lo que se denomina proceso distribuido, consistente en la conexión en paralelo de
varias computadoras compartiendo memoria, buses y terminales con el fin de ganar
seguridad en el servicio, debido a que el sistema operativo va repartiendo el trabajo
solicitado entre las distintas computadoras e incluso ante el fallo o caída de una de ellas
no se interrumpe el servicio por parte del resto.
Para aumentar la velocidad de proceso, existe el multiproceso consistente en
computadoras que poseen mas de un procesador, con lo que el sistema operativo
controla el reparto de trabajo entre los distintos procesadores, aumentando el número de
instrucciones que la máquina puede ejecutar por unidad de tiempo.
ESTRUCTURA DE LOS SISTEMAS OPERATIVOS
Para diseñar un sistema operativo lo primero que hay que decidir es su finalidad y el
tipo de procesos que se quiere realizar a través de él (proceso por lotes, tiempo
compartido, multiprocesos, etc.).
Para ello es preciso tener en cuenta las necesidades que pueden plantearse:
Requisitos de usuario: Sistema fácil de usar y de aprender, seguro, rápido y adecuado
al uso a que se le quiere destinar.
Requisitos del software: Donde se engloban aspectos como el mantenimiento, forma de
operación, restricciones de uso, eficiencia, tolerancia frente a los errores y flexibilidad.
La estructura de los sistemas operativos hace referencia a la parte interna de un sistema
operativo. Existen diferentes estructuras de sistema operativo cuatro de estas estructuras
han sido probadas en la práctica, estos son:




Estructura monolítica
Estructura Jerárquica (por Capas)
Máquina virtual
Modelo cliente-Servidor
5
1. Estructura Monolítica
Es la estructura de los primeros sistemas operativos constituidos fundamentalmente por
un solo programa compuesto de un conjunto de rutinas o procedimientos, donde cada
uno de los cuales puede llamar a los demás procedimientos, cada vez que así lo
requiera. Cuando se usa esta técnica, cada procedimiento del sistema tiene una interfaz
bien definida en términos de parámetros y resultados y cada uno de ellos es libre de
llamar a cualquier otro.
Por ejemplo en la figura. (1) Cuando el programa del usuario es atraído hacia el núcleo,
el sistema operativo examina los parámetros de llamada para determinar cual de ellas
(#de servicio) se desea realizar. (2) A continuación el sistema operativo analiza una
tabla que contiene en la entrada k un apuntador al procedimiento que realiza la k-ésima
llamada al sistema. (3) Esta operación identifica el procedimiento de servicio al cuál se
llama. (4) Finalmente la llamada al sistema termina y el control regresa al programa del
usuario.
Las características fundamentales de este tipo de estructura son:
-
Construcción del programa final a base de módulos compilados separadamente
que se unen a través del editor de enlace.
Buena definición de parámetros de enlace entre las distintas rutinas existentes.
Carecen de protecciones y privilegios.
Generalmente están hechos a medida, por lo que son eficientes y rápidos en su
ejecución y gestión.
2. Estructura jerárquica
A medida que fueron creciendo las necesidades de los usuarios y se perfeccionaron los
sistemas, se hizo necesaria una mayor organización del software.
Se dividió el sistema operativo en pequeñas partes, de tal forma que cada una de
ellas estuviera perfectamente definida y con un claro interface con el resto de elementos.
Se constituyó una estructura jerárquica o de niveles en los sistemas operativos, el
primero de los cuales fue el denominado THE (Technische Hogeschool, Eindhoven), de
Dijkstra, que se utilizó con fines didácticos.
Nivel 5 - Usuario
Nivel 4 - Archivos
Nivel 3 - Entrada / salida
Nivel 2 - Comunicaciones
Nivel 1 - Memoria
Nivel 0 - Gestión CPU
3. Maquina Virtual
La máquina virtual se trata de un tipo de sistemas operativos en el que son copias
exactas del hardware simple con su modo núcleo(kernel)/usuario, E/S, interrupciones y
todo lo demás que posee la máquina real.
6
Como cada máquina virtual es idéntica al hardware real, la máquina virtual puede
ejecutar cualquier sistema operativo, que se ejecuta en forma directa sobre el hardware.
Estos sistemas operativos separan dos conceptos que suelen estar unidos en el resto de
sistemas.
-
La multiprogramación
La máquina extendida
4. Modelo cliente-servidor
El tipo más reciente de sistemas operativos es el denominado Cliente-Servidor, que
puede ser ejecutado en la mayoría de las computadoras, ya sean grandes o pequeñas.
Este sistema sirve para todo; por tanto, es de propósito general y se basa en lo mismo
que el resto de sistemas operativos convencionales: el núcleo y los proceso,
presentando grandes diferencias en cuanto a la forma de distribuir lo trabajos entre sus
distintas partes.
Suele suministrar mecanismos adecuados para la gestión de:
-
Procesos
Memoria
Comunicación entre procesos.
El núcleo tiene como misión establecer o controlar la comunicación entre los clientes y
los servidores. Los procesos pueden ser tanto servidores como clientes. Por ejemplo, un
programa de aplicación normal es un cliente que llama al servidor correspondiente para
acceder a un archivo o realizar una operación de E/S sobre un dispositivo concreto. A
su vez, un proceso cliente puede actuar como servidor para otro.
7
CAPITULO 2
PROCESOS
1. INTRODUCCION
Actualmente las computadoras pueden realizar varias tareas al mismo tiempo. Es decir,
mientras ejecuta el programa de un usuario, una computadora puede asimismo estar
leyendo un disco e imprimiendo en una impresora.
En un sistema de multiprogramación, la unidad central de procesamiento (CPU) ejecuta
varios procesos a la vez, ejecutando cada uno de los procesos en decenas o cientos de
milisegundos (aunque realmente la CPU ejecuta en cierto instante un solo proceso).
En cualquier instante de tiempo la CPU está ejecutando solo un programa, por eso en el
curso de un segundo puede trabajar en varios programas, con lo que se da al usuario la
ilusión de paralelismo.
Algunas veces las personas hablan de pseudo paralelismo para referirse a estos
cambios que la CPU realiza entre programas, a fin de compararlo con el verdadero
paralelismo del hardware de la operación de esta unidad mientras corren uno o más
dispositivos de entrada o salida.
2. CONCEPTO
Uno de los conceptos más importantes que gira en torno a un sistema operativo es el de
proceso. Este concepto surgió por primera vez con la multiprogramación, donde se
puede ejecutar más de un programa simultáneamente con el fin de aprovechar al
máximo los recursos de la computadora.
Un proceso es un programa en ejecución junto con el entorno asociado (registros,
variables, etc.)
El corazón de un sistema operativo es el núcleo, un programa de control que reacciona
ante cualquier interrupción de eventos externos y que da servicio a los procesos,
creándolos, terminadolos y respondiendo a cualquier petición de servicio por parte de
los mismos.
3. MODELO DE PROCESOS
En este modelo todo el software ejecutable inclusive el sistema operativo se organiza en
varios procesos secuenciales.
En este modelo la CPU alterna los procesos; es decir el conjunto de procesos en
ejcución la CPU alterna entre un proceso y otro rápidamente, a esta forma de alternar se
denomina multiprogramación.
Por ejemplo, se tiene una computadora que multiprograma cuatro programas en
memoria, donde se van procesando, cada proceso tiene su propio flujo de control (es
8
decir su contador de programas) y se ejecuta en forma independiente (solo uno de ellos
se encuentra en ejecución).
La diferencia entre un programa (conjunto de instrucciones) y un proceso (instrucciones
ejecutándose) es obvio, pero crucial para entender el funcionamiento de los sistemas
operativos. Hacemos hincapié en que un programa por si solo no es un proceso; un
programa es una entidad pasiva, como contenido de un archivo guardado en disco,
mientras que un proceso es una entidad activa, con el contador de programa
especificando la siguiente instrucción que se ejecutará y un conjunto de recursos
asociados.
Estado de los procesos.
Los estados de los procesos son internos del sistema operativo y transparentes al
usuario. Para éste, su proceso estará siempre en ejecución independientemente del
estado en que se encuentre internamente en el sistema.
Un proceso puede tomar básicamente tres estados:
1. Ejecución. Estado en el que se encuentra un proceso cuando tiene el control
del procesador, es decir, utiliza la CPU en el instante dado.
2. Listo. Aquellos procesos que están dispuestos para ser ejecutados, pero no
están en ejecución por alguna causa (interrupción, haber entrado en la
estando otro proceso en ejecución, etc.).
3. Bloqueado. Son los procesos que no pueden ejecutarse de momento por
necesitar algún recurso no disponible (generalmente recursos de
entrada/salida).
4. COMUNICACIÓN ENTRE PROCESOS
Frecuentemente los procesos requieren una comunicación entre ellos, por ejemplo: en
un entubamiento donde la salida del primer proceso debe transferir al segundo, y este al
tercero y así sucesivamente. Existe la comunicación entre procesos de preferencia en
una forma estructurada sin utilizar interrupciones.
4.1 Condiciones de competencia
La condición de competencia ocurre cuando dos o más procesos accesan a un recurso
compartido sin control, de manera que el resultado combinado de este acceso depende
del orden de llegada.
En algunos sistemas operativos los procesos que trabajan juntos comparten con
frecuencia un espacio común para almacenamiento, en el que cada uno puede leer o
escribir dentro del espacio compartido; este puede encontrarse en la memoria principal o
ser un archivo compartido.
9
Las condiciones de competencia se manifiestan cuando dos o mas procesos leen o
escriben en ciertos datos compartidos y el resultado final depende de quien ejecuta y
en que momento. Por ejemplo cuando dos procesos desean tener aaceso a la memoria
compartida al mismo tiempo, el proceso B comienza a utilizar una de las variables
compartidas, antes que el proceso A termine con ella.
La clave para evitar problemas de condiciones de competencia y situaciones
relacionadas con la memoria compartida, archivo compartidos y cualquier otra cosa
compartida, es determinar una forma de prohibir que más de algún proceso lea o escriba
en los datos compartidos a la vez.
4.2. Sección Crítica
Se denomina sección critica a todas aquellas áreas compartidas, como memoria
compartida, archivos compartidos y cualquier otra cosa compartida, es decir, existe
sección crítica donde hay un recurso compartido.
4.3. Exclusión Mutua
Es un mecanismo que permite que una secuencia de instrucciones, donde participan
variables compartidos, sean ejecutados por un solo proceso sin ser alterados por las
actividades de otros procesos. Dicho de otra manera, la exclusión mutua asegura de que
si un proceso está utilizando una variable o archivo compartido, es que los otros
procesos no puedan hacer lo mismo.
Para tener una solución adecuada al problema de la Exclusión mutua se necesitan que
cumplan cuatro condiciones:
1. Nunca dos procesos pueden encontrase simultáneamente dentro de sus
secciones criticas.
2. No se hacen suposiciones acerca de las velocidades relativas de los procesos
o del número de CPU.
3. Ningún proceso suspendido fuera de la sección critica debe bloquear a otros
procesos.
4. Nunca un proceso debe querer entrar en forma arbitraria en su sección
critica.
Existen varios métodos para lograr la exclusión mutua, entre ellas tenemos:
5. PLANIFICACIÓN DEL PROCESADOR
El mecanismo más común que poseen los sistemas operativos actuales para realizar la
gestión del procesador se conoce con el nombre de planificación, cuyo objetivo
principal es el de dar un buen servicio a todos los procesos que existan en un momento
dado en el sistema.
La planificación del procesador que es una parte del sistema operativo, es el que decide
que proceso conviene ejecutar primero, es decir, se refiere a la manera de decidir cuánto
tiempo de ejecución y cuando se le asignan a cada proceso del sistema. Obviamente, si
el sistema es monousuario y monotarea no hay mucho que decidir, pero en el resto de
los sistemas esto es crucial para el buen funcionamiento del sistema.
10
5.1. Niveles de planificación
En los sistemas de planificación generalmente se identifican tres niveles: el alto, el
medio y el bajo.
El nivel alto decide que trabajos (conjunto de procesos) son candidatos a convertirse
en procesos compitiendo por los recursos del sistema.
El nivel intermedio decide que procesos se suspenden o reanudan para lograr ciertas
metas de rendimiento.
El nivel bajo es el que decide que proceso, de los que ya están listos (y que en algún
momento pasó por los otros dos planificadores) es al que le toca ahora estar
ejecutándose en la unidad central de procesamiento.
En adelante se revisaran principalmente los planificadores de bajo nivel porque son los
que finalmente eligen al proceso en ejecución.
5.3. Objetivos de la planificación
Las politicas de planificación intentan cubrir los siguientes objetivos:



Justicia o Imparcialidad
Maximizar la Producción
Minimizar el Tiempo de Respuesta.


Evitar el aplazamiento indefinido
El sistema debe ser predecible.
5.4. Criterios de planificación
Los criterios que se deben tener en cuenta a la hora de elegir o diseñar un algoritmo de
planificación son los siguientes:







Tiempo de respuesta.
Tiempo de servicio.
Tiempo de ejecución.
Tiempo de procesador.
Tiempo de espera.
Eficiencia.
Rendimiento.
5.5 Medidas
Para estudiar el comportamiento de las distintas políticas de planificación, definiremos
dos medidas relacionadas entre sí que nos indiquen como estamos tratando un proceso
concreto.
Consideremos :
Tiempo de servicio (T): T = tf - ti
11
Tiempo de espera (E):
E=T–t
t:
El tiempo que un proceso P necesita estar en ejecución para llevar a cabo su
trabajo.
ti :
Instante en que el usuario da la orden de ejecución del proceso.
tf :
Instante en que el proceso termina su ejecución.
5.6 Políticas de planificación
Las politicas de planificación se agrupan en:
Planificación apropiativa
Planificación no apropiativa
5.7.
ALGORITMOS DE PLANIFICACIÓN
5.7.1. Primero en llegar, primero en ser servido (FCFS)
En esta política de planificación FCFS (First Come, First Served), el procesador ejecuta
cada proceso hasta que termina; por tanto, los procesos que entran en cola de procesos
preparados permanecerán encolados en el orden en que lleguen hasta que les toque su
ejecución. Este método se conoce también como “primero en entrar, primero en salir”
(First Input, First Output - FIFO).
5.7.2. Round- Robin (RR)
Esta política, cuya traducción podría ser asignación cíclica o planificación en rueda, es
una mejora de la FCFS. Trata de ser más justa en cuanto a la respuesta tanto de los
procesos cortos como de los largos.
5.7.3. El siguiente proceso, el más corto (SJN)
El método SJN (Shortest Job Next) es una política de planificación no apropiativa que
trata de cubrir los mismos objetivos que la RR.
Esta política toma de la cola de procesos preparados el que necesite menos tiempo de
ejecución para realizar su trabajo. Para ello debe saber el tiempo de procesador que
necesita cada proceso, lo cual es tarea nada fácil, pero posible a través de diversos
métodos como puede ser la información suministrada por el propio usuario o por el
propio programa.
5.7.4. Próximo proceso, el de tiempo restante más corto (SRT)
La política SRT (shortest Remaining Time) es una mezcla de los dos métodos anteriores
y trata de obtener las ventajas de ambos. Para ello esta técnica cambia el proceso que
12
esta en ejecución cuando se ejcuta un proceso (paso del planificador de largo plazo al de
corto plazo), Con una exigencia de tiempo de ejecución total menor que el que está
ejecutando en el procesador. El valor del tiempo de respuesta medio de los procesos
largos mejora con respecto a SJN.
El tiempo de Espera E es bastante corto para la mayoria de los procesos. SRT consigue
una buena eficiencia, ya que logra que la lista de procesos preparados sea lo ma´s corta
posible.
5.7.5. Prioridad
En esta política se asocia a cada proceso una prioridad, de manera que el procesador se
asigna al proceso de mayor prioridad.
Las prioridades pueden ser definidas interna o externamente. En el primer caso, el
sistema operativo se basa en una serie de informaciones medibles para el cálculo y
asignación de dichas prioridades (tiempo necesitado de procesador, necesidad de
memoria, etc.
13
CAPITULO 3
ADMINISTRACIÓN DE ENTRADA/SALIDA
1. INTRODUCCIÓN
El control de las operaciones de entrada/salida (E/S) es otra de las misiones que debe realizar un sistema
operativo para facilitar el uso de los distintos dispositivos que forman parte de un sistema informático.
En primer lugar, analizaremos algunos de los principios del hardware y después del
software de E/S en general.
2. PRINCIPIO DEL HARDWARE DE E/S
Distintas personas analizan de varias maneras de Hardware de E/S. Los ingenieros electricistas lo
conciben en términos de chips, cables, fuentes de poder, motores y demás componentes físicos que
conforman el hardware. Los programadores observan la interfaz que se presenta al software (los
comandos que el hardware acepta, las funciones que lleva a cabo y los errores que se pueden informar).
En este caso, nos concierne la programación de los dispositivos de E/S no el diseño, construcción o
mantenimiento de ellos; así nuestro interés estará restringido a la forma de programar el hardware y no a
su funcionamiento interno. Sin embargo es frecuente que la programación de muchos dispositivos de E/S
este íntimamente ligada con su operación interna.
Dispositivos de E/S
Los dispositivos hardware de la computadora cuya misión es la de intercambiar datos con el procesador y
la memoria principal en un sentido, en otro o en ambos, comúnmente denominados periféricos, no son
fáciles ni cómodos de utilizar directamente por los procesos. Por otro lado, los procesos no necesitan
conocer las peculiaridades ni características de dichos dispositivos, sino únicamente intercambiar datos
con ellos. Por tanto, estos detalles deben ser ocultados para que de este modo las operaciones de E/S sean
independientes del tipo o modelo del dispositivo.
A lo largo de la historia de las computadoras se han desarrollado muchos tipos de
dispositivos que podemos reunir en tres grandes grupos:

Dispositivos de almacenamiento, entre estos podemos nombrar a algunos
como ser los discos, cintas magnéticas, tambores magnéticos y otros.
Los Discos son los dispositivos para almacenamiento secundario más comunes. Aceptan y recuperan datos a alta velocidad.
Los datos son transferidos entre el disco y la memoria en bloques. Los discos pueden ser fijos y removibles. Los primeros no se
pueden cambiar, mientras que los segundos pueden ser intercambiados, con lo que se consigue un mayor volumen de
almacenamiento.

Terminales, se denominan al conjunto formado por un teclado y una
pantalla conectados a la computadora para introducir datos a través del
primero y recibirlos a través de la segunda.

Comunicaciones, las líneas de comunicación son dispositivos cuya misión
es la de conectar entre sí computadoras y éstas con sus terminales cuando la
distancia es grande. Suelen llevar consigo elementos:
14
-
Físicos, como pude ser la propia línea, y los adaptadores a la línea
denominados módem.
Lógicos como pueden ser el protocolo de comunicación y el
método de control y detección de errores que se utilice.
A su vez, los dispositivos se pueden clasificar, atendiendo al tipo de información que
manejan y cómo lo hacen, en los siguientes grupos:

Dispositivos de bloque. Es aquel que almacena la información en bloques de
tamaño fijo, cada uno con su propia dirección. Los tamaños comunes de los bloques
van desde 128 bytes hasta 1024 bytes. Su característica principal es que se puede
leer o escribir en un bloque de forma independiente de los demás (por ejemplo los
discos).

Dispositivos de carácter. Son dispositivos que envían o reciben un flujo o cadena
de caracteres, sin sujetarse a una estructura de bloques, es decir, a ninguna estructura
prefijada. No se puede utilizar direcciones ni pueden realizar operaciones de
búsqueda. Como ejemplo de estos dispositivos son las terminales, impresoras de
línea, tarjetas perforadas, interfaces de una red, ratones y muchos otros dispositivos
no parecidos a los discos son dispositivos de carácter.
Este esquema de clasificación no es perfecto. Algunos dispositivos no se ajustan a él.
Por ejemplo, los relojes no tienen direcciones por medio de bloques tampoco generan o
aceptan flujos de caracteres. Lo único que hacen es provocar interrupciones a intervalos
bien definidos.
3. INTERFAZ PROCESADOR – PERIFERICO
( Interfaz. Elemento compartido entre dos partes para que interactuen o se comuniquen entre sí. Se
pueden considerar como las reglas existentes para establecer dicha comunicación.)
La velocidad y la complejidad de los periféricos determinan cómo deben ser conectados al procesador.
Estudiaremos tres tipos de conexión:
3.1. Registros
Los dispositivos se pueden conectar al procesador por los registros de los dispositivos que pueden ser
accedidos directamente en una zona determinada de la memoria o, indirectamente, por medio de
instrucciones hardware que devuelven el estado del mismo.
Estos registros tienen cuatro misiones:
- Transferir el estado del dispositivo (status).
- Transferir instrucciones al dispositivo.
- Transferir datos desde el dispositivo.
- Transferir datos al dispositivo.
15
Ahora bien, el procesador sólo puede dar comienzo a las operaciones de E/S sin poder
controlar su terminación, pero para ver cuándo se ha completado una operación se
pueden emplear dos métodos:

Polling. Consiste en leer constantemente el registro de status del dispositivo. Tiene
el inconveniente de ocupar el procesador un tiempo no deseado.

Interrupciones. El procesador continúa con otros trabajos y sólo cuando el
dispositivo concluye la operación llama la atención del procesador,
interrumpiéndole para que trate dicha situación y realice las acciones que considere
necesarias, es decir, sirva la interrupción.
3.2. Controladores
Los dispositivos complejos (discos…) no se conectan directamente al procesador, sino que lo hacen a
través de un controlador que contiene el estado del dispositivo (status), controla el mismo y chequea los
datos transferidos.
El controlador es el que acepta las órdenes del procesador y se comunica con él a través
de registros como se tratara de un dispositivo.
El controlador, también llamado unidad de control, puede manejar varios dispositivos
del mismo tipo.
3.3. Canales
Normalmente los controladores se conectan al procesador a través de un canal o
procesador de E/S (IOP_ Input Output Porocessor). El propósito de un canal es
conseguir que los dispositivos sean tratados como virtuales o transparentes.
Los canales son manejados por comandos y cuando terminan la operación devuelven el
status correspondiente e interrumpen al procesador.
Los canales pueden ser de varios tipos:
- Selectores. Pueden manejar varios dispositivos, pero sólo pueden transferir datos de
uno en uno.
Multiplexores. Manejan varios dispositivos y pueden y transferir datos
simultáneamente.
(Canal es el medio Físico para la transferencia de información)
4. SOFTWARE DE CONTROL DE E/S (DRIVER)
Se define driver como “el software formado por un conjunto de rutinas y tablas que, formando parte del
núcleo del sistema operativo, ejecutan y controlan todas las operaciones de E/S sobre cualquier periférico
conectado a la computadora, siendo particulares para cada dispositivo”.
16
Un driver no es un proceso o tarea independiente gestionado por el sistema operativo, sino un conjunto de
tablas en las que aloja la información que caracteriza a cada periférico conectado a la computadora, y una
serie de rutinas que controlan toda la gestión de los mismos y las informaciones que fluyen en un sentido
en otro. Se encuentran permanentemente alojados en memoria principal y requieren una elevada rapidez
de ejecución sin formar parte del proceso de usuario que los utilice.
Proceso de usuario
Sent. Primitivas de E/S
DRIVER
Periférico
El tratamiento por el núcleo de un sistema operativo de toda la información de E/S
desde, o a un periférico, se puede dividir en dos niveles para su estudio:
Tratamiento independiente del periférico
Esta formado por el conjunto de rutinas que procesan información sin atender a las
características propias del periférico.
Las funciones básicas del software independiente del dispositivo es llevar a cabo las
funciones de E/S comunes a todos los dispositivos, además de proporcionar una interfaz
uniforme del software a nivel de usuario.
Tratamiento dependiente del periférico
Es el conjunto de rutinas que el núcleo del sistema operativo ofrece para controlar el
propio dispositivo periférico.
El proceso de gestión de operaciones de E/S se encuentra representado por la siguiente
figura:
Proceso de usuario
Software independiente de
los dispositivos
Despachador de E/S
Manejador de
interrupciones
HARDWARE
17
4.1. Funciones de un driver
Entre las funciones que realiza un driver podemos citar las siguientes:







Definir las características del periférico al resto del sistema operativo
Inicializar los registros asociados al periférico en el momento del arranque del
sistema operativo.
Habilitar o deshabilitar el dispositivo para un proceso.
Procesar todas las operaciones de E/S solicitadas por un proceso.
Cancelar toda la operación de E/S en el momento que sea necesario por cualquier
motivo.
Procesar todas las interrupciones hardware generadas por el propio periférico.
Tratar los errores y estado del dispositivo haciendo la correspondiente
comunicación al usuario.
4.2. Rutinas de un driver
Son los puntos de entrada al driver y pueden ser llamadas directamente por el
núcleo del sistema operativo o por una interrupción hardware del dispositivo
periférico. En general, en un driver podemos encontrar las siguientes rutinas:

Inicialización. Es llamada por el núcleo del sistema operativo en la inicialización
del sistema la rutina se encarga de inicializar el dispositivo incluyendo la
información correspondiente en los registros de estado y operación del mismo.

Atención de peticiones de E/S. Esta rutina atiende todas las peticiones de los
procesos de usuario para realizar operaciones de E/S.

Gestión de interrupciones. Es la rutina que maneja todas las interrupciones del
dispositivo. Toma el control cuando el dispositivo periférico origina una
interrupción en el procesador.

Cancelación de operaciones de E/S. Es una rutina que da por finalizadas las
operaciones de E/S sobre el dispositivo cuando se produzca alguna circunstancia
que le obligue a ello.

Otras. Existen otras rutinas menos importantes, como puede ser: el time-out que
controla el tiempo de proceso de la operación y el Power –fail que actúa en el
arranque y reanudarse el proceso después de un corte de alimentación del sistema.
4.3. Estructura de datos de un driver
Las rutinas de un driver para dar un correcto servicio a las peticiones de E/S necesitan para cada
dispositivo una serie de datos que se encuentran en estructura de datos en forma de tabla. Las cuales son
similares a los siguientes:
18

Bloque de control del driver (BCD)
Es la representación del driver desde el punto de vista del sistema operativo. Contiene aquellos
parámetros que son susceptibles de ser variados dinámicamente y aquellos que definen el tipo de
dispositivo que puede ser atendido por el driver. Los datos que suelen contener son:









Dirección del siguiente BCD.
Nombre del driver.
Dirección del comienzo de los bloques de control de unidades (BCU) que controle el driver.
Número de unidades a servir.
Dirección de comienzo de la rutina de inicialización del driver.
Estado del driver (On/Off line…)
Dirección de comienzo de la cola de bloques de E/S (BES).
Dirección del BES que esta siendo servido.
Variables particulares del driver.

Bloque de control de la unidad (BCU)
Cada dispositivo físico se relaciona desde el punto de vista del sistema operativo como una unidad dentro
del tipo al que le corresponda y es definido e identificado por el sistema operativo por medio de su BCU.











Dirección del siguiente BCU del driver.
Numero de unidad
Estado de la unidad.
Numero del vector de interrupción asociado.
Dirección de la rutina de gestión de la interrupción.
Dirección del puerto de E/S.
Dirección del BCD al que pertenece.
Dirección del PBC del proceso que tiene reservada esta unidad.
Dirección del comienzo de la cola de bloques de E/S (BES).
Dirección del BES que esta siendo servido.
Características de la unidad.

Paquete de petición de E/S (PES)
Cuando un proceso de usuario intenta hacer una operación de E/S, el sistema operativo
crea un paquete asociado a dicho proceso y a dicha petición para ser tratado por el
driver. Este paquete se coloca en una cola prioritaria para ser atendido por el driver al
que va dirigido. Los datos que normalmente contiene son:




Dirección del siguiente PES en la cola.
Prioridad de la petición de E/S.
Proceso que ha lanzado la petición.
Dirección donde devolver el resultado de la petición.
19




5.
Función a realizar (entrada o salida)
Identificador del dispositivo.
Identificador de la unidad.
Dirección de la lista de parámetros de entrada de la llamada al sistema operativo.
INTERRUPCIONES VECTORIZADAS
Los sistemas operativos realizan diversidad de operaciones y están preparados para
aceptar interrupciones que provienen de los dispositivos periféricos. Para poder
reconocer qué dispositivo ha sido el causante de una interrupción y poder darle el
tratamiento adecuado, el sistema operativo destina parte de su memoria (la más baja)
para almacenar las direcciones de los ya mencionados manejadores de interrupciones
asociados a cada dispositivo. Cada palabra almacenada que contiene la dirección de un
manejador de interrupción se conoce con el nombre de vector de interrupciones.
Por tanto, el vector de interrupción es un número que nos indica la palabra que contiene
la dirección de una rutina que debe tratar una interrupción.
20
CAPITULO 5
ADMINISTRACIÓN DE ARCHIVOS
1. INTRODUCCIÓN
La parte más visible de un sistema operativo es el sistema de archivo. La mayoría de los
programas leen o escriben cuando menos un archivo y los usuarios siempre tienen conocimiento
de la existencia de archivos y sus propiedades. Para muchas personas, la comodidad y la utilidad
del sistema operativo dependen principalmente de la interfaz, estructura y contabilidad del
sistema de archivos.
El sistema de archivos consta de dos partes distintas: una colección de archivos, cada uno de los
cuales contiene datos relacionados, y una estructura de directorios, que organiza todos los
archivos del sistema y proporciona información sobre ellos.
En este capítulo consideraremos los diversos aspectos de los archivos y las distintas estructuras
de directorios. También describiremos formas de manejar la protección de los archivos, que es
necesaria en un entorno en el que múltiples usuarios tienen acceso a los archivos.
2.
ARCHIVOS
2.1. Definiciones de Archivos



Es una colección de datos
Es un conjunto de datos relacionados lógicamente
Es una colección de información relacionada
Los computadores pueden guardar información en varios medios de almacenamiento
distintos, Como discos magnéticos, cintas magnéticas y discos ópticos. Con objeto de
facilitar el uso del sistema de computación, el sistema operativo proporciona una vista
lógica uniforma del almacenamiento de información. El sistema operativo abstrae de la
estructura física para crear una estructura lógica: el archivo. Es a través del sistema
operativo que los archivos se almacenan en dispositivos físicos, y por lo tanto, un
subsistema de el se encarga de la administración.
2.2. Atributos de los Archivos
Un archivo tiene un nombre, para comodidad de sus usuarios, y usamos ese nombre
para hacer referencia al archivo. El nombre suele ser una cadena de caracteres, como
“ejemplo.c”. Algunos sistemas distinguen entre las letras mayúsculas y minúsculas en
los nombres, mientras que en otros las consideran equivalentes.
Un archivo tiene otros atributos que varían de un sistema operativo a otro, pero que
generalmente son:
 Nombre: El nombre simbólico del archivo es la única información que se mantiene
en forma comprensible para seres humanos.
 Tipo: Esta información se necesita en sistemas que reconocen distintos tipos.
 Ubicación: Esta información es un puntero a un dispositivo y la posición del
archivo en ese dispositivo.
21



Tamaño: Este atributo incluye el tamaño actual del archivo y tal vez el tamaño
máximo permitido.
Protección: La información de control de acceso determina quién puede leer,
escribir, ejecutar, etc., el archivo.
Hora, fecha e identificación del usuario: Esta información podría mantenerse para
la creación, la ultima modificación y el último uso. Estos datos pueden ser útiles
para protección, seguridad y control de su uso.
2.3. Tipos de Archivos
Los archivos representan datos y programas. Los archivos de datos pueden ser
numéricos, alfabéticos, binarios. Un archivo es una secuencia de bits, bytes, líneas,
registros, de acuerdo a lo que necesita el usuario creador de ese archivo.
Existe, entonces, diferentes tipos de archivo:
Text file:
Source file:
Object file
Executable file:
2.4. Subsistema de archivos
El subsistema de archivos o sistema de gestión de archivos es el sistema de software que
proporciona a los usuarios y aplicaciones los servicios relativos al uso de archivos.
Sus objetivos son:





Cumplir con la gestión de datos y solicitudes del usuario.
Garantizar la integridad del contenido de los archivos
Dar soporte de E/S para los distintos dispositivos
Brindar un conjunto de rutinas standard de interfaces de E/s.
Optimizar el rendimiento tanto a nivel de productividad como de tiempo de
respuesta.

METODOS DE ACCESO
Una vez creado un archivo estando su información almacenada en el soporte
correspondiente, se quiere utilizar su información, para esto, independientemente de
cómo haya sido almacenada la información en el soporte físico, se podrá acceder a ella
según un esquema lógico secuencial, directo o bien casi directo. El subsistema de
archivos del sistema operativo define que formas de acceso lógico permite y que
métodos de acceso soporta.
Un método de acceso es un conjunto de rutinas y tablas que posibilitan acceder a la
información de los archivos según un esquema lógico determinado.
Algunos sistemas ofrecen un solo método de acceso a sus usuarios. Otros, por el
contrario, permiten utilizar varios y será el usuario el que decida cual usar.
22
 Acceso secuencial
El método de acceso más sencillo es el acceso secuencial. La información del archivo se
procesa en orden, del primero al último y de uno en uno. El efecto es como si el archivo,
para el usuario, estuviera organizado por registros consecutivos que solo permiten llegar
a uno cualquiera de ellos pasando previamente por los anteriores.
Las rutinas del método de acceso secuencial mantendrán un apuntador al siguiente registro lógico a
acceder. Una operación de lectura o escritura, lee o escribe el registro y avanza el apuntador al siguiente.
Es un método muy utilizado por su simplicidad, especialmente en archivos con poca
información.
 Acceso directo
Este método permite el acceso directo a cualquier parte del archivo, es decir, no es necesario pasar por la
información anterior para acceder a un determinado registro.
Solo puede existir este tipo de acceso en aquellos soportes que por su naturaleza lo permitan. Es el caso
de los discos, mientras las cintas no pueden tener este tipo de acceso.
Un archivo se compone de registros lógicos de longitud fija que permiten a los
programas leer y escribir registros rápidamente sin ningún orden específico. El método
de acceso directo de los archivos se basa en el modelo de discos, ya que estos permiten
el acceso aleatorio a cualquier bloque de archivo.
Para este método, el archivo se visualiza como una secuencia numerada de bloques o
registros. Un archivo de acceso directo permite leer o escribir bloques arbitrarios. Así,
podríamos leer el bloque 14, luego el 53 y luego escribir el bloque 7. No hay
restricciones sobre el orden de lectura o escritura de un archivo.
Los archivos de acceso directo son muy útiles para obtener acceso inmediato a grandes
cantidades de información. Las bases de datos suelen ser de este tipo.
 Acceso directo indexado
En este caso se construye un índice o tabla de las relaciones entre las claves y sus
bloques físicos para cada archivo.
La localización de un registro se realizara accediendo primero a ese índice y con la
dirección del bloque correspondiente a la clave solicitada, se alcanzará el bloque
adecuado.
Para archivos grandes se puede utilizar un índice maestro o índice de índices. El
maestro apunta al índice secundario que contiene la clave y este directamente al bloque
físico. Estos índices se crearan durante la carga del archivo.
23

DIRECTORIOS
Son a su vez archivos de estructura especial, cuyos registros contienen la descripción
de los archivos existentes en el sistema. Mediante estos directorios, el subsistema podrá
localizar rápidamente un archivo solicitado y conocer sus características (organización,
tamaño, fecha, etc.)
Desde el punto de vista lógico, un directorio es una tabla de símbolos que refleja los
archivos existentes.
Cada sistema organiza esta información a su manera: algunos construyen una cabecera
(header del archivo) y la separan del directorio, quedando información primaria en el
directorio para localización del archivo y el resto en el header. Otros estructuran el
directorio como una simple lista, con una entrada por archivo, como si fuera un archivo
secuencial donde el nombre de cada archivo es la clave.
La estructura de dicha tabla podrá ser más o menos compleja dependiendo de los
distintos sistemas operativos, pero en cualquier caso deberán permitir la realización de
las siguientes operaciones básicas:
24