domingo, 6 de diciembre de 2015

Estructura de los sistemas operativos, procesos e hilos


1. Objetivo
Analizar la estructura de los sistemas operativos, procesos e hilos
2. Introducción
Los sistemas operativos han sufrido múltiples cambios al paso de los años empezando desde los procesamientos por lotes limitando al sistema a realizar una tarea a la vez, en la actualidad los sistemas operativos trabajan con múltiples tareas a la vez haciendo de estos muy eficientes.
3. Marco teórico
3.1 CONCEPTOS DE LOS SISTEMAS OPERATIVOS
La mayoría de los sistemas operativos proporcionan ciertos conceptos básicos y abstracciones tales como procesos, espacios de direcciones y archivos, que son la base para comprender su funcionamiento.

3.2 Procesos
Un concepto clave en todos los sistemas operativos es el proceso. Un proceso es en esencia un programa en ejecución. Cada proceso tiene asociado un espacio de direcciones, una lista de ubicaciones de memoria que va desde algún mínimo (generalmente 0) hasta cierto valor máximo, donde el proceso puede leer y escribir información. El espacio de direcciones contiene el programa ejecutable, los datos del programa y su pila. También hay asociado a cada proceso un conjunto de recursos, que comúnmente incluye registros (el contador de programa y el apuntador de pila, entre ellos), una lista de archivos abiertos, alarmas pendientes, listas de procesos relacionados y toda la demás información necesaria para ejecutar el programa. En esencia, un proceso es un recipiente que guarda toda la información necesaria para ejecutar un programa.
Un proceso (suspendido) consiste en su espacio de direcciones, que se conoce comúnmente como imagen de núcleo (en honor de las memorias de núcleo magnético utilizadas antaño) y su entrada en la tabla de procesos, que guarda el contenido de sus registros y muchos otros elementos necesarios para reiniciar el proceso más adelante.

Figura 1: Proceso


3.3 Espacios de direcciones
Cada computadora tiene cierta memoria principal que utiliza para mantener los programas en ejecución.
En un sistema operativo muy simple sólo hay un programa a la vez en la memoria. Para ejecutar un segundo programa se tiene que quitar el primero y colocar el segundo en la memoria.
Los sistemas operativos más sofisticados permiten colocar varios programas en memoria al mismo tiempo. Para evitar que interfieran unos con otros (y con el sistema operativo), se necesita cierto mecanismo de protección. Aunque este mecanismo tiene que estar en el hardware, es controlado por el sistema operativo.
El anterior punto de vista se relaciona con la administración y protección de la memoria principal de la computadora. Aunque diferente, dado que la administración del espacio de direcciones de los procesos está relacionada con la memoria, es una actividad de igual importancia. Por lo general, cada proceso tiene cierto conjunto de direcciones que puede utilizar, que generalmente van desde 0 hasta cierto valor máximo. En el caso más simple, la máxima cantidad de espacio de direcciones que tiene un proceso es menor que la memoria principal. De esta forma, un proceso puede llenar su espacio de direcciones y aun así habrá suficiente espacio en la memoria principal para contener todo lo necesario.
Sin embargo, en muchas computadoras las direcciones son de 32 o 64 bits, con lo cual se obtiene un espacio de direcciones de 232 o 264 bytes, respectivamente.

Figura 2: Espacio de direcciones

3.4 Archivos
Una de las funciones principales del sistema operativo es ocultar las peculiaridades de los discos y demás dispositivos de E/S, presentando al programador un modelo abstracto limpio y agradable de archivos independientes del dispositivo. Sin duda se requieren las llamadas al sistema para crear los archivos, eliminarlos, leer y escribir en ellos. Antes de poder leer un archivo, debe localizarse en el disco para abrirse y una vez que se ha leído información del archivo debe cerrarse, por lo que se proporcionan llamadas para hacer estas cosas.

Figura 3: Archivos

3.5 El Shell
El sistema operativo es el código que lleva a cabo las llamadas al sistema. Los editores, compiladores, ensambladores, enlazadores e intérpretes de comandos en definitiva no forman parte del sistema operativo, aun cuando son importantes y útiles.
shell aunque no forma parte del sistema operativo, utiliza con frecuencia muchas características del mismo y, por ende, sirve como un buen ejemplo de la forma en que se pueden utilizar las llamadas al sistema. También es la interfaz principal entre un usuario sentado en su terminal y el sistema operativo

3.6 LLAMADAS AL SISTEMA
Los sistemas operativos tienen dos funciones principales: proveer abstracciones a los programas de usuario y administrar los recursos de la computadora. En su mayor parte, la interacción entre los programas de usuario y el sistema operativo se relaciona con la primera función: por ejemplo, crear, escribir, leer y eliminar archivos. La parte de la administración de los recursos es en gran parte transparente para los usuarios y se realiza de manera automática. Por ende, la interfaz entre los programas de usuario y el sistema operativo trata principalmente acerca de cómo lidiar con las abstracciones. Para comprender realmente qué hacen los sistemas operativos, debemos examinar esta interfaz con detalle. Las llamadas al sistema disponibles en la interfaz varían de un sistema operativo a otro (aunque los conceptos subyacentes tienden a ser similares).

