Sistemas Operativos Modernos

Find the right structure and content for your course and set up a syllabus

Comienza Ya. Es Gratis
ó regístrate con tu dirección de correo electrónico
Sistemas Operativos Modernos por Mind Map: Sistemas Operativos Modernos

1. LLAMADAS AL SISTEMA

1.1. Llamadas al sistema para la administración de procesos

1.1.1. En la mayoría de los casos, después de una llamada a fork el hijo tendrá que ejecutar código distinto al del padre. Considere el caso del shell: lee un comando de la terminal, llama a fork para crear un proceso hijo, espera a que el hijo ejecute el comando y después lee el siguiente comando cuando el hijo termina.

1.2. Llamadas al sistema para la administración de archivos

1.2.1. Muchas llamadas al sistema se relacionan con el sistema de archivos. En esta sección analizaremos las llamadas que operan con archivos individuales; en la siguiente sección examinaremos las llama- das que implican el uso de directorios o el sistema de archivos como un todo.

1.3. Llamadas al sistema para la administración de directorios

1.3.1. En esta sección analizaremos algunas llamadas al sistema que se relacionan más con los directorios o con el sistema de archivos como un todo, en vez de relacionarse sólo con un archivo específico, co- mo en la sección anterior. Las primeras dos llamadas, mkdir y rmdir, crean y eliminan directorios va- cíos, respectivamente

1.4. Miscelánea de llamadas al sistema

1.4.1. La llamada al sistema kill es la forma en que los usuarios y los procesos de usuario envían señales. Si un proceso está preparado para atrapar una señal específica, y luego ésta llega, se ejecuta un manejador de señales. Si el proceso no está preparado para manejar una señal, entonces su llegada ma- ta el proceso (de aquí que se utilice ese nombre para la llamada).

2. La API Win32 de Windows

2.1. Hasta ahora nos hemos enfocado principalmente en UNIX. Es tiempo de dar un vistazo breve a Windows. Windows y UNIX difieren de una manera fundamental en sus respectivos modelos de programación. Un programa de UNIX consiste en código que realiza una cosa u otra, haciendo lla- madas al sistema para realizar ciertos servicios. En contraste, un programa de Windows es por lo general manejado por eventos. El programa principal espera a que ocurra cierto evento y después llama a un procedimiento para manejarlo. Los eventos comunes son las teclas que se oprimen, el ratón que se desplaza, un botón de ratón que se oprime o un CD-ROM que se inserta. Después, los manejadores se llaman para procesar el evento, actualizar la pantalla y actualizar el estado interno del programa. En todo, esto produce un estilo algo distinto de programación que con UNIX, pero debido a que el enfoque de este libro es acerca de la función y la estructura del sistema operativo, estos distintos modelos de programación no nos preocuparán por mucho.

3. La máquina virtual de Java

3.1. Otra área en donde se utilizan máquinas virtuales, pero de una manera algo distinta, es para ejecutar programas de Java. Cuando Sun Microsystems inventó el lenguaje de programación Java, tam- bién inventó una máquina virtual (es decir, una arquitectura de computadora) llamada JVM (Java Virtual Machine, Máquina virtual de Java)

4. Exokernels

4.1. En vez de clonar la máquina actual, como se hace con las máquinas virtuales, otra estrategia es particionarla; en otras palabras, a cada usuario se le proporciona un subconjunto de los recursos. Así, una máquina virtual podría obtener los bloques de disco del 0 al 1023, la siguiente podría obtener los bloques de disco del 1024 al 2047 y así sucesivamente

5. ESTRUCTURA DE UN SISTEMA OPERATIVO

5.1. Sistemas monolíticos

