Está en la página 1de 38

Tema 1

Sistemas Operativos Avanzados

Tema 1. Concepto de
sistema operativo
Índice
Esquema

Ideas clave

1.1. ¿Cómo estudiar este tema?

1.2. Funciones del sistema operativo

1.3. Gestión de procesos

1.4. Gestión de memoria

1.5. Gestión de directorios y archivos

1.6. El Shell: interactividad

1.7. Seguridad

1.8. Objetivos de diseño de un sistema operativo

A fondo

Sistemas operativos libres

Sistemas operativos: Administración de procesos

Operating System Defined

Sistemas operativos de tiempo real y empotrados

Bibliografía

Test
Esquema

Sistemas Operativos Avanzados 3


Tema 1. Esquema
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

1.1. ¿Cómo estudiar este tema?

Para estudiar este tema lee las Ideas clave que encontrarás a continuación.

En este tema se repasará el funcionamiento de los sistemas operativos desde el

punto de vista de que han sido diseñados para cumplir una serie de objetivos.

Se recorrerán las decisiones de diseño que se han tomado en la construcción de los

sistemas operativos respecto a:

▸ Procesos.

▸ Gestión de memoria.

▸ Sistemas de ficheros.

▸ Seguridad.

▸ Shell.

Sistemas Operativos Avanzados 4


Tema 1. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

1.2. Funciones del sistema operativo

Sin software un ordenador no es más que un amasijo de metal y plástico. Por medio

d e software puede almacenar, procesar y buscar información, reproducir música y

películas, enviar correos, navegar por Internet y realizar muchas otras tareas

importantes que le dan todo su valor.

En un momento determinado un ordenador está ejecutando muchos programas al

mismo tiempo. Algunos de ellos son más visibles para el usuario porque él mismo ha

decidido instalarlos o cargarlos y los ejecuta cuando los necesita para realizar las

tareas para las que adquirió su equipo. Desde nuestro punto de vista las

denominaremos aplicaciones de usuario.

Además de estas aplicaciones, se están ejecutando una serie numerosa de

programas que se ocupen de realizar las tareas que permiten que el sistema

funcione correctamente y que las aplicaciones de usuario puedan funcionar como se

espera de ellas. De estos el más importante y habitualmente el de mayor tamaño es

el sistema operativo. En realidad es lo que vamos a llamar el núcleo del sistema

operativo, que también recibirá el nombre más breve de kernel.

El núcleo también pone en marcha otros procesos que le auxilian en su función

Sistemas Operativos Avanzados 5


Tema 1. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

principal y que tienen en común que se inician, se ejecutan y se detienen sin

intervención alguna de los usuarios. En algunos sistemas se denomina servicios, en

otros demonios, lo que da una mejor idea de su situación en el sistema.

Un equipo informático básico es también un conglomerado de muchos elementos:

▸ Tendremos uno o más procesadores.

▸ Uno o varios tipos de memoria interna y otros circuitos auxiliares.

▸ Además incluye dispositivos de almacenamiento, físicamente internos o

conectados de diversas formas.

▸ Se incluyen dispositivos de interactividad para los usuarios como teclados,

pantallas, audio, etc.

▸ A esto hay que unir lo necesario para la conexión del equipo con otros equipos a

partir de interfaces de red.

No hace falta enumerar todos los elementos posibles para caer en la cuenta de que

es un sistema complejo. Esto significa que conseguir escribir programas que

puedan manejar correctamente todos los elementos del sistema, cuando cada vez

son más complejos y cuando cambian tan rápidamente las tecnologías y además

hacerlo todo de forma razonablemente eficiente, es un trabajo extremadamente

difícil.

Si cada programador tuviera que estar preocupado por cómo funciona un gestor de

discos duros, con los innumerables errores que se pueden dar solamente cuando se

lee un bloque de datos, su trabajo sería la ingeniería más compleja de las que

existen.

Hace ya muchos años que quedó meridianamente claro que había que encontrar un

medio para facilitar la construcción de programas que hicieran un uso correcto u


eficiente de todos los componentes que necesitaran. El medio consistió en impedir

Sistemas Operativos Avanzados 6


Tema 1. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

que los programas, las aplicaciones de usuario, accedieran directamente al

hardware, al mismo tiempo que previamente se les proporcionaba un conjunto de

programas que ya sabían acceder al hardware de forma correcta y eficiente y que lo

transformaran en un hardware no real (virtual) más sencillo de manejar que el real

subyacente.

Un programador moderno tiene que tener siempre en mente que su aplicación no se

va a comunicar con el hardware, no va a gestionar el tiempo que quiere usar del

procesador o acaparar la memoria que desee. Su aplicación solamente tiene que

conocer los servicios que están a su disposición, los cuales pueden utilizar otros

servicios de bajo nivel aún. En resumen, el control de los recursos siempre lo tiene

otro software: el sistema operativo.

E l nivel del hardware se controla por medio de conjuntos de registros que

gobiernan el funcionamiento del hardware interno.

El reloj dirige la lectura de los registros y de la memoria, es decir, el ciclo de

ejecución de las instrucciones. En ciertas arquitecturas, estas operaciones sobre los

datos y sus rutas son controladas por software, llamado microprograma. En otras

máquinas se controla directamente por miedo de circuitos de hardware.

La ejecución de cada instrucción de un programa se realiza en uno o varios ciclos.

Estas instrucciones pueden usar registros o afectar al hardware del sistema. El

