INSTITUTO POLITÉCNICO NACIONAL
ESCUELA SUPERIOR DE INGENIERÍA MECÁNICA Y
ELÉCTRICA
UNIDAD CULHUACAN
INGENIERÍA EN COMPUTACIÓN
APUNTES DE LA MATERIA: SISTEMAS OPERATIVOS
ACADEMIA: COMPUTACION
SEXTO SEMESTRE
PROFESORA: M. en C. MARISOL HERNANDEZ LOPEZ
INDICE TEMATICO
UNIDAD I. INTRODUCCIÓN
1.1 Funciones de un sistema operativo.
1.1.1 Administradores de un sistema operativo. 1.2 Evolución de los sistemas operativos.
1.3 Tipos de sistemas operativos.
1.4 Estructuras de los sistemas operativos.
UNIDAD II. ADMINISTRACIÓN DE LA MEMORIA.
2.1 Jerarquía de la memoria. 2.1.1 Memoria secundaria. 2.1.2 Memoria principal. 2.1.3 Memoria cache. 2.2 Asignación de memoria. 2.2.1 Contigua simple. 2.2.2 Particionada.
2.2.3 Algoritmos de asignación de procesos. 2.2.4 Paginación simple.
2.2.5 Segmentación simple. 2.2.6 Paginación por demanda. 2.2.7 Segmentación por demanda. 2.3 Servicios de gestión de memoria.
2.3.1 Servicios POSIX. 2.3.2 Servicios Win32.
UNIDAD III. ADMINISTRADOR DE PROCESADOR.
3.1 Introducción a los procesos.
3.1.1 Diferencia entre proceso y programa. 3.1.2 Modelo de un proceso.
3.1.3 Estados de un proceso.
3.1.3 Bloque de control de procesos. 3.1.5 Niveles de Planificación.
3.1.6 Políticas de Planificación.
3.1.7 Información de un proceso: estado del procesador, imagen de memoria del proceso, tablas del
sistema operativo. 3.2 Despacho de procesos.
3.2.1 Algoritmos de planificación de procesos. 3.2.2 Prioridades.
3.3 Concurrencia. 3.3.1 Multitareas. 3.3.2 Multiprocesos.
3.4 Comunicación entre procesos.
3.4.1 Subprocesos.
3.4.2 Modelo de subprocesos. 3.4.3 Secciones críticas.
3.4.4 Exclusión mutua con espera ocupada. 3.4.5 Bloqueo y Desbloqueo (Sleep y Wakeup). 3.4.6 Semáforos.
3.4.6.1 Binarios. 3.4.6.2 De conteo. 3.4.7 Monitores.
3.4.8 Transmisión de mensajes.
3.5 Problemas de comunicación entre procesos. 3.5.1 Los cinco filósofos comensales. 3.5.2 Lectores y Escritores.
3.6 Servicios POSIX para la gestión de procesos. 3.7 Servicios WIN32 par ala gestión de procesos.
UNIDAD IV. DISPOSITIVOS DE ENTRADA / SALIDA.
4.1 Dispositivos E/S.
4.1.1 Interrupción del CPU.
4.1.2 Definición y manejo de interrupciones. 4.1.3 E/S programada.
4.1.4 E/S controlada por interrupciones. 4.1.5 Clasificación. 4.1.6 Manejador de interrupciones. 4.1.7 Vector de interrupciones. 4.2 Canales de E/S. 4.2.1 Tipos de canales. 4.2.2 Interfaces. 4.2.3 Controladores.
4.3 Memorias Transitorias (Buffers). 4.3.1 Tipos de memorias transitorias. 4.3.2 Manejo de memorias transitorias. 4.3.3 Implementación.
4.3.4 Terminales de red.
4.3.5 Interfaces graficas de usuario.
4.4 Servicios de E/S: genéricos para POSIX y WIN32.
UNIDAD V. SISTEMA DE ARCHIVOS.
5.1 Manejo de archivos y directorios. 5.1.1 Aspectos básicos de los archivos. 5.1.2 Directorios.
5.2 Sistemas de archivos.
5.2.1 Manejo del espacio en disco. 5.2.2 Almacenamiento de archivos.
5.2.3 Estructura de directorios. 5.2.4 Archivos compartidos.
5.2.5 Rendimiento del sistema de archivos. 5.3 Seguridad.
5.3.1 Fallas de seguridad.
5.3.2 Principios de diseño para seguridad. 5.3.3 Virus.
5.3.4 Mecanismos de protección. 5.4 Ejemplos de sistemas de archivos.
5.4.1 CP/M. 5.4.2 MS-DOS. 5.4.3 Win 98. 5.4.4 UNIX V7.
UNIDAD I
1. DEFINICION SISTEMA OPERATIVO:
Programa que actúa como intermediario entre el usuario y el hardware de una computadora. Su propósito es ofrecer un ambiente en el cual el usuario pueda ejecutar programas y su objetivo principal es hacer que el sistema de cómputo se pueda utilizar de manera cómoda, su objetivo secundario es que el hardware de la computadora sea usado de una forma eficiente.
ESTRUCTURA DE UN SISTEMA OPERATIVO
PROGRAMAS DE APLICACIÓN PROGRAMAS DE SISTEMA HARDWARE JUEGOS PROGRAMAS APLICACIONES PROGRAMAS PERSONALIZADOS COMPILADORES EDITORES INTERPRETE DE COMANDOS SISTEMA OPERATIVO LENGUAJE MAQUINA BIOS (MULTIPROGRAMA) HARDWARE (DISPOSITIVOS FISICOS)
1.1 FUNCIONES PRINCIPALES DE UN SISTEMA OPERATIVO:
Un Sistema Operativo realiza 2 funciones principales que se basan en dos puntos de vista: 1) del usuario y 2) del programador.
• MAQUINA EXTENDIDA:
Es el programa que oculta la complejidad del hardware que el programador utilice, es decir, presenta una visión agradable y más fácil de manejar de todos los recursos del sistema (Hardware y Software). Muestra al usuario el equivalente de una maquina extendida o maquina virtual que sea mas fácil de programar que el hardware subyacente.
• CONTROLADOR DE RECURSOS:
Es el conjunto de programas que llevan un registro de la utilización de los recursos, da el paso a solicitudes de recursos y controla su uso, además tiene que mediar entre aquellas solicitudes que se encuentran en conflicto.
1.1.1 ADMINISTRADORES DEL SISTEMA OPERATIVO
• ADMINISTRADOR DE MEMORIA:
Esta a cargo de la memoria RAM, comprueba la validez de cada solicitud de espacio de memoria, su tarea principal es proteger el espacio reservado para el sistema operativo, no puede permitir que parte alguna de ese espacio sea alterado de forma accidental o propositiva y finalmente en entornos multiusuarios lleva el control del uso de cada sección de la memoria mediante una tabla conocida como Tabla de Memoria.
• ADMINISTRADOR DE LA CPU:
Se encarga de asignar la Unidad Central de Procesamiento así como controlarla, monitorearla y manejarla para que todos los procesos puedan ser atendidos. Contiene algoritmos para la planificación de la CPU por lo que trabaja con dos niveles de planificación:
o PLANIFICADOR DE TAREAS (alto nivel): Se encarga de aceptar o rechazar las tareas que se generan durante la aplicación.
o PLANIFICADOR DE PROCESOS (bajo nivel): Una vez que las tareas son aceptadas decide cuales de ellas obtienen la CPU y durante cuanto tiempo.
• ADMINISTRADOR DE DISPOSITIVOS ENTRADA/SALIDA:
Se encarga de controlar y vigilar todos los dispositivos, así como las unidades de control, canales, buffers y buses que forman el sistema de E/S. Su tarea fundamental es definir la manera más eficiente de asignar los recursos de E/S en base a políticas de programación descritas por los diseñadores del sistema.
• ADMINISTRADOR DE ARCHIVOS:
Administra y lleva el control de todos los archivos que se encuentran en el sistema. Controla la flexibilidad de acceso que se tiene para cada uno de ellos, se encarga de la creación de cada archivo así como de estipular sus características, además contiene políticas de acceso, almacenamiento y búsqueda para cada archivo.
• ADMINSTRADOR DE RED:
Proporciona la forma más conveniente de compartir recursos (Hardware y Software) y al mismo tiempo controla el acceso a los mismos, mediante protocolos de comunicación.
1.2 EVOLUCION DE LOS SISTEMAS OPERATIVOS.
Los sistemas operativos han evolucionado a través de los años y se han apegado íntimamente a la arquitectura de las computadoras en las cuales se ejecutan. La primera computadora digital real fue diseñada por el matemático inglés Charles Babbage, la máquina analítica nunca la hizo funcionar adecuadamente por que era un diseño puramente mecánico; sin tener que decirlo la maquina analítica no tuvo un sistema operativo.
Primera Generación 1940 (Bulbos y tableros de conexiones).
Debido a la tecnología de bulbos y conexiones que existía en las computadoras de esa generación la necesidad de un Software que controlara estos recursos no existía, ya que estas conexiones eran realizadas por personas que tenían el conocimiento de la computación. Estas maquinas eran enormes y llenaban cuartos enteros con decenas de miles de tubos de vacío, pero eran mucho mas lentas que aún la computadora doméstica más barata que existe hoy en el mercado.
Toda la programación se realizaba en lenguaje maquina absoluto, a menudo alambrando tableros de conexiones para controlar las funciones básicas de la maquina. Los lenguajes de programación se desconocían (todavía no existía el lenguaje ensamblador). El modo usual de operación consistía en que el programador firmaba para tener acceso a un bloque de tiempo en la hoja de registros situada en la pared, después bajaba al cuarto de máquina, insertaba un tablero de conexiones en la computadora y pasaba las siguientes horas esperando que ninguno de los 20 000 bulbos (mas o menos) se fundiera durante la ejecución de su programa; virtualmente todos los problemas eran los cálculos numéricos directos, como la elaboración de tablas de senos y cosenos. Al inicio de la década de 1950, la rutina había mejorado un poco con la introducción de las tarjetas perforadas, ahora era posible escribir programas en tarjetas y leerlos, en vez de utilizar tableros de conexiones.
Segunda Generación 1950 (Transistores y sistemas de procesamiento por lotes).
Por primera vez hubo una separación entre los diseñadores, constructores, operadores, programadores y personal de mantenimiento dedicado a los sistemas de cómputo. Se diseña un programa típico y primitivo en una tarjeta perforada el cual tenía las instrucciones básicas para la operación de la computadora, a finales de la segunda generación y principios de la tercera generación se introducen los primeros conceptos de sistemas
operativos de procesamiento por lotes.
La introducción del transistor a mediados de la década de 1950 cambio la imagen radicalmente. Las computadoras se volvieron lo suficientemente confiables que podían fabricarse y venderse a clientes con la esperanza de que continuaran funcionando el tiempo suficiente para realizar algún trabajo útil.
Para ejecutar un trabajo (un programa o conjunto de programas), un programador primero escribía el programa en papel (en Fortran o lenguaje Ensamblador) y después lo perforaba en tarjetas, luego llevaría la pila de tarjetas al cuarto de introducción al sistema y la entregaría a unos de los operadores; que al finalizar la ejecución imprimía los resultados para su análisis.
Debido al alto costo y desperdicio de tiempo del equipo, se buscaron maneras para solucionarlo por lo que se adoptó el procesamiento por lotes; la idea implícita en este sistema era la de conjuntar un cajón lleno de trabajos en el cuarto de introducción al sistema y después leerlos en una cinta magnética mediante el uso de una computadora pequeña y poco costosa, como la IBM 1401, que era muy eficiente en la lectura de tarjetas, en el copiado de cintas y en la impresión de la salida, pero no muy eficiente en los cálculos numéricos, otras maquinas muchos más costosas como la IBM 7094, se utilizaron para realizar los cálculos reales.
Las grandes computadoras de la segunda generación se utilizaban en su mayor parte para realizar cálculos científicos y de ingeniería, como la solución de ecuaciones diferenciales parciales. Se programaban principalmente en FORTRAN y en lenguaje ENSAMBLADOR, los sistemas operativos comunes eran FMS (Fortran Monitor System) e IBSYS, sistema operativo de IBM para la computadora 7094.
Tercera Generación 1960 (Circuitos Integrados y Multiprogramación)
Se utilizan los primeros circuitos integrados y el concepto de multiprogramación, IBM diseña los primeros sistemas operativos, así como el hardware que tiene que administrar. Al inicio de la década de 1960 muchos fabricantes de computadoras tenían dos líneas de productos distinta y totalmente incompatibles. Por un lado existían las computadoras científicas de gran escala orientadas a las palabras, como la 7094 que se utilizaba para realizar cálculos numéricos de ciencias e ingeniería, por el otro lado, estaban las computadoras comerciales orientadas a los caracteres, como la 1401, que se utilizaban ampliamente para el ordenamiento de cintas e impresión por parte del banco y compañías de seguros; el desarrollo y mantenimiento de dos líneas de productos completamente diferentes era una proposición costosa para los fabricantes.
IBM intento resolver estos dos problemas introduciendo en el mercado el Sistema 360, el cual era una serie de maquinas de software compatible que iba desde computadoras del tamaño de la 1401, hasta otras mucho más potentes que la 7094. Además, el sistema 360 estaba diseñado para realizar cálculos tanto científicos como comerciales. El sistema 360 fue la primera línea importante de computadoras que utilizó circuitos integrados, lo cual ofreció una mayor ventaja de precio/rendimiento sobre las maquinas de la segunda generación que se construían a partir de transistores individuales.
La intención era que todo el software como sistema operativo tenía que funcionar en todos los modelos, correr en sistemas pequeños que a menudo sustituía a las unidades 1401 para copiar o reproducir tarjetas en cinta, y en sistemas muy grandes, que con frecuencia reemplazaban la 7094 para realizar predicciones climatológicas y otras operaciones complejas además de funcionar adecuadamente en sistemas con pocos periféricos y en sistemas con muchos periféricos y finalmente, funcionar en medios comerciales y científicos. Por todo esto no había manera de que IBM escribiera una pieza de software que cumpliera todos esos requisitos conflictivos y el resultado fue un sistema operativo enorme y extraordinariamente complejo llamado OS/360, quizá de dos a tres órdenes de magnitud mayor que FMS, constaba de millones de líneas de lenguaje ensamblador escritas por miles de programadores y contenía miles y miles de errores ocultos que necesitaban un flujo continuo de nuevas liberaciones en un intento por corregirlos. A pesar de su tamaño y problemas enormes el OS/360 y los sistemas operativos similares de la tercera generación producidos por otros fabricantes de computadoras satisfacían a muchos de sus clientes, también popularizaron varias técnicas importantes ausentes en los sistemas operativos de la segunda generación, probablemente la más importante sea la multiprogramación.
Cuarta Generación 1980 (Computadoras Personales).
Existen los primeros sistemas operativos multiprogramados de tiempo compartido. Microsoft diseña el sistema operativo DOS para las IBM PC, las 8088 de Intel y sucesores; Se realiza una división sobre la funcionalidad de las computadoras: IBM dedicada a funciones comerciales y científicas e INTEL dedicada a computadoras personales, por lo que existen dos principales empresas en el diseño de sistemas operativos: Microsoft y Multics.
Dos sistemas operativos han dominado la escena de la computación: MS-DOS, escrito por Microsoft, Inc. para la IBM PC y otras maquinas que utilizan la CPU INTEL 8088 y sucesores; y UNIX que domina en las computadoras mayores que hacen uso de la familia de CPU MOTOROLA 68000 y sucesores. Quizás sea irónico que descendiente directo de MULTICS, diseñado para proporcionar un servicio de computación gigantesco, se haya vuelto tan popular en las computadoras personales, pero muestra principalmente lo bien pensadas que fueron las ideas de MULTICS y UNIX.
Aunque la versión inicial de MS-DOS era relativamente primitiva, versiones subsiguientes han incluido más y más características de UNIX, lo que no es totalmente sorprendente dado que Microsoft es un proveedor importante de UNIX, que usa el nombre comercial de XENIX.
Un avance interesante que empezó a tomar sitio a mediados de la década de 1980 es el desarrollo de las redes de computadoras que corren en un sistema operativo centralizado y en sistemas operativos distribuidos. En un sistema operativo centralizado, los usuarios tienen conocimiento de la existencia de múltiples computadoras y pueden ingresar en maquinas remotas y reproducir archivos de una maquina a la otra, cada maquina ejecuta su sistema operativo local y tiene un usuario propio (o usuarios). Un sistema operativo distribuido es aquel que se presenta ante sus usuarios como un sistema uniprocesador tradicional, aunque en realidad este compuesto de múltiples procesadores.
1.3 TIPOS DE SISTEMAS OPERATIVOS
Se clasifican por la forma en que se introducen los datos al sistema, por su tiempo de respuesta y por tipo de procesamiento:
• Por tipo de introducción y aceptación de datos:
o Sistemas Operativos en Serie: Los mecanismos de desarrollo y ejecución de programas en estos sistemas son bastante lentos debido a la secuencia que sigue la operación como la carga del programa editor, el traductor del lenguaje, etc.
o Sistemas Operativos por Lotes o Batch (FMS e IBSYS): Se introducía una tarea mediante la agrupación de tarjetas en un paquete y se corría todo el paquete a través de un lector como un grupo (LOTE). En la actualidad no existen ni tarjetas ni cintas, pero todavía se procesa en lotes, sin la interacción del usuario. La eficiencia de estos sistemas se mide en producción, esto es la cantidad de tareas completadas en un lapso de tiempo.
o Sistemas Operativos multiprogramados o multitarea (OS/360): Son Sistemas Operativos que alternan con diferentes procesos a la vez, debido a que se tiene el concepto de memoria particionada, por lo cual son capaces de aceptar mas de un trabajo a la vez.
• Los Sistemas Operativos multiprogramados se subdividen por sus tiempos de respuesta:
o Interactivos (DOS, UNIX): También conocidos como sistemas de Tiempo Compartido, se crearon para satisfacer las demandas de los usuarios que necesitaban un tiempo de retorno rápido al eliminar los errores de sus programas. Permite a cada usuario interactuar directamente con el sistema de computo mediante introducción de comandos a partir de una terminal tipo maquina de escribir, proporciona una retroalimentación inmediata al usuario y el tiempo de respuesta se puede medir en minutos o segundos, según el numero de usuarios activos.
o De tiempo real (trafico aéreo, vuelos espaciales, aeronaves de alta velocidad, equipo medico): Son los mas rápidos, se utilizan en entornos donde el tiempo es crítico, debido a que los datos se procesan con rapidez ya que la salida afecta a decisiones inmediatas. El sistema debe ser 100% sensible el 100% de las veces por lo que el tiempo de respuesta se mide en fracciones de segundos. o Híbridos: Son una combinación de sistemas por lotes e interactivos, parecen interactivos porque los usuarios pueden tener acceso al sistema mediante terminales y obtener respuesta rápida; pero cuando la carga interactiva es ligera este sistema acepta y opera programas por lotes en un segundo plano. Aprovecha el tiempo libre entre demandas de procesamiento para ejecutar programas que
no necesitan ayuda significativa del operador, muchos de los sistemas de cómputo grandes son híbridos.
• Por el tipo de usuario:
o Monousuario: Dedica todos los recursos del sistema a un solo usuario, sus operaciones en red son mínimas o casi nulas debido a que en estos Sistemas Operativos se implementaron en las primeras computadoras personales.
o Multiusuario: Aceptan la interacción con varios usuarios a través de terminales, manejando el concepto de red.
• Los sistemas multiusuarios se dividen en dos tipos de acuerdo al procesamiento que llevan a cabo.
o Centralizado: Son aquellos que ejecutan todos los procesos en una sola computadora, y consideran como terminales tontas a todas aquellas computadoras conectadas a la red (UNIX).
o Distribuidos: Son aquellos que ejecutan las tareas en diferentes computadoras, cada computadora contiene su propio Hardware y Software de ejecución. Permiten que los programas corran en varios procesadores al mismo tiempo, con lo cual se requieren algoritmos de planificación del procesador más complejos a fin de optimizar la cantidad de paralelismo lograda.
1.4 ESTRUCTURAS DE LOS SISTEMAS OPERATIVOS.
ESTRUCTURA MONOLITICA
Este tipo de organización es en mucho la más común, la estructura consiste en que no existe estructura alguna. El sistema operativo se escribe como una colección de procedimientos, cada uno de los cuales puede llamar a los demás cada vez que así lo requiera; cada procedimiento del sistema tiene una interfaz bien definida en términos de parámetros y resultados y cada uno de ellos es libre de llamar a cualquier otro si este proporciona cierto calculo útil para el primero.
Para construir el programa objeto real del sistema operativo, se compilan en forma individual los procedimientos o los archivos que contienen los procedimientos y después se enlazan en un solo archivo objeto con el ligador. En términos de ocultamiento de la información es prácticamente nula, cada procedimiento es visible a los demás.
Los servicios (llamadas al sistema) que proporciona el sistema operativo se solicitan colocando los parámetros en lugares bien definidos, como en los registros o en la pila, para después ejecutar una instrucción especial de trampa conocida como llamada al núcleo o llamada al supervisor, esta instrucción cambia la maquina del modo usuario al modo núcleo y transfiere el control al sistema operativo.