Recursos de maquina

 A través de esta entrada se presenta un resumen coherente sobre la utilidad y funcionamiento de los elementos internos controlados por el sistema operativo.

En esta unidad 1 se aprendió a analizar los procesos de administración de los recursos según las características de los sistemas operativos. Esto comprende los siguientes criterios: 

  • Identificar dispositivos de procesamiento y su interacción con el sistema operativo.
  • Organizar las terminales que interactúan con el sistema operativo y el usuario.
  • Identificar los dispositivos de almacenamiento en los procesos del sistema operativo.
  • Preparar los puentes de interacción entre procesamiento y sistema operativo.
  • Compartir con los compañeros los conocimientos y experiencias adquiridos para hacer mas eficiente el uso de recursos.

"Relacionando el hardware con el sistema operativo", se enfoca en el aprendizaje de la organización de los dispositivos de procesamiento, identificando la interacción con el sistema operativo, a través de la organización de las terminales que interactúan con el sistema operativo y el usuario. Por esto, es importante que desarrolle la Tarea Interactiva de Aprendizaje a través de la cual, podrá demostrar lo aprendido  en la unidad.

Unidad de procesamiento 

Es la parte fundamental de todo sistema de cómputo. Esta es la encargada de ejecutar tanto los programas del usuario como el sistema operativo en sí mismo. La funciones del sistema operativo respecto a la unidad de procesamiento son:

Inicialización Luego de ser cargado el sistema operativo debe realizar varias tareas de inicialización como habilitar las interrupciones de hardware y software (excepciones y trampas), configurar el sistema de memoria virtual (paginación, segmentación), etcétera. 

Atender las interrupciones y excepciones Como se verá más adelante, la unidad de procesamiento puede encontrar una situación que no puede resolver por sí misma (una instrucción o dirección inválida, una división por cero, etc.), ante lo cual le pasa el control al sistema operativo para que éste trate o resuelva la situación.

Multiplexación En un sistema multiproceso, el sistema operativo es el encargado de administrar la unidad de procesamiento dando la ilusión a los procesos que están ejecutando de forma exclusiva. 

 Jerarquía de almacenamiento 

Las computadoras que siguen la arquitectura von Neumann, esto es, prácticamente la totalidad hoy en día,1 podrían resumir su operación general a alimentar a una unidad de proceso (CPU) con los datos e instrucciones almacenados en memoria, que pueden incluir llamadas a servicio (y respuestas a eventos) originados en medios externos. Una computadora von Neumann significa básicamente que es una computadora de programa almacenado en la memoria primaria — esto es, se usa el mismo almacenamiento para el programa que está siendo ejecutado y para sus datos, sirviéndose de un registro especial para indicar al CPU cuál es la dirección en memoria de la siguiente instrucción a ejecutar


Registros 

La memoria más rápida de la computadora son los registros, ubicados en cada uno de los núcleos de cada CPU. Las arquitecturas tipo RISC (Reduced Instruction Set Computer) sólo permiten la ejecución de instrucciones entre registros (excepto, claro, las de carga y almacenamiento a memoria primaria). Los primeros CPU trabajaban con pocos registros, muchos de ellos de propósito específico, se regían más bien con una lógica de registro acumulador. 


Interrupciones y excepciones

La ejecución de los procesos podría seguir siempre linealmente, atendiendo a las instrucciones de los programas tal como fueron escritas, pero en el modelo de uso de cómputo actual, eso no serviría de mucho: para que un proceso acepte interacción, su ejecución debe poder responder a los eventos que ocurran


Las funciones del sistema operativo respecto a las interrupciones son: 

Administrar el hardware manejador de interrupciones Esto incluye el enmascarado y desenmascarado de las interrupciones, asignar y configurar interrupciones a cada dispositivo, notificar al manejador cuando la interrupción ya ha sido atendida, etcétera. 

Abstraer las interrupciones El sistema operativo oculta a los programas de usuario que ocurren interrupciones de hardware ya que éstas son dependientes de la arquitectura del procesador. En cambio el sistema operativo lo comunica de una forma unificada por medio de distintos mecanismos, por ejemplo mensajes o señales o deteniendo el proceso que espera la acción relacionada con una interrupción y continuando su ejecución cuando ésta ocurre. 

Punto de entrada al sistema operativo Como se verá más adelante (sección 2.7), muchos procesadores y sistemas operativos utilizan las interrupciones como medio por el cual un proceso de usuario realiza una llamada al sistema. Por ejemplo, en Linux para arquitecturas x86 el programa de usuario genera la interrupción 0x80 para iniciar una llamada al sistema. En arquitecturas más recientes como x86_64, MIPS y ARM esto ha sido reemplazado por una instrucción especial syscall. 