conjunto del hardware utilizado y el conjunto de instrucciones disponibles forman la

arquitectura del nivel del conjunto de instrucciones (ISA: Instruction Set Architecture).

Este nivel es denominado también lenguaje máquina.

Un lenguaje máquina dispone usualmente de entre 50 y 30 instrucciones, la mayoría

para mover los datos de un lugar a otro, realizar cálculos aritméticos y

comparaciones. Utilizando estas instrucciones se pueden cargar los valores

necesarios en los registros de los dispositivos para que estos realicen las

Sistemas Operativos Avanzados 7


Tema 1. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

operaciones requeridas por las aplicaciones de usuario.

Así, por ejemplo, para leer una variable de un fichero que está almacenado en un

disco duro, no se le indica la variable que tiene que leer, sino un número de bloque

lógico y una dirección de memoria física para que sea un microprograma el que se

encargue después de la transferencia. Otras rutinas se encargarán de comunicar si


la operación ha sido correcta o ha ocurrido algo que ha impedido completar la

operación junto con alguna indicación que al final le permita a la aplicación de

usuario conocer qué ha ocurrido en un sentido u otro.

Cualquier operación que involucra el hardware, por ejemplo, la consulta y

modificación de datos en un dispositivo de almacenamiento, el envío y recepción de

datos por la red o a un ratón o una impresora tiene una gran complejidad. Cuando

el sistema operativo es el único software que tiene los privilegios suficientes para

ejecutar las instrucciones y acceder a los registros necesarios, está evitando una

enorme cantidad de trabajo y evitando muchos errores al programador de las

aplicaciones de usuario.

El sistema operativo se ejecuta en un nivel de privilegio máximo, denominado a

partir de ahora modo kernel o modo supervisor. Las aplicaciones de usuario se

ejecutan con menos privilegios en un modo que denominaremos modo usuario.

Esto protege al sistema de que el usuario manipule el hardware (exceptuando lo que

ocurre en algunos microprocesadores que no tienen ninguna protección por ser de

muy bajo nivel o por ser antiguos). Este mecanismo de diseño impide a una

aplicación cambiar, por ejemplo, el código de las interrupciones del reloj del sistema.

No todos los diseños de sistemas operativos poseen el mecanismo de separación de

modos de ejecución en dos o más niveles. Los sistemas empotrados o embebidos y

los de tiempo real pueden prescindir de esta división porque se han creado para
albergar aplicaciones determinadas y no para que cualquier usuario pueda ejecutar

los programas que desee. Los sistemas basados en máquinas virtuales tampoco

Sistemas Operativos Avanzados 8


Tema 1. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

requieren la separación en niveles porque el proceso de interpretación que se lleva a

cabo, ya provee los mecanismos de separación de privilegios necesario.

No obstante lo anterior, la división entre el kernel del sistema operativo y las

aplicaciones de usuario no puede ser tan nítida. La gestión de las cuentas de


usuario y sus claves es una tarea tan importante que se le confía al kernel. Pero se

tiene que permitir a los usuarios cambiar sus claves de alguna manera. Para eso

tiene que existir un programa que realice esta operación aunque sea una aplicación

de usuario sin privilegios.

Funciones del sistema operativo

Otra manera de describir lo que se ha venido diciendo hasta ahora se resume en la

afirmación de que los sistemas operativos se ocupan de crear una máquina

extendida que ofrezca un funcionamiento más sencillo a las aplicaciones, así

como otros servicios extras disponibles para las aplicaciones. Al mismo tiempo el

sistema operativo posee la función exclusiva de gestionar los recursos de todo

tipo, organizándolos para que todas las aplicaciones puedan hacer uso de los

mismos de forma equitativa. Vamos a pasar a describir cada una de estas funciones.

La motivación de la asignación de la primera de estas funciones al sistema operativo

estriba en que la arquitectura de la mayor parte de los computadores (el conjunto de


instrucciones disponibles, la organización de la memoria, la E/S, la estructura de los

buses) supone un conjunto de instrucciones de lenguaje máquina muy primitivo

respecto a los paradigmas de programación modernos. Hay que tener en cuenta

tantos detalles que la convierten en algo extremadamente complicado de

programar, particularmente en un ámbito tan necesario y frecuente como es el de

todas las operaciones de entrada y salida.

Sin entrar dentro de los detalles reales, debería haber quedado claro que el

programador medio no desea, probablemente, implicarse demasiado prolijamente en

los detalles de la programación de las unidades de almacenamiento. Antes bien, lo

Sistemas Operativos Avanzados 9


Tema 1. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

que el programador quiere es tenérselas que ver simplemente con un nivel alto de
abstracción.

En el caso de las unidades de disco una abstracción típica podría consistir en ver el

disco como un almacén de archivos, cada uno de los cuales posee un

identificador. Este identificador puede ser un número único, pero eso es muy fácil

de gestionar para una máquina, pero complicado de recordar para un usuario

humano.

Por lo tanto, la abstracción debe permitir asignar a cada fichero una cadena de

caracteres que para un usuario humano le permita recordar fácilmente cuál es su

contenido. Así el usuario o una aplicación le indicará al sistema operativo el nombre

que le ha dado al fichero que le interesa y le solicitará a continuación consultar los

datos que contiene y probablemente además modificarlos.

Las interfaces gráficas de los sistemas modernos permiten crear la ilusión de que el

usuario ve realmente sus ficheros tal cómo se imagina que están. En las interfaces

