Libro Programación de Sistemas Operativos.pdf

August 10, 2017 | Author: joseruizhot | Category: Process (Computing), Central Processing Unit, Computer Program, Operating System, Computer Memory
Share Embed Donate


Short Description

Download Libro Programación de Sistemas Operativos.pdf...

Description

Programación de sistemas operativos Programa desarrollado

Carrera: Desarrollo de Software

Cuarto cuatrimestre

Programa de la asignatura: Programación de Sistemas Operativos

Clave: 160920415 / 150920415

Ciencias Exactas, Ingenierías y Tecnología | Ingeniería en Desarrollo de Software

1

Programación de sistemas operativos Programa desarrollado Índice

I. INFORMACIÓN GENERAL DE LA ASIGNATURA ............................................. 7 a. Ficha de identificación ............................................................................................................. 7 b. Descripción ............................................................................................................................... 7 c. Fundamentación teórica de la asignatura ............................................................................ 8 d. Propósito ................................................................................................................................... 9 e. Competencia(s) a desarrollar ................................................................................................. 9 f. Temario ..................................................................................................................................... 10 g. Metodología de trabajo ......................................................................................................... 11 h. Evaluación ............................................................................................................................... 12 i. Fuentes de consulta ................................................................................................................ 13

II. DESARROLLO DE CONTENIDOS POR UNIDAD ........................................... 14 UNIDAD 1. ADMINISTRACIÓN DE PROCESADOR, MEMORIA Y DISPOSITIVOS E/S .............................................................................................. 14 Propósito ...................................................................................................................................... 15 Competencia específica ............................................................................................................ 15 Presentación de la unidad......................................................................................................... 15 Actividad 1. Presentación .......................................................................................................... 16 1.1. Procesador........................................................................................................................... 16 1.1.1. Definición y conceptos .................................................................................................... 18 1.1.2. Procesos e hilos .............................................................................................................. 19 1.1.3. Multiprocesamiento ......................................................................................................... 24 1.1.4. Paralelismo ....................................................................................................................... 24 Actividad 2. Administración del Procesador ........................................................................... 25 1.2. Memoria ............................................................................................................................... 26

Ciencias Exactas, Ingenierías y Tecnología | Ingeniería en Desarrollo de Software

2

Programación de sistemas operativos Programa desarrollado 1.2.1. Administración de la memoria ....................................................................................... 26 1.2.2. Jerarquía de la memoria ................................................................................................ 28 1.2.3. Multiprogramación con particiones fijas y variables................................................... 28 1.2.4. Memoria real .................................................................................................................... 30 1.2.5. Memoria virtual ................................................................................................................ 32 Actividad 3. Mapa conceptual del manejo de la memoria .................................................... 33 1.3. Entrada / Salida................................................................................................................... 34 1.3.1. Principios de hardware y software de I / O.................................................................. 35 1.3.2. Dispositivos y manejadores de dispositivos ................................................................ 36 1.3.3. Mecanismos y funciones de manejadores de dispositivos ....................................... 38 1.3.4. Estructura de datos en el manejo de dispositivos ...................................................... 41 1.3.5. Operaciones de E / S ...................................................................................................... 43 Actividad 4. Dispositivos de Entrada y Salida ........................................................................ 45 Autoevaluación ........................................................................................................................... 46 Evidencia de aprendizaje. Administración del procesador, memoria y los dispositivos de entrada y salida........................................................................................................................... 46 Cierre de la unidad ..................................................................................................................... 47 Para saber más........................................................................................................................... 47 Fuentes de consulta ................................................................................................................... 48

UNIDAD 2. ADMINISTRADOR DE SISTEMAS DE ARCHIVOS .......................... 49 Presentación de la unidad......................................................................................................... 49 Propósito ...................................................................................................................................... 49 Competencia específica ............................................................................................................ 50 2.1. Sistemas de Archivos......................................................................................................... 50 2.1.1. Concepto........................................................................................................................... 52

Ciencias Exactas, Ingenierías y Tecnología | Ingeniería en Desarrollo de Software

3

Programación de sistemas operativos Programa desarrollado 2.1.2. Jerarquía de datos .......................................................................................................... 53 Actividad 1. Sistema de archivo ............................................................................................... 56 2.2. Tipo de Archivos ................................................................................................................. 56 2.2.1. Real ................................................................................................................................... 58 2.2.2. Virtual ................................................................................................................................ 58 2.2.3. Componentes ................................................................................................................... 59 Actividad 2. Tipos de archivos más comunes en sistema operativo .................................. 60 2.3. Organización del sistema de archivos, lógica y física................................................... 61 2.3.1. Operaciones con archivos.............................................................................................. 63 2.3.2. Implementación de archivos .......................................................................................... 64 Actividad 3. Mapa conceptual de la organización del sistema de archivos ...................... 67 Autoevaluación ........................................................................................................................... 68 Evidencia de aprendizaje. Manejo de archivos en Linux (debían, fedora, Ubuntu) y Windows....................................................................................................................................... 68 Cierre de la unidad ..................................................................................................................... 69 Para saber más........................................................................................................................... 69 Fuentes de consulta ................................................................................................................... 69

UNIDAD 3. SEGURIDAD Y PROTECCIÓN .......................................................... 71 Presentación de la unidad......................................................................................................... 71 Propósito ...................................................................................................................................... 71 Competencia específica ............................................................................................................ 71 3.1. Entorno de Seguridad ........................................................................................................ 72 Actividad 1. Seguridad y protección dentro del diseño de un sistema operativo ............. 77 3.1.1. Clasificaciones de la seguridad ..................................................................................... 77 3.1.2. Verificación de autenticidad de usuarios ..................................................................... 78

Ciencias Exactas, Ingenierías y Tecnología | Ingeniería en Desarrollo de Software

4

Programación de sistemas operativos Programa desarrollado 3.1.3. Validación y amenazas al sistema................................................................................ 79 Actividad 2 Tabla de elementos que afectan la seguridad de un sistema ........................ 80 3.2. Concepto y objetivos de protección ................................................................................. 81 3.2.1. Mecanismos de protección ............................................................................................ 82 3.2.2. Funciones del sistema de protección ........................................................................... 83 3.2.3. Implementación de matrices de acceso....................................................................... 84 Actividad 3. Cuadro sinóptico de los mecanismos de protección ....................................... 85 Autoevaluación ........................................................................................................................... 85 Evidencia de aprendizaje. Diagrama de flujo del sistema operativo .................................. 86 Cierre de la unidad ..................................................................................................................... 86 Para saber más........................................................................................................................... 87 Fuentes de consulta ................................................................................................................... 87

UNIDAD 4. DISEÑO DE SISTEMAS OPERATIVOS ............................................ 88 Presentación de la unidad......................................................................................................... 88 Propósito ...................................................................................................................................... 88 Competencia específica ............................................................................................................ 88 4.1. Base del diseño de sistemas operativos ......................................................................... 89 4.1.1. La visión profesional del diseño .................................................................................... 90 4.1.2. Cuestiones básicas sobre el diseño ............................................................................. 91 4.1.3. Conceptos generales de una arquitectura .................................................................. 93 4.1.4. Características diferenciales del diseño ...................................................................... 94 Actividad 1. Diseño de un sistema operativo ......................................................................... 95 4.2. Diseño de interfaces........................................................................................................... 95 4.2.1. Principios sobre el diseño de interfaces ...................................................................... 98 4.2.2. Paradigmas ...................................................................................................................... 98

Ciencias Exactas, Ingenierías y Tecnología | Ingeniería en Desarrollo de Software

5

Programación de sistemas operativos Programa desarrollado 4.2.3. Llamadas al sistema ....................................................................................................... 99 Actividad 2. Arquitectura del diseño del sistema operativo Linux ..................................... 100 4.3. Implementación y desempeño ........................................................................................ 101 4.3.1. Estructura del sistema .................................................................................................. 101 4.3.2. Mecanismos en comparación con políticas............................................................... 104 4.3.3. Estructuras estáticas o dinámicas .............................................................................. 104 4.3.4. Implementación descendente o ascendente............................................................. 105 4.3.5. Principios de optimización............................................................................................ 106 4.3.6. Uso de cachés ............................................................................................................... 106 Actividad 3. Diagrama de flujo para la implementación de un SO ................................... 107 Actividad 4. Cómo optimizar Windows .................................................................................. 107 Autoevaluación ......................................................................................................................... 108 Evidencia de aprendizaje. Diagrama de flujo para diseñar un sistema operativo .......... 108 Cierre de la unidad ................................................................................................................... 109 Para saber más......................................................................................................................... 109 Fuentes de consulta ................................................................................................................. 110

Ciencias Exactas, Ingenierías y Tecnología | Ingeniería en Desarrollo de Software

6

Programación de sistemas operativos Programa desarrollado

I. Información general de la asignatura

a. Ficha de identificación Nombre de la Ingeniería: Nombre del curso o asignatura Clave de asignatura:

Desarrollo de software

Seriación:

No aplica

Cuatrimestre:

Cuarto

Horas contempladas:

72

Programación de Sistemas Operativos 160920415 / 150920415

b. Descripción Para que una computadora pueda hacer funcionar alguna aplicación o programa, debe realizar varias actividades, que a veces no nos imaginamos, estas operaciones están dadas con la forma en que se comunican el procesador, la memoria y los dispositivos. Bien sabemos que una computadora en la actualidad contiene uno o mas procesadores, memoria RAM y memoria de almacenamiento tales como discos duros, además de ranuras de expansión en las que se colocan tarjetas como tarjetas de video, red, cada uno de los cuales funcionan de manera transparente a nuestros ojos es decir no nos preocupamos por el manejo físico simplemente los usamos ejemplo al guardar un archivo en el disco duro no tenemos que manipular como se mueve el lector y cuantos y cual espacio físico va a utilizar y el como se guarda ahí, para poder controlar esto tendríamos que ser expertos en electrónica y muchas más cosas.

La asignatura de Programación de sistemas operativos es continuidad de la materia Sistemas Operativos y primordial para quienes están estudiando una licenciatura en la que se diseñen programas; por lo mismo, los conocimientos y habilidades que desarrollen en este curso serán indispensables para la mayoría de las asignaturas subsecuentes del plan de estudios, tal es el caso de Bases de datos, Programación orientada a objetos, Programación web, Estructura de datos, entre otras. Los estudiantes que cursen esta asignatura podrán deducir la manera en que el sistema operativo lleva a cabo todos sus controles, para esto se ha desglosado el contenido de la

Ciencias Exactas, Ingenierías y Tecnología | Ingeniería en Desarrollo de Software

7

Programación de sistemas operativos Programa desarrollado materia en 4 unidades que abordan lo siguiente: la primera unidad habla sobre la administración del procesador de la memoria y de los dispositivos de entrada y salida, la segunda unidad trata sobre la manipulación que se tiene en el sistema de archivos, la tercera aborda cómo los conocimientos de seguridad indispensables y se abarcarán técnicas de protección de acceso al sistema y en la cuarta la bases el diseño de interfaces la implementación y el desempeño que implica el diseño de sistemas operativos

c. Fundamentación teórica de la asignatura La asignatura de Programación de Sistemas Operativos, tiene como finalidad principal el mostrar cómo se programa un sistema operativo, distinguiendo cómo administra el procesador, la memoria y los dispositivos de entrada y salida que conocemos tales como teclado, monitor, mouse, etc. Así, al identificar cómo el sistema operativo interactúa con estos elementos mencionados, determinarás los procesos que se siguen en cada uno de ellos. Otra parte importante de esta asignatura es que identifiques qué procesos sigue el sistema de archivos, cómo es manejado y organizado por el sistema operativo, sin dejar de tomar en cuenta la parte de seguridad y protección utilizando las funciones técnicas en cuanto a políticas y mecanismos, de éstas. Aplicando las características que conforman la parte física de una máquina, el manejo de archivos, su seguridad y protección, Así se podrá diseñar y entender como es la implementación y el desempeño del Sistema Operativo. Desde el inicio en la primera unidad, el estudiante interactuará con las herramientas del aula virtual, como lo son foros, bases de datos. Posteriormente, se llevarán a cabo trabajos, así como también se realizarán actividades de investigación que complementen los contenidos, lo que permita ejercitar y presentar sus evidencias de aprendizaje de los temas vistos en cada unidad. El enfoque teórico metodológico en el cual se sustenta la asignatura es un enfoque mixto, donde se considerarán los siguientes aspectos:  Criterio cuantitativo: número de aportaciones: mínimo 2/tema a discutir.  Criterio cualitativo a través de escalas: o Excelente: 100 o Bien: 80 o Regular: 60 o Insuficiente: 50

Ciencias Exactas, Ingenierías y Tecnología | Ingeniería en Desarrollo de Software

8

Programación de sistemas operativos Programa desarrollado

d. Propósito Si bien recordamos un sistema operativo controla y coordina el hardware con el software, siendo la interfaz de comunicación entre el hardware y el usuario, hasta ahora sólo participábamos como usuarios del mismo, sin preocuparnos por cómo funciona realmente. Exigimos que sea rápido, que tenga rendimiento y buena gestión de recursos, es decir que este optimizando el uso del hardware, queremos que el sistema sea fácil de usar, pero rara vez nos preguntamos cómo funciona o cómo controla cada uno de estos accesos. El propósito inicial de esta materia es identificar como el sistema operativo internamente controla y coordina al procesador, a la memoria, los dispositivos de entrada y salida; además cómo maneja los archivos para un buen control, desde luego sin dejar de tomar en cuenta los niveles de seguridad y protección que exigimos como usuarios, para lo más valioso que manejamos que es la información, de manera que visualizamos el SO (Sistema Operativo) como el que controla y asigna los recursos. Teniendo en cuenta todos estos conceptos, se realza el propósito final de esta materia, que es identificar el diseño de un sistema operativo, desde su base, su interfaz y su implementación.

e. Competencia(s) a desarrollar Competencia general: Emplear las distintas partes que conforman un sistema operativo para la administración eficaz de los recursos utilizando las diferentes herramientas del diseño.

Competencias específicas:  Describir la administración del procesador, memoria y dispositivos de entrada y salida para reconocer las características que los distingue como interactúan con el sistema operativo mediante las transiciones entre ellos.  Identificar el proceso que siguen los archivos para la administración y buen manejo de los mismos con el análisis mediante la lógica que sigue el sistema.  Utilizar las funciones y técnicas para validar las amenazas de un sistema como políticas y mecanismos mediante la diferenciación de seguridad y protección.

Ciencias Exactas, Ingenierías y Tecnología | Ingeniería en Desarrollo de Software

9

Programación de sistemas operativos Programa desarrollado 

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.

f. Temario Unidad 1. Administración de Procesador, memoria dispositivos E/S 1.1. Procesador 1.1.1. Definición y conceptos 1.1.2. Procesos e hilos 1.1.3. Multiprocesamiento 1.1.4. Paralelismo 1.2. Memoria 1.2.1. Administración de la memoria 1.2.2. Jerarquía de la memoria 1.2.3. Multiprogramación con particiones fijas y variables 1.2.4. Memoria real 1.2.5. Memoria virtual 1.3. Entrada/Salida 1.3.1. Principios de hardware y software de I/O 1.3.2. Dispositivos y manejadores de dispositivos 1.3.3. Mecanismos y funciones de manejadores de dispositivos 1.3.4. Estructura de datos en el Manejo de dispositivos 1.3.5. Operaciones de E/S Unidad 2. Administrador de Sistemas de Archivos 2.1 . Sistemas de Archivos 2.1.1 Concepto 2.1.2 Jerarquía de datos 2.2 . Tipo de Archivos 2.2.1 Real 2.2.2 Virtual 2.2.3 Componentes 2.3 . Organización del sistema de archivos, lógica y física 2.3.1 Operaciones con archivos 2.3.2 Jerarquía de Datos Unidad 3. Seguridad y Protección

Ciencias Exactas, Ingenierías y Tecnología | Ingeniería en Desarrollo de Software

10

Programación de sistemas operativos Programa desarrollado 3.1 Entorno de Seguridad 3.1.1 Clasificaciones de la seguridad 3.1.2 Verificación de autenticidad de usuarios 3.1.3 Validación y amenazas al sistema 3.2 Concepto y objetivos de protección 3.2.1 Mecanismos de protección 3.2.2 Funciones del sistema de protección 3.2.3 Implementación de matrices de acceso Unidad 4. Diseño de Sistemas Operativos 4.1. Base del diseño de sistemas operativos 4.1.1. La visión profesional del diseño 4.1.2. Cuestiones básicas sobre el diseño 4.1.3. Conceptos Generales de una arquitectura 4.1.4. Características diferenciales del diseño 4.2. Diseño de interfaces 4.2.1. Principios sobre el diseño de interfaces 4.2.2. Paradigmas 4.2.3. Llamadas al sistema 4.3. Implementación y desempeño 4.3.1. Estructura del sistema 4.3.2. Mecanismos en comparación con políticas 4.3.3. Estructuras estáticas o dinámicas 4.3.4. Implementación descendente o ascendente 4.3.5. Principios de optimización 4.3.6. Uso de cachés

g. Metodología de trabajo El Aprendizaje Basado en la Resolución de Problemas como metodología de aprendizaje aplicada a la asignatura permitirá que se presenten situaciones diversas para que se lleve a cabo la aplicación de diagramas de flujo y procedimientos, así mismo rutinas que permitan ejercitar y poner en práctica conocimientos y procedimientos que promuevan el reforzamiento de lo aprendido o la resolución de dudas; así como el aprendizaje significativo, al comprobar los elementos teóricos. Al aplicar este tipo de metodología en la asignatura, también se toman en cuenta:  El uso de las siguientes herramientas tecnológicas: a) un foro general al inicio de la asignatura cuyo propósito es favorecer la comunicación y el conocimiento entre los estudiantes, b) foros que sirven como base para participar en temas propuestos y

Ciencias Exactas, Ingenierías y Tecnología | Ingeniería en Desarrollo de Software

11

Programación de sistemas operativos Programa desarrollado obtener un mayor conocimiento acerca de los temas de cada unidad y c) bases de datos para trabajar tablas descriptivas y comparativas sobre diversos temas de la asignatura.  La realización de actividades formativas, entre las que destacan: tareas en las que se analiza el tema y se selecciona un ejemplo u otras en las que dado un ejemplo específico se pide entregar documentación según sea solicitado, también investigaciones y diseñar diagramas como parte final para la aplicación del conocimiento adquirido.  La construcción del portafolio de evidencias (e-portafolio) elaboración de cuadro sinóptico para evidenciar el conocimiento adquirido, un documento referenciando la unidad 2 y diagramas de flujo para las siguientes unidades que reflejan los temas abordados en cada una de las unidades que integran la asignatura.  La realización de actividades de auto-evaluación que den cuenta del grado de aprendizaje adquirido y refuercen los conocimientos.

h. Evaluación En el marco del Programa ESAD, la evaluación se conceptualiza como un proceso participativo, sistemático y ordenado que inicia desde el momento en que el estudiante ingresa al aula virtual. Por lo que se le considera desde un enfoque integral y continuo. Por lo anterior, para aprobar la asignatura, se espera la participación responsable y activa del estudiante así como una comunicación estrecha con su facilitador para que pueda evaluar objetivamente su desempeño. Para lo cual es necesaria la recolección de evidencias que permitan apreciar el proceso de aprendizaje de contenidos: declarativos, procedimentales y actitudinales. En este contexto la evaluación es parte del proceso de aprendizaje, en el que la retroalimentación permanente es fundamental para promover el aprendizaje significativo y reconocer el esfuerzo. Es requisito indispensable la entrega oportuna de cada una de las tareas, actividades y evidencias así como la participación en foros y demás actividades programadas en cada una de las unidades, y conforme a las indicaciones dadas. La calificación se asignará de acuerdo con la rúbrica establecida para cada actividad, por lo que es importante que el estudiante la revise antes realizarla. A continuación presentamos el esquema general de evaluación. ESQUEMA DE EVALUACIÓN Evaluación Interacciones individuales y continua colaborativas

10%

Ciencias Exactas, Ingenierías y Tecnología | Ingeniería en Desarrollo de Software

12

Programación de sistemas operativos Programa desarrollado