Figura 4: Llamada al sistema



3.7 ESTRUCTURA DE UN SISTEMA OPERATIVO

3.7.1 Sistemas monolíticos
Todo el sistema operativo se ejecuta como un solo programa en modo kernel. El sistema operativo se escribe como una colección de procedimientos, enlazados entre sí en un solo programa binario ejecutable extenso.
Cuando se utiliza esta técnica, cada procedimiento en el sistema tiene la libertad de llamar a cualquier otro, si éste proporciona cierto cómputo útil que el primero necesita. Al tener miles de procedimientos que se pueden llamar entre sí sin restricción, con frecuencia se produce un sistema poco manejable y difícil de comprender.
Para construir el programa objeto actual del sistema operativo cuando se utiliza este diseño, primero se compilan todos los procedimientos individuales (o los archivos que contienen los procedimientos) y luego se vinculan en conjunto para formar un solo archivo ejecutable, usando el enlazador del sistema. En términos de ocultamiento de información, en esencia no hay nada: todos los procedimientos son visibles para cualquier otro procedimiento (en contraste a una estructura que contenga módulos o paquetes, en donde la mayor parte de la información se oculta dentro de módulos y sólo los puntos de entrada designados de manera oficial se pueden llamar desde el exterior del módulo).
Sin embargo, hasta en los sistemas monolíticos es posible tener cierta estructura. Para solicitar los servicios (llamadas al sistema) que proporciona el sistema operativo, los parámetros se colocan en un lugar bien definido (por ejemplo, en la pila) y luego se ejecuta una instrucción de trap. Esta instrucción cambia la máquina del modo usuario al modo kernel y transfiere el control al sistema operativo.

Figura 5: Sistema monolitico



3.7.2 Sistemas de capas
El sistema operativo como una jerarquía de capas, cada una construida encima de la que tiene abajo. El primer sistema construido de esta forma fue el sistema THE, construido en Technische Hogeschool Eindhoven en Holanda por E. W. Dijkstra (1968) y sus estudiantes. El sistema THE era un sistema simple de procesamiento por lotes para una computadora holandesa, la Electrologica X8, que tenía 32K de palabras de 27 bits El sistema tenía seis capas. El nivel 0 se encargaba de la asignación del procesador, de cambiar entre un proceso y otro cuando ocurrían interrupciones o expiraban los temporizadores.
La capa 1 se encargaba de la administración de la memoria. Asignaba espacio para los procesos en la memoria principal y en un tambor de palabras de 512 K que se utilizaba para contener partes de procesos (páginas), para los que no había espacio en la memoria principal. Por encima de la capa 1.
La capa 2 se encargaba de la comunicación entre cada proceso y la consola del operador (es decir, el usuario). Encima de esta capa, cada proceso tenía en efecto su propia consola de operador.
La capa 3 se encargaba de administrar los dispositivos de E/S y de guardar en búferes los flujos de información dirigidos para y desde ellos. Encima de la capa 3, cada proceso podía trabajar con los dispositivos abstractos de E/S con excelentes propiedades, en vez de los dispositivos reales con muchas peculiaridades.
La capa 4 era en donde se encontraban los programas de usuario. No tenían que preocuparse por la administración de los procesos, la memoria, la consola o la E/S. El proceso operador del sistema se encontraba en el nivel 5.

Figura 6: Sistema de capas



3.7.3 Microkernels
Con el diseño de capas, los diseñadores podían elegir en dónde dibujar el límite entre kernel y usuario.
Tradicionalmente todos las capas iban al kernel, pero eso no es necesario. De hecho, puede tener mucho sentido poner lo menos que sea posible en modo kernel, debido a que los errores en el kernel pueden paralizar el sistema de inmediato. En contraste, los procesos de usuario se pueden configurar para que tengan menos poder, por lo que un error en ellos tal vez no sería fatal.
Varios investigadores han estudiado el número de errores por cada 1000 líneas de código. La densidad de los errores depende del tamaño del módulo, su tiempo de vida y más, pero una cifra aproximada para los sistemas industriales formales es de diez errores por cada mil líneas de código. Esto significa que es probable que un sistema operativo monolítico de cinco millones de líneas de código contenga cerca de
50,000 errores en el kernel.
La idea básica detrás del diseño de microkernel es lograr una alta confiabilidad al dividir el sistema operativo en módulos pequeños y bien definidos, sólo uno de los cuales (el microkernel) se ejecuta en modo kernel y el resto se ejecuta como procesos de usuario ordinarios, sin poder relativamente.


Figura 7: Microkernel