5.1.1. En este diseño, que hasta ahora se considera como la organización más común, todo el sistema ope- rativo se ejecuta como un solo programa en modo kernel. El sistema operativo se escribe como una colección de procedimientos, enlazados entre sí en un solo programa binario ejecutable extenso. Cuando se utiliza esta técnica, cada procedimiento en el sistema tiene la libertad de llamar a cual- quier otro, si éste proporciona cierto cómputo útil que el primero necesita. Al tener miles de proce- dimientos que se pueden llamar entre sí sin restricción, con frecuencia se produce un sistema poco manejable y difícil de comprender.

5.2. Sistemas de capas

5.2.1. Una generalización del diseño de la figura 1-24 es organizar el sistema operativo como una jerar- quía de capas, cada una construida encima de la que tiene abajo. El primer sistema construido de esta forma fue el sistema THE, construido en Technische Hogeschool Eindhoven en Holanda por E. W. Dijkstra (1968) y sus estudiantes. El sistema THE era un sistema simple de procesamiento por lotes para una computadora holandesa, la Electrologica X8, que tenía 32K de palabras de 27 bits (los bits eran costosos en aquel entonces).

5.3. Microkernels

5.3.1. Con el diseño de capas, los diseñadores podían elegir en dónde dibujar el límite entre kernel y usuario. Tradicionalmente todas las capas iban al kernel, pero eso no es necesario. De hecho, puede tener mucho sentido poner lo menos que sea posible en modo kernel, debido a que los errores en el kernel pueden paralizar el sistema de inmediato

5.4. Modelo cliente-servidor

5.4.1. Una ligera variación de la idea del microkernel es diferenciar dos clases de procesos: los servido- res, cada uno de los cuales proporciona cierto servicio, y los clientes, que utilizan estos servicios. Este modelo se conoce como cliente-servidor. A menudo la capa inferior es un microkernel, pero eso no es requerido. La esencia es la presencia de procesos cliente y procesos servidor.

5.5. Máquinas virtuales

5.5.1. Las versiones iniciales del OS/360 eran, en sentido estricto, sistemas de procesamiento por lotes. Sin embargo, muchos usuarios del 360 querían la capacidad de trabajar de manera interactiva en una terminal, por lo que varios grupos, tanto dentro como fuera de IBM

5.6. VM/370

5.6.1. Este sistema, que en un principio se llamó CP/CMS y posteriormente cambió su nombre a VM/370 (Seawright y MacKinnon, 1979), estaba basado en una astuta observación: un sistema de tiempo com- partido proporciona (1) multiprogramación y (2) una máquina extendida con una interfaz más conve- niente que el hardware por sí solo

5.7. Redescubrimiento de las máquinas virtuales

5.7.1. Mientras que IBM ha tenido un producto de máquina virtual disponible durante cuatro décadas, y unas cuantas compañías más como Sun Microsystems y Hewlett-Packard han agregado reciente- mente el soporte de máquinas virtuales a sus servidores empresariales de alto rendimiento, la idea de la virtualización se había ignorado por mucho tiempo en el mundo de la PC, hasta hace poco. Pero en los últimos años, se han combinado nuevas necesidades, nuevo software y nuevas tecnologías para convertirla en un tema de moda.

6. EL MUNDO SEGÚN C

6.1. El lenguaje C

6.1.1. Archivos de encabezado

6.1.1.1. Por lo general, un proyecto de sistema operativo consiste en cierto número de directorios, cada uno de los cuales contiene muchos archivos .c que contienen el código para cierta parte del sistema, junto con varios archivos de encabezado .h que contienen declaraciones y definiciones utilizadas por uno o más archivos de código

6.1.2. Proyectos de programación extensos

6.1.2.1. Para generar el sistema operativo, el compilador de C compila cada archivo .c en un archivo de có- digo objeto. Estos archivos, que tienen el sufijo .o, contienen instrucciones binarias para el equipo de destino. Posteriormente la CPU los ejecutará directamente. No hay nada como el código byte de Java en el mundo de C.

6.1.3. El modelo del tiempo de ejecución