de programación, los programadores saben que primero deben abrir el fichero que

la aplicación quiere usar y cerrarlo después de que se completen todas las órdenes

de lectura y escritura que requieran.

En ninguno de los dos escenarios ni el usuario ni el programador tienen que conocer

la tecnología subyacente a la grabación de los datos o la organización final de los

bytes en el espacio de almacenamiento.

El kernel del sistema operativo, junto con otros programas auxiliares que van

estrechamente unidos al mismo, ofrece al programador y al usuario una abstracción

que oculta la realidad que existe en el hardware y se la transforma literalmente

en una vista agradable y simple de un conjunto de archivos con sus nombres e

información en forma de iconos o información textual sobre su contenido y lo que se

puede hacer con ellos, para que las aplicaciones puedan consultarlos y modificarlos

de forma intuitiva y amigable.

Sistemas Operativos Avanzados 10


Tema 1. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

Todos los detalles que incluyen el manejo de interrupciones, temporizadores,

organización de la memoria y otros elementos similares de bajo nivel son sustituidos

por una imagen virtual más simple y fácil de usar que la realidad completa del uso

del hardware subyacente.

Por eso, decimos que una función fundamental del sistema operativo es la de ofrecer

al usuario y al programador la apariencia de que dispone de una máquina

extendida o una máquina virtual, que es más fácil de utilizar que el hardware

subyacente. Para explicar de forma resumida cómo esta función se consigue llevar a

cabo con éxito tenemos que centrarnos en el conjunto de servicios que el sistema

operativo ofrece a los programas y que estos pueden utilizar usando unos comandos

especiales denominados llamadas al sistema. A lo largo de la asignatura

recorreremos algunas docenas de las más importantes para los sistemas operativos

más utilizados.

El concepto de un sistema operativo, visto en primer lugar como proveedor de una

interfaz conveniente en beneficio de los usuarios, es una visión de arriba a abajo.

Otra visión alternativa, de abajo a arriba, sostiene que el sistema operativo tiene la

función de gestionar todas las piezas de un sistema complejo. Los

computadores modernos consisten en procesadores, memorias, temporizadores,

discos, ratones, interfaces de red, impresoras y una enorme variedad de otros

dispositivos externos.

Sistemas Operativos Avanzados 11


Tema 1. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

En esta visión alternativa, el trabajo del sistema operativo consiste en proporcionar

una asignación ordenada y controlada de los procesadores, memoria y

dispositivos de E/S entre todos los programas que compiten por acaparar su uso.

Podemos representarnos un escenario en el que hay tres programas en ejecución en

un ordenador que tratan simultáneamente de imprimir sus documentos en la misma

impresora. Podría ocurrir que las primeras líneas de la página de salida fueran del

programa uno, las siguientes del programa dos, luego otras pocas del programa

tercero y así sucesivamente. Es decir, el resultado sería un caos.

El sistema operativo es el que puede poner orden en el caos potencial, reteniendo

(buffering) todas las salidas de los programas cuando las envían a la impresora en

un disco. Una vez que un programa haya acabado su operación, el sistema operativo

podría entonces copiar la salida que está en el archivo del disco donde está

almacenado y pasársela a la impresora, mientras al mismo tiempo otro programa

puede seguir generando más salida sin tener por qué ser consciente del hecho de

que su salida realmente todavía no está en la impresora (todavía).

Cuando un computador o una red tienen varios usuarios, la necesidad de

gestionar y proteger la memoria, el tiempo de los procesadores, los dispositivos

externos y los demás recursos es todavía mayor, ya que los usuarios podrían
interferir unos con otros. Además los usuarios con frecuencia necesitan compartir no

solamente el hardware, sino también la información en forma de archivos, bases de

datos, imágenes, etc.

Sistemas Operativos Avanzados 12


Tema 1. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

En resumen, esta visión del sistema operativo afirma que su tarea principal es llevar

la cuenta de quién está usando cada recurso, para garantizar la atención de las

peticiones de acceso, para contabilizar el uso y para mediar cuando ocurran

conflictos entre las peticiones de los diferentes programas y usuarios.

Cuando un recurso es multiplexado en el tiempo, los diferentes programas o

usuarios lo usan por turnos. Primero uno adquiere permiso para usarlo, después

otro y otro sucesivamente. Por ejemplo, con una sola CPU y múltiples programas que

aguardan para ejecutarse, el sistema operativo asigna primero la CPU a un

programa, después de que este se haya ejecutado un tiempo que considera

suficientemente largo, otro programa consigue ejecutarse en la CPU, después otro y

al cabo de un cierto intervalo el primer programa puede seguir ejecutándose.

Es el sistema operativo el que determina cómo un recurso se multiplexa en el

tiempo, cómo son los turnos y de cuánto es cada turno.

Otro ejemplo de multiplexación es en el uso de las impresoras. Cuando varios

trabajos de impresión son puestos en cola para ser impresos en la misma impresora,

hay que decidir cuál es el orden de impresión final.

El otro tipo de multiplexación es la multiplexación temporal. En vez de que los

clientes mantengan turnos de uso, cada uno de ellos obtiene derechos de uso de

una parte del recurso. Por ejemplo, la memoria principal es normalmente dividida

entre los diferentes programas que se están ejecutando en un momento

determinado, de forma que cada uno de ellos pueda estar residiendo en ella al

mismo tiempo (por ejemplo para turnarse en el uso del procesador).