3.7.4 Modelo cliente-servidor
Una ligera variación de la idea del microkernel es diferenciar dos clases de procesos: los servidores, cada uno de los cuales proporciona cierto servicio, y los clientes, que utilizan estos servicios.
Este modelo se conoce como cliente-servidor. A menudo la capa inferior es un microkernel, pero eso no es requerido. La esencia es la presencia de procesos cliente y procesos servidor.
La comunicación entre clientes y servidores se lleva a cabo comúnmente mediante el paso de mensajes. Para obtener un servicio, un proceso cliente construye un mensaje indicando lo que desea y lo envía al servicio apropiado. Después el servicio hace el trabajo y envía de vuelta la respuesta.
Si el cliente y el servidor se ejecutan en el mismo equipo se pueden hacer ciertas optimizaciones, pero en concepto estamos hablando sobre el paso de mensajes.
Figura 8: Cliente-Servidor


3.7.5 Máquinas virtuales
Las versiones iniciales del OS/360 eran, en sentido estricto, sistemas de procesamiento por lotes.
Sin embargo, muchos usuarios del 360 querían la capacidad de trabajar de manera interactiva en una terminal, por lo que varios grupos, tanto dentro como fuera de IBM, decidieron escribir sistemas de tiempo compartido para este sistema. El sistema de tiempo compartido oficial de IBM, conocido como TSS/360, se liberó después de tiempo y cuando por fin llegó era tan grande y lento que pocos sitios cambiaron a este sistema.

Figura 9: Maquina virtual


3.7.6 Exokernels
En vez de clonar la máquina actual, como se hace con las máquinas virtuales, otra estrategia es particionarla, en otras palabras, a cada usuario se le proporciona un subconjunto de los recursos. Así, una máquina virtual podría obtener los bloques de disco del 0 al 1023, la siguiente podría obtener los bloques de disco del 1024 al 2047 y así sucesivamente.
En la capa inferior, que se ejecuta en el modo kernel, hay un programa llamado exokernel (Engler y colaboradores, 1995). Su trabajo es asignar recursos a las máquinas virtuales y después comprobar los intentos de utilizarlos, para asegurar que ninguna máquina trate de usar los recursos de otra. Cada máquina virtual de nivel de usuario puede ejecutar su propio sistema operativo, al igual que en la VM/370 y las Pentium 8086 virtuales, con la excepción de que cada una está restringida a utilizar sólo los recursos que ha pedido y que le han sido asignados.
La ventaja del esquema del exokernel es que ahorra una capa de asignación. En los otros diseños, cada máquina virtual piensa que tiene su propio disco, con bloques que van desde 0 hasta cierto valor máximo, por lo que el monitor de la máquina virtual debe mantener tablas para reasignar las direcciones del disco (y todos los demás recursos).

Figura 10: Exokernels 

3.8. PROCESOS E HILOS
El concepto más importante en cualquier sistema operativo es el de proceso, una abstracción de un programa en ejecución; todo lo demás depende de este concepto, por lo cual es importante que el diseñador del sistema operativo (y el estudiante) tenga una comprensión profunda acerca de lo que es un proceso lo más pronto posible.
Los procesos son una de las abstracciones más antiguas e importantes que proporcionan los sistemas operativos: proporcionan la capacidad de operar concurrentemente, incluso cuando hay sólo una CPU disponible. Convierten una CPU en varias CPU virtuales. Sin la abstracción de los procesos, la computación moderna no podría existir. En este capítulo examinaremos con gran detalle los procesos y sus primeros primos.

Figura 11: Procesos e hilos 



3.8.1 PROCESOS
Cuando se arranca el sistema se inician muchos procesos en forma secreta, lo que a menudo el usuario desconoce Por ejemplo, se podría iniciar un proceso para esperar el correo electrónico entrante; otro que permite al antivirus comprobar periódicamente la disponibilidad de nuevas definiciones de virus; algunos procesos de usuario explícitos para, por ejemplo, imprimir archivos y quemar un CD-ROM, y todo esto mientras el usuario navega por la Web. Toda esta actividad se tiene que administrar, y en este caso un sistema de multiprogramación con soporte para múltiples procesos es muy útil.
En cualquier sistema de multiprogramación, la CPU conmuta de un proceso a otro con rapidez, ejecutando cada uno durante décimas o centésimas de milisegundos: hablando en sentido estricto, en cualquier instante la CPU está ejecutando sólo un proceso, y en el transcurso de 1 segundo podría trabajar en varios de ellos, dando la apariencia de un paralelismo.

Figura 12: Proceso 


3.8.2 El modelo del proceso
En este modelo, todo el software ejecutable en la computadora, que algunas veces incluye al sistema operativo, se organiza en varios procesos secuenciales (procesos, para abreviar). Un proceso no es más que una instancia de un programa en ejecución, incluyendo los valores actuales del contador de programa, los registros y las variables. En concepto, cada proceso tiene su propia
CPU virtual; en la realidad, la CPU real conmuta de un proceso a otro, pero para entender el sistema es mucho más fácil pensar en una colección de procesos que se ejecutan en (pseudo) paralelo, en vez de tratar de llevar la cuenta de cómo la CPU conmuta de programa en programa. Esta conmutación rápida de un proceso a otro se conoce como multiprogramación