6.1.3.1. Una vez que se ha enlazado el archivo binario del sistema operativo, la computadora puede reini- ciarse con el nuevo sistema operativo. Una vez en ejecución, puede cargar piezas en forma dinámi- ca que no se hayan incluido de manera estática en el binario, como los drivers de dispositivos y los sistemas de archivos

7. INVESTIGACIÓN ACERCA DE LOS SISTEMAS OPERATIVOS

7.1. La ciencia computacional es un campo que avanza con rapidez y es difícil predecir hacia dónde va. Los investigadores en universidades y los laboratorios de investigación industrial están desarrollan- do constantemente nuevas ideas, algunas de las cuales no van a ningún lado, pero otras se convier- ten en la piedra angular de futuros productos y tienen un impacto masivo en la industria y en los usuarios. Saber qué ideas tendrán éxito es más fácil en retrospección que en tiempo real. Separar el trigo de la paja es en especial difícil, debido a que a menudo se requieren de 20 a 30 años para que una idea haga impacto.

8. Una computadora moderna consta de uno o más procesadores, una memoria principal, discos, impresoras, un teclado, un ratón, una pantalla o monitor, interfaces de red y otros dispositivos de entrada/salida.

8.1. Que Es Sistema Operativo

8.1.1. Es un software que controla la computadora, realizando dos funciones básicas no relacionadas, 1. proporcionando a los programadores o usuarios las aplicaciones, y 2. administrar los recursos del hardware. La interfaz gráfica de usuario o GUI, es un programa informático que actúa de interfaz de usuario, utilizando un conjunto de imágenes y objetos gráficos para representar la información y acciones disponibles en la interfaz. Su principal uso, consiste en proporcionar un entorno visual sencillo para permitir la comunicación con el sistema operativo de una máquina o computador. Habitualmente las acciones se realizan mediante manipulación directa, para facilitar la interacción del usuario con la computadora.

8.1.1.1. El sistema operativo como una máquina extendida La arquitectura conjunto de instrucciones, organización de memoria, E/S y estructura de bus. de la mayoría de las computadoras a nivel de lenguaje máquina es primitiva y compleja de programar, en especial para la entrada/salida. Los comandos más básicos son read y write (lectura y escritura), cada uno de los cuales re- quiere 13 parámetros, empaquetados en 9 bytes. Estos parámetros especifican elementos tales como la dirección del bloque de disco a leer, el número de sectores por pista, el modo de grabación utilizado en el medio físico, el espacio de separación entre sectores y lo que se debe hacer con una marca de dirección 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.

8.1.1.1.1. El sistema operativo como administrador de recursos Los sistemas operativos modernos permiten la ejecución simultánea de varios programas. Imagine lo que ocurriría si tres programas que se ejecutan en cierta computadora trataran de imprimir sus resultados en forma simultánea en la misma impresora. Las primeras líneas de impresión podrían provenir del programa 1, las siguientes del programa 2, después algunas del programa 3, y así en lo sucesivo: el resultado sería un caos. El sistema operativo puede imponer orden al caos potencial, guardando en búferes en disco toda la salida destinada para la impresora. Cuando termina un programa, el sistema operativo puede entonces copiar su salida, previamente almacenada, del archivo en disco a la impresora, mientras que al mismo tiempo el otro programa puede continuar generando más salida, ajeno al hecho de que la salida en realidad no se está enviando a la impresora todavía.

9. Historia de los Sistemas Operativos

9.1. I GENERACIÓN: TUBOS AL VACÍO

9.1.1. El profesor John Atanasoff y su estudiante graduado Clifford Berry construyeron lo que ahora se conoce como la primera computadora digital funcional, utilizaba 300 tubos de vacío (bulbos). En 1944, la máquina Colossus y ENIAC fue construida por un equipo de trabajo, algunas computadoras fueron binarias, otras utilizaron bulbos, algunas eran programables, pero todas eran muy primitivas y tardaban segundos en realizar incluso hasta el cálculo más simple, generalmente ingenieros diseñaban, construían, programaban, operaban y daban mantenimiento a cada máquina. Toda la programación se realizaba exclusivamente en lenguaje máquina o, peor aún, creando circuitos eléctricos mediante la conexión de miles de cables a tableros de conexiones (plugboards) para controlar las funciones básicas de la máquina. LOS LENGUAJES DE PROGRAMACIÓN ERAN DESCONOCIDOS (incluso se desconocía el lenguaje ensamblador). LOS SISTEMAS OPERATIVOS TAMBIÉN SE DESCONOCÍAN.

