viernes, 22 de mayo de 2015

HIPERPAGINACIÓN

Si el número de marcos asignados a un proceso de baja prioridad desciende por debajo del número mínimo requerido por la arquitectura del computador, debemos suspender la ejecución de ese proceso. Luego debemos descargar sus páginas restantes, liberando los marcos asignados. En general, cualquier proceso que no cuente con marcos suficientes provocará fallos de página muy frecuentemente. Si se reemplazan páginas que a su vez están activas, estaremos sustituyendo una página que casi de inmediato se volverá a necesitar. Por tanto, pronto vuelve a generarse otro fallo de página, ocurriendo esto una y otra vez. A esta altísima actividad de paginación se le llama hiperpaginación (thrashing). Un sistema está en hiperpaginación si emplea más tiempo paginando que ejecutando.

Causas de la Hiperpaginación
La hiperpaginación ocasiona severos problemas de rendimiento. Considere la siguiente situación, basada en el comportamiento real de los primeros sistemas de paginación.
El sistema operativo supervisa la utilización de la CPU. Si ésta es demasiado baja, aumentamos el nivel de multiprogramación introduciendo un nuevo proceso en el sistema. Se emplea un algoritmo de reemplazo de páginas global, que reemplaza páginas sin importar a qué procesos pertenezcan. Suponga ahora que un proceso entra en una nueva fase de su ejecución y necesita más marcos. Comienza a generar fallos de página y a tomar páginas de otros procesos. Sin embargo, estos procesos necesitan esas páginas, por lo que también fallan, tomando páginas de otros procesos. Todos estos procesos generando fallos de página deben usar el dispositivo de paginación para intercambiar las páginas. A medida que se colocan en la cola del dispositivo de paginación, la cola procesos listos se vacía. Mientras los procesos están bloqueados en espera del dispositivo de paginación, la utilización de la CPU decrece.
El planificador de la CPU ve disminuir la utilización de ésta y, por tanto, incrementa el nivel de multiprogramación. El nuevo proceso trata de comenzar tomando páginas de los procesos en ejecución, lo que ocasiona más fallos de página y una cola más larga para el dispositivo de paginación. Y se vuelven a repetir los pasos descritos. Ha comenzado la hiperpaginación y se desploma la productividad del sistema. La tasa de fallos de página aumenta tremendamente y, como resultado, se incrementa el tiempo efectivo de acceso a memoria. No se efectúa ningún trabajo porque el sistema operativo está continuamente paginando.
 
http://lsi.vc.ehu.es/pablogn/docencia/manuales/SO/TemasSOuJaen/MEMORIAVIRTUAL/Image21.gif

Los efectos de la hiperpaginación se pueden limitar utilizando un algoritmo de reemplazo local (o por prioridades). Con el reemplazo local, si un proceso comienza a hiperpaginar, no puede robar marcos de otro proceso y provocar que este también entre en hiperpaginación. Sin embargo, si los procesos están en hiperpaginación, la mayor parte del tiempo pueden encontrarse en la cola del dispositivo de paginación. El tiempo promedio de servicio de un fallo de página aumenta y, por tanto, el tiempo efectivo de acceso aumenta incluso para un proceso que no esté en hiperpaginación. Para evitar la hiperpaginación debemos ofrecer a un proceso todos los marcos que necesita; pero, ¿cómo sabemos cuántos necesitan? Para saberlo se utilizan técnicas como el modelo del conjunto de trabajo, que se basa el concepto de localidad de la ejecución de procesos.


Frecuencia de Fallos de Página
El modelo del conjunto de trabajo tiene bastante éxito, y el conocimiento del conjunto puede resultar útil para la prepaginación, pero parece ser una manera bastante torpe de controlar la hiperpaginación. La estrategia de frecuencia de fallos de página sigue un camino más directo.

http://lsi.vc.ehu.es/pablogn/docencia/manuales/SO/TemasSOuJaen/MEMORIAVIRTUAL/Image23.gif

http://lsi.vc.ehu.es/pablogn/docencia/manuales/SO/TemasSOuJaen/MEMORIAVIRTUAL/6Hiperpaginacion.htm

POLITICAS DE REUBICACIÓN Y REEMPLAZO

La política de reubicación se refiere a la capacidad de cargar y ejecutar un programa determinado en la posición arbitraria de memoria en contraposición a un conjunto fijo de posiciones especificadas durante la compilación de dicho programa. Las instrucciones de un proceso cargado en memoria contendrán referencias a posiciones de memoria de dos tipos.

