sábado, 16 de noviembre de 2013

UNIDAD 1 : Introducción a los Sistemas Operativos

1.1 Definicion y Concepto

1.1


Definicion y Concepto


Un sistema operativo (SO) es un programa o conjunto de programas que en un sistema informático gestiona los recursos de hardware y provee servicios a los programas de aplicación, ejecutándose en modo privilegiado respecto de los restantes.

Uno de los propósitos del sistema operativo que gestiona el núcleo intermediario consiste en gestionar los recursos de localización y protección de acceso del hardware, hecho que alivia a los programadores de aplicaciones de tener que tratar con estos detalles. La mayoría de aparatos electrónicos que utilizan microprocesadores para funcionar, llevan incorporado un sistema operativo (teléfonos móviles, reproductores de DVD, computadoras, radios, enrutadores, etc.). En cuyo caso, son manejados mediante una Interfaz Gráfica de Usuario, un gestor de ventanas o un entorno de escritorio, si es un celular, mediante una consola o control remoto si es un DVD y, mediante una línea de comandos o navegador web si es un enrutador.

Existen diversas definiciones de lo que es un Sistema Operativo, pero no hay una definición exacta, es decir una que sea estándar; a continuación se presentan algunas:

1.- Se pueden imaginar un Sistema Operativo como los programas, instalados en el software o firmware, que hacen utilizable el hardware. El hardware proporciona la "capacidad bruta de cómputo"; los sistemas operativos ponen dicha capacidad de cómputo al alcance de los usuarios y administran cuidadosamente el hardware para lograr un buen rendimiento.

2.- Los Sistemas Operativos son ante todo administradores de recursos; el principal recurso que administran es el hardware del computador ;además de los procesadores, los medios de almacenamiento, los dispositivos de entrada/salida, los dispositivos de comunicación y los datos.

3.- Un Sistema Operativo es un programa que actúa como intermediario entre el usuario y el hardware del computador y su propósito es proporcionar el entorno en el cual el usuario pueda ejecutar programas. Entonces, el objetivo principal de un Sistema Operativo es, lograr que el sistema de computación se use de manera cómoda, y el objetivo secundario es que el hardware del computador se emplee de manera eficiente. 4.- Un Sistema Operativo es un conjunto de programas que controla la ejecución de programas de aplicación y actúa como una interfaz entre el usuario y el hardware de una computadora, esto es, un Sistema Operativo explota y administra los recursos de hardware de la computadora con el objeto de proporcionar un conjunto de servicios a los usuarios del sistema.

En resumen, se podría decir que los Sistemas Operativos son un conjunto de programas que crean la interfaz del hardware con el usuario, y que tiene dos funciones primordiales, que son:

• Gestionar el hardware.- Se refiere al hecho de administrar de una forma más eficiente los recursos de la máquina.
• Facilitar el trabajo al usuario.-Permite una comunicación con los dispositivos de la máquina.
El Sistema Operativo se encuentra almacenado en la memoria secundaria. Primero se carga y ejecuta un pedazo de código que se encuentra en el procesador, el cual carga el BIOS, y este a su vez carga el Sistema Operativo que carga todos los programas de aplicación y software variado.

1.2 Funciones y Caracteristicas

1.3 Evolución Historica

1.3

Evolución Histórica


1. Primera Generacion (1945-1955) Segunda Generación (1955-1965): Tercera Generación (1965-1980): Cuarta Generación (1980-1990): Quinta Generación (1990 - Actualidad)

2. En esta época no existían los sistemas operativos. Utilización de la tecnología de las válvulas o tubos de vacío que hacían que los ordenadores fuesen enormes. El usuario tenía que hacer todos los programas en código binario. Las máquinas eran de un enorme coste.

El monitor es el programa antepasado del Sistema Operativo. Abarca funciones muy elementales, como visualizar y modificar los contenidos de la memoria principal, el lanzamiento automático

3. Actualmente, al estar superado el concepto de mono programación, es frecuente que tengamos que familiarizarnos con los conceptos de multiprogramación, tiempo compartido, multiproceso y tiempo real. para la ejecución de un programa, la introducción de puntos de ruptura en los programas para puesta a punto, etc.

4. al menos un proveedor ofrecía un sistema de multiprocesamiento, que era un sistema de computo que tenía más de una unidad central de proceso. En realidad el sistema consistía en dos computadoras completas Un sistema operativo ubicado en la computadora más grande indicaba a la máquina de control que necesitaba servicio.

5. Los primeros sistemas en líneas presentaban programas de sistema operativo diseñados especialmente para controlar los recursos de la computadora Primero se arma un mensaje de entrada en un buffer de comunicaciones; puede cambiarse el código de este mensaje y trasladarse a una cola de entrada en la memoria mediante un programa de aplicación. Esta generación se caracteriza por la utilización de la tecnología que incluye transistores

6. batch de la tercera generación introdujeron el concepto de multiprogramación, proceso muy similar a las técnicas de sacar y meter programas desarrollados para el tiempo compartido. La multiprogramación ha ayudado a incrementar la productividad, o sea el número de trabajos por unidad de tiempo.

7. Sistemas en línea : Durante la tercera generación, los sistemas operativos vinieron con más módulos para facilitar el desarrollo de los sistemas en línea, especialmente para respaldar el procesamiento de terminales y telecomunicaciones. La tecnología utilizada en este período corresponde a la de circuitos integrados, Otra característica importante de los sistemas operativos de esta generación es la aparición de la técnica de Spooling (Operación simultánea y en línea de periféricos . Durante esta generación aparecen los primeros sistemas de Tiempo compartido

8. Esta generación se caracteriza por la utilización de los microprocesadores empezaron a utilizar en la empresa y en las universidades recibieron el nombre de estaciones de trabajo.

Durante esta generación aparecen los sistemas operativos que proporcionan una interfaz más amigable al usuario,

9. Los sistemas operativos que cobran gran popularidad en este período son MS-DOS de Microsoft y UNIX. DOS (sistema operativo en disco) VERSIONES: PC-DOS (IBM) DR-DOS (Digital Research) MS-DOS 1.0 Abril 1981 7.0 Agosto 1995 Se trata del 1º sistema operativo creado para ordenadores personales en la década de los 80 dado que los sistemas anteriores fueron creados para maquinas grandes en entornos de empresa

10. Se trata de un sistema operativo grabado sobre disco de modo que se ha de encontrar permanentemente activo y residente para poder trabajar con esa maquina. Esto ahora parece intrascendente ya que todos los sistemas operativos (Windows, Windows9.x, unix, linux, etc..) extendido pasando a adoptar la numeración de la versión de Windows. En la actualidad la versión 7.0 aun siendo la más reciente no es la mas difundida ya que esta muy arraigada la 6.22.

11. CARACTERISTICAS DEL SISTEMA a)Monotarea.- Ya que no dispone de gestores de memoria protegida para ejecutar cada aplicación b)Monopuesto.- Ya que no permite gestionar espacios de memoria distintos para diferentes usuarios

12. c)Monoproceso.Porque no esta diseñado para trabajar con mas de un procesador a la vez y tampoco ninguna de las aplicaciones desarrolladas para ver esto. d)Entorno de texto.- Con fondo negro y ejecución en modo carácter por medio de comandos u ordenes y sus parámetros cuya sintaxis se ha de respetar.

13. PROCESO BATCH O POR LOTES Se emplean en la automatización de tareas que exigen de crear varios comando con sus parámetros y también para personalizar un entorno de trabajo bajo DOS. Admite cualquier comando visto hasta ahora y otra serie de ellos específicos para procesos BAT como son los siguientes: CALL, IF, KEYB, LOAD, PATH, PAUSE, PROMPT, SET, GOTO, MENU....

14. •Desde aproximadamente mediados de los '80 surgió el crecimiento de las redes de computadores con sistemas operativos de red y sistemas operativos distribuidos. El desarrollo de los sistemas computacionales de los últimos tiempos ha generado un conjunto de estándares,

