Recursos y funciones del Sistema Operativo

Clasificado en Informática

Escrito el en español con un tamaño de 242,22 KB

 

El sistema operativo está formado básicamente por gestores para recursos como por ejemplo:

-El/os procesador/es.

-La memoria.

-Dispositivos de entrada/salida.

-Dispositivos de comunicaciones.


Algunas de las funciones que el sistema operativo realiza son:

-Controlar el interfaz con el usuario.

-Permitir el acceso simultáneo de usuarios a un recurso.

-Permitir el compartir datos entre usuarios.

-Controlar los dispositivos de entrada/salida como un disco o una impresora.

-Contabilizar la utilización de recursos por procesos y usuarios.

-Manejar las comunicaciones.

-Organizar el almacenamiento de datos para un acceso seguro y rápido.

-Planificar y controlar la ejecución de procesos y tareas.

MODOS DE EXPLOTACIÓN DEL SISTEMA: PROCESOS POR LOTES Y EN TIEMPO REAL.


Los trabajos que se ejecutan en un ordenador, desde el punto de vista del tiempo de uso del procesador y del tiempo de uso de los dispositivos periféricos, se pueden clasificar en:

-Trabajos limitados por proceso. Son aquellos que consumen la mayor parte de su tiempo procesando información y muy poco en operaciones de entrada/salida.

-Trabajos limitados por operaciones de entrada/salida. Son los que dedican la mayor parte de su tiempo en operaciones de entrada/salida, haciendo poco uso del procesador, que se mantiene inactivo durante grandes períodos de tiempo.

Este segundo tipo de procesos dio lugar a la técnica denominada multiprogramación, que consiste en aprovechar la inactividad del procesador durante la ejecución de las operaciones de entrada/salida de un proceso, para atender a otro proceso.

Desde el punto de vista de cada proceso, todos están siendo atendidos por un procesador, que podemos denominar virtual, aunque en realidad todos están atendidos por el mismo, que conmuta de uno a otro constantemente.

Desde el punto de vista del usuario, se considera que los procesos se están ejecutando en paralelo sin tener en cuenta que en cada momento sólo se atiende a uno de ellos.


Este sistema trae consigo diversos problemas:


- El acceso al procesador debe seguir algún tipo de reglas o políticas que permitan la ejecución de todos los trabajos.

- Se hace necesario algún tipo de administración de la memoria, ya que ésta tiene que ser compartida por todos los trabajos.

- Varios trabajos pueden necesitar la utilización de un recurso al mismo tiempo, dando lugar a problemas de concurrencia.


  • Procesos por lotes (Batch)

Se denominan procesos por lotes en sistemas multiprogramados a los que no precisan intervención del usuario durante la ejecución de los trabajos, tratándose en general de trabajos largos que van entrando en una cola de espera del tipo FIFO (primero en entrar, primero en ser atendido). Según la carga de trabajo del sistema, se irán ejecutando varios de estos procesos “simultáneamente”.

El sistema operativo que trabaja con esta técnica, además de ir gestionando la cola, se encarga de ir tomando los trabajos de la cola, de ejecutarlos y de almacenar sus resultados en soportes válidos para poder ofrecerlos al usuario una vez finalizados.

  • Tiempo compartido (Time Sharing)

La multiprogramación interactiva se desarrolló gracias a la invención de los terminales interactivos (teclado-pantalla) con los que el usuario ya no tenía por que suministrar todos los datos al principio de la ejecución del proceso, sino que podía ir dándolos a medida que el proceso los iba necesitando, de igual forma que iba recibiendo respuesta inmediata a sus datos.

Este modo de trabajo se organiza por sesiones, donde una sesión es todo el conjunto de trabajos que se realizan desde que un usuario se conecta al ordenador hasta que se despide de la misma.

Durante estas sesiones un usuario puede realizar multitud de operaciones controladas por un proceso llamado intérprete de comandos, que mantiene el diálogo entre él y el sistema operativo.


Durante una sesión, el usuario cree tener a su disposición todos los recursos de la máquina, aunque existan otros usuarios con sus sesiones activadas simultáneamente.


Los sistemas de tiempo compartido se caracterizan por:

  • Ser conversacionales.

  • Atender a varios usuarios simultáneamente.

  • Ofrecer tiempos de respuesta relativamente cortos (segundos).

  • Mantener una interrogación secuencial de peticiones de usuarios (polling).

  • Poseer una fuerte gestión de archivos.

  • Utilizar técnicas de buffering y spooling.

  • Gestionar memoria virtual.


En general, los sistemas operativos actuales suelen contener simultáneamente las técnicas de lotes y tiempo compartido; de esta manera cada usuario elige el sistema a aplicar a sus procesos.



  • Tiempo real (Real Time)

El tiempo real es otra modalidad de sistemas operativos multiprogramados. Suele emplearse para ejecutar aplicaciones dedicadas a sistemas de control con sensores donde se necesita un tiempo de respuesta pequeñísimo sobre cualquier petición.


Las características principales del tiempo real son:

- Fuertes restricciones en el tiempo de respuesta (milisegundos).

- La información debe estar permanentemente actualizada.

- El sistema debe permanecer prácticamente inactivo para atender lo más rápidamente posible cualquier evento en la entrada.

- Manejo eficaz de interrupciones.

- Manejo sencillo de prioridades.

- Gestión de memorial real.


Ejemplos de estos sistemas operativos son los que controlan procesos industriales, reservas de billetes, gestión de bolsa, lanzamiento de satélites, etc.



3.1.4.- TIPOS DE SISTEMAS OPERATIVOS: MONOUSUARIO, MULTIUSUARIO, MULTITAREA Y MULTIPROCESO......


Las distintas formas en que se puede explotar un sistema y los procesos que en él se ejecutan dependen del número de usuarios que pretendan explotarlo, de la cantidad de procesos que se pretendan ejecutar, del número de procesadores que se puedan utilizar y del tiempo de respuesta que se tarde en obtener el resultado de la ejecución de un proceso.


  • Número de usuarios. Dependiendo del número de usuarios que pueden explotar un sistema, éste será:

- Monousuario: Cuando sólo puede trabajar un usuario con el ordenador. Todos los recursos del sistema estarán disponibles para él.

- Multiusuario: Cuando varios usuarios pueden ejecutar procesos distintos y compartir el uso de los recursos existentes en el sistema de forma simultánea.


  • Número de procesos. Dependiendo del número de procesos que se pueden ejecutar de forma simultánea en el sistema, se distinguen los siguientes tipos:

- Monoprogramación o monotarea: Cuando sólo se puede ejecutar un proceso y hasta que éste no finalice no puede iniciarse el siguiente.

- Multiprogramación o multitarea: Cuando se pueden ejecutar varios procesos simultáneamente. Estos procesos compartirán el tiempo de uso del procesador o procesadores hasta la finalización de cada uno de ellos.



  • Número de procesadores. Dependiendo del número de procesadores colocados en un mismo ordenador, un sistema será:


- Monoproceso: Cuando se ha instalado un único procesador. Todos los trabajos pasarán por el mismo procesador.

- Multiproceso: Cuando se han instalado varios procesadores bajo un mismo ordenador. Puede ser que un mismo trabajo se ejecute por varios procesadores o, lo que es más común, que cada procesador ejecute un trabajo diferente.


  • Tiempo de respuesta. Según el tiempo que se tarde en obtener el resultado de la ejecución de un proceso, un sistema puede trabajar en:


- Tiempo real: El tiempo de respuesta es inmediato para la solicitud de ejecución de un proceso.

- Tiempo compartido: El tiempo empleado en resolver un proceso dependerá de los procesos que se estén ejecutando. Cada proceso irá consumiendo una fracción de tiempo asignada, una vez agotada esta fracción de tiempo se ejecutará otro proceso. Un proceso deberá consumir tantas fracciones como necesite, cada una en su turno de ejecución, hasta la finalización del proceso.

- Procesos batch: Son procesos cuyos resultados no se necesitan de forma inmediata. Son ejecutados con muy poca prioridad y aprovechan los tiempos que el procesador está más ocioso para ejecutarse, por ejemplo, a la hora de comer o por la noche.


3.1.5.- ARQUITECTURA Y COMPONENTES DE LOS SISTEMAS OPERATIVOS.


  • Sistemas monolíticos:

Consiste en construir el sistema operativo como un conjunto de procedimientos que se compilan por separado y se enlazan entre si en un fichero único

Cada procedimiento se diseña para cumplir una tarea especifica y a cada uno se le define una interfaz que le permite llamar a cualquiera de los otros procedimientos siempre que lo necesite.

  • Sistemas en estratos o jerárquicos:

Consiste en dividir el Sistema Operativo en una serie de estratos o capas, en torno a un núcleo principal. Cada una de las capas tiene una función determinada y dependiendo de esa función, tienen más o menos prioridad. Las operaciones principales del núcleo se realizan, casi directamente, sobre los elementos físicos (circuitos) del ordenador. Las siguientes capas se dispondrán sobre este núcleo principal acercándose cada vez más al usuario. A medida que se llegue a la capa del usuario las funciones que se puedan realizar serán de menor prioridad que las que realizan las capas más cercanas al núcleo.

En general, un sistema se puede estructurar o dividir en cuatro capas o niveles:

  • Nivel núcleo: Es el que se encarga de controlar todo lo que ocurre en el ordenador. Gestiona los procesos para ser ejecutados. Son fundamentalmente sistemas operativos multiusuario. Este nivel se encarga de realizar tareas básicas del sistema, comunicación con el hardware, planificación de procesos, etc.

  • Nivel ejecutivo: Sobre este nivel se realiza la administración y gestión de la memoria.

  • Nivel supervisor: Se encarga de realizar la comunicación de cada proceso entre el sistema y el usuario. Controla y coordina la gestión de entrada / salida de los diferentes procesos hacia los periféricos.

  • Nivel usuario: Es el que controla los procesos que esta utilizando el usuario, sin preocuparse de la gestión de memoria, de la gestión de la entrada / salida ni de nada en especial.


Otra forma de ver este tipo de sistema es en forma de anillos concéntricos. En este sistema, cada anillo tiene una puerta por donde pueden entrar las llamadas de las capas superiores. De esta forma las capas mas internas serán mas privilegiadas y estarán mas protegidas de accesos indeseados, desde las capas mas externas.

En esta estructura se basan prácticamente la mayoría de los sistemas operativos actuales.


  • Máquina virtual:

VM/370 fue el primer sistema operativo del tipo Máquina Virtual. Se trata de un sistema de tiempo compartido que ofrece:

  • 1º multiprogramación y

  • 2º una maquina extendida (virtual) con una interfaz mas adecuada que el hardware simple


La esencia de VM/370 consiste en separar completamente esas 2 funciones.


  • Cliente-Servidor:

Es el tipo mas reciente de S.O, puede ser utilizado en cualquier clase de máquina (grande o pequeña). Esta basado en la idea de desplazar código del S.O. a estratos superiores dejando un núcleo o kernel mínimo. El método consiste en desarrollar la mayoría de las funciones del S.O. en procesos de usuario.

Un proceso de usuario (proceso cliente) para leer de un fichero, lo solicita mediante un mensaje a un proceso servidor, que realiza el trabajo y después le devuelve la respuesta (el bloque leido). Durante este proceso todo lo que hace el kernel es manejar la comunicación entre procesos clientes y procesos servidores.



Este tipo de sistema operativo tiene mecanismos para la gestión de memoria, de procesos (pueden ser tanto clientes como servidores) y para la comunicación entre procesos.

Otra ventaja del modelo cliente-servidor es que se puede utilizar en sistemas distribuidos.

Si un cliente se comunica con un servidor mediante mensajes, el cliente no necesita saber si el mensaje viene de su propia máquina, o si se envió a través de una red desde una máquina remota.

En ambos casos, distribuidos o no, el cliente manda una solicitud y recibe una respuesta.