Asumiendo que se tiene suficiente memoria para contener varios programas, es más

Sistemas Operativos Avanzados 13


Tema 1. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

eficiente mantenerlos en memoria al mismo tiempo, que ir dando a cada uno el uso

de toda la memoria, particularmente si cada uno no va a usar más que una pequeña

fracción del total de la misma. Evidentemente esto también plantea cuestiones de

reparto justo, de protección, etc. Es el sistema operativo el encargado de resolverlas.

Otro recurso que se multiplexa espacialmente es el disco duro. En muchos sistemas

un disco puede almacenar archivos de muchos usuarios al mismo tiempo. Una

función típica de gestión de recursos por parte del sistema operativo es la asignación

del espacio del disco y la contabilidad de quién está usando cada bloque de datos.

La interfaz entre el sistema operativo y los programas de usuario está definida por el
conjunto de instrucciones extendidas que proporciona el sistema operativo.

Tradicionalmente estas instrucciones extendidas han sido denominadas llamadas

al sistema, aunque son implementadas de muchas maneras por los distintos

sistemas.

En realidad para poder entender cabalmente la funcionalidad de los sistemas

operativos, hay que examinar detenidamente esta interfaz. La forma concreta de

las llamadas al sistema es diferente para sistema operativo pero los conceptos

subyacentes son similares. Por eso, merece la pena estudiar uno o dos conjuntos de

llamadas al sistema en profundidad.

Sistemas Operativos Avanzados 14


Tema 1. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

1.3. Gestión de procesos

Un concepto clave para todos los sistemas operativos es el de proceso.

A esto hay que añadir el conjunto de registros del proceso, que incluye el contador

de instrucciones, el puntero a la pila y otros registros de hardware. También hay que

contabilizar aquí el resto de la información que necesita el sistema operativo para

ejecutar el programa correctamente.

Para entender esto podemos pensar en los sistemas que permiten que varios

procesos se ejecuten al mismo tiempo sobre el mismo procesador:

multiprogramación. En estos sistemas periódicamente el sistema operativo decide

dejar de ejecutar un proceso y comenzar a ejecutar otro, porque el primero ya ha

consumido más de su cuota asignada de tiempo de procesador en el anterior

segundo.

Cuando se suspende un proceso temporalmente de esta forma debe ser reiniciado

más tarde en el mismo estado que tenía cuando fue detenido. Esto significa que

toda la información relacionada con el proceso debe estar almacenada

explícitamente en algún lugar durante la suspensión.

Por ejemplo, podemos pensar que en el momento de la suspensión el proceso tenía

varios archivos abiertos a la vez para leer de los mismos. Asociado a cada archivo

Sistemas Operativos Avanzados 15


Tema 1. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

existe un puntero que proporciona la información de la posición actual, normalmente

la dirección o el número del byte o del registro que será el siguiente en una operación

de lectura. Cuando se suspenda temporalmente al proceso, hay que guardar todos

esos punteros para que la llamada al sistema de lectura que se ejecute después de

la reanudación llegue a leer los datos pertinentes.

En muchos sistemas operativos toda la información relativa a un proceso que no

incluye el contenido de su espacio de direcciones, es almacenada en una tabla del

sistema operativo llamada la tabla de procesos, que normalmente es un array o

una lista enlazada de registros, uno por cada uno de los procesos activos

existentes en el sistema en un instante dado.

Las llamadas al sistema más importantes relacionadas con la gestión de los

procesos son las que tienen que ver con la creación y la terminación de los

procesos.

Un ejemplo importante es el relacionado con un proceso llamado el intérprete de

comandos o Shell, el cual lee los comandos desde un terminal. Imaginemos que un

usuario acaba de teclear un comando que solicita que un cierto programa sea

compilado. El Shell debe en este momento crear un nuevo proceso que ejecute el

programa compilador. Cuando dicho proceso ha concluido la compilación, ejecutará

la llamada al sistema que lo finaliza.

Windows y otros sistemas operativos que tienen una interfaz gráfica (GUI)
proporcionan la posibilidad de que haciendo doble clic sobre un icono de escritorio se

lanza un programa de una manera, muy similar a cuando se teclea su nombre

después del indicador de comandos. En el fondo los GUI no son mucho más que

Sistemas Operativos Avanzados 16


Tema 1. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

simples intérpretes de comandos.

Si un proceso puede crear otro o más procesos (llamados usualmente procesos

hijos) y dichos procesos a su vez pueden crear sus propios procesos hijos, tenemos

rápidamente una estructura en árbol de procesos.

Estos procesos relacionados no es raro que hayan sido creados para realizar

cooperativamente una tarea concreta y, por lo tanto, necesitan poder comunicarse

entre ellos y sincronizar sus actividades. Esta comunicación se denomina,

evidentemente, comunicación entre procesos. Será estudiada también en los

temas siguientes.

Se dispone también de otras llamadas al sistema que solicitan un espacio mayor de

memoria o la devolución o liberación de la memoria que ya no necesitan, que

esperan a que un proceso hijo termine su ejecución, o que se sustituya el programa

que están ejecutando por otro.

También ocasionalmente podemos pensar que se dé la necesidad de que un

proceso transmita información a otro proceso en ejecución que no la está esperando


sin hacer nada. Por ejemplo, un proceso que se está comunicando con otro proceso

que está en otra computadora lo hace por medio de enviar mensajes al proceso

remoto por medio de una red.

Para prevenir que un mensaje o su respuesta se pierdan, el emisor puede solicitar