15. Estándares de comunicaciones abierto Modelo OSI (Open System Interconection), desarrollado por I SO. Estándares de sistemas operativos abiertos POSIX (IEEE standar 1003.1) SVID (System V Interfase Definition) Estándares de interfaces de usuarios abiertos X Windows desarrollado por MIT Estándares de aplicaciones de usuarios abiertos X/Open OSF (Open Software Foundation

16. La mezcla de sistemas continúa durante la tercera y cuarta generación. El sistema operativo consiste en una serie de manejadores y cada manejador debe lograr lo siguiente: controlar los recursos Explotación del proceso en paralelo y de forma concurrente. Integración mediante informática corporativa del tratamiento en distintos Sistemas Operativos de micros, minis y mainframes,

17. Avances Evolutivos trajo consigo modificaciones •mejoras a los sistemas operativos adicionó hardware especial ayuda a traducir las direcciones virtuales. Este mapeo puede lograrse mediante software o hardware. utilizan direcciones que sobrepasan el tamaño de la memoria primaria de la computadora en un sistema virtual

18. Un sistema operativo es un conjunto de rutinas que proveen facilidades para con dos funciones principales: manejo de recursos y embellecimiento. Era tan complejo su manejo, que en algunos casos el resultado llegaba a ser desastroso. Se buscaron medios más elaborados para manipular la computadora, para que el usuario pueda operar la computadora con un entorno, lenguaje y operación

19. En 1955 comenzó el desarrollo de los lenguajes de alto nivel . Las funciones del operador tenían más directamente que ver con la administración y control de los recursos del Sistema Operativo y la carga de trabajos, y las de los programadores con la codificación de los programas.

1.4 Clasificación

1.4

Clasificación



Con el paso del tiempo, los Sistemas Operativos fueron clasificándose de diferentes maneras, dependiendo del uso o de la aplicación que se les daba. A continuación se mostrarán diversos tipos de Sistemas Operativos que existen en la actualidad, con algunas de sus características:

Sistemas Operativos de multiprogramación (o Sistemas Operativos de multitarea).

Es el modo de funcionamiento disponible en algunos sistemas operativos, mediante el cual una computadora procesa varias tareas al mismo tiempo. Existen varios tipos de multitareas. La conmutación de contextos (context Switching) es un tipo muy simple de multitarea en el que dos o más aplicaciones se cargan al mismo tiempo, pero en el que solo se esta procesando la aplicación que se encuentra en primer plano (la que ve el usuario). Para activar otra tarea que se encuentre en segundo plano, el usuario debe traer al primer plano la ventana o pantalla que contenga esa aplicación. En la multitarea cooperativa, la que se utiliza en el sistema operativo Macintosh, las tareas en segundo plano reciben tiempo de procesado durante los tiempos muertos de la tarea que se encuentra en primer plano (por ejemplo, cuando esta aplicación esta esperando información del usuario), y siempre que esta aplicación lo permita. En los sistemas multitarea de tiempo compartido, como OS/2, cada tarea recibe la atención del microprocesador durante una fracción de segundo. Para mantener el sistema en orden, cada tarea recibe un nivel de prioridad o se procesa en orden secuencial. Dado que el sentido temporal del usuario es mucho más lento que la velocidad de procesamiento del ordenador, las operaciones de multitarea en tiempo compartido parecen ser simultáneas.

Se distinguen por sus habilidades para poder soportar la ejecución de dos o más trabajos activos (que se están ejecutado) al mismo tiempo. Esto trae como resultado que la Unidad Central de Procesamiento (UCP) siempre tenga alguna tarea que ejecutar, aprovechando al máximo su utilización.

Su objetivo es tener a varias tareas en la memoria principal, de manera que cada uno está usando el procesador, o un procesador distinto, es decir, involucra máquinas con más de una UCP.

Sistemas Operativos como UNIX, Windows 95, Windows 98, Windows NT, MAC-OS, OS/2, soportan la multitarea.

Las características de un Sistema Operativo de multiprogramación o multitarea son las siguientes:

Mejora productividad del sistema y utilización de recursos.

Multiplexa recursos entre varios programas.

Generalmente soportan múltiples usuarios (multiusuarios).

Proporcionan facilidades para mantener el entorno de usuarios individuales.

Requieren validación de usuario para seguridad y protección.

Proporcionan contabilidad del uso de los recursos por parte de los usuarios.

Multitarea sin soporte multiusuario se encuentra en algunos computadores personales o en sistemas de tiempo real.

Sistemas multiprocesadores son sistemas multitareas por definición ya que soportan la ejecución simultánea de múltiples tareas sobre diferentes procesadores.

En general, los sistemas de multiprogramación se caracterizan por tener múltiples programas activos compitiendo por los recursos del sistema: procesador, memoria, dispositivos periféricos.

Sistema Operativo Monotareas.

Los sistemas operativos monotareas son más primitivos y es todo lo contrario al visto anteriormente, es decir, solo pueden manejar un proceso en cada momento o que solo puede ejecutar las tareas de una en una. Por ejemplo cuando la computadora esta imprimiendo un documento, no puede iniciar otro proceso ni responder a nuevas instrucciones hasta que se termine la impresión.

Sistema Operativo Monousuario.


Los sistemas monousuarios son aquellos que nada más puede atender a un solo usuario, gracias a las limitaciones creadas por el hardware, los programas o el tipo de aplicación que se este ejecutando.

Estos tipos de sistemas son muy simples, porque todos los dispositivos de entrada, salida y control dependen de la tarea que se esta utilizando, esto quiere decir, que las instrucciones que se dan, son procesadas de inmediato; ya que existe un solo usuario. Y están orientados principalmente por los microcomputadores.

Sistema Operativo Multiusuario.

Es todo lo contrario a monousuario; y en esta categoría se encuentran todos los sistemas que cumplen simultáneamente las necesidades de dos o más usuarios, que comparten mismos recursos. Este tipo de sistemas se emplean especialmente en redes.

En otras palabras consiste en el fraccionamiento del tiempo (timesharing).
Sistemas Operativos por lotes.
Los Sistemas Operativos por lotes, procesan una gran cantidad de trabajos con poca o ninguna interacción entre los usuarios y los programas en ejecución. Se reúnen todos los trabajos comunes para realizarlos al mismo tiempo, evitando la espera de dos o más trabajos como sucede en el procesamiento en serie. Estos sistemas son de los más tradicionales y antiguos, y fueron introducidos alrededor de 1956 para aumentar la capacidad de procesamiento de los programas.

Cuando estos sistemas son bien planeados, pueden tener un tiempo de ejecución muy alto, porque el procesador es mejor utilizado y los Sistemas Operativos pueden ser simples, debido a la secuenciabilidad de la ejecución de los trabajos.

Algunos ejemplos de Sistemas Operativos por lotes exitosos son el SCOPE, del DC6600, el cual está orientado a procesamiento científico pesado, y el EXEC II para el UNIVAC 1107, orientado a procesamiento académico.

Algunas otras características con que cuentan los Sistemas Operativos por lotes son:

Requiere que el programa, datos y órdenes al sistema sean remitidos todos juntos en forma de lote.

Permiten poca o ninguna interacción usuario/programa en ejecución.

Mayor potencial de utilización de recursos que procesamiento serial simple en sistemas multiusuarios.

No conveniente para desarrollo de programas por bajo tiempo de retorno y depuración fuera de línea.

Conveniente para programas de largos tiempos de ejecución (ej, análisis estadísticos, nóminas de personal, etc.).

Se encuentra en muchos computadores personales combinados con procesamiento serial.

Planificación del procesador sencilla, típicamente procesados en orden de llegada.

Planificación de memoria sencilla, generalmente se divide en dos: parte residente del S.O. y programas transitorios.

No requieren gestión crítica de dispositivos en el tiempo.

Suelen proporcionar gestión sencilla de manejo de archivos: se requiere poca protección y ningún control de concurrencia para el acceso.

Sistemas Operativos de tiempo real.

Los Sistemas Operativos de tiempo real son aquellos en los cuales no tiene importancia el usuario, sino los procesos. Por lo general, están subutilizados sus recursos con la finalidad de prestar atención a los procesos en el momento que lo requieran. se utilizan en entornos donde son procesados un gran número de sucesos o eventos.

Muchos Sistemas Operativos de tiempo real son construidos para aplicaciones muy específicas como control de tráfico aéreo, bolsas de valores, control de refinerías, control de laminadores. También en el ramo automovilístico y de la electrónica de consumo, las aplicaciones de tiempo real están creciendo muy rápidamente. Otros campos de aplicación de los Sistemas Operativos de tiempo real son los siguientes:

Control de trenes.

Telecomunicaciones.

Sistemas de fabricación integrada.

Producción y distribución de energía eléctrica.

Control de edificios.

Sistemas multimedia.

Algunos ejemplos de Sistemas Operativos de tiempo real son: VxWorks, Solaris, Lyns OS y Spectra. Los Sistemas Operativos de tiempo real, cuentan con las siguientes características:

Se dan en entornos en donde deben ser aceptados y procesados gran cantidad de sucesos, la mayoría externos al sistema computacional, en breve tiempo o dentro de ciertos plazos.

Se utilizan en control industrial, conmutación telefónica, control de vuelo, simulaciones en tiempo real., aplicaciones militares, etc.

Objetivo es proporcionar rápidos tiempos de respuesta.

Procesa ráfagas de miles de interrupciones por segundo sin perder un solo suceso.

Proceso se activa tras ocurrencia de suceso, mediante interrupción.

Proceso de mayor prioridad expropia recursos.

Por tanto generalmente se utiliza planificación expropiativa basada en prioridades.

Gestión de memoria menos exigente que tiempo compartido, usualmente procesos son residentes permanentes en memoria.

Población de procesos estática en gran medida.

Poco movimiento de programas entre almacenamiento secundario y memoria.

Gestión de archivos se orienta más a velocidad de acceso que a utilización eficiente del recurso.

Sistemas Operativos de tiempo compartido.

Permiten la simulación de que el sistema y sus recursos son todos para cada usuario. El usuario hace una petición a la computadora, esta la procesa tan pronto como le es posible, y la respuesta aparecerá en la terminal del usuario.

Los principales recursos del sistema, el procesador, la memoria, dispositivos de E/S, son continuamente utilizados entre los diversos usuarios, dando a cada usuario la ilusión de que tiene el sistema dedicado para sí mismo. Esto trae como consecuencia una gran carga de trabajo al Sistema Operativo, principalmente en la administración de memoria principal y secundaria.

Ejemplos de Sistemas Operativos de tiempo compartido son Multics, OS/360 y DEC-10.

Características de los Sistemas Operativos de tiempo compartido:

Populares representantes de sistemas multiprogramados multiusuario, ej: sistemas de diseño asistido por computador, procesamiento de texto, etc.

Dan la ilusión de que cada usuario tiene una máquina para sí.

Mayoría utilizan algoritmo de reparto circular.

Programas se ejecutan con prioridad rotatoria que se incrementa con la espera y disminuye después de concedido el servicio.

Evitan monopolización del sistema asignando tiempos de procesador (time slot).

Gestión de memoria proporciona protección a programas residentes.

Gestión de archivo debe proporcionar protección y control de acceso debido a que pueden existir múltiples usuarios accesando un mismo archivos.

Sistemas Operativos distribuidos.

Permiten distribuir trabajos, tareas o procesos, entre un conjunto de procesadores. Puede ser que este conjunto de procesadores esté en un equipo o en diferentes, en este caso es trasparente para el usuario. Existen dos esquemas básicos de éstos. Un sistema fuertemente acoplado es a es aquel que comparte la memoria y un reloj global, cuyos tiempos de acceso son similares para todos los procesadores. En un sistema débilmente acoplado los procesadores no comparten ni memoria ni reloj, ya que cada uno cuenta con su memoria local.

Los sistemas distribuidos deben de ser muy confiables, ya que si un componente del sistema se compone otro componente debe de ser capaz de reemplazarlo.

Entre los diferentes Sistemas Operativos distribuidos que existen tenemos los siguientes: Sprite, Solaris-MC, Mach, Chorus, Spring, Amoeba, Taos, etc.

Características de los Sistemas Operativos distribuidos:

Colección de sistemas autónomos capaces de comunicación y cooperación mediante interconexiones hardware y software .

Gobierna operación de un S.C. y proporciona abstracción de máquina virtual a los usuarios.

Objetivo clave es la transparencia.

Generalmente proporcionan medios para la compartición global de recursos.

Servicios añadidos: denominación global, sistemas de archivos distribuidos, facilidades para distribución de cálculos (a través de comunicación de procesos internodos, llamadas a procedimientos remotos, etc.).

Sistemas Operativos de red.

Son aquellos sistemas que mantienen a dos o más computadoras unidas através de algún medio de comunicación (físico o no), con el objetivo primordial de poder compartir los diferentes recursos y la información del sistema.

El primer Sistema Operativo de red estaba enfocado a equipos con un procesador Motorola 68000, pasando posteriormente a procesadores Intel como Novell Netware.

Los Sistemas Operativos de red mas ampliamente usados son: Novell Netware, Personal Netware, LAN Manager, Windows NT Server, UNIX, LANtastic.

Sistemas Operativos paralelos.

En estos tipos de Sistemas Operativos se pretende que cuando existan dos o más procesos que compitan por algún recurso se puedan realizar o ejecutar al mismo tiempo.

En UNIX existe también la posibilidad de ejecutar programas sin tener que atenderlos en forma interactiva, simulando paralelismo (es decir, atender de manera concurrente varios procesos de un mismo usuario). Así, en lugar de esperar a que el proceso termine de ejecutarse (como lo haría normalmente), regresa a atender al usuario inmediatamente después de haber creado el proceso.

Ejemplos de estos tipos de Sistemas Operativos están: Alpha, PVM, la serie AIX, que es utilizado en los sistemas RS/6000 de IBM.

1.5 Estructura: Niveles o Estractos de Diseño

1.5

Estructura: Niveles o Estrategias de Diseño


El nucleo o kernel se divide en 5 capas o niveles:

Nivel 1. Gestion de Memoria:Proporciona las facilidades de bajo nivel para la gestion de memoria secundaria necesaria para la ejecucion de procesos.

Nivel 2. Procesador: Se encarga de activar los cuantums de tiempo para cada uno de los procesos, creando interrupciones de hardware cuando no son respetadas.

Nivel 3. Entrada/Salida: Proporciona las facilidades para poder utilizar los dispositivos de E/S requeridos por los procesos.

Nivel 4. Informacion o Aplicacion o Interprete de Lenguajes: Facilita la comunicacion con los lenguajes y el sistema operativo para aceptar las ordenes en cada una de las aplicaciones. Ejecutando un programa el software de este nivel crea el ambiente de trabajo e invoca a los procesos correspondientes.

Nivel 5. Control de Archivos: Proporciona la facilidad para el almacenamiento a largo plazo y manipulacion de archivos con nombre, va asignando espacio y acceso de datos en memoria.
El nucleo o kernel realiza diferentes funciones tales como:

• Manejo de interrupciones.
• Creacion y destruccion de procesos.
• Cambio de estado de los procesos.
• Despacho
• Suspension y reanudacion de procesos.
• Sincronizacion de procesos.
• Comunicacion entre procesos.
• Manipulacion de los bloques de control de procesos.
• Apoyo para las actividades de entrada/salida.
• Apoyo para asignacion y liberacion de memoria.
• Apoyo para el sistema de archivos.
• Apoyo para el mecanismo de llamada y retorno de un procedimiento.
• Apoyo para ciertas funciones de contabilidad del sistema.

1.6 Nucleo

1.6

Núcleo


Es un software que constituye la parte más importante del sistema operativo. Es el principal responsable de facilitar a los distintos programas acceso seguro al hardware de la computadora o en forma básica, es el encargado de gestionar recursos, a través de servicios de llamada al sistema. Como hay muchos programas y el acceso al hardware es limitado, también se encarga de decidir qué programa podrá hacer uso de un dispositivo de hardware y durante cuánto tiempo, lo que se conoce como multiplexado. Acceder al hardware directamente puede ser realmente complejo, por lo que los núcleos suelen implementar una serie de abstracciones del hardware. Esto permite esconder la complejidad, y proporciona una interfaz limpia y uniforme al hardware subyacente, lo que facilita su uso al programador.
En informática, los ordenadores son el núcleo del programa informático que se asegura de:

- La comunicación entre los programas que solicitan recursos y el hardware.

- Gestión de los distintos programas informáticos (tareas) de una máquina.

- Gestión del hardware (memoria, procesador, periférico, forma de almacenamiento, etc.)

La mayoría de las interfaces de usuario se construyen en torno al concepto de núcleo. La existencia de un núcleo, es decir, de un único programa responsable de la comunicación entre el hardware y el programa informático, resulta de compromisos complejos referentes a cuestiones de resultados, seguridad y arquitectura de los procesadores. El núcleo tiene grandes poderes sobre la utilización de los recursos materiales (hardware), en particular, de la memoria.

Funciones generalmente ejercidas por un núcleo

Los núcleos tienen como funciones básicas garantizar la carga y la ejecución de los procesos, las entradas/salidas y proponer una interfaz entre el espacio núcleo y los programas del espacio del usuario.

Aparte de las funcionalidades básicas, el conjunto de las funciones de los puntos siguientes (incluidos los pilotos materiales, las funciones de redes y sistemas de ficheros o los servicios) necesariamente no son proporcionados por un núcleo de sistema de explotación. Pueden establecerse estas funciones del sistema de explotación tanto en el espacio usuario como en el propio núcleo. Su implantación en el núcleo se hace en el único objetivo de mejorar los resultados. En efecto, según la concepción del núcleo, la misma función llamada desde el espacio usuario o el espacio núcleo tiene un coste temporal obviamente diferente. Si esta llamada de función es frecuente, puede resultar útil integrar estas funciones al núcleo para mejorar los resultados.

UNIDAD 2: Administración de procesos y del procesador

2.1 Concepto de Preceso

2.1

Conceptos de Procesos


Un proceso puede informalmente entenderse como un programa en ejecución. Formalmente un proceso es "Una unidad de actividad que se caracteriza por la ejecución de una secuencia de instrucciones, un estado actual, y un conjunto de recursos del sistema asociados".

Para entender lo que es un proceso y la diferencia entre un programa y un proceso, A. S. Tanenbaum propone la analogía "Un científico computacional con mente culinaria hornea un pastel de cumpleaños para su hija; tiene la receta para un pastel de cumpleaños y una cocina bien equipada con todos los ingredientes necesarios, harina, huevo, azúcar, leche, etcétera." Situando cada parte de la analogía se puede decir que la receta representa el programa (el algoritmo), el científico computacional es el procesador y los ingredientes son las entradas del programa. El proceso es la actividad que consiste en que el científico computacional vaya leyendo la receta, obteniendo los ingredientes y horneando el pastel.

Cada proceso tiene su contador de programa, registros y variables, aislados de otros procesos, incluso siendo el mismo programa en ejecución 2 veces. Cuándo este último caso sucede, el sistema operativo usa la misma región de memoria de código, debido a que dicho código no cambiará, a menos que se ejecute una versión distinta del programa.

Los procesos son gestionados por el sistema operativo y están formados por:

- Las instrucciones de un programa destinadas a ser ejecutadas por el microprocesador.

- Su estado de ejecución en un momento dado, esto es, los valores de los registros de la unidad central de procesamiento para dicho programa.

- Su memoria de trabajo (memoria crítica), es decir, la memoria que ha reservado y sus contenidos.

- Otra información que permite al sistema operativo su planificación.

Un proceso se rige en pequeñas porciones, conocidas como páginas, y cada proceso tiene su propia tabla de paginación, fungiendo como una optimización del sistema operativo ante los fallo de página.

Esta definición varía ligeramente en el caso de sistemas operativos multihilo, donde un proceso consta de uno o más hilos, la memoria de trabajo (compartida por todos los hilos) y la información de planificación. Cada hilo consta de instrucciones y estado de ejecución.

Los procesos son creados y eliminados por el sistema operativo, así como también éste se debe hacer cargo de la comunicación entre procesos, pero lo hace a petición de otros procesos (interrupción o tiempo de reloj). El mecanismo por el cual un proceso crea otro proceso se denomina bifurcación (fork). El proceso de arranque de GNU/Linux inicia con un sólo proceso (init) y después comienza a crear los hilos necesarios para tener el sistema listo para su uso. Los nuevos procesos pueden ser independientes y no compartir el espacio de memoria con el proceso que los ha creado o ser creados en el mismo espacio de memoria.

En los sistemas operativos multihilo es posible crear tanto hilos como procesos. La diferencia estriba en que un proceso solamente puede crear hilos para sí mismo y en que dichos hilos comparten toda la memoria reservada para el proceso.

Los procesos pueden ser cooperativos o independientes. Dos o más procesos pueden cooperar mediante señales de forma que uno obliga a detenerse a los otros hasta que reciban una señal para continuar.

- Se usa una variable de tipo semáforo para sincronizar los procesos.

- Si un proceso está esperando una señal, se suspende hasta que la señal se envíe.

- Se mantiene una cola de procesos en espera en el semáforo.

- La forma de elegir los procesos de la cola en espera es mediante una política first in first out.

La sincronización explícita entre procesos es un caso particular del estado "bloqueado". En este caso, el suceso que permite desbloquear un proceso no es una operación de entrada/salida, sino una señal generada a propósito por el programador desde otro proceso.

Hay cuatro eventos principales que provocan la creación de procesos:

- El arranque del sistema.

- La ejecución, desde un proceso, de una llamada al sistema para la creación de otro proceso.

- Una petición de usuario para crear un proceso.

- El inicio de un trabajo por lotes.

Los procesos pueden contener uno o más hilos, haciendo más eficiente las tareas, asimismo la complejidad de los algoritmos de sincronización, ya que podría ocurrir la condición de carrera muy a menudo, inclusive los indeseados interbloqueos.

2.2 Estados y Transiciones de los Procesos

2.2

Estados y Transiciones de los Procesos

Los estados de un proceso obedecen a su participación y disponibilidad dentro del sistema operativo y surgen de la necesidad de controlar la ejecución de cada proceso. Los procesadores sólo pueden ejecutar un sólo proceso a la vez, turnandolos para el uso de éste. Existen procesos apropiativos que básicamente ocupan todo el tiempo del procesador hasta que ellos deciden dejarlo. Los procesos no apropiativos son aquellos que ocupan por un periodo de tiempo el procesador hasta que una interrupción o señal llega al procesador para hacer el cambio de proceso, a esto se le conoce como cambio de contexto.

Los posibles estados que puede tener un proceso son ejecución, bloqueado y listo:

- Ejecución, es un proceso que está haciendo uso del procesador.

- Bloqueado, No puede ejecutarse hasta que un evento externo sea llevado a cabo.

- Listo, ha dejado disponible al procesador para que otro proceso pueda ocuparlo.

Las posibles transiciones son 4. La primera se realiza cuando el sistema operativo determina que el proceso no puede continuar justo en ese momento, en algunos sistemas se puede hacer una llamada al sistema "pause" para pasar al estado bloqueado, en Unix cuando el proceso está leyendo datos provenientes de una canalización o de un archivo especial (terminal) y no hay entrada disponible, el proceso se bloquea de forma automática.

Las transiciones 2 y 3 son llevadas a cabo por el planificador de procesos, siendo que el proceso no tiene conocimiento de éste. La transición 2 se da cuando el planificador de procesos decide que el proceso ya estuvo el tiempo suficiente en ejecución y debe dar paso a la ejecución de otros procesos (adquieran tiempo del procesador). La transición 3 se realiza cuando todos los procesos han ocupado tiempo del procesador y debe retomarse el primer proceso.

La transición 4 ocurre cuando se produce un evento externo por el que un proceso estaba en espera, por ejemplos, introducir datos desde la terminal. Si no hay otro proceso en ejecución en ese instante, la transición 3 se activa y el proceso comienza a ejecutarse; también podría pasar al estado de "listo" y esperar un momento para iniciar la ejecución.

2.3 Procesos Ligeros : Hilos o Hebras

2.3

Procesos Ligeros: hilos o Hebras


Un proceso ligero, o thread, es un programa en ejecucion (flujo de ejecucion) que comparte la imagen de memoria y otras informaciones con otros procesos ligeros. Como muestra la Figura , un proceso puede contener un solo flujo de ejecucion, como ocurre en los procesos clasicos, o mas de un flujo de ejecucion (procesos ligeros).

Desde el punto de vista de la programacion, un proceso ligero se define como una funcion cuya ejecucion se puede lanzar en paralelo con otras. El hilo de ejecucion primario, o proceso ligero primario, corresponde a la funcion main.

Cada proceso ligero tiene informaciones que le son propias y que no comparte con otros procesos ligeros. Las informaciones propias se refieren fundamentalmente al contexto de ejecucion, pudiendose destacar las siguientes:

Contador de programa.
Pila.
Registros.
Estado del proceso ligero (ejecutando, listo o bloqueado).

Todos los procesos ligeros de un mismo proceso comparten la informacion del mismo. En concreto, comparten:

Espacio de memoria.
Variables globales.
Archivos abiertos.
Procesos hijos.
Temporizadores.
Senales y semaforos.
Contabilidad.

Es importante destacar que todos los procesos ligeros de un mismo proceso comparten el mismo espacio de direcciones de memoria, que incluye el codigo, los datos y las pilas de los diferentes procesos ligeros. Esto hace que no exista proteccion de memoria entre los procesos ligeros de un mismo proceso, algo que si ocurre con los procesos convencionales.

2.4 Concurrencia y Secuenciabilidad

2.4

Concurrencia y Secuenciabilidad


Los procesos son concurrentes si existen simultaneamente. Los procesos concurrentes pueden funcionar en forma totalmente independiente unos de otros, o pueden ser asincronos, lo cual significa que en ocasiones requieren cierta sincronizacion o cooperacion.

Cuando dos o mas procesos llegan al mismo tiempo a ejecutarse, se dice que se ha presentado una concurrencia de procesos. Es importante mencionar que para que dos o mas procesos sean concurrentes , es necesario que tengan alguna relacion entre ellos como puede ser la cooperacion para un determinado trabajo o el uso de informacion o recursos compartidos, por ejemplo: en un sistema de un procesador , la multiprogramacion es una condicion necesaria pero no suficiente para que exista concurrencia, ya que los procesos pueden ejecutarse de forma totalmente independiente.

Por otro lado en un sistema de varios procesos se puede presentar la concurrencia siempre y cuando las actividades necesiten actuar entre si ya sea para utilizar informacion en comun o para cualquier otra cosa.
Existen tres formas modelos de computadora en los que se puede pueden ejecutar procesos concurrentes:

Multiprogramacion con un unico procesador.

En este modelo todos los procesos concurrentes ejecutan sobre un unico procesador. El sistema operativo se encarga de ir repartiendo el tiempo del procesador entre los distintos procesos, intercalando la ejecucion de los mismos para dar asi una apariencia de ejecucion simultanea.

Multiprocesador.

Un multiprocesador es una maquina formada por un conjunto de procesadores que comparten memoria principal. En este tipo de arquitecturas, los procesos concurrentes no solo pueden intercalar su ejecucion sino tambien superponerla. En este caso si existe una verdadera ejecucion simultanea de procesos, al coincidir las fases de procesamiento de distintos procesos. En un instante dado se pueden ejecutar de forma simultanea tantos procesos como procesadores haya.

Multicomputadora.

Una multicomputadora es una maquina de memoria distribuida, en contraposicion con el multiprocesador que es de memoria compartida. Esta formada por una serie de computadoras completas con su UCP, memoria principal y, en su caso, periferia. Cada uno de estos procesadores completo se denomina nodo. Los nodos se encuentran conectados y se comunican entre si a traves de una red de interconexion, empleando el metodo de paso de mensajes. En este tipo de arquitecturas tambien es posible la ejecucion simultanea de los procesos sobre los distintos procesadores.

En general la concurrencia sera aparente siempre que el numero de procesos sea mayor que el de procesadores disponibles, es decir, cuando haya mas de un proceso por procesador. La concurrencia sera real cuando haya un proceso por procesador

2.5 Niveles, Objetivos y Criterios de Planificacion

2.5

Niveles, Objetivos y criterios de Planificación


En epocas pasadas de los sistemas de procesamiento por lotes, con una entrada en forma de imagenes de tarjetas en una cinta magnetica, el algoritmo de planificacion era sencillo: solo habia que ejecutar el siguiente trabajo en la cinta.

En los sistemas de multiusuario de tiempo compartido, que se combinaban con un fondo de trabajos procesados en lote, el algoritmo era mas complejo. En forma invariable, existian varios usuarios en espera de servicio y podian existir tambien otros trabajos para ser procesados en lote. Incluso en los sistemas puros de tiempo compartido existen con frecuencia los trabajos colaterales, como el sistema de correo electronico, que a menudo se ejecuta todo el tiempo para enviar o recibir correo o noticias.

Cuando mas de un proceso es ejecutable, el Sistema Operativo debe decidir cual de ellos debera ejecutarse primero. Hay que tener una planificacion de los procesos que quieren ejecutarse en el sistema.La planificacion es una funcion primordial del Sistema Operativo. La mayoria de los recursos, si no es que todos, se planifican antes de que se utilicen. La asignacion de procesadores fisicos a los procesos hace posible que estos realicen su trabajo, y tal asignacion es un problema complejo manejado por el Sistema Operativo.

Concepto de Planificacion

La planificacion hace referencia a un conjunto de politicas y mecanismos incorporados al sistema operativo que gobiernan el orden en que se ejecutan los trabajos que deben ser cumplimentados por el sistema informatico.

Objetivo de la Planificacion

El objetivo principal de la planificacion es optimizar el rendimiento del sistema y proporcionar un buen servicio a todos los procesos que se encuentren en el. En general, la planificacion trata de cubrir los siguientes objetivos:

usticia. La planificacion debe ser lo mas justa posible con todos los procesos, sin favorecer a unos y perjudicar a otros.

Maxima capacidad de ejecucion. Debe dar un servicio eficiente para que todos los trabajos se realicen lo mas rapidamente posible. Esto se puede lograr disminuyendo el numero de cambios de proceso.

Maximo numero de usuarios interactivos. En los sistemas de tiempo compartido se tratara de que puedan estar trabajando el mayor numero de usuarios al mismo tiempo.

Predecibilidad. La planificacion debe realizarse de tal forma que en todo momento pueda saberse como sera su ejecucion.

Minimizacion de la sobrecarga. La computadora debe tener poca sobrecarga ya que esta afecta directamente al rendimiento final del sistema: a menor sobrecarga mayor velocidad de proceso.

Equilibrio en el uso de recursos. Para obtener un mayor rendimiento en el uso de los recursos y que estos esten ocupados equitativamente el mayor tiempo posible.

Seguridad de las prioridades. Si un proceso tiene mayor prioridad que otro, este debe ejecutarse mas rapidamente.

Evitar la postergacion indefinida. Esto se logra aumentando la prioridad de un proceso mientras espere por un recurso. La prioridad llegara a ser tan alta que al proceso le sera asignado el recurso que pidio.

Criterios de planificacion

Para realizar los objetivos de la planificacion, un mecanismo de planificacion debe considerar lo siguiente:

La limitacion de un proceso a las operaciones de Entrada / Salida: cuando un proceso consigue la cpu, ?la utiliza solo brevemente antes de generar una peticion de Entrada / Salida?

La limitacion de un proceso a la cpu: cuando un proceso obtiene la cpu, ?tiende a usarla hasta que expira su tiempo?

Si un proceso es por lote (batch) o interactivo: los usuarios interactivos deben recibir inmediato servicio para garantizar buenos tiempos de respuesta.
¿Que urgencia tiene una respuesta rapida?: por ejemplo, un proceso de tiempo real de un sistema de control que supervise una refineria de combustible requiere una respuesta rapida, mas rapida que la respuesta requerida por un proceso en lotes (batch) que debera entregarse al dia siguiente.

La prioridad de un proceso: a mayor prioridad mejor tratamiento.

Frecuentemente un proceso genera fallos (carencias) de pagina:

Probablemente los procesos que generan pocos fallos de pagina hayan acumulado sus “conjuntos de trabajo” en el almacenamiento principal.

Los procesos que experimentan gran cantidad de fallos de pagina aun no han establecido sus conjuntos de trabajo.

Un criterio indica favorecer a los procesos que han establecido sus conjuntos de trabajo.

Otro criterio indica favorecer a los procesos con una tasa alta de fallos de pagina ya que rapidamente generaran una peticion de Entrada / Salida.

Frecuentemente un proceso ha sido apropiado por otro de mas alta prioridad, lo cual significa lo siguiente:

A menudo los procesos apropiados deben recibir un tratamiento menos favorable.

Cada vez que el Sistema Operativo asume la sobrecarga para hacer ejecutar este proceso, el corto tiempo de ejecucion antes de la apropiacion no justifica la sobrecarga de hacer ejecutar al proceso en primer lugar.

Cuanto tiempo de ejecucion real ha recibido el proceso?: un criterio considera que debe ser favorecido un proceso que ha recibido muy poco tiempo de cpu.

Cuanto tiempo adicional va a necesitar el proceso para terminar?: los tiempos promedio de espera pueden reducirse priorizando los procesos que requieren de un tiempo de ejecucion minimo para su terminacion, pero pocas veces es posible conocer la cantidad de tiempo adicional que cada proceso necesita para terminar.

2.6 Técnicas de Administración del Planificador

2.6

Técnicas de Administración del Planificador

Las disciplinas de planificación pueden ser:

• Expropias
• No expropiativas

Se denomina planificador al software del sistema operativo encargado de asignar los recursos de un sistema entre los procesos que los solicitan. Siempre que haya tomar una decisión, el planificador debe decidir cuál de los procesos que compiten por la posesión de un determinado recursos lo recibirá.

Los algoritmos (técnicas) tienen distintas propiedades según los criterios en los que se basen para su construcción, lo cual se refleja en qué tipo de procesos se puede ver favorecido frente a otro en la disputa del procesador. Antes de realizar la elección de un algoritmo se debe considerar las propiedades de estos frente al criterio de diseño elegido. Algunos de estos son:

a) Eficacia: Se expresa como un porcentaje del tiempo medio de utilización. Aunque puede parecer lógico intentar mantener este parámetro próximo al 100%, con un valor tan elevado otros aspectos importante de medida del comportamiento del sistema pueden verse deteriorados, como por ejemplo el tiempo medio de espera.