3.1.6.- SEGURIDAD DEL SISTEMA Y LA INFORMACIÓN.


Los programas de aplicación de los usuarios no están exentos de errores, así como los sistemas tampoco están libres de usuarios con malas intenciones. Por ello, el sistema operativo debe incluir ciertas funciones de protección con objeto de evitar problemas entre procesos y entre éstos y el propio sistema operativo.


  • Protección de la entrada/salida


Todos los dispositivos externos aportan al sistema operativo rutinas especificas para el control de las operaciones de entrada/salida. Estas rutinas se denominan controladores o drivers de dispositivos y entre otras funciones protegen los accesos incorrectos, pasando el control al núcleo del sistema operativo, indicándole la situación errónea que se ha producido para que actué en consecuencia.


  • Protección de la memoria


En general, cada proceso tiene una zona de memoria asignada para su código y para el tratamiento de sus datos denominada espacio de direccionamiento y no puede acceder a otras zonas de memoria asignadas al sistema operativo o a otros procesos. Para evitarlo existen unos registros frontera que indican los límites de la memoria asignada a cada proceso.


Si un proceso intentase acceder a direcciones que están fuera de su espacio de direccionamiento, será detectado por el sistema operativo que informará del error producido.

  • Protección del procesador


Otro tipo de problemas que pueden presentarse es la presencia de bucles infinitos o accesos al procesador que no lo liberan nunca. En estos casos la única solución seria hacer un reset, es decir, apagar y volver a encender para comenzar desde el principio.

Para evitarlo, el hardware incluye un temporizador que marca períodos de tiempo, de manera que al terminar uno de estos períodos se produzca una interrupción y tome el control el sistema operativo.



3.2.- FUNCIONES DEL SISTEMA OPERATIVO, GESTION DE RECURSOS.


El núcleo (kernel) de un sistema operativo esta formado por un conjunto de rutinas cuya misión es la de gestionar el procesador, la memoria, la entrada/salida y el resto de recursos disponibles en el ordenador. Toda esta gestión es necesaria para atender al funcionamiento y peticiones de los trabajos que se ejecutan en el sistema.


3.2.1.- GESTION DE PROCESOS Y DEL PROCESADOR.


Uno de los conceptos mas importantes dentro de un sistema operativo es el de proceso, ya que lo podemos considerar como su unidad de trabajo.

Un sistema operativo además de ejecutar su propio código consistente en un conjunto de procesos, también ejecuta los procesos creados a petición de los usuarios durante sus sesiones de trabajo.

Ambas clases de procesos, los del sistema y los de usuario, pueden ejecutarse concurrentemente.


Dentro del sistema operativo es el núcleo el encargado de dar servicio a los procesos siendo el responsable de la creación y eliminación de procesos, tanto del propio sistema como de los usuarios, de la planificación de procesos y de proporcionar los mecanismos para la sincronización, comunicación y manejo de bloqueos mutuos entre procesos.




3.2.1.1.- Definición y concepto de proceso.


Para entender el funcionamiento de los sistemas operativos hay que entender la diferencia entre un programa (conjunto de instrucciones) y un proceso (instrucciones ejecutándose).


Un proceso es un programa en ejecución junto con todo su entorno asociado (ficheros, registros, variables, e instrucciones que forman el programa en ejecución).


Cuando el sistema recoge la orden de ejecución de un programa, lo convierte en proceso, para lo cual realiza una serie de tareas:


  • lo coloca en la cola de trabajos, formada por todos los procesos residentes en memoria secundaria que están esperando la asignación de la memoria principal.

  • busca en memoria principal una zona donde alojar tanto sus ordenes en lenguaje máquina como las variables que tenga definidas, o como la pila del proceso que contendrá datos temporales durante su ejecución,

  • busca en memoria secundaria las instrucciones que forman el programa y las aloja en el lugar adecuado,

  • asigna el resto de recursos que vaya a necesitar para su ejecución y

  • le crea su PCB, en la cola de procesos preparados, dejándolo a la espera de que le sea asignado el uso del procesador.



Es decir, que un proceso es un programa ejecutándose en un momento dado con unos datos y unos recursos concretos.

El entorno de un proceso estará compuesto por:

- Registros (PC, SP, .,.).

- Datos en pila (stack).

- Datos en variables.

- Instrucciones del programa en ejecución.

3.2.1.2.- El bloque de control del proceso (PCB)

Un proceso se representa internamente para el sistema operativo, por un conjunto de datos llamado Bloque de Control del Proceso (PCB), donde se incluyen el estado en cada momento, recursos utilizados, registros, etc.


En general, la información contenida para cada proceso en el bloque de control de procesos es la siguiente:

- Estado del proceso. Información relativa a la prioridad del proceso, al modo de ejecución, etc. Y también información a cerca del estado de los registros internos del ordenador relativos al proceso, como por ejemplo el contenido del contador de programa (PC), o el contenido del acumulador, etc,


- Estadísticas de tiempo y ocupación de recursos para la gestión de la planificación del procesador.


- Ocupación de memoria interna por el proceso y sus datos.


- Recursos en uso (normalmente unidades de entrada/salida).


- Archivos en uso.


  • Privilegios.



El Sistema Operativo gestiona listas con los PCBs de todos los procesos para:

- La localización de la información que se tiene sobre cada proceso.

- Mantener registrados los datos de cada proceso en caso de tener que suspender temporalmente su ejecución o de reanudarla.


Estas informaciones se encuentran en memoria principal y se accede a ellas en los momentos en que se hace necesaria su actualización o consulta.


Llamamos cambio de proceso al conjunto de acciones que debe realizar el sistema operativo para cambiar la ejecución de un proceso llamado A por la ejecución de otro proceso llamado B.



3.2.1.3.- El Estado de los procesos.


Los bloques de control de los procesos se almacenan en colas, cada cola representa un estado particular de los procesos, existiendo tantos tipos de colas como estados distintos pueda adoptar el proceso. Es decir que habrá una cola de procesos bloqueados. Otra de procesos preparados, etc.

Los estados de los procesos son manejados por el sistema operativo haciéndolos transparentes al usuario que cree que su proceso estará siempre en ejecución.


Los estados de los procesos se pueden dividir en dos tipos: Activos e Inactivos.


  • Estados activos

Son aquellos que compiten por el procesador o están en condiciones de hacerlo. Se dividen en:


Ejecución. Estado en el que se encuentra un proceso cuando tiene el control del procesador. En un sistema monoprocesador este estado sólo lo puede tener un proceso.


Preparado. Aquellos procesos que están dispuestos para ser ejecutados, pero no están en ejecución por alguna causa (interrupción, haber entrado en cola estando otro proceso en ejecución, etc.). Están esperando su turno para poder utilizar su intervalo de tiempo.


Bloqueado. Son los procesos que no pueden ejecutarse de momento por necesitar algún recurso no disponible (generalmente recursos de entrada/salida).



  • Estados inactivos

Son aquellos que no pueden competir por el procesador, pero que pueden volver a hacerlo por medio de ciertas operaciones. En estos estados se mantiene su bloque de control del proceso aparcado hasta que vuelva a ser activado. Se trata de procesos que no han terminado su trabajo por causas que lo han impedido (por ejemplo, ausencia del disquete en la disquetera, carga de papel en una impresora, etc) y que pueden volver a activarse desde el punto en que se quedaron sin que tengan que volver a ejecutarse desde el principio. Son de dos tipos:


Suspendido bloqueado. Es el proceso que fue suspendido en espera de un evento, sin que hayan desaparecido las causas de su bloqueo.


Suspendido preparado. Es el proceso que ha sido suspendido, pero ya no existe la causa que le hizo estar bloqueado.



Transición de estado: Se llama así a cada uno de los cambios que puede experimentar un proceso a lo largo de su existencia.


Estas transiciones son las siguientes:


- Comienzo de la ejecución.

Todo proceso se crea al ser dada la orden de ejecución del programa (suele necesitar varios argumentos, como el nombre y la prioridad del proceso). Se crea en este momento el PCB, que será insertado en la cola de procesos preparados. El encolamiento dependerá de la política de gestión de dicha cola.


- Paso a estado de ejecución.

Cuando el procesador se encuentre inactivo y en la cola de preparados exista algún proceso en espera de ser ejecutado, se pondrá en ejecución el primero de ellos.


- Paso a estado bloqueado.

Un proceso que se encuentre en ejecución y que solicite una operación a un dispositivo externo (unidad de entrada/salida), teniendo que esperar a que dicha operación finalice, será pasado de estado de ejecución a estado bloqueado, insertándose su PCB en la cola correspondiente de bloqueados. A partir de ese momento el procesador pone en ejecución el siguiente proceso, que será el primero de la cola de preparados.


- Paso a estado preparado.

Este paso puede ser producido por alguna de las siguientes causas:


- Orden de ejecución de un programa, con lo cual, como ya se ha dicho, el proceso pasa a la cola de preparados.


- Si un proceso está en estado bloqueado por causa de una operación de entrada/salida y ésta finaliza, pasará de la cola de bloqueados a la de preparados.


- Si un proceso está en ejecución y aparece una interrupción que fuerza al sistema operativo a ejecutar otro proceso, el primero pasará al estado preparado y su PCB a la cola de preparados.


- Activación. Un proceso suspendido previamente sin estar bloqueado pasará al estado preparado al ser activado nuevamente.


- Paso a estado suspendido bloqueado. Si un proceso está bloqueado y el sistema operativo recibe la orden de suspenderlo, su PCB entrará en la cola de procesos suspendidos bloqueados.


- Paso a estado suspendido preparado. Este paso se puede producir bajo tres circunstancias:

- Suspensión de un proceso preparado pasando éste de la cola de procesos preparados a la de suspendidos preparados.


- Suspensión de un proceso en ejecución, con lo cual el proceso pasa a la cola de suspendidos preparados.


- Desbloqueo de un proceso suspendido bloqueado por desaparecer la causa que impedía el ser activado de nuevo.


Destruir un proceso. Se trata de eliminar el proceso cuando termina su ejecución. El sistema operativo extrae su PCB de la cola en la que se encuentre y a continuación lo destruye. Un proceso también puede ser destruido si hay que interrumpirlo por alguna causa excepcional (error, decisión del usuario o del propio sistema operativo).



3.2.1.4.- GESTION DEL procesador.


En este punto se estudian las distintas políticas y los mecanismos más comunes que poseen los sistemas operativos actuales para realizar la gestión del procesador. Dicha gestión se conoce con el nombre de planificación, siendo su principal objetivo optimizar el uso del procesador estableciendo el orden en el que se tienen que ejecutar los procesos que existan en un momento dado en el sistema.


Como vemos en el siguiente gráfico existen varios niveles de planificación.




Planificación a largo plazo (planificador de trabajos). En un sistema de tiempo compartido tiene como misión cargar en memoria los programas que se desean ejecutar.

Este nivel es, por tanto, el encargado de crear los procesos, creando su bloque de control y poniéndolo en la cola de activos preparados.


Planificación a medio plazo (planificador de swapping). Éste nivel gestiona los procesos suspendidos. Decide si un proceso que esta en ejecución en estado bloqueado o suspendido debe ser extraído de la memoria temporalmente. Posteriormente, cuando el sistema se encuentre más descargado, devolverá dicho proceso a la memoria y al estado de activo preparado. Esta técnica se conoce con el nombre de swapping y será estudiada al tratar la gestión de la memoria. Sólo existe en sistemas de tiempo compartido que tienen gestión de memoria virtual.

Planificación a corto plazo (planificador del procesador). También llamado dispatcher. Es el encargado de decidir cual de los procesos preparados residentes en memoria podrá hacer uso del procesador.

Gestiona las funciones básicas de la multiprogramación dando un buen servicio a los procesos interactivos para que el usuario no perciba que está compitiendo con otros usuarios por el uso del procesador.