9.2. II GENERACIÓN: TRANSISTORES Y SISTEMAS DE PROCESAMIENTO POR LOTES

9.2.1. Estas máquinas, ahora conocidas como mainframes, para ejecutar un trabajo, el programador primero escribía el programa en papel FORTRAN o en ensamblador siendo este el LENGUAJE DE PROGRAMACIÓN DE ALTO NIVEL QUE SE USA PRINCIPALMENTE EN APLICACIONES CIENTÍFICAS Y MATEMÁTICASy después 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, LA SOLUCIÓN QUE SE ADOPTÓ EN FORMA GENERAL FUE EL SISTEMA DE PROCESAMIENTO POR LOTES. La idea detrás de este concepto era recolectar una bandeja llena de trabajos en el cuarto de entrada de datos y luego pasarlos a una cinta magnética mediante el uso de una pequeña computadora relativamente económica, después de aproximadamente una hora de recolectar un lote de trabajos, las tarjetas se leían y se colocaban en una CINTA MAGNÉTICA, la cual se llevaba al cuarto de máquinas, en donde se montaba en una unidad de cinta. LOS SISTEMAS OPERATIVOS TÍPICOS ERAN FMS (FORTRAN MONITOR SYSTEM) E IBSYS, EL SISTEMA OPERATIVO DE IBM PARA LA 7094.

9.3. III GENERACIÓN: CIRCUITOS INTEGRADOS Y MULTIPROGRAMACIÓN IBM intentó resolver ambos problemas de un solo golpe con la introducción de la línea de computadoras System/360. La 360 era una serie de máquinas compatibles con el software, las máquinas sólo diferían en el precio y rendimiento (máxima memoria, velocidad del procesador, número de dispositivos de E/S permitidos, etcétera). La IBM 360 fue la primera línea importante de computadoras en utilizar circuitos integrados (ICS) (a pequeña escala), con lo cual se pudo ofrecer una mayor ventaja de precio/rendimiento en comparación con las máquinas de segunda generación, las cuales fueron construidas a partir de transistores individuales, la mayor fortaleza de la idea de “una sola familia” fue al mismo tiempo su mayor debilidad. La intención era que todo el software, incluyendo al sistema operativo OS/360, funcionara en todos los modelos.

9.3.1. IV GENERACIÓN: LAS COMPUTADORAS PERSONALES Con el desarrollo de los circuitos LSI (Large Scale Integration, Integración a gran escala), que contienen miles de transistores en un centímetro cuadrado de silicio (chip), nació la era de la computadora personal, Cuando IBM regresó, Gates se había enterado de que un fabricante local de computadoras, Seattle Computer Products, tenía un SISTEMA OPERATIVO ADECUADO CONOCIDO COMO DOS (DISK OPERATING SYSTEM; SISTEMA OPERATIVO EN DISCO). El sistema rediseñado cambió su nombre a MS-DOS (MICROSOFT DISK OPERATING SYSTEM; SISTEMA OPERATIVO EN DISCO DE MICROSOFT) y rápidamente llegó a dominar el mercado de la IBM PC.

10. REVISIÓN DEL HARDWARE DE COMPUTADORA

10.1. Un 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 cómo aparece para el programador. Por esta razón, revisaremos brevemente el hardware de computadora como se encuentra en las computadoras personales modernas