b) Rendimiento: Es una medida del numero de procesos completados por unidad de tiempo. Por ejemplo 10 procesos por segundo.

c) Tiempo de retorno o regreso: Es el intervalo de tiempo que transcurre desde que un proceso se crea o presenta hasta que completa por el sistema.

d) Tiempo de espera: Es el tiempo que el proceso espera hasta que se le concede el procesador. Puede resultar una medida mas adecuada de la eficiencia del sistema, ya que se elimina de la media el tiempo que tarda en ejecutarse el mismo.

e) Tiempo de respuesta a un evento: Se denomina así el intervalo de tiempo que transcurre desde que se señala un evento hasta que se ejecuta la primera instrucción de la rutina de servicio de dicho evento.

UNIDAD 3: Administración de memoria

3.1 Politica y Filosofia

3.1

Política y Filosofía

FILOSOFÍA

La memoria principal puede ser considerada como un arreglo lineal de localidades de almacenamiento de un byte de tamaño. Cada localidad de almacenamiento tiene asignada una dirección que la identifica.
Una de las funciones básicas que debe implementar un SO es la Administración de la Memoria para tener un control sobre los lugares donde están almacenados los procesos y datos que actualmente se están utilizando.

Los programas y datos necesitan estar en el almacenamiento principal para ser ejecutados o para poder hacer referencia de ellos. Los que no se necesitan de inmediato pueden guardarse en el almacenamiento secundario.