Cada vez que un proceso (interno o externo) hace que se modifique el estado global del sistema, el dispatcher se activa y toma el control para realizar los siguientes pasos:

  • Decidir si debe cambiar el proceso.

  • Salvar el entorno volátil actual.

  • Decidir el proceso que se va a ejecutar, de entre los preparados.

  • Cargar su entorno volátil y transferirle el control.

3.2.1.5.- CRITERIOS DE PLANIFICACIÓN.


La planificación del procesador se encarga de decidir a cuál de los procesos que están en la cola de procesos preparados se la asignará a la CPU.

Debido a la variedad de algoritmos de planificación existentes, se han propuesto diferentes criterios para poder compararlos, siendo los más importantes:


  • Tiempo de procesador. Es el tiempo que un proceso está utilizando el procesador. Sin contar el tiempo que se encuentra bloqueado por operaciones de entrada/salida.


  • Tiempo de espera. Es el tiempo en que los procesos están activos pero sin ser ejecutados. La suma de los tiempos de espera en las distintas colas.


  • Tiempo de ejecución. Es el tiempo teórico que necesitaría el proceso para ser ejecutado si fuera el único presente en el sistema. Será el total del tiempo de uso del procesador mas el tiempo consumido en operaciones de entrada/salida.


  • Tiempo de retorno o de servicio. Es el tiempo total que tarda en ejecutarse un proceso. Este tiempo incluye el tiempo de carga del programa en memoria, el tiempo de espera en la cola de procesos preparados, el tiempo de ejecución en el procesador y el tiempo consumido en operaciones de entrada/salida.


  • Eficiencia. Se refiere a la utilización del procesador, que debe estar el mayor tiempo posible ocupado para lograr así un gran rendimiento.


  • Productividad o rendimiento. Es el número de trabajos o procesos realizados por unidad de tiempo, que debe ser lo mayor posible.

Algoritmo 5.- Colas múltiples con realimentación.

El método de colas múltiples con realimentación divide los procesos en varias colas de procesos preparados, cada una con su propia política: cola 1, cola 2, cola 3, y así sucesivamente, de manera que las de numeración más baja tendrán asignadas mayor prioridad.


Para asignar el procesador se selecciona el primer proceso de la cola de mayor prioridad que contenga algún proceso. Un proceso que haya consumido el quantum asignado a su cola un determinado número de veces, si haber finalizado su ejecución, será colocado al final de la cola de prioridad inmediatamente inferior a la que tenía con anterioridad.

Esta política intenta dar un trato justo a los procesos por medio de separación de los mismos en categorías, para así darles el servicio que necesitan.


gESTION DE MEMORIA.


Debemos considerar la memoria principal como un recurso imprescindible, ya que tanto el procesador como los dispositivos de entrada/salida acceden a ella para leer y/o grabar la información que manejan.

Ya sabemos que para que un programa de ordenador pueda ser ejecutado tanto él como los datos que vaya a manejar deben estar almacenados en la memoria principal, (en lo que llamaremos espacio de direccionamiento).

En sistemas multiprogramados donde varios programas pueden ejecutarse de forma simultanea será necesario una buena gestión de memoria para que dichos programas y sus datos puedan alojarse simultáneamente en memoria sin que se mezclen sus espacios de direccionamiento.



GESTORES DE MEMORIA.


La parte del sistema operativo encargada de controlar la memoria es el AdministradoroGestor de memoria.

La gestión de memoria consiste en la asignación de zonas de la memoria física del ordenador a los diversos procesos que la soliciten con el objeto de activarse y entrar en ejecución.

Por lo tanto debe controlar, de la forma más eficiente posible, las partes de memoria que se están utilizando y las que no, para poder asignar espacio de memoria a los nuevos procesos y liberar el espacio utilizado por los procesos que van finalizado.

También se encarga de gestionar el intercambio de procesos, entre memoria y disco, cuando esta esté totalmente ocupada, para dejar espacio a otros procesos.

-Asignación de direcciones.

Hasta ahora sabemos que los programas, para ser ejecutados, deben estar en memoria e incluso en algunos casos compartir memoria con otros programas, pero, ¿en qué direcciones se deben cargar estos programas?


Cuando se crea un programa, lo que se hace es definir una serie de sentencias u ordenes que habrán de ejecutarse en una secuencia determinada. Posteriormente, mediante el compilador adecuado se traducirá el programa fuente a lenguaje máquina.

El compilador va numerando, consecutivamente, cada instrucción generada en lenguaje máquina, de forma que cada numero equivale a la dirección lógica de una instrucción. A la primera instrucción, le corresponde la dirección 0, llamada cero relativo, teniendo las instrucciones que le siguen un desplazamiento con respecto a ella. A esta operación que configura el espacio lógico de direcciones, se le llama asignación de direcciones relativas al programa.


El rango de direcciones lógicas se establece entre el cero relativo y el numero correspondiente a la dirección asignada a la última instrucción. De esta forma las referencias a direcciones durante la ejecución del programa deben hacerse a direcciones que estén dentro de este rango, o se producirán errores.


A la hora de ejecutar el programa, el cargador del Sistema Operativo, lo colocará en memoria a partir de una dirección física, que no tiene porque ser la dirección 0, asignándole al cero relativo una dirección real, quedando definidas a partir de ella el resto de direcciones del programa.


Se produce así la transformaciónde direcciones relativas en direcciones absolutas o reales, quedando definido el espacio de direccionamiento físico para dicho programa en memoria real.


Esta separación entre la visión del usuario (espacio lógico de direcciones ) y la memoria real (espacio físico) permite gestionar la memoria real con mayor eficacia, ya que independiza el desarrollo de un programa de su futura dirección de carga en memoria.


-Reasignación de direcciones

Existen dos formas de realizar la reasignación:


La reasignación estática consiste en que durante la carga del programa, el CARGADOR modifica todas las direcciones lógicas del programa sumándole a cada una de ellas la dirección base de carga, actualizando así el código del programa mientras lo pone en memoria. Por lo tanto cuando se ejecuta el programa, las referencias se harán a direcciones físicas reales de la memoria.


La reasignación dinámica El programa es cargado en memoria sin modificar las direcciones lógicas, y cuando el programa se esté ejecutando, cada vez que acceda a una dirección, un dispositivo especial del hardware la intercepta y le suma automáticamente la dirección base de carga para obtener la dirección física (real) correspondiente.



-MONOPROGRAMACION.

Veremos a continuación cómo se ha venido gestionando la memoria en sistemas que utilizan la Monoprogramación como modo de trabajo.


La memoria dedicada.

En los primeros ordenadores

el programador accedía directamente al hardware y él mismo gestionaba la memoria en sus programas. En aquellos primeros equipos la memoria era ocupada por un solo programa, no existía sistema operativo y por lo tanto, tampoco gestor de memoria. La memoria que no era utilizada por el programa quedaba inutilizada.

División de la memoria. El monitor residente.

La utilización de sistemas operativos obligó a dividir la memoria en dos zonas, una reservada para el propio sistema, para el monitor residente, y la otra, el resto de la memoria, para ser utilizada por el usuario. La que sobraba quedaba inutilizada.


El hecho de compartir la memoria hace necesaria la creación de un mecanismo que proteja la zona de memoria ocupada por el sistema operativo contra cualquier intento de acceso, voluntario o no, por parte de los programas de usuario.


Para ello se establece una dirección frontera que limita la zona del sistema operativo. Cualquier dirección de memoria que solicite un programa de usuario se compara con dicha dirección frontera, permitiendo el acceso o no, según corresponda. Este control se realiza directamente por el hardware, a través de uno de sus registros, que toma el valor de la dirección frontera.


Gracias al desarrollo de dispositivos de almacenamiento rápidos (discos), se creó la técnica de intercambio de almacenamiento o swapping, que consiste en que cuando un programa cargado en memoria queda a la espera de algún evento, el sistema operativo lo descarga (swap-out) a disco, y carga, en su lugar, el programa de otro usuario (swap-in).




Una mejora de la técnica consistió en solapar la ejecución de un programa con el intercambio de otro, para lo cual, el sistema divide la zona de usuario en dos partes, mientras que en una se está procesando un programa, en la otra se está cargando otro.



Hasta aquí hemos visto sistemas en los que sólo existe un programa de usuario en la memoria principal, es decir, sistemas que trabajan en monoprogramación.


Con el solapamiento en el intercambio se introduce un nuevo modo de trabajo en el que en un momento dado existen varios programas de usuario en la memoria. Es lo que veremos a continuación.



3.2.2.1.2.- MULTIPROGRAMACION.


Para poder repartir el procesador entre varios procesos, necesitamos tenerlos en memoria principal, por ello se divide ésta en trozos denominados particiones, donde se cargarán los diferentes procesos. El número de particiones indicará el grado de multiprogramación del sistema.


El gestor de memoria en sistemas multiprogramados debe tener controladas las direcciones tanto de inicio como de fin de las particiones de memoria en las que se alojan todos los programas.


O bien, la dirección de inicio y el tamaño de la partición. Con ello puede controlar que los direccionamientos por parte de los programas sean correctos, porque estén dentro de los límites permitidos.



También necesita conocer en todo momento las zonas ocupadas y las libres, ya que tiene que gestionar las tareas de asignación y de liberación de espacios de direccionamiento, según se vayan creando o acabando los distintos procesos.

En los sistemas multiprogramados se plantea el problema de cómo asignar la memoria a los distintos programas que la soliciten para poder ejecutarse. A los largo de la historia se han ido adoptando distintas técnicas:


-Definiendo particiones fijas (de igual o distinto de tamaño) de forma que en cada una de ellas se aloja el programa en base a su tamaño.

Tiene la ventaja de que establece los limites de las particiones y de que puede controlar fácilmente las que están ocupadas y las libres.

Pero tiene el problema de que los programas no se ajustan exactamente a las dimensiones de las particiones. Por lo tanto habrá programas que no quepan en ninguna partición y particiones que no estén totalmente ocupadas, produciendo lo que se le llama fragmentación interna


-Con particiones de tamaño variable: No hay límites preestablecidos, sino que las particiones se van creando con el tamaño justo, conforme los programas solicitan memoria. Tiene que existir un mecanismo que sea capaz de ir controlando el tamaño y los limites de cada partición, así como, de controlar que zonas están ocupadas o libres para asignar a nuevos programas.

Tiene el inconveniente de que con la entrada y la salida de programas, la memoria se fragmenta


(fragmentación externa) y cada cierto tiempo, se hace necesario recolocar las zonas de memoria utilizadas para lograr un único hueco de memoria disponible, en el que poder cargar nuevos programas. Esta operación llamada compactación, obliga a la paralización momentánea de todos los trabajos en curso ya que necesita el uso exclusivo del procesador. Además exige que los programas sean reubicables.



Hay una rutina del sistema que gestiona la interrupción de falta de pagina realizando los siguientes pasos:

-Encontrar la página que contiene la dirección solicitada en el almacenamiento secundario.

-Buscar un frame libre en memoria principal

-Si hay un frame libre, carga la pagina en él y actualiza las tablas afectadas por el cambio.

-Si no existe, utilizar un algoritmo de sustitución para seleccionar la página a reemplazar.

-Salvar la página a reemplazar en el almacenamiento secundario, actualizando las tablas afectadas.

-Cargar la página solicitada en el frame libre y actualizar las tablas correspondientes.

-Continuar con la ejecución del programa.



ALGORITMOS DE SUSTITUCIÓN:


Algoritmo óptimo:

se basa en seleccionar para su sustitución la página que vaya a tardar más en ser utilizada. ya que su ausencia tardará más en hacerse sentir y durante ese intervalo pueden acabar otros procesos con la consiguiente liberación de frames.