que su propio sistema operativo lo notifique tras un intervalo especificado en

segundos, de forma que el mensaje sea retransmitido si no se ha recibido un acuse

de recibo. Una vez que el programa pone en marcha el temporizador

correspondiente, puede seguir con su ejecución normalmente.

Cuando haya pasado el número de segundos especificado, el sistema operativo

enviará una señal de alarma al proceso. La señal hace que el proceso suspenda

temporalmente lo que sea que esté haciendo, que guarde los valores de sus

Sistemas Operativos Avanzados 17


Tema 1. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

registros en la pila y comience a ejecutar un procedimiento especial para el

tratamiento de dicha señal, retransmitiendo, por ejemplo, el mensaje probablemente

extraviado. Cuando termina de ejecutarse este procedimiento que maneja la señal, el

proceso en ejecución es reiniciado en el estado en el que estaba justo antes de la

señal.

Las señales son el análogo e n software a las interrupciones de hardware. Son

generadas por diversas causas además de la expiración de temporizadores. Muchos

fallos detectados por el hardware, tales como intentar ejecutar una instrucción ilegal

o usar una dirección inválida, son también convertidos en señales que son enviadas

al proceso culpable.

Sistemas Operativos Avanzados 18


Tema 1. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

1.4. Gestión de memoria

L a memoria es un recurso importante que debe ser gestionado cuidadosamente.

Aun cuando cualquier computadora casera de hoy tiene miles de veces más

memoria que el computador más grande de hace cincuenta años, los programas y

los datos que manejan también han crecido enormemente. Parece que sigue

cumpliéndose la ley de Parkinson que afirma que los programas y sus datos crecen

hasta ocupar toda la memoria de que los sistemas disponen.

Los programadores piden al sistema operativo tener a su disposición memoria de

tamaño infinito y de velocidad máxima, y que además no pierda su contenido en

un fallo eléctrico, es decir, que no sea volátil.

Como esto no es posible de conseguir los sistemas operativos están diseñados

usualmente para usar una jerarquía de memoria con una pequeña porción de

memoria muy rápida, pero cara y volátil, otra parte con cientos de megas de memoria

volátil de velocidad y precio medio (RAM) y, por fin, de miles de gigas de

almacenamiento en dispositivos lentos, pero baratos y no volátiles.

Es función del sistema operativo coordinar el funcionamiento de estas memorias.

Debe existir una parte del sistema operativo que actúe de gestor de memoria

que contabilice en cada instante qué partes de la memoria están en uso y cuáles

están libres, que asigne partes de la memoria a los procesos y la libere cuando

Sistemas Operativos Avanzados 19


Tema 1. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

terminen de usarla, que gestione el intercambio de partes de la memoria al disco

cuando escasee el espacio para contener a todos los procesos. En la mayoría de los

sistemas operativos es una parte del kernel la que se ocupa de gestionar la memoria.

Sistemas Operativos Avanzados 20


Tema 1. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

1.5. Gestión de directorios y archivos

Otro aspecto importante en el diseño de un sistema operativo es que gestiona todos

los datos que producen y procesan las aplicaciones en los discos y otros

dispositivos de almacenamiento. Aunque también el sistema operativo mantiene

gran cantidad de datos sobre procesos y usuarios. La principal abstracción usada

para mantener datos consiste en los ficheros que, análogamente a carpetas que

contienen bytes en vez de papeles, deben ser cuidadosamente mantenidas con

integridad y seguridad porque contienen una buena parte del valor producido por los

sistemas de información.

Relacionadas con la gestión del sistema de ficheros existen una gran cantidad de

llamadas al sistema. Como se ha notado más arriba, una función muy importante

del sistema operativo es ocultar las peculiaridades de los discos y otros

dispositivos de entrada/salida y presentarle por el contrario al programador un

modelo abstracto simple y agradable de archivos cuyo formato es independiente del

dispositivos donde estén almacenados.

Obviamente se van a necesitar llamadas al sistema que creen ficheros, eliminen

ficheros, lean ficheros y escriban ficheros. Antes de que un fichero pueda ser leído,

debe ser abierto, y después de haber sido leído, debe ser cerrado. Por lo tanto,

también se proporcionan llamadas al sistema para realizar estas funciones.

Para proporcionar una organización para la gran cantidad de archivos que los

programas y el sistema producen, los sistemas operativos proporcionan la

abstracción de los directorios.

Los directorios sirven al propósito de agrupar ficheros. Se puede pensar que un

usuario ordenado tendrá un directorio para guardar textos, otro para guardar

imágenes, otro para guardar correos, etc. El sistema operativo no se ocupa del

Sistemas Operativos Avanzados 21


Tema 1. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

contenido de los ficheros, por lo tanto, no impone ninguna ordenación de los

mismos. Lo que hace es proporcionar llamadas al sistema para crear y eliminar

directorios. También facilita llamadas para poner un fichero existente en un directorio

y para quitarlo del mismo. Un directorio no solo puede contener ficheros, también

puede contener otros directorios que su vez pueden contener ficheros y, tal vez,

directorios. Así emerge una estructura de árbol que recorre todo el sistema de

ficheros.

Así que, tanto los procesos como los ficheros, están organizados como jerarquías

en forma de árbol. Sin embargo, las jerarquías de procesos no suelen tener muchos

niveles, normalmente menos de cuatro, mientras que los árboles de directorios es