Atender excepciones y fallas Como se discutió antes, durante la ejecución de un programa pueden ocurrir situaciones anómalas, como por ejemplo, una división sobre cero. Desde el punto de vista del CPU, esto es similar a una interrupción de hardware y debe ser tratada por el sistema operativo. Dependiendo de la causa de la excepción, el sistema operativo tomará acción para resolver en lo posible esta situación


Las terminales 

Son dispositivos electrónicos utilizados para ingresar datos y emitir resultados dentro de un sistema de cómputo. Las primeras terminales, también llamadas teletipos, utilizaban tarjetas perforadas e impresiones en papel. Debido a su limitada velocidad e imposibilidad de “editar” el papel ya impreso, éstas fueron cediendo terreno ante la entrada, a principios de los setenta, de las terminales de texto con pantalla de video y teclado. Conceptualmente, una terminal de texto es un dispositivo mediante el cual la computadora recibe y envía un flujo de caracteres desde y hacia el usuario, respectivamente. Las operaciones más complejas, como edición, borrado y movimiento, en general son tratadas con secuencias de escape, esto es, una serie de caracteres simples que tomados en conjunto representan una acción a realizar en la terminal.


Dispositivos de almacenamiento 

El almacenamiento en memoria primaria es volátil, esto es, se pierde al interrumpirse el suministro eléctrico. Esto no era muy importante en la época definitoria de los conceptos que se presentan en esta sección, dado que el tiempo total de vida de un conjunto de datos en almacenamiento bajo el control del procesador iba únicamente desde la entrada y hasta el fin de la ejecución del trabajo del usuario.


Relojes y temporizadores 

Todas las computadoras incluyen uno o más relojes y temporizadores que son utilizados para funciones varias como mantener la hora del sistema actualizada, implementar alarmas tanto para los programas de usuario como para el sistema operativo, ejecutar tareas de mantenimiento periódicas, cumplir con requisitos temporales de aplicaciones de tiempo real, etcétera. Mantener el tiempo correctamente dentro del sistema operativo es algo crucial. Permite establecer un orden cronológico entre los eventos que ocurren dentro del sistema, por ejemplo, la creación de un archivo y de otro o el tiempo consumido en la ejecución de un proceso.


Canales y puentes 

Los distintos componentes de un sistema de cómputo se comunican mediante los diferentes canales (generalmente se hace referencia a ellos por su nombre en inglés: buses). En el nivel más básico, los canales son líneas de comunicación entre el procesador y los demás componentes del chipset,5 a los cuales a su vez se conectan los diferentes dispositivos del sistema, desde aquellos que requieren mayor velocidad, como la misma memoria, hasta los puertos más sencillos. Un chipset provee distintos buses, con un agrupamiento lógico según la velocidad requerida por sus componentes y otras características que determinan su topología.


Contención 

Una de las principales razones de que haya de tantos canales (buses) distintos en un mismo sistema se debe a la frecuencia acorde a los dispositivos para los cuales está diseñado: la cantidad de datos que tienen que viajar entre el procesador y la memoria a lo largo de la operación del sistema es muy superior a la que tienen que transferirse desde los discos, y a su vez, ésta es mucho mayor que la que se envía a la impresora, o la que se recibe del teclado. Claro está, los demás dispositivos podrían incrementar su frecuencia para participar en un canal más rápido, aunque su costo se incrementaría, dado que harían falta componentes capaces de sostener un reloj varios órdenes de magnitud más rápido.

Canales y puentes


Acceso directo a memoria (DMA)

 La operación de dispositivos de entrada/salida puede ser altamente ineficiente. Cuando un proceso está en una sección limitada por entrada-salida (esto es, donde la actividad principal es la transferencia de información entre la memoria principal y cualquier otra área del sistema), si el procesador tiene que encargarse de la transferencia de toda la información7 , se crearía un cuello de botella por la cantidad y frecuencia de interrupciones. Hoy en día, para evitar que el sistema se demore cada vez que hay una transferencia grande de datos, todas las computadoras implementan controladores de acceso directo a memoria (DMA, por sus siglas en inglés) en uno o más de sus subsistemas. El DMA se emplea principalmente al tratar con dispositivos con un gran ancho de banda, como unidades de disco, subsistemas multimedia, tarjetas de red, e incluso para transferir información entre niveles del caché. Las transferencias DMA se hacen en bloques preestablecidos; en vez de que el procesador reciba una interrupción cada vez que hay una palabra lista para ser almacenada en la memoria,


Coherencia de cache 

Cuando se realiza una transferencia DMA de un dispositivo a la memoria, puede haber páginas de la memoria en cuestión que estén en alguno de los niveles de la memoria caché; dado que el caché está uno o más niveles por encima de la memoria principal, es posible que la información haya ya cambiado pero el caché retenga la información anterior. Los sistemas de caché coherente implementan mecanismos en hardware que notifican a los controladores de caché que las páginas que alojan están sucias y deben ser vueltas a cargar para ser empleadas, los sistemas no coherentes requieren que el subsistema de memoria del sistema operativo haga esta operación.


