FRANCISCO JAVIER PRIEGO BRITO MATRICULA AL10512342 ASESORA: LAURA ANTONIA TOVAR MONTERO CARRERA DESARROLLO DE SOFTWARE MATERIA: PROGRAMACION DE SISTEMAS OPERATIVOS EVIDENCIA DE APRENDIZAJE UNIDAD 4 Llevar a cabo una actividad cuyo propósito es conceptuar el proceso de diseño de un sistema operativo. Realiza un diagrama de flujo de cómo al diseñar un sistema operativo Índice Diagrama de flujo para diseñar un Sistema Operativo. 3 Visión del diseño. 3 Cuestiones, conceptos y características generales a considerar en el diseño. 4 Principios del diseño. 6 Paradigmas del Sistema. 6 Llamadas al sistema. 7 Estructuras generales del diseño. 7 Estructuras estáticas o dinámicas para el diseño del SO 8 Implementación optimización y usos de caches. 8 Conclusión. 10 Fuentes de consulta. 10 Diagrama de flujo para diseñar un Sistema Operativo. VISIÓN DEL DISEÑO. 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. 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. 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. · Amplitud de funciones y administrador de errores.- Aumentar las posibilidades de multiprocesamiento de los sistemas operativos, para permitir la ejecución de varias aplicaciones sin que el sistema operativo colapse. · Estandarización.- e es necesaria una estandarización para tratar de establecer una comunicación entre las diferentes arquitecturas. 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. · Conectividad del sistema operativo. · Orientación a objetos. · Aplicaciones cliente/servidor. · Servicios CUESTIONES, CONCEPTOS Y CARACTERÍSTICAS GENERALES A CONSIDERAR EN 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. Aspectos básicos a tomar en cuenta para el diseño de un sistema operativo: · Transparencia. Se refiere a la facilidad de acceso a los archivos y servicios sin la necesidad de conexión en red de servidores remotos, esto facilita la llamada el sistema mediante la llamada de las interfaces. · Flexibilidad. Se refiere a la facilidad de acceso a su núcleo monolítico a sus principales servicios, ya que la mayoría de las llamadas a sistema se realizan mediante el señalamiento al núcleo, permitiendo de esta manera que los servicios más pesados se puedan obtener a partir de los servidores a nivel de usuario. · Confiabilidad. Se considera una de las partes de mayor importancia, ya que interviene la parte de la seguridad en el manejo de toda la estructura; protección de recursos y tolerancia de fallos, por otra parte una confiabilidad en la ejecución de servicios simultáneos. · Desempeño. Va de la mano con la confiabilidad, pues al proporcionar una confiabilidad en la ejecución de servicios simultáneos, hace referencia a las tareas multiproceso, ya que de esta forma su desempeño se ve optimizado. · Estabilidad. Es su capacidad de adaptarse a las constantes evoluciones de sus componentes (Hardware/software), para poder estar al día con los requerimientos y poder mejorar sus procesos y gestión de recursos. · Portabilidad. Es sin duda una parte esencial el que un SO pueda ofreces un entorno de portabilidad, ya que esto representa la facilidad de la ejecución de diferentes aplicaciones independientemente de la arquitectura. · Interfaz. Su facilidad de manipulación por el usuario final en la parte de mayor trascendencia, ya que mientas más fácil su uso será mayor su aceptación. 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 entre ellos; 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. 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. Diseño de interfaces, no se puede dejar de lado el cómo los usuarios interactúan con la computadora y, a través de ésta manejan un sistema y todas sus aplicaciones. Los diferentes tipos de interfaces que se tienen consideradas para el desarrollo de un sistema son: · Interacción humano-computadora.- Diseño, construcción e implementación de sistemas de cómputo interactivos centrados en el usuario. · Interface basada en 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. · Interface gráfica de usuario.- Iconos y menús tanto para para realizar comandos, como para abrir archivos o ejecutar alguna acción dentro de la aplicación. · 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. · Interface de usuario.- Su principal objetivo es implementar interfaces que sean eficientes y efectivas al ser utilizadas por el usuario. PRINCIPIOS DEL DISEÑO. 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. 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. PARADIGMAS DEL SISTEMA. 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. · Imperativos.- El más común para el desarrollo de sistemas, basado en sentencias de cálculos sencillos e iterativas, asociadas a una dirección de 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. · 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. LLAMADAS AL SISTEMA. Las llamadas al sistema no deberán interferir en la potencia del hardware, 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. ESTRUCTURAS GENERALES DEL DISEÑO. Para la implementación de las aplicaciones en general es conveniente formar en tres apartados: 1. Integración de todos los componentes. 2. Objetos distribuidos. 3. Servicios. La parte que corresponde a la estructura del sistema operativo, sirve para dar referencia, saber por qué algunos sistemas operativos cuentan con más elementos que otros, como están arquitectónicamente construidos y el por qué adicionar o no servicios al sistema. El sistema quedará con todos los módulos o subsistemas para tener una estructura completa de los datos que se tendrán que procesar. Tipos de sistemas operativos: 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. 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. Por capas y anillos.- En este tipo de estructura se contemplan seis capas para su formación. Arquitectura Máquina virtual.- El sistema emula la existencia de hardware y el software convierte las peticiones a la máquina virtual en operaciones sobre la máquina física ESTRUCTURAS ESTÁTICAS O DINÁMICAS PARA EL DISEÑO DEL SO 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. · 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. IMPLEMENTACIÓN OPTIMIZACIÓN Y USOS DE CACHES. 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. 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; mejora 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. 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. Conclusión. Todo sistema operativo tiene que tener una plataforma de hardware donde puede ser ejecutado, por lo cual debe de estar bien diseñado con los componentes adecuados para ese sistema operativo en común , en otras palabras debe de tener una arquitectura basada en en el sistema que se va usar, todos los elementos tienen un papel importante para desarrollar el sistema operativo desde los dispositivos de entrada y salida como los dispositivos electrónicos que son parte del hardware requerido, no olvidemos la seguridad que es muy importante porque de no tener seguridad el sistema operativo seria vulnerable a las amenazas informáticas. Fuentes de consulta. Diseño y desarrollo de un sistema de reservas para una empresa de taxis. http://riunet.upv.es/bitstream/handle/10251/11144/memoria.pdf?sequence=1 Etapas de desarrollo de un sistema informático. http://miuniversodigital.com/2011/11/etapas-en-el-desarrollo-de-un-sistema-informatico/ FRANCISCO JAVIER PRIEGO BRITO MATRICULA AL10512342 � � � Inicio del Proyecto Definición del alcanze Mono tarea Multitarea Monoproceso Multiproceso Cliente- servidor Tareas Usuarios Kernel monolítico Microkernel Y multihilado Orientado a objetos Maquina Virtual Cliente servidor Por capa y Anillos Estructura Estáticas Facil Dinámicas Flexible Ocultación de hardware Indirección Reentrabilidad Tipo Sistema Operativo