3.8.3 Creación de un proceso
Los sistemas operativos necesitan cierta manera de crear procesos. En sistemas muy simples o sistemas diseñados para ejecutar sólo una aplicación, es posible tener presentes todos los procesos que se vayan a requerir cuando el sistema inicie.
Hay cuatro eventos principales que provocan la creación de procesos:
1. El arranque del sistema.
2. La ejecución, desde un proceso, de una llamada al sistema para creación de procesos.
3. Una petición de usuario para crear un proceso.
4. El inicio de un trabajo por lotes.

3.8.4 Terminación de procesos
Una vez que se crea un proceso, empieza a ejecutarse y realiza el trabajo al que está destinado. Sin embargo, nada dura para siempre, ni siquiera los procesos. Tarde o temprano el nuevo proceso terminará, por lo general debido a una de las siguientes condiciones:
1. Salida normal (voluntaria).
2. Salida por error (voluntaria).
3. Error fatal (involuntaria).
4. Eliminado por otro proceso (involuntaria).
La mayoría de los procesos terminan debido a que han concluido su trabajo. Cuando un compilador ha compilado el programa que recibe, ejecuta una llamada al sistema para indicar al sistema operativo que ha terminado.

                                                                       

3.8.5 HILOS
En los sistemas operativos tradicionales, cada proceso tiene un espacio de direcciones y un solo hilo de control. De hecho, ésa es casi la definición de un proceso. Sin embargo, con frecuencia hay situaciones en las que es conveniente tener varios hilos de control en el mismo espacio de direcciones que se ejecuta en cuasi-paralelo, como si fueran procesos separados

Figura 13: Hilos


3.8.6 Uso de hilos
¿Por qué alguien querría tener un tipo de proceso dentro de otro proceso? Resulta ser que hay varias razones de tener estos mini procesos, conocidos como hilos. Ahora analizaremos algunos de ellos. La principal razón de tener hilos es que en muchas aplicaciones se desarrollan varias actividades a la vez. Algunas de ésas se pueden bloquear de vez en cuando. Al descomponer una aplicación en varios hilos secuenciales que se ejecutan en cuasi-paralelo, el modelo de programación se simplifica.

3.8.7 El modelo clásico de hilo
Ahora que hemos visto por qué podrían ser útiles los hilos y cómo se pueden utilizar, vamos a investigar la idea un poco más de cerca. El modelo de procesos se basa en dos conceptos independientes: agrupamiento de recursos y ejecución. Algunas veces es útil separarlos; aquí es donde entran los hilos. Primero analizaremos el modelo clásico de hilos; después el modelo de hilos de Linux, que desaparece la línea entre los procesos y los hilos.
Una manera de ver a un proceso es como si fuera una forma de agrupar recursos relacionados.
Un proceso tiene un espacio de direcciones que contiene texto y datos del programa, así como otros recursos. Estos pueden incluir archivos abiertos, procesos hijos, alarmas pendientes, manejadores de señales, información contable y mucho más. Al reunirlos en forma de un proceso, pueden administrarse con más facilidad.

4. Conclusión
La estructura de los sistemas operativos nos ayuda a conocer de qué manera trabajan estos sistemas complejos, los procesos e hilos permiten que la ejecución de programas sea rápida.
5. Bibliografía
Tanenbaum, A. 2009. Sistemas Operativos Modernos. 3 ed. México. D. F. PEARSON EDUCACIÓN
http://www.ditec.um.es/so/apuntes/teoria/tema2.pdf

http://sistop.gwolf.org/biblio/Sistemas_Operativos_-_Luis_La_Red_Martinez.pdf

martes, 10 de noviembre de 2015

Revisión del hardware de la computadora

     1Introducción
Los dispositivos mecánicos que conforman la computadora se llaman hardware. El ya mensionado es cualquier parte de la computadora que se puede tocar estos están muy relacionados con el sistema operativo de la computadora ya que este es el encargado de la administración de estos dispositivos.
 2Objetivo
Estudiar los componentes internos de una computadora tanto hardware como software.
 3Marco Teórico.
3.1  Revisión del hardware de la Computadora
Un sistema operativo está íntimamente relacionado con el hardware de la computadora sobre la que  se ejecuta. Extiende el conjunto de instrucciones de la computadora y administra sus recursos. Para trabajar debe conocer muy bien el hardware. Conceptualmente, una computadora personal simple se puede abstraer mediante un modelo compuesto por: la CPU, la memoria y los dispositivos de E/S están conectados mediante un bus del sistema y se comunican entre sí a través de este bus. Las computadoras personales modernas tienen una estructura más complicada en la que intervienen varios buses.

3.1.1 Procesadores
El objetivo principal de un procesador es el de ejecutar los distintos pasos de una tarea. Debe también conseguir funcionar lo más rápidamente posible, consumiendo la mínima potencia y evitando errores y paradas. Para ello, el procesador utiliza una serie de operaciones elementales, a partir de las cuales se pueden resolver tareas más complejas. Cada una de las operaciones elementales tiene un código binario y puede tener uno, o varios operandos sobre los que actuar. El procesador dispone habitualmente de un conjunto reducido de posiciones de memoria internas, que se conocen como registros, y que le permiten almacenar los datos y los resultados con los que está trabajando en ese momento. El procesador, o CPU, consta básicamente de dos partes: La unidad aritmética-lógica (ALU, es decir aritmetic-logic unit) y la unidad de control (CU o control unit).                