Referencias a Posiciones de Memoria 
  1. Referencia a datos empleados en instrucciones de carga, almacenamiento  y algunas instrucciones aritmético-lógicas.
  2.  Referencias a otras instrucciones empleadas fundamentalmente en bifurcaciones de control de flujo o en instrucciones de llamadas.
Tipos de Direcciones
Ambos tipos de direcciones no serán fijas durante todo el periodo de permanencia del proceso en el sistema, sino que puedan avisar si el proceso es suspendido y cargado posteriormente en memoria o simplemente, si es desplazado dentro de esta, distinguiremos los dos tipos de direcciones.
  1. Una dirección lógica o virtual es un identificador utilizado para referenciar información dentro del espacio de direcciones de un programa y por tanto es independiente de la asignación actual de datos  a memoria debiendose realizar una traducción a dirección física antes de poder realizar un acceso a memoria.
  2. Una dirección física o absoluta designa a una posición real de memoria física donde se almacena información en tiempo de ejecución.
Tipos de Esquemas
Dependiendo de cómo y cuándo tenga lugar la traducción del espacio de direcciones virtuales al espacio de direcciones físicas en un esquema de reubicación determinado, pueden considerarse dos tipos básicos de estrategias:
  1. Reubicación Estática
  2. Reubicación Dinámica.
 Reubicación Estática
Implica generalmente que la reubicación es realizada antes o durante la carga del proceso en memoria. Las constantes (valores literales), los desplazamientos relativos al PC, no dependen de esta condición y no necesitan ser ajustados durante la reubicación.

Reubicación Dinámica
Implica que la correspondencia entre el espacio de direcciones virtuales y el espacio de direcciones físicas se efectúa en tiempo de ejecución. Usualmente con asistencia del hardware. Cuando el proceso en cuestión está siendo ejecutado, todas sus referencias a memoria son reubicadas durante la ejecución antes de acceder realmente a la memoria física.

Imagen tomada y modificada de la presentación de  Diego Alejandro Garcia

Política de Ubicación
La política de ubicación tiene que ver con determinar donde va a residir una parte del proceso en memoria principal.
En un sistema de segmentación puro, la política de ubicación es un aspecto muy importante de diseño, teniendo como posibles alternativas las políticas de mejor ajuste, primer ajuste y siguiente ajuste.

Política Optima
Esta Política selecciona para reemplazar la pagina que tiene que esperar mas tiempo hasta que se produzca la referencia siguiente. Se puede demostrar que esta política genera el menor numero de fallos de pagina, sin embargo, este algoritmo resulta imposible de implementar porque requiere que el SO tenga un conocimiento exacto de los sucesos futuros.

Esquema de Política Optima para el caso propuesto

Política de Remplazo
Cuando todos los marcos de memoria principal están ocupados y es necesario traer a memoria una nueva pagina para atender un fallo de pagina.
La política se encarga de seleccionar la pagina a reemplazar de entre las que se encuentren actualmente en memoria.
 
Imagen tomada y modificada de la presentación de  Diego Alejandro Garcia





http://es.slideshare.net/Eborda/exp-so-politicas

PARTICIONES FIJAS Y DINAMICAS

Particiones Fijas
Consiste en dividir la memoria libre en varias partes de igual tamaño o diferentes tamaños, un programa puede ser demasiado grande para caber en la partición, en este caso el programador debe diseñar el programa mediante superposiciones para que solo una parte del programa este en memoria principal.

En el caso de las particiones de igual tamaño, si todas las particiones estuvieran ocupadas con procesos que no están listos para ejecutar y necesitan cargarse un nuevo proceso, debe determinarse que partición expulsarse de la memoria.

http://files.sis-operativo.webnode.com.co/200000043-e30efe501a/particion.png


Particiones Dinámicas
Las partición en este caso son variables en número y longitud, esto significa que cuando se carga un proceso a memoria principal se le asigna el espacio que necesita en ella.

Efectos de las Particiones Dinámica

Asignación de Memoria con Particiones Dinámicas