E-portafolio. 50% Examen CALIFICACIÓN FINAL

Tareas Evidencias Autorreflexiones

30% 40% 10% 10% 100%

Cabe señalar que para aprobar la asignatura, se debe de obtener la calificación mínima indicada por ESAD.

i. Fuentes de consulta Bibliografía básica  Stallings, W. (2007) Sistemas Operativos. México: Pearson Prentice Hall.  Stallings, W. (2007) Sistemas Operativos: aspectos internos y principios de diseño. Pearson Prentice Hall.  Tanenbaum, A. (2003) Sistemas Operativos Modernos. México: Pearson Prentice Hall.  Tanenbaum, A. (2009) Sistemas Operativos: diseño e implementación. México: Pearson Prentice Hall. Bibliografía complementaria  Morera, J. y Pérez, J. (2002) Conceptos de Sistemas Operativos. Madrid: Comillas.

Ciencias Exactas, Ingenierías y Tecnología | Ingeniería en Desarrollo de Software

13

Programación de sistemas operativos Programa desarrollado

II. Desarrollo de contenidos por unidad Unidad 1. Administración de Procesador, memoria y dispositivos E/S El procesador esta formado por planificadores en los cuales se decide que se va a ejecutar primero y que se ejecuta después, además de a que le va a dar respuesta de manera inmediata y que puede esperar, todo esto con la finalidad de optimizar varios puntos tales como: velocidad en respuesta, certeza, excelencia en respuesta, etc., entendiendo así a los planificadores como las partes lógicas del procesador que analizan los datos recibidos y toman decisiones de respuesta en cuanto velocidad y prioridad.

Existen diferentes tipos de planificadores en un procesador los cuales se enlistan a continuación: 

Planificador a largo plazo: En este, el procesador decide el orden de ejecución con una adecuada organización de los recursos para que el trabajo se ejecute de forma ordenada y eficiente según el modo de procesamiento.



Planificador a medio plazo: Este planificador es responsable de cargar y descargar trabajos desde el disco a la memoria y de la memoria al disco considerando el grado de sobrecarga del sistema.



Planificador a corto plazo: Es quien decide cuándo, cómo y por cuánto tiempo recibe el procesador un proceso que está preparado para ejecutar.

Así consideraremos como primer componente para que un sistema operativo funcione es el procesador. El segundo componente es la memoria, la principal necesidad para cualquier sistema operativo es el que la memoria sea rápida para que al ejecutar una instrucción el CPU o procesador, no se vea afectado por la memoria de bajo rendimiento. Dentro de un sistema operativo, la memoria no es el único recurso que debe administrarse, los dispositivos de Entrada/Salida también interactúan con el sistema operativo y por lo regular constan de dos partes: una tarjeta controladora y el dispositivo en sí, la tarjeta controladora es un chip o un conjunto de chips montados en una tarjeta insertable, que controla físicamente al dispositivo. Dicha controladora acepta comandos del sistema operativo y los ejecuta.

Ciencias Exactas, Ingenierías y Tecnología | Ingeniería en Desarrollo de Software

14

Programación de sistemas operativos Programa desarrollado

Considerando entonces que el tercer componente son los dispositivos en si. Los dispositivos tienen interfaces relativamente simples, debido a que no tienen mucha capacidad para estandarizarlos, esto último es necesario para que cualquier controladora de disco IDE pueda manejar cualquier disco IDE (Electrónica Integrada en la Unidad, integrated drive electronics. Por sus siglas en ingles).

Propósito Identificar cómo el Sistema Operativo interactúa, maneja el control del procesador y sus procesos, de la memoria y sus tipos particiones y administración; sin dejar de tomar en cuenta el control de los dispositivos de E/S; sus principios, manejadores, mecanismos, estructuras y operaciones.

Competencia específica Describir la administración del procesador, memoria y dispositivos de entrada y salida para reconocer las características que los distingue como interactúan con el sistema operativo mediante las transiciones entre ellos.

Presentación de la unidad Bienvenido(a) a la asignatura de Programación de Sistemas Operativos. En esta primera unidad trabajaremos y entenderemos sobre como el Sistema Operativo hace uso del procesador administrándolo en cual si bien recordamos es el cerebro de la computadora o donde se realizan las operaciones también es conocido como CPU, las partes que lo forman, como cambia de un proceso a otro, como manipula las actividades y entender como es que controla varios procesos a la vez o los hace en forma paralela una vez que entendamos como el Sistema Operativo administra el procesador entenderemos como controla los accesos a la memoria descargando y cargando información en ella, se entenderá la diferencia entre memoria real y virtual y para que se usa cada una de ellas y por ultimo la gran ventaja de controlar las operaciones que se realizan en los dispositivos de entrada y salida .

Ciencias Exactas, Ingenierías y Tecnología | Ingeniería en Desarrollo de Software

15

Programación de sistemas operativos Programa desarrollado

Actividad 1. Presentación Como primer actividad en el estudio de la asignatura, te presentamos un foro de discusión general, creado para que comentes asuntos relacionados con la asignatura; en él, conocerás a tus compañeros de grupo, entre todos podrán apoyarse, resolver dudas e inquietudes y externar comentarios. Comienza tu participación, ingresando al aula y en la Actividad 1.Presentación.

1.1. Procesador El procesador o Unidad Central de Procesamiento comúnmente conocido como CPU por sus siglas en ingles Central Processing Unit, es la unidad que procesa todas las tareas que realizara la computadora, permitiendo el procesamiento de información numérica ingresada en formato binario, así como el proceso de instrucciones almacenadas en la memoria. El CPU, es un dispositivo electrónico el cual funciona enviando pulsos eléctricos a razón de Hertz, un CPU con 50 MHz enviará 50.000.000 pulsos eléctricos por segundo donde el procesador ejecuta una acción que corresponde a su vez a una instrucción o bien a una parte de ella. La medida CPI (ciclos por instrucción) representa el número promedio de ciclos necesarios para que el microprocesador ejecute la instrucción. La potencia del microprocesador se mide por el número de instrucciones por segundo que es capaz de procesar. Cada CPU ejecuta un conjunto de instrucciones específicas a su arquitectura, por lo tanto no se pueden ejecutar programas de una arquitectura de un tipo de procesador a otro con estructura de manejo de proceso diferente. Puesto que tener acceso a la memoria para obtener una instrucción o una palabra de datos tarda mucho más que ejecutar una instrucción, todas las CPUs contienen algunos registros para guardar variables importantes y resultados temporales. Así el conjunto de instrucciones por lo general incluyen instrucciones para cargar una palabra de la memoria en un registro, y para almacenar en la memoria una palabra que está en un registro.

Ciencias Exactas, Ingenierías y Tecnología | Ingeniería en Desarrollo de Software

16

Programación de sistemas operativos Programa desarrollado “El sistema operativo debe tener conocimiento de todos los registros, al multiplexar en el tiempo el CPU, es común que el sistema operativo tenga que detener el programa en ejecución para iniciar o reiniciar otro. Cada vez que el sistema operativo detiene un programa en ejecución, debe guardar todos los registros para que puedan restablecer cuando el programa continúe su ejecución justo donde se quedó” (Tanenbaum, 2003: 22) En la actualidad muchas CPU cuentan con recursos para ejecutar más de una instrucción a la vez, una CPU podría tener unidades individuales para tomar, decodificar y ejecutar de modo que mientras esté ejecutando la instrucción, también pueda estar decodificando la instrucción n+1 y tomando la instrucción n+2. El procesador realiza e interpreta una serie de instrucciones contenidas de un software y procesa los datos que este genera. Existen un gran número de modelos y marcas de procesadores que van dependiendo del tipo de socket, CoreClock, FSB, Cache, etc. Instrucciones, es una operación que el procesador debe de realizar; esas instrucciones se almacenan en la memoria principal del procesador, y utilizan dos campos: Código de operación que representa la acción que el procesador debe ejecutar. Código operando, que es el que define los parámetros de la acción. Las instrucciones se agrupan a su vez en categorías como:     

   

Acceso a Memoria: Es la transferencia de información entre registros. Operaciones Aritméticas: Es la parte que se encarga de realizar las operaciones tales como suma, resta multiplicación o división. Operaciones lógicas: En esta se encarga de realizar las operaciones Y, O, No, etc. Control: Se encarga de realizar las conexiones condicionales, etc. Debido a la exclusión de elementos de hardware complejos, la realización del trabajo por la capa de software, los procesadores poseen una estructura interna simple y muy eficiente, compuesta por: Unidades enteras (Integer ALU). Unidad de coma flotante (floating point unit). Unidad de memoria para operaciones de lectura y escritura (Load/Staore Unit). Unidad de salto (Branch unit).

Al ejecutarse todas las instrucciones la información que se genera se almacena de forma temporal en ubicaciones de memoria local, denominada registros. Algunos de los registros comúnmente utilizados son:  Acumulador (ACC), almacena los resultados de las instrucciones de operación Aritmética y lógica.  Estado (PSW), contiene los indicadores de estado del sistema.

Ciencias Exactas, Ingenierías y Tecnología | Ingeniería en Desarrollo de Software

17

Programación de sistemas operativos Programa desarrollado  

Instrucción (RI), almacena las instrucciones que se va procesando. Contador ordinal (OC).

Casi todas las computadoras tienen varios registros especiales que puede ver el programador. Uno de ellos es el contador de programa, el cual contiene la dirección de memoria en la que se encuentra la siguiente instrucción que será tomada. Una vez obtenida esa instrucción, el contador de programa se actualizará de modo que apunte a su sucesora. Otro registro es el apuntador de pila, que apunta a la parte superior de la pila actual en la memoria. La pila contiene un marco por cada procedimiento en el que se ha entrado, pero del cual no se ha salido aún. El marco de pila de un procedimiento contiene los parámetros de entrada, variables locales y variables temporales que no se guardan en registros.

1.1.1. Definición y conceptos El procesador es el encargado de procesar los datos que están almacenados en una computadora para producir cualquier tipo de información de interés para los usuarios. Un microprocesador se divide en dos componentes básicos, los cuales son: 1. 2.

La unidad lógica/aritmética (ALU), que realiza operaciones aritméticas y lógicas, dadas a través de microprogramación. La unidad de control (CU), que extrae instrucciones de la memoria, las descifra y ejecuta, llamando a la ALU cuando es necesario, sincroniza todas las operaciones de áreas de almacenamiento principal llamadas registros y memoria caché.

El procesador necesita para su funcionamiento de ciertas áreas de almacenamiento y que son de dimensiones mínimas; sin embargo, tienen la ventaja de su rapidez. Comparados con los accesos a RAM, los registros son como mínimo 10 veces más veloces. Existen 4 registros llamados AX, BX, CX y DX, cada uno de ellos tienen asignada una actividad específica. 



AX. Nombrado acumulador; contiene el operador que interviene en las operaciones aritméticas y lógicas. En general las instrucciones que trabajan con este registro tienen un micro código más simple que la misma instrucción ejecutada con otro registro. BX. Conocido como registro base, comúnmente la tarea de este registro se basa en identificar la dirección o índice de cada registro dentro de una tabla de valores para su direccionamiento.

Ciencias Exactas, Ingenierías y Tecnología | Ingeniería en Desarrollo de Software

18

Programación de sistemas operativos Programa desarrollado 



CX. Es el contador, las instrucciones que se realizan durante un proceso dentro del sistema operativo conocidas como bucle (LOOP) utilizan este registro como contador de n veces que un ciclo repite dentro de un proceso. DX. Registro de datos multiuso, se utiliza en operaciones de multiplicación y división junto con AX, su aplicación suele estar dentro de operaciones de entrada/salida de puertos IN/OUT.

Los registros de segmento son utilizados para integrar las direcciones de otros segmentos, para su aplicación en conjunto con otros registros que señalan las direcciones concretas dentro de estos segmentos, lo cual permite la gestión total de la memoria direccional, y para estos segmentos básicamente se contemplan 4 tipos:  Segmento de código CS. Apunta la ubicación del segmento de código del programa el cual se está ejecutando en ese instante.  Segmento de datos DS. Señala la ubicación del segmento de datos del programa en ejecución.  Segmento de Pila SS. Apunta la ubicación del segmento donde está la pila del programa en ejecución.  Segmento extra ES. Es un segmento auxiliar, es utilizado para indicar la existencia de espacio extra de algunos de los segmentos anteriores, es útil también para guardar de forma temporal las direcciones intermedias entre segmentos. Los registros de puntero están destinados a contener direcciones que son desplazamientos dentro de los segmentos indicados por los registros de segmento. 

 

Puntero de instrucción IP y contador de programa PC, establece la dirección de la instrucción e indican el desplazamiento de la instrucción siguiente a ejecutar que ubica dentro del segmento CS. Puntero de Pila SP. Señala la ubicación final de la pila dentro del segmento de pila SS. Puntero base BP. Señala el desplazamiento donde se encuentra el origen de la zona ocupada por las variables dinámicas.

También, dentro de los registros se encuentra uno especial llamado registro de estado (FLAGS), es un indicar del estado del procesador y el resultado de algunas operaciones, ya que su función se basa en el manejo de bits que actúan como semáforo.

1.1.2. Procesos e hilos Puede considerarse como definición de un proceso, a la ejecución de un programa dentro de un sistema operativo el cual puede necesitar de ciertos recursos determinantes para su

Ciencias Exactas, Ingenierías y Tecnología | Ingeniería en Desarrollo de Software

19

Programación de sistemas operativos Programa desarrollado ejecución tales como: Tiempo de CPU, archivos de Entrada/salida, dispositivos de _entrada/salida, y memoria principalmente, todos los recursos que utiliza se asignan al proceso en el momento de que es creado o bien al momentos de ser ejecutado. Cabe mencionar que cada uno los procesos puede tener su propia CPU virtual. Una gran mayoría de los sistemas, los procesos suelen ser la determinante para la realización de los trabajos. Cada sistema contiene sus propios procesos, y se dividen en los procesos del sistema operativo que son los encargados de ejecutar el código del sistema y los procesos de usuarios encargados de ejecutar el código del usuario, por lo tantos estos procesos se pueden ejecutar de manera simultánea para la realización de tareas interactivas. Durante la ejecución del código de un proceso, también utiliza la actividad actual que esta representada por el valor del contador de programa y por los contenidos de los registros del procesador. Por lo general de la misma forma, un proceso también incluye la pila del proceso, lo cual puede contener los datos temporales: parámetros de funciones, direcciones de retorno y las variables locales además de una sección de datos que contienen las variables globales. Un proceso puede incluir una acumulación de memoria, que es asignada de forma dinámica al proceso en tiempo de ejecución, en la siguiente imagen, se presenta la estructura de un proceso ubicado dentro de la memoria, indicando el estado que va tomando a medida que el proceso es ejecutado.

Imagen 1. Ejecución de un proceso ubicado en la memoria (Silberschatz, 2006:74)

La diferencia existente entre un programa y un proceso, se tiene que un programa por su estructura propia no es un proceso ya que es una entidad pasiva por ejemplo un archivo lleva incluido una cantidad de instrucciones que se almacenan en disco. Un proceso es una entidad activa, la cual contiene las instrucciones que se deben ejecutar y un conjunto de recursos asociados a los registro del cpu para su funcionamiento.

Ciencias Exactas, Ingenierías y Tecnología | Ingeniería en Desarrollo de Software

20

Programación de sistemas operativos Programa desarrollado Un programa se convierte en proceso al cargarse en memoria, lo cual lo convierte en archivo ejecutable. Considerando un ejemplo que ayude a distinguir la diferencia, consiste en una persona que se dedica a la construcción, el cual está a punto construir una casa. Para esto cuenta con planos de la construcción y todo el material necesario para realizar la obra: Cemento, Cal, Arena, Tabiques, Varilla, Alambre, Clavo, Madera, etc., en este ejemplo los planos es el programa, la persona de la construcción es el CPU y los elementos o materiales para la construcción son los datos de entrada. El proceso es la actividad de la persona de la construcción consistente en leer los planos, obtener los materiales y construir la casa. La idea del proceso consiste en que es una actividad de algún tipo: tiene programa, entrada, salida y un estado. Se puede compartir un procesador entre varios procesos, usando algún algoritmo de planificación para determinar cuándo debe dejarse de trabajar en un proceso para atender a uno distinto. La jerarquía de los procesos que manejan el concepto de proceso debe contar con algún mecanismo para crear todos los procesos necesarios, en los sistemas muy sencillos o en los diseñados para ejecutar sólo una aplicación es posible que, cuando el sistema se inicia, todos los procesos que puedan necesitarse estén presentes. Sin embargo, en la mayor parte de los sistemas se necesita algún mecanismo para crear y destruir procesos según sea necesario durante la operación. En el estado de procesos, aunque cada proceso es una entidad independiente, con su propio contador de programa y estado interno, los procesos a menudo necesitan interactuar con otros procesos. Un proceso podría generar ciertas salidas que otro proceso utiliza como entradas. Mientras un proceso es ejecutado va modificando el estado, dependiendo de la actividad que este en memoria, en la siguiente imagen se muestra el estado de un proceso

1

Ejecutándose

3

2

1. Un proceso se bloquea para aceptar entradas 2. El planificador escoge otro proceso 3. El planificador escoge este proceso 4. Hay entradas disponibles

Listo

Bloqueado

4 Imagen 2. Un proceso puede estar en el estado de ejecutándose, bloqueado o listo. Las transiciones entre estos tres estados son las que se muestran (Tanenbaum, 2003:51) Habitualmente, la mayoría de los procesos están creados por el sistema operativo de tal forma que los usuarios o el programa de aplicación no conocían su procedencia. Sin

Ciencias Exactas, Ingenierías y Tecnología | Ingeniería en Desarrollo de Software

21

Programación de sistemas operativos Programa desarrollado embargo, es bastante útil para el rendimiento de memoria y administración de recursos dentro de los procesos del CPU, que de un proceso se pueda derivar otro proceso, el nuevo proceso se podría ejecutar de forma paralela con la aplicación y podría ser activado cada que se mande a llamar. Durante el bloqueo de control de procesos en un sistema operativo, es representado mediante un bloque de control de procesos. Un bloque puede integrar algunos de los elementos de información que especifiquen el estado de un proceso, algunos de estos elementos se tiene:   

   

Estado del proceso. En este estatus el proceso puede tomar la forma básica de inicio, nuevo, listo, ejecutando, en espera, detenido, finalizado, etc. Contador de programa. El contador de programa identifica la ubicación de la siguiente instrucción que se ejecutara por el proceso. Registros en CPU. Los diferentes registro que se pueden utilizar para el proceso dependen del tipo y número así como de la arquitectura del CPU, para estos registros se incluyen los ya tratados en tema anterior. Estado y planificación de CPU. La planificación de CPU establece que proceso tiene mayor prioridad para el buen funcionamiento y manejo de recursos. Administración de memoria. Muestra la valor de los registros, tablar de páginas y de segmentos. Información contable. Este elemento contiene la cantidad de CPU de tiempo real empleado, límites de tiempo asignados y números de cuenta. Estado de E/S. Este elemento muestra la lista de los dispositivos de E/S asignados al proceso.

Por otro lado la finalización de un proceso, debe ser determinante que un proceso indique la finalización de su tarea. Para esto la aplicación deberá detectar una llamada o petición explicita sobre el servicio del sistema operativo que determine la finalización del proceso demandante. Durante un proceso tradicional la existencia de hilos de control, que representa a una actividad, en un proceso tradicional puede existir un solo hilo de control y un solo contador de programa en cada proceso. Sin embargo, algunos sistemas operativos modernos manejan múltiples hilos de control dentro de un proceso. La siguiente imagen presenta un modelo de solicitud donde la existencia de un proceso puede utilizar hilos simples y múltiples hilos, que reciben solicitudes para procesar el archivo y la devolución de datos o actualización. Estos hilos de control normalmente se llaman sólo hilos, en la siguiente imagen, se podrá observar tres procesos tradicionales, cada proceso tiene su propio espacio de direcciones y un solo hilo de control. A diferencia, en el segundo esquema se observa un solo proceso

Ciencias Exactas, Ingenierías y Tecnología | Ingeniería en Desarrollo de Software

22