Unidad aritmética lógica.
La unidad aritmética lógica o ALU de nuestro ordenador es la encargada de realizar las operaciones aritméticas (suma, resta, comparación, producto, cociente) y lógicas. Está formada por el acumulador, un conjunto de circuitos lógicos, y el registro de códigos de condición o flags.
Unidad de control.
La unidad de control tiene, algo muy necesario, que es el generador de impulsos de reloj, encargado de sincronizar el funcionamiento del procesador. Para ello, se emplea un cristal de cuarzo externo a la CPU que le suministra a través de una de sus patas una onda cuadrada. Cada período de la onda recibe el nombre de ciclo de reloj, y se utiliza su frecuencia para medir la velocidad del procesador.

Funciones de la unidad de control:
  •         Controlar la secuencia en que se ejecutan las instrucciones.
  •     Controlar el acceso del procesador a la memoria principal.
  •     Regular las temporizaciones de todas las operaciones que ejecuta el procesador.
  •     Enviar y recibir señales de control desde los periféricos.


   Figura 1. Procesador


3.1.2 Memoria
La memoria es el componente del ordenador que almacena la información que éste posee, es decir, sus datos y programas.
La memoria del ordenador está organizada en unidades de bytes, cada uno compuesto por 8 bits. No importa qué tipo de información estemos almacenando; estará codificada en una estructura particular de bits, que será interpretada de la forma adecuada al tipo de datos en cuestión. Los mismos bytes de memoria se emplean para almacenar códigos de instrucciones, datos numéricos, datos alfabéticos, sonidos, vídeo, etc.

Duración de la información.
En relación a la permanencia de la información grabada en las memorias, hay 4 posibilidades:
 ·     Memorias permanentes: Son memorias que contienen siempre la misma información y no pueden borrarse.
·         Memorias Volátiles: Precisan estar continuamente alimentadas de energía. Si se corta dicho suministro se borra la información que poseen. En contraposición están las no volátiles, en las que la información permanece aunque se elimine la alimentación.
·         Memorias de lectura destructiva: Su lectura implica el borrado de la información, por lo que después de leer en ellas, hay que volver a grabarlas.
·         Memorias con refresco: La información sólo dura un cierto tiempo. Para que no desaparezca, hay que regrabar la información de forma periódica (señal de refresco). 

Tipos de memorias: RAM y ROM.
Actualmente el tipo de memorias que se emplean con carácter universal, son las memorias de semiconductores. La primera memoria comercial de semiconductor tenía una capacidad de 64 bits y fue fabricada por IBM en 1968. Poco más tarde, en 1972, aparecieron los primeros ordenadores de IBM con memoria principal de semiconductores.

Memorias de sólo lectura: ROM
Como indica su propio nombre son memorias que sólo permiten la lectura, también son de acceso aleatorio y no volátiles. Este tipo de memorias se utilizan para guardar una serie de programas que vienen con el ordenador desde fábrica, como son los contenidos en la ROM-BIOS (Basic Input-Output System). En ella básicamente están unos programas de diagnóstico, encargados de chequear el hardware para comprobar que todo es correcto antes de arrancar. Además, tiene el programa de arranque, encargado de cargar el sistema operativo en memoria y, los programas para controlar los periféricos más comunes: unidades de disco, teclado, puertos serie y paralelo, tarjeta gráfica, etc.


Memorias de lectura/escritura: RAM
Son memorias de lectura/escritura, acceso aleatorio y volátil. La memoria principal de un ordenador es RAM, ya que la ROM al no permitir la escritura tiene un uso limitado. El sistema operativo y los programas y datos del usuario se almacenan en memoria RAM para poder ser usados por el procesador.

Figura 2. Memoria


3.1.3 Disco Duro
Un disco duro es un dispositivo en el que el almacenamiento de la información es permanente, no necesita de un aporte constante de energía para conservar la información y que puede alterarse en cualquier momento para ser reutilizado, dado que posee miles de ciclos antes de la aparición de errores. Su funcionamiento se basa en el sistema de grabación magnética, por el cual algunos materiales son capaces de almacenar determinados estados magnéticos.

Estructura física de un disco duro El disco duro es un dispositivo magnético y mecánico, con partes móviles, siendo por tanto más delicado que otros sistemas de almacenamiento. Los datos se almacenan sobre una serie de discos o platos (entre 2 y 4 normalmente) que están recubiertos de una fina capa de material magnético. Estos platos están situados en un eje común e impulsado por un motor a grandes velocidades, 7.200 rpm en los modelos actuales. Para leer y grabar los datos se dispone de diversas cabezas (una por cada cara del plato), son dispositivos electromagnéticos que se sitúan sobre la superficies del plato “flotando” a unos nm. Esta falta de contacto con la superficie del disco es lo que permite altas velocidades de lectura y escritura.
Figura 3. Disco Duro 

 3.1.4 CINTA MAGNÉTICA.