La asignación de memoria es un esquema con particiones dinámicas consiste en determinar en que lugar ubicar un nuevo proceso, para esto existe tres algoritmos:

  • Mejor ajuste: Consiste en ubicar el proceso en el espacio de memoria que más se ajuste a su tamaño.
  • Primer ajuste: Consiste en ubicar el proceso en el primer lugar disponible, recorriendo desde el inicio de la memoria cuyo tamaño sea suficiente para el proceso.
  •  Próximo ajuste: Consiste en ubicar el siguiente lugar disponible, que sea suficientemente grande a partir de la ultima asignación de memoria.
http://files.sis-operativo.webnode.com.co/200000044-e86a6e9640/pd.JPG


ESTRATEGIAS DE LA PARTICIÓN

  • Solicitud: por Demanda
  • Ubicación: 
 Primer ajuste: El primer bloque disponible que ubique (parte del inicio)
Siguiente ajuste:  El siguiente bloque disponible  que ubique (parte desde la ubicación actual)
Mejor ajuste: El bloque disponible que deje el menor espacio libre (búsqueda exhaustiva).

  • Reemplazo: Uno de los procesos se saca según el planificador.
  • Primer ajuste: Es bueno con baja compactación, puebla el inicio de la memoria.
  • Siguiente ajuste: Puebla el final de la memoria, el siguiente bloque libre siempre esta al final de la memoria.


  • Mejor ajuste: Tiene peores resultados, dado que la busca la partición que deje el hueco más pequeño, la memoria se llena de huecos pequeños, se compacta con más frecuencia.



https://noridappr89.wordpress.com/2013/05/21/segunda-exposicion-particiones-fijas-y-dinamicas/
http://es.scribd.com/doc/58833109/particion-dinamica#scribd
https://html2-f.scribdassets.com/254coochfk10qphe/images/4-a6cf18cb57.jpg





FUNCIÓN DE INTERCAMBIO

La necesidad de atender diferentes procesos en formas concurrente fomento el desarrollo de la función de intercambio. Consiste en extraer del procesador un proceso que está en ejecución haciendo un registro del estado del proceso y guardándolo en memoria secundaria, para poder ser retomado desde el punto hasta donde fue ejecutado.
Memoria Virtual
Es una técnica de gestión de la memoria que permite que el sistema operativo disponga, tanto para el software de usuario como para sí mismo, de mayor cantidad de memoria que esté disponible físicamente. La mayoría de los ordenadores tienen cuatro tipos de memoria: registros en la CPU, la memoria caché (tanto dentro como fuera del CPU), la memoria RAM y el disco duro. En ese orden, van de menor capacidad y mayor velocidad a mayor capacidad y menor velocidad.
http://es.wikipedia.org/wiki/Memoria_virtual#/media/File:Virtual_address_space_and_physical_address_space_relationship.svg


ALGORITMO DE UBICACIÓN
En particiones del mismo tamaño, cuando ahí alguna partición libre, puede cargarse un proceso  en esta partición, si todas las particiones están ocupadas, con procesos que no están listos para ejecutarse, uno de estos se saca y da paso a un nuevo proceso, esta decisión de sacar procesos la hace el planificador. En particiones de distintos tamaños se asigna cada proceso a la partición más pequeña en la que quepa.
http://image.slidesharecdn.com/gestindememorianicolas-120530233741-phpapp01/95/gestin-de-memoria-21-728.jpg?cb=1338421162



.

ALGORITMO DE REEMPLAZO

Es utilizado para decidir que proceso sale de la memoria cuando llega un nuevo proceso y no hay marcos de pagina libre.


ALGORITMO DE VACÍO

Es el encargado de determinar cuando se debe escribir en memoria secundaria una pagina que ya haya sido modificada.


http://es.slideshare.net/wwwkarlitozkom/gestin-de-memoria-13143376
Referenciado de la exposición de los compañeros: Sergio Cornelio Reina

PAGINACIÓN Y SEGMENTACIÓN.


Que es Paginación en Sistemas Operativos?


La Paginación en Sistemas Operativos consiste en considerar el espacio de las direcciones lógicas  de cada proceso como un conjunto de bloques de tamaño consistente llamadas paginas, cada dirección lógica manejada para un proceso estará conformada por un par de valores (Pagina: Desplazamiento)


http://files.sistemas-operativos51.webnode.es/200000033-52ea053e24/paginacion.jpg


