Unidad Nº1 – Introducción a los Sistemas Operativos PDF

Document Details

WarmerRing

Uploaded by WarmerRing

Universidad Tecnológica Nacional, Facultad Regional Córdoba

Rodrigo Carrión

Tags

sistemas operativos computacion tecnologia de la informacion

Summary

Este documento presenta una introducción a los sistemas operativos, incluyendo sus funciones, objetivos, y el papel de los sistemas operativos como administradores de recursos. Se explica la interfaz usuario-computadora y las diversas funciones que un sistema operativo desempeña.

Full Transcript

# UTN FRC Resumen SOP - Rodrigo Carrión ## Unidad Nº1 – Introducción a los Sistemas Operativos **Sistema operativo (SO):** es un programa que controla la ejecución de los programas de aplicación y que actúa como interfaz entre las aplicaciones del usuario y el hardware de una computadora. ### Fun...

# UTN FRC Resumen SOP - Rodrigo Carrión ## Unidad Nº1 – Introducción a los Sistemas Operativos **Sistema operativo (SO):** es un programa que controla la ejecución de los programas de aplicación y que actúa como interfaz entre las aplicaciones del usuario y el hardware de una computadora. ### Funciones y objetivos de los sistemas operativos Un SO tiene tres objetivos: - **Comodidad:** hacer que una computadora sea más cómoda y fácil de utilizar. - **Eficiencia:** permite que los recursos de un sistema informático se aprovechen eficientemente. - **Capacidad de evolución:** deben construirse de modo que permitan el desarrollo efectivo, la verificación y la introducción de nuevas funciones al sistema, y a la vez, no interferir en los servicios que brinda. ### El sistema operativo como interfaz usuario/computadora Los usuarios finales utilizan programas de aplicación, y no tienen que preocuparse de la arquitectura de la computadora. Las aplicaciones se construyen con un lenguaje de programación y son desarrolladas por programadores. Algunos programas se denominan **utilidades**, que implementan funciones muy utilizadas que ayudan a la creación de programas, la gestión de archivos y el control de dispositivos de E/S. El SO oculta al programador los detalles de hardware y le proporciona una interfaz cómoda para utilizar el sistema. Actúa como mediador, facilitándole al programador y a los programas de aplicación el acceso y uso de todas esas características y servicios. ### Un SO ofrece servicios en las siguientes áreas: - **Creación de programas:** el SO ofrece múltiples funcionalidades y servicios para ayudar al programador en la creación de programas. Estos servicios están en forma de programas de utilidades. - **Ejecución de programas:** el SO administra todas las tareas necesarias para la ejecución de un programa. - **Acceso a los dispositivos de E/S:** el SO brinda una interfaz uniforme que oculta los detalles de funcionamiento de los dispositivos de E/S, de modo que el programador pueda acceder a los dispositivos utilizando lecturas y escrituras simples. - **Acceso controlado a los archivos:** el SO proporciona mecanismos de protección para controlar el acceso a los archivos. - **Acceso al sistema:** en un sistema compartido o público, el SO controla el acceso al sistema como un todo y a los recursos específicos del sistema. - **Detección y respuesta a errores:** el SO debe dar respuestas que elimine las condiciones de errores que se produzcan con el menor impacto posible sobre las aplicaciones que están ejecución. - **Contabilidad:** el SO debe recoger estadísticas de los recursos y supervisar parámetros de rendimiento. Es muy útil para anticiparse a la necesidad de mejoras futuras y para ajustar el sistema y así mejorar su rendimiento. ### El sistema operativo como administrador de recursos Una computadora es un conjunto de recursos para el movimiento, almacenamiento y proceso de datos y para el control de estas funciones. El SO es el responsable de la gestión de estos recursos. El SO es nada más que un conjunto de programas, que como otros programas, proporciona instrucciones al procesador. El SO dirige al procesador en el empleo de otros recursos del sistema y en el control del tiempo de la ejecución de otros programas. Pero para que el procesador pueda hacer estas cosas, debe cesar la ejecución del programa del SO y ejecutar otros programas. El SO cede el control del procesador, para realizar algún trabajo y luego lo recupera durante el tiempo suficiente para preparar al procesador para llevar a cabo la siguiente parte del trabajo. Una parte del SO está en la memoria principal. En esta parte está **el núcleo** (kernel), que incluye las funciones más utilizadas frecuentemente del SO. El resto de la memoria principal contiene datos y otros programas de usuario. La asignación de la memoria principal es controlada conjuntamente por el SO y por el hardware de gestión de memoria del procesador. El SO decide cuándo un programa en ejecución puede utilizar un dispositivo de E/S y controla el acceso y la utilización de los archivos. El procesador es un recurso y es el SO el que debe determinar cuánto tiempo del procesador debe dedicarse a la ejecución de un programa de usuario en particular. ### Facilidad de evolución de un sistema operativo Un SO evoluciona en el tiempo por las siguientes razones: - Actualizaciones de hardware y nuevos tipos de hardware. - Nuevos servicios, como respuesta a las demandas de los usuarios o necesidades de administradores de sistemas. - Correcciones de fallos que se descubren con el tiempo. La necesidad de hacer cambios en forma regular, introduce ciertos requisitos de diseño. El sistema debe tener una construcción modular, con interfaces bien definidas entre los módulos y debe estar bien documentado. ### Evolución histórica de los sistemas operativos #### Procesos en serie - Sistemas sencillos de proceso por lotes. - Sistemas por lotes con multiprogramación. - Sistemas de tiempo compartido. ##### Proceso en serie En las primeras computadoras los programadores interactuaban directamente con el hardware de los mismos, no había sistema operativo. Se operaba desde una consola consistente en unos indicadores luminosos, unos conmutadores, algún tipo de dispositivo de entrada y alguna impresora. Los programas en código máquina se cargaban con un dispositivo de entrada (lector de tarjetas). Se ejecutaban hasta su culminación donde la impresora mostraba el resultado, si se producía un error se mostraba con los indicadores luminosos. Presentaban dos problemas principales: - **Planificación:** la mayoría de las instalaciones empleaban un formulario de reserva de tiempo de máquina. Si un usuario reservaba una hora y terminaba a los 45 minutos se desperdiciaba tiempo del computador; por el contrario, si el usuario tenía dificultades, no terminaba en el tiempo asignado y tenía que parar sin resolver el problema. - **Tiempo de preparación:** si se producía un error, el usuario tenía que volver a realizar el proceso de preparación perdiendo tiempo considerable. El proceso de preparación consistía en cargar compilador y programa en alto nivel en memoria, salvar el programa objeto (compilado) y luego cargarlo y montarlo junto con las funciones comunes. Se llamaba proceso en serie porque los usuarios accedían al computador en serie. ##### Sistemas sencillos de proceso por lotes El primer sistema operativo por lotes (y el primer sistema operativo de todos) se desarrolló a mediados de los 50 por General Motors. La idea central es el uso de un elemento de software conocido como **el monitor**. Aquí, los usuarios no tenían acceso directo a la máquina. En su lugar, el usuario debía entregar los trabajos en tarjetas o en cintas al operador de la computadora, quien agrupaba secuencialmente los trabajos por lotes y ubicaba los lotes enteros en un dispositivo de entrada para su empleo por parte del monitor. Cada programa se construía de modo que al terminar su ejecución, el monitor cargaba automáticamente el siguiente programa. El monitor es quien gestiona el problema de la planificación. Se pone en cola un lote de trabajos y éstos son ejecutados tan rápidamente como sea posible, evitando tiempos de inactividad. El monitor también organiza mejor el tiempo de organización del trabajo utilizando un lenguaje de control de trabajos, que es un lenguaje para dar instrucciones al monitor. Este tipo de sistemas necesitaban nuevas características como: - Protección de memoria: mientras se ejecuta un programa de usuario no debe modificar la zona de memoria donde está el monitor. - Temporizador: se utiliza para evitar que un solo trabajo monopolice el sistema. - Instrucciones privilegiadas: algunas instrucciones máquina solo las puede ejecutar el monitor. - Interrupciones: le flexibilidad al sistema operativo para ceder y retomar el control de los programas de usuario. ##### Sistemas por lotes con multiprogramación Aún con el secuenciamiento automático de trabajos ofrecido por un sistema operativo sencillo por lotes, el procesador está desocupado con frecuencia, ya que los dispositivos de E/S son lentos comparados al microprocesador. Consiste en tener varios programas de usuario en la memoria, y cuando el programa que está en ejecución va esperar por E/S, el procesador cambia a otro trabajo que no esté esperando por E/S. Este proceso es conocido como **multiprogramación o multitarea**. Estos sistemas mantienen varios trabajos listos para ejecutarse en memoria principal, por lo que requieren alguna forma de gestión de memoria, además debe decidir cuál ejecutar, haciendo uso de un algoritmo de planificación. ##### Sistemas de tiempo compartido La técnica de tiempo compartido consiste en que el tiempo del procesador se comparte entre diversos usuarios. Múltiples usuarios acceden simultáneamente al sistema por medio de terminales, donde el sistema operativo intercala la ejecución de cada programa de usuario en ráfagas cortas o cuantos (quantum) de computación. El tiempo de respuesta de un sistema correctamente diseñad debería ser comparable al de un computador dedicado. ### Características de los sistemas operativos modernos - Arquitectura micronúcleo. - Multihilos. - Multiproceso simétrico. - Sistemas operativos distribuidos. - Diseño orientado a objetos. #### Arquitectura micronúcleo La arquitectura micronúcleo asigna solamente unas pocas funciones esenciales al núcleo. Otros servicios del sistema operativo los proporcionan procesos que se ejecutan en modo usuario y que el micronúcleo trata como cualquier otra aplicación. Este enfoque simplifica la implementación, proporciona flexibilidad, y se adapta bien para entornos distribuidos. #### Multihilos Los multihilos son una técnica por lo cual un proceso, ejecutando una aplicación, se divide en hilos que pueden ejecutarse concurrentemente. - Hilo: unidad de trabajo que se puede expedir para su ejecución. Conjunto de instrucciones que pertenecen a un proceso. Se les suele llamar procesos ligeros o contextos de ejecución. Se ejecuta secuencialmente y es interrumpible para que el procesador puede ceder el turno a otro hilo. - Proceso: un conjunto de uno o más hilos y los recursos del sistema asociados (código, datos, archivos abiertos y dispositivos). Al dividir una aplicación en múltiples hilos, el programador tiene un gran control sobre la modularidad de la aplicación y la coordinación de los sucesos relativos al sistema. Los multihilos son muy útiles para las aplicaciones que ejecutan un número de tareas esencialmente independientes que no necesitan ser consecutivas. #### Multiproceso simétrico Es un término que se refiere a una arquitectura hardware y al comportamiento de la misma. Un multiprocesador simétrico puede definirse como un sistema de computadores de un solo usuario con las siguientes características: - Existencia de múltiples procesadores. - Estos procesadores comparten la misma memoria principal y dispositivos de E/S. - Todos los procesadores pueden ejecutar las mismas funciones (simétrico). **Ventajas:** - Rendimiento: se puede ejecutar más de un proceso simultáneamente, cada uno en un procesador diferente. - Disponibilidad: el fallo de un procesador no detiene la máquina, el sistema continúa funcionando con un rendimiento reducido. - Crecimiento incremental: se incrementa el rendimiento del sistema agregando un procesador adicional. - Escalabilidad: variedad de productos con diferentes precios y características de rendimiento basados en el número de procesadores del sistema. La existencia de múltiples microprocesadores es transparente al usuario. #### Sistema operativo distribuido Un sistema operativo distribuido proporciona la ilusión de un único espacio de memoria principal y un único espacio de memoria secundaria, además de otros mecanismos de acceso unificados. #### Diseño orientado a objetos Posibilita añadir extensiones modulares a un pequeño núcleo. Permite a los programadores personalizar el SO sin romper la integridad del mismo, y también facilita el desarrollo de herramientas distribuidas y sistemas operativos distribuidos abiertos. ### Microsoft Windows #### Reseña histórica - MS DOS 1.0 (1981). Sistema operativo de Microsoft para la primera computadora personal de IBM. Se ejecutaba en 8K de memoria utilizando el microprocesador Intel 8086. - MS DOS 2.0 (1983). Para el PC XT de IBM. Añadió soporte para discos duros y ofrecía directorios jerárquicos (directorios con subdirectorios y archivos). Se añadieron también características de UNIX como el redireccionamiento de E/S (capacidad de cambiar la identidad de la entrada o salida de una aplicación) y la impresión subordinada (background). La memoria creció hasta 24 Kb. - MS DOS 3.0 (1984). Para el PC AT de IBM con micro Intel 80286 que añadió direccionamiento extendido y recursos de protección de memoria, pero DOS no los utilizó. Uso el 80286 como un "8086 rápido" para mantener compatibilidad. Los requisitos de memoria crecieron hasta 36 KB. 1. MS DOS 3.1 (1984). Añade soporte para redes de PC. 2. MS DOS 3.3 (1987). Soporte para PS/2. El sistema pasó a utilizar 46 KB. - Windows 3.0 (1990). El DOS estaba siendo utilizado en un entorno que iba más allá de sus capacidades. Microsoft comienza el desarrollo de una Interfaz Gráfica de Usuario (GUI) que podría ejecutarse entre el usuario y el DOS. En 1990, Microsoft presenta una versión de la GUI, el Windows 3.0, la cual seguía maniatada por la necesidad de ejecutarse sobre DOS. - Windows NT (1993). Luego de una tentativa fallida por Microsoft de desarrollar junto a IBM un SO de nueva generación que aprovechara las características de los actuales microprocesadores, IBM desarrolla OS/2 y Microsoft lanza Windows NT. Ofrece multitarea en entornos monousuarios y multiusuarios. - Windows NT 4.0. Después de varias versiones NT 3.X, Microsoft desarrolla la versión 4.0, que proporciona la misma interfaz de Windows 98. El mayor cambio consiste en que varios de los componentes gráficos que se ejecutaban tanto en modo usuario como formando parte del subsistema Win 32 en 3.X, han sido trasladados al ejecutor de Windows NT, que ejecuta en modo núcleo, lo que implica una aceleración en tales ejecuciones. El inconveniente es que servicios del sistema tienen acceso a funciones graficas de bajo nivel, pudiendo impactar con la fiabilidad del SO. - Windows 2000 (2000). Nuevamente el ejecutor y la arquitectura micronúcleo son fundamentalmente los mismos que en NT 4.0. Se han añadido nuevas características, como el soporte al procesamiento distribuido. El directorio activo es un servicio del directorio distribuido capaz de traducir los nombres de objetos arbitrarios a cualquier tipo de información acerca de los mismos. Una consideración final sobre Windows 2000 es la distribución entre Windows 2000 Server y Professional, en donde la versión Server incluye servicios para su uso como servidor de red. - Windows XP (2001). - Windows Server 2003 (2003). - Windows Vista (2007). - Windows Server 2008 (2008). - Windows 7 (2009). - Windows 8 (2011). 1. Windows 8.1 (2012). - Windows Server 2012 (2012). #### Arquitectura Como en casi todos los sistemas operativos, se separa el software orientado a las aplicaciones del software del sistema operativo. El software del modo núcleo tiene acceso a los datos del sistema y al hardware. El software restante, que se encuentra en modo usuario, tiene acceso limitado a los datos del sistema. #### Organización del sistema operativo Windows no tiene una arquitectura micronúcleo pura, sino una modificación de la misma. Windows es altamente modular. Cualquier modulo puede ser eliminado, actualizado o reemplazado sin volver a escribir el sistema completo o sus Interfaces de Programas de Aplicación (API). Sin embargo, a diferencia de in sistema micronúcleo, Windows está configurado para que la mayoría de las funciones externas al micronúcleo se ejecuten en modo núcleo, todo por una razón de rendimiento. Uno de los objetivos de diseño de Windows es la compatibilidad, que sea capaz de ejecutar sobre distintas plataformas de hardware, por eso utiliza la siguiente estructura por niveles: - Capa de abstracción del hardware (HAL): aísla el sistema operativo de las diferencias de hardware específicas de cada plataforma. El SO da órdenes que pasan por la HAL y ésta las "transforma" para que el hardware específico las entienda; y al revés, el hardware da órdenes a al SO a través de la HAL para que el SO las entienda. Así no hay dependencia entre el SO y el hardware. - Núcleo (kernel): formado por los componentes más usados y fundamentales del sistema operativo (planificación de hilos, cambios de contexto, gestión de excepciones e interrupciones y sincronización de microprocesadores). - Controladores de dispositivos: incluye los drivers de dispositivos que traducen las llamadas a funciones de E/S del usuario a peticiones a dispositivos hardware de E/S específicos. - Sistema ejecutivo: Contiene los servicios básicos del sistema operativo, como la gestión de memoria, la gestión de procesos e hilos, seguridad, E/S y comunicación entre procesos. ##### Módulos del Sistema ejecutivo El Sistema Ejecutivo de Windows incluye módulos para las funciones específicas del sistema y proporciona una API para el software en modo usuario. - Administrador de E/S: distribuye los controladores de dispositivos (drivers) entre los distintos procesos. - Administrador de objetos: crea, gestiona y elimina los objetos del Ejecutor de Windows. - Monitor de seguridad: impone la validación de acceso y la generación de reglas de auditoría para los objetos protegidos. - Administrador de procesos/hilos: crea y elimina objetos y sigue la pista de los objetos proceso e hilo. - Servicios de llamadas a procedimiento local (LPC): impone las relaciones cliente/servidor entre las aplicaciones y los subsistemas del Ejecutor dentro de un mismo sistema, de forma similar al servicio de llamadas a procedimiento remoto (RPC) utilizadas en el procesamiento distribuido. - Administrador de memoria virtual: traduce direcciones virtuales en el espacio de direcciones del proceso a páginas físicas en la memoria de la computadora. - Administrador de caché: mejora el rendimiento de las E/S sobre archivos. - Módulos para gráficos/ventanas: crea las interfaces de pantalla (ventanas) y gestiona los dispositivos gráficos. ##### Procesos de usuario - Procesos de soporte de sistemas especiales: proceso de inicio de sesión y la gestión de sesión. - Procesos de servicio: otros servicios como el registro de sucesos. - Subsistemas de entorno: ofrecen servicios nativos de Windows a las aplicaciones de usuario y de este modo proporcionan un entorno de SO. Cada subsistema incluye DLLs (bibliotecas de enlace dinámico) que convierten las llamadas de las aplicaciones de usuario en llamadas que interprete Windows. - Aplicaciones de usuario: programas que se ejecutan sobre el SO. Pueden ser Win32, Posix, OS/2, MS-DOS, etc. ##### Modelo cliente/servidor Cada subsistema de entorno y subsistema del servicio ejecutivo se implementan como uno o más procesos. Cada proceso espera la solicitud de un cliente para uno de sus servicios. Un cliente (un programa de aplicación u otro módulo del SO) solicita un servicio enviando un mensaje. El mensaje es encaminado a través del sistema ejecutivo hasta el servidor apropiado. El servidor lleva a cabo la operación solicitada y devuelve el resultado o la información de estado por medio de otro mensaje, que se encamina de vuelta al cliente mediante el servicio ejecutivo. **Ventajas:** - Simplifica el sistema ejecutivo. Es posible construir diversos API. Se pueden añadir fácilmente nuevas interfaces. - Mejora la fiabilidad. Cada módulo de los servicios ejecutivos se ejecuta como un proceso separado, con su propia partición de memoria, protegido de otros módulos. Un cliente puede fallar sin corromper el resto del SO. - Proporciona una base adecuada para la computación distribuida. ### UNIX #### Historia - Se desarrolló en los Laboratorios Bell operando en una PDP-7 en 1970. - Se reescribió en lenguaje de programación C, demostrando las ventajas de usar un lenguaje de alto nivel. #### Descripción El hardware básico está rodeado por el software del SO (el kernel). UNIX cuenta con varios servicios e interfaces de usuario que se consideran parte del sistema (interprete de órdenes, conocido como shell, o un software de interfaz gráfica). El nivel exterior está formado por las aplicaciones de los usuarios y la interfaz de usuario del compilador C. Los programas de usuario pueden invocar servicios del SO directamente o a través de programas de biblioteca (librerías). ##### Arquitectura general de UNIX #### Linux ##### Historia - Linux aparece como variante de UNIX para la arquitectura del IBM PC. - La versión inicial fue escrita por Linus Torvals. - Torvals distribuyó una primera versión de Linux en Internet en 1991. Desde entonces un gran número de personas han contribuido al desarrollo de Linux. - Linux es libre y está disponible su código fuente. - Linux es altamente modular y fácilmente configurable. Esto hace que sea fácil de obtener el rendimiento óptimo para múltiples plataformas de hardware. ##### Estructura modular Linux está organizado como un conjunto de bloques independientes denominados módulos cargables, que tienen dos características importantes: - Enlace dinámico: un módulo del núcleo puede cargarse y enlazarse dentro del núcleo. También, un módulo puede ser desenlazado y borrado de la memoria en cualquier momento. Esto 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 insmod y rmmod. - Módulos apilables: los módulos se organizan jerárquicamente, pudiendo definir dependencias entre módulos. Esto tiene dos ventajas: - El código común de un conjunto de módulos similares puede ser trasladado a un único módulo, reduciendo la duplicación. - El núcleo puede asegurar que los módulos necesarios estén presentes, despreocupándose de descargar un módulo del que dependen otros módulos en ejecución y cargando cualquier módulo adicional necesario cuando se cargue un módulo nuevo. Los principales componentes del núcleo son los siguientes: - Señales. El núcleo utiliza las señales para llamar a un proceso. Por ejemplo, las señales se utilizan para notificar ciertos fallos a un proceso como, por ejemplo, la división por cero. - Llamadas al sistema. Forma en la cual un proceso requiere un servicio de núcleo específico. - Procesos y planificador. Crea, gestiona y planifica procesos. - Memoria virtual. Asigna y gestiona la memoria virtual para los procesos. - Sistemas de ficheros. Proporciona un espacio de nombres global y jerárquico para los fiche- ros, directorios y otros objetos relacionados con los ficheros. Además, proporciona las funciones del sistema de ficheros. - Protocolos de red. Da soporte a la interfaz Socket para los usuarios, utilizando la pila de protocolos TCP/IP. - Controladores de dispositivo tipo carácter. Gestiona los dispositivos que requiere el núcleo para enviar o recibir datos un byte cada vez, como los terminales, los módems y las impresoras. - Controladores de dispositivo tipo bloque. Gestiona dispositivos que leen y escriben datos en bloques, tal como varias formas de memoria secundaria (discos magnéticos, CDROM, etc.). - Controladores de dispositivo de red. Gestiona las tarjetas de interfaz de red y los puertos de comunicación que permiten las conexiones a la red, tal como los puentes y los encaminadores. - Traps y fallos. Gestiona los traps y fallos generados por la CPU, como los fallos de memoria. - Memoria física. Gestiona el conjunto de marcos de páginas de memoria real y asigna las páginas de memoria virtual. - Interrupciones. Gestiona las interrupciones de los dispositivos periféricos.

Use Quizgecko on...
Browser
Browser