Los recursos de memoria totales eran insuficientes para justificar algoritmos complejos, por lo que UNIX intercambiaba el contenido en memoria de los procesos.

POLÍTICAS

FIFO: Los procesos se despachan de acuerdo a su tiempo de llega a la cola de procesos listos, si un proceso llega al procesador sale hasta que termine. La política FIFO actualmente no se usa como el esquema principal de un sistema, pero si por ejemplo cuando se usa una política de prioridades y hay procesos con la misma prioridad, a estos se les podría aplicar FIFO.
Round Robin: Los procesos se despachan en la forma que lo hace el FIFO, pero se les asigna una cantidad limitada de tiempo (CUANTUM) en el procesador, si no termina en ese lapso se manda al final de la lista de procesos listos.

SJF (Shortest job first - Prioridad del trabajo mas corto): Se ejecuta primero el proceso en espera que tiene el menor tiempo estimado. SJF favorece a los procesos cortos, ya que los largos podrían llegar a rezagarse mucho tiempo e incluso nunca ejecutarse.

SRT (Sortest remaining time scheduling – Tiempo restante más corto): En SJF una vez que un proceso comienza su ejecución continua hasta terminar. En SRT, un proceso en ejecución puede ser desposeído por uno nuevo de menor tiempo de ejecución.