Características de la Paginación

  • El espacio de direcciones lógicos de un proceso puede ser no continuo.
  • Se divide la memoria física en bloque de tamaño fijo llamados marcos.
  • Se divide la memoria en bloques de tamaño llamados pagina
  • Se mantiene información en los marcos libres.
  • Se establece una tabla de paginas para trasladar las direcciones lógicas a físicas.
  • Se produce fragmentación interna.  

Ventajas de la Paginación 

  • El espacio de direcciones lógico de un proceso puede ser no continuo.
  • No es necesario que las paginas estén continuas en memoria.
  • Es facil controlar todas las paginas ya que tienen el mismo tamaño.
  • El mecanismo de traducción de direcciones (DAT) permite separar los conceptos de espacio de direcciones y espacios de memoria.
  • Se libera al programador de la restricción de programar par aun tamaño físico de memoria con lo que se aumenta su productividad.


Desventajas de la Paginación

  • El costo del hardware y software se incrementan, por la nueva información que debe manejarse y el mecanismo de traducción de direcciones necesarias, se consume mucho mas recurso e memoria, tiempo en la CPU para su implantación.
  • Se deben reservar áreas de memoria para las PMT de los procesos, al no ser fijas el tamaño de estas se crea un problema semejante al de los programas.
  • Aparece el problema de fragmentación interna.

SEGMENTACIÓN

Es un esquema de manejo de memoria mediante el cual la estructura del programa refleja su división lógica, llevándose a cabo una agrupación lógica de la información en bloques de tamaño variables denominados segmentos.
   

La segmentación permite alcanzar los siguientes objetivos:

  • Modularidad de programas, cada rutina del programa puede ser un bloque sujeto a cambios y recopilaciones, sin afectar por ello al resto del programa.
  • Estructuras de datos de largo variable, ejm, Stack, donde cada estructura tiene su propio tamaño y este puede variar.
  • Protección, se puede proteger los módulos de segmentos contra acceso no autorizados.
  • Comparición, dos o más procesos pueden ser un mismo segmento bajo reglas de protección.
  • Enlace dinámico entre segmentos, puede evitarse relacionar todo el proceso de enlace antes de comenzar a ejecutar un proceso.   

Ventajas de la Segmentación.

  • El programador puede conocer las unidades lógicas de su programa.
  • Es posible compilar módulos separados como segmentos el enlace entre los segmentos puede suponer hasta tanto se haga una referencia entre segmentos.
  • Es fácil compartir segmentos.
  • Existe la posibilidad de definir segmentos que aun no existan.
Desventajas de la Segmentación.
  • Hay un incremento en el costo del hardware y software para llevar a cabo la implantación, asi como mayor recurso de consumo de memoria, tiempo de CPU.
  • Se compila el manejo de memoria virtual, ya que los discos almacenan información en bloques de tamaños fijos.
  • No se puede garantizar que al salir de un segmento de la memoria este pueda ser traído fácilmente de nuevo,ya que sera necesario  encontrar nuevamente un área de memoria libre ajustada a su tamaño.
  • La compartición de segmentos permite ahorrar memoria.



lunes, 13 de abril de 2015

DIAGRAMA DE 6 Y 7 ESTADOS

https://docs.google.com/presentation/d/1H4B9dWunBglv36On14VhT3eHeDOogQU23alLiQouyLU/edit#slide=id.p4

POLÍTICAS DE PLANIFICACIÓN

Conjunto de políticas y mecanismos incorporados al sistema operativo, a través de un módulo llamado planificador que debe incluir cuál de los procesos en condiciones de ser ejecutado conviene ser despachado primero y que orden de ejecución debe seguirse.

Esto debe realizar sin perder de vista su principal objetivo que consiste en el máximo aprovechamiento del sistema.

PRIMERO EN LLEGAR PRIMERO EN SER SERVIDO FCFS (First-Come, First-Served)
Emplea una cola de procesos asignando un lugar a cada proceso por el orden de llegada, cuando el proceso llega es puesto en su lugar en la cola después del que llegó antes que él y se pone en estado de listo. Cuando un proceso comienza a ejecutarse no se interrumpe su ejecución hasta que termina de hacerlo.



PRIORIDAD AL MÁS CORTO (SPN Shortest Process Next)
Política no preferente, selecciona proceso con menor tiempo esperado de ejecución Se incrementa variabilidad de tiempos respuesta. El estado LISTO se convierte en una lista, ordenada por el tamaño de los procesos, encabezada por el mas corto



