SlideShare una empresa de Scribd logo
1 de 30
Descargar para leer sin conexión
Fundamentos de Informática Sistemas Operativos. Archivos y Bases de Datos.
SISTEMAS OPERATIVOS. ARCHIVOS Y BASES DE
DATOS.
Un ordenador es una máquina que permite procesar la información de forma rápida y
automática. Sin embargo, la utilización de un ordenador no es una tarea sencilla, ya que el
modo en que podemos comunicarnos con él, es decir, su interfaz, es extraña y compleja al
pensamiento humano. Se entiende por interfaz de un objeto la parte del objeto accesible
desde su exterior, que permite utilizarlo y comunicarse con él. Por ejemplo, un reloj digital
presenta una interfaz constituida por una serie de botones que permiten modificar su estado
interno cambiando la hora o programando una alarma, y una pantalla y un dispositivo
sonoro por el que se puede consultar su estado actual (consultar la hora u oír la expiración
de una alarma). Para usar un reloj digital no es preciso conocer su funcionamiento interno,
sólo hay que saber utilizar su interfaz. La interfaz de un ordenador viene determinada por
un conjunto, normalmente pequeño, de instrucciones máquina que permiten utilizar los
dispositivos físicos o hardware (CPU, memoria y periféricos) de los que se compone. Si los
usuarios de un ordenador tuvieran que utilizar el hardware a través de sus instrucciones
máquina se escribirían muy pocos programas, y estos no podrían resolver tareas
excesivamente complejas, pues el uso de los dispositivos físicos del ordenador mediante
estas instrucciones es complejo, tedioso, y está lleno de detalles.
La solución que se ha ido adoptando con el tiempo para salvar esta complejidad es la de
escribir capas o niveles de software. Una capa de software de nivel i es un conjunto de
programas que trabajan directamente con la interfaz de su capa de nivel inferior (i - 1), y
presenta a su capa de nivel superior (i + 1) una interfaz que permite utilizar la interfaz de la
capa de nivel i -1 de una forma más sencilla. Se dice que la capa de software de nivel i
proporciona una máquina virtual o extendida a la capa de nivel i + 1 que oculta la interfaz
de la capa i - 1. Una capa de software de nivel i puede construirse de forma que permita a
la capa de nivel i + 1 utilizar también la interfaces de sus niveles inferiores (i -1, i - 2, ...), o
puede construirse de forma que obligue a utilizar sólamente la interfaz de la capa i. El
sistema operativo es la capa de software más importante de un sistema informático.
1. DEFINICIÓN DE SISTEMA OPERATIVO.
Se puede definir a un sistema operativo como un conjunto de programas que controlan
directamente los recursos hardware o físicos de un ordenador (CPU, memoria principal y
periféricos) proporcionando una máquina virtual más fácil de utilizar que el hardware
subyacente. El sistema operativo es la capa de software más baja de un ordenador, como se
refleja en la figura 1.
1
Fundamentos de Informática Sistemas Operativos. Archivos y Bases de Datos.
Figura 1. Niveles hardware y software de un ordenador.
En esta figura se observa cómo el sistema operativo es la única capa que trabaja
directamente con el hardware. Por encima del sistema operativo se encuentra una capa
formada por traductores, editores de texto e intérpretes de órdenes. Los dos primeros tipos
de programas son útiles para crear un nivel de abstracción cómodo para el desarrollo de
programas, la utilidad de los intérpretes de órdenes se verá en un apartado posterior. La
unión de los programas de las dos capas intermedias de la figura conforman el software de
sistemas de un ordenador. Por último, está la capa constituida por los programas de
aplicación, estos programas no dan servicio a otros programas, su finalidad es resolver
problemas concretos. Son los programas que suele ejecutar un usuario no informático.
Pertenecen a esta capa los procesadores de texto, hojas de cálculo, agendas electrónicas,
juegos, etc.
En general, se puede decir que los sistemas operativos realizan dos funciones:
• Constitución de una máquina virtual o extendida.
• Mediante esta función, el sistema operativo ofrece a sus capas superiores una serie
de servicios (que constituyen la interfaz del sistema operativo) que permiten utilizar
de una forma más sencilla el hardware del ordenador.
• Gestión de los recursos físicos del ordenador.
Los recursos físicos de un ordenador vienen constituidos por la CPU, la memoria principal
y los periféricos. El sistema operativo es responsable de que estos recursos se utilicen
eficiente y coherentemente. La mayoría de los sistemas operativos gestionan la CPU de
manera que permiten que varios programas se encuentren en un estadio intermedio entre su
inicio y su finalización en un instante dado (se ahondará sobre esto más adelante en este
tema). Estos programas hacen uso de los servicios proporcionados por el sistema operativo
para utilizar los recursos físicos del ordenador (por ejemplo, para imprimir algo en una
impresora). En un momento dado puede que varios programas deseen utilizar un mismo
recurso, el sistema operativo debe arbitrar las solicitudes de los recursos de forma que no
2
Fundamentos de Informática Sistemas Operativos. Archivos y Bases de Datos.
se produzcan conflictos en su uso. Por ejemplo, no debe permitir que dos programas
utilicen a la vez una impresora, pues sus salidas se entremezclarían en el papel. Para poder
lograr esto, el sistema operativo se apoya en el hardware, forzando a los programas de las
capas superiores (ver figura 1) a que tengan que utilizar sus servicios, y no puedan utilizar
directamente los recursos del ordenador. Con esto, el sistema operativo garantiza que todo
intento de uso de un recurso hardware debe hacerse a través de la solicitud de uno de sus
servicios, pudiendo así rechazar solicitudes pueden causar problemas de utilización de un
recurso, por ejemplo, el permitir a un programa imprimir en una impresora que está siendo
utilizada por otro programa.
2. LA INTERFAZ DEL SISTEMA OPERATIVO.
El conjunto de todos los servicios ofrecidos por el sistema operativo constituyen la interfaz
del sistema operativo, es decir, la forma de comunicarse con él. A estos servicios se les
llama también llamadas al sistema. En este apartado se explica cómo se pueden solicitar
desde un lenguaje de alto nivel. Una solicitud requiere de uno o más parámetros. El primer
parámetro es el tipo de servicio requerido; los restantes parámetros, si los hay, dependen
del tipo de servicio. Normalmente, casi todos los servicios tienen un parámetro mediante el
cual el sistema operativo informa de si ha tenido éxito o no la solicitud. Veamos un
ejemplo, la mayoría de los sistemas operativos ofrecen un servicio que sirve para crear un
directorio en un dispositivo de almacenamiento secundario, la solicitud requiere de un
parámetro para especificar que se desea utilizar el servicio que permite crear un directorio,
un segundo parámetro para especificar el directorio que se desea crear y un tercer
parámetro mediante el cual el sistema operativo indica si se pudo crear o no el directorio.
Los servicios del sistema operativo se solicitan desde el código de los programas. Los
lenguajes de alto nivel disponen de una o varias rutinas (una rutina es un término con el
que se designa genéricamente a una función o un procedimiento, es decir, un término
análogo al de subalgoritmo en pseudocódigo) por cada servicio proporcionado por el
sistema operativo. Si se programa en un lenguaje de alto nivel la solicitud de un servicio
del sistema operativo se realiza llamando a una de estas rutinas. Los parámetros del
servicio se especifican mediante los parámetros actuales con los que se invoca a la rutina,
pudiendo ser estos parámetros de entrada, si el servicio precisa información (como el
nombre de un directorio en el ejemplo anterior), o de salida, si el servicio devuelve
información (como si se pudo crear o no el directorio en el ejemplo anterior). Mediante el
nombre de la rutina se especifica implícitamente el parámetro del tipo de servicio. Cada
vez que se llame a una de estas rutinas se está invocando al sistema operativo, esto es, se
ejecutan instrucciones de algún programa del sistema operativo que proporciona el servicio
solicitado. Cuando el sistema operativo finaliza el servicio la rutina devuelve el control.
En apartados posteriores de este tema se verán más ejemplos de servicios proporcionados
por el sistema operativo.
2.1. Visión del usuario final de los servicios del sistema
3
Fundamentos de Informática Sistemas Operativos. Archivos y Bases de Datos.
operativo.
Un "usuario final" es aquel que utiliza el ordenador solamente para ejecutar programas de
aplicación que le proporcionen ciertos cálculos. No sabe, y probablemente no le interesa,
programar. Así pues, un usuario final utilizará los servicios del sistema operativo
indirectamente, a través de las solicitudes de servicios que realizan los programas que
ejecuta. A continuación se explica el proceso que se sigue para que un usuario pueda
ejecutar de una forma fácil y cómoda los programas.
Cuando un usuario se conecta a un ordenador, el sistema operativo inicia la ejecución de un
programa, llamado intérprete de órdenes, que se va a encargar de controlar las peticiones
del usuario conectado a dicho ordenador. El intérprete de órdenes es un programa que
muestra un indicador (en inglés prompt) formado por varios caracteres. Por ejemplo, el
intérprete de órdenes de MS DOS (llamado COMMAND.COM) muestra un indicador que
suele estar formado por la unidad de disco activa y el directorio de trabajo de esa unidad. Si
la unidad activa es la C y el directorio de trabajo de esa unidad es el directorio raíz
mostrará el indicador "C:> ". El indicador avisa al usuario de que el intérprete de órdenes
está preparado para que el usuario le introduzca una orden. El usuario puede escribir una
orden y pulsar la tecla INTRO (enter), por ejemplo:
C:> COPY AUTOEXEC.BAT AUTOEXEC.OLD <INTRO>
La primera palabra es la orden (en este caso COPY), siendo el resto de la línea una serie de
parámetros, separados por espacios en blanco, que precisa la orden. Normalmente cada
orden tiene asociado un fichero (almacenado en el disco duro) que contiene un programa
ejecutable. El intérprete de órdenes solicitará ciertos servicios del sistema operativo para
que éste cargue dicho programa ejecutable de disco a la memoria principal e inicie su
ejecución. Cuando termina la ejecución del programa el intérprete de órdenes vuelve a
mostrar el indicador, pudiendo el usuario ejecutar otra orden. Por lo tanto, el intérprete de
órdenes es un programa que permite al usuario ejecutar programas de una forma sencilla.
Actualmente, existe la tendencia de sustituir el intérprete de órdenes (que solicita las
órdenes del usuario mediante el teclado) por un programa que utiliza un entorno de
ventanas. Una ventana (en inglés window) es un fragmento rectangular de la pantalla que
contiene iconos y texto. Un programa que utiliza ventanas solicita sus entradas mediante el
teclado y el ratón. En los sistemas que sustituyen el intérprete de órdenes por un programa
que utiliza ventanas el usuario puede ejecutar un programa seleccionando con el ratón el
icono (o el texto) asociado con dicho programa. Esto implicará que el programa que
sustituye al intérprete de órdenes solicite los servicios apropiados del sistema operativo
para ejecutar el programa asociado con el icono o el texto, al igual que hacía el intérprete
de órdenes. Es decir, se sustituye la interfaz con el usuario, pero no cambia la interfaz con
el sistema operativo, ya que ni el intérprete de órdenes ni el programa de ventanas forman
parte del sistema operativo, sino que se limitan a utilizar sus servicios.
3. SISTEMAS OPERATIVOS MONOPROGRAMADOS
4
Fundamentos de Informática Sistemas Operativos. Archivos y Bases de Datos.
VERSUS MULTIPROGRAMADOS.
Los sistemas operativos se pueden clasificar atendiendo a diversos criterios. La
clasificación más importante es la que se basa en la forma en que el sistema operativo
gestiona el recurso más importante del ordenador: la CPU. Esta clasificación divide a los
sistemas operativos en monoprogramados y multiprogramados.
Al principio todos los sistemas operativos eran monoprogramados. Este tipo de gestión
implica que todos los recursos del ordenador (CPU, memoria y periféricos) están a
disposición del único programa en ejecución. La memoria principal sólo alberga al sistema
operativo y a dicho programa. La CPU ejecuta el programa desde su inicio hasta su fin
ininterrumpidamente. Cuando este programa finaliza se pasa a ejecutar un nuevo programa,
que pasa a disfrutar de todos los recursos del ordenador.
En un sistema operativo multiprogramado la memoria principal alberga el código de más
de un programa. La ejecución de uno de los programas almacenados en la memoria
principal puede ser interrumpida por el sistema operativo para ejecutar otro de los
programas situados en la memoria. La ejecución del programa interrumpido será reanudada
posteriormente por el sistema operativo por el lugar en el que se interrumpió. El programa
no es consciente de que se ejecuta discontinuamente en el tiempo. Los programas
ejecutados de esta forma comparten los recursos del ordenador (CPU, memoria y
periféricos), siendo el sistema operativo responsable de que no se produzcan problemas
porque más de un programa quieran utilizar un mismo recurso de forma incoherente a su
naturaleza.
Figura 2. Ocupación de la memoria principal en sistemas de mono y multiprogramación
En la figura 2 se compara la ocupación de la memoria principal en un sistema de
monoprogramación frente a uno de multiprogramación. En el sistema de
monoprogramación (figura 2.a) el sistema operativo ocupa un espacio fijo, el resto de la
5
Fundamentos de Informática Sistemas Operativos. Archivos y Bases de Datos.
memoria se dedica a albergar al único programa en ejecución. Si este programa es pequeño
se desaprovecha mucho la memoria (en la figura la memoria desocupada es la zona
sombreada). En el sistema de multiprogramación (figura 2.b) la memoria se reparte entre el
sistema operativo y varios programas, el número de programas que se almacenan en la
memoria principal depende del tamaño de éstos. Normalmente se desperdicia algo de
memoria, pues es poco probable que coincida exactamente la suma del tamaño de los
programas y el sistema operativo con el tamaño de la memoria principal, no obstante, la
memoria desperdiciada será menor que la que se produce en el sistema monoprogramado.
Figura 3. Ocupación de la CPU en un sistema de monoprogramación y de
multiprogramación
En la figura 3 se compara la gestión de la CPU en un sistema monoprogramado frente a
uno multiprogramado. Ambas figuras, 3.a y 3.b, representan con un rectángulo el programa
que ocupa (ejecuta) la CPU en el tiempo. Se supone que el programa 1 (P1) precisa de 3
unidades de tiempo para su ejecución, P2 2, P3 4 y P4 3. El orden de llegada de los
programas al sistema para su ejecución es P1, P2, P3, P4. El sistema de monoprogramación
(figura 3.a) comienza ejecutando el primer programa en llegar, P1, ejecutándolo
completamente, después va ejecutando los demás programas en su totalidad según su orden
de llegada. En un instante dado la memoria principal estará ocupada por el sistema
operativo y el programa en ejecución. El sistema de multiprogramación (figura 3.b)
comienza ejecutando a P1, pero antes de su terminación (instante 2) detiene su ejecución y
comienza a ejecutar a P2, el cual se ejecuta en su totalidad. El término de P2 implica que se
libera la zona de memoria principal que ocupaba, esto hace que se pueda introducir
(dependiendo de su tamaño) otro programa en la memoria principal, aquí se supone que se
puede, introduciéndose P4 en la memoria. Ahora el sistema operativo repartirá la CPU
entre P1, P3 y P4 que son los programas albergados en la memoria principal. En el resto de
la figura se puede ver cómo se reparte la utilización de la CPU.
La figura 3.a refleja de forma exacta la ocupación de la CPU en un sistema de
monoprogramación, un programa ocupa la CPU ininterrumpidamente desde su inicio a su
fin. Sin embargo, la figura 3.b refleja la ocupación de la CPU en un sistema
multiprogramado concreto. En esta figura P1 es interrumpido en el instante 2, pero en otro
sistema multiprogramado podría haber sido interrumpido en el instante 1 o en el 1'5. El
instante en el que se detiene la ejecución de un programa para ejecutar otro, así como el
6
Fundamentos de Informática Sistemas Operativos. Archivos y Bases de Datos.
nuevo programa que pasa a ocupar la CPU no se eligen arbitrariamente. Los criterios más
importantes que tiene un sistema operativo para provocar estos cambios de programas en la
ocupación de la CPU son dos: el intentar utilizar más eficientemente los recursos del
ordenador y el repartir equitativamente la ocupación de la CPU entre todos los programas
que existen en el sistema. Si el sistema operativo sólo utiliza el primer criterio será un
sistema simplemente multiprogramado, si utiliza ambos criterios será un sistema de tiempo
compartido. El tiempo compartido es una variante de la multiprogramación en la gestión de
la CPU.
A continuación se definen dos términos muy utilizados en el ámbito de los sistemas
operativos relacionados con la existencia de multiprogramación o de tiempo compartido:
proceso y ejecución concurrente. Los sistemas operativos distinguen entre programa y
proceso. Un programa es una secuencia de instrucciones escrita en un lenguaje dado, un
proceso es un programa en ejecución. Un programa es un concepto estático, mientras que
un proceso es un concepto dinámico. Un proceso se caracteriza por la zona de memoria
principal que ocupa, la última instrucción que ha sido ejecutada por la CPU, el valor actual
de sus variables, etc. Por último, definamos el término ejecución concurrente: cuando en un
sistema de multiprogramación, o de tiempo compartido, se tiene a más de un proceso en un
estado de ejecución intermedio entre su inicio y su fin se dice que éstos se ejecutan
concurrentemente.
Los sistemas operativos multiprogramados y de tiempo compartido son mucho más
complejos que los monoprogramados , y, por lo tanto, mucho más difíciles de construir.
Sin embargo, gestionan mejor los recursos del ordenador y proporcionan una máquina
virtual más sofisticada al permitir la ejecución concurrente de más de un proceso.
4. FUNCIONES PRINCIPALES DE UN SISTEMA
OPERATIVO.
En este apartado se van a estudiar las funciones más importantes que realiza un sistema
operativo, las cuales van a depender de la máquina virtual que pretenda ofrecer. Debido a
la complejidad de estas funciones, no se va a abordar aquí su explicación completa. Por
otro lado, una comprensión perfecta de su funcionamiento requiere de unos conocimientos
sobre el software y el hardware de un ordenador que no se presuponen en el lector, por lo
que se estudiarán las funciones a grandes rasgos, ofreciendo una visión simplificada. Cada
uno de los subapartados siguientes explica una de estas funciones, al final de algunos
subapartados se incluyen algunas de las llamadas al sistema más significativas que
proporciona al sistema operativo relacionadas con la realización de dicha función.
4.1. Gestión de la CPU.
La gestión que realice el sistema operativo de la CPU va a depender de si se quiere
proporcionar monoprogramación o multiprogramación. Si el sistema es monoprogramado
la gestión es muy simple, por lo que aquí se comentará la gestión de un sistema operativo
multiprogramado o de uno de tiempo compartido.
7
Fundamentos de Informática Sistemas Operativos. Archivos y Bases de Datos.
Una de las tareas que tiene que realizar un sistema operativo para proporcionar
multiprogramación es mantener una estructura de datos para guardar información sobre
cada uno de los procesos que se ejecutan concurrentemente en el sistema. Esta información
es necesaria para que la multiprogramación se realice correctamente. Por ejemplo, cuando
el sistema operativo decide interrumpir a un proceso, guarda en esta estructura de datos la
dirección de memoria de la siguiente instrucción del proceso a ejecutar. De esta forma,
cuando el sistema operativo reanude la ejecución del proceso sabe por qué punto de su
ejecución fue interrumpido.
Otra de las tareas a realizar por el sistema operativo es decidir cuándo se interrumpe a un
proceso, y determinar a qué proceso se le asigna la CPU en su lugar. Con la ayuda del
hardware, el sistema operativo tiene garantizado que cada muy poco tiempo (existe un
límite para dicho tiempo) se ejecuta uno de sus programas. Este programa se encarga de
decidir si el proceso que actualmente ocupa la CPU debe ser interrumpido. Si se decide
realizar la interrupción se debe ejecutar otro programa del sistema operativo, llamado
planificador, que elige qué proceso de los restantes debe ocupar la CPU. Como se explicó
en el apartado anterior, el criterio para decidir si un proceso debe ser interrumpido, y en
caso de ser interrumpido, qué proceso lo sustituye en la CPU, varía de un sistema operativo
a otro.
A continuación se describen dos de los servicios relacionados con la gestión de la CPU que
proporciona todo sistema operativo.
• Creación de un proceso. Este servicio sirve para ejecutar un programa, siendo
utilizado, entre otros programas, por los intérpretes de órdenes. El servicio requiere
de un parámetro de entrada en el que se especifica el fichero que contiene el código
ejecutable del programa. También precisa de un parámetro de salida donde el
sistema operativo informa de si se pudo crear o no el proceso. Un motivo para
negar su creación es que ya existen demasiados procesos ejecutándose concurrente
en el sistema, la inclusión indiscriminada de procesos en el sistema puede llevar a
su colapso, pues los recursos no pueden ser compartidos eficientemente entre un
número elevado de procesos.
• Terminación de un proceso. La solicitud de este servicio en el código de un
programa implica que el sistema operativo finalizará su ejecución.
4.2. Gestión de la memoria principal.
Otra de las funciones del sistema operativo es la de gestionar la memoria principal del
ordenador. El sistema operativo debe mantener una estructura de datos donde almacena la
información sobre qué zona de la memoria ocupa cada proceso, así como de las zonas de la
memoria libres. De esta forma, cuando el sistema operativo reciba una solicitud de
creación de un proceso debe almacenar su código en una zona libre de la memoria (si hay),
registrándose la zona de memoria que ocupa el nuevo proceso como ocupada. De igual
forma, cuando un proceso finaliza hay que registrar que la zona de memoria que ocupaba
queda como libre. La gestión de la memoria de un sistema operativo monoprogramado es
mucho más sencilla que la de uno multiprogramado, ya que en éste la memoria principal
8
Fundamentos de Informática Sistemas Operativos. Archivos y Bases de Datos.
sólo es compartida por él y por el único programa en ejecución. En un sistema operativo
multiprogramado la memoria principal se comparte entre varios programas (ver figura 2).
4.2.1. La memoria virtual.
La CPU capta de la memoria principal las instrucciones máquina de los programas para
ejecutarlas. Esto implica que para que un programa se pueda ejecutar debe estar cargado
(residir) en la memoria principal. Por lo tanto, el tamaño máximo del código máquina de
un programa no debería exceder del tamaño de la memoria principal (realmente de algo
menos, pues siempre hay una parte de la memoria ocupada por el sistema operativo). A
partir de 1961 muchos sistemas operativos comenzaron a utilizar una técnica de gestión de
la memoria llamada memoria virtual; esta técnica requiere de un hardware especial, y
permite que el usuario pueda crear programas cuyo código máquina excede del tamaño de
la memoria principal. Para proporcionar memoria virtual, el sistema operativo mantiene en
la memoria principal sólo parte del código de un programa, concretamente siempre
mantiene por lo menos la parte del código que se está ejecutando actualmente, el resto
permanece en la memoria secundaria. Cuando se necesita una parte del código que está en
la memoria secundaria se transfiere a la memoria principal. Estas transferencias las realiza
el sistema operativo de forma transparente al programa, y por lo tanto al programador, es
decir, el programador escribe programas igual que siempre, sólo que el tamaño de estos
programas puede ser mayor que el tamaño de la memoria principal gracias a la gestión
realizada por el sistema operativo. La memoria virtual es otro ejemplo de cómo el sistema
operativo ofrece una máquina virtual distinta, y más potente, de la que ofrece el hardware.
4.3. Gestión de la entrada/salida (E/S).
Los ordenadores disponen de muchos periféricos, o dispositivos de E/S, como impresoras,
teclados, monitores, discos, ratones, etc. Estos periféricos hacen posible que los programas
se comuniquen con los usuarios. En el apartado anterior se comentó superficialmente la
complejidad de una operación sobre un disco, de igual forma, los demás periféricos ofrecen
una interfaz hardware de trabajo muy compleja. Es misión del sistema operativo gestionar
directamente los periféricos, ofreciendo al programador unos servicios para su utilización
mucho más sencillos que los que ofrecen éstos a nivel hardware.
A nivel físico los periféricos son muy distintos, las instrucciones máquina que hay que
suministrar a una impresora para que escriba una línea difieren notablemente de las que
hay que darle a un scanner para que digitalice una imagen. Sin embargo, los servicios que
ofrece el sistema operativo para trabajar con periféricos distintos son muy parecidos. El
objetivo de proporcionar servicios similares con independencia del tipo de periférico se
conoce como E/S independiente del dispositivo. La E/S independiente del dispositivo
permite que un programa que, por ejemplo, manda sus salidas a una impresora, pueda
mandarlas a la pantalla realizando unos cambios mínimos en su código, ya que los
servicios para trabajar con la impresora son prácticamente iguales a los servicios para usar
la pantalla.
En general, el sistema operativo ofrece como mínimo los siguientes servicios para realizar
operaciones de E/S:
9
Fundamentos de Informática Sistemas Operativos. Archivos y Bases de Datos.
• Apertura de un periférico. Con este servicio el programa le comunica al sistema
operativo que quiere utilizar un determinado periférico (el cual será un parámetro
del servicio). El sistema operativo devolverá en un parámetro si se le concede o no
su uso. Un motivo por el que puede denegarse la concesión aparece en los sistemas
operativos multiprogramados, cuando un proceso desea utilizar un periférico,
habiendo sido abierto éste previamente por otro proceso. Si la naturaleza de un
periférico, por ejemplo una impresora, es tal que su utilización concurrente produce
incoherencias, el sistema operativo deniega cualquier intento de apertura de un
periférico abierto previamente.
• Operaciones de lectura o escritura.
• Cierre de un periférico. Con ello el programa indica al sistema operativo que no
desea utilizar más un periférico. Si el periférico cerrado es de naturaleza no
compartible, el sistema operativo puede concedérselo al siguiente programa que lo
quiera abrir.
4.4. El sistema de ficheros.
Existen varios motivos para la utilización de la memoria secundaria (formada
principalmente por discos y cintas magnéticas), uno de los cuales es que existen ciertos
datos que deben sobrevivir a la ejecución de un programa. Normalmente los programas
guardan sus datos en la memoria principal mediante el uso de variables. Sin embargo,
cuando el programa finaliza, la memoria principal se utiliza para albergar a otros
programas, por lo que el contenido de dichas variables se pierde. Además, la memoria
principal es volátil, por lo que al apagar el ordenador se pierden los datos que contenía.
Muchos programas necesitan que sus datos perduren, por ejemplo, un programa que
gestione la información de alumnos. Se puede ejecutar dicho programa para actualizar
(añadir, borrar o modificar) la información de los alumnos, al terminar su ejecución los
datos sobre los alumnos deben guardarse en algún sitio donde no se pierdan. La solución
adoptada es que los programas almacenen estos datos en la memoria secundaria, que es
permanente. El sistema operativo facilita notablemente el trabajo con la memoria
secundaria, al presentar una interfaz de uso simple.
10
Fundamentos de Informática Sistemas Operativos. Archivos y Bases de Datos.
Figura 4. El interior de un disco
En la figura 4 se muestra el interior de un disco magnético. Un disco se compone de pistas,
cada pista se divide en un número fijo de sectores (en el disco del dibujo cuatro). Aunque
el tamaño de un sector depende de la pista en que se halle situado, todos los sectores de un
disco almacenan la misma cantidad de información, típicamente 512, 1K o 2K bytes. La
unidad de transferencia de información con un disco es el sector. Es decir, se puede leer o
escribir un sector del disco. Una operación de lectura es sumamente compleja, implica dar
órdenes (mediante instrucciones máquina) para que el disco gire a cierta velocidad, para
situar el cabezal de lectura/escritura en la pista adecuada, y para que cuando el sector que
se desea leer pase bajo el cabezal se lea la información. Una operación de escritura se
realiza de forma similar. No interesan aquí los detalles, de hecho se han simplificado, lo
importante es comprender que son tareas complejas. Si los programadores tuvieran que
trabajar directamente con el hardware de un disco pocos los utilizarían. Igualmente, el
interfaz de trabajo hardware con una cinta magnética, y en general con cualquier periférico
de entrada/salida, es complejo.
El sistema operativo gestiona directamente la memoria secundaria para facilitar su uso,
proporcionando una serie de servicios que permiten utilizarla sencillamente. Para ello se
ofrece al programador el concepto de fichero, que se puede definir como una unidad lógica
de almacenamiento de información en la memoria secundaria. Un fichero es un objeto
virtual, es decir, no existe como tal en un disco. El sistema operativo aporta un conjunto de
servicios para manipular los ficheros, algunos de los más comunes permiten realizar tareas
como:
• Abrir un fichero. Esta operación requiere de un parámetro en el que se especifica
el nombre del fichero a abrir. Con este servicio el programador indica al sistema
operativo que desea utilizar un fichero. Normalmente existen varias formas de abrir
un fichero, que dependen del uso que se quiera darle. Las dos formas de apertura
básicas son: modo lectura, si se utiliza el fichero sólamente para consultar los datos
que almacena; y modo escritura, si se abre el fichero para modificar su contenido.
11
Fundamentos de Informática Sistemas Operativos. Archivos y Bases de Datos.
La apertura en modo escritura de un fichero que no existe implica su creación.
• Escribir en un fichero. Este servicio sirve para modificar los datos que contiene un
fichero. El servicio requiere la especificación del fichero, así como de la
información a escribir.
• Leer de un fichero. Sirve para consultar el contenido de un fichero, habrá que
utilizar parámetros para indicar el fichero a leer, una variable donde almacenar la
información leída, y cuánta información, por ejemplo cuántos bytes, se desean leer.
• Borrar un fichero. Cuando, por alguna circunstancia, la información que contiene
un fichero no se quiere utilizar más (no en la ejecución de un programa, sino en la
existencia de una aplicación) resulta útil el uso de este servicio. Al utilizarlo, el
sistema operativo libera el espacio que ocupaba el fichero en la memoria
secundaria, aumentándose así el espacio disponible, pudiendo ser utilizado por
otros ficheros. Este servicio requiere de un parámetro como mínimo, para indicar el
fichero a borrar. Si está familiarizado con el sistema operativo MS DOS, la orden
DEL utiliza este servicio para borrar los ficheros que se indican como parámetros.
• Cerrar un fichero. Cuando no se quiere utilizar más un fichero dentro de un
programa hay que cerrarlo, pues el sistema operativo guarda cierta información por
cada fichero abierto en la memoria principal. El cerrar un fichero implica que el
sistema operativo puede liberar dicha memoria para emplearla en otros usos. Este
servicio precisa como mínimo de un parámetro para especificarle al sistema
operativo el fichero a cerrar.
Para poder mantener el concepto de fichero el sistema operativo ha de guardar cierta
información sobre ellos, por ejemplo, qué sectores del disco ocupan, y qué orden lógico
siguen sus sectores.
El sistema operativo también ofrece el concepto de directorio. Un directorio sirve para
estructurar los ficheros almacenados en un disco, de forma que se puedan guardar ficheros
relacionados lógicamente (por ejemplo porque todos son necesarios para ejecutar un
programa) en un mismo directorio. Existe un directorio origen por disco, llamado
directorio raíz. Un directorio puede contener a su vez directorios, lo que conduce a una
estructura de árbol. El sistema operativo ofrece servicios para trabajar con directorios, estos
servicios permiten, por ejemplo, crear y eliminar directorios, o consultar los ficheros
almacenados en ellos.
5. Archivos y carpetas.
El sistema de archivos (o ficheros) es una de las funciones de un sistema operativo con la
que más se relaciona el usuario. A continuación se exponen algunos conceptos básicos
sobre este sistema y el funcionamiento de algunos tipos de sistemas de archivos.
12
Fundamentos de Informática Sistemas Operativos. Archivos y Bases de Datos.
5.1. Conceptos básicos de los archivos.
Un archivo o fichero es un conjunto de información sobre el mismo tema, tratada como
una unidad de almacenamiento y organizada de forma estructurada para la búsqueda de un
dato individual. Un archivo está compuesto de registros homogéneos que contienen
información sobre el tema. Así, por ejemplo, los datos de nómina de personal de una
empresa (tema) se pueden almacenar en un archivo, en el que cada registro contendría los
campos o datos de nómina de cada empleado.
El concepto de archivo surge de la necesidad, en los sistemas operativos, de almacenar la
información. Los archivos pueden contener programas, datos o algún otro elemento que el
usuario desee. El sistema operativo debe proporcionar operaciones para crear, destruir, leer
y escribir archivos. Estos conceptos se verán con más detalle en el tema dedicado a los
sistemas operativos.
La figura 5. muestra tres organizaciones comunes de un archivo. La primera organización
(figura 5.a.) es una simple secuencia de bytes. Los archivos en el sistema operativo UNIX
se estructuran de esta manera. La segunda (figura 5.b.) es una sucesión de registros de
tamaño fijo. En esta organización pueden leerse o escribirse registros arbitrarios, pero no
pueden insertarse o suprimirse registros en la mitad de un archivo. La tercera organización
es un árbol de bloques de disco, donde cada nodo contiene n registros con clave. Si se
inserta un registro a un bloque que está repleto, éste se divide en dos, los cuales se suman
al árbol en su secuencia alfabética correcta. Este método se aplica sobre todo en
macrocomputadoras donde se llama ISAM (método de acceso secuencial indexado).
Figura 5. Tres organizaciones de archivos.
13
Fundamentos de Informática Sistemas Operativos. Archivos y Bases de Datos.
Todos los sistemas operativos aspiran a la independencia del dispositivo, es decir, hacer
que el acceso sea el mismo sin importar dónde esté el archivo. Algunos sistemas operativos
tienen mayor independencia del dispositivo que otros. En UNIX, por ejemplo, los discos
forman parte del árbol de ficheros, en MS-DOS, en cambio, el usuario debe especificar
explícitamente en qué dispositivo está cada archivo.
Las operaciones disponibles con archivos difieren ligeramente de un sistema operativo a
otro. Siempre se proporcionan la lectura y escritura de bytes (o registros) en forma
secuencial. El acceso al azar se puede obtener o bien realizando una operación en la que se
especifique el número (o clave) del registro que se leerá o escribirá, o bien, primero se
realiza una operación para situar la "posición actual del archivo" en un lugar determinado y
posteriormente se realizan las operaciones de lectura o escritura que se deseen, las cuales
actuarán a partir de la nueva posición actual del archivo. Los archivos orientados a
registros suelen tener operaciones para insertar y suprimir registros.
5.2. Tipos de archivos.
La mayoría de los sistemas operativos tienen tres tipos básicos de archivos: regulares,
directorios y archivos especiales. Los archivos especiales se utilizan (como hace UNIX)
para modelar dispositivos de disco y terminales. Los archivos regulares se subdividen en
tipos distintos en base a su uso. Los tipos diferentes se distinguen por medio de nombres
que terminan con extensiones de archivo distintas. Por ejemplo:
XXX.PAS: programa fuente en lenguaje PASCAL.
XXX.TCL: programa fuente en lenguaje TCL-TK.
XXX.DOC: documento escrito con el procesador de textos WORD.
XXX.OBJ: archivo objeto (salida del compilador aún no linkada).
XXX.EXE: programa binario ejecutable.
XXX.TXT: archivo de texto ASCII.
XXX.BAT: archivo de procesamiento de comandos por lotes.
En algunos sistemas las extensiones son simplemente un convencionalismo, el sistema
operativo mismo no las utiliza para nada. En otros sistemas, el sistema operativo refuerza
rígidamente las reglas que se relacionan con la nominación. Por ejemplo, no ejecutará un
archivo a menos que éste termine en .EXE.
Otras posibles clasificaciones de los archivos, atendiendo a diversos criterios, son las
siguientes:
14
Fundamentos de Informática Sistemas Operativos. Archivos y Bases de Datos.
5.2.1. Según la longitud de los registros.
Los registros que componen un archivo pueden, o no, tener todos la misma longitud.
Esto puede ser debido a la existencia de campos de longitud variable o por haber
campos que se repiten un número variable de veces (o por ambas cosas). Por lo que
respecta a la longitud de sus registros, los archivos pueden ser de uno de los siguientes
tipos :
• Longitud fija. Todos los registros tienen la misma longitud.
• Longitud variable. El sistema reserva una palabra al comienzo de cada registro para
anotar su longitud.
• Delimitados. El sistema incluye un carácter especial, para indicar el final del
registro. En este caso se dice que el archivo es de tipo texto.
• Indefinido. En este caso el sistema operativo no realiza ninguna gestión sobre la
longitud de los registros del archivo. El programa de usuario es el que se encarga de
localizar el principio y el final de cada registro.
5.2.2. Según el uso que se hace de ellos.
Dentro de una aplicación informática se pueden utilizar los archivos para realizar
funciones diversas. Conocer la función que va a desempeñar un archivo es fundamental
para su organización. Podemos establecer una clasificación de los archivos atendiendo
a la función que desempeñan
• Un archivo permanente contiene información relevante para una aplicación, es
decir, los datos necesarios para el funcionamiento de la misma. Su vida es larga y
normalmente no puede generarse de forma inmediata a partir de otros archivos.
• Un archivo temporal contiene información que es relevante para un determinado
proceso o programa, pero no para el conjunto de la aplicación. Se genera a partir de
los datos de los archivos permanentes o para actualizar éstos, y su vida es
generalmente muy corta.
Dentro de los archivos permanentes, podemos distinguir:
• Archivos maestros. Un archivo maestro contiene el estado actual de los datos
susceptibles de ser modificados en la aplicación. En general, todos los procesos
están orientados a actualizar el archivo maestro o a obtener resultados de él. Ej : el
archivo de clientes de un banco, en el los registros contienen información de
identificación de clientes, su saldo, etc.
• Archivos constantes. Un archivo constante es aquel que contiene datos fijos para la
aplicación. En él no son frecuentes las modificaciones, normalmente se accede sólo
para consultar datos. Ej: el archivo que contenga los intereses para los distintos
tipos de cuentas bancarias.
• Archivos históricos. Un archivo histórico es aquel que contiene datos que fueron
actuales en tiempos anteriores. Se conservan para poder reconstruir situaciones
anteriores. En algunos casos puede estar formado simplemente por los registros
borrados del archivo maestro. Ej: Un fichero que contenga los datos de los clientes
que se han dado de baja en una entidad bancaria.
15
Fundamentos de Informática Sistemas Operativos. Archivos y Bases de Datos.
Los archivos temporales se pueden clasificar en:
• Archivos intermedios. Se utilizan para almacenar resultados de un programa que
han de ser utilizados por otro, dentro de una misma aplicación.
• Archivos de maniobras. Se utilizan para almacenar los datos propios de un
programa que no se pueden conservar en memoria principal por falta de espacio. Se
encuentran normalmente en programas de cálculo numérico, compiladores y
editores. Su vida es siempre menor que el tiempo de ejecución del programa.
• Archivos de resultados. Se utilizan para almacenar datos elaborados que van a ser
transferidos a un dispositivo de salida, por ejemplo un archivo de impresión, que
contiene datos que van a ser transferidos a una impresora.
5.3. Dirección física y dirección lógica.
Por lo general, un fichero utilizado por un usuario desde un lenguaje de alto nivel, no es
manejado directamente por el propio programa, sino por el sistema operativo o por el
software específico del computador para la gestión de archivos. Dicho software se
encargará de realizar los accesos necesarios al dispositivo donde se encuentra ubicado el
archivo y transferir la información solicitada del archivo al programa o a la inversa. Esto
facilita que los programas sean portables, ya que en ellos no se hace referencia a la forma
específica de gestionar la información sobre el soporte, que puede ser diferente de un
sistema a otro. Así, un programa que utilice archivos y escrito en algún lenguaje para un
determinado computador, puede ser trasladado a otro computador con relativa facilidad,
aunque la memoria masiva esté estructurada físicamente de otra forma.
El sistema operativo transporta, cada vez que accede al dispositivo, una cantidad fija de
información (bloque o registro físico) que depende de las características hardware o físicas
de éste. En un bloque puede haber varios registros del archivo o puede que un registro
ocupe varios bloques. En el diseño de archivos un factor que debe ser tenido en cuenta es la
longitud de bloque o el factor de blocaje, que se define como el número de registros del
archivo que entran en un bloque. Cuanto mayor sea éste, menor será el número de accesos
al dispositivo necesarios para el procesamiento del archivo.
La dirección lógica de un registro es la posición relativa que ocupa en el archivo, mientras
que la dirección física es la posición real o efectiva donde se encuentra dicho registro en el
soporte de información (dirección hardware). En el archivo los registros aparecen al
usuario en secuencia lógica, es decir, ordenados linealmente. Por ejemplo, un archivo de
nóminas puede estar ordenado alfabéticamente por el apellido de los trabajadores. No
obstante el orden de los archivos en el disco puede no tener ninguna relación con la
información que contiene.
El sistema operativo, ha de realizar la transformación de la dirección lógica usada en los
programas, en la dirección física con la que se direcciona el soporte.
Desde un programa se accede a un archivo para leer, modificar o escribir en uno de sus
16
Fundamentos de Informática Sistemas Operativos. Archivos y Bases de Datos.
registros. Al leer se transfiere de bloque en bloque la información del archivo a un área de
memoria principal asociada a las entradas/salidas del archivo (a esta zona se le denomina
buffer), desde aquí la información es procesable por el programa. De la misma forma el
programa puede transferir información desde esta zona al archivo, modificando su
contenido.
5.4. Almacenamiento de archivos.
Si un archivo consta de una sucesión de bloques, el sistema de archivo debe contar con
alguna manera de llevar el control de los bloques de cada archivo. La forma más evidente
(el almacenamiento consecutivo de los bloques) suele no ser viable porque los archivos
pueden crecer. De hecho, fue precisamente este problema el que llevó a dividir los archivos
en bloques.
Un método que resulta adecuado consiste en almacenar los bloques de archivo como una
lista enlazada. Cada bloque del disco de 1024 bytes (por ejemplo) contiene 1022 bytes de
datos y un apuntador de 2 bytes al siguiente bloque de la cadena. Sin embargo, este método
tiene dos desventajas. Primero, el número de bytes de datos en un bloque ya no es una
potencia de 2, lo que con frecuencia es una molestia. Segundo y más grave, el acceso al
azar es costoso de implementar. Si un programa hace la localización del byte 32768 y
después inicia la lectura, el sistema operativo tiene que hallar su camino a través de
32768/1022 o 32 bloques para hallar los datos que se necesitan. Tener que leer 33 bloques
del disco para hacer la localización es ineficiente.
Pese a ello, la idea de representar un archivo como una lista enlazada puede salvarse si se
conservan los apuntadores en la memoria. La figura 6 muestra el esquema de asignación
que utiliza MS-DOS. En este ejemplo, se tienen tres archivos, A, con bloques 6, 8, 4 y 2; B
con bloques 5, 9 y 12; y C con bloques 10, 3 y 13.
Figura 6. Esquema de asignación de lista enlazada de MS-DOS.
17
Fundamentos de Informática Sistemas Operativos. Archivos y Bases de Datos.
En asociación con cada disco hay una tabla llamada tabla de asignación de archivos (FAT).
Tiene una entrada por cada bloque del disco. La entrada del directorio de cada archivo da
el número del primer bloque del archivo. Esa ranura en la FAT contiene el número del
bloque del siguiente bloque. El archivo A comienza en el bloque 6, de modo que la entrada
6 de la FAT contiene el número del siguiente bloque del archivo A, que es 8; la entrada 8
de la FAT contiene el siguiente número de bloque, 4; la entrada 4 apunta a la 2 y la 2 se
marca como fin del archivo.
El principal problema de la FAT es que los apuntadores de todos los archivos del disco en
su totalidad se combinan al azar en la misma tabla. Esto quiere decir que toda la FAT se
necesita en potencia, aun si sólo se abre un archivo. Un método más adecuado sería
conservar las listas de bloques de diferentes archivos en lugares distintos. Esto es lo que
UNIX hace.
En asociación con cada archivo de UNIX hay una tabla pequeña (en el disco) llamada
i-nodo como se muestra en la figura 7. El i-nodo contiene información sobre el archivo y
de protección, además de la información necesaria para localizar los bloques del archivo.
Los elementos importantes son los 10 números de bloques del disco y los 3 números de
bloque indirectos. Para archivos de menos de 10 bloques de longitud, todas las direcciones
del disco se conservan justamente en el i-nodo, haciéndolos fáciles de hallar.
Figura 7. Estructura de un i-nodo
Cuando un archivo crece hasta más de 10 bloques de disco, se adquiere un bloque de disco
libre y se coloca el apuntador indirecto hacia él. Este bloque se utiliza para contener
apuntadores de los bloques del disco. Con un tamaño de bloque de 1K y direcciones de
18
Fundamentos de Informática Sistemas Operativos. Archivos y Bases de Datos.
disco de 32 bits, el bloque indirecto puede contener 256 direcciones del disco. Este
esquema basta para archivos de hasta 266 bloques (10 en el i-nodo y 256 en el bloque
indirecto individual).
Después de 266 bloques, el apuntador doble indirecto se utiliza para apuntar a un bloque
del disco de hasta 256 apuntadores, sólo que estos apuntadores no apuntan a bloques de
datos, sino que apuntan a 256 bloques indirectos individuales. El bloque indirecto doble
basta para archivos de hasta 266 + 2562
= 65802 bloques. Para archivos de más de 64M, se
utiliza el apuntador triple indirecto para apuntar a un bloque que contiene apuntadores a
256 bloques indirectos dobles.
Los archivos que sobrepasan los 16 gigabytes no se pueden manejar (con tamaño de bloque
de 1K). El tamaño de la FAT de un disco de 16 gigabytes es poco agradable de contemplar.
La fuerza del esquema de UNIX es que los bloques indirectos se utilizan sólo cuando se
necesitan. Para archivos menores de 10K, no se necesitan bloques indirectos.
5.5. Directorios.
Para llevar el control de los archivos, el sistema operativo normalmente proporciona
directorios, los cuales, en muchos sistemas, son archivos. Un directorio suele contener
varias entradas, una por archivo, como se muestra en la figura 8. La manera más simple
consiste en que el sistema conserve un solo directorio que contenga todos los archivos de
todos los usuarios. Si hay muchos usuarios y éstos eligen los mismos nombres de archivos,
los conflictos y la confusión volverán el sistema rápidamente impracticable.
Figura 8. Entradas de un directorio.
Una mejora consiste en tener un directorio por usuario. Este diseño elimina conflictos de
nombre entre los usuarios, pero no es muy satisfactorio para usuarios con muchos archivos.
Es muy común que los usuarios quieran agrupar sus archivos en formas lógicas. Lo que se
necesita es una jerarquía general, es decir, un árbol de directorios. Con este método, cada
usuario puede tener tantos directorios como se necesiten de manera que los archivos se
puedan agrupar en formas naturales. Este método se muestra en la figura 9.
19
Fundamentos de Informática Sistemas Operativos. Archivos y Bases de Datos.
Figura 9. Árbol de directorios.
Cuando tenemos esta organización, se necesita contar con alguna manera de especificar los
nombres de los archivos. Comúnmente se emplean dos métodos. En el primero, a cada
archivo se le da un nombre de ruta absoluta, que consta de la ruta que va del directorio raíz
al archivo. Por ejemplo, la ruta /opt/gnu/gcc significa que el directorio raíz contiene
un subdirectorio opt, el cual a su vez contiene un subdirectorio gnu, que contiene el
archivo gcc. Los nombres de ruta absoluta siempre comienzan en el directorio raíz y son
únicos.
El otro tipo de nombre es el nombre de ruta relativa. Este se utiliza junto con el concepto
de directorio actual. Un usuario puede designar un directorio como el directorio actual, en
cuyo caso todos los nombres de ruta que no comienzan en el directorio raíz se toman en
relación al directorio actual. Por ejemplo, si el directorio actual es /opt/gnu, entonces el
archivo cuya ruta absoluta es /opt/gun/gcc puede referenciarse simplemente como
gcc.
5.6. Estructura del directorio.
Antes de que un archivo se pueda leer, se debe abrir. Cuando un archivo se abre, el sistema
operativo utiliza el nombre de ruta proporcionado por el usuario para localizar los bloques
del disco, de manera que pueda leer y escribir el archivo más adelante.
Consideremos algunos ejemplos de sistemas con árbol de directorios. La figura 10 muestra
una entrada del directorio de MS-DOS.
20
Fundamentos de Informática Sistemas Operativos. Archivos y Bases de Datos.
Figura 10. Entrada del directorio de MS-DOS.
Tiene 32 bytes de largo y contiene el nombre del archivo y el primer número de bloque,
entre otros elementos. El primer número de bloque se puede utilizar como índice en la
FAT, para hallar el segundo número de bloque y así sucesivamente. De esta forma se
pueden hallar todos los bloques de un archivo dado. Los directorios de MS-DOS son
archivos y pueden contener un número arbitrario de entradas, salvo el directorio raíz que es
de tamaño fijo.
La estructura del directorio que usa UNIX es extremadamente simple, como se muestra en
la figura 4.7. Cada entrada contiene un nombre de archivo y su número de i-nodo. Toda la
información referente al tipo, tamaño, tiempos, propietario y bloques del disco está
contenida en el i-nodo (figura 8). Todos los directorios de UNIX son archivos y pueden
contener, en forma arbitraria, muchas de estas entradas de 16 bytes.
Figura 11. Entrada del directorio de UNIX.
Cuando se abre un archivo, el sistema debe tomar el nombre proporcionado y localizar sus
bloques del disco. Consideremos la forma en que se busca el nombre de ruta
/opt/gnu/gcc.Utilizaremos a UNIX como ejemplo, pero el algoritmo es básicamente el
mismo para todos los sistemas de directorios jerárquicos. En UNIX su i-nodo está
localizado en un lugar fijo del disco.
Después busca la primera componente de la ruta, opt, en el directorio raíz con el fin de
hallar el i-nodo del archivo /opt. A partir de este i-nodo el sistema localiza el directorio
de /opt y busca la siguiente componente, gnu, en él. A partir de este i-nodo puede hallar
el directorio mismo y buscar gcc. El i-nodo de este archivo se lee después en la memoria y
se guarda ahí hasta que el archivo se cierra. El proceso de búsqueda se ilustra en la figura
12.
21
Fundamentos de Informática Sistemas Operativos. Archivos y Bases de Datos.
Figura 12. Las etapas en la búsqueda de /opt/gnu/gcc.
Los nombres de ruta relativos se buscan de la misma forma que los absolutos, sólo que
comenzando desde el directorio actual y no desde el directorio raíz. Todo directorio tiene
entradas para . y .. que se colocan ahí cuando se crea el directorio. La entrada . tiene el
número de i-nodo del directorio actual y la entrada de .. tiene el número de i-nodo del
directorio padre. Por lo tanto, un procedimiento que busca a ../pepe/prog.pas
simplemente busca a .. en el directorio de trabajo, halla el número de i-nodo del
directorio padre y rastrea ese directorio para encontrar pepe. No se necesita ningún
mecanismo especial para manejar estos nombres. Hasta donde concierne al sistema de
directorio, estas son simplemente cadenas ASCII ordinarias.
6. BASES DE DATOS.
Un ordenador nos serviría de poco si perdiera toda la información al desconectarlo de la
red eléctrica o su capacidad de almacenamiento estuviera limitada a la memoria RAM de
que se dispusiera.
Un elemento fundamental en todo computador es el almacenamiento secundario, que
guarda información aún cuando no reciba suministro eléctrico y cuya capacidad es muy
superior a la de la memoria principal del ordenador.
En este tema vamos a ver nuevas estructuras de datos y sistemas software (distintas al
sistema de archivos) que permiten el tratamiento eficiente y organizado de grandes
cantidades de información.
6.1. Concepto de Base de Datos y definiciones generales.
En cualquier tipo de organización se dedican considerables recursos a la recolección,
clasificación, procesamiento e intercambio de datos basados en procedimientos bien
establecidos con vistas a alcanzar objetivos específicos. Los finales de los sesenta fueron
22
Fundamentos de Informática Sistemas Operativos. Archivos y Bases de Datos.
testigos del desarrollo de la tecnología de manejo de datos con las implementaciones de los
sistemas de bases de datos, los cuales fueron concebidos como un conjunto de datos y un
conjunto de programas de aplicación utilizados para acceder a los datos y actualizarlos.
A lo largo de estos más de treinta años esta tecnología ha estado continuamente
actualizándose. Los primeros sistemas estuvieron basados en el uso de archivos separados
(ISAM y VSAM). Posteriormente surgieron los sistemas manejadores de bases de datos,
que son sistemas software centralizados o distribuidos que ofrecen facilidades para la
definición de bases de datos, selección de estructuras de datos y búsqueda de datos, de
forma interactiva o mediante un lenguaje de programación. Los primeros DBMS seguían el
modelo jerárquico, que organiza la información a base de árboles (IMS, 2000, ...), les
siguieron los sistemas basados en el modelo de red, que organiza la información utilizando
grafos (IDS, TOTAL, IDMS, ...). La siguiente generación estuvo marcada por el
advenimiento de la tecnología de las bases de datos relacionales (Codd, 1970), las cuales se
han ido implantando paulatinamente en prácticamente todos los sistemas debido sobre todo
a su sencillez conceptual.
Cuando en nuestra aplicación estamos trabajando con archivos, podemos encontrarnos con
una serie de problemas como pueden ser los siguientes:
• Dificultad de Mantenimiento: La realización de actualizaciones puede resultar
costosa cuando se tiene información parcialmente duplicada en varios archivos;
incluso puede que éstos tengan organización diferente. Si al tener que actualizar un
determinado dato, no se actualiza en todos los lugares donde se encuentra se
producen inconsistencias.
• Redundancia: Este problema consiste en tener datos que no aportan información, ya
que se pueden deducir de otros. El caso trivial de redundancia es tener el mismo
dato almacenado en varios sitios.
• Rigidez de búsqueda: AI archivo se le va a dar una determinada organización de
acuerdo con los tipos de accesos que se creían más frecuentes, pero puede ocurrir
que se necesiten otros modos de acceso y sean difíciles de llevar a cabo sobre la
organización ya existente.
• Dependencia con los programas: Las relaciones entre los datos almacenados en los
ficheros no están patentes en éstos. Es el programa que los utiliza el que se encarga
de ello; recibe una cadena de caracteres y la información de dónde comienza un
campo, donde acaba, su tipo, etc..., está controlada y es inherente al programa;
cualquier cambio en la estructura del archivo implicaría una modificación de los
programas que los tratan.
• Confidencialidad y seguridad: La confidencialidad de los datos consiste en evitar la
consulta de éstos a determinados usuarios. Otro aspecto que debe garantizarse es la
seguridad de los datos almacenados de forma que éstos no puedan ser modificados
por personas no autorizadas.
Para resolver estos problemas surgen las bases de datos. A continuación detallamos
algunos conceptos importantes.
Una Base de Datos es un conjunto de datos y sus relaciones (datos interrelacionados),
23
Fundamentos de Informática Sistemas Operativos. Archivos y Bases de Datos.
almacenados con la mínima redundancia y de manera que se pueda acceder a ellos
eficientemente por parte de varias aplicaciones y usuarios. Una base de datos se concibe
como un fondo informatizado de información, donde cualquier elemento de cualquier
organización puede acceder a esta información independientemente de dónde proceda la
información y cuál vaya a ser su uso.
Sistema de Base de Datos: es el sistema que se ocupa de mantener la información y hacer
que esté disponible para el usuario. Consta de cuatro elementos:
• Datos: deben almacenarse de manera integrada (recoger toda la información con la
minima redundancia) y deben ser compartidos (accesibles a todas las aplicaciones).
• Hardware: está formado por los dispositivos donde reside la base de datos
(ordenadores, discos, ...). Si los datos residen en varios ordenadores interconectados
se dice que la base de datos es distribuida (el hecho de ser distribuida debe ser
transparente a los usuarios).
• Software: es el Sistema Manejador de la Base de Datos (DBMS). Se utiliza para
definir, mantener y manipular la base de datos.
• Usuarios: se pueden considerar tres tipos distintos de usuarios del sistema de base
de datos:
- Usuario final: emplea la base de datos para un uso no informático de la
información. Suele realizar consultas y las modificaciones que hacen están a
nivel de dato pero nunca de estructuras más grandes.
- Programador de aplicaciones: diseña y gestiona los programas que utilizan
datos de la base de datos. Sí se hace un uso informático de los datos.
También se trabaja a nivel de dato.
- Administrador/es de la base de datos: es el encargado de diseñar la
estructura de datos que soporta la base de datos. Trabaja a nivel de
información.
Las ventajas principales del uso de bases de datos son:
• Compacidad: no se van a duplicar los ficheros.
• Rapidez: al utilizar estructuras ordenadas y bien diseñadas.
• Facilidad de trabajo: reusabilidad de los datos que están en todo momento a
disposición.
• Actualización: al no estar los datos duplicados se pueden actualizar con facilidad.
• Menor redundancia.
• Eliminación de inconsistencias: consecuencia de lo anterior.
24
Fundamentos de Informática Sistemas Operativos. Archivos y Bases de Datos.
• Compartición de datos.
• Seguridad y chequeo de errores.
6.2. El administrador de la base de datos (DBA).
El administrador de la base de datos (DBA) es la persona que está encargada del control
general del sistema de base de datos. Entre sus muchas funciones están:
• Decidir el contenido de la información en la base de datos: debe identificar las
entidades y la información importante. Tiene que realizar el esquema conceptual, a
este proceso se le denomina diseño lógico. A partir de un estudio de las necesidades
de la empresa, obtiene items, atributos y relaciones entre items. El esquema
conceptual se escribe utilizando el DDL.
• Decidir la estructura de almacenamiento y la estrategia de acceso: decide cómo se
almacenan los datos y define su representación interna. A esta fase se le denomina
diseño físico de la base de datos. También tiene que decidir la correspondencia
conceptual/interna.
• Conexión con los usuarios: debe diseñar los esquemas externos y las
correspondencias externa/conceptual que sean necesarias, tanto para usuarios
terminales como para programadores de aplicaciones.
• Definir aspectos de seguridad e integridad: control de acceso e integridad de la
información.
• Definir procedimientos de copias de respaldo (backups) y recuperación: se suelen
tener copias de seguridad de la base de datos de manera que si se produce alguna
pérdida importante de información se pueda recuperar el sistema a partir de la
última copia.
• Control de transacciones (unidades de programa cuya ejecución debe ser atómica).
• Optimización del rendimiento de la base de datos: es responsable de que la base de
datos funcione de la mejor forma posible, realizando para ello los ajustes que vayan
siendo necesarios.
Para realizar todas estas funciones, el DBA dispone de una serie de herramientas software
y estructuras de información acerca de la base (ej: diccionario de datos, procedimientos
estadísticos de medida de rendimiento, ...).
6.3. Bases de Datos Relacionales.
En este tipo de bases de datos (las más utilizadas actualmente) los ítems (objetos del
mundo) y las conexiones (relaciones entre esos objetos) se representan por tablas, o mejor
dicho, por unas tablas especiales llamadas relaciones.
25
Fundamentos de Informática Sistemas Operativos. Archivos y Bases de Datos.
A las filas de estas tablas se les llaman tuplas y a las columnas atributos. Un concepto
importante es el de dominio, que denomina el conjunto de valores que puede tomar un
determinado atributo.
Toda la información, tanto entidades como conexiones, se representa de manera uniforme,
lo que implica uniformidad en los operadores (inserción, borrado y actualización).
A continuación se muestra un ejemplo de una base de datos relacional para la gestión de un
taller mecánico.
Los conceptos fundamentales a tener en cuenta en las bases de datos relacionales son el de
llave primaria y llave externa.
Llamamos llave candidata de una relación (o simplemente llave) al atributo o conjunto de
atributos que tienen la propiedad de identificar unívocamente a una tupla dentro de la
relación.
Las llaves constituyen el mecanismo de direccionamiento a nivel de tuplas básico en un
sistema relacional, es decir, es el único modo, garantizado por el sistema, de localizar
alguna tupla específica.
Llaves candidatas de esta relación son:
• {M#}
• {status,puesto} si nos dicen que no puede haber dos mecánicos del mismo puesto y
con el mismo status.
26
Fundamentos de Informática Sistemas Operativos. Archivos y Bases de Datos.
Una llave candidata debe cumplir dos condiciones:
• Unicidad: no pueden existir dos tupías con el mismo valor en todos los atributos
que forman la llave candidata.
• Minimidad: no existe ningún subconjunto de la llave que cumpla la regla de
unicidad.
En el ejemplo anterior, por tanto, el conjunto {M#, Nombre}, aunque cumple la primera
propiedad de llave candidata, no cumple la propiedad de minimidad, ya que contiene al
subconjunto {M#} que es llave candidata, y por tanto no se puede considerar como tal.
Ejemplo: Relación de Trabajos:
En este ejemplo, ningún atributo por sí mismo es llave candidata. Una llave candidata es
{M#,Matrícula}, y además es la más pequeña.
Llave primaria es una de las llaves candidatas. De entre todas las llaves candidatas, se elige
una como llave primaria. Al resto de llaves se les llaman llaves alternativas.
Llave externa. Dada una relación R1, llamamos llave externa de R1, a cualquier atributo o
conjunto de atributos de R1 que sea a su vez llave primaria de otra relación R2.
Debe existir una concordancia entre los valores de la llave externa en ambas relaciones, ya
que si no se darían problemas de integridad.
Ejemplo: si consideramos las relaciones de los dos ejemplos anteriores, el atributo
{M#} de la relación de Trabajos es una llave externa respecto a la relación de
Mecánicos, ya que {M#} es llave primaria de esta última relación. La concordancia
que debe existir entre los valores de la llave externa se refiere al hecho de que todo
valor de M# que aparezca en la relación de Trabajos debe existir en la relación de
Mecánicos, ya que si no estuviera, estaríamos diciendo que existe un trabajo de un
mecánico inexistente, esto es, tendríamos un problema de integridad.
El dominio de los atributos de la !lave externa deben coincidir en ambas relaciones. No es
necesario que la llave externa sea también la llave primaria de la relación (R1), como
puede deducirse del ejemplo anterior (llave de Trabajos es {M#,Matrícula}).
Hay que tener en cuenta que R1 y R2 pueden ser la misma relación, es decir, una relación
podría incluir una llave externa cuyos valores (no nulos) deben concordar con los valores
de la llave primaria de esa misma relación. Un ejemplo típico es la relación de Empleados,
donde la llave primaria es Num_Emp# y existe un atributo Num_Emp_Sup# en la relación
para identificar al superior de ese empleado. Este último atributo es llave externa respecto a
Num_Emp#.
27
Fundamentos de Informática Sistemas Operativos. Archivos y Bases de Datos.
Las llaves externas son el mecanismo fundamental para relacionar unas tablas con otras.
6.4. La arquitectura Cliente/Servidor.
En la arquitectura cliente/servidor, la aplicación de base de datos está separada en dos
partes: la porción cliente y la porción servidor. El cliente ejecuta la aplicación que accede a
la información de la base de datos e interactúa principalmente con el usuario a través del
teclado, la pantalla y el ratón. El servidor ejecuta el gestor de la base de datos y maneja las
funciones requeridas para el acceso concurrente a los datos compartidos de la base de
datos.
Aunque la aplicación cliente y el servidor pueden ser ejecutados en el mismo ordenador,
suele ser más efectivo y eficiente cuando la(s) parte(s) cliente(s) y el servidor se ejecutan
en máquinas diferentes conectadas a través de una red.
En una base de datos distribuida, un servidor podría necesitar acceder a una base de datos
situada en otro servidor. En este caso, el servidor que pide la información es un cliente.
El procesamiento distribuido es el uso de más de un procesador para dividir el
procesamiento de una tarea individual. A continuación se exponen algunos ejemplos de
procesamiento distribuido:
• el cliente y el servidor están situados en diferentes máquinas; estas máquinas se
conectan a través de una red.
Figura 2. Arquitectura Cliente-Servidor en red.
• una única máquina tiene más de un procesador, y los diferentes procesadores
separan la ejecución de un cliente de la del servidor.
28
Fundamentos de Informática Sistemas Operativos. Archivos y Bases de Datos.
Figura 3. Arquitectura Cliente-Servidor en un solo ordenador.
Algunos beneficios de la arquitectura cliente/servidor son:
• la aplicación cliente no es responsable de realizar ningún procesamiento de datos.
Las aplicaciones clientes se concentran en recoger datos de entrada de los usuarios,
pedir los datos deseados al servidor, y entonces analizar y presentar estos datos
usando las capacidades de visualización de la estación de trabajo o terminal cliente.
• la aplicación cliente puede ser diseñada con independencia de la localización física
de los datos. Si los datos se mueven o distribuyen a otros servidores, la aplicación
continúa su funcionamiento con mínimas o ninguna modificación.
• el servidor puede explotar características como la multitarea y memoria compartida
de los sistemas operativos subyacentes. Como resultado, las aplicaciones cliente
obtienen un alto grado de concurrencia, integridad de los datos y eficiencia.
• las estaciones de trabajo o terminales cliente pueden ser optimizadas para la
presentación de los datos (con capacidades gráficas, ratón, ..), mientras que el
servidor puede ser optimizado para el procesamiento y el almacenamiento de los
datos (gran cantidad de memoria y espacio de disco).
• si es necesario, el servidor puede ser ampliado (escalado). De la misma forma que
el sistema va creciendo, se pueden añadir múltiples servidores para distribuir la
carga de procesamiento distribuido a través de la red (escalado horizontal). De
forma alternativa, se puede remplazar la máquina que soporta al servidor por una
máquina de mayor capacidad (escalado vertical). En ambos casos, todos los datos y
las aplicaciones se mantienen con pocas o ninguna modificación (si el servidor es
portable).
• en los entornos de red, los datos compartidos son almacenados en los servidores, en
vez de estar en todos los ordenadores del sistema. Esto facilita y hace más eficiente
el manejo de los accesos concurrentes.
• en los entornos de red, las aplicaciones cliente realizan las peticiones al servidor
29
Fundamentos de Informática Sistemas Operativos. Archivos y Bases de Datos.
usando sentencias SQL. Una vez recibidas, las sentencias SQL son procesadas por
el servidor, y los resultados se devuelven a la aplicación cliente. El tráfico en la red
se mantiene al mínimo, ya que sólo las peticiones y los resultados se mandan a
través de la red.
30

Más contenido relacionado

La actualidad más candente

Sistemas operativos
Sistemas operativos Sistemas operativos
Sistemas operativos Sebas Garcia
 
Sistemas operativos diapo eduar
Sistemas operativos diapo eduarSistemas operativos diapo eduar
Sistemas operativos diapo eduarluzmary25
 
Concepto y definición de sistemas operativos
Concepto y definición de sistemas operativosConcepto y definición de sistemas operativos
Concepto y definición de sistemas operativosfrankSanVicen94
 
A vega
A vegaA vega
A vegaESPOCH
 
Sistemas operativos
Sistemas operativosSistemas operativos
Sistemas operativosNICRISGE
 
Sistemas operativos
Sistemas operativosSistemas operativos
Sistemas operativosNICRISGE
 
Software Joseph1812
Software Joseph1812Software Joseph1812
Software Joseph1812Joseph1218
 
Trabajo de sistemas operativos en word
Trabajo de sistemas operativos en wordTrabajo de sistemas operativos en word
Trabajo de sistemas operativos en wordladyaleja27
 
Qué es un sistema operativo
Qué es un sistema operativoQué es un sistema operativo
Qué es un sistema operativoMaryFeer_94
 
Sistemas 110531155754-phpapp02
Sistemas 110531155754-phpapp02Sistemas 110531155754-phpapp02
Sistemas 110531155754-phpapp02pepita_11
 
Introduccion a los sistemas operativos
Introduccion a los sistemas operativosIntroduccion a los sistemas operativos
Introduccion a los sistemas operativosFriky Equis De
 
Sistemas Operativos
Sistemas OperativosSistemas Operativos
Sistemas OperativosLidia
 
1.-Sistemas operativos
1.-Sistemas operativos1.-Sistemas operativos
1.-Sistemas operativosAlexa Avila
 

La actualidad más candente (18)

Sistemas operativos
Sistemas operativos Sistemas operativos
Sistemas operativos
 
Sistemas operativos diapo eduar
Sistemas operativos diapo eduarSistemas operativos diapo eduar
Sistemas operativos diapo eduar
 
Concepto y definición de sistemas operativos
Concepto y definición de sistemas operativosConcepto y definición de sistemas operativos
Concepto y definición de sistemas operativos
 
P1
P1P1
P1
 
A vega
A vegaA vega
A vega
 
Sistemas operativos
Sistemas operativosSistemas operativos
Sistemas operativos
 
Sistemas operativos
Sistemas operativosSistemas operativos
Sistemas operativos
 
Software Joseph1812
Software Joseph1812Software Joseph1812
Software Joseph1812
 
Trabajo de sistemas operativos en word
Trabajo de sistemas operativos en wordTrabajo de sistemas operativos en word
Trabajo de sistemas operativos en word
 
Qué es un sistema operativo
Qué es un sistema operativoQué es un sistema operativo
Qué es un sistema operativo
 
Dii4%2 B Sistema%2 B Operativo
Dii4%2 B Sistema%2 B OperativoDii4%2 B Sistema%2 B Operativo
Dii4%2 B Sistema%2 B Operativo
 
Sistemas 110531155754-phpapp02
Sistemas 110531155754-phpapp02Sistemas 110531155754-phpapp02
Sistemas 110531155754-phpapp02
 
Sistemas operativos
Sistemas operativosSistemas operativos
Sistemas operativos
 
Introduccion a los sistemas operativos
Introduccion a los sistemas operativosIntroduccion a los sistemas operativos
Introduccion a los sistemas operativos
 
Sistemas fernanda
Sistemas fernandaSistemas fernanda
Sistemas fernanda
 
2 conceptos basicos
2 conceptos basicos2 conceptos basicos
2 conceptos basicos
 
Sistemas Operativos
Sistemas OperativosSistemas Operativos
Sistemas Operativos
 
1.-Sistemas operativos
1.-Sistemas operativos1.-Sistemas operativos
1.-Sistemas operativos
 

Destacado (20)

Sistemas Operativos
Sistemas OperativosSistemas Operativos
Sistemas Operativos
 
Esquema resumen
Esquema resumenEsquema resumen
Esquema resumen
 
Definitivo
DefinitivoDefinitivo
Definitivo
 
Inf fpb-imagenpersonal
Inf fpb-imagenpersonalInf fpb-imagenpersonal
Inf fpb-imagenpersonal
 
Participación estudiantil
Participación estudiantilParticipación estudiantil
Participación estudiantil
 
Horarios jornadas de acogida
Horarios jornadas de acogidaHorarios jornadas de acogida
Horarios jornadas de acogida
 
1 el ordenador y sus componentes
1 el ordenador y sus componentes1 el ordenador y sus componentes
1 el ordenador y sus componentes
 
El ordenador personal
El ordenador personalEl ordenador personal
El ordenador personal
 
Participación estudiantil
Participación estudiantilParticipación estudiantil
Participación estudiantil
 
Deteccion de incendios
Deteccion de incendiosDeteccion de incendios
Deteccion de incendios
 
Deteccion de incendios
Deteccion de incendiosDeteccion de incendios
Deteccion de incendios
 
Presentacion u2
Presentacion u2Presentacion u2
Presentacion u2
 
Curso tdt rover
Curso tdt roverCurso tdt rover
Curso tdt rover
 
2 conex-alarmas
2 conex-alarmas2 conex-alarmas
2 conex-alarmas
 
Presentacion u1
Presentacion u1Presentacion u1
Presentacion u1
 
Knx siemens draft v7
Knx siemens draft v7Knx siemens draft v7
Knx siemens draft v7
 
1 intro-alarmas
1 intro-alarmas1 intro-alarmas
1 intro-alarmas
 
ICT3
ICT3ICT3
ICT3
 
Presentacion x10 siemens1
Presentacion x10 siemens1Presentacion x10 siemens1
Presentacion x10 siemens1
 
ICT1
ICT1ICT1
ICT1
 

Similar a Sistemas Operativos

Sistemas Operativos
Sistemas OperativosSistemas Operativos
Sistemas OperativosNoeljg69
 
Unidad 1 Sistemas Operativos
Unidad 1 Sistemas OperativosUnidad 1 Sistemas Operativos
Unidad 1 Sistemas OperativosNoeljg69
 
Trabajo so
Trabajo soTrabajo so
Trabajo soNoeljg69
 
Trabajo de sistemas operativos
Trabajo de sistemas operativosTrabajo de sistemas operativos
Trabajo de sistemas operativoslady9327
 
Sango edison sistemas operativos
Sango edison sistemas operativosSango edison sistemas operativos
Sango edison sistemas operativosEdySon Teck
 
Definicion de sistema de computo
Definicion de sistema de computoDefinicion de sistema de computo
Definicion de sistema de computoAnna Aburto
 
Sistemas operativos123.
Sistemas operativos123.Sistemas operativos123.
Sistemas operativos123.Javier Cp
 
Sistemas operativos propio!
Sistemas operativos propio!Sistemas operativos propio!
Sistemas operativos propio!an32
 
Dii4+Sistema+Operativo
Dii4+Sistema+OperativoDii4+Sistema+Operativo
Dii4+Sistema+OperativoMENOSCAL
 
Sistemas operativos
Sistemas operativosSistemas operativos
Sistemas operativosJavier Cp
 
Sistema operativo
Sistema operativoSistema operativo
Sistema operativoarrones
 
Sistemas operativos-1-michael-1998
Sistemas operativos-1-michael-1998Sistemas operativos-1-michael-1998
Sistemas operativos-1-michael-1998Michael Lozano
 

Similar a Sistemas Operativos (20)

Sistemas Operativos
Sistemas OperativosSistemas Operativos
Sistemas Operativos
 
Unidad 1 Sistemas Operativos
Unidad 1 Sistemas OperativosUnidad 1 Sistemas Operativos
Unidad 1 Sistemas Operativos
 
Trabajo so
Trabajo soTrabajo so
Trabajo so
 
Trabajo de sistemas operativos
Trabajo de sistemas operativosTrabajo de sistemas operativos
Trabajo de sistemas operativos
 
1. sistemas operativos
1.  sistemas operativos1.  sistemas operativos
1. sistemas operativos
 
Capitulo III
Capitulo IIICapitulo III
Capitulo III
 
Sango edison sistemas operativos
Sango edison sistemas operativosSango edison sistemas operativos
Sango edison sistemas operativos
 
Sistema operativos
Sistema operativosSistema operativos
Sistema operativos
 
que es un sistema operativo
 que es un sistema operativo que es un sistema operativo
que es un sistema operativo
 
Trabajo de programacion
Trabajo de programacionTrabajo de programacion
Trabajo de programacion
 
Definicion de sistema de computo
Definicion de sistema de computoDefinicion de sistema de computo
Definicion de sistema de computo
 
Sistemas operativos123.
Sistemas operativos123.Sistemas operativos123.
Sistemas operativos123.
 
Sistemas operativos propio!
Sistemas operativos propio!Sistemas operativos propio!
Sistemas operativos propio!
 
P1
P1P1
P1
 
Dii4+Sistema+Operativo
Dii4+Sistema+OperativoDii4+Sistema+Operativo
Dii4+Sistema+Operativo
 
Sistemas operativos
Sistemas operativosSistemas operativos
Sistemas operativos
 
Trabajosofware
TrabajosofwareTrabajosofware
Trabajosofware
 
Sistema operativo
Sistema operativoSistema operativo
Sistema operativo
 
Sistemas operativos-1-michael-1998
Sistemas operativos-1-michael-1998Sistemas operativos-1-michael-1998
Sistemas operativos-1-michael-1998
 
Sistemas fernanda
Sistemas fernandaSistemas fernanda
Sistemas fernanda
 

Más de ies valledeltietar

El divertido mundo de los ángulos. presentación (1)
El divertido mundo de los ángulos. presentación (1)El divertido mundo de los ángulos. presentación (1)
El divertido mundo de los ángulos. presentación (1)ies valledeltietar
 
Sistema de enumeración egipcio 1
Sistema de enumeración egipcio 1Sistema de enumeración egipcio 1
Sistema de enumeración egipcio 1ies valledeltietar
 
Libros de-texto-definitivo-2015-16-(1)
Libros de-texto-definitivo-2015-16-(1)Libros de-texto-definitivo-2015-16-(1)
Libros de-texto-definitivo-2015-16-(1)ies valledeltietar
 
Pruebas extraordinarias-de-septiembre-2015 definitivo
Pruebas extraordinarias-de-septiembre-2015 definitivoPruebas extraordinarias-de-septiembre-2015 definitivo
Pruebas extraordinarias-de-septiembre-2015 definitivoies valledeltietar
 
Información Formación Profesional Básica en Peluquería y Estética
Información Formación Profesional Básica en Peluquería y EstéticaInformación Formación Profesional Básica en Peluquería y Estética
Información Formación Profesional Básica en Peluquería y Estéticaies valledeltietar
 
información FPB electriciada y electrónica
información FPB electriciada y electrónicainformación FPB electriciada y electrónica
información FPB electriciada y electrónicaies valledeltietar
 
Información general FPB- electricidad
Información general FPB- electricidadInformación general FPB- electricidad
Información general FPB- electricidadies valledeltietar
 
Formación Profesional Básica
Formación Profesional BásicaFormación Profesional Básica
Formación Profesional Básicaies valledeltietar
 
Bachilleratos oferta educativa
Bachilleratos oferta educativaBachilleratos oferta educativa
Bachilleratos oferta educativaies valledeltietar
 
Formación Profesional Básica
Formación Profesional BásicaFormación Profesional Básica
Formación Profesional Básicaies valledeltietar
 
Mejoras realizadas en las instalaciones del centro
Mejoras realizadas en las instalaciones del centroMejoras realizadas en las instalaciones del centro
Mejoras realizadas en las instalaciones del centroies valledeltietar
 
CFGM "Instalaciones de Telecomunicaciones"
CFGM "Instalaciones de Telecomunicaciones"CFGM "Instalaciones de Telecomunicaciones"
CFGM "Instalaciones de Telecomunicaciones"ies valledeltietar
 
Estructura de un Ordenador Personal
Estructura de un Ordenador PersonalEstructura de un Ordenador Personal
Estructura de un Ordenador Personalies valledeltietar
 
Introduccion a las redes de ordenadores
Introduccion  a las redes de ordenadoresIntroduccion  a las redes de ordenadores
Introduccion a las redes de ordenadoresies valledeltietar
 
Microprocesadorores: INTEL o AMD
Microprocesadorores: INTEL o AMDMicroprocesadorores: INTEL o AMD
Microprocesadorores: INTEL o AMDies valledeltietar
 

Más de ies valledeltietar (20)

El divertido mundo de los ángulos. presentación (1)
El divertido mundo de los ángulos. presentación (1)El divertido mundo de los ángulos. presentación (1)
El divertido mundo de los ángulos. presentación (1)
 
Sistema de enumeración egipcio 1
Sistema de enumeración egipcio 1Sistema de enumeración egipcio 1
Sistema de enumeración egipcio 1
 
Libros de-texto-definitivo-2015-16-(1)
Libros de-texto-definitivo-2015-16-(1)Libros de-texto-definitivo-2015-16-(1)
Libros de-texto-definitivo-2015-16-(1)
 
Pruebas extraordinarias-de-septiembre-2015 definitivo
Pruebas extraordinarias-de-septiembre-2015 definitivoPruebas extraordinarias-de-septiembre-2015 definitivo
Pruebas extraordinarias-de-septiembre-2015 definitivo
 
Plan tic
Plan ticPlan tic
Plan tic
 
Fpb informacion general
Fpb informacion generalFpb informacion general
Fpb informacion general
 
Información Formación Profesional Básica en Peluquería y Estética
Información Formación Profesional Básica en Peluquería y EstéticaInformación Formación Profesional Básica en Peluquería y Estética
Información Formación Profesional Básica en Peluquería y Estética
 
información FPB electriciada y electrónica
información FPB electriciada y electrónicainformación FPB electriciada y electrónica
información FPB electriciada y electrónica
 
Jornada puertas abiertas 2015
Jornada  puertas abiertas 2015Jornada  puertas abiertas 2015
Jornada puertas abiertas 2015
 
Información general FPB- electricidad
Información general FPB- electricidadInformación general FPB- electricidad
Información general FPB- electricidad
 
Formación Profesional Básica
Formación Profesional BásicaFormación Profesional Básica
Formación Profesional Básica
 
Bachilleratos oferta educativa
Bachilleratos oferta educativaBachilleratos oferta educativa
Bachilleratos oferta educativa
 
Acogida a los padres
Acogida a los padresAcogida a los padres
Acogida a los padres
 
Formación Profesional Básica
Formación Profesional BásicaFormación Profesional Básica
Formación Profesional Básica
 
Mejoras realizadas en las instalaciones del centro
Mejoras realizadas en las instalaciones del centroMejoras realizadas en las instalaciones del centro
Mejoras realizadas en las instalaciones del centro
 
CFGM "Instalaciones de Telecomunicaciones"
CFGM "Instalaciones de Telecomunicaciones"CFGM "Instalaciones de Telecomunicaciones"
CFGM "Instalaciones de Telecomunicaciones"
 
Estructura de un Ordenador Personal
Estructura de un Ordenador PersonalEstructura de un Ordenador Personal
Estructura de un Ordenador Personal
 
Sistemas Operativos
Sistemas OperativosSistemas Operativos
Sistemas Operativos
 
Introduccion a las redes de ordenadores
Introduccion  a las redes de ordenadoresIntroduccion  a las redes de ordenadores
Introduccion a las redes de ordenadores
 
Microprocesadorores: INTEL o AMD
Microprocesadorores: INTEL o AMDMicroprocesadorores: INTEL o AMD
Microprocesadorores: INTEL o AMD
 

Sistemas Operativos

  • 1. Fundamentos de Informática Sistemas Operativos. Archivos y Bases de Datos. SISTEMAS OPERATIVOS. ARCHIVOS Y BASES DE DATOS. Un ordenador es una máquina que permite procesar la información de forma rápida y automática. Sin embargo, la utilización de un ordenador no es una tarea sencilla, ya que el modo en que podemos comunicarnos con él, es decir, su interfaz, es extraña y compleja al pensamiento humano. Se entiende por interfaz de un objeto la parte del objeto accesible desde su exterior, que permite utilizarlo y comunicarse con él. Por ejemplo, un reloj digital presenta una interfaz constituida por una serie de botones que permiten modificar su estado interno cambiando la hora o programando una alarma, y una pantalla y un dispositivo sonoro por el que se puede consultar su estado actual (consultar la hora u oír la expiración de una alarma). Para usar un reloj digital no es preciso conocer su funcionamiento interno, sólo hay que saber utilizar su interfaz. La interfaz de un ordenador viene determinada por un conjunto, normalmente pequeño, de instrucciones máquina que permiten utilizar los dispositivos físicos o hardware (CPU, memoria y periféricos) de los que se compone. Si los usuarios de un ordenador tuvieran que utilizar el hardware a través de sus instrucciones máquina se escribirían muy pocos programas, y estos no podrían resolver tareas excesivamente complejas, pues el uso de los dispositivos físicos del ordenador mediante estas instrucciones es complejo, tedioso, y está lleno de detalles. La solución que se ha ido adoptando con el tiempo para salvar esta complejidad es la de escribir capas o niveles de software. Una capa de software de nivel i es un conjunto de programas que trabajan directamente con la interfaz de su capa de nivel inferior (i - 1), y presenta a su capa de nivel superior (i + 1) una interfaz que permite utilizar la interfaz de la capa de nivel i -1 de una forma más sencilla. Se dice que la capa de software de nivel i proporciona una máquina virtual o extendida a la capa de nivel i + 1 que oculta la interfaz de la capa i - 1. Una capa de software de nivel i puede construirse de forma que permita a la capa de nivel i + 1 utilizar también la interfaces de sus niveles inferiores (i -1, i - 2, ...), o puede construirse de forma que obligue a utilizar sólamente la interfaz de la capa i. El sistema operativo es la capa de software más importante de un sistema informático. 1. DEFINICIÓN DE SISTEMA OPERATIVO. Se puede definir a un sistema operativo como un conjunto de programas que controlan directamente los recursos hardware o físicos de un ordenador (CPU, memoria principal y periféricos) proporcionando una máquina virtual más fácil de utilizar que el hardware subyacente. El sistema operativo es la capa de software más baja de un ordenador, como se refleja en la figura 1. 1
  • 2. Fundamentos de Informática Sistemas Operativos. Archivos y Bases de Datos. Figura 1. Niveles hardware y software de un ordenador. En esta figura se observa cómo el sistema operativo es la única capa que trabaja directamente con el hardware. Por encima del sistema operativo se encuentra una capa formada por traductores, editores de texto e intérpretes de órdenes. Los dos primeros tipos de programas son útiles para crear un nivel de abstracción cómodo para el desarrollo de programas, la utilidad de los intérpretes de órdenes se verá en un apartado posterior. La unión de los programas de las dos capas intermedias de la figura conforman el software de sistemas de un ordenador. Por último, está la capa constituida por los programas de aplicación, estos programas no dan servicio a otros programas, su finalidad es resolver problemas concretos. Son los programas que suele ejecutar un usuario no informático. Pertenecen a esta capa los procesadores de texto, hojas de cálculo, agendas electrónicas, juegos, etc. En general, se puede decir que los sistemas operativos realizan dos funciones: • Constitución de una máquina virtual o extendida. • Mediante esta función, el sistema operativo ofrece a sus capas superiores una serie de servicios (que constituyen la interfaz del sistema operativo) que permiten utilizar de una forma más sencilla el hardware del ordenador. • Gestión de los recursos físicos del ordenador. Los recursos físicos de un ordenador vienen constituidos por la CPU, la memoria principal y los periféricos. El sistema operativo es responsable de que estos recursos se utilicen eficiente y coherentemente. La mayoría de los sistemas operativos gestionan la CPU de manera que permiten que varios programas se encuentren en un estadio intermedio entre su inicio y su finalización en un instante dado (se ahondará sobre esto más adelante en este tema). Estos programas hacen uso de los servicios proporcionados por el sistema operativo para utilizar los recursos físicos del ordenador (por ejemplo, para imprimir algo en una impresora). En un momento dado puede que varios programas deseen utilizar un mismo recurso, el sistema operativo debe arbitrar las solicitudes de los recursos de forma que no 2
  • 3. Fundamentos de Informática Sistemas Operativos. Archivos y Bases de Datos. se produzcan conflictos en su uso. Por ejemplo, no debe permitir que dos programas utilicen a la vez una impresora, pues sus salidas se entremezclarían en el papel. Para poder lograr esto, el sistema operativo se apoya en el hardware, forzando a los programas de las capas superiores (ver figura 1) a que tengan que utilizar sus servicios, y no puedan utilizar directamente los recursos del ordenador. Con esto, el sistema operativo garantiza que todo intento de uso de un recurso hardware debe hacerse a través de la solicitud de uno de sus servicios, pudiendo así rechazar solicitudes pueden causar problemas de utilización de un recurso, por ejemplo, el permitir a un programa imprimir en una impresora que está siendo utilizada por otro programa. 2. LA INTERFAZ DEL SISTEMA OPERATIVO. El conjunto de todos los servicios ofrecidos por el sistema operativo constituyen la interfaz del sistema operativo, es decir, la forma de comunicarse con él. A estos servicios se les llama también llamadas al sistema. En este apartado se explica cómo se pueden solicitar desde un lenguaje de alto nivel. Una solicitud requiere de uno o más parámetros. El primer parámetro es el tipo de servicio requerido; los restantes parámetros, si los hay, dependen del tipo de servicio. Normalmente, casi todos los servicios tienen un parámetro mediante el cual el sistema operativo informa de si ha tenido éxito o no la solicitud. Veamos un ejemplo, la mayoría de los sistemas operativos ofrecen un servicio que sirve para crear un directorio en un dispositivo de almacenamiento secundario, la solicitud requiere de un parámetro para especificar que se desea utilizar el servicio que permite crear un directorio, un segundo parámetro para especificar el directorio que se desea crear y un tercer parámetro mediante el cual el sistema operativo indica si se pudo crear o no el directorio. Los servicios del sistema operativo se solicitan desde el código de los programas. Los lenguajes de alto nivel disponen de una o varias rutinas (una rutina es un término con el que se designa genéricamente a una función o un procedimiento, es decir, un término análogo al de subalgoritmo en pseudocódigo) por cada servicio proporcionado por el sistema operativo. Si se programa en un lenguaje de alto nivel la solicitud de un servicio del sistema operativo se realiza llamando a una de estas rutinas. Los parámetros del servicio se especifican mediante los parámetros actuales con los que se invoca a la rutina, pudiendo ser estos parámetros de entrada, si el servicio precisa información (como el nombre de un directorio en el ejemplo anterior), o de salida, si el servicio devuelve información (como si se pudo crear o no el directorio en el ejemplo anterior). Mediante el nombre de la rutina se especifica implícitamente el parámetro del tipo de servicio. Cada vez que se llame a una de estas rutinas se está invocando al sistema operativo, esto es, se ejecutan instrucciones de algún programa del sistema operativo que proporciona el servicio solicitado. Cuando el sistema operativo finaliza el servicio la rutina devuelve el control. En apartados posteriores de este tema se verán más ejemplos de servicios proporcionados por el sistema operativo. 2.1. Visión del usuario final de los servicios del sistema 3
  • 4. Fundamentos de Informática Sistemas Operativos. Archivos y Bases de Datos. operativo. Un "usuario final" es aquel que utiliza el ordenador solamente para ejecutar programas de aplicación que le proporcionen ciertos cálculos. No sabe, y probablemente no le interesa, programar. Así pues, un usuario final utilizará los servicios del sistema operativo indirectamente, a través de las solicitudes de servicios que realizan los programas que ejecuta. A continuación se explica el proceso que se sigue para que un usuario pueda ejecutar de una forma fácil y cómoda los programas. Cuando un usuario se conecta a un ordenador, el sistema operativo inicia la ejecución de un programa, llamado intérprete de órdenes, que se va a encargar de controlar las peticiones del usuario conectado a dicho ordenador. El intérprete de órdenes es un programa que muestra un indicador (en inglés prompt) formado por varios caracteres. Por ejemplo, el intérprete de órdenes de MS DOS (llamado COMMAND.COM) muestra un indicador que suele estar formado por la unidad de disco activa y el directorio de trabajo de esa unidad. Si la unidad activa es la C y el directorio de trabajo de esa unidad es el directorio raíz mostrará el indicador "C:> ". El indicador avisa al usuario de que el intérprete de órdenes está preparado para que el usuario le introduzca una orden. El usuario puede escribir una orden y pulsar la tecla INTRO (enter), por ejemplo: C:> COPY AUTOEXEC.BAT AUTOEXEC.OLD <INTRO> La primera palabra es la orden (en este caso COPY), siendo el resto de la línea una serie de parámetros, separados por espacios en blanco, que precisa la orden. Normalmente cada orden tiene asociado un fichero (almacenado en el disco duro) que contiene un programa ejecutable. El intérprete de órdenes solicitará ciertos servicios del sistema operativo para que éste cargue dicho programa ejecutable de disco a la memoria principal e inicie su ejecución. Cuando termina la ejecución del programa el intérprete de órdenes vuelve a mostrar el indicador, pudiendo el usuario ejecutar otra orden. Por lo tanto, el intérprete de órdenes es un programa que permite al usuario ejecutar programas de una forma sencilla. Actualmente, existe la tendencia de sustituir el intérprete de órdenes (que solicita las órdenes del usuario mediante el teclado) por un programa que utiliza un entorno de ventanas. Una ventana (en inglés window) es un fragmento rectangular de la pantalla que contiene iconos y texto. Un programa que utiliza ventanas solicita sus entradas mediante el teclado y el ratón. En los sistemas que sustituyen el intérprete de órdenes por un programa que utiliza ventanas el usuario puede ejecutar un programa seleccionando con el ratón el icono (o el texto) asociado con dicho programa. Esto implicará que el programa que sustituye al intérprete de órdenes solicite los servicios apropiados del sistema operativo para ejecutar el programa asociado con el icono o el texto, al igual que hacía el intérprete de órdenes. Es decir, se sustituye la interfaz con el usuario, pero no cambia la interfaz con el sistema operativo, ya que ni el intérprete de órdenes ni el programa de ventanas forman parte del sistema operativo, sino que se limitan a utilizar sus servicios. 3. SISTEMAS OPERATIVOS MONOPROGRAMADOS 4
  • 5. Fundamentos de Informática Sistemas Operativos. Archivos y Bases de Datos. VERSUS MULTIPROGRAMADOS. Los sistemas operativos se pueden clasificar atendiendo a diversos criterios. La clasificación más importante es la que se basa en la forma en que el sistema operativo gestiona el recurso más importante del ordenador: la CPU. Esta clasificación divide a los sistemas operativos en monoprogramados y multiprogramados. Al principio todos los sistemas operativos eran monoprogramados. Este tipo de gestión implica que todos los recursos del ordenador (CPU, memoria y periféricos) están a disposición del único programa en ejecución. La memoria principal sólo alberga al sistema operativo y a dicho programa. La CPU ejecuta el programa desde su inicio hasta su fin ininterrumpidamente. Cuando este programa finaliza se pasa a ejecutar un nuevo programa, que pasa a disfrutar de todos los recursos del ordenador. En un sistema operativo multiprogramado la memoria principal alberga el código de más de un programa. La ejecución de uno de los programas almacenados en la memoria principal puede ser interrumpida por el sistema operativo para ejecutar otro de los programas situados en la memoria. La ejecución del programa interrumpido será reanudada posteriormente por el sistema operativo por el lugar en el que se interrumpió. El programa no es consciente de que se ejecuta discontinuamente en el tiempo. Los programas ejecutados de esta forma comparten los recursos del ordenador (CPU, memoria y periféricos), siendo el sistema operativo responsable de que no se produzcan problemas porque más de un programa quieran utilizar un mismo recurso de forma incoherente a su naturaleza. Figura 2. Ocupación de la memoria principal en sistemas de mono y multiprogramación En la figura 2 se compara la ocupación de la memoria principal en un sistema de monoprogramación frente a uno de multiprogramación. En el sistema de monoprogramación (figura 2.a) el sistema operativo ocupa un espacio fijo, el resto de la 5
  • 6. Fundamentos de Informática Sistemas Operativos. Archivos y Bases de Datos. memoria se dedica a albergar al único programa en ejecución. Si este programa es pequeño se desaprovecha mucho la memoria (en la figura la memoria desocupada es la zona sombreada). En el sistema de multiprogramación (figura 2.b) la memoria se reparte entre el sistema operativo y varios programas, el número de programas que se almacenan en la memoria principal depende del tamaño de éstos. Normalmente se desperdicia algo de memoria, pues es poco probable que coincida exactamente la suma del tamaño de los programas y el sistema operativo con el tamaño de la memoria principal, no obstante, la memoria desperdiciada será menor que la que se produce en el sistema monoprogramado. Figura 3. Ocupación de la CPU en un sistema de monoprogramación y de multiprogramación En la figura 3 se compara la gestión de la CPU en un sistema monoprogramado frente a uno multiprogramado. Ambas figuras, 3.a y 3.b, representan con un rectángulo el programa que ocupa (ejecuta) la CPU en el tiempo. Se supone que el programa 1 (P1) precisa de 3 unidades de tiempo para su ejecución, P2 2, P3 4 y P4 3. El orden de llegada de los programas al sistema para su ejecución es P1, P2, P3, P4. El sistema de monoprogramación (figura 3.a) comienza ejecutando el primer programa en llegar, P1, ejecutándolo completamente, después va ejecutando los demás programas en su totalidad según su orden de llegada. En un instante dado la memoria principal estará ocupada por el sistema operativo y el programa en ejecución. El sistema de multiprogramación (figura 3.b) comienza ejecutando a P1, pero antes de su terminación (instante 2) detiene su ejecución y comienza a ejecutar a P2, el cual se ejecuta en su totalidad. El término de P2 implica que se libera la zona de memoria principal que ocupaba, esto hace que se pueda introducir (dependiendo de su tamaño) otro programa en la memoria principal, aquí se supone que se puede, introduciéndose P4 en la memoria. Ahora el sistema operativo repartirá la CPU entre P1, P3 y P4 que son los programas albergados en la memoria principal. En el resto de la figura se puede ver cómo se reparte la utilización de la CPU. La figura 3.a refleja de forma exacta la ocupación de la CPU en un sistema de monoprogramación, un programa ocupa la CPU ininterrumpidamente desde su inicio a su fin. Sin embargo, la figura 3.b refleja la ocupación de la CPU en un sistema multiprogramado concreto. En esta figura P1 es interrumpido en el instante 2, pero en otro sistema multiprogramado podría haber sido interrumpido en el instante 1 o en el 1'5. El instante en el que se detiene la ejecución de un programa para ejecutar otro, así como el 6
  • 7. Fundamentos de Informática Sistemas Operativos. Archivos y Bases de Datos. nuevo programa que pasa a ocupar la CPU no se eligen arbitrariamente. Los criterios más importantes que tiene un sistema operativo para provocar estos cambios de programas en la ocupación de la CPU son dos: el intentar utilizar más eficientemente los recursos del ordenador y el repartir equitativamente la ocupación de la CPU entre todos los programas que existen en el sistema. Si el sistema operativo sólo utiliza el primer criterio será un sistema simplemente multiprogramado, si utiliza ambos criterios será un sistema de tiempo compartido. El tiempo compartido es una variante de la multiprogramación en la gestión de la CPU. A continuación se definen dos términos muy utilizados en el ámbito de los sistemas operativos relacionados con la existencia de multiprogramación o de tiempo compartido: proceso y ejecución concurrente. Los sistemas operativos distinguen entre programa y proceso. Un programa es una secuencia de instrucciones escrita en un lenguaje dado, un proceso es un programa en ejecución. Un programa es un concepto estático, mientras que un proceso es un concepto dinámico. Un proceso se caracteriza por la zona de memoria principal que ocupa, la última instrucción que ha sido ejecutada por la CPU, el valor actual de sus variables, etc. Por último, definamos el término ejecución concurrente: cuando en un sistema de multiprogramación, o de tiempo compartido, se tiene a más de un proceso en un estado de ejecución intermedio entre su inicio y su fin se dice que éstos se ejecutan concurrentemente. Los sistemas operativos multiprogramados y de tiempo compartido son mucho más complejos que los monoprogramados , y, por lo tanto, mucho más difíciles de construir. Sin embargo, gestionan mejor los recursos del ordenador y proporcionan una máquina virtual más sofisticada al permitir la ejecución concurrente de más de un proceso. 4. FUNCIONES PRINCIPALES DE UN SISTEMA OPERATIVO. En este apartado se van a estudiar las funciones más importantes que realiza un sistema operativo, las cuales van a depender de la máquina virtual que pretenda ofrecer. Debido a la complejidad de estas funciones, no se va a abordar aquí su explicación completa. Por otro lado, una comprensión perfecta de su funcionamiento requiere de unos conocimientos sobre el software y el hardware de un ordenador que no se presuponen en el lector, por lo que se estudiarán las funciones a grandes rasgos, ofreciendo una visión simplificada. Cada uno de los subapartados siguientes explica una de estas funciones, al final de algunos subapartados se incluyen algunas de las llamadas al sistema más significativas que proporciona al sistema operativo relacionadas con la realización de dicha función. 4.1. Gestión de la CPU. La gestión que realice el sistema operativo de la CPU va a depender de si se quiere proporcionar monoprogramación o multiprogramación. Si el sistema es monoprogramado la gestión es muy simple, por lo que aquí se comentará la gestión de un sistema operativo multiprogramado o de uno de tiempo compartido. 7
  • 8. Fundamentos de Informática Sistemas Operativos. Archivos y Bases de Datos. Una de las tareas que tiene que realizar un sistema operativo para proporcionar multiprogramación es mantener una estructura de datos para guardar información sobre cada uno de los procesos que se ejecutan concurrentemente en el sistema. Esta información es necesaria para que la multiprogramación se realice correctamente. Por ejemplo, cuando el sistema operativo decide interrumpir a un proceso, guarda en esta estructura de datos la dirección de memoria de la siguiente instrucción del proceso a ejecutar. De esta forma, cuando el sistema operativo reanude la ejecución del proceso sabe por qué punto de su ejecución fue interrumpido. Otra de las tareas a realizar por el sistema operativo es decidir cuándo se interrumpe a un proceso, y determinar a qué proceso se le asigna la CPU en su lugar. Con la ayuda del hardware, el sistema operativo tiene garantizado que cada muy poco tiempo (existe un límite para dicho tiempo) se ejecuta uno de sus programas. Este programa se encarga de decidir si el proceso que actualmente ocupa la CPU debe ser interrumpido. Si se decide realizar la interrupción se debe ejecutar otro programa del sistema operativo, llamado planificador, que elige qué proceso de los restantes debe ocupar la CPU. Como se explicó en el apartado anterior, el criterio para decidir si un proceso debe ser interrumpido, y en caso de ser interrumpido, qué proceso lo sustituye en la CPU, varía de un sistema operativo a otro. A continuación se describen dos de los servicios relacionados con la gestión de la CPU que proporciona todo sistema operativo. • Creación de un proceso. Este servicio sirve para ejecutar un programa, siendo utilizado, entre otros programas, por los intérpretes de órdenes. El servicio requiere de un parámetro de entrada en el que se especifica el fichero que contiene el código ejecutable del programa. También precisa de un parámetro de salida donde el sistema operativo informa de si se pudo crear o no el proceso. Un motivo para negar su creación es que ya existen demasiados procesos ejecutándose concurrente en el sistema, la inclusión indiscriminada de procesos en el sistema puede llevar a su colapso, pues los recursos no pueden ser compartidos eficientemente entre un número elevado de procesos. • Terminación de un proceso. La solicitud de este servicio en el código de un programa implica que el sistema operativo finalizará su ejecución. 4.2. Gestión de la memoria principal. Otra de las funciones del sistema operativo es la de gestionar la memoria principal del ordenador. El sistema operativo debe mantener una estructura de datos donde almacena la información sobre qué zona de la memoria ocupa cada proceso, así como de las zonas de la memoria libres. De esta forma, cuando el sistema operativo reciba una solicitud de creación de un proceso debe almacenar su código en una zona libre de la memoria (si hay), registrándose la zona de memoria que ocupa el nuevo proceso como ocupada. De igual forma, cuando un proceso finaliza hay que registrar que la zona de memoria que ocupaba queda como libre. La gestión de la memoria de un sistema operativo monoprogramado es mucho más sencilla que la de uno multiprogramado, ya que en éste la memoria principal 8
  • 9. Fundamentos de Informática Sistemas Operativos. Archivos y Bases de Datos. sólo es compartida por él y por el único programa en ejecución. En un sistema operativo multiprogramado la memoria principal se comparte entre varios programas (ver figura 2). 4.2.1. La memoria virtual. La CPU capta de la memoria principal las instrucciones máquina de los programas para ejecutarlas. Esto implica que para que un programa se pueda ejecutar debe estar cargado (residir) en la memoria principal. Por lo tanto, el tamaño máximo del código máquina de un programa no debería exceder del tamaño de la memoria principal (realmente de algo menos, pues siempre hay una parte de la memoria ocupada por el sistema operativo). A partir de 1961 muchos sistemas operativos comenzaron a utilizar una técnica de gestión de la memoria llamada memoria virtual; esta técnica requiere de un hardware especial, y permite que el usuario pueda crear programas cuyo código máquina excede del tamaño de la memoria principal. Para proporcionar memoria virtual, el sistema operativo mantiene en la memoria principal sólo parte del código de un programa, concretamente siempre mantiene por lo menos la parte del código que se está ejecutando actualmente, el resto permanece en la memoria secundaria. Cuando se necesita una parte del código que está en la memoria secundaria se transfiere a la memoria principal. Estas transferencias las realiza el sistema operativo de forma transparente al programa, y por lo tanto al programador, es decir, el programador escribe programas igual que siempre, sólo que el tamaño de estos programas puede ser mayor que el tamaño de la memoria principal gracias a la gestión realizada por el sistema operativo. La memoria virtual es otro ejemplo de cómo el sistema operativo ofrece una máquina virtual distinta, y más potente, de la que ofrece el hardware. 4.3. Gestión de la entrada/salida (E/S). Los ordenadores disponen de muchos periféricos, o dispositivos de E/S, como impresoras, teclados, monitores, discos, ratones, etc. Estos periféricos hacen posible que los programas se comuniquen con los usuarios. En el apartado anterior se comentó superficialmente la complejidad de una operación sobre un disco, de igual forma, los demás periféricos ofrecen una interfaz hardware de trabajo muy compleja. Es misión del sistema operativo gestionar directamente los periféricos, ofreciendo al programador unos servicios para su utilización mucho más sencillos que los que ofrecen éstos a nivel hardware. A nivel físico los periféricos son muy distintos, las instrucciones máquina que hay que suministrar a una impresora para que escriba una línea difieren notablemente de las que hay que darle a un scanner para que digitalice una imagen. Sin embargo, los servicios que ofrece el sistema operativo para trabajar con periféricos distintos son muy parecidos. El objetivo de proporcionar servicios similares con independencia del tipo de periférico se conoce como E/S independiente del dispositivo. La E/S independiente del dispositivo permite que un programa que, por ejemplo, manda sus salidas a una impresora, pueda mandarlas a la pantalla realizando unos cambios mínimos en su código, ya que los servicios para trabajar con la impresora son prácticamente iguales a los servicios para usar la pantalla. En general, el sistema operativo ofrece como mínimo los siguientes servicios para realizar operaciones de E/S: 9
  • 10. Fundamentos de Informática Sistemas Operativos. Archivos y Bases de Datos. • Apertura de un periférico. Con este servicio el programa le comunica al sistema operativo que quiere utilizar un determinado periférico (el cual será un parámetro del servicio). El sistema operativo devolverá en un parámetro si se le concede o no su uso. Un motivo por el que puede denegarse la concesión aparece en los sistemas operativos multiprogramados, cuando un proceso desea utilizar un periférico, habiendo sido abierto éste previamente por otro proceso. Si la naturaleza de un periférico, por ejemplo una impresora, es tal que su utilización concurrente produce incoherencias, el sistema operativo deniega cualquier intento de apertura de un periférico abierto previamente. • Operaciones de lectura o escritura. • Cierre de un periférico. Con ello el programa indica al sistema operativo que no desea utilizar más un periférico. Si el periférico cerrado es de naturaleza no compartible, el sistema operativo puede concedérselo al siguiente programa que lo quiera abrir. 4.4. El sistema de ficheros. Existen varios motivos para la utilización de la memoria secundaria (formada principalmente por discos y cintas magnéticas), uno de los cuales es que existen ciertos datos que deben sobrevivir a la ejecución de un programa. Normalmente los programas guardan sus datos en la memoria principal mediante el uso de variables. Sin embargo, cuando el programa finaliza, la memoria principal se utiliza para albergar a otros programas, por lo que el contenido de dichas variables se pierde. Además, la memoria principal es volátil, por lo que al apagar el ordenador se pierden los datos que contenía. Muchos programas necesitan que sus datos perduren, por ejemplo, un programa que gestione la información de alumnos. Se puede ejecutar dicho programa para actualizar (añadir, borrar o modificar) la información de los alumnos, al terminar su ejecución los datos sobre los alumnos deben guardarse en algún sitio donde no se pierdan. La solución adoptada es que los programas almacenen estos datos en la memoria secundaria, que es permanente. El sistema operativo facilita notablemente el trabajo con la memoria secundaria, al presentar una interfaz de uso simple. 10
  • 11. Fundamentos de Informática Sistemas Operativos. Archivos y Bases de Datos. Figura 4. El interior de un disco En la figura 4 se muestra el interior de un disco magnético. Un disco se compone de pistas, cada pista se divide en un número fijo de sectores (en el disco del dibujo cuatro). Aunque el tamaño de un sector depende de la pista en que se halle situado, todos los sectores de un disco almacenan la misma cantidad de información, típicamente 512, 1K o 2K bytes. La unidad de transferencia de información con un disco es el sector. Es decir, se puede leer o escribir un sector del disco. Una operación de lectura es sumamente compleja, implica dar órdenes (mediante instrucciones máquina) para que el disco gire a cierta velocidad, para situar el cabezal de lectura/escritura en la pista adecuada, y para que cuando el sector que se desea leer pase bajo el cabezal se lea la información. Una operación de escritura se realiza de forma similar. No interesan aquí los detalles, de hecho se han simplificado, lo importante es comprender que son tareas complejas. Si los programadores tuvieran que trabajar directamente con el hardware de un disco pocos los utilizarían. Igualmente, el interfaz de trabajo hardware con una cinta magnética, y en general con cualquier periférico de entrada/salida, es complejo. El sistema operativo gestiona directamente la memoria secundaria para facilitar su uso, proporcionando una serie de servicios que permiten utilizarla sencillamente. Para ello se ofrece al programador el concepto de fichero, que se puede definir como una unidad lógica de almacenamiento de información en la memoria secundaria. Un fichero es un objeto virtual, es decir, no existe como tal en un disco. El sistema operativo aporta un conjunto de servicios para manipular los ficheros, algunos de los más comunes permiten realizar tareas como: • Abrir un fichero. Esta operación requiere de un parámetro en el que se especifica el nombre del fichero a abrir. Con este servicio el programador indica al sistema operativo que desea utilizar un fichero. Normalmente existen varias formas de abrir un fichero, que dependen del uso que se quiera darle. Las dos formas de apertura básicas son: modo lectura, si se utiliza el fichero sólamente para consultar los datos que almacena; y modo escritura, si se abre el fichero para modificar su contenido. 11
  • 12. Fundamentos de Informática Sistemas Operativos. Archivos y Bases de Datos. La apertura en modo escritura de un fichero que no existe implica su creación. • Escribir en un fichero. Este servicio sirve para modificar los datos que contiene un fichero. El servicio requiere la especificación del fichero, así como de la información a escribir. • Leer de un fichero. Sirve para consultar el contenido de un fichero, habrá que utilizar parámetros para indicar el fichero a leer, una variable donde almacenar la información leída, y cuánta información, por ejemplo cuántos bytes, se desean leer. • Borrar un fichero. Cuando, por alguna circunstancia, la información que contiene un fichero no se quiere utilizar más (no en la ejecución de un programa, sino en la existencia de una aplicación) resulta útil el uso de este servicio. Al utilizarlo, el sistema operativo libera el espacio que ocupaba el fichero en la memoria secundaria, aumentándose así el espacio disponible, pudiendo ser utilizado por otros ficheros. Este servicio requiere de un parámetro como mínimo, para indicar el fichero a borrar. Si está familiarizado con el sistema operativo MS DOS, la orden DEL utiliza este servicio para borrar los ficheros que se indican como parámetros. • Cerrar un fichero. Cuando no se quiere utilizar más un fichero dentro de un programa hay que cerrarlo, pues el sistema operativo guarda cierta información por cada fichero abierto en la memoria principal. El cerrar un fichero implica que el sistema operativo puede liberar dicha memoria para emplearla en otros usos. Este servicio precisa como mínimo de un parámetro para especificarle al sistema operativo el fichero a cerrar. Para poder mantener el concepto de fichero el sistema operativo ha de guardar cierta información sobre ellos, por ejemplo, qué sectores del disco ocupan, y qué orden lógico siguen sus sectores. El sistema operativo también ofrece el concepto de directorio. Un directorio sirve para estructurar los ficheros almacenados en un disco, de forma que se puedan guardar ficheros relacionados lógicamente (por ejemplo porque todos son necesarios para ejecutar un programa) en un mismo directorio. Existe un directorio origen por disco, llamado directorio raíz. Un directorio puede contener a su vez directorios, lo que conduce a una estructura de árbol. El sistema operativo ofrece servicios para trabajar con directorios, estos servicios permiten, por ejemplo, crear y eliminar directorios, o consultar los ficheros almacenados en ellos. 5. Archivos y carpetas. El sistema de archivos (o ficheros) es una de las funciones de un sistema operativo con la que más se relaciona el usuario. A continuación se exponen algunos conceptos básicos sobre este sistema y el funcionamiento de algunos tipos de sistemas de archivos. 12
  • 13. Fundamentos de Informática Sistemas Operativos. Archivos y Bases de Datos. 5.1. Conceptos básicos de los archivos. Un archivo o fichero es un conjunto de información sobre el mismo tema, tratada como una unidad de almacenamiento y organizada de forma estructurada para la búsqueda de un dato individual. Un archivo está compuesto de registros homogéneos que contienen información sobre el tema. Así, por ejemplo, los datos de nómina de personal de una empresa (tema) se pueden almacenar en un archivo, en el que cada registro contendría los campos o datos de nómina de cada empleado. El concepto de archivo surge de la necesidad, en los sistemas operativos, de almacenar la información. Los archivos pueden contener programas, datos o algún otro elemento que el usuario desee. El sistema operativo debe proporcionar operaciones para crear, destruir, leer y escribir archivos. Estos conceptos se verán con más detalle en el tema dedicado a los sistemas operativos. La figura 5. muestra tres organizaciones comunes de un archivo. La primera organización (figura 5.a.) es una simple secuencia de bytes. Los archivos en el sistema operativo UNIX se estructuran de esta manera. La segunda (figura 5.b.) es una sucesión de registros de tamaño fijo. En esta organización pueden leerse o escribirse registros arbitrarios, pero no pueden insertarse o suprimirse registros en la mitad de un archivo. La tercera organización es un árbol de bloques de disco, donde cada nodo contiene n registros con clave. Si se inserta un registro a un bloque que está repleto, éste se divide en dos, los cuales se suman al árbol en su secuencia alfabética correcta. Este método se aplica sobre todo en macrocomputadoras donde se llama ISAM (método de acceso secuencial indexado). Figura 5. Tres organizaciones de archivos. 13
  • 14. Fundamentos de Informática Sistemas Operativos. Archivos y Bases de Datos. Todos los sistemas operativos aspiran a la independencia del dispositivo, es decir, hacer que el acceso sea el mismo sin importar dónde esté el archivo. Algunos sistemas operativos tienen mayor independencia del dispositivo que otros. En UNIX, por ejemplo, los discos forman parte del árbol de ficheros, en MS-DOS, en cambio, el usuario debe especificar explícitamente en qué dispositivo está cada archivo. Las operaciones disponibles con archivos difieren ligeramente de un sistema operativo a otro. Siempre se proporcionan la lectura y escritura de bytes (o registros) en forma secuencial. El acceso al azar se puede obtener o bien realizando una operación en la que se especifique el número (o clave) del registro que se leerá o escribirá, o bien, primero se realiza una operación para situar la "posición actual del archivo" en un lugar determinado y posteriormente se realizan las operaciones de lectura o escritura que se deseen, las cuales actuarán a partir de la nueva posición actual del archivo. Los archivos orientados a registros suelen tener operaciones para insertar y suprimir registros. 5.2. Tipos de archivos. La mayoría de los sistemas operativos tienen tres tipos básicos de archivos: regulares, directorios y archivos especiales. Los archivos especiales se utilizan (como hace UNIX) para modelar dispositivos de disco y terminales. Los archivos regulares se subdividen en tipos distintos en base a su uso. Los tipos diferentes se distinguen por medio de nombres que terminan con extensiones de archivo distintas. Por ejemplo: XXX.PAS: programa fuente en lenguaje PASCAL. XXX.TCL: programa fuente en lenguaje TCL-TK. XXX.DOC: documento escrito con el procesador de textos WORD. XXX.OBJ: archivo objeto (salida del compilador aún no linkada). XXX.EXE: programa binario ejecutable. XXX.TXT: archivo de texto ASCII. XXX.BAT: archivo de procesamiento de comandos por lotes. En algunos sistemas las extensiones son simplemente un convencionalismo, el sistema operativo mismo no las utiliza para nada. En otros sistemas, el sistema operativo refuerza rígidamente las reglas que se relacionan con la nominación. Por ejemplo, no ejecutará un archivo a menos que éste termine en .EXE. Otras posibles clasificaciones de los archivos, atendiendo a diversos criterios, son las siguientes: 14
  • 15. Fundamentos de Informática Sistemas Operativos. Archivos y Bases de Datos. 5.2.1. Según la longitud de los registros. Los registros que componen un archivo pueden, o no, tener todos la misma longitud. Esto puede ser debido a la existencia de campos de longitud variable o por haber campos que se repiten un número variable de veces (o por ambas cosas). Por lo que respecta a la longitud de sus registros, los archivos pueden ser de uno de los siguientes tipos : • Longitud fija. Todos los registros tienen la misma longitud. • Longitud variable. El sistema reserva una palabra al comienzo de cada registro para anotar su longitud. • Delimitados. El sistema incluye un carácter especial, para indicar el final del registro. En este caso se dice que el archivo es de tipo texto. • Indefinido. En este caso el sistema operativo no realiza ninguna gestión sobre la longitud de los registros del archivo. El programa de usuario es el que se encarga de localizar el principio y el final de cada registro. 5.2.2. Según el uso que se hace de ellos. Dentro de una aplicación informática se pueden utilizar los archivos para realizar funciones diversas. Conocer la función que va a desempeñar un archivo es fundamental para su organización. Podemos establecer una clasificación de los archivos atendiendo a la función que desempeñan • Un archivo permanente contiene información relevante para una aplicación, es decir, los datos necesarios para el funcionamiento de la misma. Su vida es larga y normalmente no puede generarse de forma inmediata a partir de otros archivos. • Un archivo temporal contiene información que es relevante para un determinado proceso o programa, pero no para el conjunto de la aplicación. Se genera a partir de los datos de los archivos permanentes o para actualizar éstos, y su vida es generalmente muy corta. Dentro de los archivos permanentes, podemos distinguir: • Archivos maestros. Un archivo maestro contiene el estado actual de los datos susceptibles de ser modificados en la aplicación. En general, todos los procesos están orientados a actualizar el archivo maestro o a obtener resultados de él. Ej : el archivo de clientes de un banco, en el los registros contienen información de identificación de clientes, su saldo, etc. • Archivos constantes. Un archivo constante es aquel que contiene datos fijos para la aplicación. En él no son frecuentes las modificaciones, normalmente se accede sólo para consultar datos. Ej: el archivo que contenga los intereses para los distintos tipos de cuentas bancarias. • Archivos históricos. Un archivo histórico es aquel que contiene datos que fueron actuales en tiempos anteriores. Se conservan para poder reconstruir situaciones anteriores. En algunos casos puede estar formado simplemente por los registros borrados del archivo maestro. Ej: Un fichero que contenga los datos de los clientes que se han dado de baja en una entidad bancaria. 15
  • 16. Fundamentos de Informática Sistemas Operativos. Archivos y Bases de Datos. Los archivos temporales se pueden clasificar en: • Archivos intermedios. Se utilizan para almacenar resultados de un programa que han de ser utilizados por otro, dentro de una misma aplicación. • Archivos de maniobras. Se utilizan para almacenar los datos propios de un programa que no se pueden conservar en memoria principal por falta de espacio. Se encuentran normalmente en programas de cálculo numérico, compiladores y editores. Su vida es siempre menor que el tiempo de ejecución del programa. • Archivos de resultados. Se utilizan para almacenar datos elaborados que van a ser transferidos a un dispositivo de salida, por ejemplo un archivo de impresión, que contiene datos que van a ser transferidos a una impresora. 5.3. Dirección física y dirección lógica. Por lo general, un fichero utilizado por un usuario desde un lenguaje de alto nivel, no es manejado directamente por el propio programa, sino por el sistema operativo o por el software específico del computador para la gestión de archivos. Dicho software se encargará de realizar los accesos necesarios al dispositivo donde se encuentra ubicado el archivo y transferir la información solicitada del archivo al programa o a la inversa. Esto facilita que los programas sean portables, ya que en ellos no se hace referencia a la forma específica de gestionar la información sobre el soporte, que puede ser diferente de un sistema a otro. Así, un programa que utilice archivos y escrito en algún lenguaje para un determinado computador, puede ser trasladado a otro computador con relativa facilidad, aunque la memoria masiva esté estructurada físicamente de otra forma. El sistema operativo transporta, cada vez que accede al dispositivo, una cantidad fija de información (bloque o registro físico) que depende de las características hardware o físicas de éste. En un bloque puede haber varios registros del archivo o puede que un registro ocupe varios bloques. En el diseño de archivos un factor que debe ser tenido en cuenta es la longitud de bloque o el factor de blocaje, que se define como el número de registros del archivo que entran en un bloque. Cuanto mayor sea éste, menor será el número de accesos al dispositivo necesarios para el procesamiento del archivo. La dirección lógica de un registro es la posición relativa que ocupa en el archivo, mientras que la dirección física es la posición real o efectiva donde se encuentra dicho registro en el soporte de información (dirección hardware). En el archivo los registros aparecen al usuario en secuencia lógica, es decir, ordenados linealmente. Por ejemplo, un archivo de nóminas puede estar ordenado alfabéticamente por el apellido de los trabajadores. No obstante el orden de los archivos en el disco puede no tener ninguna relación con la información que contiene. El sistema operativo, ha de realizar la transformación de la dirección lógica usada en los programas, en la dirección física con la que se direcciona el soporte. Desde un programa se accede a un archivo para leer, modificar o escribir en uno de sus 16
  • 17. Fundamentos de Informática Sistemas Operativos. Archivos y Bases de Datos. registros. Al leer se transfiere de bloque en bloque la información del archivo a un área de memoria principal asociada a las entradas/salidas del archivo (a esta zona se le denomina buffer), desde aquí la información es procesable por el programa. De la misma forma el programa puede transferir información desde esta zona al archivo, modificando su contenido. 5.4. Almacenamiento de archivos. Si un archivo consta de una sucesión de bloques, el sistema de archivo debe contar con alguna manera de llevar el control de los bloques de cada archivo. La forma más evidente (el almacenamiento consecutivo de los bloques) suele no ser viable porque los archivos pueden crecer. De hecho, fue precisamente este problema el que llevó a dividir los archivos en bloques. Un método que resulta adecuado consiste en almacenar los bloques de archivo como una lista enlazada. Cada bloque del disco de 1024 bytes (por ejemplo) contiene 1022 bytes de datos y un apuntador de 2 bytes al siguiente bloque de la cadena. Sin embargo, este método tiene dos desventajas. Primero, el número de bytes de datos en un bloque ya no es una potencia de 2, lo que con frecuencia es una molestia. Segundo y más grave, el acceso al azar es costoso de implementar. Si un programa hace la localización del byte 32768 y después inicia la lectura, el sistema operativo tiene que hallar su camino a través de 32768/1022 o 32 bloques para hallar los datos que se necesitan. Tener que leer 33 bloques del disco para hacer la localización es ineficiente. Pese a ello, la idea de representar un archivo como una lista enlazada puede salvarse si se conservan los apuntadores en la memoria. La figura 6 muestra el esquema de asignación que utiliza MS-DOS. En este ejemplo, se tienen tres archivos, A, con bloques 6, 8, 4 y 2; B con bloques 5, 9 y 12; y C con bloques 10, 3 y 13. Figura 6. Esquema de asignación de lista enlazada de MS-DOS. 17
  • 18. Fundamentos de Informática Sistemas Operativos. Archivos y Bases de Datos. En asociación con cada disco hay una tabla llamada tabla de asignación de archivos (FAT). Tiene una entrada por cada bloque del disco. La entrada del directorio de cada archivo da el número del primer bloque del archivo. Esa ranura en la FAT contiene el número del bloque del siguiente bloque. El archivo A comienza en el bloque 6, de modo que la entrada 6 de la FAT contiene el número del siguiente bloque del archivo A, que es 8; la entrada 8 de la FAT contiene el siguiente número de bloque, 4; la entrada 4 apunta a la 2 y la 2 se marca como fin del archivo. El principal problema de la FAT es que los apuntadores de todos los archivos del disco en su totalidad se combinan al azar en la misma tabla. Esto quiere decir que toda la FAT se necesita en potencia, aun si sólo se abre un archivo. Un método más adecuado sería conservar las listas de bloques de diferentes archivos en lugares distintos. Esto es lo que UNIX hace. En asociación con cada archivo de UNIX hay una tabla pequeña (en el disco) llamada i-nodo como se muestra en la figura 7. El i-nodo contiene información sobre el archivo y de protección, además de la información necesaria para localizar los bloques del archivo. Los elementos importantes son los 10 números de bloques del disco y los 3 números de bloque indirectos. Para archivos de menos de 10 bloques de longitud, todas las direcciones del disco se conservan justamente en el i-nodo, haciéndolos fáciles de hallar. Figura 7. Estructura de un i-nodo Cuando un archivo crece hasta más de 10 bloques de disco, se adquiere un bloque de disco libre y se coloca el apuntador indirecto hacia él. Este bloque se utiliza para contener apuntadores de los bloques del disco. Con un tamaño de bloque de 1K y direcciones de 18
  • 19. Fundamentos de Informática Sistemas Operativos. Archivos y Bases de Datos. disco de 32 bits, el bloque indirecto puede contener 256 direcciones del disco. Este esquema basta para archivos de hasta 266 bloques (10 en el i-nodo y 256 en el bloque indirecto individual). Después de 266 bloques, el apuntador doble indirecto se utiliza para apuntar a un bloque del disco de hasta 256 apuntadores, sólo que estos apuntadores no apuntan a bloques de datos, sino que apuntan a 256 bloques indirectos individuales. El bloque indirecto doble basta para archivos de hasta 266 + 2562 = 65802 bloques. Para archivos de más de 64M, se utiliza el apuntador triple indirecto para apuntar a un bloque que contiene apuntadores a 256 bloques indirectos dobles. Los archivos que sobrepasan los 16 gigabytes no se pueden manejar (con tamaño de bloque de 1K). El tamaño de la FAT de un disco de 16 gigabytes es poco agradable de contemplar. La fuerza del esquema de UNIX es que los bloques indirectos se utilizan sólo cuando se necesitan. Para archivos menores de 10K, no se necesitan bloques indirectos. 5.5. Directorios. Para llevar el control de los archivos, el sistema operativo normalmente proporciona directorios, los cuales, en muchos sistemas, son archivos. Un directorio suele contener varias entradas, una por archivo, como se muestra en la figura 8. La manera más simple consiste en que el sistema conserve un solo directorio que contenga todos los archivos de todos los usuarios. Si hay muchos usuarios y éstos eligen los mismos nombres de archivos, los conflictos y la confusión volverán el sistema rápidamente impracticable. Figura 8. Entradas de un directorio. Una mejora consiste en tener un directorio por usuario. Este diseño elimina conflictos de nombre entre los usuarios, pero no es muy satisfactorio para usuarios con muchos archivos. Es muy común que los usuarios quieran agrupar sus archivos en formas lógicas. Lo que se necesita es una jerarquía general, es decir, un árbol de directorios. Con este método, cada usuario puede tener tantos directorios como se necesiten de manera que los archivos se puedan agrupar en formas naturales. Este método se muestra en la figura 9. 19
  • 20. Fundamentos de Informática Sistemas Operativos. Archivos y Bases de Datos. Figura 9. Árbol de directorios. Cuando tenemos esta organización, se necesita contar con alguna manera de especificar los nombres de los archivos. Comúnmente se emplean dos métodos. En el primero, a cada archivo se le da un nombre de ruta absoluta, que consta de la ruta que va del directorio raíz al archivo. Por ejemplo, la ruta /opt/gnu/gcc significa que el directorio raíz contiene un subdirectorio opt, el cual a su vez contiene un subdirectorio gnu, que contiene el archivo gcc. Los nombres de ruta absoluta siempre comienzan en el directorio raíz y son únicos. El otro tipo de nombre es el nombre de ruta relativa. Este se utiliza junto con el concepto de directorio actual. Un usuario puede designar un directorio como el directorio actual, en cuyo caso todos los nombres de ruta que no comienzan en el directorio raíz se toman en relación al directorio actual. Por ejemplo, si el directorio actual es /opt/gnu, entonces el archivo cuya ruta absoluta es /opt/gun/gcc puede referenciarse simplemente como gcc. 5.6. Estructura del directorio. Antes de que un archivo se pueda leer, se debe abrir. Cuando un archivo se abre, el sistema operativo utiliza el nombre de ruta proporcionado por el usuario para localizar los bloques del disco, de manera que pueda leer y escribir el archivo más adelante. Consideremos algunos ejemplos de sistemas con árbol de directorios. La figura 10 muestra una entrada del directorio de MS-DOS. 20
  • 21. Fundamentos de Informática Sistemas Operativos. Archivos y Bases de Datos. Figura 10. Entrada del directorio de MS-DOS. Tiene 32 bytes de largo y contiene el nombre del archivo y el primer número de bloque, entre otros elementos. El primer número de bloque se puede utilizar como índice en la FAT, para hallar el segundo número de bloque y así sucesivamente. De esta forma se pueden hallar todos los bloques de un archivo dado. Los directorios de MS-DOS son archivos y pueden contener un número arbitrario de entradas, salvo el directorio raíz que es de tamaño fijo. La estructura del directorio que usa UNIX es extremadamente simple, como se muestra en la figura 4.7. Cada entrada contiene un nombre de archivo y su número de i-nodo. Toda la información referente al tipo, tamaño, tiempos, propietario y bloques del disco está contenida en el i-nodo (figura 8). Todos los directorios de UNIX son archivos y pueden contener, en forma arbitraria, muchas de estas entradas de 16 bytes. Figura 11. Entrada del directorio de UNIX. Cuando se abre un archivo, el sistema debe tomar el nombre proporcionado y localizar sus bloques del disco. Consideremos la forma en que se busca el nombre de ruta /opt/gnu/gcc.Utilizaremos a UNIX como ejemplo, pero el algoritmo es básicamente el mismo para todos los sistemas de directorios jerárquicos. En UNIX su i-nodo está localizado en un lugar fijo del disco. Después busca la primera componente de la ruta, opt, en el directorio raíz con el fin de hallar el i-nodo del archivo /opt. A partir de este i-nodo el sistema localiza el directorio de /opt y busca la siguiente componente, gnu, en él. A partir de este i-nodo puede hallar el directorio mismo y buscar gcc. El i-nodo de este archivo se lee después en la memoria y se guarda ahí hasta que el archivo se cierra. El proceso de búsqueda se ilustra en la figura 12. 21
  • 22. Fundamentos de Informática Sistemas Operativos. Archivos y Bases de Datos. Figura 12. Las etapas en la búsqueda de /opt/gnu/gcc. Los nombres de ruta relativos se buscan de la misma forma que los absolutos, sólo que comenzando desde el directorio actual y no desde el directorio raíz. Todo directorio tiene entradas para . y .. que se colocan ahí cuando se crea el directorio. La entrada . tiene el número de i-nodo del directorio actual y la entrada de .. tiene el número de i-nodo del directorio padre. Por lo tanto, un procedimiento que busca a ../pepe/prog.pas simplemente busca a .. en el directorio de trabajo, halla el número de i-nodo del directorio padre y rastrea ese directorio para encontrar pepe. No se necesita ningún mecanismo especial para manejar estos nombres. Hasta donde concierne al sistema de directorio, estas son simplemente cadenas ASCII ordinarias. 6. BASES DE DATOS. Un ordenador nos serviría de poco si perdiera toda la información al desconectarlo de la red eléctrica o su capacidad de almacenamiento estuviera limitada a la memoria RAM de que se dispusiera. Un elemento fundamental en todo computador es el almacenamiento secundario, que guarda información aún cuando no reciba suministro eléctrico y cuya capacidad es muy superior a la de la memoria principal del ordenador. En este tema vamos a ver nuevas estructuras de datos y sistemas software (distintas al sistema de archivos) que permiten el tratamiento eficiente y organizado de grandes cantidades de información. 6.1. Concepto de Base de Datos y definiciones generales. En cualquier tipo de organización se dedican considerables recursos a la recolección, clasificación, procesamiento e intercambio de datos basados en procedimientos bien establecidos con vistas a alcanzar objetivos específicos. Los finales de los sesenta fueron 22
  • 23. Fundamentos de Informática Sistemas Operativos. Archivos y Bases de Datos. testigos del desarrollo de la tecnología de manejo de datos con las implementaciones de los sistemas de bases de datos, los cuales fueron concebidos como un conjunto de datos y un conjunto de programas de aplicación utilizados para acceder a los datos y actualizarlos. A lo largo de estos más de treinta años esta tecnología ha estado continuamente actualizándose. Los primeros sistemas estuvieron basados en el uso de archivos separados (ISAM y VSAM). Posteriormente surgieron los sistemas manejadores de bases de datos, que son sistemas software centralizados o distribuidos que ofrecen facilidades para la definición de bases de datos, selección de estructuras de datos y búsqueda de datos, de forma interactiva o mediante un lenguaje de programación. Los primeros DBMS seguían el modelo jerárquico, que organiza la información a base de árboles (IMS, 2000, ...), les siguieron los sistemas basados en el modelo de red, que organiza la información utilizando grafos (IDS, TOTAL, IDMS, ...). La siguiente generación estuvo marcada por el advenimiento de la tecnología de las bases de datos relacionales (Codd, 1970), las cuales se han ido implantando paulatinamente en prácticamente todos los sistemas debido sobre todo a su sencillez conceptual. Cuando en nuestra aplicación estamos trabajando con archivos, podemos encontrarnos con una serie de problemas como pueden ser los siguientes: • Dificultad de Mantenimiento: La realización de actualizaciones puede resultar costosa cuando se tiene información parcialmente duplicada en varios archivos; incluso puede que éstos tengan organización diferente. Si al tener que actualizar un determinado dato, no se actualiza en todos los lugares donde se encuentra se producen inconsistencias. • Redundancia: Este problema consiste en tener datos que no aportan información, ya que se pueden deducir de otros. El caso trivial de redundancia es tener el mismo dato almacenado en varios sitios. • Rigidez de búsqueda: AI archivo se le va a dar una determinada organización de acuerdo con los tipos de accesos que se creían más frecuentes, pero puede ocurrir que se necesiten otros modos de acceso y sean difíciles de llevar a cabo sobre la organización ya existente. • Dependencia con los programas: Las relaciones entre los datos almacenados en los ficheros no están patentes en éstos. Es el programa que los utiliza el que se encarga de ello; recibe una cadena de caracteres y la información de dónde comienza un campo, donde acaba, su tipo, etc..., está controlada y es inherente al programa; cualquier cambio en la estructura del archivo implicaría una modificación de los programas que los tratan. • Confidencialidad y seguridad: La confidencialidad de los datos consiste en evitar la consulta de éstos a determinados usuarios. Otro aspecto que debe garantizarse es la seguridad de los datos almacenados de forma que éstos no puedan ser modificados por personas no autorizadas. Para resolver estos problemas surgen las bases de datos. A continuación detallamos algunos conceptos importantes. Una Base de Datos es un conjunto de datos y sus relaciones (datos interrelacionados), 23
  • 24. Fundamentos de Informática Sistemas Operativos. Archivos y Bases de Datos. almacenados con la mínima redundancia y de manera que se pueda acceder a ellos eficientemente por parte de varias aplicaciones y usuarios. Una base de datos se concibe como un fondo informatizado de información, donde cualquier elemento de cualquier organización puede acceder a esta información independientemente de dónde proceda la información y cuál vaya a ser su uso. Sistema de Base de Datos: es el sistema que se ocupa de mantener la información y hacer que esté disponible para el usuario. Consta de cuatro elementos: • Datos: deben almacenarse de manera integrada (recoger toda la información con la minima redundancia) y deben ser compartidos (accesibles a todas las aplicaciones). • Hardware: está formado por los dispositivos donde reside la base de datos (ordenadores, discos, ...). Si los datos residen en varios ordenadores interconectados se dice que la base de datos es distribuida (el hecho de ser distribuida debe ser transparente a los usuarios). • Software: es el Sistema Manejador de la Base de Datos (DBMS). Se utiliza para definir, mantener y manipular la base de datos. • Usuarios: se pueden considerar tres tipos distintos de usuarios del sistema de base de datos: - Usuario final: emplea la base de datos para un uso no informático de la información. Suele realizar consultas y las modificaciones que hacen están a nivel de dato pero nunca de estructuras más grandes. - Programador de aplicaciones: diseña y gestiona los programas que utilizan datos de la base de datos. Sí se hace un uso informático de los datos. También se trabaja a nivel de dato. - Administrador/es de la base de datos: es el encargado de diseñar la estructura de datos que soporta la base de datos. Trabaja a nivel de información. Las ventajas principales del uso de bases de datos son: • Compacidad: no se van a duplicar los ficheros. • Rapidez: al utilizar estructuras ordenadas y bien diseñadas. • Facilidad de trabajo: reusabilidad de los datos que están en todo momento a disposición. • Actualización: al no estar los datos duplicados se pueden actualizar con facilidad. • Menor redundancia. • Eliminación de inconsistencias: consecuencia de lo anterior. 24
  • 25. Fundamentos de Informática Sistemas Operativos. Archivos y Bases de Datos. • Compartición de datos. • Seguridad y chequeo de errores. 6.2. El administrador de la base de datos (DBA). El administrador de la base de datos (DBA) es la persona que está encargada del control general del sistema de base de datos. Entre sus muchas funciones están: • Decidir el contenido de la información en la base de datos: debe identificar las entidades y la información importante. Tiene que realizar el esquema conceptual, a este proceso se le denomina diseño lógico. A partir de un estudio de las necesidades de la empresa, obtiene items, atributos y relaciones entre items. El esquema conceptual se escribe utilizando el DDL. • Decidir la estructura de almacenamiento y la estrategia de acceso: decide cómo se almacenan los datos y define su representación interna. A esta fase se le denomina diseño físico de la base de datos. También tiene que decidir la correspondencia conceptual/interna. • Conexión con los usuarios: debe diseñar los esquemas externos y las correspondencias externa/conceptual que sean necesarias, tanto para usuarios terminales como para programadores de aplicaciones. • Definir aspectos de seguridad e integridad: control de acceso e integridad de la información. • Definir procedimientos de copias de respaldo (backups) y recuperación: se suelen tener copias de seguridad de la base de datos de manera que si se produce alguna pérdida importante de información se pueda recuperar el sistema a partir de la última copia. • Control de transacciones (unidades de programa cuya ejecución debe ser atómica). • Optimización del rendimiento de la base de datos: es responsable de que la base de datos funcione de la mejor forma posible, realizando para ello los ajustes que vayan siendo necesarios. Para realizar todas estas funciones, el DBA dispone de una serie de herramientas software y estructuras de información acerca de la base (ej: diccionario de datos, procedimientos estadísticos de medida de rendimiento, ...). 6.3. Bases de Datos Relacionales. En este tipo de bases de datos (las más utilizadas actualmente) los ítems (objetos del mundo) y las conexiones (relaciones entre esos objetos) se representan por tablas, o mejor dicho, por unas tablas especiales llamadas relaciones. 25
  • 26. Fundamentos de Informática Sistemas Operativos. Archivos y Bases de Datos. A las filas de estas tablas se les llaman tuplas y a las columnas atributos. Un concepto importante es el de dominio, que denomina el conjunto de valores que puede tomar un determinado atributo. Toda la información, tanto entidades como conexiones, se representa de manera uniforme, lo que implica uniformidad en los operadores (inserción, borrado y actualización). A continuación se muestra un ejemplo de una base de datos relacional para la gestión de un taller mecánico. Los conceptos fundamentales a tener en cuenta en las bases de datos relacionales son el de llave primaria y llave externa. Llamamos llave candidata de una relación (o simplemente llave) al atributo o conjunto de atributos que tienen la propiedad de identificar unívocamente a una tupla dentro de la relación. Las llaves constituyen el mecanismo de direccionamiento a nivel de tuplas básico en un sistema relacional, es decir, es el único modo, garantizado por el sistema, de localizar alguna tupla específica. Llaves candidatas de esta relación son: • {M#} • {status,puesto} si nos dicen que no puede haber dos mecánicos del mismo puesto y con el mismo status. 26
  • 27. Fundamentos de Informática Sistemas Operativos. Archivos y Bases de Datos. Una llave candidata debe cumplir dos condiciones: • Unicidad: no pueden existir dos tupías con el mismo valor en todos los atributos que forman la llave candidata. • Minimidad: no existe ningún subconjunto de la llave que cumpla la regla de unicidad. En el ejemplo anterior, por tanto, el conjunto {M#, Nombre}, aunque cumple la primera propiedad de llave candidata, no cumple la propiedad de minimidad, ya que contiene al subconjunto {M#} que es llave candidata, y por tanto no se puede considerar como tal. Ejemplo: Relación de Trabajos: En este ejemplo, ningún atributo por sí mismo es llave candidata. Una llave candidata es {M#,Matrícula}, y además es la más pequeña. Llave primaria es una de las llaves candidatas. De entre todas las llaves candidatas, se elige una como llave primaria. Al resto de llaves se les llaman llaves alternativas. Llave externa. Dada una relación R1, llamamos llave externa de R1, a cualquier atributo o conjunto de atributos de R1 que sea a su vez llave primaria de otra relación R2. Debe existir una concordancia entre los valores de la llave externa en ambas relaciones, ya que si no se darían problemas de integridad. Ejemplo: si consideramos las relaciones de los dos ejemplos anteriores, el atributo {M#} de la relación de Trabajos es una llave externa respecto a la relación de Mecánicos, ya que {M#} es llave primaria de esta última relación. La concordancia que debe existir entre los valores de la llave externa se refiere al hecho de que todo valor de M# que aparezca en la relación de Trabajos debe existir en la relación de Mecánicos, ya que si no estuviera, estaríamos diciendo que existe un trabajo de un mecánico inexistente, esto es, tendríamos un problema de integridad. El dominio de los atributos de la !lave externa deben coincidir en ambas relaciones. No es necesario que la llave externa sea también la llave primaria de la relación (R1), como puede deducirse del ejemplo anterior (llave de Trabajos es {M#,Matrícula}). Hay que tener en cuenta que R1 y R2 pueden ser la misma relación, es decir, una relación podría incluir una llave externa cuyos valores (no nulos) deben concordar con los valores de la llave primaria de esa misma relación. Un ejemplo típico es la relación de Empleados, donde la llave primaria es Num_Emp# y existe un atributo Num_Emp_Sup# en la relación para identificar al superior de ese empleado. Este último atributo es llave externa respecto a Num_Emp#. 27
  • 28. Fundamentos de Informática Sistemas Operativos. Archivos y Bases de Datos. Las llaves externas son el mecanismo fundamental para relacionar unas tablas con otras. 6.4. La arquitectura Cliente/Servidor. En la arquitectura cliente/servidor, la aplicación de base de datos está separada en dos partes: la porción cliente y la porción servidor. El cliente ejecuta la aplicación que accede a la información de la base de datos e interactúa principalmente con el usuario a través del teclado, la pantalla y el ratón. El servidor ejecuta el gestor de la base de datos y maneja las funciones requeridas para el acceso concurrente a los datos compartidos de la base de datos. Aunque la aplicación cliente y el servidor pueden ser ejecutados en el mismo ordenador, suele ser más efectivo y eficiente cuando la(s) parte(s) cliente(s) y el servidor se ejecutan en máquinas diferentes conectadas a través de una red. En una base de datos distribuida, un servidor podría necesitar acceder a una base de datos situada en otro servidor. En este caso, el servidor que pide la información es un cliente. El procesamiento distribuido es el uso de más de un procesador para dividir el procesamiento de una tarea individual. A continuación se exponen algunos ejemplos de procesamiento distribuido: • el cliente y el servidor están situados en diferentes máquinas; estas máquinas se conectan a través de una red. Figura 2. Arquitectura Cliente-Servidor en red. • una única máquina tiene más de un procesador, y los diferentes procesadores separan la ejecución de un cliente de la del servidor. 28
  • 29. Fundamentos de Informática Sistemas Operativos. Archivos y Bases de Datos. Figura 3. Arquitectura Cliente-Servidor en un solo ordenador. Algunos beneficios de la arquitectura cliente/servidor son: • la aplicación cliente no es responsable de realizar ningún procesamiento de datos. Las aplicaciones clientes se concentran en recoger datos de entrada de los usuarios, pedir los datos deseados al servidor, y entonces analizar y presentar estos datos usando las capacidades de visualización de la estación de trabajo o terminal cliente. • la aplicación cliente puede ser diseñada con independencia de la localización física de los datos. Si los datos se mueven o distribuyen a otros servidores, la aplicación continúa su funcionamiento con mínimas o ninguna modificación. • el servidor puede explotar características como la multitarea y memoria compartida de los sistemas operativos subyacentes. Como resultado, las aplicaciones cliente obtienen un alto grado de concurrencia, integridad de los datos y eficiencia. • las estaciones de trabajo o terminales cliente pueden ser optimizadas para la presentación de los datos (con capacidades gráficas, ratón, ..), mientras que el servidor puede ser optimizado para el procesamiento y el almacenamiento de los datos (gran cantidad de memoria y espacio de disco). • si es necesario, el servidor puede ser ampliado (escalado). De la misma forma que el sistema va creciendo, se pueden añadir múltiples servidores para distribuir la carga de procesamiento distribuido a través de la red (escalado horizontal). De forma alternativa, se puede remplazar la máquina que soporta al servidor por una máquina de mayor capacidad (escalado vertical). En ambos casos, todos los datos y las aplicaciones se mantienen con pocas o ninguna modificación (si el servidor es portable). • en los entornos de red, los datos compartidos son almacenados en los servidores, en vez de estar en todos los ordenadores del sistema. Esto facilita y hace más eficiente el manejo de los accesos concurrentes. • en los entornos de red, las aplicaciones cliente realizan las peticiones al servidor 29
  • 30. Fundamentos de Informática Sistemas Operativos. Archivos y Bases de Datos. usando sentencias SQL. Una vez recibidas, las sentencias SQL son procesadas por el servidor, y los resultados se devuelven a la aplicación cliente. El tráfico en la red se mantiene al mínimo, ya que sólo las peticiones y los resultados se mandan a través de la red. 30