Download sistemas unix - hungria berbesi. Sistemas Operativos
Document related concepts
Transcript
SISTEMAS UNIX Hungria Berbesi Sistemas Operativos. UNIX-LINUX Primera parte. UNEFA UNIX • Unix se desarrolló inicialmente en los Laboratorios Bell y llegó a ser operativo en un computador PD-7 en 1970. • Hay dos sistemas operativos que influyeron en el UNIX: el Multics, y el CTSS. • Primer hito: Cuando llevaron UNIX de PDP-7 a PDP-11 fue la primera señal de que podría se r un S.O. para todos los computadores. • Segundo hito: Reescritura de todo el S.O. Unix en Lenguaje C. • Hoy en día casi todas las implementaciones del UNIX están en lenguaje C. Historia • Las primeras versiones fueron muy populares en los laboratorios Bell. • Se otorgaron licencias de UNIX a instituciones comerciales y universidades. • La primera versión ampliamente difundida fuera de los laboratorios Bell fue la versión 6, en 1976. • La versión 7, lanzada en 1978, es el antepasado de la mayoría de los sistemas UNIX modernos. • UNIX BSD fue desarrollado en la Universidad de Berkeley en California. • Hacia 1982, los laboratorios Bell habían combinado distintas versiones de UNIX de AT&T en un único sistema comercializado como Unix SIII. Descripción El hardware básico esta rodeado por el software del sistema operativo. El S.O. se llama núcleo del sistema, o kernel. Para realzar su aislamiento de las aplicaciones y del usuario. Sin embargo UNIX esta equipado con varios servicios e interfaces de usuario que se consideran parte del sistema. EL shell. EL nivel exterior esta formado por aplicaciones de usuario. Núcleo del Unix clásico LA interfaz de llamadas al sistema es la frontera con el usuario y le permite al software de alto nivel el acceso a las funciones específicas del núcleo. En el otro extremo el S.O. tiene rutinas primitivas que interactúan directamente con el hardware. El medio esta formado fundamentalmente por dos partes, una relativa al control de proceso y otra a la gestión de archivos y la E/S • El subsistema de control de procesos es el responsable de la gestión de memoria, la planificación y expedición de los procesos y la sincronización y comunicación entre ellos. • EL sistema de archivos intercambia datos entre la memoria y los dispositivos externos, tanto en flujo de caracteres como en bloques. Sistemas unix modernos • Conforme UNIX evoluciona, el número de implementaciones diferentes prolifera y cada una ofrece características útiles. Entorno de memoria virutal Cambio de ejecución Funcionalidades comunes Interfaz vnode/vfs Cambio de dispositivos de bloques Entorno del planificador series Algunos ejemplos de sistemas UNIX modernos • SVR4. Desarrollado conjuntamente por AT&T y Sun Microsystem. Incluye soporte para procesos en tiempo real, clases de planificación de procesos, estructura de datos asignadas dinámicamente, administración de memoria virtual, sistema de archivos virtual y un núcleo preferente. SVR4 se usa en maquinas con procesadores de 32 bits hasta supercomputadores y es uno de los S.O. mas importantes jamás desarrollados. Solarix 2.x, 4BSD • Solaris es la implementación de UNIX mas ampliamente utilizada y de mayor éxito comercial. Es una distribución de UNIX basada en SVR4 de Sun. 4BSD se usa ampliamente en instalaciones académicas y ha servido de base a varios productos comerciales. Linux • Linux aparece como una variante de UNIX para la arquitectura IBM PC. La versón inicial fue escrita por Linus Torvalds, un estudiante Finlandés de informática. Torvalds distribuyó una primera versión de Linux en internet en el año 1991. Un gran numero de personas ha contribuido con el desarrollo de Linux, por medio de internet. Debido a que Linux es libre y su código fuente esta disponible, muy pronto se convirtió en una versión muy difundida. • La clave del éxito de Linux ha sido su carácter de producto disponible libremente. Esta bajo el apoyo de la Free Software Foundation. FSF. EL proyecto GNU de FSF proporciona herramientas para los diseñadores de software. Torvalds utilizó las herramientas de GNU en el desarrollo del núcleo de LINUX. Características de LINUX • Linux es un producto técnico impresionante. Linux es altamente modular y fácilmente configurable. Esto hace que sea fácil obtener el rendimiento óptimo para múltiples plataformas de hardware. • Estructura modular. La mayoría de los núcleos UNIX son monolíticos. Hay que recordar que un núcleo monolítico es aquel que incluye prácticamente toda la funcionalidad del sistema operativo en un gran bloque de código que se ejecuta como un solo procesos con un único espacio de direcciones. Linux • Para solucionar el problema de núcleo monolítico, Linux esta organizado como un conjunto de bloques independientes denominados módulos cargables, que tienen dos características: • Enlace dinámico: Un módulo del núcleo puede cargarse y enlazarse dentro del núcleo, mientras el núcleo permanece en memoria y en ejecución. Un módulo también puede ser también desenlazado y borrado de memoria en cualquier momento. • Módulos apilables: Los módulos se organizan en una jerarquía. Los módulos individuales actúan como biblioteca cuando son referenciados por módulos clientes de mayor nivel en la jerarquía y como clientes cuando los referencia módulos de menor nivel. • EL enlace dinámico facilita la tarea de configuración y protege la memoria del núcleo. En linux, un programa de usuario o un usuario puede cargar y descargar explícitamente módulos del núcleo usando las órdenes ismod y rmmod. Ventajas de la modularidad • El código común de un conjunto de módulos similares puede ser trasladado a un único módulo, reduciendo su duplicación. • EL núcleo puede asegurar que los módulos necesarios estén presentes, absteniéndose de descargar un módulo del que dependen otros módulos de ejecución. Estructuras utilizadas para administrar módulos. Cada módulo esta definido por dos tablas, la tabla de módulos y la tabla de símbolos. Gestión de procesos en Unix SVR4 • Son necesarios dos modos: modos de usuario y modo de núcleo. UNIX emplea dos categorías de procesos: procesos del sistema y procesos de usuario. • Los procesos del sistema ejecutan código del sistema en modo de núcleo para realizar funciones administrativas y otras labores, tales como la reserva de memoria o el intercambio de procesos. • Los procesos de usuario operan en modo de usuario para ejecutar programas y utilidades de los usuarios y operan en modo núcleo para ejecutar instrucciones del núcleo. Un proceso de usuario pasa a modo de núcleo cuando realiza una llamada al sistema, cuando se produce una interrupción o se genera una excepción. Estados de un proceso Ejecución en modo usuario Ejecución en modo núcleo Expulsado Sin memoria suficiente Listo para ejecutar y en memoria Dormido en memoria Dormido y descargado El sistema Operativo UNIX SVR4 reconoce un total de nueve estados del proceso • Estados de un proceso en UNIX SVR4 • Estados de un proceso en Unix Ejecución en modo usuario Ejecutando en modo de usuario Ejecución en modo núcleo Ejecutando en modo de núcleo Listo para ejecutar y en memoria Listo para ejecutar tan pronto como el núcleo lo planifique Dormido y en memoria Incapaz de ejecutar hasta que se produzca un suceso; el proceso está en memoria principal Listo para ejecutar y descargado El proceso está listo para ejecutar, pero se debe cargar en memoria principal antes de que se planifique su ejecución Dormido y descargado El proceso esta esperando un suceso y ha sido expulsado al dd Expulsado Retorna al modo usuario, pero el núcleo lo expulsa Creado El proceso esta recién creado y no esta listo para ejecutar Zombie El proceso ya no existe pero deja un registro para que lo recoja el proceso padre • Unix emplea dos estado de ejecución, que indican si el proceso está ejecutándose en modo de usuario o en modo de núcleo. • Se hace una distinción entre dos estados: Listo para ejecutar, y en Memoria frente al estado de expulsado. • La expulsión sólo puede producirse cuando va a moverse un proceso del modo núcleo al modo usuario. Mientras un proceso este ejecutándose en modo núcleo, no puede ser expulsado. Esto hace que UNIX no sea adecuado para el procesamiento en tiempo real. Descripción de procesos • Un proceso UNIX es un conjunto mas bien complejo de estructuras de datos que proporcionan al sistema operativo toda la información necesaria para administrarlo y expedirlo. • El contexto del usuario contiene los elementos básicos de un programa de usuario y puede generarse directamente a partir un archivo código compilado. El contexto del sistema contiene el resto de la información que el sistema operativo necesita para administrar el proceso. Imagen de un proceso en UNIX Contexto del usuario Código del proceso Instrucciones de máquina ejecutables del programa Datos del proceso Datos del proceso accesibles para el programa Pila del usuario Argumentos, variables locales y punteros Memoria compartida Utilizada para la comunicación con los procesos. Contexto de los registros Contador del programa Dirección de la próxima instrucción a ejecutar. Registro de estado del procesador Contiene el estado del hardware en el momento de expulsión Puntero de pila Señala la cima de la pila del núcleo o de la pila de usuario Registros de propósito general Dependientes del hardware Contexto del sistema Entrada a la tabla de procesos Define el estado de un proceso Área U La información de control del proceso, a la que se necesita acceder sólo en el contexto del proceso Tabla de regiones del proceso Una traducción de direcciones virtuales a físicas. Pila del Núcleo Marcos de pila de los procedimientos del núcleo Control de procesos • La creación de procesos en UNIX se hace por medio de la llamada fork() al núcleo del sistema. Cuando un proceso emite una petición fork, el sistema realiza las siguientes operaciones: • 1. Asigna una entrada en la tabla de procesos para el nuevo proceso. • 2. Asigna un ID único de proceso al proceso hijo • 3. Hace una copia de la imagen del proceso padre, a excepción de la memoria compartida. • 4. Incrementa los contadores de los archivos que son propiedad del padre. • 5. Coloca el proceso hijo en estado listo para ejecutar. • 6. Devuelve al proceso padre el número del ID del hijo y devuelve el valor 0 al proceso hijo. • Todo este trabajo se realiza en modo núcleo en el proceso padre.