ROUND ROBIN (RR Round-Robin)
A cada proceso de le asigna un tiempo determinado para su ejecución el mismo tiempo para todos. En caso de que un proceso no pueda ser ejecutado completamente en ese tiempo se continuará su ejecución después de que todos los procesos restantes sean ejecutados durante el tiempo establecido. 



MENOR TIEMPO RESTANTE (SRT Shortest Remaining Time) 
Ejecuta primero aquellos procesos a los que les queda menos tiempo para terminar, este algoritmo también es conocido como ‘optimo’, pues con el se obtienen los mejores resultado.

PRIMERO EL DE MAYOR TASA DE RESPUESTA (HRRN Highest Response Ratio Next) 
Es el que muestra mayor tasa de respuesta al ser No Apropiativo, selecciona el proceso con mayor tasa de respuesta.
Trespuesta=(Tespera + Tservicio)/ Tservicio.
Pone a ejecutar el proceso con mayor tasa de respuesta, dodne el tiempo de espera es insumido desde que el proceso pasa de la cola de nuevos a la cola de listos. 
S=Tiempo de llegada + Tiempo actual.

REALIMENTACIÓN MULTINIVEL (MLFB Multi Level Feedback) 
Penalizar el uso del procesador creando una serie de colas de prioridad cada vez menor, en las que el proceso es anotado, decrementando el nivel de la lista en cada pasada por el procesador. 



MODELO DE TRES ESTADOS

En el modelo de tres estados se establece el estado de Bloqueado a diferencia de el de dos ya que en la realidad, los procesos utilizan datos para operar con ellos, y puede suceder que no se encuentren listos, o que se deba esperar algún suceso antes de continuar. Es por esto que se creo el estado de Bloqueado por que se necesita un estado donde los procesos permanecieran como dice la palabra bloqueados esperando hasta que puedan proseguir
http://image.slidesharecdn.com/modelosdeestados-120307171038-phpapp01/95/modelos-de-estados-5-728.jpg?cb=1331162725



MODELO DE CINCO ESTADOS
En el modelo de cinco estados se divide al estado No ejecución en dos estados: Listo y Bloqueado. Se agregan además un estado Nuevo y otro Terminado.
Los cinco estados de este diagrama son los siguientes:
Nuevo: El proceso recién fue creado y todavía no fue admitido por el sistema operativo. En general los procesos que se encuentran  en este estado todavía no fueron cargados en la memoria principal.
Listo: el proceso está listo para ser ejecutado, sólo está esperando  que el planificador así lo disponga.
Ejecución: el proceso está actualmente en ejecución.
Bloqueado: el proceso no puede ejecutar hasta que no se produzca cierto suceso, como una operación de Entrada/Salida.
Terminado: El proceso fue expulsado del grupo de procesos  ejecutables, ya sea porque terminó o por algún fallo, como un  error de protección, aritmético, etc.






MODELO DE DOS ESTADOS

Un proceso puede estar ejecutándose o no, cuando se crea un nuevo proceso se pone en estado de No Ejecución, en algún momento el proceso que se está ejecutando pasara al estado de No Ejecución y otro proceso se elegirá de la lista de procesos listos para ejecutar para ponerlo en estado Ejecución. Es necesario que el sistema operativo pueda seguir la pista a los procesos conociendo su estado y el lugar que ocupa en memoria. Los procesos que no se están ejecutando deben guardarse en algún tipo de cola mientras espera su turno de Ejecutar.

http://elpuig.xeill.net/Members/vcarceler/c1/didactica/apuntes/ud3/na7/modelo2estados.png

miércoles, 8 de abril de 2015

CUADRO COMPARATIVO DE LOS SISTEMAS OPERATIVOS

https://docs.google.com/document/d/1TxQVhEtKym0gAInH7MnL0rD6UEyBXkZI5VS15V-IykM/pub

MAQUINA VIRTUAL

Una máquina virtual es un software que simula a una computadora y puede ejecutar programas como si fuese una computadora real. Este software en un principio fue definido como "un duplicado eficiente y aislado de una máquina física". La acepción del término actualmente incluye a máquinas virtuales que no tienen ninguna equivalencia directa con ningún hardware real. Una característica esencial de las máquinas virtuales es que los procesos que ejecutan están limitados por los recursos y abstracciones proporcionados por ellas. Estos procesos no pueden escaparse de esta "computadora virtual". Uno de los usos domésticos más extendidos de las máquinas virtuales es ejecutar sistemas operativos para "probarlos". De esta forma podemos ejecutar un sistema operativo que queramos probar (GNU/Linux, por ejemplo) desde nuestro sistema operativo habitual (Mac OS X por ejemplo) sin necesidad de instalarlo directamente en nuestra computadora y sin miedo a que se des configure el sistema operativo primario.