Programación de sistemas operativos Programa desarrollado con tres hilos de control. Aunque en ambos casos se tienen tres hilos, cada uno de ellos opera en un espacio de direcciones distinto, en tanto al otro caso los tres hilos comparten el mismo espacio de direcciones. Computadora

Contador de página

(a)

Computadora

Hilo

Proceso (b)

Imagen 3. (a) Estructura de tres procesos con un hilo simple y espacio de direcciones distinto. (b) Estructura de un proceso con tres hilos que comparte el espacio de direcciones (Tanenbaum, 2003: 54) Una determinante de rendimientos es vista en la imagen anterior (b), Cuando una solicitud es procesada es entregada a un hilo, si este hilo se bloquea, los demás hilos pueden continuar ejecutándose de manera que se podrán realizar nuevas solicitudes ya sea inclusive de E/S de disco. A diferencia del modelo (a), no es muy conveniente ya que todos los hilos no comparten el mismo espacio de direcciones y caché de memoria. Algunos de los sistemas operativos, anteriormente no utilizaban estos procesos y los hilos se manejaban de forma simple de pilas. La principal desventaja que se tenía con este método, si el hilo se bloqueaba el proceso quedaría inconcluso. Para otros sistemas, el sistema operativo utilizan los hilos múltiples por proceso, esta forma de hilos múltiples tiene la ventaja del anterior que cuando un hilo se bloque, el sistema operativo selecciona el hilo que se ejecutará enseguida ya sea para el mismo proceso o un proceso distinto. Para realiza la planificación, el kernel deberá saber la existencia de la tabla de hilos que relacione los hilos del sistema. La diferencia entre un hilo simple e hilo múltiple, consiste en el rendimiento que varía de forma significante uno del otro. La modificación de hilos es más ágil cuando la administración de hilos se realiza en el espacio de usuario que cuando se realiza una llamada al kernel. Ya sea que los hilos se puedan administrar por el kernel o en el espacio de usuario, se introducen varios problemas que se deberán resolver y modificar considerablemente el modelo de programación para un mejor rendimiento del sistema operativo.

Ciencias Exactas, Ingenierías y Tecnología | Ingeniería en Desarrollo de Software

23

Programación de sistemas operativos Programa desarrollado

1.1.3. Multiprocesamiento En sistema operativo que tiene múltiples CPU, puede compartir la carga de procesamiento; sin embargo, el problema de la planificación se hace más difícil. La idea a enfocar sobre el multiprocesamiento es en base a los sistemas en lo que los procesadores son idénticos, homogéneos en relación a su funcionalidad, existen diferentes limitaciones que afectan a la planificación. Un método para planificar las CPU para un sistema multiprocesador consiste en que todas las decisiones sobre la planificación, el procesamiento de E/S y varias actividades del sistema sean administrados por un mismo procesador. A este multiprocesamiento asimétrico pareciera simple, pues solo existe un procesador que accede a las estructuras de datos del sistema, minimizando la necesidad de compartir datos. Otro método es el multiprocesamiento simétrico, este tiene como cualidad que cada uno de los procesadores se auto-planifica, y lo procesos pueden estar en una cola común de procesos preparados, o bien cada procesador puede ser propietario de su cola de procesos preparados de forma independiente, esta método se puede establecer que el planificador de cada procesador analice la cola de procesos preparados y seleccione un proceso para ejecutarlo. Una programación eficiente del sistema se considerará aquella en la que el procesador pueda seleccionar un proceso que este dentro de una estructura de datos y que dos procesadores no seleccionarán el mismo proceso y también evitar la pérdida de procesos de la cola. Hoy en día la mayoría o prácticamente todos los sistemas operativos modernos tienen la factultad de soportar el multiprocesamiento simétrico, por mencionar algunos de ellos: Windows XP y superior, Linux en todas sus distribuciones, Mac OSx, etc.

1.1.4. Paralelismo Para la programación de sistemas operativos, el término paralelismo implica la existencia de varios procesadores en el sistema, la técnica de programación paralela determina el poder dividir la ejecución de un proceso en distintos módulos del sistema. Mientras la CPU está ejecutando un programa, también puede estar leyendo un disco esto es porque la CPU, esto se realiza en el curso de muy poco tiempo ya que puede trabajar con varios programas simulando que el sistema puede estar realizando varios procesos al mismo tiempo. El termino seudoparalelismo, se utiliza para refirise a esta

Ciencias Exactas, Ingenierías y Tecnología | Ingeniería en Desarrollo de Software

24

Programación de sistemas operativos Programa desarrollado rápida conmutación de la CPU entre programas, para diferenciar del verdadero paralelismo de hardware de los sistemas multiprocesador, en el proceso de evolución de desarrollo de sistemas operativos se ha ido mejorando el modelo de procesos secuenciales que facilita el manejo del paralelismo. El paralelismo para los programas puede ser explicito donde unas de sus principales características es que el programador especifica mediante una construcción de concurrencia de exclusión mutua y sincronización para determinar la prioridad de los procesos. En este método puede ser viable para utilizar los procesadores por separado y ejecutar cada uno los procesos, por su dificultad de implementación se pueden generar varios errores de programación.

Actividad 2. Administración del Procesador Con el fin de reflexionar sobre el tema de la administración del procesador, participa en el foro de esta actividad, realizando lo siguiente: 1. Analiza y contesta las siguientes preguntas:  ¿Qué función tiene el Procesador dentro del Sistema Operativo?  ¿Cómo interactúan los hilos con el procesador?  ¿Cuál es la diferencia entre multiprocesamiento y paralelismo? 2. Ingresa al foro y genera una nueva entrada para compartir tu respuesta a las preguntas antes planteadas. 3. Revisa y comenta las aportaciones de tus compañeros(as), analiza si concuerdas o no con ellos(as). 4. A partir de las aportaciones vertidas en el foro, elabora tus conclusiones y publícalas. 5. Recuerda consultar la Rúbrica de Foro que se encuentra en la sección Material de apoyo.

Ciencias Exactas, Ingenierías y Tecnología | Ingeniería en Desarrollo de Software

25

Programación de sistemas operativos Programa desarrollado

1.2. Memoria La memoria en un sistema operativo puede llegar a ser un recurso muy importante el cual se debe administrarse con cuidado. La memoria principal puede ser considerada como un arreglo lineal de localidades de almacenamiento de un byte de tamaño, cada localidad de almacenamiento tiene asignada una dirección que la identifica. La memoria principal es el lugar donde el CPU registra las instrucciones que se van a ejecutar, así como algunos datos a emplear, una de las funciones básicas que debe implementar un Sistema Operativo es la administración de la memoria para tener un control sobre los lugares donde están almacenados los procesos y datos que actualmente se están utilizando.

1.2.1. Administración de la memoria La administración de la memoria para un sistema multiproceso, se debe tener cuidado en la gestión de este recurso, ya que se puede determinar el estado del procesador dependiendo de la cantidad de procesos que se estén ejecutando. La memoria principal es la parte donde se ejecutan los programas y procesos, este está definido por el espacio disponible para que se puedan ejecutar los procesos. La administración de la memoria es la encargada de gestionar la jerarquía de los procesos que se ejecutan dentro de la misma, su principal función es el determinar que partes de la memoria real están en uso y que partes están libres, también asigna memoria a los procesos cuando la necesitan recuperar y cuando termina además controla el intercambio entre la memoria principal y el disco cuando la primera es demasiado pequeña. Para un sistema operativo la administración básica de la memoria se puede dividir en dos clases, los que intercambian los procesos entre la memoria y algún dispositivo esto mediante el proceso de ejecución. La otra clase es lo contrario al anterior pues aquí están catalogados lo que no realizan el intercambio y paginación. El intercambio y la paginación es utilizada como una técnica para las situaciones causadas memoria principal escasa para mantener todos los programas al mismo tiempo. Esto reduce el costo de la memoria principal y aumenta el rendimiento del procesador, comúnmente es conveniente el replantear la administración de la memoria a medida que el sistema tenga mayor crecimiento, pues esto implica que la memoria u otro pueden hacerse obsoletos, ya que los sistemas crecen con mayor rapidez que las memorias.

Ciencias Exactas, Ingenierías y Tecnología | Ingeniería en Desarrollo de Software

26

Programación de sistemas operativos Programa desarrollado

La monoprogramación que no tiene intercambio ni paginación, es un esquema más simple y tiene la posibilidad de ejecutar solo un programa a la vez, compartiendo la memoria entre el programa y el sistema operativo, en la siguiente imagen plantea 3 variantes sobre el estado de memoria.

Imagen 4. Tres variantes de organización de la memoria entre un programa y el sistema operativo.

(Tanenbaum, 2003: 310) Estas variantes de la imagen anterior nos muestra, Imagen 4(a) Indica que el sistema operativo puede estar alojado dentro de la memoria de acceso aleatorio RAM, Imagen 4(b) Indica que el sistema operativo puede estar alojado en la parte superior de la memoria ROM, memoria de solo lectura, en la variante de la imagen 4(c) Los controladores de los dispositivos se encuentran en la parte superior de la memoria ROM seguido de los programas de usuario y al final del esquema se encuentra el sistema operativo por encima de la memoria RAM. En estos esquemas anteriores, permite ejecutar solo un proceso a la vez, para que sea copiado a memoria y se ejecute. Al finalizar el proceso en el sistema operativo deberá mostrar un indicativo que muestre que está a la espera de un nuevo comando, asi entonces el sistema operativo recibe este nuevo comando para cargar el nuevo programa en memoria sobreescribiendo el anterior. Existen diferentes técnicas para la administración de la memoria, las cuales se clasifican como:  Multiprogramación con particiones fijas  Multiprogramación con particiones variables  Segmentación  Paginación  Administración de memoria con mapas de bits  Administración de memoria con listas enlazadas

Ciencias Exactas, Ingenierías y Tecnología | Ingeniería en Desarrollo de Software

27

Programación de sistemas operativos Programa desarrollado Estas técnicas de administración de memoria, por la capacidad de procesamiento obliga muchas veces a modificar la arquitectura computador para obtener el rendimiento deseado a partir del nuevo hardware.

1.2.2. Jerarquía de la memoria La jerarquía de memoria sirve para organizar de forma incremental de pirámide o niveles, el principal función de este método es conseguir el rendimiento aumentar la velocidad al costo de una memoria simple. Los niveles que comúnmente conforman la jerarquía de la memoria son:  Nivel 0 de Registros  Nivel 1 de memoria Cache  Nivel 2 memoria principal  Nivel 3 De Disco duro  Nivel 4 virtual Así pues lo que se busca con la jerarquía de la memoria es establecer una determinante para la administración de la memoria.

1.2.3. Multiprogramación con particiones fijas y variables Existe otro esquema para la administración de la memoria que permite la ejecución de múltiples procesos en un mismo tiempo, este esquema es conocido por multiprogramación con particiones fijas. En los sistemas con tiempo compartido para los procesos resulta que este si se encuentra bloqueado en espera de que finalice una E/S, otro proceso podrá utilizar la CPU. Así se incrementa el rendimiento tanto de la memoria como del CPU, una posibilidad de lograr la multiprogramación consiste en dividir la memoria en n particiones ya sea homogénea o desigual. A la llegada de algún proceso, se podrá colocar en la cola de entrada de la partición pequeña que puede contener, ya que las particiones están fijas, pero si por algún motivo el proceso no utilizo alguna de las particiones esta será desperdiciada. En la siguiente imagen, se ilustra un esquema con diferentes tipos de entradas a particiones fijas.

Ciencias Exactas, Ingenierías y Tecnología | Ingeniería en Desarrollo de Software

28

Programación de sistemas operativos Programa desarrollado

Imagen 5. Esquema de particiones fijas con múltiples colas de entrada (a), particiones fijas con cola única de entrada (b) (Tanenbaum, 2003: 311) La imagen anterior muestra un esquema de dos tipos distintos de asignación de procesos mediante las colas de entrada, se puede observar que al utilizar particiones fijas con colas distintas (a) se ve claro que el rendimiento del sistema baja pues al encontrar una partición demasiado grande y vacía y una partición pequeña y llena esto es una gran desventaja. Una alternativa para una posible solución a esta desventaja puede ser lo que se ilustra en la imagen anterior (b) donde se puede ver que se mantiene una sola cola de asignación para que cada que se libera una partición, se seleccionará el proceso ubicado en la partición siguiente inmediata para ser ejecutada. Dentro del desarrollo para los sistemas de tiempo compartido, la situación se torna de forma distinta para la multiprogramación de particiones variables. La desventaja de este método consiste en que en muchas ocasiones no existirá la cantidad suficiente de memoria principal para almacenar todos los procesos que se encuentren activos. Se podrá utilizar la administración de memoria, dependiendo del hardware disponible. Existen dos estrategias para este método una se utiliza para buscar y cargar en la memoria cada proceso en su totalidad par que se pueda ejecutar durante el tiempo que sea necesario para que después se pueda colocar de nueva cuenta sobre el disco, a esta estrategia comúnmente se le conoce como llamadas de intercambio. La segunda estrategia conocida como me memoria virtual, permite ejecutar a los programas a pesar de que estos se encuentren parcialmente en memoria principal. El funcionamiento de un sistema con particiones variables los primeros o el primer proceso se cargan en la memoria creando la partición, para dar seguimiento a los demás procesos creando las particiones en la memoria de acuerdo a la necesidad del proceso y liberándola al término de cada proceso cargado, en la siguiente imagen se puede observar un claro ejemplo del uso de particiones variables, donde se carga un solo proceso y crea la partición que utilizará (a), posteriormente se pueden cargar demás procesos asignando el espacio dentro de la memoria (b), seguido se muestra el acceso

Ciencias Exactas, Ingenierías y Tecnología | Ingeniería en Desarrollo de Software

29

Programación de sistemas operativos Programa desarrollado de un tercer proceso utilizando el espacio asignado para este (c), Luego sale el proceso A, dejando el espacio libre para dejar el paso al proceso D (d,e), Posteriormente termina B y entra E (f,g).

Imagen 6. Asignación de memoria mediante la multiprogramación de particiones variables. (Tanenbaum, 2003: 314) Para la asignación de memoria que se muestra en la imagen anterior, se puede observar que mientras los procesos entran en memoria y salen el espacio se libera para dejarlo listo para el siguiente proceso que se mande llamar. El tamaño de estas particiones puede variar, tiene la flexibilidad de no estar limitado a la cantidad de particiones fijas establecidas para la asignación de procesos.

1.2.4. Memoria real

La memoria real o principal, es donde se guardan los datos y se ejecutan los programas, por lo general esta memoria es volátil. La CPU extrae instrucciones de la memoria de acuerdo con el valor del contador de programa, durante el ciclo de ejecución de algún proceso debería extraer la instrucción de la memoria la cual se decodifica y puede hacer que se procesen una serie de operaciones. El resultado de haber ejecutado esas operaciones, se almacena de nuevo en la memoria. Comúnmente el costo de esta memoria es de mayo costo que la memoria secundaria, pero la gran diferencia están en que la memoria real es de rápido acceso a la información contenida, la memoria cache es la única que podría llegar a ser mucho más rápida que la principal pero su costo también es aún mayor que las memorias real y secundaria. La organización y administración de la memoria real de un sistema ha sido y es uno de los factores más importantes en el diseño de los sistemas operativos. Muy a menudo los términos memoria y almacenamiento se consideran equivalentes, los programas y datos

Ciencias Exactas, Ingenierías y Tecnología | Ingeniería en Desarrollo de Software

30

Programación de sistemas operativos Programa desarrollado deben estar en el almacenamiento principal para poderlos ejecutar y referenciarlos directamente. Se considera almacenamiento secundario o auxiliar al que es soportado por lo general en discos, la parte del sistema operativo que administra la memoria se llama Administrador de la memoria. Lleva un registro de las partes de memoria que se están utilizando y de aquellas que no, asigna espacio en memoria a los procesos cuando estos la necesitan y libera espacio de memoria asignada a procesos que han terminado. En lo que respecta a la reasignación de direcciones, el contenido del registro frontera indicará el punto a partir del cual puede cargarse el programa del usuario. Para ello será necesario reasignar las direcciones del programa en función de la frontera, existiendo dos formas de hacerlo, una estática y otra dinámica. La asignación estática se realiza durante la compilación o bien durante la carga del programa en memoria. Esto implica que cualquier variación del tamaño del sistema operativo exigirá una nueva compilación o carga del programa. Es una técnica fácil de llevar a cabo pero demasiado rígida. La alternativa es asignar las direcciones reales dinámicamente durante la ejecución. Un dispositivo hardware especial interceptará cada dirección lógica generada por el programa y le sumará el contenido del registro frontera. El resultado será la dirección real correspondiente como se puede observar en la figura 8. Con esta técnica el usuario no podrá manejar direcciones reales. Su programa utilizará direcciones relativas que podrán variar de 0 al máximo permitido por el sistema operativo. Este será su espacio lógico de direcciones.

Figura 8. Reasignación dinámica (Morera y Pérez, 2002: 262)

Ciencias Exactas, Ingenierías y Tecnología | Ingeniería en Desarrollo de Software

31

Programación de sistemas operativos Programa desarrollado

Posteriormente, el sistema con la ayuda del hardware establecerá la correspondencia con el espacio físico de direcciones. El cual estará limitado por la dirección frontera y el tamaño de la memoria real. Esta separación entre la visión del usuario (espacio lógico), y la memoria real (espacio físico), permite gestionar ésta con mayor eficacia.

1.2.5. Memoria virtual La memoria virtual tiende a simplificar y facilitar la tarea de programación, pues con esta alternativa de memoria ya no limita a la cantidad de memoria física disponible. La memoria virtual incluye la separación de memoria lógica y física, esta división permite proporcionar a los programadores una memoria virtual extremadamente grande, cuando solo se tiene disponible una memoria física de menor tamaño. La memoria virtual contiene espacios de direcciones virtuales de un proceso que hace referencia a la forma lógica de almacenar un proceso en la memoria, las ventajas de la memoria virtual son considerables e importantes para la asignación de procesos. La memoria virtual tiene la posibilidad de poder ser utilizada en un sistema de multiprogramación, manteniendo segmentos de muchos programas dentro. En lo que un programa está esperando que se extraiga a memoria una de sus partes esta a la espera de E/S y mientras no puede ejecutarse, por lo que podrá otorgarse la CPU a otro proceso, lo mismo que en cualquier otro sistema de multiprogramación. Mientras el sistema realizaba el trabajo real de intercambiar los recubrimientos, el programador tenía que encargarse de dividir en trozos apropiados el programa. La tarea de dividir programas grandes en pequeños trozos modulares era laboriosa y tediosa. La idea básica de la memoria virtual es que el tamaño combinado del programa, sus datos y su pila pueden exceder la cantidad de memoria física disponible. El sistema operativo mantiene en la memoria principal aquellas partes del programa que se están usando en cada momento, manteniendo el resto de las partes del programa en el disco. Por ejemplo, un programa de 16 MB puede ejecutarse sobre una máquina de 4MB eligiendo cuidadosamente que 4 MB se tendrán en la memoria en cada instante, e intercambiando partes del programa entre el disco y la memoria, según sea necesario. La memoria virtual puede funcionar también en un sistema multiprogramado, con diversos fragmentos de muchos programas en memoria a la vez. Mientras un programa espera a que se traiga del disco una parte de sí mismo, está esperando por una E/S y no puede ejecutarse, por lo que debe asignarse la CPU a otro proceso de la misma forma que en cualquier otro sistema multiprogramado.

Ciencias Exactas, Ingenierías y Tecnología | Ingeniería en Desarrollo de Software

32

Programación de sistemas operativos Programa desarrollado La siguiente imagen muestra el cumulo de memoria, pues es utilizada para la asignación dinámica de memoria. Este método permite que la pila crezca hacia abajo en la memoria con las sucesivas llamadas a función.

