El Sistema Operativo

download El Sistema Operativo

of 8

description

Historia del sistema operativo y descripcion del hardware

Transcript of El Sistema Operativo

1 El Sistema OperativoEl programa fundamental de todos los programas de sistema es el sistema operativo, ya que controla todos los recursos de la computadora y proporciona la base sobre la cual pueden escribirse todos los programas de aplicacin.A continuacin, viene un programa primitivo que controla en forma directa los discos y proporciona una interfaz mas limpia, llamado microprograma, se localiza en la RAM, se encarga de buscar las instrucciones de lenguaje de la computadora tales como ADD, MOVE y JUMP para llevarlas a cabo como una serie de pequeos pasos.El lenguaje de maquina tiene de 50 a 300 instrucciones las cuales sirven para desplazar datos a travs de la maquina, hacer operaciones aritmticas y comparar valores. En esta capa, los dispositivos perifricos se controlan al cargar valores en registros del dispositivo especiales.Una de las principales funciones del sistema operativo es ocultar toda esta complejidad y proporcionar al programador un conjunto ms conveniente de instrucciones con el cual trabajar. Por ejemplo, READ BLOCK FROM FILE es conceptualmente mas sencillo que tener que preocuparse de los detalles de movimiento de las cabezas del disco, esperar que estas se muevan, etc.Por arriba del sistema operativo esta el resto del software del sistema. Aqu se encuentra el interprete de comandos (Shell), compiladores, editores y programas de aplicacin similares a ellos, los cuales no son parte del sistema operativo, aunque sea usual que el fabricante los proporcione junto con el. El sistema operativo es esa parte que se ejecuta en modo central, esta protegido contra la alteracin por parte del usuario por el hardware. Los compiladores y editores se ejecutan en modo usuario, si un usuario no desea utilizar un compilador, el esta en la libertad de escribir el suyo propio.1.1 Que es un sistema operativo?La mayoria de los usuarios de computadora tiene cierta experiencia con un sistema operativo. Parte del problema es que los sistemas operativos llevan a cabo 2 funciones que no tienen relacin entre si1.1.1. El sistema operativo como una maquina extendida.La arquitectura (conjunto de instrucciones, organizacin de memoria, E/S y estructura de bus) de la mayora de las computadoras a nivel de lenguaje mquina es primitiva y compleja de programar, en especial para la entrada/salida. Para hacer este punto ms concreto, considere la forma en que se lleva a cabo la E/S de disco flexible mediante los dispositivos controladores (device controllers) compatibles NEC PD765 que se utilizan en la mayora de las computadoras personales basadas en Intel. Utilizamos el disco flexible como un ejemplo debido a que, aunque obsoleto, es mucho ms simple que un disco duro moderno. El PD765 tiene 16 comandos, cada uno de los cuales se especifica mediante la carga de 1 a 9 bytes en un registro de dispositivo. Estos comandos son para leer y escribir datos, desplazar el brazo del disco y dar formato a las pistas, as como para inicializar, detectar, restablecer y recalibrar el dispositivo controlador y las unidades. Los comandos ms bsicos son read y write (lectura y escritura), cada uno de los cuales requiere 13 parmetros, empaquetados en 9 bytes. Estos parmetros especifican elementos tales como la direccin del bloque de disco a leer, el nmero de sectores por pista, el modo de grabacin utilizado en el medio fsico, el espacio de separacin entre sectores y lo que se debe hacer con una marca de direccin de datos eliminados. Si el lector no comprende estos tecnicismos, no se preocupe: se es precisamente el punto, pues se trata de algo bastante oscuro. Cuando la operacin se completa, el chip del dispositivo controlador devuelve 23 campos de estado y error, empaquetados en 7 bytes. Como si esto no fuera suficiente, el programador del disco flexible tambin debe estar constantemente al tanto de si el motor est encendido o apagado. Si el motor est apagado, debe encenderse (con un retraso largo de arranque) para que los datos puedan ser ledos o escritos. El motor no se debe dejar demasiado tiempo encendido porque se desgastar. Por lo tanto, el programador se ve obligado a lidiar con el problema de elegir entre tener retrasos largos de arranque o desgastar los discos flexibles (y llegar a perder los datos). Sin entrar en los detalles reales, debe quedar claro que el programador promedio tal vez no desee involucrarse demasiado con la programacin de los discos flexibles (o de los discos duros, que son an ms complejos). En vez de ello, lo que desea es una abstraccin simple de alto nivel que se encargue de lidiar con el disco. En el caso de los discos, una abstraccin comn sera que el disco contiene una coleccin de archivos con nombre. Cada archivo puede ser abierto para lectura o escritura, despus puede ser ledo o escrito y, por ltimo, cerrado. Los detalles, tales como si la grabacin debe utilizar o no la modulacin de frecuencia y cul es el estado del motor en un momento dado, no deben aparecer en la abstraccin que se presenta al programador de aplicaciones. La abstraccin es la clave para lidiar con la complejidad. Las buenas abstracciones convierten una tarea casi imposible en dos tareas manejables. La primera de stas es definir e implementar las abstracciones; la segunda, utilizarlas para resolver el problema en cuestin. Una abstraccin que casi cualquier usuario de computadora comprende es el archivo: es una pieza til de informacin, como una fotografa digital, un mensaje de correo electrnico almacenado o una pgina Web. El trabajo del sistema operativo es crear buenas abstracciones para despus implementar y administrar los objetos abstractos entonces creados. En este libro hablaremos mucho acerca de las abstracciones, dado que son claves para comprender los sistemas operativos. Este punto es tan importante que vale la pena repetirlo en distintas palabras. Con el debido respeto a los ingenieros industriales que disearon la Macintosh, el hardware es feo. Los procesadores, memorias, discos y otros dispositivos reales son muy complicados y presentan interfaces difciles, enredadas, muy peculiares e inconsistentes para las personas que tienen que escribir software para utilizarlos. Algunas veces esto se debe a la necesidad de tener compatibilidad con el hardware anterior; otras, a un deseo de ahorrar dinero, y otras ms, a que los diseadores de hardware no tienen idea (o no les importa) qu tan grave es el problema que estn ocasionando para el software. Una de las principales tareas del sistema operativo es ocultar el hardware y presentar a los programas (y a sus programadores) abstracciones agradables, elegantes, simples y consistentes con las que puedan trabajar.1.1.2. El sistema operativo como controlador de recursosEl concepto del sistema operativo como algo que proporciona una interfaz entra en una visin de abajo hacia arriba. Un punto de vista alternativo, sostiene que el sistema operativo esta ah para controlar todas las piezas de un complejo sistema.Desde este punto de vista, la labor del sistema operativo es la de proporcionar una asignacin ordenada y controlada de los procesadores.1.2. Historia de los sistemas operativos.La primer computadora digital real fue diseada por Charles Babbage, aunque Babbage consumi gran parte de su vida y fortuna en el intento por construir su maquina analtica, nunca logro que funcionara de manera adecuada, sobra decir que esta maquina careca de sistema operativo.1.2.1 La primera generacin (1945 1955): Bulbos y Conexiones.El profesor John Atanasoff y su estudiante graduado Clifford Berry construyeron lo que ahora se conoce como la primera computadora digital funcional en Iowa State University. Utilizaba 300 tubos de vaco (bulbos). Aproximadamente al mismo tiempo, Konrad Zuse en Berln construy la computadora Z3 a partir de relevadores. En 1944, la mquina Colossus fue construida por un equipo de trabajo en Bletchley Park, Inglaterra; la Mark I, por Howard Aiken en Harvard, y la ENIAC, por William Mauchley y su estudiante graduado J. Presper Eckert en la Universidad de Pennsylvania. Algunas fueron binarias, otras utilizaron bulbos, algunas eran programables, pero todas eran muy primitivas y tardaban segundos en realizar incluso hasta el clculo ms simple.En estos primeros das, un solo grupo de personas diseaban, construan, programaban, operaban y daban mantenimiento a cada mquina. Toda la programacin se realizaba exclusivamente en lenguaje mquina o, peor an, creando circuitos elctricos mediante la conexin de miles de cables a tableros de conexiones para controlar las funciones bsicas de la mquina. Los lenguajes de programacin eran desconocidos). Los sistemas operativos tambin se desconocan. El modo usual de operacin consista en que el programador trabajaba un periodo dado, registrndose en una hoja de firmas, y despus entraba al cuarto de mquinas, insertaba su tablero de conexiones en la computadora e inverta varias horas esperando que ninguno de los cerca de 20,000 bulbos se quemara durante la ejecucin. Prcticamente todos los problemas eran clculos numricos bastante simples, como obtener tablas de senos, cosenos y logaritmos.1.2.2. La segunda generacin (1955 a 1965): transistores y sistemas de procesamiento por lotesLa introduccin del transistor a mediados de la dcada de 1950 cambi radicalmente el panorama. Las computadoras se volvieron lo bastante confiables como para poder fabricarlas y venderlas a clientes dispuestos a pagar por ellas, Por primera vez haba una clara separacin entre los diseadores, constructores, operadores, programadores y el personal de mantenimiento.Estas mquinas (mainframes) estaban encerradas en cuartos especiales con aire acondicionado y grupos de operadores profesionales para manejarlas. Slo las empresas grandes, universidades o agencias gubernamentales importantes podan financiar el costo multimillonario de operar estas mquinas.Para ejecutar un trabajo, el programador primero escriba el programa en papel y despus lo pasaba a tarjetas perforadas. Luego llevaba el conjunto de tarjetas al cuarto de entrada de datos y lo entregaba a uno de los operadores; cuando la computadora terminaba el trabajo que estaba ejecutando en un momento dado, un operador iba a la impresora y arrancaba las hojas de resultados para llevarlas al cuarto de salida de datos, para que el programador pudiera recogerlas posteriormente. Entonces, el operador tomaba uno de los conjuntos de tarjetas que se haban trado del cuarto de entrada y las introduca en la mquina.Despues se utilizo el sistema de procesamiento por lotes, la idea detrs de este concepto era recolectar una bandeja llena de trabajos en el cuarto de entrada de datos y luego pasarlos a una cinta magntica mediante el uso de una pequea computadora relativamente econmica, despus de aproximadamente una hora de recolectar un lote de trabajos, las tarjetas se lean y se colocaban en una cinta magntica, la cual se llevaba al cuarto de mquinas, en donde se montaba en una unidad de cinta. Despus, el operador cargaba un programa especial que lea el primer trabajo de la cinta y lo ejecutaba. Los resultados se escriban en una segunda cinta, en vez de imprimirlos.Las computadoras grandes de segunda generacin se utilizaron para resolver clculos cientficos y de ingeniera.1.2.3 La tercera generacin (1965 a 1980): circuitos integrados y multiprogramacin.A principio de la dcada de 1960, la mayora de los fabricantes de computadoras tenan dos lneas de productos distintas e incompatibles. Por una parte estaban las computadoras cientficas a gran escala orientadas a palabras, como la 7094, que se utilizaban para clculos numricos en ciencia e ingeniera. Por otro lado, estaban las computadoras comerciales orientadas a caracteres, como la 1401, que se utilizaban ampliamente para ordenar cintas e imprimir datos en los bancos y las compaas de seguros, desarrollar y dar mantenimiento a dos lneas de productos completamente distintos era una propuesta costosa para los fabricantes, IBM intent resolver ambos problemas de un solo golpe con la introduccin de la lnea de computadoras System/360. La 360 era una serie de mquinas compatibles con el software, que variaban desde un tamao similar a la 1401 hasta algunas que eran ms potentes que la 7094. Las mquinas slo diferan en el precio y rendimiento.La IBM 360 fue la primera lnea importante de computadoras en utilizar circuitos integrados (ICs), con lo cual se pudo ofrecer una mayor ventaja de precio/rendimiento en comparacin con las mquinas de segunda generacin, las cuales fueron construidas a partir de transistores individuales.La solucin que surgi fue particionar la memoria en varias piezas, con un trabajo distinto en cada particin, como se muestra en la figura 1-5. Mientras que un trabajo esperaba a que se completara una operacin de E/S, otro poda estar usando la CPU. Si pudieran contenerse suficientes trabajos en memoria principal al mismo tiempo, la CPU poda estar ocupada casi 100 por ciento del tiempo. Para tener varios trabajos de forma segura en memoria a la vez, se requiere hardware especial para proteger cada trabajo y evitar que los otros se entrometan y lo malogren; el 360 y los dems sistemas de tercera generacin estaban equipados con este hardware.Otra caracterstica importante de los sistemas operativos de tercera generacin fue la capacidad para leer trabajos en tarjetas y colocarlos en el disco tan pronto como se llevaban al cuarto de computadoras. As, cada vez que terminaba un trabajo en ejecucin, el sistema operativo poda cargar un nuevo trabajo del disco en la particin que entonces estaba vaca y lo ejecutaba. A esta tcnica se le conoce como spooling y tambin se utiliz para las operaciones de salida. Con el spooling, las mquinas 1401 no eran ya necesarias y desapareci la mayor parte del trabajo de transportar las cintas.Este deseo de obtener un tiempo rpido de respuesta allan el camino para el tiempo compartido donde cada usuario tena una terminal en lnea. En un sistema de tiempo compartido, si 20 usuarios estn conectados y 17 de ellos estn pensando en dar un paseo o tomar caf, la CPU se puede asignar por turno a los tres trabajos que desean ser atendidos. El primer sistema de tiempo compartido de propsito general, conocido como CTSS1.2.4 La cuarta generacin (1980 a la fecha): las computadoras personales.Con el desarrollo de los circuitos LSIa), que contienen miles de transistores en un centmetro cuadrado de silicio (chip), naci la era de la computadora personal. En trminos de arquitectura, las computadoras personales no eran del todo distintas de las minicomputadoras de la clase PDP-11, pero en trminos de precio sin duda eran distintas. Mientras que la minicomputadora hizo posible que un departamento en una compaa o universidad tuviera su propia computadora, el chip microprocesador logr que un individuo tuviera su propia computadora personal. Cuando Intel present el microprocesador 8080 en 1974, deseaba un sistema operativo, en parte para poder probarlo. Intel pidi a uno de sus consultores, Gary Kildall, que escribiera uno. Kildall y un amigo construyeron primero un dispositivo controlador para el disco flexible de 8 pulgadas de Shugart Associates que recin haba sido sacado al mercado, y conectaron el disco flexible con el 8080, con lo cual produjeron la primera microcomputadora con un disco.En 1977, Digital Research redise el CP/M para adaptarlo de manera que se pudiera ejecutar en todas las microcomputadoras que utilizaban los chips 8080, Zilog Z80 y otros. Se escribieron muchos programas de aplicacin para ejecutarse en CP/M, lo cual le permiti dominar por completo el mundo de la microcomputacin durante un tiempo aproximado de 5 aos.1.3 REVISIN DEL HARDWARE DE COMPUTADORAUn sistema operativo est ntimamente relacionado con el hardware de la computadora sobre la que se ejecuta. Extiende el conjunto de instrucciones de la computadora y administra sus recursos. Para trabajar debe conocer muy bien el hardware, por lo menos en lo que respecta a cmo aparece para el programador. Por esta razn, revisaremos brevemente el hardware de computadora como se encuentra en las computadoras personales modernas. Despus de eso, podemos empezar a entrar en los detalles acerca de qu hacen los sistemas operativos y cmo funcionan.1.3.1 Procesadores.El cerebro de la computadora es la CPU, que obtiene las instrucciones de la memoria y las ejecuta. El ciclo bsico de toda CPU es obtener la primera instruccin de memoria, decodificarla para determinar su tipo y operandos, ejecutarla y despus obtener, decodificar y ejecutar las instrucciones subsiguientes. El ciclo se repite hasta que el programa termina. De esta forma se ejecutan los programas.Chips con multihilamiento y multincleo: La ley de Moore establece que el nmero de transistores en un chip se duplica cada 18 meses. Esta ley no es ningn tipo de ley de fsica, como la de la conservacin del momento, sino una observacin hecha por Gordon Moore, cofundador de Intel, acerca de la velocidad con la que los ingenieros de procesos en las compaas de semiconductores pueden reducir sus transistores. La ley de Moore ha estado vigente durante tres dcadas hasta hoy y se espera que siga as durante al menos una dcada ms.1.3.2 Memoria.El segundo componente importante en cualquier computadora es la memoria. En teora, una memoria debe ser en extremo rpida (ms rpida que la velocidad de ejecucin de una instruccin, de manera que la memoria no detenga a la CPU), de gran tamao y muy econmica. Ninguna tecnologa en la actualidad cumple con todos estos objetivos, por lo que se adopta una solucin distinta. El sistema de memoria est construido como una jerarqua de capas, las capas superiores tienen mayor velocidad, menor capacidad y mayor costo por bit que las capas inferiores, a menudo por factores de mil millones o ms.La capa superior consiste en los registros internos de la CPU. Estn compuestos del mismo material que la CPU y, por ende, tienen la misma rapidez. En consecuencia no hay retraso a la hora de utilizarlos. La capacidad de almacenamiento disponible en estos registros es generalmente de 32 32 bits en una CPU de 32 bits y de 64 64 bits en una CPU de 64 bits. Menos de 1 KB en ambos casos. Los programas deben administrar los registros (es decir, decidir qu deben guardar en ellos) por su cuenta, en el software.1.3.3 Discos.El siguiente lugar en la jerarqua corresponde al disco magntico (disco duro). El almacenamiento en disco es dos rdenes de magnitud ms econmico que la RAM por cada bit, y a menudo es dos rdenes de magnitud ms grande en tamao tambin. El nico problema es que el tiempo para acceder en forma aleatoria a los datos en ella es de cerca de tres rdenes de magnitud ms lento. Esta baja velocidad se debe al hecho de que un disco es un dispositivo mecnico, un disco consiste en uno o ms platos que giran a 5400, 7200 o 10,800 rpm. Un brazo mecnico, con un punto de giro colocado en una esquina, se mueve sobre los platos de manera similar al brazo de la aguja en un viejo tocadiscos. La informacin se escribe en el disco en una serie de crculos concntricos. En cualquier posicin dada del brazo, cada una de las cabezas puede leer una regin anular conocida como pista (track). En conjunto, todas las pistas para una posicin dada del brazo forman un cilindro (cylinder). Cada pista se divide en cierto nmero de sectores, por lo general de 512 bytes por sector. En los discos modernos, los cilindros exteriores contienen ms sectores que los interiores. Para desplazar el brazo de un cilindro al siguiente se requiere aproximadamente 1 milisegundo. Para desplazar el brazo a un cilindro aleatoriamente se requieren por lo general de 5 a 10 milisegundos, dependiendo de la unidad. Una vez que el brazo se encuentra en la pista correcta, la unidad debe esperar a que el sector necesario gire hacia abajo de la cabeza, con un retraso adicional de 5 a 10 milisegundos, dependiendo de las rpm de la unidad. Una vez que el sector est bajo la cabeza, la lectura o escritura ocurre a una velocidad de 50 MB/seg en los discos de bajo rendimiento hasta de 160 MB/seg en los discos ms rpidos.1.3.4 Cintas.La ltima capa de la jerarqua en la memoria es la cinta magntica. Este medio se utiliza con frecuencia como respaldo para el almacenamiento en disco y para contener conjuntos de datos muy extensos. Para acceder a una cinta, primero debe colocarse en un lector de cinta, ya sea que lo haga una persona o un robot). Despus la cinta tal vez tenga que embobinarse hacia delante para llegar al bloque solicitado. En general, este proceso podra tardar varios minutos. La gran ventaja de la cinta es que es en extremo econmica por bit y removible, lo cual es importante para las cintas de respaldo que se deben almacenar fuera del sitio de trabajo para que puedan sobrevivir a los incendios, inundaciones, terremotos y otros desastres.1.3.5 Dispositivos de E/S.La CPU y la memoria no son los nicos recursos que el sistema operativo debe administrar. Los dispositivos de E/S tambin interactan mucho con el sistema operativo. Como vimos en la figura 1-6, los dispositivos de E/S generalmente constan de dos partes: un dispositivo controlador y el dispositivo en s. El dispositivo controlador es un chip o conjunto de chips que controla fsicamente el dispositivo.1.3.6 Buses.El sistema tiene ocho buses (cach, local, memoria, PCI, SCSI, USB, IDE e ISA), cada uno con una velocidad de transferencia y funcin distintas. El sistema operativo debe estar al tanto de todos estos buses para su configuracin y administracin. Los dos buses principales son el bus ISA (Industry Standard Architecture, Arquitectura estndar de la industria) de la IBM PC original y su sucesor, el bus PCI (Peripheral Component Interconnect, Interconexin de componentes perifricos). El bus ISA (el bus original de la IBM PC/AT) opera a 8.33 MHz y puede transferir 2 bytes a la vez, para una velocidad mxima de 16.67 MB/seg. Se incluye para mantener compatibilidad hacia atrs con las tarjetas de E/S antiguas y lentas. Los sistemas modernos lo omiten con frecuencia, pues ya es obsoleto. El bus PCI fue inventado por Intel como sucesor para el bus ISA. Puede operar a 66 MHz y transferir 8 bytes a la vez, para lograr una velocidad de transferencia de datos de 528 MB/seg. La mayora de los dispositivos de E/S de alta velocidad utilizan el bus PCI en la actualidad. Incluso algunas computadoras que no emplean procesadores Intel usan el bus PCI, debido al extenso nmero de tarjetas de E/S disponibles para este bus. Las nuevas computadoras estn saliendo al mercado con una versin actualizad del bus PCI, conocida como PCI Express.1.3.7 Arranque de la computadora En forma muy breve, el proceso de arranque del Pentium es el siguiente. Cada Pentium contiene una tarjeta madre (motherboard). En la tarjeta madre o padre hay un programa conocido como BIOS (Basic Input Output System, Sistema bsico de entrada y salida) del sistema. El BIOS contiene software de E/S de bajo nivel, incluyendo procedimientos para leer el teclado, escribir en la pantalla y realizar operaciones de E/S de disco, entre otras cosas. Hoy en da est contenido en una RAM tipo flash que es no voltil pero el sistema operativo puede actualizarla cuando se encuentran errores en el BIOS. Cuando se arranca la computadora, el BIOS inicia su ejecucin. Primero hace pruebas para ver cunta RAM hay instalada y si el teclado junto con otros dispositivos bsicos estn instalados y responden en forma correcta. Empieza explorando los buses ISA y PCI para detectar todos los dispositivos conectados a ellos. Comnmente, algunos de estos dispositivos son heredados (es decir, se disearon antes de inventar la tecnologa plug and play), adems de tener valores fijos para los niveles de interrupciones y las direcciones de E/S (que posiblemente se establecen mediante interruptores o puentes en la tarjeta de E/S, pero que el sistema operativo no puede modificar). Estos dispositivos se registran; y los dispositivos plug and play tambin. Si los dispositivos presentes son distintos de los que haba cuando el sistema se inici por ltima vez, se configuran los nuevos dispositivos. Despus, el BIOS determina el dispositivo de arranque, para lo cual prueba una lista de dispositivos almacenada en la memoria CMOS. El usuario puede cambiar esta lista si entra a un programa de configuracin del BIOS, justo despus de iniciar el sistema. Por lo general, se hace un intento por arrancar del disco flexible, si hay uno presente. Si eso falla, se hace una consulta a la unidad de CD-ROM para ver si contiene un CD-ROM que se pueda arrancar. Si no hay disco flexible ni CD-ROM que puedan iniciarse, el sistema se arranca desde el disco duro. El primer sector del dispositivo de arranque se lee y se coloca en la memoria, para luego ejecutarse. Este sector contiene un programa que por lo general examina la tabla de particiones al final del sector de arranque, para determinar qu particin est activa. Despus se lee un cargador de arranque secundario de esa particin. Este cargador lee el sistema operativo de la particin activa y lo inicia. Luego, el sistema operativo consulta al BIOS para obtener la informacin de configuracin. Para cada dispositivo, comprueba si tiene el driver correspondiente. De no ser as, pide al usuario que inserte un CD-ROM que contenga el driver (suministrado por el fabricante del dispositivo). Una vez que tiene los drivers de todos los dispositivos, el sistema operativo los carga en el kernel. Despus inicializa sus tablas, crea los procesos de segundo plano que se requieran, y arranca un programa de inicio de sesin o GUI. 1.4 LOS TIPOS DE SISTEMAS OPERATIVOS Los sistemas operativos han estado en funcionamiento durante ms de medio siglo. Durante este tiempo se ha desarrollado una variedad bastante extensa de ellos, no todos se conocen ampliamente. En esta seccin describiremos de manera breve nueve. Ms adelante en el libro regresaremos a ver algunos de estos distintos tipos de sistemas.