TIPOS DE MAQUINAS VIRTUALES
Las máquinas virtuales se pueden clasificar en dos grandes categorías según su funcionalidad y su grado de equivalencia a una verdadera máquina.

Máquinas Virtuales de Sistema

Las máquinas virtuales de sistema, también llamadas máquinas virtuales de hardware, permiten a la máquina física subyacente multiplicarse entre varias máquinas virtuales, cada una ejecutando su propio sistema operativo. A la capa de software que permite la virtualización se la llama monitor de máquina virtual o hypervisor. Un monitor de máquina virtual puede ejecutarse o bien directamente sobre el hardware o bien sobre un sistema operativo ("host operating system").

Máquinas Virtuales De Proceso

Una máquina virtual de proceso, a veces llamada "máquina virtual de aplicación", se ejecuta como un proceso normal dentro de un sistema operativo y soporta un solo proceso. La máquina se inicia automáticamente cuando se lanza el proceso que se desea ejecutar y se detiene para cuando éste finaliza. Su objetivo es el de proporcionar un entorno de ejecución independiente de la plataforma de hardware y del sistema operativo, que oculte los detalles de la plataforma subyacente y permita que un programa se ejecute siempre de la misma forma sobre cualquier plataforma.

https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgIta7Xb3NfalGtEvwK7ib4AI2hJ8_gqH3CL2hg_UIgDJBwYWKZ7AhKDckS08doeQTHNtxjVuUSR81HWHTsSobmT1Wx94oIcS2fbsgEKAO0sU5sfJ5uijt5GimBQfUkcWxzLYYdlEaHJQ8/s1600/blog.png

http://es.wikipedia.org/wiki/M%C3%A1quina_virtual

COMPONENTES DE UN SISTEMA OPERATIVO
Ø  Administración de procesos
Para comenzar debemos saber que es un proceso. Un proceso es un programa en memoria + CPU + acceso a dispositivos + otros recursos. Notemos que un proceso necesita de ciertos recursos (como CPU, memoria, archivos, dispositivos de E/S, etc.) para realizar su tarea. Podemos ver entonces que un proceso es una entidad activa, mientras que un programa una entidad pasiva. Sabiendo entonces que es un proceso, podemos decir entonces que el sistema operativo es el encargado de su administración. Es el encargado de proveer servicios para que cada proceso pueda realizar su tarea. Entre los servicios se encuentran:
ü  Crear y destruir procesos
ü  Suspender y reanudar procesos
ü  Proveer mecanismos para la sincronización y comunicación entre procesos
ü  Proveer mecanismos para prevenir dead-locks o lograr salir de ellos.

Ø  Administración de Memoria
La memoria es un área de almacenamiento común a los procesadores y dispositivos, donde se almacenan programas, datos, etc. El sistema deberá administrar el lugar libre y ocupado, y será el encargado de las siguientes tareas:
ü  Mantener que partes de la memoria están siendo usadas, y por quien.
ü  Decidir cuales procesos serán cargados a memoria cuando exista espacio de memoria disponible, pero no suficiente para todos los procesos que deseamos.
ü  Asignar y quitar espacio de memoria según sea necesario.

Ø  Subsistema de Entrada/Salida
El sistema operativo deberá ocultar las características específicas de cada dispositivo y ofrecer servicios comunes a todos.
Estos servicios serán, entre otros:
ü  Montaje y desmontaje de dispositivos
ü  Una interfaz entre el cliente y el sistema operativo para los device drivers.
ü  Técnicas de cache, buffering y spooling.
ü  Device drivers específicos

Ø  Administración de Almacenamiento secundario
Dado que la memoria RAM es volátil y pequeña para todos los datos y programas que se precisan guardar, se utilizan discos para guardar la mayoría de la información.
El sistema operativo será el responsable de:
ü  Administrar el espacio libre
ü  Asignar la información a un determinado lugar
ü  Algoritmos de planificación de disco (estos algoritmos deciden quien utiliza un determinado recurso del disco cuando hay competencia por él)
Ø  Subsistema de Archivos
 Proporciona una vista uniforme de todas las formas de almacenamiento, implementando el concepto de archivo como una colección de bytes.
