viernes, 16 de abril de 2010

Componentes y Servicios Basicos de un Sistema

componenentes:


_Proceso
_Memoria
_Entrada/salida
_Redes
_Protección
_Archivos
_Interpretes de ordenes




Servicios del SO
_ El S.O. ofrece a los programas una serie de
servicios para trabajar en el computador:


_ Ejecución de programas
_ Operaciones de E/S
_ Manipulación de archivos y directorios
_ Comunicación entre procesos
_ Comunicación con equipos remotos
_ Administración de la protección y seguridad
_ Leer el estado del sistema (hora, nº de procesos, etc.)

Administración de Procesos

La organización del modelo de procesos se logra debido a que el sistema operativo almacena en una tabla denominada tabla de control de procesos información relativa a cada proceso que se está ejecutando en el procesador. Cada línea de esta tabla representa a un proceso.
La información que se almacena es la siguiente:


1) Identificación del proceso.
2) Identificación del proceso padre.
3) Información sobre el usuario y grupo.
4) Estado del procesador.
5) Información de control de proceso
6) Información del planificador.
7) Segmentos de memoria asignados.
8) Recursos asignados.

Administración de Memoria

Durante la evolución de la arquitectura de computadoras, la cantidad de memoria principal presente en las mismas se ha incrementado. Sin embargo, el tamaño de los programas ha aumentado más rápidamente que la memoria disponible, siendo en el dominio del hard x soft, el equivalente a afirmar una delantera del software respecto al hardware.
Con el advenimiento de los lenguajes de programación orientada a objetos (OOP) se tiene un claro ejemplo de la necesidad de eficientizar el manejo de memoria por sobre las otras características de un programa, siendo en esta filosofía más importante el concepto de polimorfismo o herencia que el de velocidad de ejecución.

Se distinguen los siguientes propósitos del sistema de administración de memoria:

Protección. Si varios programas comparten la memoria principal, se debería asegurar que el programa no sea capaz de cambiar las ubicaciones no pertenecientes a él. Aunque una acción de escritura puede tener efectos más graves que una de lectura, esta última tampoco debería estar permitida, para proporcionar algo de privacidad al programa. Dado que muchos lenguajes permiten el uso de punteros dinámicos y arreglos, la verificación sólo en tiempo de compilación no es suficiente, por lo que además se debe efectuar una verificación en tiempo de ejecución.

Compartimiento. Este objetivo parece contradecir al anterior, sin embargo a veces es necesario para los usuarios poder compartir y actualizar información (por ejemplo, en una base de datos) y, si se organiza la tarea de entrada a la misma, se puede evitar el tener varias copias de la rutina. Por supuesto que debe existir una protección contra cambios de esta rutina, permitiendo así el control del acceso a una porción compartida de memoria.

Reubicación. La técnica de multiprogramación requiere que varios programas ocupen la memoria al mismo tiempo. Sin embargo no se sabe con anticipación donde será cargado cada programa por lo que no es práctico usar direccionamiento absoluto de memoria.

Organización física. Debido al costo de una memoria principal rápida, ésta se usa en conjunto con una memoria secundaria mucho más lenta (y por con siguiente, barata) a fines de extender su capacidad, por ejemplo los dispositivos de almacenamiento magnéticos tales como los discos rígidos. Esta clasificación de la memoria hace necesario el control del flujo de la información entre esas dos clases de memoria. Éste control podrían realizarlo los programadores, lo que incrementaría el tiempo de desarrollo de una aplicación y se tendrían que resolver problemas muy complejos como saber de antemano donde y con cuanta memoria se dispone, información que no siempre posee el programador dada la reubicación dinámica. Por ello es más conveniente que esta tarea la realice el sistema, de manera transparente al usuario.

Organización lógica. Aunque la mayor parte de las memorias son organizadas linealmente con un direccionamiento secuencial, esto difícilmente concuerde con el camino seguido por el programa, debido al uso de procedimientos, funciones, subrutinas, arreglos, etc. Si la administración se hace a través de varias direcciones, cada estructura lógica podría considerarse una entidad independiente (segmento). Las ventajas serían que cada uno de los segmentos podrían ser cargados y compilados independientemente y se tendría acceso directo a cada uno de ellos.

Memoria Virtual

Memoria virtual es una zona de almacenamiento temporal utilizado por un equipo para ejecutar programas que necesitan más memoria de la existente, almacenando en ella los segmentos de acceso no inmediato.

Esto, aunque pueda parecer lo mismo, no lo es. Para empezar, debemos tener en cuenta que cuando cargamos un programa pasa a la memoria para ejecutarse, pero todo el programa no se ejecuta al mismo tiempo, sino que realmente se ejecuta por segmentos, pudiéndose llegar (y de hecho se llega) al caso de haber partes del programa que ni tan siquiera se ejecutan.
Precisamente es en estos casos cuando vemos la verdadera función de la memoria virtual y como funciona.


RESUMEN DE CÓMO SERIA ESTA FUNCION:


Cuando nosotros cargamos un programa, este es leído del disco duro y pasa a la RAM, desde donde se ejecuta, empezando por el propio arranque del programa. Pero no todo el programa se ejecuta a la vez, sino que se ejecuta por segmentos, dependiendo de aquellos que se vayan a utilizar de forma inmediata, empezando por el inicio del programa, definiéndose estos mediante un sistema de paginación o también llamada “segmentación paginada”
Dado este sistema de funcionamiento, realmente no es necesario que todo el programa permanezca en la RAM, ya que tan sólo es preciso que permanezcan aquellas partes del programa que son de ejecución inmediata. El resto (que también debe permanecer en memoria) pasa a la memoria virtual, recuperándose aquellas partes (segmentos) que se van a ejecutar en el momento de hacerlo y volviendo a pasar a la RAM, desde donde se ejecutan, y volviendo a la Memoria virtual una vez ejecutadas.