La dificultad de esta solución radica en la imposibilidad de prever el comportamiento futuro de los procesos, pero como en otras muchas situaciones, se puede prever, en cierta medida dicho comportamiento, partiendo de la experiencia del pasado, de las referencias a memoria que hasta el momento han realizado los procesos.


Los algoritmos que se han ideado para controlar la sustitución parten de la utilización pasada de las páginas para aproximarse a la solución óptima.

Su idoneidad quedará definida por el número de faltas de página que provoca y por el coste de su utilización (la sobrecarga que produce en el sistema).

Un factor que condiciona el número de faltas de página es el número de frames disponibles en el hardware. En general, a más frames menos faltas.


Algoritmo de sustitución FIFO:

Cuando se necesite sustituir una página, se elegirá aquella que lleve más tiempo en memoria.

Para controlar el tiempo de permanencia en memoria de las páginas, este algoritmo utiliza una cola que controla su llegada a memoria. La primera de la cola será aquella que lleve más tiempo cargada y, según el criterio FIFO, será la primera en ser sustituida.

Un criterio de selección tan simple es fácil de programar y a la vez producirá poca sobrecarga en el sistema, pero su eficacia es relativa.

Es probable que la página que lleve más tiempo en memoria es la que mas se utilize, por lo que en este caso, este algoritmo sustituirá la página menos adecuada, provocando inmediatamente una sucesión de falta de páginas.



Algoritmo LRU:

Este algoritmo es una buena aproximación a la solución óptima, Se considera que aquellas páginas muy usadas en el pasado reciente lo serán también en el futuro, también se considera que las páginas poco utilizadas en el pasado seguirán siéndolo en el futuro, por lo que se deberá sustituir aquella que haya sido menos usada recientemente (Least Recently Used).

En este caso, la utilización del tiempo de uso es un criterio que refleja mucho mejor el comportamiento de los procesos en su utilización de la memoria.


Ponerlo en práctica es relativamente fácil, ya que el sistema debe contabilizar, de alguna forma, el tiempo en el que se produce cada referencia a memoria para poder clasificar las páginas según su uso. Este control se puede realizar de varias maneras, pero la solución más simple es mantener una pila de los números de las páginas utilizadas.

Cada vez que se utiliza una página, su número se coloca al principio de la pila. En un momento determinado la página menos recientemente utilizada será la del fondo de la pila.

Otros algoritmos

Dadas las dificultades del algoritmo LRU, se ha tratado de encontrar algoritmos más sencillos y menos costosos de realizar.

Una práctica bastante extendida es la utilización de un bit de referencia asociado a cada entrada de la tabla de páginas. Cada vez que se utiliza una página, el hardware activa el bit correspondiente. Conforme se van utilizando las distintas páginas cargadas en memoria se activan sus bits de referencia y, en un instante dado, aquellas cuyos bits estén a cero, serán candidatas a ser reemplazadas. En general, los bits de referencia se restauran cada cierto tiempo (puesta a cero).


Otro algoritmo es el denominado menos frecuentemente usado(LFU-Least Frequently Used). Consiste en asociar un contador a cada página, de tal forma que, a intervalos regulares, se produce una interrupción que pasa control al sistema y éste añade al contador de cada página el valor del bit de referencia, poniendo después a 0 todos los mencionados bits de referencia. Cuando se produce una falta de página se sustituirá aquella cuyo valor del contador sea menor.

En ocasiones, algunos algoritmos se complementan utilizando un bit de modificación por cada página, indicando si el contenido de la misma ha variado o no desde que se cargó en memoria. Se deben sustituir preferentemente aquellas páginas que no se hayan modificado, pues así se evita tener que salvar su contenido en el almacenamiento secundario, con el consiguiente ahorro en operaciones de entrada/salida.




CRITERIOS DE SUSTITUCIÓN DE PAGINAS.


Si se produce una falta de página en nuestro sistema, cualquiera de los algoritmos analizados nos puede ayudar, con mayor o menor efectividad, a seleccionar la página a sustituir. Pero, ¿entre qué páginas elegimos?, ¿las del propio proceso (selección local o por proceso) o entre todas las existentes (selección global o general)?

GESTION DE PERIFÉRICOS.


Pensemos en la variedad y cantidad de dispositivos periféricos que existen hoy día y en las diferencias que existen entre ellos a todos los niveles. Algunas de las características que los diferencian son:


  • En la velocidad de funcionamiento.

  • En el modo de comunicarse; síncrona o asíncronamente.

  • En el modo de representar los datos, etc.

Hay que tener en cuenta que los procesos no tienen por que conocer las características propias de cada periférico, lo único que deben hacer es intercambiar datos con ellos. Por tanto, sus peculiaridades deben ser enmascaradas para que las operaciones de entrada/salida sean independientes del tipo y modelo del dispositivo.


La parte del sistema operativo, que se encarga de controlar todos los dispositivos de E/S conectados al ordenador es el gestor de Entrada/Salida

Es el encargado de proporcionar una interfaz, que aísle de las características propias de los dispositivos, permitiendo el traspaso de información, en ambos sentidos, entre los dispositivos periféricos y el procesador o la memoria.



Los objetivos que debe cumplir el gestor de dispositivos de E/S, son:


-Proporcionar una interfaz entre los dispositivos y el resto del sistema. De forma que se pueda trabajar con ellos, de forma abstracta, realizando funciones genéricas como leer o escribir, independientemente de las características del dispositivo. (discos duros, disqueteras, cd-rom, etc)


-Tratamiento de errores. Debe controlar los errores que se produzcan durante la utilización de los periféricos. Los errores deben manejarse lo mas pegados posible al hardware.


-Contemplar dispositivos compartidos y dedicados. Debe permitir el uso por parte de los procesos de los dispositivos compartidos, así como bloquear cualquier dispositivo dedicado cuando un proceso necesite su uso para que otros procesos no lo puedan utilizar. (Ej: bloquear la impresora en uso por un proceso, para que otro no la pueda usar)


-Gestionar la transferencia asíncrona ordenador-periférico. Mediante el uso de buffers intermedios que amortigüen sus diferentes velocidades de funcionamiento.



DISPOSITIVOS HARDWARE


Existen 2 clasificaciones en las que se engloban todos los dispositivos existentes:

  1. Atendiendo a su función se distinguen tres grandes grupos:


- Soportes de almacenamiento. Son los dispositivos que guardan la información de forma permanente: Cinta magnética, discos duros, zips, Cd-rom, etc.


- Dispositivos de interfaz de usuario. Son los que permiten que los usuarios introduzcan datos y reciban información. Teclado, pantalla, raton, etc.


- Dispositivos de transmisión. Son aquellos cuya misión es la de conectar entre sí ordenadores para transmitir información. Tarjeta de red, moden, etc.

b) Atendiendo al modo en que manejan la información:


  • Dispositivos de bloque. Tratan la información en bloques de tamaño fijo que además son direccionables ya que cada boque tiene su propia dirección. Así es posible leer o escribir cada bloque como una unidad independiente de las demás. Por ejemplo los discos son dispositivos de bloque. (Los sistemas de Microsoft trabajan con un tamaño de bloque de 512 bytes)


  • Dispositivos de caracteres. Son aquellos que entregan o reciben flujos de caracteres sin tener en cuenta ninguna estructura prefijada. No son direccionables por lo que no tienen ninguna operación de búsqueda o localización. Por ejemplo el teclado.



  1. INTERFAZ PROCESADOR / PERIFÉRICO.

La velocidad y complejidad de los periféricos determinan cómo deben ser conectados al procesador. Estudiaremos tres tipos de conexión:

1- Registros:

La comunicación entre la CPU y los dispositivos se produce a través de unos registros llamados puertos. Estos registros están situados en memoria RAM en un espacio de direcciones especificas destinadas al control de dispositivos. Normalmente habrá varios dispositivos de E/S conectados al sistema, y cada dispositivo tiene asociado un identificador o dirección base de la zona de memoria de sus puertos.


Los puertos para cada dispositivo están formados por los siguientes registros:

-Buffer de entrada. Los datos entran en la CPU desde el dispositivo.

-Buffer de salida. Los datos entran en el dispositivo desde la CPU.

-Registro de estado. El dispositivo le pasa a la CPU información sobre su estado actual.

-Registro de ordenes. La CPU utiliza este registro para indicar al dispositivo las operaciones que quiere realizar. Hay dos tipos de ordenes:

-Orden de modo. Se usa para indicar el tipo de operación a realizar (leer o escribir).

-Ordenes de operaciones. Con ellas se indican todas la operaciones necesarias para realizar las transferencias de datos.

La CPU ejecuta el programa que controla directamente la operación de E/S, incluyendo el identificador o la dirección del dispositivo deseado, la comprobación del estado del dispositivo, el envío de la orden de lectura o escritura y la transferencia del dato.

Mediante este tipo de conexión la CPU da comienzo a las operaciones de entrada/salida y para determinar cuándo se ha completado la operación se puede emplear uno de los dos métodos siguientes:

-Polling. (consuta)Consiste en leer constantemente el registro de estado del dispositivo. Tiene el inconveniente de ocupar la CPU un tiempo no deseado.

-Interrupciones. La CPU continúa con otros trabajos y sólo cuando el dispositivo concluye la operación, llama la atención del procesador, interrumpiéndole para que trate dicha situación y realice las acciones que considere necesarias, es decir, sirva la interrupción.

2.- Controladores:

Los dispositivos complejos (ej: discos), no se conectan directamente al procesador, sino que lo hacen a través de un componente hardware llamado controlador. El controlador que hace de interfaz entre la CPU y el dispositivo, contiene el estado del dispositivo, lo controla y chequea las transferencias de datos.

Con este método el sistema operativo trabaja con el controlador y no con el dispositivo. El procesador da las órdenes al controlador con el que se comunica a través de registros como si se tratara de un dispositivo.

Un solo controlador puede manejar varios dispositivos del mismo tipo (IDE).



Hay diferentes tipos de controladores según su función:


  • SERIE. Al controlador le van llegando series de bits que se van almacenando en un buffer, cuando están todos, comprueba si hay errores. Después de verificar que no hay errores indica a la CPU, mediante una interrupción, que la información solicitada ya esta lista para pasarla a memoria principal.


  • PARALELO. Es similar al serie, excepto en la forma de recibir la información en el buffer, que le llega en paralelo (carácter a carácter). Ejemplo: la impresora.


  • ACCESO DIRECTO A MEMORIA (DMA). Se usa en controladores de dispositivos de bloques (discos) para evitar la perdida de tiempo de uso de CPU en el paso de la información.


Cuando se quiere cargar en memoria una serie de información mediante DMA, la CPU da al controlador la información necesaria para hacerlo, indicándole:

  • (la fuente) la dirección de la información en el disco,

  • (el destino) la dirección de memoria donde debe dirigir dicha información

  • y (la cantidad) el número de bytes a transmitir


A partir de este momento el controlador DMA comienza la carga de la información en su buffer, y tras comprobar la ausencia de errores, sigue con la carga desde el buffer a memoria principal. Al finalizar toda la tarea con éxito, manda una interrupción a la CPU para avisar que ha finalizado la operación.

Mientras tanto la CPU habrá estado realizando cualquier otro tipo de operaciones.

No se pasa la información directamente a memoria porque antes deben de controlarse los posibles errores y porque el bus de datos puede estar siendo utilizado en otras tareas.



3.- Canales:

Los ordenadores personales suelen utilizar un sólo bus para conectar todas las controladoras a la CPU. Sin embargo, en las grandes computadoras se utilizan modelos con múltiples buses que se denominan canales y están controlados por procesadores especiales que descargan de trabajo a la CPU.


Normalmente los controladores se conectan al procesador a través de un canal o procesador de entrada/salida. El propósito de un canal es conseguir que los dispositivos sean tratados como virtuales o abstractos.


Los canales son manejados por comandos y cuando terminan la operación devuelven el status correspondiente e interrumpen al procesador.