Las unidades de cinta magnética son dispositivos de entrada/salida de datos de acceso secuencial, que permiten la grabación y lectura de la información sobre un soporte magnético. Aparecieron en 1951 (con el computador UNIVAC 1). Una unidad de cinta constará, aparte del soporte de almacenamiento, de un controlador de cinta, que reúne los elementos electrónicos y electromecánicos que permiten realizar las acciones de lectura y escritura de información, posicionado de la cinta y sincronismo, envío y recepción de los datos.
El soporte de almacenamiento magnético consta de una cinta de material sintético de 1/2 de pulgada de anchura y del orden de 3 centésimas de milímetro de espesor, recubierta de una capa de óxido de hierro, óxido de cromo o partículas de metal, de 1.5 centésimas de milímetro de espesor. Estas cintas se suministran en carretes de unos 800 m. de longitud.
Figura 4. Cinta Magnética 

 3.1.5 Dispositivos de entrada y salida
Constituyen los órganos de la computadora por los cuales se comunica con el medio exterior, la variedad y cantidad que se pueden conectar va creciendo a pasos agigantado.         La conexión puede ser física (cables) o por ondas del espectro electromagnético (radio) o por lumínicas.
· Algunos son esenciales para una computadora, al menos debería contar con un dispositivo de entrada y uno de salida.
·  Un dispositivo que cumpla ambas funciones, podría reemplazar a los dispositivos por separado, por ejemplo un dispositivo de comunicaciones.
·  En la actualidad, prácticamente cualquier aparato que pueda generar (y/o recibir) una señal analógica o digital, puede conectarse a una computadora, directamente o mediante dispositivos intermediarios.