10.1.1. Procesadores El “cerebro” de la computadora es la CPU, que obtiene las instrucciones de la memoria y las eje- cuta. El ciclo básico de toda CPU es obtener la primera instrucción de memoria, decodificarla para determinar su tipo y operandos, ejecutarla y después obtener, decodificar y ejecutar las instruccio- nes subsiguientes.

10.1.2. Chips con multihilamiento y multinúcleo El multihilamiento tiene consecuencias para el sistema operativo, debido a que cada hilo aparece para el sistema operativo como una CPU separada. Considere un sistema con dos CPU reales, cada una con dos hilos. El sistema operativo verá esto como si hubiera cuatro CPU. Si hay suficiente trabajo sólo para mantener ocupadas dos CPU en cierto punto en el tiempo, podría planificar de manera inadvertida dos hilos en la misma CPU, mientras que la otra CPU estaría completamente inactiva. Esta elección es mucho menos eficiente que utilizar un hilo en cada CPU.

10.1.3. Memoria El segundo componente importante en cualquier computadora es la memoria. En teoría, una memoria debe ser en extremo rápida más rápida que la velocidad de ejecución de una instrucción, de manera que la memoria no detenga a la CPU, de gran tamaño y muy económica.

10.1.4. Discos El almacenamiento en disco es dos órdenes de magnitud más económico que la RAM por cada bit, y a menudo es dos órdenes de magnitud más grande en tamaño también. 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 más lento.

10.1.5. Cintas La última capa de la jerarquía en la memoria es la cinta magnética. Este medio se utiliza con fre- cuencia como respaldo para el almacenamiento en disco y para contener conjuntos de datos muy extensos.

10.1.6. Dispositivos de E/S 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 físicamente el dispositivo. Por ejemplo, acepta los comandos del sistema operativo para leer datos del dispositivo y los lleva a cabo.

10.1.6.1. Buses Sin embargo, a medida que los procesadores y las memorias se hicieron más veloces, la habilidad de un solo bus (y sin duda, del bus de la IBM PC) de manejar todo el tráfico se forzaba hasta el punto de quiebre.

10.1.6.1.1. 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 básico de entrada y salida) del sistema. El BIOS con- tiene 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 día está contenido en una RAM tipo flash que es no volátil pero el sistema operativo puede actualizarla cuando se encuentran errores en el BIOS.

11. LOS TIPOS DE SISTEMAS OPERATIVOS

11.1. Sistemas operativos de mainframe

11.1.1. En el extremo superior están los sistemas operativos para las mainframes, las computadoras del tama- ño de un cuarto completo que aún se encuentran en los principales centros de datos corporativos. La diferencia entre estas computadoras y las personales está en su capacidad de E/S. Una mainframe con 1000 discos y millones de gigabytes de datos no es poco común

11.2. Sistemas operativos de servidores

11.2.1. En el siguiente nivel hacia abajo se encuentran los sistemas operativos de servidores. Se ejecutan en servidores, que son computadoras personales muy grandes, estaciones de trabajo o incluso mainframes. Dan servicio a varios usuarios a la vez a través de una red y les permiten compartir los re- cursos de hardware y de software.

11.3. Sistemas operativos de multiprocesadores

11.3.1. Una manera cada vez más común de obtener poder de cómputo de las grandes ligas es conectar varias CPU en un solo sistema. Dependiendo de la exactitud con la que se conecten y de lo que se comparta, estos sistemas se conocen como computadoras en paralelo, multicomputadoras o multiprocesadores. Necesitan sistemas operativos especiales, pero a menudo son variaciones de los sistemas operativos de servidores con características especiales para la comunicación, conectividad y consistencia.

11.4. Sistemas operativos de computadoras personales

11.4.1. Todos los sistemas operativos modernos soportan la programación, con frecuencia se inician docenas de programas al momento de arrancar el sistema. Su trabajo es proporcionar buen soporte para un solo usuario.

11.5. Sistemas operativos de computadoras de bolsillo

