SO Actividad No 1 - Competencia No 1 - 20%.docx
Document Details
Uploaded by JoyfulMint
2024
Tags
Full Transcript
Actividad No 1 - 20% Juan Pablo Vargas Zapata Daniel Orrego Blandon JOHN ECHAVARRIA E. Universidad Fundación Catolica del Norte Facultad de Inginieria Programa Sistemas Operativos Inginieria Informatica 2024 Introduccion El sistema operativo es el encargado de administrar los procesos y fu...
Actividad No 1 - 20% Juan Pablo Vargas Zapata Daniel Orrego Blandon JOHN ECHAVARRIA E. Universidad Fundación Catolica del Norte Facultad de Inginieria Programa Sistemas Operativos Inginieria Informatica 2024 Introduccion El sistema operativo es el encargado de administrar los procesos y funciones de cada acción del usuario, proporcionando a los programas un modelo de computadora más simple y eficiente. Es la base sobre la cual se instalan los programas de streaming, edición, navegación, entre otros. Las computadoras modernas constan de monitor, procesador, memoria RAM, discos duros, impresora, teclado, ratón y interfaces de red. El sistema operativo gestiona la memoria, los procesos de entrada y salida, y los archivos, actuando como intermediario entre el usuario y el hardware. Se encarga de administrar la memoria física necesaria para la ejecución, escritura y lectura de los programas que se instalan y funcionan en el equipo. Una herramienta básica para proteger la información almacenada en el sistema operativo es la autenticación de usuarios, un aspecto fundamental para la seguridad. Además, el sistema operativo implementa estándares y mecanismos de interacción de la interfaz con los usuarios. Es el software más importante para el funcionamiento adecuado de las tareas básicas y de otros programas, ya que facilita la integración con los dispositivos de hardware y la configuración de periféricos como escáneres, impresoras y discos, y la visualización de archivos. La principal tarea de los sistemas operativos es administrar los recursos del hardware, como el procesador, los medios de almacenamiento, los dispositivos de entrada/salida y los medios de comunicación. A diferencia de los sistemas operativos, el middleware es utilizado por dos o más programas para comunicarse entre sí o con sistemas de información, funcionando de manera independiente aunque estén acoplados al sistema operativo. Por otro lado, un sistema de información es una interconexión de programas y equipos de cómputo con un propósito específico. [1. Desarrollo de la tematica 3](#desarrollo-de-la-tematica) [1.1 Evolucion de los sistemas operativos 3](#evolucion-de-los-sistemas-operativos) [1.1.1 Etapa 0. Computadoras de propósito particular: 3](#etapa-0.-computadoras-de-prop%C3%B3sito-particular) [1.1.2 Etapa 1. Computadoras comerciales monoproceso 4](#etapa-1.-computadoras-comerciales-monoproceso) [1.1.3 Etapa 2. Multiproceso 5](#etapa-2.-multiproceso) [1.1.4 Etapa 3. Computo personal 6](#etapa-3.-computo-personal) [1.1.5 Cuarta Etapa. Masificacion de la Internet 7](#cuarta-etapa.-masificacion-de-la-internet) [1.1.6 Quinta etapa. Computo ubicuo 8](#quinta-etapa.-computo-ubicuo) [1.1.6 Sexta etapa. IOT (Internet de las cosas) 9](#sexta-etapa.-iot-internet-de-las-cosas) [1.2 Clasificación de los sistemas operativos 10](#clasificaci%C3%B3n-de-los-sistemas-operativos) [1.2.1 Sistemas Monolíticos y MicroKernel 10](#sistemas-monol%C3%ADticos-y-microkernel) [1.3 Administracion de procesos 12](#administracion-de-procesos) [1.3.1 Procesamiento por Lotes (Batch Processing) 12](#procesamiento-por-lotes-batch-processing) [1.3.1.1 Características Principales: 12](#caracter%C3%ADsticas-principales) [1.3.1.2 Ventajas y Desventajas: 13](#ventajas-y-desventajas) [1.3.2.1 Características Principales: 14](#caracter%C3%ADsticas-principales-1) [1.3.2.2 Ventajas y Desventajas: 14](#ventajas-y-desventajas-1) [1.3.3 Sistemas de tiempo real 15](#sistemas-de-tiempo-real) [1.3.3.1Características Clave: 15](#caracter%C3%ADsticas-clave) [1.3.3.2 Aplicaciones Comunes: 15](#aplicaciones-comunes) [1.3.4 Sistema Distribuido 16](#sistema-distribuido) [1.3.4.1 Características Principales: 16](#caracter%C3%ADsticas-principales-2) [1.3.4.2 Aplicaciones Comunes: 17](#aplicaciones-comunes-1) [1.3.5 Sistemas Embebidos 17](#sistemas-embebidos) [1.3.5.1 Características Principales 18](#_Toc120894669) [1.3.5.2 Ejemplos y Aplicaciones: 18](#ejemplos-y-aplicaciones) [1.3.5.3 Ventajas y desventajas: 19](#ventajas-y-desventajas-2) [1.4 Generalidades de los sistemas operativos 19](#generalidades-de-los-sistemas-operativos) [1.4.1 Estructura 19](#estructura) [1.4.1.1 Nucleo del sistema operativo 19](#nucleo-del-sistema-operativo) [1.4.1.2 Intérprete de comandos. 20](#int%C3%A9rprete-de-comandos.) [1.4.1.3 Interfaz grafica 20](#interfaz-grafica) [1.4.1.4 Mecanismos de distribución de aplicaciones 21](#mecanismos-de-distribuci%C3%B3n-de-aplicaciones) [1.4.1.5 Utilerías de sistema 21](#utiler%C3%ADas-de-sistema) [1.4.1.6 Programas de aplicacion basicos 21](#programas-de-aplicacion-basicos) [1.4.1.7 Servicios básicos 21](#servicios-b%C3%A1sicos) [1.5 Interrupciones y Planificador de la CPU (scheduler) 22](#interrupciones-y-planificador-de-la-cpu-scheduler) [1.6 Arquitectura de sistemas operativos de referencia 22](#arquitectura-de-sistemas-operativos-de-referencia) [1.6.1 Linux 22](#linux) [1.6.2 Windows 23](#windows) [1.6.3 Android 24](#android) [1.6.4 Mac OS X 25](#mac-os-x) [1.7 Modos de proteccion 25](#modos-de-proteccion) [1.7.1 El modo supervisor 3 o proteccion 0 25](#el-modo-supervisor-3-o-proteccion-0) [1.7.2 El modo de protección 3 26](#el-modo-de-protecci%C3%B3n-3) [1.8 Funciones y características 26](#funciones-y-caracter%C3%ADsticas) [1.9 Mecanismos de comunicación entre procesos (IPC) 27](#mecanismos-de-comunicaci%C3%B3n-entre-procesos-ipc) Desarrollo de la tematica ========================= 1.1 Evolucion de los sistemas operativos ---------------------------------------- Una de las etapas más importantes en la historia de la computación fue la evolución de las primeras máquinas, introducidas por IBM en los años 50. En ese período, se realizó la primera ejecución de un programa, lo que marcó un hito significativo. Además, se abrió la posibilidad de que múltiples programas pudieran ejecutarse simultáneamente en un sistema operativo. Hay 7 etapas de la evolucion del SO. ### 1.1.1 Etapa 0. Computadoras de propósito particular: Las primeras computadoras fueron desarrolladas con el objetivo de realizar miles de cálculos en cortos periodos de tiempo. Un ejemplo notable es el Mark II, utilizado durante la Segunda Guerra Mundial para calcular tablas de tiro para la marina. Estas máquinas fueron diseñadas para tareas específicas, con capacidades y conocimientos del equipo limitados. Además, tanto la forma de operación como el lenguaje de programación se crearon para funcionar de manera eficiente, sin requerir esfuerzos o recursos adicionales significativos. Dada la limitación de recursos en esa época, se maximizó el uso de las características y capacidades disponibles de las máquinas. Esto llevó a la incorporación de rutinas y bibliotecas en los lenguajes de programación, lo que permitió reutilizar código y optimizar su uso. En comparación con la actualidad, los dispositivos suelen enfocarse en microcontroladores o grandes granjas de procesadores. A menudo, no es necesario un modo de ejecución protegido, y estos sistemas pueden adoptar modelos de desarrollo de sistemas de información similares a los utilizados en las primeras computadoras. Una de las limitantes en ese tiempo era que las primeras maquinas eran de gran tamaño y demanda energética y usaban tarjetas perforadas. ### 1.1.2 Etapa 1. Computadoras comerciales monoproceso En esta nueva etapa, que abarcó aproximadamente desde 1956 hasta 1963, la tecnología clave consistía en el uso de transistores y tubos de vacío, así como en el avance de lenguajes de programación como el ensamblador. El ensamblador proporcionaba una representación simbólica del lenguaje de máquina de la generación anterior, pero aún no alcanzaba el nivel de un lenguaje de alto nivel. Entre los lenguajes más conocidos de esta época se encontraba Fortran, desarrollado por IBM en 1957. Los compiladores y las subrutinas permitieron que computadoras comerciales, como las UNIVAC o los sistemas IBM 360, fueran rentables y precisas en la ejecución de aplicaciones y programas. Las bibliotecas se encargaban de controlar dispositivos de entrada y salida. Las características principales de estas computadoras incluían un tamaño reducido y una menor demanda energética, y utilizaban tarjetas perforadas. Este avance permitió la fabricación de dispositivos mucho más pequeños y con un consumo eléctrico menor. Una innovación significativa en la infraestructura de las máquinas fue la capacidad de generar flujos de ganancias a través de dispositivos de entrada y salida, así como de almacenar información en buses de memoria. Los medios de almacenamiento incluían discos duros, tambores magnéticos y memoria apoyada por semiconductores. Además, los resultados podían extraerse en cintas o teletipos para manipular la información y transmitirla hasta una impresora. En resumen, esta primera etapa representó un cambio significativo en la era de las computadoras, al implementar de manera más eficiente bibliotecas, programas por lotes y lenguajes que respaldaron la implementación de aplicaciones y el procesamiento de entrada y salida. ### 1.1.3 Etapa 2. Multiproceso La etapa 2 estuvo marcada por la invención de los circuitos integrados, lo que permitió a las computadoras tener dos o más unidades de procesamiento que trabajaban sobre una memoria común bajo un control integrado. Estos circuitos, almacenados en placas de baquelita y utilizando semiconductores, proporcionaron un mayor nivel de integración y una mayor potencia de procesamiento, reduciendo los costos hasta en un 50%. Los dispositivos de entrada y salida se segmentaron y sus capacidades continuaron mejorando, aumentando la velocidad de procesamiento de las solicitudes. Para evitar interrupciones, se implementó un esquema en el que el procesador podía continuar con otras tareas durante las operaciones y recibir una notificación al terminar, minimizando el tiempo de suspensión y priorizando las tareas según su importancia. También se introdujo el multiprocesamiento, una tecnología que permite el uso de múltiples procesadores para distribuir la carga de procesamiento en varias particiones, cada una con una fracción de memoria específica. Esto facilitó la multitarea, independientemente del número de procesadores disponibles. El desarrollo de un entorno de software que soportara multiprocesamiento fue más complejo que el procesamiento por lotes, lo que provocó fallos en las primeras implementaciones. Para abordar estos problemas, se fomentó una cooperación moderada e incremental en el desarrollo, especialmente entre lenguajes de programación avanzados y el sistema operativo Unix. Uno de los mayores desafíos fue el soporte para aplicaciones complejas, lo que a menudo retrasó el desarrollo y causó errores en nuevas versiones del software. La estrategia para solucionar estos problemas incluyó la creación de nuevas tecnologías para el diseño, análisis y prueba de sistemas. En conclusión, los conceptos más destacados de esta etapa incluyen los circuitos integrados, los primeros lenguajes de programación, una menor demanda energética y la reducción de costos, así como la programación múltiple y el teleproceso. ### 1.1.4 Etapa 3. Computo personal Uno de los principales retos para estas compañías era la capacidad de fabricar computadoras personales a menor costo, con funciones básicas, utilizando los mismos procesadores que los grandes sistemas. Fue así como se integró el microprocesador o microchip, dando origen a las computadoras personales (PC). Dado que los terminales de los sistemas Mainframe no se producían en masa, su costo era relativamente alto en comparación con la fabricación masiva de PC. Con el crecimiento de las redes de área local en las organizaciones, resultó más económico utilizar programas que simularan Mainframes en las PC, permitiendo su conexión a través de la red. Al final, el sistema mainframe fue completamente reemplazado por modelos de comunicación distribuidos, como el cliente-servidor. Gracias a la incorporación de esta nueva tecnología, las computadoras pudieron diversificar sus funciones lógico-aritméticas y reemplazar la memoria de anillos de silicio por módulos de memoria RAM y ROM. Las PC estaban destinadas al uso general, permitiendo realizar diversas operaciones, desde cálculos laborales y investigación científica hasta juegos de video. La interacción con estas computadoras se distinguió notablemente de sus versiones anteriores. No solo eran capaces de manejar diversos y complejos lenguajes de programación, sino que también contaban con sistemas operativos más amigables para el usuario. Comercialmente, las PC compatibles con IBM dominaron el mercado de las computadoras personales, ofreciendo un entorno mejorado para el multiprocesamiento, una mejor gestión de los dispositivos de entrada y salida, soporte de red y mayor seguridad. Aunque el sistema GNU ofrecía un conjunto de utilidades para el sistema operativo UNIX como software libre, su núcleo no era completamente compatible ni estaba optimizado para los populares procesadores de computación personal. Para abordar este problema, Linus Torvalds inició el desarrollo de un núcleo monolítico simplificado basado en la arquitectura Intel 80x86, creando un producto funcional en un tiempo relativamente corto. Esto marcó el comienzo de Linux, que junto con las utilidades de GNU, dio origen a diversas variantes de Linux para computadoras personales. El primer microprocesador, el Intel 4004, fue fabricado en 1971 para una calculadora electrónica. Esta generación vio una verdadera explosión de computadoras comerciales de diversas marcas, como IBM, Apple y muchas otras. ### 1.1.5 Cuarta Etapa. Masificacion de la Internet En esta etapa, las redes informáticas se popularizaron significativamente con la llegada de las LAN (redes de área local). Esto permitió que los servidores y las PC pudieran comunicarse entre sí, facilitando a las organizaciones e individuos la realización de operaciones informáticas. Así comenzó la era del desarrollo de la computación distribuida. Este gran avance se logró gracias a la tecnología satelital de la telefonía y a los módems telefónicos, que podían transmitir información durante una llamada, así como a un sistema de ondas electromagnéticas que conectaban puntos específicos. Servicios de red como DHCP, RDP, DNS y HTTP marcaron el comienzo de esta era, cuyo punto culminante fue el Internet. El lanzamiento de la gran red de redes, la World Wide Web, abierta al público comercial, expandió las fronteras de la informática a niveles nunca antes imaginados. Las compañías ISP (proveedores de servicios de Internet) comenzaron utilizando líneas telefónicas y ahora son capaces de ofrecer servicios de Internet a usuarios domésticos y empresas a través de redes de fibra óptica y telefonía móvil. Con estos desarrollos, nació la telefonía \"inteligente\" y se dieron los primeros pasos hacia la Inteligencia Artificial, impulsada por algoritmos informáticos. Además, las computadoras dejaron de ser una herramienta accesoria para convertirse en el principal instrumento de trabajo en casi todas las profesiones. Este cambio profundo se conoce como la \"Revolución Digital\". ### 1.1.6 Quinta etapa. Computo ubicuo En esta etapa Los sistemas ubicuos se definen como herramientas informáticas capaces de comunicarse a través de redes interconectadas. Su característica principal es la creación de un entorno donde los objetos, dotados de capacidad de cómputo, pueden interactuar entre sí y es aplicado a sistemas que tienen nodos en funcionamiento pero que no pueden acceder continuamente a los servicios (como acceso a la red, electricidad e instalaciones generales). La computación ubicua se distingue por su bajo nivel de intrusión, su proactividad inherente y su capacidad de adaptarse dinámicamente según el contexto y las preferencias del usuario y su entorno. Estos sistemas se implementaron para la evaluación de aguas profundas y la alerta de tsunamis, con el objetivo de prevenir desastres. Por ejemplo, se utilizaron para el monitoreo del entorno marino y para la configuración automática de redes de comunicación móvil de emergencia, evitando la dependencia de proveedores convencionales. Esto se observó en proyectos como Serval y otros servicios telefónicos diseñados para responder ante situaciones de emergencia. ### ### 1.1.6 Sexta etapa. IOT (Internet de las cosas) En esta etapa de la tecnología, se permite conectar los objetos físicos cotidianos a Internet, abarcando desde la domótica hasta recursos de atención sanitaria, como prendas y accesorios personales inteligentes, e incluso los sistemas de ciudades inteligentes. Estamos empezando a visualizar las ventajas de estos dispositivos en el control de edificaciones, lo que reduce costos operativos y minimiza el impacto ambiental. Además, en el ámbito automotriz, estos avances permiten contar con servicios de conexión y navegación de alta calidad. Los dispositivos del Internet de las Cosas (IoT) integrados en estos objetos físicos generalmente pertenecen a una de dos categorías: interruptores, que envían instrucciones a otros objetos, y sensores, que recopilan datos para enviarlos a otro lugar. Estos dispositivos son fundamentales en la creación de entornos más eficientes y automatizados, como los sistemas de gestión de energía en edificios, que ajustan automáticamente la calefacción, la iluminación y otros servicios según la ocupación y el clima. La conectividad y el análisis de datos que permite el IoT también tienen aplicaciones en la salud, donde dispositivos portátiles pueden monitorear constantes vitales, administrar tratamientos y enviar datos a profesionales médicos en tiempo real. En la industria, el IoT facilita la monitorización de maquinaria y procesos, lo que optimiza la producción y reduce el tiempo de inactividad debido a fallos. Por otro lado, la computación cuántica, la nanotecnología y la robótica están emergiendo como áreas de innovación con el potencial de transformar numerosos sectores. La computación cuántica promete resolver problemas complejos que están más allá de las capacidades de las computadoras clásicas, como la simulación de moléculas para la creación de nuevos medicamentos. La nanotecnología, que manipula la materia a una escala extremadamente pequeña, podría revolucionar campos como la medicina, permitiendo la creación de nanorobots que podrían reparar tejidos o administrar medicamentos directamente a las células afectadas. La robótica, por su parte, está avanzando rápidamente con la introducción de robots cada vez más capaces e inteligentes que pueden realizar tareas desde el ensamblaje de productos en fábricas hasta la asistencia en el hogar y el cuidado de personas mayores. Estas tecnologías, combinadas con la inteligencia artificial y el aprendizaje automático, están creando un ecosistema en el que las máquinas no solo ejecutan tareas programadas, sino que también aprenden y se adaptan a nuevas situaciones. En conjunto, estas disciplinas están configurando un futuro donde la interacción entre el mundo físico y digital será cada vez más fluida e integrada, transformando la forma en que vivimos y trabajamos de maneras que aún estamos comenzando a entender. 1.2 Clasificación de los sistemas operativos -------------------------------------------- ### ### 1.2.1 Sistemas Monolíticos y MicroKernel En un sistema operativo monolítico, un solo núcleo o kernel maneja las funciones y servicios básicos del sistema. Este núcleo centralizado gestiona tareas esenciales como la administración de memoria, la programación de procesos, el sistema de archivos, los controladores de dispositivos, los protocolos de red y las llamadas al sistema. El kernel opera en un modo privilegiado, lo que le permite acceder directamente al hardware, mientras que las aplicaciones se ejecutan en un modo de usuario más restringido. Esta arquitectura tiene la ventaja de ser rápida y eficiente, ya que evita la sobrecarga de comunicación o conmutación entre diferentes componentes del sistema. Sin embargo, su complejidad y dificultad de mantenimiento son notorias, dado que cualquier cambio o error en el kernel puede tener un impacto generalizado en todo el sistema. Ejemplos destacados de sistemas operativos monolíticos incluyen Linux, Windows y macOS. Por otro lado, un sistema operativo de microkernel se caracteriza por un núcleo minimalista que se limita a proporcionar los servicios más básicos, como la comunicación entre procesos, la protección de memoria y la abstracción de hardware de bajo nivel. Las funciones y servicios adicionales se implementan como módulos o procesos separados que se ejecutan en modo usuario y se comunican con el kernel y entre sí mediante el paso de mensajes. La principal ventaja de un sistema de microkernel es su modularidad y flexibilidad. Esto permite agregar, eliminar o actualizar módulos específicos sin afectar el núcleo o el sistema en su conjunto, facilitando la adaptabilidad y el mantenimiento. Sin embargo, esta arquitectura puede ser más lenta y menos eficiente debido a la sobrecarga de comunicación entre sus componentes. Ejemplos de sistemas operativos basados en microkernel incluyen QNX, Minix y L4. Ambas arquitecturas presentan un enfoque distinto hacia el diseño de sistemas operativos, cada una con sus propios beneficios y desafíos. Mientras que los sistemas monolíticos suelen destacarse por su rendimiento y eficiencia, los microkernels ofrecen una estructura más segura y manejable, ideal para entornos que requieren una alta modularidad y resistencia a fallos. En última instancia, la elección entre un kernel monolítico o un microkernel depende de las necesidades específicas del sistema y de las prioridades del desarrollador, como el rendimiento, la seguridad y la facilidad de mantenimiento. 1.2.2 Propietarios y software libre Cuando hablamos de software libre, nos referimos a programas que ofrecen una libertad mucho mayor en comparación con el software propietario. Mientras que el software propietario está bajo la exclusividad de una persona o empresa, que controla el código fuente y limita el acceso y la modificación a su propio uso, el software libre se caracteriza por no tener un propietario definido y se ofrece a los usuarios con una serie de libertades fundamentales. El software libre permite a los usuarios no solo utilizar el programa sin restricciones, sino también estudiar, modificar y redistribuir su código fuente. Esto fomenta una comunidad colaborativa donde los desarrolladores pueden mejorar y adaptar el software para satisfacer diversas necesidades, promoviendo la innovación y la personalización. Ejemplos icónicos de software libre incluyen el sistema operativo Linux y el navegador web Firefox. En contraste, aunque muchos programas propietarios parecen gratuitos, especialmente en el caso de aplicaciones móviles, la realidad suele ser más compleja. A menudo, estos programas se financian mediante la inserción de publicidad, la cual puede comprometer la experiencia del usuario. Además, las aplicaciones gratuitas pueden recopilar y monetizar datos personales, como nuestros hábitos de consumo, contactos y otra información privada. Esta recopilación de datos puede ocurrir de manera que ni siquiera somos plenamente conscientes, y nuestros datos pueden ser utilizados para fines comerciales, como el perfilado y la segmentación de anuncios. La distinción clave radica en la filosofía detrás del software libre, que promueve la transparencia y el control del usuario sobre sus herramientas digitales. Al optar por software libre, los usuarios eligen una mayor autonomía y protección sobre su información personal, en lugar de cederla a cambio de un servicio que parece gratuito pero que en realidad puede tener costos ocultos. Esta elección representa una forma activa de participación en la economía digital y un compromiso con los principios de apertura y colaboración en el desarrollo del software. Así, mientras el software libre representa un paradigma de libertad y comunidad, el software propietario a menudo plantea desafíos en términos de privacidad y transparencia, destacando la importancia de comprender el verdadero costo y el valor detrás de las herramientas digitales que utilizamos a diario. 1.3 Administracion de procesos ------------------------------ ### 1.3.1 Procesamiento por Lotes (Batch Processing) ### El procesamiento por lotes es un método de procesamiento de datos en el que se agrupan y ejecutan conjuntos de tareas o trabajos de manera secuencial, sin la necesidad de intervención constante del usuario. Este enfoque es ideal para tareas repetitivas y de gran volumen que no requieren interacción en tiempo real #### 1.3.1.1 Características Principales: Agrupación de Tareas: Las tareas se organizan en lotes y se procesan en bloques o secuencias. Cada lote contiene un conjunto de datos o instrucciones que se ejecutan de manera continua hasta completar el trabajo. Ejecución Periódica: Los trabajos se ejecutan en intervalos específicos o en momentos programados, permitiendo una gestión eficiente del procesamiento de grandes volúmenes de datos. Automatización y Eficiencia: El procesamiento por lotes permite la automatización de tareas rutinarias, optimizando el uso de recursos del sistema y reduciendo la necesidad de intervención manual. Ejemplos de Aplicación: Es utilizado en la generación de informes, actualización de bases de datos y procesamiento de transacciones donde la interacción en tiempo real no es necesaria. ### #### 1.3.1.2 Ventajas y Desventajas: Eficiencia en el Manejo de Datos: Permite procesar grandes cantidades de datos de manera efectiva y continua. Reducción de Intervención Manual: Automatiza tareas repetitivas, minimizando la necesidad de supervisión constante. No Adecuado para Procesos en Tiempo Real: No es adecuado para tareas que requieren una respuesta inmediata o interacción continua con el usuario. En resumen, el procesamiento por lotes es un enfoque eficaz para manejar tareas de datos repetitivos y de gran volumen, utilizando la agrupación y ejecución secuencial de trabajos para mejorar la eficiencia y automatización. ### 1.3.2 Tiempo compartido o interactivo (Time-Sharing Systems) Los sistemas de tiempo compartido, también conocidos como sistemas interactivos, son un tipo de arquitectura de procesamiento que permite a múltiples usuarios y procesos acceder y utilizar los recursos del sistema de manera concurrente y eficiente. Estos sistemas están diseñados para proporcionar una experiencia de usuario fluida al gestionar múltiples tareas en tiempo real, garantizando que cada usuario reciba una respuesta rápida y adecuada. #### 1.3.2.1 Características Principales: Compartición de Recursos: Los recursos del sistema, como la CPU y la memoria, se distribuyen entre varios procesos o usuarios mediante la asignación de intervalos de tiempo específicos, lo que permite la ejecución concurrente de múltiples tareas. Planificación de Procesos: El sistema operativo utiliza técnicas de planificación para gestionar el tiempo de procesamiento de la CPU, asegurando que todos los procesos reciban una porción justa de los recursos y manteniendo tiempos de respuesta bajos. Interactividad en Tiempo Real: Los sistemas de tiempo compartido están optimizados para manejar solicitudes y comandos de los usuarios en tiempo real, proporcionando respuestas rápidas y evitando la latencia en la interacción. Ejemplos de Aplicación: Se utilizan en entornos donde la interacción continua con el usuario es esencial, como en sistemas operativos de escritorio, servidores de aplicaciones y entornos de desarrollo interactivo. #### 1.3.2.2 Ventajas y Desventajas: Mejora en la Experiencia del Usuario: Proporciona una respuesta inmediata a las acciones del usuario, lo que es crucial para aplicaciones interactivas y de alta demanda. Optimización del Rendimiento del Sistema: La planificación y asignación dinámica de recursos permiten una utilización eficiente de la CPU y otros recursos. Complejidad en la Gestión de Recursos: La necesidad de equilibrar y administrar recursos entre múltiples procesos puede introducir complejidad en la planificación y en la gestión del sistema. En resumen, los sistemas de tiempo compartido permiten una ejecución eficiente y concurrente de múltiples tareas al distribuir equitativamente los recursos del sistema, proporcionando una experiencia de usuario interactiva y receptiva en aplicaciones donde la inmediatez es crucial. ### 1.3.3 Sistemas de tiempo real Sistema en tiempo real se refiere a un sistema de procesamiento de información que, mediante una combinación de software y hardware, realiza funciones que requieren respuestas y acciones dentro de plazos específicos y predecibles. Estos sistemas están diseñados para manejar eventos y realizar tareas en función de restricciones temporales estrictas, asegurando que los compromisos de tiempo sean cumplidos de manera confiable. #### 1.3.3.1Características Clave: Respuestas en Tiempo Real: Los sistemas en tiempo real deben responder a eventos y ejecutar tareas dentro de intervalos de tiempo precisos y predefinidos, garantizando que las acciones se completen según los plazos establecidos. Compromisos de Tiempo de CPU: Estos sistemas gestionan el tiempo de procesamiento de la CPU de manera que los procesos críticos reciban la atención necesaria para cumplir con los requisitos de tiempo establecidos. Esto implica una planificación y asignación de recursos que prioriza las tareas según su importancia temporal. Atención Constante y Predecible: Los sistemas en tiempo real proporcionan una atención continua y predecible a las aplicaciones críticas, como el control multimedia y sistemas de navegación. Esto es esencial para evitar que variaciones en el tiempo de respuesta afecten negativamente el rendimiento de las aplicaciones. #### 1.3.3.2 Aplicaciones Comunes: Control Multimedia: En aplicaciones como la reproducción de video en tiempo real y la transmisión de audio, donde cualquier retraso o variación en el tiempo de procesamiento puede afectar la calidad de la experiencia del usuario. Sistemas de Navegación y Control: En sistemas de navegación de aeronaves, automóviles autónomos o control de procesos industriales, donde el cumplimiento preciso de los plazos es crucial para la seguridad y la eficacia. En resumen, los sistemas en tiempo real están diseñados para garantizar que las tareas se completen dentro de límites de tiempo estrictos, proporcionando respuestas rápidas y predecibles que son esenciales para aplicaciones donde el tiempo de reacción es crítico. ### 1.3.4 Sistema Distribuido Un sistema distribuido es un conjunto de programas informáticos y recursos computacionales que trabajan en múltiples nodos (computadoras o servidores) conectados a través de una red para alcanzar un objetivo común. A diferencia de los sistemas centralizados, donde un único punto controla todas las operaciones, los sistemas distribuidos distribuyen la carga de trabajo y la gestión de datos entre varios nodos para mejorar la eficiencia y la resiliencia. #### 1.3.4.1 Características Principales: Distribución de Recursos: Utiliza varios nodos de cálculo que colaboran para realizar tareas y alcanzar metas compartidas, compartiendo y procesando información de manera coordinada. Eliminación de Cuellos de Botella: Al distribuir los recursos y la carga de trabajo, los sistemas distribuidos eliminan los puntos de falla o cuellos de botella que pueden ocurrir en sistemas centralizados, mejorando así la disponibilidad y escalabilidad. Soporte de Red y Automatización: Ofrecen soporte para la operación de la red, la automatización en la instalación y administración del sistema, y facilitan funciones clave como llamadas remotas y paso de mensajes entre nodos. Resiliencia y Escalabilidad: La distribución de los recursos permite una mayor resiliencia frente a fallos y una mejor capacidad de escalar según la demanda. #### 1.3.4.2 Aplicaciones Comunes: Servicios en la Nube: Plataformas que ofrecen almacenamiento, procesamiento y servicios a través de múltiples servidores distribuidos. Sistemas de Base de Datos Distribuidos: Bases de datos que se extienden sobre varios servidores para manejar grandes volúmenes de datos y proporcionar acceso simultáneo a múltiples usuarios. Redes de Computadoras: Sistemas que utilizan varios nodos para ofrecer servicios de red y comunicación. En resumen, un sistema distribuido es una arquitectura en la que múltiples nodos cooperan para lograr objetivos comunes, eliminando los puntos de falla centralizados y ofreciendo mayor flexibilidad, escalabilidad y resiliencia ### 1.3.5 Sistemas Embebidos Un sistema embebido es una combinación de hardware y software diseñado para realizar una función específica dentro de un dispositivo o sistema más grande. A diferencia de los sistemas operativos generales, los sistemas embebidos están personalizados para satisfacer las necesidades particulares de un dispositivo o aplicación. []{#_Toc120894669.anchor}*1.3.5.1 Características Principales*: Función Específica: Los sistemas embebidos están diseñados para ejecutar una tarea o función específica dentro de un dispositivo, a menudo de manera muy eficiente y con recursos limitados. Integración en Dispositivos Más Grandes: Estos sistemas suelen formar parte de un sistema mayor, controlando y gestionando una función particular dentro de un dispositivo multifuncional. Simplificación y Adaptación: Se utilizan versiones simplificadas de sistemas operativos generales, adaptadas para cumplir con las necesidades específicas del dispositivo. Estos sistemas operativos embebidos pueden incluir características básicas como gestión de dispositivos, comunicación y control, adaptadas al contexto del hardware. Evolución y Capacidad General: Con el avance de la tecnología, algunos sistemas embebidos han evolucionado para incluir capacidades informáticas más generales. Por ejemplo, los sistemas operativos de teléfonos inteligentes como Android e iOS se originan como sistemas embebidos pero han ampliado sus capacidades para ofrecer una amplia gama de funciones más allá de las básicas. #### 1.3.5.2 Ejemplos y Aplicaciones: Electrodomésticos Inteligentes: Como frigoríficos y lavadoras con control integrado. Dispositivos de Comunicación: Como teléfonos móviles y cámaras digitales. Sistemas de Control Industrial: En maquinaria y equipos automatizados. #### 1.3.5.3 Ventajas y desventajas: Especialización y Eficiencia: Ofrecen una solución optimizada para tareas específicas, con bajo consumo de recursos y alta eficiencia. Integración Transparente: Se integran eficazmente en dispositivos multifuncionales, proporcionando control y gestión especializados Limitación de Recursos: Están diseñados con recursos limitados, lo que puede restringir la flexibilidad y las capacidades generales comparado con sistemas operativos más completos. En resumen, un sistema embebido es una solución informática especializada, integrada en dispositivos para realizar funciones específicas con alta eficiencia, adaptada a las necesidades particulares del hardware y la aplicación. 1.4 Generalidades de los sistemas operativos -------------------------------------------- ### 1.4.1 Estructura El SO es el encargado de manejar multiples requesitos para proporcionar la eficiencia en el desarollo de los programas de aplicación y el correcto funcionamiento del sistema. Los elementos de soporte, tales como: #### #### #### #### #### #### 1.4.1.1 Nucleo del sistema operativo El kernel es la interfaz principal entre el hardware y los procesos que se ejecutan a través del software. En términos más técnicos, el núcleo del sistema operativo actúa como el \"corazón\" del sistema, controlando todo el funcionamiento del mismo. Es la capa base del sistema operativo y se encarga de la gestión de memoria y procesos, del control de algunos dispositivos de entrada/salida (E/S), así como de una parte de la administración de la red y del sistema de archivos. El kernel se ejecuta en modo protegido por el procesador, lo que le permite tener acceso completo a los recursos del sistema. Es el primer programa que se carga una vez que el sistema operativo se inicializa al encender el ordenador, y permanece en la memoria hasta que el sistema operativo se apaga. El ordenador está compuesto por una serie de capas. La capa más externa es el hardware (CPU, RAM, discos, etc.), mientras que la capa interna es el software y sus aplicaciones. El kernel se encuentra en medio, actuando como intermediario y responsable de las interacciones entre ambas capas. #### 1.4.1.2 Intérprete de comandos. El intérprete de comandos es un programa que convierte las entradas escritas en la terminal en instrucciones que el sistema operativo puede entender y ejecutar. Su principal objetivo es ejecutar los programas que el usuario teclea en el prompt, sin la necesidad de que un operador manipule los medios fisicos, como discos, y memoria. El prompt es la señal que muestra el intérprete para indicar que está esperando una orden del usuario. Al recibir una orden, el intérprete la ejecuta, pudiendo tratarse de programas internos, incorporados en el propio intérprete, o externos, que son programas separados. #### 1.4.1.3 Interfaz grafica Tambien conocido como GUI.es un ambiente que se basa en imagenes o iconos, se caracteriza por ser intuitivo para el usuario a traves del uso de lenguaje escrito o imagenes. Se ha establecido una serie de modelos con el fin de representar elementos comunes en todas las apps, para aprender a utilizar cada uno bajo los conocimientos adquiridos #### 1.4.1.4 Mecanismos de distribución de aplicaciones Se encarga de un mecanismo de distribucion y someter a un sistema para hacer llegar un software a los usuarios finales, se aseguran que el software llegue de manera segura, eficiente y conveniente a los usuarios, facilitando la distribución y el mantenimiento de las aplicaciones, por ejemplo ayuda a reducir las vulnerabilidades de seguridad causadas por malware (es decir, programas desarrollados para atacar sistemas de información) #### 1.4.1.5 Utilerías de sistema Es una serie de programas necesairos para la interaccion de las aplicaciones y los usuarios puedan utilizar sus servicios y realicen tareas basicas y avanzadas #### 1.4.1.6 Programas de aplicacion basicos Es un tipo de software que ofrece herramientas para realizar tareas específicas en una computadora. Los programas de aplicación básicos suelen incluir funciones de ofimática, edición de documentos, procesamiento de imágenes, o tareas específicas del dispositivo, como usar una cámara o hacer llamadas en un teléfono inteligente. Aunque estas aplicaciones no son esenciales para el funcionamiento del sistema operativo y se pueden eliminar o reemplazar sin problemas, generalmente se distribuyen con el sistema para proporcionar un entorno funcional desde el inicio. #### #### 1.4.1.7 Servicios básicos Los servicios básicos informáticos son soluciones tecnológicas y asistencia especializada para el diseño, implementación y mantenimiento de sistemas informáticos en empresas y organizaciones. Incluyen una amplia gama de actividades, como la gestión del sistema de archivos, el control de dispositivos de entrada y salida, la gestión de redes, el manejo de errores y protección de recursos, la supervisión del uso de recursos de aplicaciones, y la autenticación y control de acceso a recursos. 1.5 Interrupciones y Planificador de la CPU (scheduler) ------------------------------------------------------- Las interrupciones por hardware son señales enviadas por dispositivos de entrada/salida (E/S) al procesador para indicar que tienen datos pendientes de ser tratados. Este mecanismo permite que el sistema operativo no necesite revisar constantemente el estado de los dispositivos, ya que ellos mismos notifican cuando requieren atención. Las funciones asociadas a estas interrupciones se ejecutan con autorización del kernel y no pueden ser modificadas por aplicaciones. Inicialmente, estas funciones son definidas por el BIOS al arrancar el sistema y luego son gestionadas por el sistema operativo, que puede ajustarlas según sus necesidades. El planificador de CPU, también conocido como scheduler, es un componente crucial en los sistemas operativos multitarea y multiproceso. Su función principal es asignar el tiempo de procesamiento del microprocesador entre todos los procesos que están disponibles para su ejecución. Esta gestión eficiente del tiempo del procesador es esencial, especialmente en sistemas operativos de tiempo real, donde es vital cumplir con los objetivos del sistema en términos de rendimiento y tiempos de respuesta. 1.6 Arquitectura de sistemas operativos de referencia ----------------------------------------------------- E de sus componentes fundamentales y cómo interactúan entre sí para gestionar los recursos de hardware y software de una computadora. Esta arquitectura define la estructura interna del sistema operativo, incluidas sus capas, módulos, y cómo se manejan las comunicaciones entre ellos. ### 1.6.1 Linux El software mencionado es un sistema operativo de código abierto bajo la licencia GNU. Fue diseñado para ser compatible con plataformas que utilizan sistemas como AIX de IBM. Creado por Linus Torvalds en 1991, él ha estado involucrado en su desarrollo continuo y es una figura central en la comunidad de Linux. Para utilizar este sistema operativo, los desarrolladores emplean una versión del kernel de Linux, la optimizan para la plataforma y las aplicaciones específicas, y la empaquetan con herramientas adicionales. El resultado es una distribución de Linux que puede ser utilizada por los usuarios finales. Estas distribuciones son accesibles y a menudo se pueden instalar en computadoras personales a un costo relativamente bajo. Una característica notable del sistema es su capacidad de gestionar módulos. Los módulos son fragmentos de código que se pueden enlazar dinámicamente al núcleo (kernel) durante la ejecución del sistema. Esto permite que cada módulo opere de manera independiente, y que el sistema operativo solo cargue los módulos necesarios, según la actividad en curso. Esto ayuda a conservar memoria al evitar funciones innecesarias, aunque puede haber una ligera pérdida de rendimiento debido al proceso de carga y descarga de módulos. Sin embargo, la ventaja es que los módulos mantienen una conexión directa con el kernel, lo que simplifica la interacción y evita la complejidad de interfaces de programación complicadas. Entre los módulos típicos se encuentran aquellos que gestionan la memoria, los procesos, los dispositivos de entrada/salida, las tarjetas de red y de video, la implementación de protocolos de red, los sistemas de archivos virtuales, y los controladores de dispositivos. Similar a UNIX, Linux ofrece tres niveles de entorno de ejecución para las aplicaciones: el kernel, la sesión y el proceso de usuario. Un proceso de usuario es una instancia de ejecución de un programa de aplicación y un sistema de información que un usuario emplea para satisfacer sus necesidades específicas. En términos generales, la interfaz de programación de aplicaciones (API) proporcionada por el sistema operativo se utiliza e incluye en el programa de aplicación para facilitar esta interacción. ### ### 1.6.2 Windows En el ámbito del usuario final, este sistema operativo es el más popular a nivel comercial. Su entorno gráfico es muy intuitivo y facilita la interacción del usuario con el sistema. Windows implementa multiprocesamiento simétrico, lo que significa que tanto el kernel como los procesos del usuario pueden ser ejecutados por cualquier procesador disponible. Cuando un proceso deja de ser atendido y es necesario dedicar tiempo de la CPU a preparar la ejecución del siguiente proceso, se realiza un cambio de contexto. Este mecanismo permite transferir la ejecución del proceso de manera eficiente entre los procesadores, seleccionando el más adecuado si es necesario cargar el estado del proceso. El kernel de Windows es monolítico, lo que significa que todas las funciones del modo protegido están integradas en una única entidad que comparte la memoria utilizada. Para minimizar el riesgo de interferencias entre los diferentes componentes del kernel, se han implementado varios mecanismos de seguridad. Entre ellos se encuentran la protección contra modificaciones no autorizadas del núcleo, conocida como Patchguard, y la firma de códigos para los elementos del kernel. Estos mecanismos ayudan a mantener la integridad y estabilidad del sistema al prevenir alteraciones que puedan comprometer su funcionamiento. ### ### ### ### ### 1.6.3 Android Este modelo representa una adaptación del kernel de Linux para aplicaciones específicas en dispositivos móviles. Se trata de una versión optimizada del kernel, que incluye los módulos necesarios para interactuar con el hardware particular de teléfonos inteligentes o tabletas. A diferencia del hardware de una computadora personal, el de estos dispositivos móviles tiende a ser más uniforme y menos variable. En el entorno de Android, la seguridad y la protección de los datos son prioridades clave. Dado que estos dispositivos procesan información personal sensible y pueden recibir una amplia gama de aplicaciones, incluidas algunas con potencial malicioso, se pone un énfasis especial en asegurar que los datos de las aplicaciones estén protegidos. El entorno de desarrollo para aplicaciones en dispositivos móviles permite a los desarrolladores concentrarse en la realización de funciones específicas de la aplicación. Al mismo tiempo, pueden aprovechar las funciones proporcionadas por el sistema operativo, como el control del ciclo de vida de la aplicación, el procesamiento de elementos gráficos y otros servicios esenciales. Esta integración facilita que las aplicaciones cumplan con los requisitos de la plataforma y reduce los costos de desarrollo e implementación al aprovechar las capacidades del sistema operativo. ### 1.6.4 Mac OS X Además de ofrecer acceso a funciones del núcleo y basarse en BSD UNIX4, la arquitectura modular soporta la gestión de redes y sistemas de archivos. Los principales componentes se dividen en: - **AQUA**: Interfaz gráfica de usuario. - **Clásico**: Compatibilidad con aplicaciones de Mac OS 9.1. - **Carbón**: Mejora de las API de Mac OS con soporte para Java y Objective-C. - **COCOA**: Desarrollo con programación orientada a objetos y herramientas RAD en Objective-C y Java. 1.7 Modos de proteccion ----------------------- Permite la ejecucion de varios programas para garantizar que la memoria y los recursos y sea gestionado por un mecanismo que limite las operaciones que los programas puedan realizar en el rango de memoria y recursos que no competen. El uso del modo protegido requiere una estrecha colaboracion con el SO para realizar cambios de modo de procesador de una forma oportuna y eficiente y no depender de procesadores especificos\ Debido a esto, casi todos los sistemas usan dos modos de protección para sus procesadores: ### 1.7.1 El modo supervisor 3 o proteccion 0 Permite realizar operacion de gestion de memoria para activar el rango correspondiente a varias aplicaciones, o utilizar rangos de memoira asignado por el SO. Permite acceder a todas las funciones del dispositivo. ### 1.7.2 El modo de protección 3 Es utilizado para aplicacion y el procesador restringe el acceso de la memoria al rango de direcciones o segmento que anteriormente fue configurado en modo proteccion, protege el programa que está en ejecución limitando la operacion de la aplicación cuando esta excede los limites de estos segmentos de memroia sera capturada por el procesador y generará un error de acceso a la memoria. Los modos protegidos 1 y 2 se usan para permitir que los controladores de dispositivos puedan acceder a ciertos recursos y áreas de la memoria sin requerir permisos de modo de administrador 1.8 Funciones y características ------------------------------- La arquictetura se desarrolla con la necesidad de los usuaos y/o aplicaciones instaladas de esta manera la definicion de las caracteristicas son graduales, se espera que el sistema operativo sea capaz de regular los recursos del sistema. Los sistemas cumplen 3 objetivos claves - Soporte de aplicaciones: facilita el desarrollo, uso y gestión de aplicaciones requeridas por los usuarios de los sistemas de información. - Eficiencia: está diseñado para ayudar a las aplicaciones y a los usuarios a utilizar de manera eficiente los recursos disponibles. - Evolución: permite que se desarrollen, prueben e instalen funciones nuevas en el sistema de información, con poca influencia en los otros componentes ya existentes. 1.9 Mecanismos de comunicación entre procesos (IPC) --------------------------------------------------- Se utiliza para intercambiar datos entre múltiples subprocesos en uno o más procesos o programas. Los Procesos pueden ejecutarse en una o varias computadoras conectadas por una red. La forma completa de IPC es comunicación entre procesos. Es un conjunto de interfaces de programación que permiten a un programador coordinar actividades entre varios procesos de programa que pueden ejecutarse simultáneamente en un operasistema de tinción. Esto permite que un programa específico maneje muchas solicitudes de usuarios al mismo tiempo. Estas son las razones para utilizar el protocolo de comunicación entre procesos para compartir información: - Ayuda a acelerar la modularidad. - computacional - Separación de privilegios - Conveniencia - Ayuda a las operasistema de ting para comunicarse entre sí y synccronizar sus acciones. 2 Cuestionario ============== [Arquitecturas de sistemas operativos: monolítico vs microkernel vs híbrido (linkedin.com)](https://es.linkedin.com/advice/0/whats-difference-between-monolithic-microkernel?lang=es)