Entrada: captan y envían los datos desde el dispositivo a la CPU, cualquiera sea el tipo de tecnología usada por el periférico para capturar debe convertirse a señal digital (bits, 0 y Salida: Muestran o proyectan información hacia el exterior de la CPU. La mayoría informan, alertan, comunican, proyectan o dar al usuario u otra computadora cierta información, de la misma forma se encargan de convertir los impulsos eléctricos (de tipo digital) en información perceptible por el usuario. La conversión no sería necesaria si el destinatario es otra computadora.
Entrada/Salida (E/S).
  • Almacenamiento: son los dispositivos que almacenan datos e información por bastante tiempo. La memoria RAM no puede ser considerada un periférico de almacenamiento, ya que su memoria es volátil y temporal.
  • Comunicación: son los periféricos que se encargan de comunicarse con otras máquinas o computadoras, ya sea para trabajar en conjunto, o para enviar y recibir información.


    Figura 5. Dispositivos de entrada y salida

 3.1.6 Buses
Un bus es un camino que permite comunicar selectivamente un número de componentes o dispositivos de acuerdo a ciertas normas de conexión. Su operación básica se denomina ciclo de bus que el conjunto de pasos necesarios para realizar una transferencia elemental entre dispositivos conectados al bus
Clases de buses:
  • Bus de datos, de 8, 16, 32 o 64 bits dependiendo del modelo (64 bits para los Pentiums de última generación). El número de bits se usa, en general, para determinar el tamaño del procesador.
  • Bus de direcciones, para poder conectar la CPU con la memoria y con los dispositivos de entrada/salida.
  • Bus de control, para enviar señales que determinan cómo se comunica la CPU con el resto del sistema (por ejemplo, las líneas de lectura y escritura  especifican qué es lo que se está haciendo en la memoria).

Figura 6. Buses


 3.1.7 Arranque de la computadora
Para que un sistema operativo pueda ejecutarse, el sistema debe cargarse en la RAM de la computadora. Cuando una computadora se enciende por primera vez, lanza un programa llamado cargador bootstrap que reside en el chip Sistema Básico de Entrada y Salida (BIOS) o firmware. Las funciones principales del cargador bootstrap son probar el hardware de la computadora y localizar y cargar el sistema operativo en la RAM. Puesto que el programa bootstrap está incorporado al chip BIOS, también se denomina control del BIOS. Durante la ejecución de las rutinas de firmware del BIOS, se llevan a cabo tres conjuntos de operaciones:
  •  Se ejecutan las Auto-Pruebas de Encendido (POSTs).
  •  Se completa la inicialización.
  •  El BIOS desplaza la dirección de inicio y la información de modo al controlador DMA, y luego carga el Registro de Inicio Maestro (MBR).


Carga del sistema operativo
A continuación, el programa bootstrap necesita localizar y copiar el OS a la RAM de la computadora. El orden en el cual el programa bootstrap busca el archivo de inicio del OS puede cambiarse en la configuración del BIOS del sistema. El orden más común para la búsqueda del OS es primero el diskette, luego la unidad de disco duro, y finalmente el CD-ROM.
Figura 7. Arranque de la computadora



3.1.8 Sistema operativo mainframe
Los sistemas operativos para las mainframes están profundamente orientados hacia el procesamiento de muchos trabajos a la vez, de los cuales la mayor parte requiere muchas operaciones de E/S. Por lo general ofrecen tres tipos de servicios: procesamiento por lotes, procesamiento de transacciones y tiempo compartido. Un sistema de procesamiento por lotes procesa los trabajos de rutina sin que haya un usuario interactivo presente. El procesamiento de reclamaciones en una compañía de seguros o el reporte de ventas para una cadena de tiendas son actividades que se realizan comúnmente en modo de procesamiento por lotes. Los sistemas de procesamiento de transacciones manejan grandes cantidades de pequeñas peticiones, por ejemplo: el procesamiento de cheques en un banco o las reservaciones en una aerolínea. Cada unidad de trabajo es pequeña, pero el sistema debe manejar cientos o miles por segundo. Los sistemas de tiempo compartido permiten que varios usuarios remotos ejecuten trabajos en la computadora al mismo tiempo, como consultar una gran base de datos. Estas funciones están íntimamente relacionadas; a menudo los sistemas operativos de las mainframes las realizan todas.


3.1.8 Sistemas operativos de servidores
Al igual que un equipo no puede trabajar sin un sistema operativo, una red de equipos no puede funcionar sin un sistema operativo de red. Si no se dispone de ningún sistema operativo de red, los equipos no pueden compartir recursos y los usuarios no pueden utilizar estos recursos. Dependiendo del fabricante del sistema operativo de red, tenemos que el software de red para un equipo personal se puede añadir al propio sistema operativo del equipo o integrarse con él.
LAN cliente/servidor
En el sentido más estricto, el término cliente/servidor describe un sistema en el que una máquina cliente solicita a una segunda máquina llamada servidor que ejecute una tarea específica. El cliente suele ser una computadora personal común conectada a una LAN, y el servidor es, por lo general, una máquina anfitriona, como un servidor de archivos PC, un servidor de archivos de UNIX o una macro computadora o computadora de rango medio.


3.1.9 Sistemas operativos multiprocesadores
A medida que aumenta la siempre creciente demanda de mayores prestaciones, y conforme el coste de los microprocesadores se reduce, los fabricantes han introducido los sistemas SMP. El término SMP, sistema multiprocesador simétrico, se refiere a la arquitectura hardware del sistema multiprocesador y al comportamiento del sistema operativo que utiliza dicha arquitectura. Un SMP es un computador con las siguientes características:
  •    Tiene dos o más procesadores similares de capacidades comparables.
  •   Los procesadores comparten la memoria principal y la E/S, y están interconectados mediante un bus u otro tipo de sistema de interconexión, de manera que el tiempo de acceso a memoria es aproximadamente el mismo para todos los procesadores.
  •     Todos los procesadores comparten los dispositivos de E/S, pero pueden hacerlo bien a través de los mismos canales, o bien a través de otros caminos de acceso al mismo dispositivo. 4) Todos los procesadores pueden desempeñar las mismas funciones (de ahí el término simétrico).
  •        El sistema está controlado por un sistema operativo que posibilita la interacción entre los procesadores y sus programas.



3.1.10Sistemas operativos de computadoras personales
Todos los sistemas operativos modernos soportan la multiprogramación, con frecuencia se inician docenas de programas al momento de arrancar el sistema. Su trabajo es proporcionar buen soporte para un solo usuario. Se utilizan ampliamente para el procesamiento de texto, las hojas de cálculo y el acceso a Internet. Algunos ejemplos comunes son Linux, FreeBSD, Windows Vista y el sistema operativo Macintosh.
Los sistemas operativos de computadora personal son tan conocidos que tal vez no sea necesario presentarlos con mucho detalle. De hecho, muchas personas ni siquiera están conscientes de que existen otros tipos de sistemas operativos.

3.1.11 Sistemas operativos de computadoras de bolsillo
Una computadora de bolsillo o PDA (Personal Digital Assitant, Asistente personal digital) es una computadora que cabe en los bolsillos y realiza una pequeña variedad de funciones, como libreta de direcciones electrónica y bloc de notas. Además, hay muchos teléfonos celulares muy similares a los PDAs, con la excepción de su teclado y pantalla. En efecto, los PDAs y los teléfonos celulares se han fusionado en esencia y sus principales diferencias se observan en el tamaño, el peso y la interfaz de usuario. Casi todos ellos se basan en CPUs de 32 bits con el modo protegido y ejecutan un sofisticado sistema operativo. Los sistemas operativos que operan en estos dispositivos de bolsillo son cada vez más sofisticados, con la habilidad de proporcionar telefonía, fotografía digital y otras funciones. Muchos de ellos también ejecutan aplicaciones desarrolladas por terceros. De hecho, algunos están comenzando a asemejarse a los sistemas operativos de computadoras personales de hace una década. Una de las principales diferencias entre los dispositivos de bolsillo y las PCs es que los primeros no tienen discos duros de varios cientos de gigabytes, lo cual cambia rápidamente. Dos de los sistemas operativos más populares para los dispositivos de bolsillo son Symbian OS y Palm OS.