Figura 9. Espacios de las direcciones en memoria virtual (Silberschatz, 2006: 281) El espacio vacío entre el cúmulo y la pila forma parte de la memoria virtual, los espacios de estas direcciones incluyen espacios de direcciones dispersos, este tipo de direcciones tienen a ventaja pues se puede utilizar un espacio disperso, pues estos huecos pueden llenarse a medida que crecen los segmentos de pila. Aparte de que es separada la memoria lógica y física, la memoria virtual también, permote que dos o más procesos compartan los archivos y la memoria mediante mecanismos de compartición de páginas. Este tipo de dispersión de espacio tiene una serie de ventajas entre las cuales se puede clasificar. Las bibliotecas del sistema se pueden compartir con otros procesos, la memoria virtual facilita a los procesos compartir la memoria física y permite que un proceso cree una región de memoria que los pueda compartir con otros procesos, además de que se comparten páginas durante la creación de procesos mediante la llamada al sistema incrementando la creación de tareas y ejecución de procesos.

Actividad 3. Mapa conceptual del manejo de la memoria Para la realización de esta actividad retomarás lo que has aprendido hasta este momento respecto a la memoria, su función y cómo es utilizada en un sistema operativo. Realiza los siguiente: 1. Elabora un mapa conceptual que muestre el funcionamiento y manejo de la

Ciencias Exactas, Ingenierías y Tecnología | Ingeniería en Desarrollo de Software

33

Programación de sistemas operativos Programa desarrollado memoria en un sistema operativo. Incluye elementos de su jerarquía, los tipos de memoria; así como del funcionamiento de particiones fijas y variables. 2. Guarda la actividad con el nombre PSO_U1_A3_XXYZ en donde XX representa tu apellido(s) y YY tu nombre(s) 3. Envía el archivo a tu Facilitador(a) mediante la herramienta Tareas para recibir retroalimentación.

1.3. Entrada / Salida La administración de dispositivos de Entrada /Salida, resulta ser un tema muy amplio en el diseño de los sistemas operativos, se la entrada / salida (E/S), una amplia variedad de dispositivos y sus variadas dispositivos y sus diversidad de aplicaciones. Una de las principales funciones de la administración de dispositivos es el controlar todos los dispositivos de E/S, el sistema operativo debe enviar comandos a los dispositivos, atender las interrupciones y gestionar los errores que se generan. Los dispositivos externos de E/S que interactúan con las computadoras pueden clasificarse en las siguientes categorías: 





Dispositivos físicos para humanos, este tipo de dispositivos son propiamente para establecer la comunicación computadora-usuario. Unos de los principales ejemplos se tiene. Teclado, mouse, pantalla, terminar de lector laser, etc. Dispositivos para máquina, los dispositivos para máquina son los que se utilizan para comunicar las partes electrónicas entre computadora-sistema, como discos, tarjetas de video, controladores. Dispositivos de caracteres, Estos dispositivos proporcionan o acepta un flujo de caracteres, sin tener en cuenta ninguna estructura de bloque. Comúnmente este tipo de dispositivos son los que se conocen como manejadores de los dispositivos como son los Driver o controladores.

Cada dispositivo tiene sus propias características de acuerdo a su clasificación de pertenencia, cada una de estas diferencias básicamente se enfoca en la velocidad de los datos, por lo que es muy posible una gran diferencia de varios datos de transmisión. Las aplicaciones son también una de las diferencias de los dispositivos, pues por lo general cada tipo de dispositivo necesita su propio software que será de utilidad para el sistema

Ciencias Exactas, Ingenierías y Tecnología | Ingeniería en Desarrollo de Software

34

Programación de sistemas operativos Programa desarrollado operativo poder gestionar el dispositivo, la complejidad del control es necesario poder contar con la interfaz de control al dispositivo.

1.3.1. Principios de hardware y software de I / O Es muy común el tener diferentes perspectivas respecto al hardware y software de E/S, dependiendo el tipo de manejo que se realice de forma directa con los dispositivos será el punto de vista que se tenga referente hacia este término, resulta que un programador no tendrá el mismo punto de vista que un ingeniero en electrónica de dispositivos de E/S. Uno lo ve como la parte física tangible que puede interactuar con la maquina, y un programador es quien diseña esa parte intangible pero es la relación tarjeta –maquina. Los dispositivos de E/S se pueden dividir en dos grandes grupos:  

Dispositivos por bloques. Es el encargado de de almacenar la información en bloques de tamaño fijo, cada uno de ellos deberá contar con su propia dirección. Dispositivos por caracteres. Este tipo de dispositivo es el que se encarga de proveer y aceptar una serie de caracteres que son convertidos en corriente eléctrica, este tipo de dispositivos no considera la estructura de bloque que contempla el anterior tipo de dispositivos, tampoco tiene la posibilidad de ser direccionable ni puede realizar la búsqueda.

Existen varios dispositivos que no se contemplan este tipo de clasificación pues por lo general no se pueden ajustar a esta clasificación. Un ejemplo claro de ello, son los relojes este tipo de dispositivos no están considerados como dispositivos por bloques ni tampoco como dispositivos por caracteres, su función principal de los relojes consiste en suministrar interrupciones a intervalos que ya estén definidos. En lo que respecta al software el principal objetivo de este dispositivo de E/S, es prácticamente sencillo de plantear, pues se debe organizar el software mediante capas que puedan ser utilizadas para establecer la prioridad del hardware, para que las superiores sean las encargadas de establecer la interfaz con el sistema lo cual ayuda a comunicar de forma más ágil el dispositivo – sistema. En el ámbito de software, existe un concepto clave para poder diseñar el software de E/S, llamado independencia del dispositivo. El cual tiene la utilidad de que los programas puedan interactuar entre dispositivo hardware y dispositivo software, para que esto pueda funcionar el sistema operativo deberá tener la facilidad de resolver los problemas causados por las diferencias de dispositivos.

Ciencias Exactas, Ingenierías y Tecnología | Ingeniería en Desarrollo de Software

35

Programación de sistemas operativos Programa desarrollado Los errores que se manejan dentro del software de E/S, se deben manejar lo más cercano posible del hardware. Cuando el controlador descubre un error de lectura deberá tratar de corregirlo, de lo contrario el sistema operativo es quien podría tratar de corregirlo. Muchas ocasiones los errores son transitorios al momento de la lectura de E/S, y estos por lo general se solucionan reiniciando el proceso de lectura de cada dispositivo. Uno de los aspectos claves es cuando ocurre la transferencia, ya puede ser por bloqueo o controladas por interrupciones. El dispositivo de E/S físico es por lo general asíncrona, tal como la CPU que inicia la transferencia y se libera mientras esta a la espera de una nueva interrupción. Los programas por lo general resultan ser síncronas, después del comando de lectura, el programa se detiene hasta la disponibilidad de datos. Los dispositivos de uso exclusivo y no exclusivo, son utilizados por lo general al mismo tiempo ya que no existen conflictos de mantener abiertos varios archivos en el disco al mismo tiempo. Las unidades de cinta es un ejemplo de dispositivos exclusivo ya que solo un proceso de lectura puede estar activo a la vez.

1.3.2. Dispositivos y manejadores de dispositivos Los dispositivos juegan un papel muy importante en el desarrollo de sistemas operativos pues sirven para introducir datos, estos datos se leerán por los dispositivos de entrada y se almacenan en la memoria principal. Los dispositivos de E/S se pueden agrupar en tres categorías: 





Dispositivos legibles para los usuarios. Son aquellos dispositivos que permiten la comunicación entre los usuarios y la computadora. Dentro de este grupo se incluyen todos los dispositivos que sirven para proporcionar interfaz con el usuario, tanto para entrada (ratón, teclado, monitor TouchScreen, scanner, lectores de huella, etc.) como para salida (impresoras, pantalla, etc.). Dispositivos de almacenamiento. Son utilizados para abastecer el almacenamiento no volátil de datos y memoria. Su principal función consiste en proveer los datos y almacenar en los programas que se ejecutan en la CPU. Dispositivos de comunicaciones. Permiten conectar a la computadora con otras computadoras a través de una red. Los dos tipos de dispositivos más importantes de esta clase son los módem, para comunicación vía red telefónica, y las tarjetas de interfaz a la red, para conectar la computadora a una red de área local.

Los dispositivos de acuerdo a su función se pueden clasificar de la siguiente manera:

Ciencias Exactas, Ingenierías y Tecnología | Ingeniería en Desarrollo de Software

36

Programación de sistemas operativos Programa desarrollado 





Dispositivos de E/S programada. Mientras el procesador se encuentra en ejecución de E/S, emite la señal para que el proceso este a la espera del término de la operación para poder continuar con su ejecución. Dispositivos de E/S por interrupciones. El procesador es el encargado de emitir la orden de E/S para los procesos, estos se ejecutan las instrucciones y son interrumpidos al finalizar su trabajo. Acceso directo a memoria (DMA). Este modulo puede controlar el intercambio de datos entre la memoria principal y un modulo de E/S.

La mayoría de las unidades de E/S constan normalmente de un componente mecánico y un componente electrónico. En la mayoría de los casos es posible separar las dos partes y tener un diseño más modular y general. El componente electrónico se denomina controlador del dispositivo o manejador. En una computadora el componente electrónico llega a ser una tarjeta de circuito impreso el cual puede ajustarse en alguna ranura de expansión, donde el componente mecánico es el dispositivo en sí, la organización de los dispositivos se puede ejemplificar en la figura 13.

Imagen 7. Algunos de los componentes de un ordenador personal sencillo. (Tanenbaum, 2003: 272) El manejador del dispositivo se provee usualmente de un conector en el cual puede conectarse un cable que va al dispositivo. Muchas controladoras pueden manejar dos, cuatro o incluso ocho dispositivos idénticos. Si la interfaz entre la controladora y el dispositivo es un interfaz estándar, ya sea un estándar ANSI, IEEE o ISO oficial, o un estándar de facto, eso permite que cualquier fabricante de hardware pueda manufacturar controladores o dispositivos que se ajusten a esa interfaz. Por ejemplo, muchas compañías de hardware fabrican unidades de disco compatibles con la interfaz IDE o SCSI.

Ciencias Exactas, Ingenierías y Tecnología | Ingeniería en Desarrollo de Software

37

Programación de sistemas operativos Programa desarrollado La interfaz entre el controlador y el dispositivo es a menudo una interfaz de muy bajo nivel. Por ejemplo, un disco puede formatearse con 256 sectores de 512 bytes por pista. Sin embargo, lo que en realidad sale de la unidad es un flujo de bits en serie que comienza por un preámbulo, seguido de los 4096 bits de un sector y terminando con una suma de verificación (checksum), también llamada un código de corrección de errores (ECC; Error-Correcting Code). El preámbulo se escribe cuando se formatea el disco, y contiene el número de cilindro y de sector, el tamaño del sector y datos similares, así como información de sincronización. La tarea del controlador consiste en convertir ese flujo de bits en serie en un bloque de bytes y realizar cualquier corrección de errores que sea necesaria. Normalmente primero se ensambla el bloque de bytes, bit a bit, en un búfer que está dentro del controlador. Una vez comprobado su checksum y declarado el bloque libre de errores, puede procederse a copiarlo en la memoria principal. A un nivel igual de bajo, el controlador de un monitor (CRT Tubo de rayos catódicos), también opera como un dispositivo de bits en serie: lee de la memoria bytes que contienen los caracteres a visualizar y genera las señales que sirven para modular el haz de electrones del CRT para producir la escritura en la pantalla. El controlador genera también las señales que hacen que el haz del CRT efectúe un retrasado horizontal al terminar cada barrido de una línea, así como las señales que realizan el retrasado vertical una vez que se ha barrido toda la pantalla. Si no fuera por el controlador del CRT, el programador del sistema operativo tendría que programar de forma explícita el barrido analógico del tubo de imagen del monitor. Con el controlador, el sistema operativo inicializa el controlador con unos pocos parámetros, tales como el número de caracteres o píxeles por línea y el número de líneas de la pantalla, y deja que el controlador sea realmente quien se encargue de dirigir el haz del CRT. Existe una gran variedad de controladores y tipos de periféricos, por lo cual es frecuente encontrar más de un controlador posible para el mismo dispositivo, cada uno ofreciendo un nivel distinto de funcionalidades. Los manejadores de dispositivos son muy variados, casi tanto como los dispositivos de E/S. Muchos de ellos, como los de disco, pueden controlar múltiples dispositivos

1.3.3. Mecanismos y funciones de manejadores de dispositivos Las funciones de manejadores de los dispositivos de entrada y salida consisten en un componente mecánico y otro eléctrico, en la mayoría de las ocasiones se pueden separa las dos partes con el objetivo de contar con el diseño modular y general. La parte eléctrica se nombra adaptador de dispositivo por lo general al hablar de la parte eléctrica se puede apreciar una tarjeta de circuitos impresos que se puede insertar en una ranura de la

Ciencias Exactas, Ingenierías y Tecnología | Ingeniería en Desarrollo de Software

38

Programación de sistemas operativos Programa desarrollado tarjeta de la computadora, este componente también se puede considerar como componente mecánico. La mayoría de los controladores pueden manejar uno o varios dispositivos idénticos, Si la interfaz es de mismo tipo estándar con la controladora se podrán ajustar para su funcionamiento. Muchas de las ocasiones en los procesos de E/S de dispositivos el sistema operativo siempre interactua con el controlador y no con el dispositivo. La siguiente imagen muestra la forma de cómo se interconectan los dispositivos.

Imagen 8. Modelo básico, para la implementación de dispositivos, entre la CPU y los controladores de dispositivos de E/S. (Tanenbaum, 2003: 155) La comunicación entre la CPU y los controladores utiliza un bus de comunicación simple, pero en equipos de macro computadoras por lo general utilizan un modelo muy distinto como posibles bus múltiples de datos. La actividad del controlador está en convertir un flujo de bits a un bloque de bytes y realiza las acciones de corrección de errores necesarias, por lo general, se va armando por bloques de bytes en un buffer dentro del controlador. El controlador tiene algunos registros que se pueden utilizar para comunicar con la CPU, en algunas computadoras los registros forman parte del espacio de direcciones de la memoria básica, lo que se conoce como mapeo de memoria de E/S. Los controladores de dispositivos, el código dependiente se aloja dentro de estos, cada controlador administra un tipo de dispositivo o clase de dispositivos similares. En términos generales, el controlador de dispositivos de software acepta peticiones del software independiente al dispositivo para que puedan ser atendidas, las peticiones más comunes es el leer un bloque n Si algún controlador está disponible o libre al llegar una petición inicia atendiéndola, pero si se encontrara ocupado en otra petición a la llegada de una nueva esta la colocará en la cola de peticiones y lo dejará como pendiente hasta que sea atendida. Lo primero que se realiza para atender la petición de E/S, se debe traducir de términos abstractos a concretos. Esto deberá calcular en que parte del modulo el proceso se encuentra ubicado, para decidir la prioridad de operaciones del hardware. Al decidir la prioridad se comienza a generar la escritura en los registros de dispositivos de este.

Ciencias Exactas, Ingenierías y Tecnología | Ingeniería en Desarrollo de Software

39

Programación de sistemas operativos Programa desarrollado

La CPU necesitará direccionar los controladores de dispositivos para intercambiar datos con ellos, puede solicitar datos del controlador de E/S byte a byte, pero haciéndolo así estaría desperdiciándose mucho tiempo de CPU. Por ese motivo normalmente se utiliza un esquema diferente, denominado acceso directo a memoria (DMA; Direct Memory Access). El sistema operativo sólo puede utilizar DMA si el hardware dispone de un controlador de DMA, por lo que la mayoría de los sistemas cuentan con él. A veces ese controlador está integrado en los controladores de disco o en otros controladores, pero tal diseño significa tener un controlador de DMA por cada dispositivo. Más comúnmente, se tiene un único controlador de DMA (por ejemplo en la placa madre) para regular las transferencias con múltiples dispositivos, a menudo de forma concurrente. “Cualquier ubicación física, el controlador de DMA tiene acceso al bus del sistema independientemente de la CPU, como se muestra en la siguiente imagen. El controlador contiene varios registros en los que la CPU puede leer y escribir. Éstos incluyen un registro de dirección de memoria, un registro contador de bytes y uno o más registros de control. Los registros de control especifican el puerto de E/S que se utilizará, la dirección de la transferencia (leyendo del dispositivo de E/S o escribiendo en el dispositivo de E/S), la unidad de transferencia (un byte a la vez o una palabra a la vez) y el número de bytes que se transferirán en cada ráfaga.” (Tanenbaum, 2003: 276)

Imagen 9. Funcionamiento de una transferencia con DMA. (Tanenbaum, 2003: 276) El controlador es el encargado de leer el bloque de cada sector de la unidad, hasta que esté todo el bloque en el búfer interno del controlador. Posteriormente se calculará checksum para validar que no se producirán errores de lectura que pudieran provocar interrupciones. Al ejecutar el sistema operativo podrá leer ya el bloque de disco del búfer de la controladora.

Ciencias Exactas, Ingenierías y Tecnología | Ingeniería en Desarrollo de Software

40

Programación de sistemas operativos Programa desarrollado

1.3.4. Estructura de datos en el manejo de dispositivos

Dentro de una computadora típica, la estructura de las interrupciones es como se muestra en la figura 15, a nivel de hardware, las interrupciones funcionan como se describe a continuación: una vez que el dispositivo termina el proceso de información que se le ordenó, provoca una interrupción (considerando que el sistema operativo es quien habilita las interrupciones). Esto lo hace aplicando una señal a una línea del bus que se le asignó. El chip controlador de interrupciones situado en la placa madre detecta esa señal y decide lo que se va hacer a continuación.

Imagen 10. Estructura básica para la representación de la estructura de manejo de dispositivos. (Tanenbaum, 2003: 286) La imagen muestra la forma en la que se produce una interrupción. En la realidad las conexiones entre los dispositivos y el controlador de interrupciones utilizan líneas del bus en vez de cables dedicados. Si no hay otras interrupciones pendientes, el controlador de interrupciones procesa la interrupción inmediatamente. Si está atendiéndose alguna otra interrupción en ese momento, o si otro dispositivo ha realizado una petición simultánea sobre una línea de petición de interrupción de mayor prioridad, el primer dispositivo será ignorado momentáneamente. En este caso, el dispositivo seguirá aplicando la señal de interrupción al bus hasta que reciba de la CPU el servicio deseado. Para gestionar la interrupción, el controlador vuelca un número en las líneas de dirección del bus especificando qué dispositivo requiere atención y aplica una señal que interrumpe a la CPU. La estructura de datos en el manejo de dispositivos se maneja la siguiente clasificación:

Ciencias Exactas, Ingenierías y Tecnología | Ingeniería en Desarrollo de Software

41

Programación de sistemas operativos Programa desarrollado Estructura simple: Es la que se basa en el acceso a operaciones básicas de entrada/salida para escribir directamente en pantalla o disco, lo que se le nombra como libre acceso, otra estructura simple es la separación del kernel y los programas de sistemas. Estructura por capas: Esta estructura se basa en nuevas versiones tales como unix donde se diseñaron para hardware más avanzado, para dar mayor soporte al mismo hardware. La ventaja de la estructura por capas es que cada capa cumple con una serie de funciones y servicios que brinda a las otras capas, esto permite una mejor organización del sistema operativo y una depuración más fácil de este. Existen estructuras que se generan en memoria durante la ejecución de los procesos relacionadas con el uso que estos hacen de los archivos. El sistema posee una tabla general de archivos abiertos, donde se procesa la información sobre los archivos activos e índices de referencia al archivo. La llamada al sistema toma el nombre del archivo busca en el directorio, copia la entrada del directorio en la tabla de archivos abiertos. Todo esto si estas acciones son permitidas de acuerdo a los modos de protección del archivo. En los sistemas multiusuario, un archivo puede ser abierto por más de dos usuarios simultáneamente, cada uno con su puntero. Existen dos tipos de tablas, la de proceso, que contiene información sobre los archivos abiertos por el proceso y contiene un apuntador a la segunda tabla, la de los archivos abiertos en todo el sistema, esta segunda tabla tiene información independiente del proceso que lo ejecute como ubicación del archivo en el disco. El sistema operativo partiendo de su estructura por capas, está organizado en cuatro capas, las cuales tienen su función propiamente establecida y una interfaz con la capa adyacente. La organización se estructura en las siguientes capas:  Manejador de interrupción. Activa al manejador al terminar la E/S.  Manejador de dispositivos o drivers. Inicia los registros del dispositivo, comprobando el estado.  Software de E/S independiente de los dispositivos. Este software está formado por la parte de alto nivel de los manejadores, el gestor de cache, el gestor de bloques y el servidor de archivos.  Interfaz del sistema operativo. Llamadas al sistema que usan las aplicaciones de usuario. Los manejadores de interrupción, administran las interrupciones que generan los controladores de dispositivos una vez que éstos están listos para la transferencia de datos, o bien han leído o escrito los datos de memoria principal en caso de acceso directo a memoria. Para administrar la interrupción se ejecuta el manejador de interrupción que

