Sistemas Operativos
ramjavy14 de Septiembre de 2011
6.659 Palabras (27 Páginas)925 Visitas
SISTEMAS OPERATIVOS
CAPITULO 1: INTRODUCCION
Un Sistema Operativo es un programa que actúa como interface entre un usuario de computadora y el hardware de la misma. El propósito de un SO es proveer de un ambiente de trabajo en el cual el usuario puede ejecutar programas. Por ende, el primer objetivo de un SO es hacer que un equipo pueda ser usado convenientemente. Un segundo objetivo es usar el hardware del equipo en forma eficiente.
Para entender qué son los sistemas operativos, es necesario estudiar como fueron desarrollados, por lo que veremos rápidamente la evolución de los mismos, desde los SO primitivos hasta los actuales de tiempo-compartido y multiprogramación.
Hay muchas razones importantes para estudiar los SO:
a) para el uso de propósito especial, uno puede desarrollar uno propio o modificar alguno existente (esto es particularmente cierto con el SO UNIX, donde una de las razones de su éxito en universidades de EE.UU. es que el 90% del mismo esta escrito en lenguaje de alto nivel -C-, por lo que sus modificaciones y agregados se hacen sumamente sencillos);
b) La selección del SO y sus opciones es una decisión importante en la mayoría de las instalaciones de computación;
c) el usuario debe interactuar con el SO para lograr su tarea, ya que su primer contacto con el computador;
d) muchos conceptos y técnicas que se encuentran en los SO se pueden aplicar en forma general.
1.1.- QUE ES UN SO ?
Un SO es una parte importante de prácticamente cualquier computador.
Un sistema electrónico de procesamiento de datos puede dividirse en las siguientes partes:
1) El hardware (cpu, memoria, canales, dispositivos de E/S, etc.)
2) El SO
3) Resto del software de base: compiladores, ensambladores, cargadores, editores de texto, utilitarios de base de datos, utilitarios de depuración (debuggers), etc.
4) Programas de aplicación y librerías.
5) Usuarios (personas, maquinas u otras computadoras)
El hardware provee los recursos básicos del sistema. El software de base define las maneras en que esos recursos serán usados para resolver los problemas computacionales de los usuarios. Pueden haber muchos usuarios tratando de resolver distintos problemas. El SO controla y coordina el uso del hardware entre los distintos requerimientos.
Para nuestro estudio de SO, dividiremos a este en 4 administradores bien diferenciados:
1) Administrador del procesador;
2) Administrador de memoria;
3)Administrador de dispositivos y
4) Administrador de información.
Un SO es similar a un gobierno. Los recursos básicos de un computador lo dan su hardware, software y datos. El SO provee el uso apropiado de estos recursos. Igual que un gobierno el SO no ejerce ninguna tarea útil por si mismo: simplemente brinda un ambiente de trabajo para que otros programas puedan realizar alguna tarea útil.
Podemos ver a un SO como un asignatario de recursos. De todos los recursos de un sistema de computación, muchos pueden ser requeridos para resolver un problema: tiempo de cpu, espacio en memoria, espacio en disco, dispositivos de E/S, etc.
El SO actúa como el administrador de estos recursos y los asigna a programas específicos y a usuarios para que puedan realizar sus trabajos. Ya que los pedidos pueden ser muchos, pudiendo existir conflictos, el SO decide a quien asigna recursos, en forma tal que el sistema funcione bien y eficientemente.
Otro punto de vista distinto de enfocar a un SO es el de la necesidad de controlar diversos dispositivos de E/S y programas de usuarios. Un SO es un programa de control (varios SO han incorporado este punto de vista en sus nombres: CP/M significa Control Program for Microcomputers, por ejemplo.)
En general, sin embargo, no existe una definición completamente adecuada para un SO. Estos existen pues constituyen una manera razonable de resolver el problema de crear un sistema de computación que pueda ser usado. El objetivo fundamental de los sistemas de computación es ejecutar programas de usuarios y resolver sus problemas. Precisamente, para cumplir este objetivo, se construye el hardware del sistema.
Como esto por si solo no es muy fácil de usar, se ha desarrollado el software de base. Las funciones comunes de controlar y asignar recursos se ha desarrollado en una sola pieza de software: el SO.
Los 2 objetivos de los SO, conveniencia y eficiencia, a veces resultan en soluciones contradictorias. En el pasado, pesaba más la eficiencia que la conveniencia. Así, mucha de la teoría de SO se concentra en el uso óptimo de los recursos del equipo.
La arquitectura del equipo y su SO, ejercen una influencia mutua. Para facilitar el uso del hardware precisamente se desarrollaron los SO. A medida que los SO fueron usados, aparecía en forma obvia que cambios en el diseño del hardware podían simplificar el SO.
1.2. SISTEMAS PRIMITIVOS
Inicialmente, solo existía el hardware. Las primeras computadoras fueron (físicamente) máquinas muy grandes que se controlaban desde una consola. El programador podía escribir un programa y luego controlar su ejecución desde la consola del operador. Primeramente, el programa se cargaba manualmente a memoria desde un panel con llaves, cinta de papel perforada o tarjetas. Luego, se debían presionar los botones apropiados para cargar la dirección inicial de memoria y comenzar la ejecución del programa. El programador/operador podía monitorear la ejecución mediante las luces del panel frontal. Si existían errores, se podía parar la ejecución del programa, examinar los contenidos de memoria y registros y depurar el programa directamente desde la consola. La salida era impresa o de lo contrario se perforaba una cinta de papel o tarjetas para una impresión posterior.
En estos sistemas el programador era el operador. Existían planillas de reserva de uso de máquina, donde cada uno fijaba día y hora para correr sus programas. Los problemas de esta técnica eran que si por un inconveniente uno se retrasaba inevitablemente debía parar, recolectar lo que podía y volver más tarde u otro día para continuar el trabajo. Si por el contrario, las cosas iban muy bien y el trabajo era terminado antes del tiempo previsto, era muy probable que el computador estuviera sin uso todo el tiempo ganado.
Con el tiempo, nuevo hardware y software aparecieron. Lectores de tarjetas, impresoras de línea y cintas magnéticas se hicieron comunes. Se diseñaron ensambladores, cargadores, linkeditores para facilitar la programación. Se crearon librerías con funciones comunes para no tener que re-escribirlas constantemente.
Las rutinas que ejecutaban E/S fueron especialmente importantes. Cada nuevo dispositivo de E/S tenía sus propias características, lo que requería una programación muy cuidadosa. Para ello se escribió una subrutina especial para manejo de cada dispositivo de E/S. Estas reciben el nombre de drivers. Un driver de un dispositivo conoce todos los buffers, banderas, registros, bits de control y de status que deben usarse para ese dispositivo en particular. Una tarea simple como sería leer un carácter de una cinta perforada requiere una secuencia compleja de operaciones específicas. En vez de escribir el código necesario cada vez que se necesite, el driver de ese dispositivo era usado simplemente de la librería.
Más tarde aparecen lenguajes como el FORTRAN, COBOL, etc. que volvieron a la programación más simple, pero la operación más compleja. Por ejemplo, para preparar un programa en FORTRAN para su ejecución el programador primeramente debía cargar el compilador en la computadora. El compilador normalmente estaba grabado en cinta, por lo que tenía que montarse el carrete en la unidad.
El programa sería leído probablemente con una lectora de tarjetas. La salida era en assembler por lo que tenía que montarse la cinta con el ensamblador. La salida debía linkearse para soportar las rutinas almacenadas en la librería. Finalmente, el programa objeto estaba listo para su ejecución. Debía cargarse a memoria y dejarse igual que antes, desde la consola.
Observemos que existía un tiempo considerable de preparación para la ejecución de un trabajo. Cada trabajo tenía muchos pasos: carga de la cinta con el compilador FORTRAN, ejecución del mismo, desmontaje de la cinta, montaje de la cinta con el ensamblador, carga del programa objeto y ejecución. Si ocurría algún error en cualquier paso, se debía recomenzar totalmente.
1.3. MONITOR SIMPLE
El tiempo de preparación para la ejecución de programas era realmente un problema, ya que durante ese tiempo la cpu estaba inactiva. Como los costos de los equipos eran muy elevados (millones de dólares), una alta utilización de cpu era necesario. La solución en ese momento fue tomar operadores profesionales. Así los programadores dejaron de operar los equipos. Una vez que finalizaba un trabajo el operador iniciaba el próximo. La planilla de reserva de equipo ya no fue necesaria. Pero obviamente, los operadores no podían depurar programas. Por lo tanto, si ocurría un error, se copiaba el contenido de memoria completo y de registros y el programador se encargaba luego del problema. Por supuesto, ahora los programadores tenían mucha mayor dificultad para solucionarlos.
Otra forma de reducir el tiempo de preparación fue la de elegir correr en paquete los trabajos similares. (Batch). Por ejemplo si tenía que ejecutar
...