3.1.12 Sistemas operativos integrados
Los sistemas integrados (embedded), que también se conocen como incrustados o embebidos, operan en las computadoras que controlan dispositivos que no se consideran generalmente como computadoras, ya que no aceptan software instalado por el usuario. Algunos ejemplos comunes son los hornos de microondas, las televisiones, los autos, los grabadores de DVDs, los teléfonos celulares y los reproductores de MP3. La propiedad principal que diferencia a los sistemas integrados de los dispositivos de bolsillo es la certeza de que nunca se podrá ejecutar software que no sea confiable. No se pueden descargar nuevas aplicaciones en el horno de microondas; todo el software se encuentra en
ROM. Esto significa que no hay necesidad de protección en las aplicaciones, lo cual conlleva a cierta simplificación.

3.1.13 Sistemas operativos de nodos sensores
Las redes de pequeños nodos sensores se están implementando para varios fines. Estos nodos son pequeñas computadoras que se comunican entre sí con una estación base, mediante el uso de comunicación inalámbrica. Estas redes de sensores se utilizan para proteger los perímetros de los edificios, resguardar las fronteras nacionales, detectar incendios en bosques, medir la temperatura y la precipitación para el pronóstico del tiempo, deducir información acerca del movimiento de los enemigos en los campos de batalla y mucho más.
Los sensores son pequeñas computadoras con radios integrados y alimentadas con baterías. Tienen energía limitada y deben trabajar durante largos periodos al exterior y desatendidas, con frecuencia en condiciones ambientales rudas. La red debe ser lo bastante robusta como para tolerar fallas en los nodos individuales, que ocurren con mayor frecuencia a medida que las baterías empiezan a agotarse.
Cada nodo sensor es una verdadera computadora, con una CPU, RAM, ROM y uno o más sensores ambientales. Ejecuta un sistema operativo pequeño pero real, por lo general manejador de eventos, que responde a los eventos externos o realiza mediciones en forma periódica con base en un reloj interno.



3.1.14 Sistemas operativos en tiempo real
Otro tipo de sistema operativo es el sistema en tiempo real. Estos sistemas se caracterizan por tener el tiempo como un parámetro clave. A menudo hay tiempos de entrega estrictos que se deben cumplir. Por ejemplo, si un auto se desplaza sobre una línea de ensamblaje, deben llevarse a cabo ciertas acciones en determinados instantes. La acción debe ocurrir sin excepción en cierto momento (o dentro de cierto rango)
Sistema en tiempo real duro: Muchos de estos sistemas se encuentran en el control de procesos industriales, en aeronáutica, en la milicia y en áreas de aplicación similares. Estos sistemas deben proveer garantías absolutas de que cierta acción ocurrirá en un instante determinado.

Sistema en tiempo real suave: En el cual es aceptable que muy ocasionalmente se pueda fallar a un tiempo predeterminado. Los sistemas de audio digital o de multimedia están en esta categoría. Los teléfonos digitales también son ejemplos de sistema en tiempo real suave.

3.1.15 Sistemas operativos de tarjetas inteligentes
Los sistemas operativos más pequeños operan en las tarjetas inteligentes, que son dispositivos del tamaño de una tarjeta de crédito que contienen un chip de CPU. Tienen varias severas restricciones de poder de procesamiento y memoria. Algunas se energizan mediante contactos en el lector en el que se insertan, pero las tarjetas inteligentes sin contactos se energizan mediante inducción, lo cual limita en forma considerable las cosas que pueden hacer. Algunos sistemas de este tipo pueden realizar una sola función, como pagos electrónicos; otros pueden llevar a cabo varias funciones en la misma tarjeta inteligente. A menudo éstos son sistemas propietarios.
Algunas tarjetas inteligentes funcionan con Java. Lo que esto significa es que la ROM en la tarjeta inteligente contiene un intérprete para la Máquina virtual de Java (JVM).

4. Conclusión.
       En la actualidad las computadoras están en todo lugar desde la manera de comunicarnos, simplificación de trabajos, eficiencia de administrar datos, esto gracias a distintos tipos de sistemas operativos existentes, pero estos sistemas operativos no podrían ser operados sin instrumentos que permitan el ingreso de información y para eso tenemos los dispositivos de entrada, los lugares de almacenamiento de información se lo hace mediante discos y memorias internas.
             
     5. Bibliografía.
http://cursa.ihmc.us/rid=1288132510156_48704924_24839/dispositivos%20de%20entrada%20y%20salida.pdf
http://www.infor.uva.es/~cevp/FI_II/fichs_pdf_teo/Trabajos_Ampliacion/Buses.pdf

Norton, 2004 . Introducción a la computación. 6 ed. México. Mc Graw Hill

Tanenbaum, A.2009. Sistemas Operativos Modernos. 3 ed. México. D.F. PEARSON EDUCACIÓN.