11.5.1. es una computadora que cabe en los bolsillos y realiza una pequeña variedad de funciones, como libreta de direcciones electrónica y bloc de notas. Además, hay muchos teléfonos celulares muy similares a los PDAs, con la excepción de su teclado y pantalla.

11.5.1.1. Sistemas operativos integrados Los sistemas integrados (embedded), que también se conocen como incrustados o embebidos, operan en las computadoras que controlan dispositivos que no se consideran generalmente como computado- ras, ya que no aceptan software instalado por el usuario.

11.5.1.2. Sistemas operativos de tarjetas inteligentes Los sistemas operativos más pequeños operan en las tarjetas inteligentes, que son dispositivos del tamaño de una tarjeta de crédito que contienen un chip de CPU. Tienen varias severas restricciones de poder de procesamiento y memoria. Algunas se energizan mediante contactos en el lector en el que se insertan, pero las tarjetas inteligentes sin contactos se energizan mediante inducción, lo cual limita en forma considerable las cosas que pueden hacer

12. CONCEPTOS DE LOS SISTEMAS OPERATIVOS

12.1. Procesos Un concepto clave en todos los sistemas operativos es el proceso. Un proceso es en esencia un programa en ejecución. Cada proceso tiene asociado un espacio de direcciones, una lista de ubicaciones de memoria que va desde algún mínimo (generalmente 0) hasta cierto valor máximo, donde el proceso puede leer y escribir información.

12.2. Espacios de direcciones Cada computadora tiene cierta memoria principal que utiliza para mantener los programas en ejecución. En un sistema operativo muy simple sólo hay un programa a la vez en la memoria. Para ejecutar un segundo programa se tiene que quitar el primero y colocar el segundo en la memoria.

12.3. Archivos Otro concepto clave de casi todos los sistemas operativos es el sistema de archivos. Como se dijo antes, una de las funciones principales del sistema operativo es ocultar las peculiaridades de los discos y demás dispositivos de E/S, presentando al programador un modelo abstracto limpio y agradable de archivos independientes del dispositivo.

12.4. Entrada/salida tipos de dispositivos de entrada y de salida, incluyendo teclados, monitores, impresoras, etcétera. Es responsabilidad del sistema operativo administrar estos dispositivos.

12.5. Protección Las computadoras contienen grandes cantidades de información que los usuarios comúnmente de- sean proteger y mantener de manera confidencial. Esta información puede incluir mensajes de co- rreo electrónico, planes de negocios, declaraciones fiscales y mucho más.

12.6. El shell El sistema operativo es el código que lleva a cabo las llamadas al sistema. Los editores, compila- dores, ensambladores, enlazadores e intérpretes de comandos en definitiva no forman parte del sis- tema operativo, aun cuando son importantes y útiles.

12.7. La ontogenia recapitula la filogenia Algo análogo ha ocurrido en la industria de las computadoras. Cada nueva especie (mainframe, minicomputadora, computadora personal, computadora de bolsillo, computadora de sistema integrado, tarjeta inteligente, etc.) parece pasar a través del desarrollo que hicieron sus ancestros, tanto en hardware como en software.

12.8. Memorias extensas Ahora vamos a examinar algunos desarrollos históricos en el hardware y la forma en que han afectado al software repetidas veces. Las primeras mainframes tenían memoria limitada.

12.9. Hardware de protección Las primeras mainframes (como la IBM 7090/7094) no tenían hardware de protección, por lo que sólo ejecutaban un programa a la vez. Un programa con muchos errores podía acabar con el siste- ma operativo y hacer que la máquina fallara con facilidad.

12.10. Discos Las primeras mainframes estaban en su mayor parte basadas en cinta magnética. Leían un programa de la cinta, lo compilaban, lo ejecutaban y escribían los resultados de vuelta en otra cinta.

12.11. Memoria virtual proporciona la habilidad de ejecutar programas más extensos que la memoria física de la computadora, llevando y trayendo pedazos entre la RAM y el disco.