Los canales pueden ser de varios tipos:

·Selectores. Pueden manejar varios dispositivos, pero sólo pueden transferir datos de uno en uno.

·Multiplexores. Manejan varios dispositivos y pueden transferir datos simultáneamente.



 PAGINACIÓN.


La paginación es una técnica de gestión que permite asignar la memoria de forma discontinua. Consiste en dividir la memoria física en trozos iguales de tamaño fijo llamados marcos o frames y los programas en bloques del mismo tamaño denominados páginas. El tamaño de estos frames se establece mediante hardware, y suele tener un tamaño potencia de 2 (1024bytes, 2.048 bytes, etc).

Para ubicar un programa en memoria, el sistema buscará en memoria física tantos frames libres como páginas tenga el programa. Sin ser necesario que sean frames contiguos.

El sistema operativo mantiene una tabla de páginas donde relaciona cada página cargada en memoria con la dirección de carga del marco que la contiene.


Mecanismo de Paginación:

El encargado de hacer corresponder el espacio lógico de direcciones (continuo) y el espacio físico de direcciones (discontinuo) es el hardware de traslación dinámica de direcciones.


Cada dirección que genere el procesador será interceptada y dividida en dos componentes:

-un número de página (p) y

-un desplazamiento en la página (d).


Utilizando p como índice, el gestor de memoria del sistema recorrerá la tabla de páginas hasta localizar dicha página, y a continuación añadirá d a la dirección de carga correspondiente, obteniendo así la dirección real adecuada.

La obtención de la dirección real debe realizarse por hardware para que no se produzcan retrasos en la ejecución de los programas.



Gestión de la memoria

La paginación es una forma de reasignar direcciones dinámicamente. El sistema analizará cada nuevo trabajo que se disponga a entrar para conocer el número de páginas que ocupa y buscará en su lista de frames libres un número igual de ellos. Si están libres, cargará en ellos las páginas del programa y construirá la correspondiente tabla de páginas, actualizando la lista de marcos libres. Cada trabajo en memoria tendrá su propia tabla de páginas apuntada por el bloque de control del proceso (PBC).

De esta manera, se logra evitar la fragmentación externa ya que cualquier marco libre es asignable a un trabajo que lo necesite.

Por otro lado, seguirá existiendo fragmentación interna en el marco que contenga la última página a menos que coincidan exactamente los tamaños de la página y del marco.



3.2.2.1.4.- SEGMENTACIÓN.


La segmentación es una técnica similar a la paginación, que permite definir, a petición de los programas, bloques de memoria de tamaño variable, para alojar en ellos sus segmentos (conjunto de partes lógicas que componen un programa).

Esta técnica acaba con la fragmentación interna, ya que asigna a cada programa la cantidad de memoria que requiere.

Para cargar un programa en memoria hay que buscar los huecos adecuados a sus segmentos, y puesto que éstos son de tamaño variable, se ajustarán lo más posible a las necesidades, produciéndose huecos pequeños. En este caso se produce fragmentación externa.


Los segmentos de un programa los define el compilador, de forma que cada dirección lógica se expresará mediante dos valores:

-número de segmento (s) y

-desplazamiento dentro del segmento (d).



Hardware de segmentación

En los ordenadores que utilizan esta técnica existe un dispositivo hardware que se encarga de transformar cada dirección lógica (sd), generada por el procesador, en una dirección real (r).

La conversión se realiza consultando la tabla de segmentos perteneciente al programa, en el que se relaciona el número de cada segmento con su dirección de carga en memoria real.


3.2.2.1.5.- SISTEMAS COMBINADOS.


Hemos visto que, tanto la paginación como la segmentación, tienen ventajas e inconvenientes, y parece lógico intentar combinar ambas técnicas para aprovechar sus características positivas.

Por esto, algunos sistemas utilizan una técnica de paginación segmentada consistente en segmentar la tabla de páginas adecuándola al tamaño del programa.

Y otros sistemas optan por paginar los segmentos, es decir, utilizan segmentos cuyo tamaño siempre es un número entero de páginas. Esta técnica se denomina segmentación paginada.



3.2.2.2.- MEMORIA VIRTUAL.


Los sistemas de gestión de la memoria vistos hasta ahora exigen que un programa, para ejecutarse, debe estar cargado en su totalidad en memoria principal.

La memoria virtual es una técnica de gestión que, combinando hardware y software, permite la ejecución de programas parcialmente cargados en memoria real.


Esta se debe de llevar a la práctica de forma muy eficiente, ya que de lo contrario la ejecución de los programas puede empeorar notablemente.


Esta forma de trabajar aporta ventajas importantes:

· Si los programas se pueden ejecutar por partes, la memoria lógica puede ser mayor que la memoria real disponible.


· Puesto que cada programa ocupa menos memoria real, se puede elevar el índice de multiprogramación, y por tanto, la eficiencia del sistema.


Las diferentes partes de un programa se van cargando en memoria a medida que se necesitan, y por ello, esta técnica debe considerar tres aspectos importantes:


  • Modo de la Carga. Las porciones del programa se cargan cuando se necesiten (petición de página) o bien se pueden cargar por adelantado (anticipación o prepaginación).

  • Donde hacer la Colocación. Los sistemas de memoria virtual que utilicen segmentación deben decidir, al cargar un nuevo segmento, si lo hacen en el hueco más adecuado o bien en el primero posible.

  • Sustitución. Lo normal será que toda la memoria real esté ocupada, y cuando se necesite cargar una nueva parte de un programa habrá que reemplazar alguna de las existentes. Es importante definir la selección de la parte a reemplazar.


La carga por petición de páginas, es el esquema de carga más común cuando se utiliza la técnica de memoria virtual.

El algoritmo de intercambio no cargará en memoria todo el programa, sino que sólo cargará aquellas páginas que se le pidan.

Cuando el procesador genere una dirección que pertenezca a una página que no se encuentre en memoria «falta de páginas», la buscará, y a continuación, la traerá a memoria desde el correspondiente dispositivo de memoria secundaria.

El tratamiento de las faltas de página introduce un retraso adicional en la ejecución de los programas, y afecta al rendimiento general del sistema.

Sustitución de páginas

La técnica de petición de páginas permite reducir la memoria ocupada por cada programa durante su ejecución. Al cargase en memoria pocas páginas de cada programa es normal que se produzcan frecuentes faltas de página. Pero para que un programa que genera una falta de página pueda continuar su ejecución será necesario traer a memoria la página que se necesita utilizar.

SOFTWARE DE CONTROL DE ENTRADA/SALIDA.


La información de entrada/salida desde un dispositivo, o hacia un dispositivo, es tratada a dos niveles:


  • Por el software independiente del dispositivo, proporcionado por el sistema operativo, y

  • Por el software dependiente del dispositivo, proporcionado por su fabricante.


1.- Software independiente del dispositivo.

Su función básica es ejecutar la parte de E/S común a todos los dispositivos, sin atender a características particulares, está formado por una serie de rutinas que se activan por una interrupción, cuya misión es:


  • Ofrecer una interfaz uniforme de los manejadores de los dispositivos (leer, escribir, etc.... sobre impresora, sobre disco, sobre cinta, etc...).

  • Asignar nombres a los dispositivos para crear un enlace entre el nombre del fichero lógico y el físico.

  • Control de acceso a los dispositivos (proteger a los dispositivos de accesos indebidos en función de sus permisos). ¿El usuario puede acceder al dispositivo para hacer la operación que desea?

  • Proporcionar un tamaño de bloque independiente del dispositivo ( ya sea disco, cdrom, zip, etc). Además de ocultar las diferencias entre los dispositivos de bloque y de caracteres.

  • Gestionar los buffers. Almacenar los datos temporalmente en las transferencias de E/S.

  • Gestión de asignación de espacio en dispositivos de bloques. (Ej: en disco gestiona los bloques ocupados por un fichero o los que están libres).

  • Reservar y liberar dispositivos dedicados. (cuando se abre un dispositivo dedicado, no puede ser utilizarlo por ningún otro proceso hasta que lo cierre el proceso que lo abrió).

  • Informar de los errores. (Sólo de los que no se hayan podido solucionar en niveles inferiores).


2.- Software dependiente del dispositivo. (DRIVER).

Son los programas de control propios del dispositivo de E/S (drivers), que si tienen en cuenta sus propias características.

Debe haber un driver, por cada dispositivo instalado en el sistema, que pueda atender a las peticiones les solicite el software independiente del dispositivo.


Entre las funciones que realiza un driver podemos citar las siguientes:

· Definir las características del periférico al resto del sistema operativo.

· Inicializar los registros asociados al periférico en el momento del arranquede la máquina.

· Habilitar y deshabilitar el dispositivo para un proceso.

· Procesar todas las operaciones de entrada/salida solicitadas por un proceso.

· Cancelar toda operación de entrada/salida en el momento que sea necesario por cualquier motivo.

· Tratar los errores y estado del dispositivo haciendo la correspondiente comunicación al usuario.


El (driver) software dependiente del dispositivo funciona como sigue:

  1. Obtiene una petición de operación desde el software independiente.

  2. Traduce la petición a ordenes propias del controlador.

  3. Introduce los comandos traducidos en los registros adecuados del controlador.

  4. Esperar a que el dispositivo responda a los comandos y realice la operación.

  5. Comprobar los errores revisando el registro de estado del controlador:

Si hay errores puede reintentar la operación un numero de veces, la cantidad de reintentos variará según el tipo de dispositivo.

En caso de persistir el error le será comunicado al software independiente del dispositivo.

  1. Informará del fin de la operación al software independiente del dispositivo para que este desbloquee el dispositivo.


Se define driver como «el software formado por un conjunto de rutinas y tablas que, formando parte del sistemaoperativo, ejecutan y controlan las operaciones de entrada y salida sobre cualquier periférico conectado al ordenador, siendo particulares para cada dispositivo».


Un driver no es un proceso o tarea independiente gestionado por el sistema operativo, sino un conjunto de tablas en las que se aloja la información que caracteriza a cada periférico conectado y una serie de rutinas que controlan toda la gestión de los mismos y las informaciones que fluyen en un sentido o en otro. Los drivers se encuentran permanentemente alojados en memoria principal y requieren una elevada rapidez de ejecución.

3.2.3.4. INTERRUPCIONES VECTORIZADAS.


Los sistemas operativos están preparados para aceptar interrupciones que provienen de los dispositivos periféricos. Para poder reconocer qué dispositivo ha sido el causante de una interrupción y poder darle el tratamiento adecuado, el sistema operativo destina parte de su memoria para almacenar las direcciones de los manejadores de interrupciones asociados a cada dispositivo. El vector de interrupción es una tabla que contiene las direcciones de los manejador de interrupción, existentes en el sistema, es decir, las direcciones de las rutinas que deben tratar cada interrupción.

Un sistema operativo admite un máximo de vectores de interrupciones que es fijado durante su diseño. Por ejemplo 16 para sistemas DOS.



3.2.3.5. DIRECCIONES DE ENTRADA/SALIDA DEL DISPOSITIVO.


Los dispositivos periféricos o sus controladores están provistos, de unos registros hardware que pueden ser leídos o escritos por el sistema operativo para facilitar las operaciones que se efectúan sobre ellos. Estos registros, como ya vimos en un punto anterior, son los registros de estado, de ordenes, los buffers de entrada y los buffers de salida.

A la dirección de la zona de memoria que contiene los valores de estos registros se conoce con el nombre de dirección de entrada/salida (I/O address) del dispositivo.




3.2.4.-GESTION DE DATOS.


El sistema operativo presenta al usuario la información almacenada en soportes externos desde un punto de vista lógico, independizándolo de la realidad física.

El sistema debe saber como plasmar la información en los soportes de almacenamiento y debe localizar espacio libre a la hora de grabar un fichero o liberarlo si se borra, etc