normal que tengan muchos más niveles de profundidad. Los árboles de procesos no
suelen tener vidas largas más allá de unos pocos minutos. Los árboles de directorios

pueden mantenerse durante años.

También la propiedad y la protección son diferentes en procesos y ficheros.

Normalmente solamente el proceso padre puede controlar o incluso acceder a un

procesos hijo, pero no es raro que se pueda dar acceso a un fichero a usuarios muy

alejados del propietario o creador del mismo o de su equipo.

Cada fichero de un directorio puede ser especificado dando su nombre y su ruta

(path) desde la raíz de la jerarquía de directorios: el directorio raíz.

Sistemas Operativos Avanzados 22


Tema 1. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

En cada instante un proceso tiene un directorio de trabajo asociado, a partir del cual

se pueden referir también las rutas de los nombres de los ficheros que maneja.

Existen llamadas al sistema que permiten al proceso especificar un nuevo directorio

de trabajo.

Otro concepto importante sobre los ficheros es el de los sistemas de ficheros

montados. Casi todos los ordenadores disponen de la posibilidad de leer CDs,

DVDs, pendrives u otros dispositivos de almacenamiento, en los que existe ya o se


puede crear una o varias jerarquías de directorios y ficheros. Estos dispositivos se

pueden añadir y retirar en plena ejecución del sistema operativo.

Las rutas de los ficheros de esos dispositivos removibles no se pueden usar porque

las rutas siempre comienzan en el directorio raíz que está en un disco del sistema.

En algunos sistemas como Windows se puede prefijar la ruta por un nombre que

identifica un disco o unidad diferente.

En otros sistemas como UNIX existe una llamada que permite «montar» una unidad

en el árbol principal de directorios, de forma que al directorio raíz de una unidad, se

le asocia una ruta de un directorio del sistema. Si un sistema contiene varios discos

duros o varios volúmenes en ellos, también serán montados de la misma manera

después que uno de ellos ha sido declarado el principal.

Algunos sistemas operativos definen el concepto de fichero especial. Un fichero

especial no contiene bytes de datos. Son abstracciones que permiten manejar los

dispositivos de entrada/salida como si fueran archivos. Se puede leer y escribir en

ellos usando las mismas llamadas al sistema con las que se leen y se escriben los

ficheros de disco.

Sistemas Operativos Avanzados 23


Tema 1. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

Una última funcionalidad que vamos a ver en este apartado es una que relaciona los

procesos con los ficheros: las tuberías.

Evidentemente ambos procesos tienen que haber creado la tubería y haber


declarado en qué extremo se van a situar. En algunos sistemas la tubería puede

usarse como si tuviera dos canales de comunicación en sentidos contrarios.

Sistemas Operativos Avanzados 24


Tema 1. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

1.6. El Shell: interactividad

El sistema operativo es el código ejecutable que lleva a cabo las funciones de las

llamadas al sistema. Los editores, los compiladores, los ensambladores, los

enlazadores y los intérpretes de comando no son en absoluto parte del sistema

operativo, por muy importantes y útiles que sean. Dicho esto, sin embargo, el

intérprete de comandos, llamado Shell, aunque no sea una parte del sistema

operativo, es el que hace un uso tan extensivo de una gran parte de las

características del sistema operativo que tiene sentido pararnos en él al contemplar

el diseño de un sistema operativo.

Hoy en día muchos sistemas operativos ofrecen una interfaz gráfica al usuario, la

cual ofrece una experiencia más amigable para que el usuario utilice la funcionalidad

básica del sistema operativo. Sin embargo, esa interfaz gráfica no puede

proporcionar todas las posibilidades y versatilidad del intérprete de comandos que le

subyace, por eso los usuarios que no quieren o no pueden verse limitados por las

posibilidades de las interfaces gráficas, tienen que volver al uso del terminal de texto,

cuyo estudio se ofrece en esta asignatura.

Existen muchos intérpretes de comandos, aunque suelen mantener similitudes

derivadas de los que se crearon al principio de la historia de los sistemas operativos.

Cuando un usuario entra en el sistema, se inicia la ejecución del Shell. El Shell tiene

el terminal como entrada y salida estándares por defecto. Comienza mostrando un

carácter concreto como indicador o prompt, por ejemplo el signo de dólar o un

ángulo, el cual indica al usuario que está esperando a que teclee un comando.

Cuando el usuario teclea un comando simple, el intérprete crea un proceso hijo, el

Sistemas Operativos Avanzados 25


Tema 1. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

cual ejecuta el programa correspondiente al comando y que normalmente tiene el

mismo nombre que el comando tecleado. Mientras el proceso hijo se está

ejecutando, el intérprete espera a que finalice. Cuando termina la ejecución del

proceso hijo, el Shell vuelve a mostrar el carácter indicador y trata de leer la siguiente

línea de entrada.

El usuario puede especificar que la salida del comando sea redirigida a un fichero o

que la entrada del mismo sea tomada de otro fichero. La salida de un comando

puede ser dirigida a la entrada de un segundo comando, como si hubiera una tubería

que los conectara a ambos. También se puede indicar al Shell que no espere sin

hacer nada hasta que se termine un comando. Todo esto se expresa por medio de

caracteres especiales reservados para este fin.

Como veremos en temas siguientes, los intérpretes de comandos tienen

características tan interesantes y una productividad tan alta que justifica que aún hoy

en día a pesar de la facilidad de las interfaces gráficas y táctiles, los usuarios que