HRN: (highest response ratio next – Prioridad de la tasa de respuesta más alta): Política no apropiativa que corrige el retraso excesivo de procesos grandes que produce el SJF, para así no caer en un favoritismo excesivo por los procesos cortos, lo logra usando una formula basada en el tiempo de espera y el tiempo de servicio, con lo cual la prioridad de cada trabajo no solo esta en función del tiempo de servicio sino también del tiempo que ha esperado para ser atendido.

3.2 Memoria Real

3.2

Memoria Real


La memoria real o principal es en donde son ejecutados los programas y procesos de una computadora y es el espacio real que existe en memoria para que se ejecuten los procesos. Por lo general esta memoria es de mayor costo que la memoria secundaria, pero el acceso a la información contenida en ella es de más rápido acceso. Solo la memoria cache es más rápida que la principal, pero su costo es a su vez mayor.

Antes de administrar el almacenamiento, primero es necesario entender el hardware en el que están almacenados los datos. A menos que posea un algún conocimiento sobre la operación de los dispositivos de almacenamiento masivo, quizás se encuentre en una situación donde tenga un problema relacionado al almacenamiento pero le falte el conocimiento de fondo para si quiera entender lo que ve. Al tener un entendimiento sobre la forma en que opera el hardware subyacente, podrá más fácilmente determinar si el subsistema de almacenamiento de su computador está funcionando correctamente.