Pero además un sistema operativo multiusuario debe tener en cuenta el problema de la protección de los archivos ante intentos, voluntarios o no, de acceder a sus contenidos sin derecho a ello, por ello debe manejar todos y cada uno de los archivos asegurando la privacidad y el acceso a sus contenidos por aquellos usuarios que lo tengan permitido.

La parte del sistema operativo encargada de estas funciones es la llamada subsistema de archivos.



3.2.4.1.- SOPORTE FISICO DE LA INFORMACIÓN.


Veamos antes de continuar que entendemos por estructura logica de la información:

La información que maneja un ordenador, como ya es sabido, se compone de combinaciones de ceros y unos (bits) y que aplicando alguna codificación (ASCII, EBCDIC, etc..... ) a las combinaciones de un numero determinado de estos bits podemos obtener un conjunto de caracteres (letras, cifras, operadores y caracteres especiales).

A partir de estos caracteres vamos a obtener las siguientes unidades lógicas:

  • Llamaremos campo a un conjunto de caracteres relacionados entre sí. Un campopodrá ser numérico, alfabético o alfanumérico.

  • Un registro estaformado por un conjunto de campos con información relativa a una misma entidad.

  • Un conjunto de registros relacionados entre sí forman lo que se denomina archivo. En general, todo registro tiene uno o más campos que los distinguen y diferencian de los demás registros. En un fichero, a estos campos, se les conocen como claves (primaria, secundaria, etc.).

  • El último nivel en la jerarquía lo constituyen las bases de datos, que son grupos de archivos relacionados entre sí que se gestionan conjuntamente mediante un gestor de bases de datos.


Como vemos, los usuarios manejan la información en unidades lógicas, que pueden ser de tamaño variable según sea la aplicación y el archivo de que se trate. Estas unidades reciben el nombre de registros lógicos o simplemente registros.


Pero por otro lado la estructura física de los discos determina el tamaño de la unidad básica de información que se transfiere en cada operación de lectura o escritura, A esta cantidad mínima de información se le llama de registro físico o bloque. Según la estructura de un disco, la información se graba en pistas concéntricas divididas en sectores que en este caso coinciden con lo que hemos llamado registro físico.


Se suelen emparejar los registro lógicos con los físicos, aunque para optimizar el uso del espacio de almacenamiento, el sistema operativo puede trabajar con registros bloqueados. Esto es, agrupar en función del tamaño, dos o mas registros lógicos en un único registro físico.



3.2.4.2.- SOPORTE LOGICO. SUBSISTEMA DE ARCHIVOS

Desde el punto de vista de los usuarios, los archivos son grupos de informaciones relacionadas entre sí sobre los que puede realizar diversas operaciones (lectura, escritura, actualización, borrado, etc.).

El subsistema de archivos debe gestionar dichas operaciones, adecuándolas a las características de los dispositivos físicos.Para ello debe realizar las siguientes tareas:


·Gestión del almacenamiento. Debe decidir cómo asignar el espacio disponible persiguiendo 2 objetivos: - Utilizar eficientemente el espacio de almacenamiento.

- Posibilitar un acceso rápido a la información almacenada.

·Métodos de acceso. Que definan cómo acceder a la información almacenada. Acceso secuencial, directo o indexado.

·Gestión de archivos. Debe controlar los archivos existentes, sus relaciones, como crearlos, como compartirlos, etc.

·Protección e integridad de los archivos. Deberá garantizar la información contenida, su integridad y privacidad.


Es posible utilizar diferentes criterios y técnicas para realizar estas tareas, y cada sistema será diseñado según aquellos que respondan mejor a sus necesidades objetivas.



3.2.4.2.1.- GESTION DEL ALMACENAMIENTO. ASIGNACION DE ESPACIO.


-Control del espacio disponible.

Para gestionar el espacio de almacenamiento se debe conocer, en cada momento, el que se esta utilizando y el que esta disponible. Para ello el subsistema de archivos mantiene una lista de espacio libre para cada dispositivo a la que irá añadiendo el espacio liberado por los archivos que se borran, y de la que irá restando el asignado a nuevos archivos.


Existen varias soluciones para gestionar el espacio que se asigna y se libera, pero la más extendida, es utilizar el llamado Directorio de dispositivo.

El sistema reserva en cada disco un espacio llamado directorio que es creado por el sistema operativo durante el proceso de formateo y que será diferente en función del sistema de archivos que va ha contener.


Por lo general, un directorio es un archivo de estructura especial, una tabla en la que existe una entrada para guardar la descripción de cada archivo existente en el disco y otra tabla para la información sobre el espacio disponible.


Para acceder a un archivo, el sistema debe empezar por localizar su entrada en el directorio y después obtener su localización física en el disco.

En las entradas de archivo se registra la siguiente información necesaria para su gestión:

- Nombre de archivo. -Tipo de archivo.

- Situación física en el disco. -Tamaño.

- Contadores (de uso, de enlaces, etc.).

- Protección. Lista de accesos permitidos. (de sistema, escritura, lectura, etc)

- Contabilidad. Fecha de creación, de modificación, propietario, etc.

-Asignación del espacio de almacenamiento.

El sistema operativo es el responsable de plasmar en disco los archivos que crean los usuarios, suministrándoles el espacio necesario. A la hora de crear un archivo de N bits, el subsistema deberá comprobar si existe suficiente espacio disponible y, a continuación en función del sistema operativo:

- Asignará los N bits en bloques contiguos en disco, o

  • Almacenará el archivo en bloques no contiguos.


Veamos las características de ambas opciones:


1º- Asignación contigua.

Según este criterio, cada archivo se coloca en disco en un grupo de bloques contiguos. Así el en directorio del disco aparecerá, junto al nombre la dirección del bloque inicial del archivo y el número de bloques que ocupa.

Este sistema permite el acceso secuencial y también directo de forma eficaz ya que cualquier bloque puede ser accedido rápidamente partiendo de la dirección inicial del archivo.


2º- Asignación enlazada.

Es un método en el que cada archivo se guarda es una lista enlazada de bloques del disco que pueden estar en cualquier dirección del mismo.

En el directorio del disco cada entrada de archivo contendrá, junto a su nombre, un apuntador al primer bloque de la cadena (en algunos sistema también se apunta al último bloque). A partir de este primer bloque, cada uno de los siguientes tiene un apuntador al que le sigue.


A la hora de crear un archivo, el subsistema le asignará un bloque físico libre y una entrada en el directorio. A medida que van aumentando las necesidades de espacio del archivo, el subsistema le irá enlazando bloques libres. (así es como funciona la FAT de Microsoft)


El encadenamiento de bloques facilita el tratamiento de archivos secuenciales, pero en el caso de los accesos directos la solución no es tan favorable, ya que siempre hay que seguir la cadena de apuntadores hasta localizar lo deseado.


3º- Asignación indexada.

La asignación indexada trata de resolver el problema de los accesos directos en la asignación enlazada agrupando todos los apuntadores en un bloque de índices. Cada archivo tendrá su propio bloque de índices y su dirección quedará reflejada en el directorio del disco al crear el archivo. (i-nodos de unix).


No se produce fragmentación externa y se agiliza notablemente el acceso directo a los datos. El acceso a cualquier bloque de un archivo sólo requiere dos accesos a disco, uno al bloque de índices y otro al bloque al que apunta el indice.




3.2.4.2.2.- METODOS DE ACCESO.

Independientemente de la forma en que se haya almacenado la información en el soporte físico, se podrá acceder a ella según un esquema lógico: ya sea secuencial, directo o indexado. El subsistema de archivos del sistema operativo define qué formas de acceso lógico permite y qué métodos de acceso soporta.


Algunos sistemas ofrecen un solo método de acceso a sus archivos. Otros, por el contrario, permiten utilizar varios y será el programador el que decida cuál usar:


a) -Acceso secuencial

Este método permite el acceso a los registros de un archivo en un orden preestablecido, del primero al último y de uno en uno. Es como si el archivo, para el usuario, estuviera organizado por registros consecutivos que sólo permiten llegar a uno cualquiera de ellos pasando previamente por los anteriores.

Las rutinas del método de acceso secuencial mantendrán un apuntador al siguiente registro lógico a acceder. Una operación de lectura o escritura, lee o escribe el registro y avanza el apuntador al siguiente.

Este método requiere que los registros lógicos se almacenen siguiendo el orden en el que serán accedidos para su tratamiento, es decir, debe coincidir el orden lógico de los registros y su orden físico.


b) -Acceso directo.

Este método permite el acceso directo a cualquier parte del archivo, es decir, no es necesario pasar por la información anterior para acceder a un determinado registro.

Sólo puede existir este tipo de acceso en aquellos soportes que por su naturaleza lo permitan. Es el caso de los discos, pero no en las cintas.

Este es, por sus características, el más adecuado para acceder con rapidez a grandes cantidades de información.


El usuario ve el archivo como un conjunto de registros individualizados (numerados con respecto al inicio) a los que puede acceder en cualquier orden.



c) -Acceso directo indexado.


El método de acceso indexado a medida que se va cargando un fichero, va creando un índice o tabla que contiene las relaciones entre las claves y sus bloques físicos en disco.


El acceso a la información de un registro físico se realizará accediendo primero a ese índice y con la dirección del bloque correspondiente a la clave solicitada, se alcanzará el bloque adecuado


Para archivos grandes se puede utilizar un índice maestro o índice de índices. El maestro apunta al índice secundario que contiene la clave y éste directamente al bloque Para agilizar los accesos, normalmente se mantiene el índice de maestro en memoria principal.


En el gráfico se muestra un caso concreto en el que las entradas de los índices están organizadas en secuencia de clave (ISAM - Método de acceso con índices secuenciales). Cada bloque contiene en este ejemplo 4 registros lógicos.




3.2.4.2.3.- GESTION DE ARCHIVOS.

El subsistema debe controlar la localización de todos los archivos almacenados en los dispositivos del sistema para poder atender a las peticiones que se hacen sobre ellos (creación, lectura, ejecución, borrado, etc.).

Este control se basa en la utilización de los directorios. Mediante ellos el subsistema podrá localizar rápidamente un archivo solicitado y conocer sus características (localización, edad, tamaño, protección, etc.).

La estructura de un directorio podrá ser más o menos compleja dependiendo de los distintos sistemas operativos.

Desde el punto de vista lógico, un directorio es una tabla que refleja los archivos existentes, sobre la que se deberá permitir la realización de las siguientes operaciones básicas:


Búsqueda. Esta operación debe localizar, si existe, un archivo determinado. En algunos casos se permite localizar grupos de archivos con una característica común (fecha de creación, primer carácter del nombre, etc.).


Creación. La creación de un nuevo archivo exige añadir una nueva entrada en el directorio adecuado, así como el almacenamiento físico de su contenido.


Borrado. Una vez desechado un archivo. Habrá que borrar su entrada de la tabla y liberar el espacio que ocupa en disco para poder reutilizarlo. El contenido se podrá borrar escribiendo algo encima o simplemente declarando los sectores como libres.


Listado. Permitirá listar el contenido de la tabla, es decir, los nombres de los archivos y sus informaciones respectivas.



Veamos algunas estructuras de directorios:


  • Directorios de un nivel.

El directorio de un dispositivo está en una dirección del disco predeterminada de forma que su localización es inmediata.

El esquema de directorio de un nivel es sencillo y útil en sistemas pequeños, monousuario y con pocos archivos. Todos los archivos están al mismo nivel, lo que genera largas listas de nombres y además no podemos definir dos archivos con el mismo nombre.



  • Directorios de dos niveles.

Una solución más eficiente que la anterior es mantener un directorio maestro del sistema en el que sedefine un subdirectorio para cada usuario donde quedarán reflejados los archivos que le pertenecen.


Ahora si pueden existir varios archivos con el mismo nombre en directorios diferentes.