Interfaz del sistema operativo: llamadas al sistema 

De forma análoga a las interrupciones, se puede hablar de las llamadas al sistema. El sistema operativo protege a un proceso de otro, y previene que un proceso ejecutándose en espacio no privilegiado tenga acceso directo a los dispositivos. Cuando un proceso requiere de alguna acción privilegiada, accede a ellas realizando una llamada al sistema. Éstas pueden agruparse, a grandes rasgos, en: 

Control de procesos Crear o finalizar un proceso, obtener atributos del proceso, esperar la finalización de un proceso o cierto tiempo, asignar o liberar memoria, etcétera. 

Manipulación de archivos Crear, borrar o renombrar un archivo; abrir o cerrar un archivo existente; modificar sus metadatos; leer o escribir de un descriptor de archivo abierto, etcétera. 

Manipulación de dispositivos Solicitar o liberar un dispositivo; leer, escribir o reposicionarlo, y otras varias. Muchas de estas llamadas son análogas a las de manipulación de archivos, y varios sistemas operativos las ofrecen como una sola. 

Mantenimiento de la información Obtener o modificar la hora del sistema; pedir detalles acerca de procesos o archivos, etcétera.

Comunicaciones Establecer una comunicación con determinado proceso (local o remoto), aceptar una solicitud de comunicación de otro proceso, intercambiar información sobre un canal establecido.

 Protección Consultar o modificar la información relativa al acceso de objetos en el disco, otros procesos, o la misma sesión de usuario.


Llamadas al sistema, arquitecturas y API 

Cada familia de sistemas operativos provee distintas llamadas al sistema, y sus lenguajes/bibliotecas implementan distintos API. Esto es el que distingue principalmente a uno de otro. Por ejemplo, los sistemas Windows 95 en adelante implementan Win32, Win16 (compatibilidad con Windows previos) y MS-DOS; MacOS implementa Cocoa (aplicaciones MacOS X) y Carbon (compatibilidad con aplicaciones de MacMACOS previos), y Linux, los BSDS, Y VARIOS OTROS SISTEMAS, *POSIX (el estándar que define a Unix). El caso de MacOS X es interesante, porque también implementa POSIX ofreciendo la semántica de dos sistemas muy distintos entre sí. 


Depuración por trazas (trace) 

La mayor parte de los sistemas operativos ofrecen programas que, para fines de depuración, envuelven al API del sistema y permiten ver la traza de las llamadas al sistema que va realizando un proceso. Algunos ejemplos de estas herramientas son strace en Linux, truss en la mayor parte de los Unixes históricos o ktrace y kdump en los *BSD. A partir de Solaris 10 (2005), Sun incluye una herramienta mucho más profunda y programable para esta tarea llamada dtrace, que al paso del tiempo ha sido portada9 a otros Unixes (*BSD, MacOS). 


Referencia a los componentes 

Si bien el sistema operativo tiene por misión abstraer y ocultar los detalles de los dispositivos, también debe exponer una interfaz para poder emplearlos y administrarlos. Unix introdujo el concepto de que todo es un archivo: en el sistema Unix original, todos los dispositivos podían ser controlados por medio de un archivo especial que, en vez de almacenar información, apunta a estructuras en el sistema que controlan a cada dispositivo. Este concepto sobrevive en los sistemas derivados de Unix al día de hoy, aunque varias clases de dispositivo rompen esta lógica. El sistema operativo Plan9 de Bell Labs mantiene y amplía este concepto e introduce los espacios de nombres mutables, que presenta con interfaz de archivo prácticamente cualquier objeto empleado por el sistema.

Dispositivos de caracteres 

Son aquellos en los cuales la información es leída o escrita de a un caracter a la vez y se presentan como streams (flujos) de información, ya sea entrantes, salientes os mixto. Algunos pueden permitir operaciones adicionales (por ejemplo, rebobinado), pero la manipulación de la información se efectúa de forma secuencial. Algunos ejemplos de estos dispositivos serían la impresora, la unidad de cinta, o el modem. 

Dispositivos de bloques Presentan una interfaz de acceso aleatorio y entregan o reciben la información en bloques de tamaño predeterminado. El ejemplo más claro de este tipo de dispositivos es una unidad de disco o una de sus particiones. 


Cuando dos cabezas piensan mejor que una. 

Multiprocesamiento 

El multiprocesamiento es todo entorno donde hay más de un procesador (CPU). En un entorno multiprocesado, el conjunto de procesadores se vuelve un recurso más a gestionar por el sistema operativo — y el que haya concurrencia real tiene un fuerte impacto en su diseño.


Comentarios

Entradas populares de este blog

Mapa conceptual conjuntos - Mónica Erazo

Presentación Induccion

Manejo estatico de las variables en memoria