La gran mayoría de los dispositivos de almacenamiento masivo utilizan alguna forma de media de rotación y soportan el acceso aleatorio de los datos en esa media. Esto significa que los componentes siguientes están presentes en alguna forma dentro de casi todos los dispositivos de almacenamiento masivo:
• Plato del disco
• Dispositivo de lectura/escritura de datos
• Brazos de acceso

Jerarquia
Se conoce como jerarquía de memoria a la organización piramidal de la memoria en niveles, que tienen los ordenadores. Su objetivo es conseguir el rendimiento de una memoria de gran velocidad al coste de una memoria de baja velocidad, basándose en el principio de cercanía de referencias.
Los puntos básicos relacionados con la memoria pueden resumirse en:
• Cantidad.
Los niveles que componen la jerarquía de memoria habitualmente son:
o Nivel 0: Registros.
o Nivel 1: Memoria caché.
o Nivel 2: Memoria principal.
o Nivel 3: Disco duro (con el mecanismo de memoria virtual).
o Nivel 4: Redes(Actualmente se concidera un nivel mas de la jerarquia de memorias).
• Velocidad.
• Coste.

Estrategias de Administración del Almacenamiento.

Están dirigidas a la obtención del mejor uso posible del recurso del almacenamiento principal.
Se dividen en las siguientes categorías:
• Estrategias de búsqueda:
o Estrategias de búsqueda por demanda.
o Estrategias de búsqueda anticipada.

• Estrategias de colocación.
• Estrategias de reposición.
Las “estrategias de búsqueda” están relacionadas con el hecho de cuándo obtener el siguiente fragmento de programa o de datos para su inserción en la memoria principal.
En la “búsqueda por demanda” el siguiente fragmento de programa o de datos se carga al almacenamiento principal cuando algún programa en ejecución lo referencia.
Las “estrategias de colocación” están relacionadas con la determinación del lugar de la memoria donde se colocará (cargará) un programa nuevo.
Las “estrategias de reposición” están relacionadas con la determinación de qué fragmento de programa o de datos desplazar para dar lugar a los programas nuevos.

Asignación Contigua de Almacenamiento Versus No Contigua.
En la “asignación contigua” cada programa ocupa un bloque contiguo y sencillo de localizaciones de almacenamiento.
En la “asignación no contigua” un programa se divide en varios bloques o “segmentos” que pueden almacenarse en direcciones que no tienen que ser necesariamente adyacentes, por lo que es más compleja pero más eficiente que la asignación continua.
Asignación Contigua de Almacenamiento de Un Solo Usuario.
Se consideran S. O. que ya poseen desarrollado el “sistema de control de entrada / salida”: IOCS: input / output control system.

3.3 Organización de Memoria Virtual

3.3

Organización de Memoria Virtual


Memoria Virtual

Se ejecutan los programas que no se encuentran totalmente en la memoria principal.

Los métodos mas comunes para poner en practica el almacenamiento virtual son:

1. Paginación
2. Segmentación

Los MIDD mantienen mapa de correspondencia para las traducciones de direcciones que muestran que localidades de almacenamiento virtual estan en el almacenamiento real en un momento dado y en donde se encuentran. Para ello se agrupan en bloques.

Cuando los bloques son del mismo tamaño se llaman páginas y la organización de la memoria se llama paginación.

Cuando los bloques tienen tamaños diferentes se llaman segmentos y la organización de memoria se llama segmentación.

Paginación

En sistemas operativos de computadoras, los sistemas de paginación de memoria dividen los programas en pequeñas partes o páginas. Del mismo modo, la memoria es dividida en trozos del mismo tamaño que las páginas llamados marcos de página. De esta forma, la cantidad de memoria desperdiciada por un proceso es el final de su última página, lo que minimiza la fragmentación interna y evita la externa.

En un momento cualquiera, la memoria se encuentra ocupada con páginas de diferentes procesos, mientras que algunos marcos están disponibles para su uso. El sistema operativo mantiene una lista de estos últimos marcos, y una tabla por cada proceso, donde consta en qué marco se encuentra cada página del proceso. De esta forma, las páginas de un proceso pueden no estar contiguamente ubicadas en memoria, y pueden intercalarse con las páginas de otros procesos.

En la tabla de páginas de un proceso, se encuentra la ubicación del marco que contiene a cada una de sus páginas. Las direcciones lógicas ahora se forman como un número de página y de un desplazamiento dentro de esa página (conocido comúnmente como offset).

El número de página es usado como un índice dentro de la tabla de páginas, y una vez obtenida la dirección del marco de memoria, se utiliza el desplazamiento para componer la dirección real o dirección física. Este proceso se realiza en una parte del computador específicamente diseñada para esta tarea, es decir, es un proceso hardware y no software.

3.4 Administración de Memoria Virtual

3.4

Administración de Memoria Virtual



Estrategias de Administración de Memoria

Estrategias de Obtención: Determina cuando se deben transferir una página o un segmento de el almacenamiento secundario al primario. Las estrategias de obtención por demanda esperan a que un proceso en ejecución haga referencia a una página o un segmento antes de traerlo

Los esquemas de obtención anticipada intentan determinar por adelantado a que páginas o segmentos hara referencia un proceso. Sí la propabilidad de una referencia es alta y hay espacio disponible entonces se trae al almacenamiento primario la página o segmento antes de que se haga la referencia explicita.

Estrategias de Colocación: Determinan en que lugar de la memoria principal se debe colocar una página o segemento entrante. Los sitios de navegación vuelven tribal la decision de colocación para que una página entrante se pueda colocar en cualquier marco disponible.

Estrategias de Reemplazo: Sirven para decider que página o segmento se debe desplazar pra dejar espacio a una página o segmento entrante cuando este completamente ocupada la memoria principal.

UNIDAD 4: Administración de Entrada y Salida

4.1 Dispositivos y Manejadores de Dispositivos: DEVICE y DRIVERS

4.1

Dispositivos y Manejadores de Dispositivos: Device Drivers


Se pueden clasificar en dos grandes categorías:

1. Dispositivos de bloque
2. Dispositivos de carácter

Las principales características de los dispositivos de bloque son:
- La información se almacena en bloques de tamaño fijo.
- Cada bloque tiene su propia dirección.
- Los tamaños más comunes de los bloques van desde los 128 bytes hasta los 1.024 bytes.
- Se puede leer o escribir en un bloque de forma independiente de los demás, en cualquier momento.
- Un ejemplo típico de dispositivos de bloque son los discos.