Ciencias Exactas, Ingenierías y Tecnología | Ingeniería en Desarrollo de Software

42

Programación de sistemas operativos Programa desarrollado tendrá como efecto es el de salvar los registros, comunicar el evento al manejador del dispositivo y restaurar la ejecución de un proceso. Cuando una interrupción ocurre muy frecuentemente, caso del reloj, o cuando la cantidad de información a transferir es muy pequeña, caso del teclado, sería muy costoso comunicar siempre el evento al manejador de dispositivo asociado. En estos casos, el propio manejador de interrupción registra la ocurrencia del evento, bien mediante el incremento de una variable global para el reloj o la acumulación de caracteres en un buffer del teclado. Los manejadores de dispositivos, tienen un manejador asociado en el sistema operativo, dicho manejador incluye un código independiente del dispositivo que otorga al nivel superior del sistema operativo una interfaz de alto nivel y el código dependiente del dispositivo necesario para programar el controlador del dispositivo a través de sus registros y datos. La principal actividad de un manejador de dispositivo es aceptar las peticiones en formato abstracto, de la parte del código de E/S independiente del dispositivo, traducir dichas peticiones a términos que entienda el controlador, enviar al mismo las órdenes adecuadas en la secuencia correcta y esperar a que se cumplan.

1.3.5. Operaciones de E / S En la mayoría de las aplicaciones, el archivo es el elemento central. Cualquiera que sea la finalidad de la aplicación, implicará la generación y uso de información. Normalmente cada sistema dispone de programas de utilidad que se ejecutan como aplicaciones privilegiadas. Sin embargo, un sistema de gestión de archivos necesita como mínimo algunos servicios especiales del sistema operativo. Para la E/S programada como la basada en interrupciones, la CPU debe encargarse de realizar las operaciones de lectura y escritura sobre ficheros.  La lectura o bien entrada de datos, permite recibir valores desde los dispositivos o archivos.  La escritura, realiza la operación de escritura de resultados en dispositivos de salida o archivos. Ejemplificando sobre un proceso de usuario que desea leer bloques de datos de una cinta, uno cada vez, siendo cada bloque de 100 bytes. Los datos van a ser leídos en una zona de datos del proceso de usuario situada en las direcciones virtuales 1000 a 1009. La forma simple de realizar sería emitir una orden de E/S a la unidad de cinta y esperar a que

Ciencias Exactas, Ingenierías y Tecnología | Ingeniería en Desarrollo de Software

43

Programación de sistemas operativos Programa desarrollado los datos estén disponibles. La espera podría ser activa o de manera más práctica, suspender al proceso en espera de una interrupción. Existen dos problemas con este enfoque:  El programa se queda colgado esperando a que la operación de E/S termine.  Dificulta las decisiones de intercambio del sistema operativo. Las ubicaciones virtuales 1000 a 1009 deben permanecer en memoria principal durante el curso de la transferencia del bloque, de lo contrario parte de los datos se perderán. Si un proceso emite una orden de E/S, queda suspendido a la espera del resultado, se le expulsa antes de comenzar la operación y se bloquea esperando a que la operación termine. Mientras tanto, la operación de E/S queda bloqueada esperando a que el proceso vuelva a memoria, para evitar este interbloqueo, la memoria de usuario implica en la operación de E/S debe quedar fija en la memoria principal, inmediatamente después de emitir la petición de E/S, incluso aunque la operación de E/S se encole y pueda no ejecutarse por algún tiempo. Acceso directo a memoria (DMA). Varios controladores, los dispositivos por bloques manejan el acceso directo a memoria o DMS. Primero el controlador lee el bloque de la unidad en serie, bit por bit, hasta que todo el bloque está en el buffer interno del controlador. A continuación, el controlador calcula la suma de verificación para comprobar que no ocurrieron errores de lectura y luego causa una interrupción. Cuando el sistema operativo comienza a ejecutarse, puede leer el bloque del disco del buffer del controlador byte por byte o palabra por palabra, ejecutando un ciclo, leyéndose en cada iteración un byte o una palabra de un registro del controlador y almacenándose en la memoria. La finalidad del DMA es para liberar a la CPU de un ciclo programado donde se leen los bytes del controlador uno por uno pues eso tiene pérdida de tiempo en la CPU, cuando se utiliza DMA la CPU proporciona al controlador dos elementos de información además de la dirección en disco del bloque: la dirección de memoria donde debe colocarse el bloque y el número de bytes que deben transferirse, como se muestra en la figura 17.

Figura 17. Una transferencia DMA es realizada totalmente por el controlador (Tanenbaum, 2003: 158)

Ciencias Exactas, Ingenierías y Tecnología | Ingeniería en Desarrollo de Software

44

Programación de sistemas operativos Programa desarrollado El procedimiento a seguir en una operación de E/S con DMA son:  Programación de la operación de E/S. Se indica al controlador la operación, los datos a transferir y la dirección de memoria sobre la que se efectuará la operación.  El controlador contesta aceptando la petición de E/S.  El controlador le ordena al dispositivo que lea (para operación de lectura) una cierta cantidad de datos desde una posición determinada del dispositivo a su memoria interna.  Cuando los datos están listos, el controlador los copia a la posición de memoria que tiene en sus registros, incrementa dicha posición de memoria y decrementa el contador de datos pendientes de transferir.  Los pasos 3 y 4 se repiten hasta que no quedan más datos por leer.  Cuando el registro de contador está a cero, el controlador interrumpe a la UCP para in dicar que la operación de DMA ha terminado. Inicio y control de los programas de canal. Estos programas residen en la memoria principal del CPU y se ejecutan en el canal. La CPU puede utilizar para estos fines, son las siguientes: • START I/O Inicia una operación de E/S. El campo de dirección de la instrucción se emplea para especificar el canal y el dispositivo de E/S que participa en la operación. • HALT I/O Finaliza la operación del canal. • TEST CHANNEL Prueba el estado del canal. • TEST I/O Prueba el estado del canal, el subcanal y el dispositivo de E/S. Una operación de E/S se inicia con la instrucción START I/O. La ubicación del programa de canal en la memoria principal viene definida en la palabra de dirección de canal (CAW: Channel Address Word).

Actividad 4. Dispositivos de Entrada y Salida El propósito de esta actividad es distinguir los mecanismos y funciones de los manejadores de dispositivos, identificando el hardware de E/S. Para ello, realiza lo siguiente: 1. Investiga acerca de los dispositivos de E/S, así como la forma en que interactúan con el sistema, para posteriormente clasificarlos e identificar sus manejadores. 2. Guarda la actividad con el nombre PSO_U1_A4_XXYZ. En donde XX es tu apellido (s) y YY tu nombre (s).

Ciencias Exactas, Ingenierías y Tecnología | Ingeniería en Desarrollo de Software

45

Programación de sistemas operativos Programa desarrollado

3. Envía el archivo a tu Facilitador(a) mediante la sección Tareas para recibir retroalimentación.

Autoevaluación Para reforzar los conocimientos relacionados con los temas que se abordaron en esta primera unidad del curso, es necesario que resuelvas el ejercicio de autoevaluación. Para ello, ingresa al aula.

Evidencia de aprendizaje. Administración del procesador, memoria y los dispositivos de entrada y salida Durante la realización de esta actividad retomarás lo estudiado en esta primera unidad, y trabajarás con los conceptos básicos del cómo interactúa el Sistema Operativo con los dispositivos de E/S y la administración del procesador de memoria. Para ello, realiza lo siguiente: 1. Investiga acerca de los temas abordados durante la unidad. 2. Elabora un cuadro sinóptico en el que integres los conceptos básicos del cómo interactúa el Sistema Operativo con los dispositivos de E/S y la administración del procesador de memoria. 3. Consulta la Escala de Evaluación que se encuentra en la sección Material de Apoyo para conocer los criterios de evaluación. 4. Guarda tu archivo con el nombre PSO_U1_EA_XXYY. En donde XX es tu apellido(s) y YY tu nombre(s) 5. Envía el archivo a tu Facilitador(a) mediante la sección portafolio de evidencias para recibir retroalimentación. * Recuerda que de ser necesario y en base a los comentarios hechos por parte de tu Facilitador(a), podrás enviar una segunda versión de tu actividad. No olvides consultar la Escala de evaluación que encontrarás en la pestaña Material de apoyo para saber los puntos que tienes que considerar en el desarrollo de tu actividad

Ciencias Exactas, Ingenierías y Tecnología | Ingeniería en Desarrollo de Software

46

Programación de sistemas operativos Programa desarrollado final. Si tienes dudas, consulta a tu Facilitador(a). Como parte de cada unidad, es importante que ingreses al foro Preguntas de Autorreflexión y consultes las preguntas que tu Facilitador(a) formule, a partir de ellas, debes elaborar tu Autorreflexión y enviarla mediante la herramienta Autorreflexiones. No olvides que también se toman en cuenta para la calificación final.

Cierre de la unidad Has concluido la primera unidad del curso. A lo largo de ésta se recordaron conceptos básicos sobre hilos y que es el multiprocesamiento y el paralelismo, también conociste como el sistema operativo maneja la memoria cuál es su jerarquía, sus particiones así como el manejo que hace el Sistema Operativo de la memoria real y virtual, identificaste cómo los dispositivos de entrada y salida son manejados por el sistema operativo sus mecanismos y estructura; así como las operaciones que realizan. Siendo este último tema realzado por una investigación de los principales dispositivos de Entrada y Salida E/S. 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 preparado(a) para seguir con la unidad dos, en donde se abordará el sistema de archivos, sus conceptos básicos y su jerarquía. Así como los tipos de archivos: reales virtuales y componentes; como el sistema operativo funciona física y lógicamente sus operaciones y su implementación. Todo ello con el fin de obtener el prototipo final al terminar la tercera y cuarta unidad del curso de Programación de Sistemas Operativos.

Para saber más Si deseas saber más acerca de cómo el procesador AMD maneja la energía, virtualización, arquitectura, administración y compatibilidad con diferentes sistemas operativos, visita la siguiente dirección electrónica:  http://www.amd.com/LA/PRODUCTS/TECHNOLOGIES/Pages/technologies.aspx

Ciencias Exactas, Ingenierías y Tecnología | Ingeniería en Desarrollo de Software

47

Programación de sistemas operativos Programa desarrollado

Fuentes de consulta Bibliografía básica   

  

Martínez, P., Cabello M. y Díaz, M. (1997) Sistemas Operativos. Madrid: Díaz de Santos. Ortiz, H. (2005) Sistemas Operativos Modernos. Colombia: Universidad de Medellín. Santiago, C., García, R., Quezada, A., Santana, F. y Santos, J. (2007) Fundamentos de sistemas operativos teorías y ejercicios resueltos. España: Parainfo S.A. de C.V. Stallings, W. (2007) Sistemas Operativos. México: Pearson Prentice Hall. Silberschatz, A. (2006) Fundamentos de sistemas operativos. España: McgrawHill. Tanenbaum, A. (2003) Sistemas Operativos Modernos. México: Pearson Prentice Hall.

Bibliografía complementaria 

Morera, J. y Pérez, A. (2002) Conceptos de Sistemas Operativos. Madrid: Comillas.

Ciencias Exactas, Ingenierías y Tecnología | Ingeniería en Desarrollo de Software

48

Programación de sistemas operativos Programa desarrollado

Unidad 2. Administrador de Sistemas de Archivos

Presentación de la unidad A lo largo de esta unidad aprenderás como el sistema operativo maneja el sistemas de archivos, los tipos de archivos, y cómo son organizados de manera lógica y física los mismos. El sistema de archivos, como se verá más adelante, está encargado de la administración de la información en: acceso, verificación y manipulación; logrando con ello ser un método de almacenamiento y organización. Además de permitir encontrar y acceder más rápido la información. Un sistema de archivos es un conjunto de tipo de datos abstractos, que son implementados para el almacenamiento, la organización jerárquica, la manipulación, el acceso, el direccionamiento y la recuperación de datos. Otra parte de suma importancia que se verá en esta unidad, es la diferencia entre archivo real y virtual. Un archivo virtual es un archivo de uso temporal que es utilizado por los procesos del sistema mientras se están ejecutando dichos procesos. Estos archivos se crean durante la ejecución de un sistema y se utilizan para el almacenamiento de información, intercambio y organización que ejecuta el sistema. Por otra parten, un archivo real es un objeto que contiene programas, datos o cualquier otro elemento; un archivo se muestra de manera real, en la información del espacio que ocupa en un disco duro o sistema de almacenamiento, en otras palabras su tamaño es en bytes. Para finalizar la unidad se abordarán las operaciones que son permitidas por parte de los archivos y cómo se implementan.

Propósito El propósito de los temas de esta unidad es que se conozca cómo el sistema operativo considera el Administrador de archivos; ya que la administración del almacenamiento de la información, es necesaria para organizar y determinar lo que ve el usuario; así como la forma en que lo ve.

Ciencias Exactas, Ingenierías y Tecnología | Ingeniería en Desarrollo de Software

49

Programación de sistemas operativos Programa desarrollado

De la misma manera es importante aprender a distinguir por qué y para qué el sistema maneja archivos reales y virtuales, y que operaciones se pueden realizar con los mismos.

Competencia específica Identificar el proceso que siguen los archivos para la administración y buen manejo de los mismos, con el análisis lógico que sigue el sistema.

2.1. Sistemas de Archivos Para los usuarios, el aspecto más importante de un sistema de archivos es lo que de éste se ve; es decir, qué constituye un archivo, cómo se nombran y protegen los archivos, qué operaciones pueden efectuarse con los archivos. El sistema de software que proporciona a los usuarios y a las aplicaciones servicios relativos al empleo de archivos debe cumplir con las necesidades de gestión de datos y con las necesidades de almacenamiento del usuario; se deben cumplir los siguientes objetivos:  Acreditar que los datos de los archivos sean válidos.  Optimizar el rendimiento.  Otorgar soporte E/S para la variedad de tipos de dispositivos de almacenamiento.  Minimizar o eliminar la posibilidad de pérdida de los datos.  Implantar un conjunto estándar de rutinas de interfaz de E/S.  Proporcionar un soporte de E/S para múltiples usuarios en los sistemas multiusuario. Dentro de un sistema de archivos están los métodos y estructuras, que son los datos que un sistema operativo utiliza para seguir la pista de los archivos de un disco o partición, y las formas en que se organizan los archivos en el disco. El concepto de sistema de archivos, también se puede utilizar para hacer referencia a una partición o disco que se utiliza para almacenamiento de la información o el tipo del sistema de archivos que utiliza. La diferencia entre un disco o partición y el sistema de archivos que contiene es importante. Algunos programas trabajan directamente en los sectores crudos del disco o partición; si hay un archivo de sistema existente ahí será destruido o corrompido severamente. La mayoría de programas trabajan sobre un sistema

Ciencias Exactas, Ingenierías y Tecnología | Ingeniería en Desarrollo de Software

50

Programación de sistemas operativos Programa desarrollado de archivos, y por lo tanto no utilizarán una partición que no contenga uno (o que contenga uno del tipo equivocado). Antes de que una partición o disco sea utilizada como un sistema de archivos, necesita ser iniciada y las estructuras de datos necesitan escribirse al disco. Este proceso se denomina construir un sistema de archivos. Los archivos están administrados por el sistema operativo. La manera en que están estructurados, nombrados, cómo se accede a ellos, cómo se utilizan, cómo se protegen e implementan, son características que se utilizan para el diseño de los sistemas operativos. A esta parte del sistema operativo que gestiona archivos, comúnmente se le conoce como el sistema de archivos. Para un usuario, el aspecto de mayor importancia dentro de un sistema de archivos, es su aspecto; en otras palabras, es lo que conforma un archivo, cómo se nombran y se protegen los archivos, las operaciones que se permiten, etc. En los detalles para seguir la línea de la memoria libre, se utilizan listas enlazadas o mapas de bits; el detalle de cuántos sectores hay en un bloque lógico, son cuestiones de menos interés aunque son de gran importancia para los desarrolladores de los sistemas de archivos. Concretamente los sistemas de archivos son un mecanismo que permite almacenar información en el disco y leerla después. Por lo cual, el usuario no necesariamente se entera de detalles de dónde y cómo se almacenará la información, y el funcionamiento de los discos. La forma en la que se da nombre a los objetos que se manejan, podría ser la característica más importante de cualquier mecanismo de abstracción, una vez que el proceso crea el fichero, se le asigna el nombre. Cuando el proceso termina, el archivo sigue existiendo y otros programas pueden tener acceso a él, utilizando su nombre. Varios sistemas de archivos, administran los nombres de éstos en dos partes separadas por un punto; a la parte secuencial del punto se le nombra extensión del archivo y normalmente especifica el tipo del archivo ―por ejemplo en MS-DOS―, los nombres de los archivos cuentan con uno o hasta ocho caracteres, más una extensión opcional de uno a tres caracteres. En Unix, se deja la extensión opcional de contar con dos o más extensiones y son especificaciones que se dejan a criterio del mismo usuario. En la siguiente imagen se presenta un listado de las extensiones más comunes de los sistemas de archivos y su descripción.

Ciencias Exactas, Ingenierías y Tecnología | Ingeniería en Desarrollo de Software

51

Programación de sistemas operativos Programa desarrollado

Figura 1. Tabla de extensiones de algunos sistemas de archivos (Tanenbaum, 2003: 403)

2.1.1. Concepto Los archivos proporcionan una forma de almacenar información en el disco y leerla después. Esto debe hacerse de tal manera que el usuario no tenga que ocuparse de los detalles de cómo y dónde se almacena la información, ni de cómo funcionan realmente los discos. Las reglas para nombrar archivos varían un tanto de un sistema a otro, pero todos los sistemas operativos permiten cadenas de uno a ocho caracteres como nombres de archivos válidos. Los archivos por su contenido pueden ser numéricos, alfanuméricos o binarios, pueden existir archivos de formato libre, tales como son los archivos de texto, o bien, los archivos pueden estar formateados de forma rígida. La información que contiene un archivo es definida por el usuario. Pueden almacenar muchos tipos de información, tales como: programas puente, programas objeto, programas ejecutables datos numéricos, texto, registros varios, imágenes, archivos de audio, etc. Para esto cada tipo de archivo tiene su propia estructura definida. Al tratar el tema de archivos, básicamente, se utilizan cuatro términos comunes: Campo. Es el elemento de datos básico, un campo individual contiene un valor único, como el apellido de una persona, una fecha o el valor leído por un sensor. Se caracteriza por su longitud y por el tipo de datos.

Ciencias Exactas, Ingenierías y Tecnología | Ingeniería en Desarrollo de Software

52

Programación de sistemas operativos Programa desarrollado Registro. Es una colección de campos relacionados que pueden tratarse como una unidad en algunos programas de aplicación. Archivo. Es una colección de información similar, con un nombre, la cual se guarda en un almacenamiento secundario. Los usuarios y las aplicaciones administran al archivo como una entidad única y se refieren a él por un nombre, los archivos tienen nombres únicos y pueden crearse y eliminarse. Base de datos. Es una colección de archivos relacionados, el aspecto básico de una base de datos se basa en las relaciones que existen entre los elementos de datos, son explícitas y la base de datos está diseñada para ser utilizada por varias aplicaciones diferentes. Un archivo fuente es una secuencia de subrutinas y funciones, cada una de las cuales está a su vez organizada como una serie de declaraciones, siguiendo de instrucciones ejecutables. Un archivo objeto es una secuencia de bytes organizado en bloques que el programa montador del sistema puede comprender. Un archivo ejecutable es una serie de secciones de código que el cargador puede cargar en memoria y ejecutarse.