De esta forma cada usuario trabajará en relación al directorio que le pertenece. Para localizar un archivo, el subsistema lo buscará en su directorio, si crea un archivo, se añadirá en su directorio, y de igual forma si borra un archivo, lo borrará de su directorio.


En este tipo de directorios es necesario disponer de una utilidad cuyo acceso será restringido al administrador del sistema, que permita dar de alta o de baja a un usuario, es decir, incluir o eliminar el directorio del usuario y sus entradas en el directorio maestro.


Con esta organización de directorios, para localizar un archivo sólo necesitamos conocer su nombre y el del directorio de usuario que lo contiene. Estos dos nombres forman lo que se denomina camino (path name) exclusivo del archivo.

La utilización de los caminos para localizar los archivos permite que un usuario acceda a los archivos de otro usuario, indicando el camino adecuado. Esta flexibilidad la podrá controlar el subsistema mediante mecanismos de protección que veremos más adelante.



  • Estructuras multinivel. Arboles de directorios.

Generalizando el esquema anterior de árbol de dos niveles podemos pensar en estructuras en árbol de varios niveles. De forma que cada usuario podrá crear subdirectorios en su directorio, con lo cual podrá agrupar los archivos según sus criterios particulares (datos, programas en desarrollo, juegos, etc.), logrando una organización más adecuada a sus necesidades y de la forma que él crea más conveniente.


En general, al directorio maestro se le llama directorio raíz.

Este esquema es muy utilizado en los sistemas operativos actuales donde cada directorio de usuario contiene entradas que apuntan a archivos o a subdirectorios que a su vez pueden apuntar a archivos o a subdirectorios de menor nivel.


3.2.4.2.4.- Protección e integridad de los archivos.


La utilidad principal de los archivos es la de almacenar los datos para utilizaciones posteriores. Es por ello que la pérdida o alteración de estos datos causaría trastornos que en ocasiones pueden ser irresolubles.

Pensemos por ejemplo, en un ordenador en cuyos archivos se haya almacenada la información operativa de una empresa (clientes, proveedores, contabilidad, nóminas, previsiones, etc.). Si por cualquier razón, accidental o no, se destruye dicho equipo, sería fácil reponer el hardware (comprando otro equipo) pero el contenido de sus archivos (lo más importante para la empresa) sería imposible de recuperar si previamente no se han tomado las medidas adecuadas.

La seguridad de los archivos, de su contenido, se debe enfocar desde dos aspectos:

el de la disponibilidad de la información, o sea que los archivos contienen la información prevista y que se puede acceder a ella, y

el de su privacidad mediante el control de acceso a los mismos.



1º. Disponibilidad de los archivos.

El objetivo fundamental es lograr una buena disponibilidad de la información contenida en los archivos, es decir, que pueda accederse a ella en el momento en que se precise.

La primera técnica utilizada consiste en la realización periódica de copias de seguridad (back-up) del contenido de los archivos para que en caso de destrucción de éstos se pueda recuperar dicho contenido a partir de las copias. Existen en los sistemas operativos actuales programas de utilidad para la realización automática de estas copias así como para la recuperación de su información.

Estas copias se realizan generalmente, en cinta magnética o CD-ROMs que se guardan en lugares separados del ordenador. De esta forma, a partir de ella se podrían restaurar los archivos en otras instalaciones si la propia sufriera algún tipo de accidente.

Otra técnica: Los sistemas de tiempo compartido atienden a numerosos usuarios que, entre otras operaciones, pueden estar actualizando sus archivos. En estos sistemas se recurre a la utilización de archivos auxiliares llamados comúnmente archivos LOG, donde se va reflejando cada operación que actualice los archivos y guardando la información añadida o borrada. Existen programas de utilidad en los sistemas operativos que pueden recuperar el estado actual de los archivos partiendo de una copia anterior y realizando las actualizaciones que indique el archivo LOG.

Esta segunda técnica permite asegurar la consistencia del contenido de los archivos ante caídas inesperadas del sistema, evitando que una información se quede a medio escribir.

Para solucionar problemas de consistencia, algunos sistemas no dan la operación de escritura por realizada hasta que no se refleja en el LOG, y esto se hace una vez confirmada la escritura en el disco. Al volver a arrancar, el sistema inspecciona el LOG buscando operaciones iniciadas y no acabadas, finalizándolas antes de permitir de nuevo el trabajo de los usuarios.



2º. Privacidad de los archivos. Protección.

El segundo aspecto para la seguridad de los archivos es el que debe controlar que la información contenida en los mismos sea accedida por usuarios autorizados.

El primer control consiste en la identificación del usuario por medio del nombre de usuario (username) y una palabra clave (password). El sistema validará o no el binomio anterior consultando la tabla de claves, concediendo o denegando el solicitado acceso al sistema.

Generalmente, la información del citado archivo de claves se encuentra encriptada desde que se guarda por primera vez, para evitar el descubrimiento de dichas claves ante accesos indeseados a dicho archivo.

Una vez introducido en el sistema, el usuario puede acceder a diferentes recursos (programas, archivos, directorios, dispositivos, etc.) y aquí debe establecer el sistema un nuevo nivel de control.

Para enfocar este segundo nivel de protección se recurre al concepto de dominio, que es un conjunto de recursos y de operaciones permitidas sobre los mismos. Por ejemplo, un dominio podría estar constituido por una impresora y por el derecho de escribir sobre ella.



Cualquier proceso está, en todo momento, ejecutándose en un dominio de protección, o lo que es lo mismo, podrá realizar determinadas operaciones sobre algunos recursos.

Un factor importante de diseño es la forma en la que el sistema va a almacenar toda la información relativa a sus dominios:


  • En principio se puede optar por una matriz de dominios cuyas filas indiquen los dominios existentes, y sus columnas los recursos. Cada elemento de esa matriz es la lista de derechos del dominio correspondiente sobre el recurso indicado por su columna.

La siguiente sería la matriz correspondiente a los dominios del gráfico anterior.


3.2.5.1.-. SEGURIDAD EXTERNA

En un sistema informático todos los mecanismos de seguridad tienen que complementarse entre sí, de tal forma que si una persona logra saltarse alguna de las protecciones, se encuentre con otras que le hagan el camino difícil.

Todos los mecanismos dirigidos a asegurar el sistema informático sin que el propio sistema intervenga en el mismo se engloban en lo que podemos denominar seguridad externa. La seguridad externa puede dividirse en dos grandes grupos:


3.2.5.1.1.Seguridad física

Engloba aquellos mecanismos que impiden a los agentes físicos la destrucción de la información existente en el sistema; entre ellos podemos citar el fuego, humo, inundaciones, descargas eléctricas, campos magnéticos, acceso físico de personas con no muy buena intención, etc.

Se trata de eliminar los posibles peligros que originan los agentes físicos o la presencia física de personas no autorizadas. Para ello podemos considerar los siguientes aspectos:


- Protección contra desastres. Consta de elementos de prevención, detección y eliminación que actúan contra incendios, humos, sobretensiones, fallos en el suministro energía, etc. También es necesario controlar la temperatura y limpieza del medio ambiente en que se encuentran los equipos, instalando aire acondicionado, falso suelo, ventilación, y, en definitiva, tomando en consideración todo aquello que pueda causar cualquier problema a la instalación.


- Protección contra intrusos. Desde el punto de vista físico, es necesario establecer mecanismos que impidan el acceso físico de las personas no autorizadas a las instalaciones. Suele llevarse a cabo mediante puertas de seguridad con apertura por clave o llaves especiales, identificación de las personas por tarjetas de acceso o por reconocimiento de la voz, huellas digitales, etc.


3.2.5.1.2. Seguridad de administración

Engloba los mecanismos más usuales para dar acceso lógico al sistema e impedir el acceso indebido de personas no autorizadas. Este acceso puede realizarse a través de un terminal del sistema o bien desde otro sistema por medio de una red de comunicación a la que estén conectados ambos sistemas.


*- Protección de acceso.

Se trata de un mecanismo para el control de los intentos de entrada o acceso al sistema de tal forma que permita la conexión cuando un usuario lo solicite y pase el control correspondiente y rechace el intento en aquellos casos en que la identificación del supuesto usuario no sea satisfactoria.

Dicho mecanismo, que hemos visto anteriormente, consiste en la solicitud deun identificador de usuario y de su correspondiente password


*-.Criptogría. Es un proceso al que se somete la información para conseguir que sea secreta. Se trata de una transformación que se aplica a unos datos para ocultar su contenido. Al proceso al que hay que someter los datos se conoce con el nombre de encriptado o cifrado. La información antes del proceso se conoce como texto claro y después como texto cifrado.

La mayoría de los sistemas que utilizan algoritmos de cifrado exigen que el texto cifrado pueda convertirse en texto claro. Para ello existen diversas técnicas, algunas de las cuales describimos brevemente a continuación:


  1. ) Or exclusivo. Es un método sencillo que ofrece gran seguridad. Consiste en tomar la información a cifrar y aplicar bit a bit la operación or-exclusivo con una clave cuya longitud debe ser tan larga como el mensaje a cifrar. El algoritmo de descifrado es similar al de cifrado utilizando la misma clave.


  1. ) Estándar de Encriptado de Datos (Data Encryption Standard-DES). Es un método desarrollado en la Oficina Nacional de Estándares de Estados Unidos, siendo uno de los más utilizados actualmente. El algoritmo lleva asociado un chip especialmente construido para este fin,aunque puede ser simulado por software, y se basa en claves de 128 bits de longitud.


  1. ) Método de Rivest, Shamir y Adelman (RSA). Es un algoritmo que utiliza distinta clave para el cifrado y descifrado, ofreciendo con ello un alto índice de seguridad


*- Seguridad funcional

Engloba aspectos relativos al funcionamiento del sistema y a la seguridad que de las instalaciones se pretende tener.

Seguridad en la transmisión de datos. En las líneas de transmisión de datos existen diversos problemas de seguridad debido a lo fácilmente violables que son dichas líneas Por esta razón, para enviar datos a través de líneas de comunicación entre computadoras se siguen diversas técnicas, como son:


a) Compactación de datos. Consiste en comprimir los datos para que ocupen el menor espacio posible y así conseguir en principio que la duración de la transmisión sea menor, y que para entenderla haya que descompactarla; por tanto, la información va relativamente cifrada. Existen muchos métodos de compactación de datos de los cuales los más utilizados son:


  1. Criptografía. Similar al proceso antes mencionado, utilizado en este caso para ocultar la información en una transmisión.


  1. Fiabilidad. Además de las medidas anteriores, se suelen tomar otras para asegurar el correcto estado de la información al llegar a su destino. Se pueden presentar problemas debidos a causas accidentales, como la influencia de fuertes campos magnéticos, perturbaciones eléctricas, etc.,

Para evitar todo tipo de incidencias, se suele añadir a la información una pequeña parte que nos permitirá saber si los datos recibidos coinciden con los enviados o no.

*-.Sistemas tolerantes a fallos.

Se utilizan en sistemas donde se pueda perder información debido a un mal funcionamiento de los mismos. Este aspecto es muy importante en los sistemas de control y supervisión en tiempo real. Existen mecanismos que ante situaciones de mal funcionamiento consiguen recuperar y controlar el entorno, protegiendo fundamentalmente la información. Este tipo de mecanismos se basa en redes de dos o más computadoras conectadas entre sí de manera que, ante el mal funcionamiento de una de ellas, éste se pondrá en situación de inactivo, tomando el control cualquiera de los otros que estén conectados.



3.2.5.2. SEGURIDAD INTERNA.

La seguridad interna engloba a todos los mecanismos que incorpora sistema operativo dirigidos a asegurar el sistema informático:

-. Seguridad del procesador

Los mecanismos de protección del procesador, ya estudiados, son varios:

· Estados protegidos (Kernel) o no protegido (Usuario).