Las principales características de los dispositivos de carácter son:
-La información se transfiere como un flujo de caracteres, sin sujetarse a una estructura de bloques.
- No se pueden utilizar direcciones.
- No tienen una operación de busqueda.
- Unos ejemplos típicos de dispositivos de carácter son las impresoras de línea, terminales, interfaces de una red, ratones, etc.


Manejadores de Dispositivos

Todo el código que depende de los dispositivos aparece en los manejadores de dispositivos.

Cada controlador posee uno o más registros de dispositivos:
Se utilizan para darle los comandos.
Los manejadores de dispositivos proveen estos comandos y verifican su ejecución adecuada.

La labor de un manejador de dispositivos es la de:
Aceptar las solicitudes abstractas que le hace el software independiente del dispositivo.
Verificar la ejecución de dichas solicitudes.
Si al recibir una solicitud el manejador esta ocupado con otra solicitud, agregara la nueva solicitud a una cola de solicitudes pendientes.
La solicitud de e / s, por ej. para un disco, se debe traducir de términos abstractos a términos concretos:

El manejador de disco debe:
Estimar el lugar donde se encuentra en realidad el bloque solicitado.
Verificar si el motor de la unidad funciona.
Verificar si el brazo esta colocado en el cilindro adecuado, etc.
Resumiendo: debe decidir cuales son las operaciones necesarias del controlador y su orden.
Envía los comandos al controlador al escribir en los registros de dispositivo del mismo.
Frecuentemente el manejador del dispositivo se bloquea hasta que el controlador realiza cierto trabajo; una interrupción lo libera de este bloqueo.
Al finalizar la operación debe verificar los errores.
Si todo esta o.k. transferirá los datos al software independiente del dispositivo.
Regresa información de estado sobre los errores a quien lo llamo.
Inicia otra solicitud pendiente o queda en espera.

4.2 Mecanismos y Funciones de los Manejadores de Dispositivos: DEVICE y DRIVERS

4.2

Mecanismos y funciones de los Manejadores de Dispositivos


El controlador es el componente más importante desde el punto de vista del sistema operativo, ya que constituye la interfaz del dispositivo con el bus de la computadora y es el componente que se ve desde la UCP. El S. O. generalmente trabaja con el controlador y no con el dispositivo. Los modelos más frecuentes de comunicación entre la cpu y los controladores son:

Para la mayoría de las micro y mini computadoras: Modelo de bus del sistema.

Para la mayoría de los mainframes: Modelo de varios buses y computadoras especializadas en e/s llamadas canales de e/s. La interfaz entre el controlador y el dispositivo es con frecuencia de muy bajo nivel: La comunicación es mediante un flujo de bits en serie que: Comienza con un preámbulo. Sigue con una serie de bits (de un sector de disco, por ej.). Concluye con una suma para verificación o un código corrector de errores. El preámbulo: Se escribe al dar formato al disco. Contiene el número de cilindro y sector, el tamaño de sector y otros datos similares.
.
El controlador debe: Convertir el flujo de bits en serie en un bloque de bytes. -Efectuar cualquier corrección de errores necesaria. -Copiar el bloque en la memoria principal. Cada controlador posee registros que utiliza para comunicarse con la cpu: -Pueden ser parte del espacio normal de direcciones de la memoria: e/s mapeada a memoria. -Pueden utilizar un espacio de direcciones especial para la e/s, asignando a cada controlador una parte de él.

El S. O. realiza la e/s al escribir comandos en los registros de los controladores; los parámetros de los comandos también se cargan en los registros de los controladores. Al aceptar el comando, la cpu puede dejar al controlador y dedicarse a otro trabajo. Al terminar el comando, el controlador provoca una interrupción para permitir que el S. O.: -Obtenga el control de la cpu. -Verifique los resultados de la operación. La cpu obtiene los resultados y el estado del dispositivo al leer uno o más bytes de información de los registros del controlador.

Su programación se lleva a cabo mediante una interfaz de muy bajo nivel que proporciona acceso a una serie de registros del controlador, incluidos en el mapa de E/S de la computadora, que se pueden acceder mediante instrucciones de máquina de E/S. Hay tres registros importantes en casi todos los controladores: registro de datos, estado y control. El registro de datos sirve para el intercambio de datos. En él irá el controlador cargando los datos leídos y de él irá extrayendo los datos para su escritura en el periférico. Un bit del registro de estado sirve para indicar que el controlador puede transferir una palabra. En las operaciones de lectura esto significa que ha cargado en el registro de datos un nuevo valor, mientras que en las de escritura significa que necesita un nuevo dato. Otros bits de este registro sirven para que el controlador indique los problemas que ha encontrado en la ejecución de la última operación de E/S. El registro de control sirve para indicarle al controlador las operaciones que ha de realizar. Los distintos bits de este registro indican distintas acciones que ha de realizar el periférico. Para empezar una operación de E/S, la UCP tiene que escribir sobre los registros anteriores los datos de la operación a través de una dirección de E/S o de memoria asignada únicamente al controlador. Este modelo vale tanto para los terminales o la pantalla como para los discos. Las características del controlador son muy importantes, ya que definen el aspecto del periférico para el sistema operativo. Atendiendo a las características del hardware de los dispositivos, se pueden observar los siguientes aspectos distintivos:
Dirección de E/S. En general hay dos modelos de direccionamiento de E/S, los que usan puertos y los que proyectan los registros en memoria.
Unidad de transferencia. Los dispositivos suelen usar unidades de transferencia de tamaño fijo. Hay dos modelos clásicos de dispositivos: de caracteres y de bloques.
Interacción computadora-controlador. La computadora tiene que interaccionar con la computadora para realizar las operaciones de E/S y saber cuándo terminan.

Un controlador de dispositivo o unidad de E/S se encarga de controlar uno o más dispositivos del mismo tipo y de intercambiar información entre ellos y la memoria principal o unidad central de proceso de la computadora. El controlador debe encargarse además de sincronizar la velocidad del procesador con la del periférico y de detectar los posibles errores que se produzcan en el acceso a los periféricos. En el caso de un controlador de disco, éste debe encargarse de convertir un flujo de bits procedente del disco a un bloque de bytes detectando y corrigiendo, si es posible, los errores que se produzcan en esta transferencia. Una vez obtenido el bloque y comprobado que se encuentra libre de errores, deberá encargarse de transferirlo a memoria principal. La información entre los controladores de dispositivo y la unidad central de proceso o memoria principal se puede transferir mediante un programa que ejecuta continuamente y lee o escribe los datos del (al) controlador. Con esta técnica, que se denomina E/S programada, la transferencia de información entre un periférico y el procesador se realiza mediante la ejecución de una instrucción de E/S. Con esta técnica, es el procesador el responsable de extraer o enviar datos entre el procesador y el controlador de dispositivo, lo que provoca que el procesador tenga que esperar mientras se realiza la transferencia entre el periférico y el controlador.
.
Dado que los periféricos son sensiblemente más lentos que el procesador, éste deberá esperar una gran cantidad de tiempo hasta que se complete la operación de E/S. En este caso no existe ningún tipo de concurrencia entre la E/S y el procesador ya que éste debe esperar a que finalice la operación. Aunque esta técnica es muy antigua, ya que proviene del tiempo en que los controladores no tenían interrupciones, actualmente los canales de E/S y algunos multiprocesadores usan esta técnica para evitar que lleguen a la UCP de la computadora muchas interrupciones de E/S. En ambos casos, la técnica es la misma: dedicar una UCP especial para la E/S. La forma de hacerlo es muestrear continuamente los registros de estado de los controladores para ver si están disponibles y, en ese caso, leer o escribir los registros. Imagine un canal de E/S al que hay conectados múltiples buses de E/S que, a su vez, tienen múltiples dispositivos de E/S. Si la UCP quiere escribir en uno de ellos, debe mirar su registro de estado hasta que los bits indiquen que no está ocupado.
Cuando esto ocurra, escribirá un bloque en los registros del controlador y esperará hasta que los bits de estado indiquen que está disponible. Imagine que quiere leer de otro controlador, deberá esperar a que los bits de estado le indiquen que está disponible, programar la operación y esperar a que se indique que los datos están disponibles.

Evidentemente, incluso aunque la UCP esté controlando varios dispositivos de E/S, siempre existe pérdida de ciclos debido a la existencia de las esperas. Sin embargo, existen situaciones en que esto no es así.
Hay que recalcar que el controlador al ser una parte crítica del sistema operativo, el fallo de un controlador puede ser más grave que otros errores de software, pudiendo bloquear el ordenador o incluso dañar el hardware. Debido a que el hardware es (necesariamente) indeterminista, encontrar y solucionar un fallo en un controlador es una tarea complicada ya que no sólo hay que monitorizar el programa, sino también el propio dispositivo.