2.1.2. Jerarquía de datos Es bastante común desear organizar los archivos de forma lógica, para ello se requiere agrupar los archivos de alguna forma dentro de esquemas flexibles determinados por cada usuario, para dar como resultado la organización de la información lógica. Básicamente, lo que se requiere es contar con una jerarquía general de datos comúnmente conocida como árbol de directorios; con este tipo de organización de información, el usuario puede tener la cantidad de directorios que requiera para agrupar y organizar sus archivos en diferentes categorías. La figura 2 especifica que existen directorios (A, B, C) pertenecientes en la raíz (root), los cuales son archivos de diferentes usuarios y éstos a su vez generan subdirectorios para los proyectos en los que se está trabajando.

Ciencias Exactas, Ingenierías y Tecnología | Ingeniería en Desarrollo de Software

53

Programación de sistemas operativos Programa desarrollado

Figura 2. Sistema jerárquico de datos (Tanenbaum, 2003) Para la gestión de archivos en su nivel más bajo los administradores de dispositivos se comunican directamente con los dispositivos periféricos o sus controladores o canales. Cada manejador de dispositivos es quien comienza la operación de E/S en un dispositivo y procesa la terminación de una petición de E/S. El nivel siguiente es como el sistema de archivos básico o nivel de E/S física, está formado por la interfaz primaria con el entorno exterior. Este nivel trata con bloques de datos que son intercambiados con sistemas de disco o cinta. El administrador básico de E/S, es quien inicia y termina toda la E/S con archivos. En este nivel se mantienen unas estructuras de control que se encargan de la E/S con los dispositivos, la planificación y el estado de los archivos. El supervisor básico realiza la selección del dispositivo donde se realiza la E/S con los archivos. Así mismo se ocupa de planificar los accesos a discos y cinta para optimizar el rendimiento. En este nivel se asignan los buffers de E/S y se reserva la memoria secundaria. El supervisor básico de E/S es parte del sistema operativo. Los usuarios y los programas de aplicación interactúan con el sistema de archivos por medio de órdenes de creación y eliminación de archivos realizando operaciones sobre los archivos.

Ciencias Exactas, Ingenierías y Tecnología | Ingeniería en Desarrollo de Software

54

Programación de sistemas operativos Programa desarrollado

Figura 3. Estructura de ficheros de tres tipos de jerarquía. (a) Sucesión de bytes. (b) sucesión de registros. (c) árbol (Tanenbaum, 2003: 382) Los archivos o datos pueden estar estructurados de formas diferentes en la figura 3 situada anteriormente se muestran tres posibilidades comunes. El ejemplo (a) es una sucesión no estructurada de bytes. Cualquier significado que se tenga sobre el fichero deberán atribuírselo los programadores en el nivel de usuario. La flexibilidad que se ofrece, mientras el sistema operativo ve solamente como secuencias de bytes, los programas de usuario pueden poner cualquier cosa que deseen los archivos y darles cualquier nombre que crean conveniente. En ese sentido, el sistema operativo se torna imparcial para que los usuarios puedan hacer cosas fuera de lo común. El ejemplo (b) de la figura 3, muestra que un archivo es una secuencia de registros se apoya en el concepto de que la operación de lectura devuelve un registro y que la operación de escritura sobre escribe o anexa un registro. El ejemplo (c) de la figura 3, indica una estructura de archivos. En esta organización, un archivo consiste en un árbol de registros, que no necesita todos de la misma longitud, cada uno de éstos contiene un campo de llave que representa una posición fija dentro del registro. El árbol está ordenado según el campo llave, a fin de poder buscar rápidamente una llave particular. La estructura lógica de los datos se organiza de acuerdo a la forma en cómo se accede a éstos. La estructura más simple de un directorio es una lista de entradas para cada archivo.

Ciencias Exactas, Ingenierías y Tecnología | Ingeniería en Desarrollo de Software

55

Programación de sistemas operativos Programa desarrollado

Actividad 1. Sistema de archivo Con el fin de que reflexiones sobre lo estudiado hasta el momento, participarás en un foro de discusión, en él compartirás un concepto propio acerca del sistema de archivos. Para ello, podrás revisar el material de la asignatura y apoyarte de los comentarios de tus compañeros(as). Previo a tu ingreso al foro: 1. Retoma las lecturas del tema 2.1.Sistemas de archivos. 2. Identifica qué es un sistema de archivos y cómo lo maneja el sistema operativo en su jerarquía de datos. 3. Ingresa al foro de la actividad para comenta tus aportaciones y sigue las indicaciones que en ese espacio se encuentran.

2.2. Tipo de Archivos Cada sistema operativo reconoce sus archivos especiales por caracteres y por bloques, además de los tipos de archivos diferentes. Los archivos regulares son lo que contienen información del usuario. Los archivos que se presentan en la figura anterior son archivos normales, los directorios son archivos de sistema que sirven para mantener la estructura del sistema de archivos. Los archivos especiales por caracteres están relacionados con E/S y sirven para modelar dispositivos de E/S en serie como las terminales, impresoras y redes. Los archivos especiales por bloques sirven para modelar discos. Los archivos normales generalmente son archivos ASCII o bien archivos binarios. Los archivos ASCII consisten en líneas de texto, en algunos sistemas cada línea termina con un carácter de retorno de carro; en otros se emplea el carácter de salto de línea. En algunas ocasiones se requieren ambas, las líneas no deben necesariamente tener todas las mismas longitudes. Los archivos normales ASCII tienen la ventaja de que pueden exhibirse e imprimirse tal como están, y se pueden editar con cualquier editor de textos. Además, si una gran cantidad de programas usan archivos ASCII como entradas y salidas, es fácil conectar la

Ciencias Exactas, Ingenierías y Tecnología | Ingeniería en Desarrollo de Software

56

Programación de sistemas operativos Programa desarrollado salida de un programa a la entrada de otro, como sucede con los conductos de Shell. Los archivos que no son ASCII se interpretan como archivos binarios. Los archivos binarios son los que no se interpretan como archivo ASCII, si se obtiene una vista de los archivos binarios por medio de una impresión, se obtendrá un listado difícil de comprender lo que pareciera ser contenido basura; por lo general estos archivos están formados por su estructura propiamente interna. En la figura 4 se puede apreciar la ejecución de un archivo binario simple; el ejemplo fue tomado de las primeras versiones de UNIX. En la secuencia de bytes representado por el archivo, se observa que el sistema operativo únicamente ejecutará un archivo si tiene el formato que se reconoce por el sistema operativo.

Figura 4. Ejecución de un archivo binario simple (Tanenbaum, 2003: 406) En el primer ejemplo mostrado (a), se cuenta con cinco secciones:   

Encabezado. Es quien inicia e identifica el archivo como ejecutable valido para el sistema operativo. Texto. Se carga en memoria y utiliza la reubicación de bits para establecer su ubicación dentro del sistema. Datos. Se carga en memoria y utiliza la reubicación de bits para establecer su ubicación dentro del sistema.

Ciencias Exactas, Ingenierías y Tecnología | Ingeniería en Desarrollo de Software

57

Programación de sistemas operativos Programa desarrollado  

Bits de reubicación. Se utilizan para la reubicación de los encabezados de texto y datos Tabla de símbolos. Es utilizada para la depuración.

Tomando el segundo ejemplo (b), se tiene que el archivo binario se considera como un archivo, el cual consiste en la colección de procedimientos de las bibliotecas o módulos que no están enlazados. Cada módulo se representa con un encabezado que es identificado como el nombre, fecha de creación, propietario, código de protección y tamaño. De la misma forma que el archivo ejecutable, los encabezados de módulo están llenos de números binarios. Como se mencionaba anteriormente todos los sistemas operativos reconocen el tipo de archivos ejecutable y algunos más, que no son propiamente pertenecientes a este.

2.2.1. Real El archivo real en Windows, es el que es considerado como un objeto; está formado por programas, datos o cualquier tipo de información que contenga uno o varios elementos dentro del sistema operativo. Un archivo real se muestra por el espacio que ocupa dentro de un disco duro o el mismo sistema de almacenamiento de archivos administrado por el sistema operativo.

2.2.2. Virtual A diferencia un archivo real que ocupa un espacio en el disco duro, un archivo virtual es aquel cuyo uso es temporal, administrado por los procesos del sistema. En Windows estos archivos se denominan como archivos temporales, se generan mientras se está ejecutando un sistema y, éste, los utiliza para el almacenamiento de información, intercambio y organización mientras se ejecuta el sistema. Su tamaño varía bastante y termina al detener la ejecución del sistema, muchos de ellos son eliminados.

Ciencias Exactas, Ingenierías y Tecnología | Ingeniería en Desarrollo de Software

58

Programación de sistemas operativos Programa desarrollado

2.2.3. Componentes Los componentes principales para un archivo, se forma por un nombre y datos. Además, la mayoría, o todos los sistemas operativos, relacionan otra información a cada archivo contenido, tales como los componentes de fecha y hora de su creación además del tamaño del archivo. Por lo general un componente es en realidad el atributo del archivo el cual varía bastante de un sistema operativo a otro, pues la gestión de la información la asocian a su sistema de archivos. La figura 5 muestra un esquema básico y general sobre algunos atributos, sin dejar de pensar que pueden existir muchas más. La mayoría de los sistemas operativos puede que no integren la mayoría de los atributos que se muestran, pero todos están presentes en algún sistema.

Figura 5. Algunos de los componentes de archivos comúnmente utilizados (Tanenbaum, 2003: 386) En el listado que se muestra en la tabla, de esta figura 5, los primeros cuatro atributos se refieren a la protección del fichero, e indican quién puede tener acceso al mismo y quienes tienen el acceso restringido. En una gran mayoría de sistemas, para permitir el acceso al sistema o algún archivo el usuario debe presentar una contraseña para poder

Ciencias Exactas, Ingenierías y Tecnología | Ingeniería en Desarrollo de Software

59

Programación de sistemas operativos Programa desarrollado validar que tiene el permiso de ingreso, en ese caso la contraseña que se valida por el sistema deberá ser el atributo. Los indicadores son bits o campos cortos que controlan y habilitan alguna propiedad específica, los archivos ocultos, por ejemplo, no aparecen en los listados de todos los ficheros. El indicador de archivado es un bit que especifica si el archivo ya se respaldó o no. El programa de respaldo sabe qué ficheros deben respaldarse. El indicador temporal permite marcar un fichero para que se elimine de forma automática cuando termine el proceso que lo creó. Dentro de los campos de longitud de cada registro, la posición de la clave y longitud de la clave se presentan en los ficheros cuando los registros puedan ocultarse empleando una clave. Dichos campos proporcionan la información necesaria para hallar las claves. El tamaño de un archivo indica que tanto espacio llega a ocupar dentro del disco duro, una gran parte de los sistemas operativos antiguos exigían que fuera especificado el tamaño del archivo al momento de ser creado con la intención de poder administrar la cantidad máxima de espacio para su almacenamiento. Los sistemas operativos de estaciones de trabajo y ordenadores personales son o bastante inteligentes como para prescindir de esa información.

Actividad 2. Tipos de archivos más comunes en sistema operativo Con el fin de obtener un concentrado acerca de los tipos de archivos más comunes en Windows y, entre todos los miembros del grupo, llegar a la obtención de un solo documento: 1. Investiga cuáles son los tipos de archivo más comunes en el sistema operativo Windows. 2. Ingresa a la Wiki de esta actividad Tipos de archivos más comunes en sistema operativo y realiza tu aportación. 3. Revisa las aportaciones de tus compañeros(as) y enriquécelas. Además, recuerda identificar tu participación con tu nombre e incluir las fuentes de información que utilices.

Ciencias Exactas, Ingenierías y Tecnología | Ingeniería en Desarrollo de Software

60

Programación de sistemas operativos Programa desarrollado

2.3. Organización del sistema de archivos, lógica y física La organización del sistema de archivos, se basa al arreglo de los registros dentro de un archivo. Ya que todos los archivos están formados por registros. La organización del sistema de archivos lógica, refiere en la forma en que los registros se organizan y las características del medio utilizado para su almacenamiento, para los medios magnéticos, los archivos se organizan de tres formas:  Organización secuencial. Es considerada la más sencilla de implementar, porque los registros se almacenan y se pueden recuperar en serie. Para localizar un registro especifico, se busca en el archivo desde el inicio hasta encontrar el registro solicitado.  Organización directa. Son archivos de acceso directo cuyo almacenamiento solo se pueden implementar en dispositivos de almacenamiento de acceso directo, con la diferencia de la organización secuencial, la organización directa permite acceder a cualquier registro en cualquier orden, sin la necesidad de iniciar la búsqueda desde el principio del archivo.  Organización secuencial indexada. Este tipo de organización de archivos es una combinación de los dos tipos de organización anteriores, se crea y mantiene a través de un paquete de software de método. Para lograr la mejor selección de estas opciones por lo general se consideran estas características:    

Volatilidad de los datos. Frecuencia con la cual se efectúan adiciones y eliminaciones. Actividad del archivo. Porcentaje de registros procesados durante una ejecución. Tamaño del archivo. Proción de espacio que ocupa el archivo. Tiempo de respuesta. Cantidad de tiempo que el usuario acepta esperar antes que la operación solicitada se complete.

La organización física del sistema de archivos en memoria secundaria depende de la estrategia de los diferentes tipos de organización que se mencionaron antes, y se representan en la siguiente figura (6).

Ciencias Exactas, Ingenierías y Tecnología | Ingeniería en Desarrollo de Software

61

Programación de sistemas operativos Programa desarrollado

Figura 6. Diferentes técnicas de organización de archivos (Stallings, 2005). Otros de los criterios importantes a considerarse durante la elección de una organización de archivos es:  Acceso directo para la recuperación rápida de la información.  Facilidad de actualización para colaborar a mantener la información.  Economía para minimizar el costo de almacenaje.  Facilidad de mantenimiento simple para minimizar la probabilidad de errores.  Confianza de asegurar los datos. En la organización de archivos física, los datos son modificados en su acceso contiguo físico, dependiendo del tipo de dispositivo de almacenamiento secundario, los registros pueden ser de tamaño fijo o variable y se pueden organizar de distintas formas para construir archivos físicos. Existen diferentes tipos de organización, los cuales son:  Cinta magnética. Es uno de los dispositivos de almacenamiento; con éste el archivo físico está formado de un conjunto de registros físicos y cada registro está organizado de forma secuencial.

Ciencias Exactas, Ingenierías y Tecnología | Ingeniería en Desarrollo de Software

62

Programación de sistemas operativos Programa desarrollado 



Disco magnético. Es otro de los dispositivos secundarios de almacenamiento; dentro del disco, el archivo es considerado una colección de registros físicos del mismo tamaño, su característica es que puede estar organizado de forma secuencial, ligada o por medio de una tabla de mapeo. Asignación de espacio libre. Este método permite decidir al sistema operativo qué partes del disco no están siendo ocupados. Para el control de dicho espacio libre comúnmente se utilizan algunos métodos para este propósito, vectores de bits, lista ligada, por agrupación y por contador.

2.3.1. Operaciones con archivos Comúnmente los archivos están hechos para almacenar la información que se necesita recuperar luego de realizar algún proceso de datos. La mayoría de los sistemas administradores de archivos brindan algunas operaciones de almacenamiento y recuperación, en siguiente listado se muestran las llamadas más comunes relacionadas con archivos: 

 









Create. Generalmente esta llamada genera el archivo sin dato alguno, su propósito es informar que va existir un archivo y solo establece algunos de su componentes o atributos (en tema anterior se mostró los diferente tipos de atributos). Delete. Esta llamada es muy común utilizarla cuando existe un archivo dentro del sistema y ya no es necesario su existencia para liberar espacio en disco. Open. La utilidad de esta llamada es habilitar al sistema que se le otorgue los atributos y la lista de direcciones de disco y los coloque en la memoria principal a fin de agilizar el acceso en llamadas posteriores. Close. Esta llama es útil para cuando todos los procesos de los archivos estén concluidos y sus atributos y las direcciones de disco no sean de utilidad, por lo general es necesario cerrar el archivo para liberar espacio correspondiente en las tablas internas. Read. Llamada útil para leer los datos del archivo, por lo general los bytes provienen de la posición actual. El invocador debe especificar cuántos datos se necesitan y también un buffer para colocarlos. Write. Se utiliza esta llamada para modificar los datos en los archivos, en su posición actual. Si esta posición está en el final del archivo el tamaño aumenta. Se sobre escriben los cuando la posición del archivo este a la mitad de su posición y son reemplazados por los existentes. Append. Esta llamada realiza llamadas de write pero con la restricción de agregar los datos al final del archivo. Los sistemas que ofrecen un juego mínimo de llamadas al sistema generalmente no cuentan con append.

Ciencias Exactas, Ingenierías y Tecnología | Ingeniería en Desarrollo de Software

63

Programación de sistemas operativos Programa desarrollado 



 

Seek. En la organización de acceso aleatorio de los archivos, necesita un método para especificar el lugar del que deben tomarse los datos. Un enfoque común es tener una llamada al sistema, Seek, que ajustará a la posición actual del archivo una vez que localiza su ubicación se podrán leer los datos de esa posición y escribir en ella. Get Attributes. Comúnmente los procesos requieren leer los atributos de los archivos para realizar alguna llamada o proceso, realiza un examen de algunos de sus atributos para saber los tiempos de modificación. Set Attributes. Algunos de los atributos de los archivos pueden ser establecidos por el usuario y modificarse después de que se creó el archivo. Rename. Frecuentemente los usuarios requieren de modificar el atributo del nombre al archivo que existe, esta llamada permite hacerlo.

2.3.2. Implementación de archivos Posiblemente para los usuarios el punto más importante de la implementación del almacenaje de los archivos se poder llevar un control de qué bloques de disco corresponden a qué fichero. Se contemplan varios métodos en los distintos sistemas operativos, los cuales son:  Asignación contigua. Es considerado el esquema más simple pues almacena cada archivo como un bloque secuencial de datos en el disco, por ejemplo en un disco con bloques de 1 byte a un archivo de 50 bytes se le asignarán 50 bloques consecutivos. Una de las principales ventajas, es la sencillez con que sabe dónde están los bloques de un archivo, y el rendimiento es bastante bueno pues es posible leer todo el archivo del disco en una sola operación. Así como existen ventajas de este método de implantación también cuenta con algunas desventajas, como que no es muy factible si no se conoce el tamaño máximo del archivo en el momento en que se crea éste, pues el sistema operativo no se dará cuenta: cuánto espacio en disco debe reservar para este archivo. Y en la fragmentación del disco se desperdicia espacio que de otra forma podría haberse aprovechado.  Asignación por lista enlazada. El segundo método para el almacenamiento de archivos es guardar cada uno como una lista enlazada de bloques de disco, en la siguiente figura (7) nos indica que la primer palabra de cada bloque se emplea como línea enlazada al siguiente bloque. Este método tiene la posibilidad de utilizar todos los bloques y no pierde espacio por fragmentación de disco.

Ciencias Exactas, Ingenierías y Tecnología | Ingeniería en Desarrollo de Software

64

Programación de sistemas operativos Programa desarrollado

Figura 7. Asignación por lista enlazada de bloques de disco (Tanenbaum, 2003: 416) 

Asignación por lista enlazada utilizando índices. Al utilizar esta implementación todo el bloque estará disponible por completo para los datos, y el acceso directo es más sencillo a pesar de que se tiene que seguir la cadena para encontrar una distancia dada dentro de un archivo, la cadena esta por completo en la memoria y puede seguirse sin tener que consultar el disco. Su principal desventaja es que toda la tabla debe estar en la memoria para que puede funcionar; en discos grandes se vería afectado, pues entre mayor capacidad del disco, menor será el rendimiento de búsqueda. La siguiente figura (8) muestra el bloque de asignación por lista, donde se puede iniciar en el bloque 4 y seguir la cadena hasta el final del bloque y lo mismo para el bloque 6, iniciar desde ahí hasta seguir la cadena final.

Ciencias Exactas, Ingenierías y Tecnología | Ingeniería en Desarrollo de Software

65

Programación de sistemas operativos Programa desarrollado

Figura 8 Asignación por lista enlazada utilizando índices (Tanenbaum, 2003: 417) 