quieran sacar partido a la potencia de sus sistemas, tienen que conseguir dominar

todas las posibilidades de los intérpretes de comandos.

Sistemas Operativos Avanzados 26


Tema 1. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

1.7. Seguridad

La seguridad es una de las características más buscadas en un sistema operativo

moderno. Con el uso hoy en día de los computadores para almacenar vastas

cantidades de datos, desde la información gubernamental altamente secreta y

esencial hasta las empresas y los negocios que contabilizan los números de las

cuentas bancarias, la seguridad en un sistema operativo es de la más alta

importancia.

Los sistemas operativos implementan generalmente un subconjunto útil de una

matriz tridimensional cuyas dimensiones serían actor, objeto y acción. Nunca se

implementa la matriz completa por razones de eficiencia y de usabilidad. La

seguridad se basa también es las listas de control de acceso que por cada objeto

del sistema mantiene una lista de los actores que pueden manipularlo. Algunos

sistemas operativos lo hacen al revés. Para cada actor mantienen una lista de los

objetos sobre los que el actor tiene permiso para actuar. Se denominan sistemas

basados en capacidades, donde capacidad traduce permisos administrativos.

En la terminología de la seguridad:

▸ Un actor es todo lo que pueda llevar a cabo una acción. Puede ser un usuario, un

proceso, un hilo o similares.

▸ Un objeto es todo lo que pueda ser manipulado por un actor. Por ejemplo ficheros,

claves de registro, campos en bases de datos, dispositivos hardware, etc. Los

actores pueden ser también objetos, de otros actores. Como cuando un proceso
(actor) produce la terminación de otro proceso (que es entonces un objeto).

Sistemas Operativos Avanzados 27


Tema 1. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

▸ Una acción o un derecho es algo que un actor puede hacer hacia un objeto.

Acciones son lecturas y escrituras entre muchos otros.

En los sistemas operativos más usuales la seguridad es discrecional. Es decir, el

propietario de un objeto es quien decide quién más tendrá acceso al mismo. Otra

forma alternativa sería tener un control mandatario no discrecional. Existe una serie

de reglas que obligan por seguridad estableciendo permisos que los usuarios no se

pueden saltar. Esto evita, por ejemplo, que los miembros de una empresa puedan

vender secretos a la competencia. También evita errores por parte de los usuarios.

Los primeros diseños que tenían en cuenta la seguridad eran estrategias de

protección. Cuando un programa accede a zonas sensibles de la memoria como la

página cero, donde se sitúan las rutinas de gestión de interrupciones para facilitar su

invocación, o las páginas donde está cargado el código del núcleo del sistema

operativo mientras se está ejecutando. Los programadores que no entienden bien el

sistema de direcciones de memoria podrían sobrescribir el propio sistema operativo

bloqueando completamente el sistema. Desde el Z80 las CPU fueron diseñadas para

impedir que los procesos de usuario sobrescribieran por error las zonas de memoria
señaladas como del sistema.

Una forma de hacerlo fue crear un espacio de direcciones para el sistema y

controlar su acceso. Se trató de no documentar apenas el modo de acceder al

modo protegido, aunque esto al final resultó inútil. Algunos procesadores

establecieron interrupciones software complejas para cambiar entre el modo de

memoria protegida y el acceso a las áreas de usuario. Cada área de usuario tiene su

propia interrupción software y tiene que realizar una llamada al sistema para acceder

al código del sistema en el área protegida.

Sistemas Operativos Avanzados 28


Tema 1. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

1.8. Objetivos de diseño de un sistema operativo

Como se ha visto, los sistemas operativos que son más usuales han tenido éxito a la

hora de aplicar decisiones de diseño. Merece la pena estudiar el funcionamiento de

los mecanismos que se han implementado porque son soluciones que han

demostrado ser eficientes y eficaces. Al mismo tiempo los sistemas operativos están

en continua evolución y no solamente en cuanto a las interfaces de usuario, gráficas

y táctiles. Esto es debido a que quedan objetivos de diseño por satisfacer.

Podríamos intentar una lista de los objetivos que se buscan en el sistema operativo

ideal:

▸ Seguridad ortogonal.

▸ Elegancia.

▸ Simplicidad.

▸ Integridad.

▸ Resiliencia.

▸ Robustez.

▸ Modularidad.

▸ Uniformidad o consistencia.

▸ Extensibilidad.

▸ Distribución.

▸ Reflexión (incluye monitores).

▸ Orientación a objetos.

Sistemas Operativos Avanzados 29


Tema 1. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

▸ Fiabilidad, tolerancia a fallos.

▸ Auto documentación.

▸ Predictabilidad.

▸ Reversibilidad.

▸ Corrección probada.

L a fiabilidad se refiere a cómo es de robusto un sistema software, es decir, a su

predictibilidad en responder a las situaciones de error, incluso a aquellas producidas

por fallos del hardware. También se puede referir a la capacidad del sistema para

protegerse y proteger a sus usuarios de los daños causados por las aplicaciones de

usuarios, sean estos intencionados o no.

Todos los sistemas operativos que aspiren a durar en el tiempo saben están

abocados a cambiar constantemente porque aparecerán nuevos dispositivos de

hardware o nuevas tecnologías de software. Por lo tanto, los diseñadores tienen que

hacer que su sistema pueda ser fácilmente mejorado. A esta característica se la

denomina extensibilidad.

L a compatibilidad se refiere usualmente a la capacidad de un sistema operativo

