Descarga la aplicación para disfrutar aún más
Vista previa del material en texto
Programación de sistemas operativos Programa desarrollado 1 Ciencias Exactas, Ingenierías y Tecnología | Ingeniería en Desarrollo de Software 1 CARRERA: Ingeniería en Desarrollo de software Cuatrimestre 04 Programa de la asignatura: Programación de sistemas operativos Unidad 4. Diseño de Sistemas Operativos Clave: 160920415 / 150920415 Programación de sistemas operativos Programa desarrollado 2 Ciencias Exactas, Ingenierías y Tecnología | Ingeniería en Desarrollo de Software 2 Índice Unidad 4. Diseño de Sistemas Operativos ......................................................................... 3 Presentación de la unidad ........................................................................................................... 3 Propósito ........................................................................................................................................ 3 Competencia específica .............................................................................................................. 3 4.1. Base del diseño de sistemas operativos ........................................................................... 4 4.1.1. La visión profesional del diseño ...................................................................................... 5 4.1.2. Cuestiones básicas sobre el diseño ............................................................................... 5 4.1.3. Conceptos generales de una arquitectura..................................................................... 7 4.1.4. Características diferenciales del diseño ........................................................................ 8 Actividad 1. Diseño de un sistema operativo ........................................................................... 9 4.2. Diseño de interfaces ........................................................................................................... 10 4.2.1. Principios sobre el diseño de interfaces ...................................................................... 12 4.2.2. Paradigmas ...................................................................................................................... 13 4.2.3. Llamadas al sistema ....................................................................................................... 14 Actividad 2. Arquitectura del diseño del sistema operativo Linux ....................................... 15 4.3. Implementación y desempeño .......................................................................................... 15 4.3.1. Estructura del sistema .................................................................................................... 16 4.3.2. Mecanismos en comparación con políticas................................................................. 18 4.3.3. Estructuras estáticas o dinámicas ................................................................................ 19 4.3.4. Implementación descendente o ascendente............................................................... 19 4.3.5. Principios de optimización.............................................................................................. 20 4.3.6. Uso de cachés ................................................................................................................. 21 Actividad 3. Diagrama de flujo para la implementación de un SO ..................................... 21 Actividad 4. Cómo optimizar Windows .................................................................................... 22 Autoevaluación ........................................................................................................................... 22 Evidencia de aprendizaje. Diagrama de flujo para diseñar un sistema operativo ............ 22 Cierre de la unidad ..................................................................................................................... 23 Para saber más ........................................................................................................................... 24 Fuentes de consulta ................................................................................................................... 24 Programación de sistemas operativos Programa desarrollado 3 Ciencias Exactas, Ingenierías y Tecnología | Ingeniería en Desarrollo de Software 3 Unidad 4. Diseño de Sistemas Operativos Presentación de la unidad En esta unidad se revisará el diseño de los sistemas operativos; cuyas bases se encuentran en los conocimientos básicos diseño para formar su arquitectura y la interfaz; así como la estructura de los mecanismos, implementación, optimización y cómo se usa el cache. Es importante retomar el concepto de sistema operativo -parte que intereractúa para la administración de recursos del hardware y la ejecución de programas del usuario, cuyo principal objetivo es que se ejecuten programas de forma eficiente- con base en ése, se establecen las tareas de diseño, implementación y ejecución de programas bajo la administración específica de la memoria y los archivos e información que ahí se contiene. Lo anterior, lleva a entender que codificar un sistema operativo es una tarea ardua por sí misma. Propósito El propósito de esta unidad es que tengas los recursos necesarios para lograr un buen diseño de un sistema y, con la ayuda de lenguajes de programación, puedas implementar lo aprendido en el nacimiento de un sistema. Competencia específica Aplicar la visión básica sobre el diseño, para la implementación y desempeño del S.O., mediante el principio de diseño, con el uso de las diferentes características de la arquitectura que lo conforman. Programación de sistemas operativos Programa desarrollado 4 Ciencias Exactas, Ingenierías y Tecnología | Ingeniería en Desarrollo de Software 4 4.1. Base del diseño de sistemas operativos Hablar de un proyecto basado para el desarrollo de un sistema operativo, es pensar de forma global en el proceso de desarrollo, los detalles de gestión de memoria y dispositivos de E/S, así como también en la administración de archivos, sin dejar de lado la seguridad y protección. Como se ve es bastante complejo el desarrollo de un sistema operativo, sin embargo la etapa crítica para la elaboración del sistema es determinar la arquitectura, establecer un plan de desarrollo y determinar los riesgos del proyecto. Con la nueva era de desarrollo de hardware, se incrementa y evolucionan cada vez más las necesidades de procesamiento del sistema operativo para que pueda gestionar de forma eficiente todos los dispositivos y recursos del equipo de cómputo. Hoy en día el progreso en el desarrollo de los sistemas operativos ha incrementado de forma paralela con las nuevas tecnologías para mejorar los algoritmos que gestionan procesos dentro del sistema operativo. Las bases principales para el diseño de sistemas operativos, son: Abstracción.- Define qué hace el sistema operativo, sin tomar en cuenta el cómo lo hace; por ejemplo, para un usuario de un programa procesador de textos, no es necesario que se dé cuenta cómo funcionan por dentro el proceso de captura de datos ni de impresión de documentos. Amplitud de funciones y administrador de errores.- Como se mencionaba respecto al constante avance tecnológico, es conveniente aumentar las posibilidades de multiprocesamiento de los sistemas operativos, para permitir la ejecución de varias aplicaciones sin que el sistema operativo colapse. Es conveniente que se manejen una serie de funciones que permitan administrar los posibles errores, que el mismo sistema operativo no sea capaz de corregir de forma automática. Estandarización.- Actualmente existe una gran variedad de sistemas operativos y dispositivos de hardware que tienen su función específica,por lo que es necesaria una estandarización para tratar de establecer una comunicación entre las diferentes arquitecturas. Programación de sistemas operativos Programa desarrollado 5 Ciencias Exactas, Ingenierías y Tecnología | Ingeniería en Desarrollo de Software 5 La función principal de un sistema operativo, es establecer y definir las abstracciones correctas. La mayoría de ellas, como la administración de procesos, archivos y subprocesos. Debido a que pueden existir múltiples sesiones al mismo tiempo en una computadora, el sistema operativo debe proporcionar mecanismos para mantenerlos separados y no deberá existir interferencia entre unos y otros. 4.1.1. La visión profesional del diseño Básicamente los conceptos que se toman en cuenta para estructurar el diseño del sistema operativo se basan en lo siguiente: Conectividad del sistema operativo. Orientación a objetos. Aplicaciones cliente/servidor. Servicios Estos conceptos, se conjugan de forma interactiva ya que entre ellos se ofrece la solución global para el desarrollo del sistema. Mediante la visión del desarrollo del sistema, se puede aprovechar para crear aplicaciones con funciones específicas para los usuarios basadas en el rendimiento del sistema y aprovechamiento de cada dispositivo conectado al sistema. 4.1.2. Cuestiones básicas sobre el diseño Al iniciar el proceso de diseño del sistema operativo, se debe hacer hincapié en determinar la idea conceptual de la arquitectura del sistema, pues es la que comúnmente se está utilizando para el desarrollo de nuevos sistemas operativos. Programación de sistemas operativos Programa desarrollado 6 Ciencias Exactas, Ingenierías y Tecnología | Ingeniería en Desarrollo de Software 6 Algunos de los aspectos básicos que se deben de tomar en cuenta para el diseño de un sistema operativo son: Transparencia.- Basándose en programas, la transparencia se determina sobre el diseño de interfaces de llamadas al sistema, de modo que no sea visible la existencia de dos o más procesadores. Se dice que un sistema no es transparente ya que el acceso a los archivos remotos se realizan mediante el establecimiento explicito de una conexión en la red con un servidor remoto, cuando el envío posterior de mensajes a los servicios remotos sea distinto al acceso a los servicios locales. Se tienen diferentes tipos de transparencia, lo cuales se basan los de localización, migración, réplica concurrencia y paralelismo. Flexibilidad.- La flexibilidad es una de las cuestiones básicas sobre el diseño de un sistema operativo; existen dos aspectos importantes en la estructura de los sistemas: monolítico que se refiere a que la máquina deberá ejecutar un núcleo tradicional que proporcione la mayoría de los servicios y micronucleo comúnmente nombrado microkernel, que deberá proporcionar lo menos posible; el grueso de los servicios del sistema operativo se debe obtener a partir de los servidores al nivel de usuario. La mayoría de las llamadas al sistema se realizan mediante señalamiento al núcleo. Confiabilidad.- Este punto puede llegar a ser crítico dependiendo de la objetividad del sistema; o, si falla algún proceso, otro adicional al sistema operativo deberá encargarse del trabajo. La confiabilidad puede verse disminuida, ya que en muchas ocasiones, se requiere de que ciertos servicios simultáneos estén procesando información y en funcionamiento, la disponibilidad se puede mejorar mediante un diseño que no requiera dentro de su arquitectura un funcionamiento simultáneo de componentes críticos y establecer un punto de redundancia, cuya característica es la duplicidad de componentes claves del sistema operativo. No olvidemos la parte de la seguridad, la cual se basa en la protección de recursos y la tolerancia a fallos, donde por lo general se recomienda que las fallas del sistema operativo sean ocultas con una recuperación de forma transparente para el usuario. Desempeño.- El desempeño juega un papel muy importante, pues genera que cuando se ejecuta una aplicación ésta sea de forma ágil con capacidades de poder realizar tares de multiprocesos. Programación de sistemas operativos Programa desarrollado 7 Ciencias Exactas, Ingenierías y Tecnología | Ingeniería en Desarrollo de Software 7 Escalabilidad.- La nueva era de tecnologías indica que se tiene que ir mejorando en cuestiones básicas de administración de dispositivos de E/S, para que se esté al día con los requerimientos del sistema operativo que deberá tener la capacidad de mejorar su procesos y gestión de recursos. Por lo general, cada sistema operativo suele ser distinto uno de otro; por su naturaleza propia del nivel de complejidad y uso, varía de acuerdo al objetivo de cada uno. Por lo general un sistema operativo suele ser un programa extremadamente grande, por lo cual se puede pensar que el diseño suele ser de gran complejidad y difícil de desarrollar. Los sistemas operativos tienen que enfrentar a usuarios hostiles y que desean intervenir en el funcionamiento del mismo lo cual provoca que el funcionamiento del sistema se vea vulnerable a las malas intenciones de los mismos usuarios. Se debe cuidar no caer en cuestiones como: no tener la idea clara de cómo se va utilizar el sistema y qué es lo que se utilizará de éste. La portabilidad se ha vuelto una necesidad básica en sistemas operativos modernos, pues suelen diseñarse a modo que se puedan utilizar en diferentes arquitecturas de hardware, y deban reconocer sin problema la mayoría de dispositivos de E/S. La interfaz es la puerta de entrada a un sistema operativo. Por lo general se tiene que, mientras más completa, sencilla e integra sea la cara de un sistema operativo, este podrá ser sencillo de utilizar por el usuario. 4.1.3. Conceptos generales de una arquitectura La arquitectura de un sistema, es la estructura que lo conforma de acuerdo a sus componentes de software, propiedades extremamente visibles y la relación entres ellos; es un conjunto de conceptos y decisiones de diseño relativos a la estructura del sistema operativo, que deben hacerse antes de la ingeniería, con el fin de asegurar la satisfacción del usuario. Esta concebida dentro un nivel de diseño y su importancia está en ofrecer la Programación de sistemas operativos Programa desarrollado 8 Ciencias Exactas, Ingenierías y Tecnología | Ingeniería en Desarrollo de Software 8 comunicación entre las personas involucradas, la documentación, restricciones de implementación, cualidades del sistema. Se basa en un diseño de alto nivel, a estructura del sistema, los componentes del sistema sus relaciones y principios de funcionalidad, componentes, conectores, configuración y restricciones. Cuando se crean arquitecturas de los sistemas se comprende que: La visión arquitectónica, estilo, principios mecanismos y claves de comunicación se refiere a la meta-arquitectura. Las vistas arquitectónicas, soportan la documentación y comunicación de la arquitectura en términos de los componentes y sus relaciones, las vistas son útiles para interactuar con los componentes para desempeñar sus responsabilidades evaluar el impacto. Los patrones arquitectónicos, tales como capas, cliente servidor, mecanismos y puentes, son utilizados para ser tomados como base del diseño. Los principios de diseño arquitectónico claves, abstracción, separación de responsabilidades simplicidad y técnicas de ocultamiento de interfaces, son otros de los conceptos que son utilizados para el diseño. La arquitectura de software debe ser diferencial sobre el diseño e implementación de un sistema operativo, ya que la arquitectura es la base del diseño y la implementación es la puesta en operación de un sistema operativo desarrollado. 4.1.4. Característicasdiferenciales del diseño La arquitectura de un sistema, es reconocida como un ingrediente esencial para el diseño de un sistema. Con la arquitectura definida se puede establecer el diseño y desarrollo de los sistemas, por lo general se tiene que la mayoría de los sistemas operativos establecen un punto de partida los requerimientos que deben de cumplir para el desarrollo del sistema. Programación de sistemas operativos Programa desarrollado 9 Ciencias Exactas, Ingenierías y Tecnología | Ingeniería en Desarrollo de Software 9 El diseño de la arquitectura de un sistema, tiene que estar relacionado con la estructura general y las formas en que la estructura lleva a la satisfacción de las propiedades clave del sistema. El diseño de la arquitectura satisface 2 etapas básicas: Un nivel de abstracción del diseño, donde los desarrolladores del sistema pueden establecer el comportamiento global del mismo, en el que se toma en cuenta el funcionamiento, rendimiento, confiabilidad, etc. Así una excelente arquitectura, hace al diseño una parte fácil de establecer. Sirve como memoria para el sistema en lo que va evolucionando en tiempo de desarrollo; el diseño se usa en el proceso de mejorar el sistema, estableciendo los aspectos del sistema. El documentar el proceso de la arquitectura del sistema ayuda bastante al diseño e, igual a todo el ciclo de vida del sistema, para ofrecer el buen funcionamiento del mismo. Otras de las características del diseño son: las incluidas en servicios disponibles, especialización de servicios, recursos compartidos, transparencia de localización, independencia de hardware, diálogo basado en mensajes, escalabilidad y reusabilidad de componentes. Actividad 1. Diseño de un sistema operativo Esta actividad tiene como finalidad que reflexiones cómo debe ser el diseño de un sistema operativo. 1. Retoma la lectura de los temas anteriores. 2. Busca definiciones de un sistema operativo (como Windows o Linux). 3. Identifica qué parámetros debes considerar para diseñar un buen sistema operativo y qué es lo más importante. 4. Ingresa al foro y genera una nueva entrada. Programación de sistemas operativos Programa desarrollado 10 Ciencias Exactas, Ingenierías y Tecnología | Ingeniería en Desarrollo de Software 10 4.2. Diseño de interfaces La administración de los recursos de hardware es el objetivo principal del diseño, pero para ello, no se puede dejar de lado el como los usuarios interactúan con la computadora y, a través de ésta manejan un sistema y todas sus aplicaciones -pudiendo ser este proceso fascinante, pues mucho del trabajo se puede plasmar en la presentación de cómo está planteado el sistema para su manejo-. Los diferentes tipos de interfaces que se tienen consideradas para el desarrollo de un sistema son: Interacción humano-computadora.- Está relacionado con la práctica del diseño, construcción e implementación de sistemas de cómputo interactivos centrados en el usuario. Su principal actividad es el desarrollo de nuevos sistemas de interface para los usuarios, lo que implica nuevas técnicas de graficación. Figura 1. Dispositivos de interface Interface basada en texto.- Anteriormente, los desarrollos de sistemas orientados en textos o caracteres, solo tenían la capacidad de desplegar códigos ASCII en Programación de sistemas operativos Programa desarrollado 11 Ciencias Exactas, Ingenierías y Tecnología | Ingeniería en Desarrollo de Software 11 pantalla; en contraste a los orientados a gráficos, la interface de texto consisten en un conjunto de comandos que el usuario debe memorizar y con los cuales se dan instrucciones al sistema para el manejo de los recursos. Figura 2. Interface de usuario de MS-DOS Interface gráfica de usuario.- Esta interface aprovecha las capacidades de despliegue gráfico de la computadora, lo cual permite hacer más sencillo el manejo del sistema, este tipo de interface utiliza iconos y menús tanto para para realizar comandos, como para abrir archivos o ejecutar alguna acción dentro de la aplicación. Algunos de los componentes gráficos comunes en este tipo de interfaces son, el apuntador, dispositivo apuntador, iconos, menús, ventanas, y escritorio. Cada sistema operativo tiene su propia arquitectura gráfica. Figura 3. Interface gráfica Programación de sistemas operativos Programa desarrollado 12 Ciencias Exactas, Ingenierías y Tecnología | Ingeniería en Desarrollo de Software 12 Interface alternativas.- Este tipo de interfaces son poco utilizadas, pero de gran utilidad para pensar en alguna alternativa de seguridad, las interfaces alternativas pueden ser las que se basan en el reconocimiento de voz, la cual soporta un diálogo interactivo entre el usuario y una aplicación de software. Los dispositivos de interface neuronal, permiten a los usuarios aprovechar las señales eléctricas generadas por sus cuerpos para controlar una computadora o dispositivos eléctricos conectados entre sí. Interface de usuario.- Su principal objetivo es implementar interfaces que sean eficientes y efectivas al ser utilizadas por el usuario, el inicio de su desarrollo está en el planteamiento de prototipos de interfaces donde se determinan qué eventos ocurrirán y los procesos lógicos a dichos eventos. Existe una metodología para la etapa de pruebas conocida como pruebas de usabilidad, que puede validar el diseño de la interface y revelar áreas que requieran refinamiento. La finalidad de esta técnica es poder identificar el uso que le da el usuario en forma directa. Por ejemplo, se pude ensañar a los usuarios a que sepan plasmar la idea de mejoramiento de la interface, un usuario podría expresar qué desea: “quiero que en la parte superior de la interface gráfica, se pueda tener acceso a mis archivos almacenados”. Con este tipo de análisis se interactúa de forma directa con el usuario para que el desarrollador pueda ofrecer un mejoramiento en el diseño de las interfaces. 4.2.1. Principios sobre el diseño de interfaces Durante la etapa del diseño de interfaces, se deben de considerar diferentes principios relevantes para el diseño de los diferentes tipos de interfaces, como son: Sencillez.- Para evitar que los usuario tengan complicaciones con las interfaces al momento de estar utilizando el sistema, estas deben basarse en el principio de la sencillez, para hacerlas más fácil de entender e implementar. Integridad.- Con la finalidad de poder permitir utilizar todas las funciones del sistema, se debe basar su diseño en el principio de la integridad par que permita el uso completo. Programación de sistemas operativos Programa desarrollado 13 Ciencias Exactas, Ingenierías y Tecnología | Ingeniería en Desarrollo de Software 13 Eficiencia.- Para los usuarios, las llamadas al sistema deben ser de forma transparente, para ello la implementación de los mecanismos debe ser de forma eficiente, para el desarrollador debe ser intuitivo para poder tener una eficiencia del sistema. Con estos principios, al desarrollador le permitirá que el uso del sistema pueda ser del agrado de los usuarios. 4.2.2. Paradigmas Otros de los criterios que se deben considerar para poder establecer el diseño de las interfaces, se tienen algunas propuestas que se tienen para comenzar con el diseño de las interfaces. Los paradigmas tienen una importancia clave en la programación, pues por medio de estos se pueden crear planteamientos y bases para poder desarrollar un software. Al revisar los tipos de paradigmas de programación más comunes se encuentran: Imperativos.- Este tipo de paradigma es el considerado como el más común para el desarrollo de sistemas, basado en sentecias de cálculos sencillos e iterativas, asociadas a una direcciónde memoria, de forma que al final de la iteración represente el resultado correcto. Funcional.- Se basan en un tipo de programación en forma de funciones matemáticas. Lógico.- Para este paradigma se tienen definidas reglas lógicas que resuelven problemas planteados por el sistema. Orientado a objetos.- Su finalidad es encapsular estado y operaciones en objetos; poseen clases y herencias, los cuales se pueden comunicar entre ellos. Estructurado.- El código se divide en bloques, estructuras, que pueden o no comunicarse entre ellas, las cuales pueden ser controlados por secuencias, selección e interacción. Programación de sistemas operativos Programa desarrollado 14 Ciencias Exactas, Ingenierías y Tecnología | Ingeniería en Desarrollo de Software 14 Guiada por eventos.- La estructura de este paradigma y su ejecución de programas van determinados por los sucesos que ocurran en el sistema o que ellos mismos provoquen. 4.2.3. Llamadas al sistema Durante el desarrollo de las interfaces, las llamadas al sistema deben cumplir con el menor número de llamadas, es importante contar con un paradigma de datos unificador el cual será de mucha utilidad durante el proceso de diseño. Las llamadas al sistema no deberán interferir en la potencia del hardware -si el hardware cuenta con un mecanismo bastante eficiente para hacer algo sobre los mecanismo de acceso- y, si una llamada al sistema es rápida los usuarios siempre podrán construir interfaces más cómodas con base en ella. Como se mencionó con anterioridad, el sistema operativo para ser eficiente, debería de ofrecer el menor número de llamadas al sistema, por lo cual debe de cumplir con estos criterios: Se debe contar con un paradigma unificador de datos. Manejo de forma general de llamadas al sistema Procedimientos de biblioteca sencillos y específicos. Determinar la implementación de las llamadas al sistema sobre conexiones o sin conexiones. Otra consideración que va relacionada con la interfaz de llamadas al sistema es su visibilidad; algunos sistemas operativos como Unix reconoce las llamadas adicionales, así la lista de procesos es pública, en el caso de Windows no ha hecho públicas la lista de llamadas al sistema. La diferencia entre hacer público o no las listas, ayuda a los implementadores en la flexibilidad para cambiar las llamadas al sistema reales. Programación de sistemas operativos Programa desarrollado 15 Ciencias Exactas, Ingenierías y Tecnología | Ingeniería en Desarrollo de Software 15 La cantidad y tipo de llamadas al sistema, va en relación al sistema operativo y varían de uno a otro. Existen, por lo general: las llamadasal sistema para la ejecución de ficheros que contienen programas y para pedir más memoria dinámica para un programa. Actividad 2. Arquitectura del diseño del sistema operativo Linux Esta actividad tiene como propósito que distingas cómo está estructurada la arquitectura del sistema operativo Linux. 1. Investiga sobre la arquitectura del sistema operativo Linux, principios del diseño, paradigmas y llamadas al sistema. 2. Con base en la investigación, realiza elabora un archivo de texto que contenga los temas mencionados pero con enfoque en Linux. 3. Guarda la actividad con el nombre PSO_U4_A2_XXYZ. Sustituye las XX por las dos primeras letras del primer nombre, la Y por la inicial del apellido paterno y la Z por la inicial del apellido materno. 4. Envía el archivo a tu Facilitador(a) para recibir retroalimentación. 4.3. Implementación y desempeño Para la implementación de las aplicaciones en general es conveniente formar en tres apartados: Integración de todos los componentes. Objetos distribuidos. Servicios. Programación de sistemas operativos Programa desarrollado 16 Ciencias Exactas, Ingenierías y Tecnología | Ingeniería en Desarrollo de Software 16 En estructuras similares de datos para sistemas operativos, existe la posibilidad que uno sea más rápido que otro, pero también, puede ser que el sistema más rápido puede ser menos confiable que el sistema más lento. Tratar de realizar optimizaciones complejas en estructura del sistema operativo puede generar errores, para evitar estos errores es conveniente aplicarlos solo si son necesarias. Existen diferentes técnicas que pueden ser utilizadas para mejorar el desempeño en la estructura del sistema, las cuales se verán a continuación. 4.3.1. Estructura del sistema De acuerdo a todo lo que se ha comentado en capítulos anteriores, sobre Administración de procesador, memoria y dispositivos de E/S, así como la administración de archivos, seguridad y protección del sistema operativo, la parte que corresponde a la estructura del sistema operativo, sirve para dar referencia, saber porqué algunos sistemas operativos cuentan con más elementos que otros, como están arquitectónicamente construidos y el porqué adicionar o no servicios al sistema. Es importante tener muy en cuenta la etapa de análisis del sistema, ya que es aquí donde se tendrá línea para la etapa del desarrollo y para saber lo que se tiene que hacer, cómo hacerlo y cuál será su límite. La arquitectura de un sistema representa un paso hacia el desarrollo del mismo, una vez que se analizan y definen los requerimientos del usuario. El sistema quedará con todos los módulos o subsistemas para tener una estructura completa de los datos que se tendrán que procesar. Hoy en día existen diferentes tipos de sistemas operativos, dentro de los cuales están los más comunes: Monotarea.- Solo puede ejecutar una tarea únicamente. Multitarea.- Tiene la capacidad de ejecutar varias tareas. Monousuario.- Permite ser ocupado por un usuario único durante el tiempo de ejecución de sus procesos. Programación de sistemas operativos Programa desarrollado 17 Ciencias Exactas, Ingenierías y Tecnología | Ingeniería en Desarrollo de Software 17 Multiusuario.- Permite ser ocupado por dos o más usuarios durante el tiempo de ejecución de sus procesos. Monoproceso.- Solo puede gestionar un solo procesador Multiproceso.- Permite gestionar dos o más procesadores para gestionar la carga entre ellos. Cliente-Servidor.- Distribuye las tareas entre diferentes llamadas al sistema. Todos esos tipos de sistemas operativos tienen propiamente su estructura funcional, la cual variará dependiendo su tipo. Así como para cada tipo de sistema operativo hay diferentes tipos de estructuras, existen diferentes alternativas: Por capas y anillos.- En este tipo de estructura se contemplan seis capas para su formación: Capa 0, capa que se encarga de la administración de multiprogramación básica del microprocesador Capa 1, en esta capa se encarga de gestionar el espacio en la memoria. Capa 2, para esta capa su principal actividad es comunicar entre cada proceso y la consola del operador. Capa 3, en esta capa la gestión se enfoca sobre los dispositivos de E/S. Capa 4, esta capa se gestionan los programas de los usuarios. Capa 5, es donde se alojan los procesos del operador del sistema. Arquitectura Maquina virtual.- Esta arquitectura, alternativa de software, se vuelve cada vez más útil para el manejo de servidores y economizador de hardware, de tal forma que el sistema emula la existencia de hardware y el software convierte las peticiones a la maquina virtual en operaciones sobre la máquina física. Existen diferentes tipos de virtualización: IBM VM, las maquina virtuales se basaban en mono-tarea. Java VM, esta máquina permite la ejecución de códigos binarios en distintas plataformas. VMWare, tiene la facultad de poder ejecutar varias máquinas con distintas sesiones, Programación de sistemas operativos Programa desarrollado 18 Ciencias Exactas, Ingenieríasy Tecnología | Ingeniería en Desarrollo de Software 18 Citrix, al igual que vmware puede ejecutar varias máquinas con distintas sesiones, y con sus características propias del software que permite el manejo de dispositivos entre sus maquinas. Arquitectura kernel monolítico.- Esta arquitectura se define por la existencia de una colección de procedimientos y, de forma independiente, cada procedimiento podrá invocar a cualquiera de los otros, cada vez que requiere hacerlo, por medio su interface determinante a través de parámetros y resultados. Arquitectura microkernel y multihilado.- Este tipo de arquitectura, se basa en obtener la mayor funcionalidad del kernel, se limita para que se pueda ejecutar en modo privilegiado y que permita las modificaciones y extensiones de forma simple y sencilla. Arquitectura orientada a objetos.- Para este tipo de arquitecturas los recursos que provee el sistema operativo es por medio grafico u objetos. Arquitectura cliente-servidor.- En esta arquitectura el modelo principal de trabajo, se encarga en dividir los procesos independientes que operan entre ellos, lo cual es de utilidad para intercambiar información, recursos, procesos y servicios. Los nuevos desarrollos de sistemas operativos, tienen un panorama más amplio para su desarrollo. Cada uno de sus componentes arquitectónicos forma parte de un ejemplo de base de diseño. 4.3.2. Mecanismos en comparación con políticas Los mecanismos son parte de la estructura del sistema operativo, así como las políticas de los procesos de cada usuario; donde existirán estructuras, arreglos de datos y uniones. La separación de estos conceptos ayuda a la coherencia y estructura del sistema; como lo dice Tanenbaum (2003: 871), “Otro principio que ayuda a la coherencia arquitectónica, además de que evita que las cosas crezcan demasiado y las mantiene bien estructuradas, es el de separar el mecanismo y las políticas.” Las políticas pueden ser implementadas dentro del núcleo y las políticas fuera o dentro del mismo núcleo. Programación de sistemas operativos Programa desarrollado 19 Ciencias Exactas, Ingenierías y Tecnología | Ingeniería en Desarrollo de Software 19 La intención de permitir la mezcla de las estructuras contenidas por arreglos de enteros, de caracteres, miembros de la estructura y de uniones, permite definir un nuevo tipo de datos el cual puede ser utilizado como si fuera un tipo primitivo. La ortogonalidad, es la capacidad de poder combinar estos distintos tipos de formas independientes; ésta se basa en los principios de la sencillez e integridad para el desarrollo de un sistema, por lo que puede ser utilizada para separar los conceptos de procesos y subprocesos, donde un proceso es un contenedor de recursos y un subproceso es una entidad. 4.3.3. Estructuras estáticas o dinámicas Para el desarrollo de la arquitectura de un sistema operativo, por lo general suele utilizarse dos tipos de estructuras: Dinámicas. Este tipo de estructuras se distingue por ser más flexibles y permiten adaptarse a todos los recursos disponibles, pero tiene como desventaja de que requieren de un gestor de memoria dentro del sistema operativo. Estáticas. En este tipo de estructuras, se caracterizan por ser de más fácil comprensión, su programación es más simple y su uso es más rápido. El desarrollador deberá determinar qué tipo de estructura deberá utilizar para la implementación el desarrollo de su arquitectura, considerando espacios de procesos de usuario o espacio de procesos en núcleos. 4.3.4. Implementación descendente o ascendente Para la implementación de un sistema, existen diferentes tipos de técnicas que son de gran utilidad para llevar a cabo el proceso de implementación, entre las que están: Ocultación del hardware.- Esta técnica permite ocultar las interrupciones, convirtiéndolas en operaciones de sincronización entre hilos. El ocultar la Programación de sistemas operativos Programa desarrollado 20 Ciencias Exactas, Ingenierías y Tecnología | Ingeniería en Desarrollo de Software 20 arquitectura del hardware, permite facilitar la transportabilidad del sistema operativo. La fuente del sistema operativo debe ser única y una compilación condicional. Indirección.- Para esta técnica deberá existir cierta flexibilidad por parte del sistema operativo, ya que si por algún motivo el usuario da la entrada de algún proceso por medio del teclado, al pulsar la tecla puede obtener un valor que no corresponde con lo deseado, para solucionarlo debe existir la posibilidad de utilizar configuraciones distintas de teclados. Reentrabilidad.- En esta técnica se permite la ejecución de forma simultánea de algún fragmento de código, la ejecución se puede dar dentro de un multiprocesador o en un monprocesador -en este, pueden darse interrupciones cuando se ejecuten las mismas porciones del código al anterior. Para un buen proceso de la implementación de un sistema, podría verificarse la existencia de errores. Cuando una llamada al sistema falla, puede ser porque los ficheros no existen dentro del módulo o bien pertenecen a otro, se deben considerar la mayor parte de las pruebas al inicio del procedimiento para validar la ejecución de llamadas al sistema. 4.3.5. Principios de optimización Siempre que se tiene el sistema en proceso de implementación, se tiene en mente la comparación al pensarse: qué es más conveniente, un sistema operativo rápido, confiable o lento. La optimización compleja es común que genere errores de diseño, por lo cual es conveniente optimizar solo lo necesario dentro de la arquitectura del sistema. Al ver que se espera que un sistema sea sencillo y rápido o robusto y lento, deben considerarse las funciones que se desean adicionar a la estructura y validar si es necesario modificarla para su desempeño. Para dar a un sistema: seguridad, integridad y optimización -que sean suficientes para un buen desempeño-, es necesario dimensionar la arquitectura del sistema mismo y su optimización. Programación de sistemas operativos Programa desarrollado 21 Ciencias Exactas, Ingenierías y Tecnología | Ingeniería en Desarrollo de Software 21 4.3.6. Uso de cachés La cache es un medio de utilidad de almacenamiento temporal, su función es habilitar el acceso a datos que han sido recientemente consultados esto permite hacer más ágil el proceso de lectura. En el desarrollo de un sistema esta técnica en bastante conocida para mejorar el desempeño y velocidad al acceso de archivo, puede aplicarse en situaciones en las que es probable que se vaya a necesitar el mismo resultado varias veces. Por lo general se utiliza para aquellos dispositivos de E/S que requieran el mismo resultado en varias ocasiones. Existen diferentes tipos de caches entre los que están: Cache de bloques.- En este tipo de cache es un pequeño segmento de memoria RAM, que se añade algún sitio del disco con la finalidad de almacenar los datos que han sido leídos con anterioridad, teniendo como resultado agilidad al cargar los datos Cache de paginación.- Este tipo de cache se almacena en memoria RAM, dentro del disco duro. Actividad 3. Diagrama de flujo para la implementación de un SO En esta actividad realizarás un diagrama de flujo de cómo se debe realizar un sistema operativo. 1. En un archivo de texto realiza un diagrama de flujo considerando la implementación y el desempeño de un SO. 2. Guarda la actividad con el nombre PSO_U4_A3_XXYZ. Sustituye las XX por las dos primeras letras del primer nombre, la Y por la inicial del apellido paterno y la Z por la inicial del apellido materno. 3. Envía el archivo a tu Facilitador(a) para recibir retroalimentación. Programación de sistemas operativos Programa desarrollado 22Ciencias Exactas, Ingenierías y Tecnología | Ingeniería en Desarrollo de Software 22 Actividad 4. Cómo optimizar Windows El propósito de esta actividad es que realices una investigación en Internet y busques comentarios y opiniones de personas que tienen experiencia en el uso del sistema operativo Windows. 1. Investiga acerca de cómo se podría optimizar Windows (qué se recomienda para que funcione mejor, con menos o más ventanas, más memoria, etc.) 2. En un archivo de texto reporta tu investigación y recomendaciones. Guarda la actividad con el nombre PSO_U4_A4_XXYZ. Donde XX es tu apellido(s) y YY nombre(s). 3. Envía el archivo a tu Facilitador(a) para recibir retroalimentación. Autoevaluación Para reforzar los conocimientos relacionados con los temas que se abordaron en esta tercera unidad del curso, es necesario que resuelvas la actividad integradora. Recuerda que es muy importante leer cuidadosamente los planteamientos indicados y elegir la opción adecuada para cada uno. Evidencia de aprendizaje. Diagrama de flujo para diseñar un sistema operativo Como parte de la evaluación de esta unidad, debes llevar a cabo una actividad cuyo propósito es conceptuar el proceso de diseño de un sistema operativo. Programación de sistemas operativos Programa desarrollado 23 Ciencias Exactas, Ingenierías y Tecnología | Ingeniería en Desarrollo de Software 23 1. En un archivo de realiza un diagrama de flujo de cómo al diseñar un sistema operativo afectan todos los temas y subtemas de esta unidad en el orden y forma que consideres deben irse resolviendo para realizar un buen diseño de un sistema operativo. 2. Guarda la evidencia con el nombre PSO_U4_EA_XXYZ. Sustituye las XX por las dos primeras letras del primer nombre, la Y por la inicial del apellido paterno y la Z por la inicial del apellido materno. 3. Envía el archivo a tu Facilitador(a) para recibir retroalimentación. Autorreflexiones Además de enviar tu trabajo de la Evidencia de aprendizaje, es importante que ingreses al foro Preguntas de Autorreflexión y consultes las preguntas que tu Facilitador(a) presente, a partir de ellas, debes elaborar tu Autorreflexión en un archivo de texto llamado PSO_U4_ATR_XXYZ. Posteriormente envía tu archivo mediante la herramienta Autorreflexiones. Cierre de la unidad Has concluido la cuarta unidad del curso. A lo largo de ésta se vieron conceptos básicos sobre diseño de sistemas operativos, las bases del diseño, diseño de interfaces y la implementación y diseño final con temas como la visión profesional del diseño, cuestiones básicas y conceptos generales, los principios del diseño, paradigmas y llamadas al sistema y por ultimo los subtemas de estructura, sus mecanismos sus estructuras, su implementación la optimización y el manejo de los caches. Es aconsejable que revises nuevamente la unidad en caso de que los temas que se acaban de mencionar no te sean familiares o no los recuerdes, de no ser este tu caso, ya estás listo para terminar esta materia de Programación de Sistemas Operativos. Programación de sistemas operativos Programa desarrollado 24 Ciencias Exactas, Ingenierías y Tecnología | Ingeniería en Desarrollo de Software 24 Para saber más Si deseas saber acerca de cómo se crea un diagrama de flujo, consulta la siguiente dirección electrónica: Cómo crear un diagrama de flujo http://www.educarchile.cl/UserFiles/P0029/File/Objetos_Didacticos/ELO_12_ELE/ Recursos_para_la_Actividad/Como_crear_un_Diagrama_de_Flujo.pdf Fuentes de consulta Candela, S. y García, C. (2007) Fundamentos de Sistemas Operativos. Teoría y ejercicios resueltos. España: Paraninfo. Ortiz, H. (2005) Sistemas Operativos Modernos. Colombia: Medellin. Tanenbaum, A (2003) Sistemas Operativos Modernos. Mexico: Pearson Educación. Stallings, W. (2005) Sistemas Operativos Modernos: Aspectos Internos y principios de diseño. México: Pearson, Prentice Hall Silberschatz, A (2006) Fundamentos de Sistemas Operativos.España: Mc. Graw Hill. http://www.educarchile.cl/UserFiles/P0029/File/Objetos_Didacticos/ELO_12_ELE/Recursos_para_la_Actividad/Como_crear_un_Diagrama_de_Flujo.pdf http://www.educarchile.cl/UserFiles/P0029/File/Objetos_Didacticos/ELO_12_ELE/Recursos_para_la_Actividad/Como_crear_un_Diagrama_de_Flujo.pdf
Compartir