Nodos i (nodos índice). Este método de implementación es útil para saber cuáles bloques pertenecen a cuál archivo; consiste en asociar cada archivo una pequeña tabla, la cual contiene los atributos y direcciones en disco de los bloques del archivo. En la siguiente figura (9) se muestra un ejemplo simple, donde la posibilidad de encontrar todos los bloques del archivo. Su principal ventaja, respecto al anterior, los nodos índice emplean una tabla en la memoria pues solo debe estar en memoria mientras el archivo correspondiente está abierto. Otra ventaja de este método es el rendimiento que ofrece es que solo es necesario reservar cantidad de espacio para los archivos abiertos.

Ciencias Exactas, Ingenierías y Tecnología | Ingeniería en Desarrollo de Software

66

Programación de sistemas operativos Programa desarrollado

Figura 9 Tabla de método de implementación de archivos por medio de nodos índice (Tanenbaum, 2003) Una de las desventajas de los nodos índices, es que fija el espacio de las direcciones en disco. Pero mientras el archivo crece puede reservar la última dirección de disco no para un bloque de datos, sino para la dirección de un bloque que contiene más direcciones de bloques de disco.

Actividad 3. Mapa conceptual de la organización del sistema de archivos Durante la elaboración de esta actividad podrás distinguir y representar la jerarquía y las distintas operaciones entre archivos, para ello: 1. Elabora un mapa conceptual utilizando la información del tema Organización del sistema de archivos, lógica y física; así como de algunas fuentes de tu preferencia. 2. Guarda tu actividad usando la nomenclatura DOO_U2_A3_XXYZ. 3. Envía el archivo a tu Facilitador(a) para recibir retroalimentación.

Ciencias Exactas, Ingenierías y Tecnología | Ingeniería en Desarrollo de Software

67

Programación de sistemas operativos Programa desarrollado

Autoevaluación Para reforzar los conocimientos relacionados con los temas que se abordaron en esta segunda unidad del curso, es necesario que resuelvas la autoevaluación de la unidad. Ten en cuenta que es muy importante leer cuidadosamente los planteamientos indicados y elegir la opción adecuada para cada uno. Para realizar esta actividad, ingresa al aula.

Evidencia de aprendizaje. Manejo de archivos en Linux (debían, fedora, Ubuntu) y Windows Como parte de la evaluación de esta unidad, debes llevar a cabo la siguiente actividad: 1. En un archivo de texto describe cómo es manejado el sistema de archivos de Windows, así como sus tipos de archivos. 2. Dale formato en cuanto a su organización lógica y física. 3. Complementa con los mismos conceptos para un sistema Linux el que sea de tu agrado (Debian, Fedora, Ubuntu). 4. Consulta la Escala de evaluación, para conocer los criterios que se evaluarán. 5. Guarda tu evidencia con el nombre DOO_U2_EA_XXYZ. 6. Envía el archivo a tu Facilitador(a) para recibir retroalimentación. * Recuerda que de ser necesario y en base a los comentarios hechos por parte de tu Facilitador(a), podrás enviar una segunda versión de tu actividad.

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

Ciencias Exactas, Ingenierías y Tecnología | Ingeniería en Desarrollo de Software

68

Programación de sistemas operativos Programa desarrollado PSO_U1_ATR_XXYZ. Posteriormente envía tu archivo mediante la herramienta Autorreflexiones.

Cierre de la unidad Has concluido el estudio de la segunda unidad de la asignatura. A lo largo de ésta se vieron conceptos básicos sobre el administrador de sistemas de archivos sus conceptos y la jerarquía de datos, los tipos de archivos reales y virtuales; así como sus componentes, además de la organización del sistema de archivos de manera lógica y física, las operaciones que se pueden realizar con los mismos y cómo se implementan. Es recomendable 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 lo contrario ya estás preparado(a) para seguir con la Unidad 3. Seguridad y Protección, en donde se abordará lo relacionado con la seguridad y protección del entorno, el concepto y objetivo de la protección. Todo ello, con el fin de obtener un prototipo final al concluir las cuatro unidades de Programación de Sistemas Operativos.

Para saber más Si deseas saber más acerca de los sistemas operativos, revisa la siguiente página web: 

Sistemas de archivos http://exa.unne.edu.ar/depar/areas/informatica/SistemasOperativos/SO4.htm

Fuentes de consulta     

Candela, S. y García, C. (2007). Fundamentos de Sistemas Operativos. Teoría y ejercicios resueltos. España: Paraninfo. Morera, J. y Pérez, J. (2002). Conceptos de sistemas Operativos. España: Comillas Ortiz, H. (2005) Sistemas Operativos Modernos. Colombia: Medellin. Silberschatz, A. (2006). Fundamentos de Sistemas Operativos. España: Mc. Graw Hill. Stallings, W. (2005). Sistemas Operativos Modernos: Aspectos Internos y principios de diseño. México: Pearson, Prentice Hall.

Ciencias Exactas, Ingenierías y Tecnología | Ingeniería en Desarrollo de Software

69

Programación de sistemas operativos Programa desarrollado  Tanenbaum, A. (2003). Sistemas Operativos Modernos. México: Pearson Educación.

Ciencias Exactas, Ingenierías y Tecnología | Ingeniería en Desarrollo de Software

70

Programación de sistemas operativos Programa desarrollado

Unidad 3. Seguridad y Protección

Presentación de la unidad Los términos de seguridad y protección se utilizan de forma indistinta, sirven para hacer la distinción entre mecanismos específicos del sistema operativo que proporcionan seguridad, y el aseguramiento de que los archivos no sean visualizados ni modificados por usuarios no autorizados. La protección, se obtiene por medio de un mecanismo que restringe el acceso de los programas, de los procesos o de los usuarios, a los recursos definidos por un sistema informático. Este mecanismo debe proporcionar un medio para establecer los controles que se deban imponer. La seguridad, ofrece la validación de los usuarios del sistema, con el objetivo de proteger la integridad de la información almacenada en el mismo y los recursos físicos del sistema; además protege el acceso no valido y la destrucción o modificación mal intencionada de los datos. Por todo lo mencionado, son importantes los temas que se manejarán a lo largo de esta unidad ya que son de vital importancia para un buen desarrollo de un sistema operativo.

Propósito Controlar la seguridad y limitar el acceso a los archivos, mediante la implementación de mecanismos de protección que ofrezcan la confianza de que sólo los procesos autorizados del sistema puedan operar sobre los segmentos de memoria, CPU y otros dispositivos de entrada y salida.

Competencia específica Utilizar las funciones y técnicas para validar las amenazas de un sistema como políticas y mecanismos mediante la diferenciación de seguridad y protección.

Ciencias Exactas, Ingenierías y Tecnología | Ingeniería en Desarrollo de Software

71

Programación de sistemas operativos Programa desarrollado 3.1. Entorno de Seguridad El objetivo de la seguridad está basado en la forma cómo debe protegerse un sistema contra robos, ataques, o cualquier tipo de programas o usuario mal intencionado que pueden llegar afectar el buen rendimiento del sistema operativo. Debido al uso creciente de los sistemas operativos se ha extendido en ambientes comerciales, gubernamentales, militares e incluso en hogares. Una gran masa de datos, de vital importancia para el usuario, requiere de la seguridad; no solo de un simple sistema de protección, sino además considerar el entorno externo en el que el sistema opera. Por lo general de nada sirve la protección interna si la consola del operador está al alcance de personal no autorizado, o bien si se pueden extraer los archivos de forma simple, estos problemas de seguridad no son atribuidos a problemas del sistema operativo, sino más bien se derivan básicamente de problemas administrativos. Es importante dedicar un esfuerzo en la seguridad considerando el entorno externo en que el sistema opera. La información almacenada en el sistema, así como los recursos propios del sistema, deben protegerse contra acceso no autorizado, destrucción o alteraciones tales como la modificación accidental de inconsistencias hacia el sistema operativo En lo que concierne a la seguridad de un sistema operativo, existen varias etapas en las que se debe poner cuidado al tratar de implementar algún medio de seguridad en el sistema, las dos más importantes son: la pérdida de datos y la penetración de intrusos. Algunas de las causas más comunes en la pérdida de datos son: 1.- Causas Naturales: Se conoce como causas naturales a las que no tiene nada que ver con el desarrollo del sistema, su implementación ni ambiente de trabajo, pues se ve afectado por motivos como incendios, inundaciones, terremotos, etc. 2.- Fallas en hardware / Software: Este tipo de fallas va enfocado al daño físico en las partes que componen la computadora, como lo es fallas de CPU, disco duro, memoria, etc. y fallas en la estructura interna del sistema. 3.- Error humano: Este puede incurrir de varias formas, la más común es el descuido en la captura de datos; por ejemplo, puede haber errores en la forma de montar algún dispositivo de disco duro, o al ejecutar un programa que no debería ejecutarse; la mayoría de estas causas, que derivan en la pérdida de información, pueden evitarse manteniendo un constante y adecuado respaldo de la información que es considerada como importante.

Ciencias Exactas, Ingenierías y Tecnología | Ingeniería en Desarrollo de Software

72

Programación de sistemas operativos Programa desarrollado Existen también varios tipos de amenazas a la seguridad, que pueden afectar a la integridad del sistema, así como a la información, para esto se deben de cumplir con los siguientes requisitos:  Confidencialidad.- Para un sistema es muy importante mantener un nivel de confidencialidad, para que cuando se acceda a la información, ésta sea más fácil de comprender y que sólo los usuarios autorizados, tengan los permisos de lectura. 

Integridad.- Es importante que la información que se maneja dentro un sistema sea la más completa posible y que se pueda editar solo por los usuarios autorizados.



Disponibilidad.- Hoy en día, el desarrollo de sistemas exige que los elementos estén siempre disponibles y en línea para que los usuarios autorizados tengan acceso a la información.

Siempre al desarrollar un sistema lo que se busca es poder garantizar la seguridad propia del sistema operativo; para esto, es necesaria la implementación en todos los niveles, ya que por menor que sea la debilidad contenida en el sistema, la información contenida en el mismo podría colapsar. Para poder mantener una seguridad en el sistema es necesario mantener como mínimo los requisitos anteriores, que permitan establecer el esquema de protección básico para el desarrollo de un sistema operativo. Además de ofrecer y garantizar durante el desarrollo la seguridad, el sistema es quien debe proveer de mecanismos de protección para la implementación de las características de seguridad. Sin la capacidad de autorizar a los usuarios y procesos, de controlar su acceso y el registro de tareas, sería prácticamente imposible poder implementar estas medidas pues el sistema estaría restringido para poder llevarlas a cabo. Lo idea es de que el sistema tenga la posibilidad de poder establecer un enfoque global de protección, soportándose tal vez por mecanismos de protección hardware. La mayor parte de los aspectos de seguridad resultan ser complicados, pues a medida que los usuarios malintencionados conocen las vulnerabilidades de los sistemas de seguridad estos pueden ser atacados. A medida que van creciendo los sistemas y las necesidades de los usuarios, es necesario establecer medidas de seguridad que respondan a los requerimientos del mismo sistema. Existen diferentes tipos de amenazas que pueden llegar afectar la integridad de los sistemas operativos, éstas pondrían al sistema operativo en un riesgo latente, o bien, dejarlo inservible, estas son: la interrupción, la intercepción, Para ejemplificar estas amenazas revisa el flujo normal de información, que surge cuando se va generando un flujo desde el origen -como un archivo o una región de memoria principal- hacia su destino; la figura 3.1. representa un ejemplo de este flujo de

Ciencias Exactas, Ingenierías y Tecnología | Ingeniería en Desarrollo de Software

73

Programación de sistemas operativos Programa desarrollado transmisión de datos desde el origen, sin ningún tipo de bloqueo o interrupción hacia el destino de la información.

Figura 3.1. Flujo normal de información (Stallings, 2005: 573) Una de las amenazas más comunes es la interrupción, la cual es considerara una de las amenazas que afectan a la disponibilidad del sistema operativo -puede ser por un ataque que genere una interrupción de los procesos o la administración de archivos- esto tiene como consecuencia dejar al sistema inútil. La figura 3.2. muestra un ejemplo de cómo se puede generar una interrupción del flujo de información, la cual es causada por amenaza, bloqueo o falla en el flujo de la información hacia su destino; este ejemplo indica que el sistema operativo quedaría inútil tras esta interrupción.

Figura 3.2. Flujo normal de información (Stallings, 2005: 573) La Intercepción es otro tipo de amenaza, en un ejemplo típico de este tipo se encuentra que ocurre un acceso de forma inesperada y sin autorización, la cual llega a afectar la integridad de la información. La figura 3.3. representa un ejemplo de flujo de información, donde el envió de la información a su destino es interceptada de forma no autorizada para poner en peligro la integridad de la información.

Figura 3.3. Flujo normal de información (Stallings, 2005: 573)

Ciencias Exactas, Ingenierías y Tecnología | Ingeniería en Desarrollo de Software

74

Programación de sistemas operativos Programa desarrollado Existe un tipo de amenaza más latente y que afecta de forma directa la integridad de la información. En la figura 3.4. se representa un claro ejemplo de una alteración del flujo de información, donde una amenaza acceda de forma no autorizada y modifica el flujo de información a su destino, alterando de forma directa la información del sistema operativo.

Figura 3.4. Flujo normal de información (Stallings, 2005: 573) Otro tipo de amenaza es la de invención; esta pone en riesgo la integridad de la información. En la figura 3.5. se muestra como dentro de un flujo de información, una amenaza ingresa dejando fuera al origen de la información para formar parte de esta amenaza para insertar datos falsos al sistema operativo

Figura 3.5. Flujo normal de información Imagen 1. Flujo normal de información. (Stallings, 2005: 573) El problema más común al que se enfrente un sistema operativo y que es bastante difícil de afrontar, es la modificación o alteración de la información, lo cual provoca un mal funcionamiento y afecta la integridad de las funciones, en la siguiente tabla se muestran las diferentes amenazas a las que se afrontan cada clase de elementos.

Ciencias Exactas, Ingenierías y Tecnología | Ingeniería en Desarrollo de Software

75

Programación de sistemas operativos Programa desarrollado

Tabla 3.1. Elementos que afrontan la seguridad e integridad de la información. (Stallings, 2005: 575) Las amenazas a la integridad de la información, son una preocupación constante para los desarrolladores de sistemas operativos, ya que la confidencialidad, disponibilidad e integridad del sistema estaría en peligro, por los diferentes tipos de amenazas que están a la orden del día. Las amenazas por su complejidad y tipo de afectación se pueden clasificar como amenazas pasivas y amenazas activas. Las amenazas pasivas, son aquellas que solo interceptan el flujo de la información afectando la confidencialidad de la misma, este tipo de amenazas tienen el objetivo solo de espiar y divulgar el contenido de la información. Estas amenazas son difícil de ser detectarla, pues no generan alteración al administrador de archivos ni funcionalidad del sistema operativo, una posible medida debería ser de prevención para evitar el filtrado. Las amenazas activas son delicadas para la integridad del sistema. En éstas está latente la alteración del flujo de datos o bien la creación de un flujo falso que pone en riesgo el funcionamiento normal del sistema operativo. En la mayoría de los casos una amenaza activa es difícil prevenir de forma absoluta, pues requeriría de una protección de todos los servicios y rutas de comunicación.

Ciencias Exactas, Ingenierías y Tecnología | Ingeniería en Desarrollo de Software

76

Programación de sistemas operativos Programa desarrollado

Actividad 1. Seguridad y protección dentro del diseño de un sistema operativo La presente actividad tiene como propósito que reflexiones sobre la seguridad y la protección en un sistema operativo. 1.

Retoma la lectura del tema 3.1. Entorno de Seguridad.

2. Busca los conceptos de seguridad y protección en cualquier ámbito (laboral, personal, etc.). 3. Identifica qué seguridad y protección debes considerar para un buen sistema operativo y qué es lo más importante: la seguridad o la protección. 4.

Ingresa al foro y genera una nueva entrada.

3.1.1. Clasificaciones de la seguridad “El departamento de defensa de los EEUU, especifica cuatro clasificaciones de seguridad para los sistemas: A, B, C, D, esta especificación se usa ampliamente en dicho país para determinar la seguridad de una instalación y modelar soluciones de seguridad”. (Silberschatz, 2006: 547). Tomando como base de referencia la clasificación del autor, se ubican cuatro niveles de clasificación de acuerdo a los requerimientos de seguridad necesaria para un sistema operativo: 

Nivel D. Esta división, es la considerada de menor nivel, o bien requiere de una protección mínima para la integridad del sistema operativo. Los sistemas operativos diseñados con procesos individuales o mono usuarios, por su naturaleza de administración simple de archivos no es muy común o frecuente el uso de un nivel superior de la información.



Nivel C. Está considerado como un nivel superior al mínimo de seguridad requerido para un sistema operativo, en este nivel se implementan mecanismos de protección de recursos que estarían bajo la responsabilidad de los usuarios quienes tendrán los privilegios de poder realizar modificaciones, se considera que

Ciencias Exactas, Ingenierías y Tecnología | Ingeniería en Desarrollo de Software

77

Programación de sistemas operativos Programa desarrollado





los sistemas comerciales como Linux, Windows, por mencionar solo unos caen esta categoría, este nivel a su vez se clasifica en dos subniveles. o C1. Este subnivel integra algunos controles que permitan a los usuarios proteger su información de lectura, escritura o eliminación de archivos. o C2. En este subnivel, Es la parte superior del nivel C1 donde existe un usuario con privilegios superiores que permiten la auditoria de la información, tal como un administrador del sistema. Nivel B. En este nivel seguridad cuenta con los parámetros incluido de los niveles anteriores. Adicionando para el incremento de la seguridad, la amplitud de controles y etiquetas de seguridad, dominio y mecanismos estructurados de protección que son de utilidad para el refuerzo de restricción de acceso no autorizados. Nivel A. Técnicamente este nivel cumple con todas las características que tiene una clasificación B, este nivel utiliza niveles específicos de diseño y técnicas de validación para el filtrado de la información.

3.1.2. Verificación de autenticidad de usuarios “Muchos esquemas de protección se basan en el supuesto de que el sistema conoce la identidad de cada usuario. El problema de identificar los usuarios cuando inician se denomina verificación de autenticidad de usuarios. La mayor parte de los métodos de verificación de autenticidad se basan en identificar algo que el usuario conoce, tiene o es. Contraseña”. Fuente Sistemas Operativos Diseño e implementación, “(Tanenbaum, 2003: 442). Resulta un tanto simple para algunos usuarios o aplicaciones mal intencionadas, descifrar el contenido y complejidad de las contraseñas y vencer la autenticidad de éstas teniendo como resultado el acceso a la información de algún sistema ya sea para modificar el flujo de la información, como en la intercepción, o algo más delicado, como en la inversión. Frecuentemente se van incrementado los niveles de complejidad para la creación de contraseñas o password utilizados para la validación de acceso a la información. Muchas aplicaciones codifican, por medio de algún algoritmo de encriptación -este método provee un nivel de seguridad más avanzado que la utilización simple de caracterescomparándolo con la lista de contraseñas disponibles para la validación. Otro método para la protección de contraseñas es el cambio regular de éstas. Es importante cambiarlas de manera periódica para evitar que algún intruso, pueda descifrarla.

Ciencias Exactas, Ingenierías y Tecnología | Ingeniería en Desarrollo de Software

78

Programación de sistemas operativos Programa desarrollado Otra variación que es utilizada para la validación y autentificación de usuarios, es la utilizada para la identificación física. Este enfoque se basa en algún dispositivo físico para la autorización de ingreso al sistema, se utiliza un algoritmo de validación completamente distinto a una contraseña. El uso de los dispositivos es útil para saber si se trata del usuario propietario, dichos dispositivos serán la llave de acceso al sistema; algo que ocurre de forma común, es que las tarjetas magnéticas que son validadas por un lector magnético -el cual determina si es válida o no- no tienen un alto grado de efectividad en cuestiones de seguridad, ya que es común el extravío o falsificación de estos dispositivos. Las huellas digitales, lectura de retina o patrón de voz, forman parte de un método físico de verificación de usuarios. Estos métodos consisten en la verificación y autenticidad física de las características únicas de cada usuario, las cuales resultan difícil de falsificar. La validación o verificación física es muy amplia y tiene muchas aplicaciones, ventajas y desventajas, comparándolos con otros medios de verificación, el desarrollador es quien planea que tipo o clasificación de seguridad se implementaría para la validación y acceso de usuarios. Algunas de las medidas preventivas que se deben de considerar para el incremento de las medidas de seguridad, son:  Registrar los inicios de sesión y log de actividades.  Bloqueo de inicios de sesión por fecha o por intentos erróneos de validación.  Encriptación, caducidad y modificación constante de contraseñas.  Especificar estación de trabajo validas para el acceso al sistema. Estas medidas son algunas de las más usadas y son, bajo el criterio del desarrollador, el tipo de seguridad a implementar de acuerdo al nivel y uso de la información que sea considerada como importante.