4.3 Estructura de Datos para Manejo de Dispositivos

4.3

Estructuras de Datos para Manejo de Dispositivos

Los procesos de usuario emiten peticiones de entrada/salida al sistema operativo. Cuando un proceso solicita una operación de E/S, el sistema operativo prepara dicha operación y bloquea al proceso hasta que se recibe una interrupción del controlador del dispositivo indicando que la operación está completa. Las peticiones se procesan de forma estructurada en las siguientes capas:
• Manejadores de interrupción.
• Manejadores de dispositivos o drivers.
•Software de EIS independiente de los dispositivos. Este software está formado por la parte de alto nivel de los manejadores, el gestor de cache, el gestor de bloques y el servidor de archivos.
• Interfaz del sistema operativo. Llamadas al sistema que usan las aplicaciones de usuario.
El sistema operativo estructura el software de gestión de E/S de esta forma para ofrecer a los usuarios una serie de servicios de E/S independientes de los dispositivos. Esta independencia implica que deben emplearse los mismos servicios y operaciones de E/S para leer datos de un disquete, de un disco duro, de un CD-ROM o de un teclado.
Manejadores de interrupción.
Los manejadores de interrupción se encargan de tratar las interrupciones que generan los controla dores de dispositivos una vez que éstos están listos para la transferencia de datos o bien han leído o escrito los datos de memoria principal en caso de acceso directo a memoria. Para tratar dicha interrupción se ejecuta el correspondiente manejador de interrupción cuyo efecto es el de salvar los registros, comunicar el evento al manejador del dispositivo y restaurar la ejecución de un proceso (que no tiene por qué ser el interrumpido).
Los manejadores de interrupción suelen hacer algo más que comunicar el evento al manejador de dispositivo. Cuando una interrupción ocurre muy frecuentemente, caso del reloj, o cuando la cantidad de información a transferir es muy pequeña, caso del teclado, sería muy costoso comunicar siempre el evento al manejador de dispositivo asociado. En estos casos, el propio manejador de interrupción registra la ocurrencia del evento, bien mediante el incremento de una variable global para el reloj o la acumulación de caracteres en un buffer del teclado. La notificación al manejador se hace únicamente cada cierto número de ocurrencias del evento, en el caso del reloj, o activando unflag que indica que hay datos en el buffer del teclado.
Manejadores de dispositivos.
Cada dispositivo de E/S, o cada clase de dispositivos, tiene un manejador asociado en el sistema operativo.
Dicho manejador incluye: código independiente del dispositivo para proporcionar al nivel superior del sistema operativo una interfaz de alto nivel y el código dependiente del dispositivo necesario para programar el controlador del dispositivo a través de sus registros y datos. La tarea de un manejador de dispositivo es aceptar peticiones en formato abstracto, de la parte del código de E/S independiente del dispositivo, traducir dichas peticiones a términos que entienda el controlador, enviar al mismo las órdenes adecuadas en la secuencia correcta y esperar a que se cumplan. La siguiente figura muestra un diagrama de flujo con las operaciones de un manejador.
Todos los manejadores tienen una lista de peticiones pendientes por dispositivo donde se encolan las peticiones que llegan de niveles superiores. El manejador explora la lista de peticiones, extrae una petición pendiente y ordena su ejecución. La política de extracción de peticiones de la lista es dependiente de manejador y puede ser FIFO. Una vez enviada la petición al controlador, el manejador se bloquea o no, dependiendo de la velocidad del dispositivo. Para los lentos (discos) se bloquea esperando una interrupción. Para los rápidos (pantalla, discos RAM, etcétera) responde inmediatamente. Después de recibir el fin de operación, controla la existencia de errores y devuelve al nivel superior el estado de terminación de la operación. Si tiene operaciones pendientes en la cola de peticiones, atiende a la siguiente, en caso de que le toque ejecutar después de la operación de E/S. En caso contrario se bloquea.
Software de E/S independiente del dispositivo.
La mayor parte del sistema de E/S es software independiente de dispositivo. Este nivel incluye el sistema de archivos y el de gestión de red, el gestor de bloques, la cache de bloques y una parte de los manejadores de dispositivo. La principal función de esta capa de software es ejecutar las funciones de E/S que son comunes a todos los dispositivos a través de una interfaz uniforme.
Internamente, en este nivel se proporciona acceso a nivel de bloques o caracteres, almacenamiento intermedio, gestión de los dispositivos, planificación de la E/S y control de errores.
El tamaño de acceso a nivel de bloques se hace usando tamaños de bloque de acceso comunes para todo un sistema de archivos, lo que permite ocultar que cada dispositivo puede tener distinto tamaño de sector y distinta geometría. Estos detalles quedan ocultos por la capa de software in dependiente de dispositivo que ofrece una interfaz sobre la base de bloques lógicos del sistema de archivos. Lo mismo ocurre con los dispositivos de caracteres, algunos de los cuales trabajan con un carácter cada vez, como el teclado, mientras otros trabajan con flujos de caracteres, como el modem o las redes.
Para optimizar la E/S y para armonizar las peticiones de usuario, que pueden ser de cualquier tamaño, con los bloques que maneja el sistema de archivos, el software de E/S proporciona almacenamiento intermedio en memoria del sistema operativo. Esta facilidad se usa para tres cosas:
Optimizar la E/S evitando accesos a los dispositivos.
Ocultar las diferencias de velocidad con que cada dispositivo y usuario manejan los datos.
Facilitar la implementación de la semántica de compartición, al existir una copia única de los datos en memoria.
El sistema de E/S mantiene buffers en distintos componentes. Por ejemplo, en la parte del manejador del teclado independiente del dispositivo existe un buffer para almacenar los caracteres que teclea el usuario hasta que se pueden entregar a los niveles superiores. Si se usa una línea serie para leer datos de un sistema remoto y almacenarlos en el disco, se puede usar un buffer para guardar temporalmente los datos hasta que tengan una cierta entidad y sea rentable escribirlos a disco. Si se está leyendo o escribiendo un archivo, se guardan copias de los bloques en memoria para no tener que acceder al disco si se vuelven a leer.
La gestión de los dispositivos agrupa a su vez tres servicios: nombrado, protección y control de acceso.
El nombrado permite traducir los nombres de usuario a identificadores del sistema. Por ejemplo, en UNIX, cada dispositivo tiene un nombre (p. ej.: /dev/cdrom) que se traduce en un único identificador interno (o nodo-i), que a su vez se traduce en un único número de dispositivo principal (clase de dispositivo) y secundario (elemento de la clase). Cada dispositivo tiene asociada una información de protección (en UNIX mediante 3 bits para dueño, grupo y mundo) y este nivel de software asegura que los requisitos de protección se cumplen. Además proporciona control de acceso para que un dispositivo dedicado, como una impresora, sea accedido por un único usuario cada vez.
Una de las funciones principales del sistema de E/S es la planificación de la E/S de los distintos componentes. Para ello se usan colas de peticiones para cada clase de dispositivo, de las que se extraen las peticiones de cada dispositivo en particular. Cada una de estas colas se ordena siguiendo una política de planificación, que puede ser distinta en cada nivel. Imagine el caso de LINUX, donde existe una cola global de peticiones de E/S, ordenadas en orden FIFO, para los discos instalados. Cuando un manejador de disco queda libre, busca la cola global para ver si hay peticiones para él y, si existen, las traslada a su cola de peticiones particular ordenadas según la política SCAN, por ejemplo. Este mecanismo permite optimizar la E/S al conceder a cada mecanismo la importancia que, ajuicio de los diseñadores del sistema operativo, se merece. En el caso de Windows NT, por ejemplo, el ratón es el dispositivo de E/S más prioritario del sistema. La razón que hay detrás de esta política es conseguir un sistema muy interactivo. En otros sistemas, como UNIX, las operaciones de disco son más prioritarias que las del ratón para poder desbloquear rápidamente a los procesos que esperan por la E/S. Sea cual sea el criterio de planificación, todos los sistemas de E/S planifican las actividades en varios lugares.
Por último, este nivel proporciona gestión de errores para aquellos casos que el manejador de dispositivo no puede solucionar. Un error transitorio de lectura de un bloque se resuelve en el manejador reintentando su lectura. Un error permanente de lectura no puede ser resuelto y debe ser comunicado al usuario para que tome las medidas adecuadas. En general, todos los sistemas operativos incluyen alguna forma de control de errores internos y de notificación al exterior en caso de que esos errores no se puedan resolver. Imagine, por ejemplo, que una aplicación quiere leer de un dispositivo que no existe. El sistema de E/S verá que el dispositivo no está y lo notificará a los niveles superiores hasta que el error llegue a la aplicación. Sin embargo, es importante resaltar que los sistemas operativos son cada vez más robustos y cada vez incluyen más control y reparación de errores, para lo cual usan métodos de paridad, checksums, códigos correctores de error, etc. Además, la información que proporcionan cuando hay un error es cada vez mayor.