· Reloj hardware para evitar el bloqueo del procesador.

-. Seguridad de la memoria

Se trata de mecanismos para evitar que un usuario acceda a la información de otro sin autorización. Entre ellos citaremos dos:

· Registros límites o frontera.

· Estado protegido y no protegido del procesador.

-. Seguridad de los archivos

Son los mecanismos que nos aseguran la disponibilidad y la privacidad de los archivos:

-Copias de seguridad (backup).

-Archivos LOG.

-Control de acceso a los recursos.



3.4.- MODELOS DE INTERFACES DE USUARIO DE LOS SISTEMAS OPERATIVOS

Externamente un sistema operativo se manifiesta por medio de un interfaz de comunicación. Este interfaz permitirá al usuario identificar el tipo de sistema operativo con el que tendrá que trabajar, así como el lugar donde deberá introducir los mandatos o instrucciones para poder establecer el diálogo con el sistema.

Dentro de los interfaces del sistema operativo se distinguen, principalmente, dos tipos: de formato texto y de formato gráfico.

-Texto: Todas las ordenes que el usuario introduzca y las respuestas que el S.O. dé se introducirán o visualizaran mediante cadenas de caracteres. Se introducen por teclado y se visualizan por pantalla. Se forma con un símbolo o letra identificativa. En el caso de utilizar una letra, ésta suele corresponder a la unidad de disco sobre la que se está trabajando.

Algunos de los sistemas operativos que utilizan este tipo de interfaz son: MS-DOS, Unix, Xenix, CPM y Novell Netware.

-Gráfico. El interfaz gráfico de un sistema operativo está compuesto por un sistema de ventanas y menús desplegables que incluyen pequeños dibujos aclaratorios denominados iconos. Estos iconos proporcionan un acceso directo al mandato o programa que se quiere ejecutar haciendo una doble pulsación del ratón sobre ellos. El uso del ratón se hace casi imprescindible.

La información en pantalla se muestra en bloques o pantallas independientes en las que aparecen una serie de componentes y objetos que nos sirven para enviar o recibir información sin tener que teclear nada. Este interfaz resulta complejo en su creación, pero es más fácil de utilizar por cualquier tipo de usuario.

Dentro de los sistemas operativos que utilizan un interfaz gráfico existen dos tipos diferenciados:

Sistemas operativos individuales con interfaz gráfico que se ejecutan al iniciar el ordenador. Los sistemas operativos OS/2, System-7 y Windows 9x pertenecen a este tipo. Generalmente este tipo de sistemas operativos ofrece la posibilidad de trabajar también con programas diseñados para interfaces de tipo texto mediante la utilización de ventanas de tipo texto.

Interfaces gráficos que necesitan de un sistema operativo, normalmente de tipo texto, para poder ejecutarse. Por lo tanto no son sistemas operativos como tales, aunque realizan la gran mayoría de las funciones de los sistemas operativos. Esto es posible ya que los interfaces gráficos se apoyan en los sistemas operativos para realizar dichas funciones. Dentro de este tipo de interfaz se encuentran: Windows 3.0, 3.1 y Windows 3.11 para trabajo en grupo. o KDE, GNOME, XMOTIF para sistemas tipo Unix.

3.5.- SISTEMAS OPERATIVOS MAS IMPORTANTES DEL MERCADO Y SUS CARACTERÍSTICAS:


DOS: El sistema operativo DOS responde al nombre de Disk Operating System (Sistema Operativo de Disco). También conocido como PC-DOS y MS-DOS. Fue creado en 1981 por la empresa Microsoft por encargo de IBM para administrar los recursos de su nueva gama de ordenadores personales basados en microprocesadores de Intel 8088.

Fruto de esta cooperación nació el sistema operativo MS-DOS 1.0. Con el tiempo surgieron nuevas versiones que adaptaban el sistema operativo a los avances de la microinformática, a la vez que solucionaban los bugs de las versiones anteriores. La última fue la versión 6.22.

DOS posee un interfaz de tipo texto, que está compuesto por una letra que identifica la unidad de disco sobre la que se está trabajando seguido del símbolo ">".

Se basa en instrucciones o comandos cortos que se digitan en una pantalla con líneas de texto.

El sistema operativo DOS trabaja en modo monousuario, monotarea y monoproceso, sólo puede manejar 640 Kb de memoria, necesitando de programas auxiliares, denominados gestores de memoria, para poder direccionar el resto de memoria instalada en un ordenador y no reconoce discos duros de mas de 2 Gb.

En la década de 1980 fue el sistema operativo más popular para computadoras personales, pero actualmente su uso está casi abandonado.


Microsoft tomó la decisión de hacer un sistema operativo que tuviera una interfaz gráfica amigable para el usuario, y como resultado obtuvo Windows. Este sistema muestra íconos en la pantalla que representan diferentes archivos o programas, a los cuales se puede acceder al darles doble click con el puntero del raton. Esto facilita en gran medida el manejo y control del ordenador ya que el usuario no tiene por que preocuparse de memorizar complicados procedimientos.

Una característica muy importante de Windows es su capacidad Multitarea, esto significa se puede estar trabajando simultáneamente con varios programas a al vez ya que cada uno de ellos se presenta en una ventana individual, esta característica es precisamente el motivo de su nombre.

Además todas las aplicaciones elaboradas para Windows se parecen, por lo que es muy fácil aprender a usar nuevo software una vez conocido el entorno.

Las primeras versiones de Windows hasta la 3.11, se pueden considerar entornos gráficos mas que sistemas operativos, ya que requerían la carga previa de ms-dos.

Después de numerosas versiones de prueba en septiembre de 1995 apareció el sistema operativo de Microsoft Windows 95. Nació como alternativa al sistema operativo OS/2 y como una evolución del entorno gráfico Windows 3.x, dotándole de todas las prestaciones de un sistema operativo como tal.


Este sistema operativo utiliza los modos de trabajo real y protegido, permitiendo ejecutar programas diseñados para MS-DOS, para el entorno gráfico Windows 3.11 y los nuevos programas creados para él mismo. Su arquitectura es de 32 bits, permite la multitarea y compartir recursos con otros ordenadores conectados entre sí. Su interfaz es intuitivo y fácil de utilizar.

El siguiente escalón en la familia de sistemas operativos es el Windows 98, prácticamente no trae nada nuevo, a no ser que reconoce las nuevas tecnologías del momento: Soporte para USB , DVD, FAT32 (al igual que Win95 OSR-2) o la gestión avanzada de energía.

Podemos considerar Windows ME como la última versión de windows que tiene el núcleo del viejo DOS.


Paralelamente desde Septiembre de 1993 Microsoft mantiene un sistema operativo cuyo primer lanzamiento salió con la versión 3.1. Originalmente el núcleo de este sistema de 32 bits fue diseñado para OS/2 versión 3.0, sistema en el que trabajaban conjuntamente Microsoft e IBM. Pero tras ligeras desavenencias Microsoft continuo con su desarrollo en solitario, denominándolo Windows NT (Nueva Tecnologia). Esta versión de Windows puede interactuar de forma eficaz entre dos o más computadoras ya que se especializa en las redes y servidores.

Windows NT se diseñó para estaciones de trabajo avanzadas (Windows NT 3.1) y para servidores (Windows NT 3.1 Advanced Server.)

A diferencia de Windows 3.1, que era una interfaz gráfica que corría sobre MS-DOS, Windows NT es un sistema operativo por sí mismo. El usuario lo ve como Windows 3.1, pero tiene multiprocesamiento real, seguridad y protección de memoria. Está basado en un microkernel, con un direccionamiento de hasta 4GB de RAM, soporte para sistemas de archivos FAT, NTFS y HPFS, soporte de red incorporado, soporte multiprocesador, y seguridad C2.


Windows se ha desarrollado y diversificado hasta tener múltiples versiones que funcionan en toda clase de computadoras: agendas digitales (windows CE), portátiles, PCs y servidores de redes. Es el sistema operativo más usado para ordenadores personales hoy en día.


El paso de Windows NT Workstation 4.0 y Windows 98 a Windows 2000 Professional (W2000 Pro) supone un gran salto. Cuando, en el otoño de 1996, Microsoft empezó a desarrollar W2000 (denominado por aquel entonces «NT 5.0»), su principal objetivo era lograr un sistema operativo simple y fiable, pero también se propuso alcanzar otros objetivos: que W2000 fuera la versión de Windows más fácil de usar, que constituyera la mejor solución para los usuarios de equipos portátiles, que fuera más fiable que las versiones precedentes.

La última entrega de este sistema operativo es WINDOWS XP en sus diferentes versiones, creado como evolución de su predecesor Windows 2000.

OS/2: En el año 1987 la empresa IBM anunció la aparición de un nuevo sistema operativo para ordenadores personales basado en las necesidades actuales de la informática. Con el sistema operativo OS/2 comenzó el desarrollo de los sistemas operativos de 32 bits y con interfaz gráfica. El OS/2 nació para eliminar la barrera: de los 640 Kb de direccionamiento de memoria, permitir el intercambio de datos, compartir recursos y adaptarse a las actuales y futuras necesidades de los sistemas.

Para poder adaptarse a las necesidades de los sistemas y ser capaz de ejecutar programas basados en MS-DOS, el sistema operativo OS/2 propone dos formas de ejecución, el modo real y el modo compartido.

-Modo real. El proceso que se ejecuta en este modo accede directamente al hardware instalado y solicita los servicios necesarios sin recibir ningún tipo de interferencia, ya que es el único proceso que se puede ejecutar

.Modo compartido. Este modo permite la ejecución de varios procesos simultáneamente, siendo el sistema operativo el que controla los procesos asignando a cada proceso los recursos que podrá utilizar.

Al adoptar esta última forma de trabajo, OS/2 se convierte en el primer sistema operativo para ordenadores personales capaz de realizar multitarea y de proporcionar al usuario un interfaz totalmente gráfico.

El problema del escaso desarrollo de este sistema operativo es que no se le dio el apoyo que se merecía en cuanto a aplicaciones se refiere, no se creó el software suficiente que aprovechara sus características, ya que la mayoría del mercado de software fue monopolizado por Windows.



Mac OS: Los ordenadores Apples de Macintosh no serían tan populares como lo son si no utlizaran el Mac OS como sistema operativo. Es tan amigable para el usuario que cualquier persona puede aprender a usarlo en muy poco tiempo. Por otro lado, es muy bueno para organizar archivos y usarlos de manera eficaz.

Este sistema operativo fue creado por Apple Computer, Inc. Fue uno de los primeros en utilizar una interface gráfica, pero no es tan popular como Windows, porque sólo funciona en computadoras marca Apple que no se han extendido tanto como los PCs compatibles con IBM.



UNIX: Es un sistema operativo muy antiguo, empezó a gestarse en 1965, , que se ha diversificado y extendido en múltiples versiones a lo largo del tiempo. Su principal ventaja es ser muy robusto, es decir, puede seguir funcionando sin bloquearse aunque algún programa presente errores de funcionamiento. Por ésta razón se considera el más estable de los sistemas operativos, siendo muy popular en grandes computadoras y servidores de redes.

Es un sistema operativo con unas altas prestaciones, que trabaja en tiempo compartido, con acceso simultáneo para una gran cantidad de usuarios (multiusuario), multitarea, con gran capacidad de almacenamiento y buen soporte para comunicación a través de redes.

Unix utiliza un interfaz de comunicación con el usuario de tipo texto, representado con el símbolo $, aunque el las utimas versiones incorpora una interfaz gráfica.

Una versión de Unix que se ha popularizado recientemente para usarse en computadoras personales es el Linux. Pertenece a la corriente del COPY LEFT (es gratuito), lo contrario del COPYRIGHT. Se trata de un sistema operativo abierto, o sea que cualquiera lo puede modificar, aunque manteniendo ciertas reglas.