3.1.3. Validación y amenazas al sistema Al día de hoy nos encontramos con amenazas a los sistemas operativos cada vez más sofisticadas, las cuales aprovechan los puntos más débiles; por eso, es importante que se validen y se considere al diseñar un sistema operativo. Principales amenazas que se deben validar al diseñar un sistema operativo En la actualidad existen muchos tipos de amenazas, por lo cual, lo mejor es prevenir todas éstas desde el diseño, teniendo en cuenta buenas prácticas de prevención. Estas

Ciencias Exactas, Ingenierías y Tecnología | Ingeniería en Desarrollo de Software

79

Programación de sistemas operativos Programa desarrollado amenazas se conocen como virus que atacan y actúan de muchas maneras, se mencionan algunas de ellas a continuación: Troyano Ingresa cuando el sistema no tiene seguridad, permite accesos a otros tipos de archivos que hacen daño y en ciertos momentos se activan y ejecutan actividades que dañan. Exploits (secuencia de aprovechamiento) Localizan un punto débil en el sistema y ejecutan acciones que no deberían ser ejecutadas causando caos en el sistema. Rootkits (secuencia de nulidad) Su origen está en el lenguaje UNIX y son herramientas que entran como administradores tomando el control. Backdoors (secuencia de salida emergente) Como su traducción al español lo dice puerta trasera la cual es abierta para que otros sistemas dañinos puedan entrar. Abren una puerta trasera en el sistema para que el creador de malware entre en el sistema y lo domine a su antojo. El objetivo es crear una red computadoras infectadas con el mismo. Keyloggers (registro de teclas o pulsaciones) Registra la pulsación de las teclas y clic para enviarlas a un usuario no autorizado puede instalarse como hardware o aplicación.

Actividad 2 Tabla de elementos que afectan la seguridad de un sistema Con el fin de distinguir qué elementos afectan la seguridad en un sistema, en la siguiente actividad construirás una tabla de elementos, tomando en cuenta los temas abordados con anterioridad. 1. Investiga sobre los elementos de seguridad en un sistema operativo. 2. Con base en la investigación, realiza una tabla que contenga los elementos de seguridad que debe tener un sistema operativo y cuál es el objetivo de cada uno de ellos. 3. Tomando en cuenta la información contenida en la tabla, elige los tres elementos que consideres de mayor importancia y justifica los motivos por los cuales elegiste esos.

Ciencias Exactas, Ingenierías y Tecnología | Ingeniería en Desarrollo de Software

80

Programación de sistemas operativos Programa desarrollado 4. Guarda la actividad con el nombre PSO_U3_A2_XXYZ. Sustituye las XX por las dos primeras letras de tu primer nombre, la Y por la inicial de tu apellido paterno y la Z por la inicial de tu apellido materno. 5. Envía el archivo a través de la sección de Base de datos. 6. Revisa y comenta los trabajos de tus compañeros. 7. Con base en los comentarios de tus compañeros(as) reelabora tu tabla y envíala a tu Facilitador(a) para recibir retroalimentación.

3.2. Concepto y objetivos de protección Por una necesidad de mantener la integridad y confiabilidad de los sistemas, la protección de éstos se vuelve prioridad para todo desarrollo de sistemas operativos, una de las necesidades de la protección es impedir el acceso y violación a la información del sistema de archivos. La protección es la fuente de control y restricción de acceso a los sistemas, administración de los recursos y procesos. El objetivo primordial de la protección, es proveer de un mecanismo que tenga la facultad de establecer políticas de restricción, y crear bloqueos a usuarios mal intencionados. Cuando un sistema o parte del sistema no está protegido, no tiene la confiabilidad, integridad y mucho menos la disponibilidad de la información. Debido al mal uso de la información que puede llegar a ser modificada por el acceso de usuarios mal intencionados. “Frecuentemente, podemos utilizar un principio director a lo largo de un proyecto, como pueda ser el diseño de un sistema operativo. Ajustarnos a este principio simplifica las decisiones de diseño y hace que el sistema continúe siendo coherente y fácil de comprender. Uno de los principios directores clave y que ha resistido al paso del tiempo a la hora de proporcionar protección es el principio del mínimo privilegio. Este principio dicta que a los programas, a los usuarios, incluso a los sistemas se les concedan únicamente los suficientes privilegios para llevar a cabo a sus tareas”. (Silberschatz, 2006: 484) Se considera que cuando un sistema operativo cumple con el principio de mínimo privilegio, durante el desarrollo integra características y/o mecanismos de protección que cubran las necesidades de poder minimizar los daños causados por usuarios mal intencionados. Este principio tiene la bondad de poder ofrecer un entorno más seguro al sistema, por ello es de suma importancia que sea considerado durante la planificación y desarrollo, de lo contrario no lograría su objetivo de protección.

Ciencias Exactas, Ingenierías y Tecnología | Ingeniería en Desarrollo de Software

81

Programación de sistemas operativos Programa desarrollado

3.2.1. Mecanismos de protección Durante el desarrollo del sistema, la parte fundamental que se debe considerar es la seguridad y protección del sistema operativo; se deben de tener en cuenta al menos los problemas potenciales considerados en temas anteriores, para solucionar esa parte se pueden utilizar técnicas para poder establecer las políticas y mecanismos de protección. “En algunos sistemas, la protección se impone mediante un programa llamado monitor de referencias. Cada vez que se intenta un acceso a un recurso que pudiera estar protegido, el sistema pide primero al monitor de referencias que verifique que tal acceso está permitido”. (Tanenbaum, 2003: 447) Los diferentes tipos de mecanismos de protección se encuentran clasificados en:  Dominio de protección. Este punto considera al sistema de cómputo como grupo global de software y hardware, cada una de las partes que lo conforman tienen su propio nombre, características y objetivo, mediante el cual se podrán realizar operaciones con archivos y manejo de información. Durante la ejecución de un proceso solo se podrá tener acceso a los recursos que tiene autorizados para realizar sus tareas. En la siguiente figura (3.6.), se muestra un ejemplo de tres dominios, cada uno contiene sus propios objetos con la autorización para poder escribir (W), leer (R) y ejecutar (X), se puede apreciar que la impresora está en dos dominios distintos al mismo tiempo, debido a que los archivos de cada dominio hacen referencia a la misma impresora conectada al sistema de cómputo.

Figura 3.6. Dominios de protección con sus propios objetos y derechos de aplicación. (Tanenbaum, 2003: 447) 



Listas de control de acceso. El objetivo de esta técnica consiste en asociar los registros de una lista ordenada que contenga la mayor cantidad de dominios y que pueda ingresar al objeto. Capacidades. Este método distingue las características de cada objeto, las cuales indican las operaciones permitidas que puede realizar, así la lista muestra los objetos y sus capacidades para logra procesar la información, con esto clasifica

Ciencias Exactas, Ingenierías y Tecnología | Ingeniería en Desarrollo de Software

82

Programación de sistemas operativos Programa desarrollado



los objetos de acuerdo a sus capacidades facilitando el compartimiento de subdominios. Matriz de acceso. Este modelo de protección, puede completar su estructura por medio de abstracción de datos compuesto por una colección de derechos de acceso a la información, este tipo de modelo proporciona el mecanismo factible para definir e implementar un control especifico para la asociación de procesos y dominios de forma dinámica y estática, los procesos deben poder conmutar de un dominio a otro y permitir la modificación controlada del contenido de las entradas de la matriz de acceso, estas por lo general requieren de operaciones adicionales, tales como: copy, owner and contro.

3.2.2. Funciones del sistema de protección La principal característica que distingue las funciones de un sistema de protección, es aquel que cumple con los requerimientos de protección de los procesos del sistema, contra los procesos de los usuarios, protege los procesos de los usuarios contra los de otros usuarios, protege la administración de la memoria y protege los dispositivos. Durante el desarrollo del sistema operativo, es conveniente dar flexibilidad a la estructura de los datos para imponer una variedad de políticas y mecanismos de protección, exigiendo que cumpla con el mínimo de requerimientos para el control de pérdida de datos. Más adelante se mostrarán algunos de los mecanismos que se pueden utilizar para asegurar los archivos, segmentos de memoria y otros dispositivos administrados por el sistema operativo. Se dará cuenta que el principal objetivo de todo sistema operativo es mantener la confiabilidad, integridad y disponibilidad del sistema. El uso de estos mecanismos contribuye evitando el mayor número de amenazas que pueden afectar el rendimiento del sistema. La protección se refiere a la implementación de mecanismos para restringir el acceso de programas, procesos o bien usuarios no deseados que pueden perjudicar el rendimiento del sistema. Las funciones principales para proveer un buen sistema de protección, son:  

Establecer políticas de uso de recursos. Las políticas se pueden establecer por usuario, administrador del sistema o bien sobre el diseño y/o desarrollo. Mecanismos de protección. Su uso común es el controlar el acceso de programas o procesos a los recursos del sistema.

Ciencias Exactas, Ingenierías y Tecnología | Ingeniería en Desarrollo de Software

83

Programación de sistemas operativos Programa desarrollado 

Monitoreo de amenazas. Se pueden establecer rutinas de control que permitan ingresar al sistema o bien rechazar la petición de acceso a determinadas aplicaciones o procesos.

Queda claro que es importante y necesaria la protección de un sistema operativo, para prevenir violaciones malintencionadas de acceso al flujo de datos de un proceso dentro del sistema. Por ello la conveniencia de asegurar cada componente que forme parte del sistema, un recurso o componente no asegurado no puede defenderse contra alguna variación al flujo de datos.

3.2.3. Implementación de matrices de acceso Al iniciar con la implementación de una matriz de acceso y de ir llenando de datos, la matriz tendrá espacios vacíos, estos lleva a una serie de desventajas en el rendimiento del sistema operativo. Los métodos para la implementación de una matriz de acceso son de utilidad para aquellas matrices dispersas y de poca utilidad, a continuación se describe cada uno de estos métodos para su implementación: 





Tabla global. Este primer método, tiene la función más simple de acceso para una tabla compuesta por tripletas (dominio, objeto, conjunto-derechos), suponiendo que se tiene un Dominio Da, Un objeto Oa y sus derechos de lectura Ra. Si Da intenta el acceso en Oa mediante alguna operación Ma, se analizará toda la tabla en búsqueda de la tripleta y que Ma pertenezca a Ra, si la encuentra realiza caso contrario sigue realizando el proceso de búsqueda o bien hasta que se genere algún error. Este tipo de implementación resulta estar creciendo considerablemente conforme van generándose operaciones de E/S, por lo que no es posible mantenerla en memoria principal. Como desventaja se tienen que generar operaciones adicionales de E/S. Lista de acceso para los objetos. En este método, se van almacenando los datos por columna en la matriz para ir asociando cada objeto dentro de una lista de ordenadas de pares. Siguiendo el ejemplo de la tripleta anterior, se tiene que si Da intenta ingresar a Oa mediante la operación M se permite si, se encuentra y M tenga pertenencia en Ra. Su ventaja se radica en la facilidad de poder agrupar los dominios. Listas de capacidades para los dominios. “La listas de capacidades se propusieron originalmente como una especie de puntero seguro, para satisfacer la necesidad de protección de los recursos que se preveía que iba a ser necesaria a medida que los sistemas informáticos multiprogramados se generalizaran” (Silberschatz, 2006: 494).

Ciencias Exactas, Ingenierías y Tecnología | Ingeniería en Desarrollo de Software

84

Programación de sistemas operativos Programa desarrollado La capacidad de este método, consiste en que los derechos de acceso a un objeto se almacenan en la matriz por filas con su dominio, por lo general las listas de capacidades está asociada con un dominio, pero un proceso que se ejecute en el dominio no podrá ingresar de forma directa sobre esta. Cada elemento de la matriz es denominado como capacidad y la lista de capacidades debe de protegerse por el sistema operativo. 

Mecanismo de bloqueo-clave. “El esquema de bloqueo-clave, es un compromiso entre las listas de acceso y las listas de capacidades. Cada objeto tiene una lista de patrones de bit distintos, denominados bloqueos. De forma similar, cada dominio tiene una lista de patrones de bit distintos, denominados claves” (Silberschatz, 2006: 494).

La mayoría de los sistemas requieren de alguna implementación de matrices de acceso para localizar la información para un proceso determinado, y es decisión del desarrollador del sistema operativo determinar que método sería el más óptimo para la implementación de las matrices de búsqueda.

Actividad 3. Cuadro sinóptico de los mecanismos de protección Esta actividad tiene como propósito que, mediante una representación esquemática, distingas las relaciones que se establecen entre los modelos, funciones e implementación de los mecanismos de protección. 1. En un archivo de texto o Microsoft Visio realiza un cuadro sinóptico con los temas de conceptos y objetivos de protección. 2. Guarda la actividad con el nombre PSO_U3_A3_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.

Ciencias Exactas, Ingenierías y Tecnología | Ingeniería en Desarrollo de Software

85

Programación de sistemas operativos Programa desarrollado

Evidencia de aprendizaje. Diagrama de flujo del sistema operativo Como parte de la evaluación de esta unidad, debes llevar a cabo una actividad cuyo propósito es conceptuar el proceso del sistema operativo, mediante la aplicación de los conceptos aprendidos en la unidad. 1. En un archivo de texto elabora un diagrama de flujo en el cual reflejes el orden, la secuencia y los pasos que realizarías para diseñar un sistema operativo con respecto a seguridad y protección, considerando todos los subtemas expuestos en la unidad. 2. Guarda la evidencia con el nombre PSO_U3_EA_XXYZ. 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_U3_ATR_XXYZ. Posteriormente envía tu archivo mediante la herramienta Autorreflexiones.

Cierre de la unidad Has concluido la tercera unidad del curso. A lo largo de ésta se vieron conceptos básicos sobre el la seguridad y protección, cómo se clasifica la seguridad, cómo se verifica la autenticidad de los usuarios y las principales amenazas que debemos considerar al diseñar un sistema operativo, en cuanto a la protección: qué mecanismos se utilizan para que es el sistema de protección y cómo se implementan la matrices de acceso.

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 preparado(a) para seguir con la unidad cuatro, en donde continuarás con la base del diseño del sistema operativo. Todo ello con el fin de obtener el prototipo final al terminar la última unidad del curso de Programación de Sistemas Operativos.

Ciencias Exactas, Ingenierías y Tecnología | Ingeniería en Desarrollo de Software

86

Programación de sistemas operativos Programa desarrollado

Para saber más Si deseas conocer más información acerca de la seguridad de los sistemas operativos, revisa la siguiente página web: 

Seguridad de los Sistemas Operativos http://exa.unne.edu.ar/depar/areas/informatica/SistemasOperativos/SO14.htm

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. Silberschatz, Abraham (2006) Fundamentos de Sistemas Operativos. 7ma. Edición. España: Mc. Graw Hill. Stallings, W. (2005) Sistemas Operativos Modernos: Aspectos Internos y principios de diseño. México: Pearson, Prentice Hall Tanenbaum, A (2003) Sistemas Operativos Modernos. Mexico: Pearson Educación.

Ciencias Exactas, Ingenierías y Tecnología | Ingeniería en Desarrollo de Software

87

Programación de sistemas operativos Programa desarrollado

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.

Ciencias Exactas, Ingenierías y Tecnología | Ingeniería en Desarrollo de Software

88

Programación de sistemas operativos Programa desarrollado

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

Ciencias Exactas, Ingenierías y Tecnología | Ingeniería en Desarrollo de Software

89

Programación de sistemas operativos Programa desarrollado una estandarización para tratar de establecer una comunicación entre las diferentes arquitecturas.

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.

Ciencias Exactas, Ingenierías y Tecnología | Ingeniería en Desarrollo de Software

90

Programación de sistemas operativos Programa desarrollado

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.

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

Ciencias Exactas, Ingenierías y Tecnología | Ingeniería en Desarrollo de Software

91

Programación de sistemas operativos Programa desarrollado 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.



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.

Ciencias Exactas, Ingenierías y Tecnología | Ingeniería en Desarrollo de Software

92

Programación de sistemas operativos Programa desarrollado

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 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.

Ciencias Exactas, Ingenierías y Tecnología | Ingeniería en Desarrollo de Software

93

Programación de sistemas operativos Programa desarrollado

4.1.4. Características diferenciales 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.

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.

Ciencias Exactas, Ingenierías y Tecnología | Ingeniería en Desarrollo de Software

94

Programación de sistemas operativos Programa desarrollado

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. 5. Retoma la lectura de los temas anteriores.

6. Busca definiciones de un sistema operativo (como Windows o Linux).

7. Identifica qué parámetros debes considerar para diseñar un buen sistema operativo y qué es lo más importante. 8. Ingresa al foro y genera una nueva entrada.

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.

Ciencias Exactas, Ingenierías y Tecnología | Ingeniería en Desarrollo de Software

95

Programación de sistemas operativos Programa desarrollado

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 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

Ciencias Exactas, Ingenierías y Tecnología | Ingeniería en Desarrollo de Software

96

Programación de sistemas operativos Programa desarrollado 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 

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

Ciencias Exactas, Ingenierías y Tecnología | Ingeniería en Desarrollo de Software

97

Programación de sistemas operativos Programa desarrollado 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.



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.

Ciencias Exactas, Ingenierías y Tecnología | Ingeniería en Desarrollo de Software

98

Programación de sistemas operativos Programa desarrollado

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ó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.

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.

Ciencias Exactas, Ingenierías y Tecnología | Ingeniería en Desarrollo de Software

99

Programación de sistemas operativos Programa desarrollado

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.

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.

Ciencias Exactas, Ingenierías y Tecnología | Ingeniería en Desarrollo de Software

100

Programación de sistemas operativos Programa desarrollado 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.

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

Ciencias Exactas, Ingenierías y Tecnología | Ingeniería en Desarrollo de Software

101

Programación de sistemas operativos Programa desarrollado cuentan con más elementos que otros, como están arquitectónicamente construidos y por qué 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.



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.

Ciencias Exactas, Ingenierías y Tecnología | Ingeniería en Desarrollo de Software

102

Programación de sistemas operativos Programa desarrollado 

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,



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.

Ciencias Exactas, Ingenierías y Tecnología | Ingeniería en Desarrollo de Software

103

Programación de sistemas operativos Programa desarrollado 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.

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:

Ciencias Exactas, Ingenierías y Tecnología | Ingeniería en Desarrollo de Software

104

Programación de sistemas operativos Programa desarrollado 

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 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

Ciencias Exactas, Ingenierías y Tecnología | Ingeniería en Desarrollo de Software

105

Programación de sistemas operativos Programa desarrollado 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.

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

Ciencias Exactas, Ingenierías y Tecnología | Ingeniería en Desarrollo de Software

106

Programación de sistemas operativos Programa desarrollado 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. 2. 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.

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).

Ciencias Exactas, Ingenierías y Tecnología | Ingeniería en Desarrollo de Software

107

Programación de sistemas operativos Programa desarrollado

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.

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.

Ciencias Exactas, Ingenierías y Tecnología | Ingeniería en Desarrollo de Software

108

Programación de sistemas operativos Programa desarrollado

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.

Para saber más Si deseas saber acerca de cómo se crea un diagrama de flujo, consulta la siguiente dirección electrónica:

Ciencias Exactas, Ingenierías y Tecnología | Ingeniería en Desarrollo de Software

109

Programación de sistemas operativos Programa desarrollado 

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.

Ciencias Exactas, Ingenierías y Tecnología | Ingeniería en Desarrollo de Software

110

View more...

Comments

Copyright ©2017 KUPDF Inc.
SUPPORT KUPDF