para ejecutar programas escritos para otros sistemas operativos o para versiones
más antiguas del mismo sistema.

No todos los objetivos deseables son compatibles entre sí, ni lógica ni prácticamente.

Sin embargo, merece la pena la tarea de crear nuevos diseños y mejorar los

sistemas operativos continuamente para tratar de acercarse al ideal. Conseguir

probar que todo el código de un kernel es correcto, sería perfecto, pero el coste es

prohibitivo. La pregunta es siempre: ¿cuáles son los objetivos de diseño que son más

importantes para centrarse en ellos?

Sistemas Operativos Avanzados 30


Tema 1. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
A fondo

Sistemas operativos libres

http://jeasoft.wordpress.com/2008/07/12/sistemas-operativos-libres/

Un tema importante es el de los sistemas operativos libres. Puedes encontrar un

resumen en esta página.

Sistemas Operativos Avanzados 31


Tema 1. A fondo
© Universidad Internacional de La Rioja (UNIR)
A fondo

Sistemas operativos: Administración de procesos

Este vídeo te va a ayudará a entender mejor cómo el sistema operativo gestiona los

procesos que se están ejecutando en un momento dado.

Accede al vídeo:

https://www.youtube.com/embed/Y7rEqzHf-1Y

Sistemas Operativos Avanzados 32


Tema 1. A fondo
© Universidad Internacional de La Rioja (UNIR)
A fondo

Operating System Defined

Aunque este vídeo está en inglés, con él puedes completar los conceptos básicos de

los sistemas operativos.

Accede al vídeo:

https://www.youtube.com/embed/fBjtp9zWxyk

Sistemas Operativos Avanzados 33


Tema 1. A fondo
© Universidad Internacional de La Rioja (UNIR)
A fondo

Sistemas operativos de tiempo real y empotrados

http://www.comprendamos.org/alephzero/63/sistemas.html

http://gnujavier.blogspot.com.es/2011/06/sistemas-operativos-embebidos.html

Un ámbito de aplicación de los sistemas operativos que tiene un rápido crecimiento

es el de los sistemas operativos de tiempo real y los sistemas operativos embebidos

o empotrados. Puedes encontrar una descripción de ambos diseños en los siguientes

artículos.

Sistemas Operativos Avanzados 34


Tema 1. A fondo
© Universidad Internacional de La Rioja (UNIR)
A fondo

Bibliografía

Mandl, P. (2013). Grundkurs Bertriebssysteme. Wiesbaden: Springer Vieweg.

Silberschatz, A. & Galvin, P. B. (2008). Operating System Concepts. John Wiley &

Sons.

Tanenbaum, A. S. & Woodhull, A. S. (2000). Sistemas Operativos: Diseño e

Implementación. México: Prentice Hall.

Sistemas Operativos Avanzados 35


Tema 1. A fondo
© Universidad Internacional de La Rioja (UNIR)
Test

1. «El sistema operativo ofrece una máquina extendida». ¿Qué significa una

máquina extendida?

A. Una máquina más grande.

B. Una máquina más rápida.

C. Una máquina más fácil de usar.

D. Una máquina más compleja.

E. Una máquina más avanzada.

2. ¿Qué significa que el sistema operativo gestiona los recursos?

A. Todo depende de la versión del sistema operativo.

B. Solamente él puede organizar el uso de los recursos.

C. Lleva la contabilidad de los usuarios.

D. Modifica la fecha y la hora.

3. ¿Qué recurso gestiona el sistema operativo?

A. El lenguaje de programación.

B. El tipo de compilador.

C. Las herramientas gráficas.

D. La memoria.

E. El idioma de uso.

4. Cuando una aplicación se ejecuta en modo usuario:

A. Va más rápido.

B. Puede ser compartida entre varios usuarios.

C. No puede ser compartida entre varios usuarios.

D. No puede acceder directamente al hardware.

Sistemas Operativos Avanzados 36


Tema 1. Test
© Universidad Internacional de La Rioja (UNIR)
Test

5. ¿La seguridad del sistema es tarea únicamente del sistema operativo?

A. Verdadero.

B. Falso.

6. ¿El Shell requiere un nivel de ejecución en modo kernel?

A. Falso.

B. Verdadero.

C. Solamente cuando ejecuta programas del superusuario.

7. ¿Cuáles de las siguientes operaciones requieren el modo kernel de ejecución?

A. Gestión de memoria.

B. Compiladores.

C. Gestor de bases de datos.

D. Planificación del tiempo de ejecución.

E. Cambio de passwords.

8. Uno de los siguientes no es objetivo de diseño de un sistema operativo:

A. Elegancia.

B. Simplicidad.

C. Integridad.

D. Resiliencia.

E. Globalización.

F. Robustez.

Sistemas Operativos Avanzados 37


Tema 1. Test
© Universidad Internacional de La Rioja (UNIR)
Test

9. Uno de los siguientes sí es objetivo de diseño de un sistema operativo:

A. Tamaño.

B. Resistencia.

C. Valoración.

D. Modularidad.

E. Flexibilidad.

10. ¿Por qué es difícil conseguir demostrar que un sistema operativo es totalmente

correcto?

A. Porque depende de muchos factores.

B. Porque es un código extenso y complejo.

C. Porque no se puede corregir a sí mismo.

D. Porque habría que empezar por el final.

Sistemas Operativos Avanzados 38


Tema 1. Test
© Universidad Internacional de La Rioja (UNIR)

También podría gustarte