Logo Studenta

Unidad_4 _Diseno_de_Sistemas_Operativos

¡Este material tiene más páginas!

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

Continuar navegando

Materiales relacionados