El Sistema Operativo deberá proveer métodos para:
ü  Abrir, cerrar y crear archivos
ü  Leer y escribir archivos

Ø  Sistema de protección
Antes que nada, tener en cuenta que por protección nos referimos a los mecanismos por los que se controla el acceso de los procesos a los recursos. En un sistema multiusuario donde se ejecutan procesos de forma concurrente se deben tomar medidas que garanticen la ausencia de interferencia entre ellos. Estas medidas deben incorporar la posibilidad de definir reglas de acceso, entre otras cosas

Servicios del Sistema Operativo
El sistema brindará un entorno de ejecución de programas donde se dispondrá de un conjunto de servicios. Los servicios principales serán:
ü  Ejecución de programas (el SO deberá ser capaz de cargar un programa a memoria y ejecutarlo. El programa deberá poder finalizar, de forma normal o anormal)
ü  Operaciones de E/S (el SO deberá proveer un mecanismo de acceso ya que por eficiencia y protección los usuarios no accederán directamente al dispositivo)
ü  Manipulación del Sistema de archivos (se deberá tener acceso al sistema de archivos y poder, como mínimo, leer, escribir, borrar y crear)
ü  Comunicación entre procesos (los procesos deberán poder comunicarse, ya sea que estén en el mismo computador o el diferentes)
ü  Manipulación de errores (el sistema deberá tomar decisiones adecuadas ante eventuales errores que ocurran, como fallo de un dispositivo de memoria, fallo en un programa, etc.)

Estructura del Sistema
La estructura interna de los sistemas operativos pueden ser muy diferentes, ya que se debe tener en cuenta las metas de los usuarios (fácil uso, confiable, rápido, etc.) y las del sistema (fácil de diseñar, implementar y mantener, eficiente, etc.). Veremos 3 posibles diseños del sistema.

Sistema Monolítico
 Estos sistemas no tienen una estructura definida, sino que son escritos como una colección de procedimientos donde cualquier procedimiento puede invocar a otro. Ejemplos de estos sistemas pueden ser MS-DOS o Linux (aunque incluye algo de capas). Es importante tener en cuenta que ningún sistema es puramente de un tipo.




Sistema en capas
El diseño se organiza en una jerarquía de capas, donde los servicios que brinda una capa son consumidos solamente por la capa superior. La capa 0 es del Hardware y la N es la de los procesos de Usuario.


Capa 0
El sistema consta de procesadores secuenciales, cada uno de los cuales se podría programar sin importar que varios proceso estuvieran ejecutándose en el mismo procesador, esta capa proporciona la multiprogramación básica de la CPU.

Capa 1
Se administra la memoria, al mismo tiempo se asignaba el espacio de memoria principal para los diversos procesos. En esta capa no se debe de preocupar que los procesos que estén en memoria o en el deposito, esto se debe que el software de esta capa se encarga de garantizar que las paginas lleguen a la memoria cuando fueran necesarias.

Capa 2
Esta capa es la encargada de la comunicación entre el proceso y la consola de usuario, arriba de esta capa cada proceso tiene su propia consola.

Capa 3
En esta capa es la que controla los dispositivos de entrada y salida y guarda en almacenes (buffers) los flujos de información entre ellos.

Capa 4
En esta capa se sitúa los programas de los usuarios, estos no tiene que preocuparse por el proceso, memoria, consola o control de E/S.

Capa 5
En esta fase es donde se localiza el proceso operador del sistema.

http://wiki.inf.utfsm.cl/images/thumb/e/e1/Figura11.png/300px-Figura11.png
                               




https://so2psm.files.wordpress.com/2013/10/solayers.jpg




















Sistema con micronúcleo
La idea consiste en tener un núcleo que brinde los servicios mínimos de manejo de procesos, memoria y que provea la comunicación entre procesos. Todos los restantes servicios se construyen como procesos separados del micronúcleo, que ejecutan en modo usuario. Estos sistemas tienen como ventaja un diseño simple y funcional, que aumenta la portabilidad y la escalabilidad. Para agregar un nuevo servicio no es necesario modificar el nucleo, y es más seguro ya que los servicios corren en modo usuario