viernes, 30 de noviembre de 2012

SISTEMA OPERATIVO


Conjunto de programas que se integran con el hardware para facilitar al usuario, el aprovechamiento de los recursos disponibles. Algunos de sus objetivos principales son:
•         Provee de un ambiente conveniente de trabajo.
•         Hace uso eficiente del Hardware.
•         Provee de una adecuada distribución de los recursos.
            Para un Sistema Operativo real deberá satisfacer las siguientes funciones:
•         Gobierna el Sistema.
•         Asigna los recursos.
•         Administra y controlar la ejecución de los programas.
Un sistema de cómputo en muchos casos cuenta con demasiados recursos para ser utilizados por un solo usuario, es en estos casos cuando se puede dar servicio a varios procesos.

Intérprete de Comandos
También conocido por su nombre en inglés, Shell, es un programa que interpreta las órdenes del usuario y las convierte en Llamadas al Sistema.

Núcleo (o Kernel)
Es la parte del Sistema Operativo que se encarga de sincronizar la activación de los procesos y definir prioridades.

Programas del Sistema
Son programas de servicio que debe ser solicitados explícita mente por los usuarios. Como ejemplos de estos tenemos:
1. Compiladores: Son programas que traducen Programas Fuente en programas Objeto.
2. Ensambladores: Traducen programas escritos con mnemónicos a lenguaje de máquina.
3. Editores: Son programas que permiten escribir textos y guardarlos en memoria secundaria.
4. Utilerías de Archivos: Programas para dar mantenimiento a los archivos.
5. Bibliotecas: Programas que contienen rutinas para realizar funciones frecuentemente requeridas. Estas funciones pueden ser ligadas a los programas escritos por el usuario.

Programas de Aplicación
Programas externos al sistema, utilizados para realizar tareas específicas como simulación, creación y edición de gráficas e imágenes, etc..

TIPOS DE SISTEMAS OPERATIVOS
Existen dos tipos generales de sistemas operativos: Los basados en caracteres y los de interfaz gráfica (ambientes amigables). El sistema basado en caracteres es ejemplificado perfectamente con el sistema operativo utilizado por las computadoras IBM y compatibles. El MS-DOS está listo para recibir un comando desplegando el tipo de indicador (A> o C>) en la pantalla; en donde el usuario escribe carácter por carácter el comando que se desea ejecutar.
Ante las justificadas quejas de los usuarios por la falta de programas amigables, los desarrolladores de software respondieron añadiendo menús y mensajes en pantalla. Los menús mejoran en mucho la cordialidad de los programas, reduciendo el número de comandos que se necesitan conocer.
La Macintosh logró crear la primera interfaz gráfica, posteriormente Microsoft introdujo la interfaz gráfica Windows para las computadoras IBM y compatibles.
Cada programa en Windows tiene reservada un área de la pantalla conocida con el nombre de ventana.
Un sistema operativo que se opera mediante el uso de imágenes y símbolos en vez de palabras se denomina interfaz gráfica para el usuario, o GUI (Graphic User Interface).

FUNCIONES BÁSICAS DE UN SISTEMA OPERATIVO

ADMINISTRACIÓN DE TRABAJOS: Cuando existen varios programas en espera de ser procesados, el sistema operativo debe decidir el orden de procesamiento de ellos, así como asignar los recursos necesarios para su proceso.

ADMINISTRACIÓN DE RECURSOS: Mediante está función el sistema operativo esta en capacidad de distribuir en forma adecuada y en el momento oportuno los diferentes recursos (memoria, dispositivos, etc.,...) entre los diversos programas que se encuentran en proceso.

CONTROL DE OPERACIONES DE ENTRADA Y SALIDA: Mediante esta actividad el sistema operativo decide que proceso hará uso del recurso, durante cuánto tiempo y en que momento.

ADMINISTRACIÓN DE LA MEMORIA: Supervisa que áreas de memoria están en uso y cual están libre, determina cuanta memoria asignará a un proceso y en que momento, además libera la memoria cuando ya no es requerida para el proceso.

RECUPERACIÓN DE ERRORES: El sistema operativo contiene rutinas que intentan evitar perder el control de una tarea cuando se suscitan errores en la trasferencia de información hacia y desde los dispositivos de entrada / salida.

PROGRAMAS DE PROCESO: El sistema operativo contiene programas de servicios que sirven de apoyo al procesamiento de los trabajos, se conocen también como utilerías y se pueden clasificar en tres tipos:

a)    Utilerias Del Sistema: Se ejecutan bajo el control del sistema operativo y se utilizan para preparar algunos recursos usados por el sistema. Son de uso interno.
b)    Utilerias Para Archivos: Manejan información de los archivos tales como imprimir, clasificar, copiar, etc.
c)    Utilerias Independientes: Realizar funciones que se relacionan con la iniciación de dispositivos de Entrada/Salida, carga del sistema operativo, etc.

TIPOS DE SISTEMA OPERATIVO: El sistema operativo como controlador y supervisor de todas las actividades que realiza la computadora tiene características que le permiten soportar técnicas avanzadas de procesamiento de datos como:
- La utilización de Lenguaje de Alto Nivel.
- Tiempo Compartido.
- Multiprogramación.
- Memoria Virtual.

INTRODUCCIÓN A "ENTRADA Y SALIDA" (E/S)

Una de las funciones principales de un S. O. es el control de todos los dispositivos de e / s de la computadora.
Las principales funciones relacionadas son:
  • Enviar comandos a los dispositivos.
  • Detectar las interrupciones.
  • Controlar los errores.
  • Proporcionar una interfaz entre los dispositivos y el resto del sistema:
    • Debe ser sencilla y fácil de usar.
    • Debe ser la misma (preferentemente) para todos los dispositivos (independencia del dispositivo).
Principios del Hardware de E / S
El enfoque que se considerará tiene que ver con la interfaz que desde el hardware se presenta al software.
  • Comandos que acepta el hardware.
  • Funciones que realiza.
  • Errores que puede informar.
Dispositivos de E / S
Se pueden clasificar en dos grandes categorías:
  • Dispositivos de bloque.
  • Dispositivos de carácter.
Las principales características de los dispositivos de bloque son:
  • La información se almacena en bloques de tamaño fijo.
  • Cada bloque tiene su propia dirección.
  • Los tamaños más comunes de los bloques van desde los 128 bytes hasta los 1.024 bytes.
  • Se puede leer o escribir en un bloque de forma independiente de los demás, en cualquier momento.
  • Un ejemplo típico de dispositivos de bloque son los discos.
Las principales características de los dispositivos de carácter son:
  • La información se transfiere como un flujo de caracteres, sin sujetarse a una estructura de bloques.
  • No se pueden utilizar direcciones.
  • No tienen una operación de búsqueda.
  • Unos ejemplos típicos de dispositivos de carácter son las impresoras de línea, terminales, interfaces de una red, ratones, etc.
Controladores de Dispositivos
Las unidades de e / s generalmente constan de:
  • Un componente mecánico.
  • Un componente electrónico, el controlador del dispositivo o adaptador.
Muchos controladores pueden manejar más de un dispositivo.
El S. O. generalmente trabaja con el controlador y no con el dispositivo.
Los modelos más frecuentes de comunicación entre la cpu y los controladores son:
  • Para la mayoría de las micro y mini computadoras:
    • Modelo de bus del sistema.
  • Para la mayoría de los mainframes:
    • Modelo de varios buses y computadoras especializadas en e / s llamadas canales de e/s.
La interfaz entre el controlador y el dispositivo es con frecuencia de muy bajo nivel:
  • La comunicación es mediante un flujo de bits en serie que:
    • Comienza con un preámbulo.
    • Sigue con una serie de bits (de un sector de disco, por ej.).
    • Concluye con una suma para verificación o un código corrector de errores.
  • El preámbulo:
    • Se escribe al dar formato al disco.
    • Contiene el número de cilindro y sector, el tamaño de sector y otros datos similares.
El controlador debe:
  • Convertir el flujo de bits en serie en un bloque de bytes.
  • Efectuar cualquier corrección de errores necesaria.
  • Copiar el bloque en la memoria principal.
Cada controlador posee registros que utiliza para comunicarse con la cpu:
  • Pueden ser parte del espacio normal de direcciones de la memoria: e / s mapeada a memoria.
  • Pueden utilizar un espacio de direcciones especial para la e / s, asignando a cada controlador una parte de él.
El S. O. realiza la e / s al escribir comandos en los registros de los controladores; los parámetros de los comandos también se cargan en los registros de los controladores.
Al aceptar el comando, la cpu puede dejar al controlador y dedicarse a otro trabajo.
Al terminar el comando, el controlador provoca una interrupción para permitir que el S. O.:
  • Obtenga el control de la cpu.
  • Verifique los resultados de la operación.
La cpu obtiene los resultados y el estado del dispositivo al leer uno o más bytes de información de los registros del controlador.
Ejemplos de controladores, sus direcciones de e / s y sus vectores de interrupción en la PC IBM pueden verse en la Tabla 5.1.

  

Controlador de e / s
Dirección de e / s
Vector de interrupciones
Reloj
040 - 043
8
Teclado
060 - 063
9
Disco duro
320 - 32f 
13
Impresora
378 - 37f 
15
Disco flexible
3f0 - 3f7
14
Rs232 primario
3f8 - 3ff 
12
Rs232 secundario
2f8 - 2ff 
11
Tabla 5.1: Controladores de e / s, direcciones de e / s y vector de interrupciones.
  
Acceso Directo a Memoria (DMA)
Muchos controladores, especialmente los correspondientes a dispositivos de bloque, permiten el DMA.
Si se lee el disco sin DMA:
  • El controlador lee en serie el bloque (uno o más sectores) de la unidad:
    • La lectura es bit por bit.
    • Los bits del bloque se graban en el buffer interno del controlador.
  • Se calcula la suma de verificación para corroborar que no existen errores de lectura.
  • El S. O. lee el bloque del disco por medio del buffer del controlador:
    • La lectura es por byte o palabra a la vez.
    • En cada interacción de este ciclo se lee un byte o una palabra del registro del controlador y se almacena en memoria.
  • Se desperdicia tiempo de la cpu.
DMA se ideó para liberar a la cpu de este trabajo de bajo nivel.
La cpu le proporciona al controlador:
  • La dirección del bloque en el disco.
  • La dirección en memoria adonde debe ir el bloque.
  • El número de bytes por transferir.
Luego de que el controlador leyó todo el bloque del dispositivo a su buffer y de que corroboró la suma de verificación.

Un controlador realiza completamente una transferencia DMA.

jueves, 29 de noviembre de 2012

MANEJO DE DISPOSITIVOS DE ENTRADA Y SALIDA





Manejo de dispositivos de entrada y salida: Dispositivos de almacenamiento. Se usan para proporcionar almacenamiento no volátil de datos y memoria. Su función primordial es abastecer de datos y almacenamiento a los programas que se ejecutan en la UCP. Según su capacidad y la inmediatez con que se puede acceder a los datos almacenados en estos dispositivos, se pueden dividir en almacenamiento secundario (discos y disquetes) y terciario (cintas)

Los 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. El sistema de E/S es la parte del sistema operativo que se ocupa de facilitar el manejo de los dispositivos de E/S ofreciendo una visión lógica simplificada de los mismos que pueda ser usada por otros componentes del sistema operativo (como el sistema de archivos) o incluso por el usuario. Mediante esta visión lógica se ofrece a los usuarios un mecanismo de abstracción que oculta todos los detalles relacionados con los dispositivos físicos, así como del funcionamiento real de los mismos. El sistema operativo debe controlar el funcionamiento de todos los dispositivos de E/S para alcanzar los siguientes objetivos:

• Facilitar el manejo de los dispositivos de E/S. Para ello debe ofrecer una interfaz entre los dispositivos y el resto del sistema que sea sencilla y fácil de utilizar.

• Optimizar la E/S del sistema, proporcionando mecanismos de incremento de prestaciones donde sea necesario.

• Proporcionar dispositivos virtuales que permitan conectar cualquier tipo de dispositivo físico sin que sea necesario remodelar el sistema de E/S del sistema operativo.

• Permitir la conexión de dispositivos nuevos de E/S, solventando de forma automática su instalación usando mecanismos del tipo plug&play.

Conexión de un dispositivo de E/S a una computadora En la siguiente figura se muestra el esquema general de conexión de periféricos a una computadora. En el modelo de un periférico se distinguen dos elementos:

• Periféricos o dispositivos de E/S. Elementos que se conectan a la unidad central de proceso a través de las unidades de entrada/salida. Son el componente mecánico que se conecta a la computadora.

• Controladores de dispositivos o unidades de E/S. Se encargan de hacer la transferencia de información entre la memoria principal y los periféricos. Son el componente electrónico a través del cual se conecta el dispositivo de E/S. Tienen una conexión al bus de la computadora y otra para el dispositivo (generalmente mediante cables internos o externos).

Para empezar una operación de E/S, la UCP tiene que escribir sobre los registros anteriores los datos de la operación a través de una dirección de E/S o de memoria asignada únicamente al controlador. Según se haga de una u otra forma, se distingue entre dispositivos conectados por puertos o proyectados en memoria. El modelo de dispositivos por puertos es clásico en las arquitecturas de Intel. En ellas, cuando se instala un dispositivo, a su controlador se le asigna un puerto de E/S, una interrupción hardware y un vector de interrupción. Para efectuar una operación de E/S la UCP ejecuta operaciones por o portout con la dirección de puerto del dispositivo y con parámetros para indicar qué registro se quiere manipular. Todas las operaciones de entrada/salida (pantalla gráfica, impresoras, ratón, discos, etc.) se realizan usando esas dos instrucciones de lenguaje máquina con los parámetros adecuados. El problema de este tipo de direccionamiento es que exige conocer las direcciones de E/S y programar las instrucciones especiales de E/S, lo que es significativamente distinto del modelo de memoria de la computadora. El otro modelo de direccionamiento de E/S es el modelo proyectado en memoria. Este modelo, típico de las arquitecturas de Motorola, asigna a cada dispositivo de E/S un rango de direcciones de memoria a través de las cuales se escribe sobre los registros del controlador. En este modelo no hay instrucciones específicas de E/S, sino que las operaciones se llevan a cabo mediante instrucciones máquina de manejo de memoria, lo que permite gestionar un mapa único de direcciones de memoria. Sin embargo, para no tener conflictos con otros accesos a memoria y para optimizar las operaciones, se reserva una zona de memoria física para asignar las direcciones de E/S.

Los dispositivos de almacenamiento secundario y terciario manejan la información en unidades de tamaño fijo, denominadas bloques, por lo que a su vez se denominan dispositivos de bloques. Estos bloques se pueden direccionar de manera independiente, lo que permite leer o escribir un bloque con independencia de los demás. Los dispositivos de bloque lo son porque el hardware fuerza la existencia de accesos de un tamaño determinado. Un disco, por ejemplo, se divide en sectores de 512 bytes o de 1 KB, siendo un sector la unidad mínima de transferencia que el controlador del disco puede manejar. Los dispositivos de caracteres, como los terminales, impresoras, tarjetas de red, módems, etcétera, no almacenan información en bloques de tamaño fijo. Gestionan flujos de caracteres de forma lineal y sin ningún tipo de estructura de bloque. Un teclado es un buen ejemplo de estos dispositivos. Está conectado a una UART (Universal Asvnchronous Receiver/Transmiter) que recibe un carácter del teclado cada vez que se pulsa una tecla. No es posible leer un bloque de teclas de un golpe o buscar dentro del dispositivo por ninguna unidad. Un terminal por línea serie también es un dispositivo de caracteres. Su controlador se limita a enviar al periférico el flujo de caracteres que debe representar en la pantalla y a recibir del mismo los caracteres tecleados por el usuario.

Un controlador de dispositivo (llamado normalmente controlador, o, en inglés, driver) es un programa informático que permite al sistema operativo interactuar con un periférico, haciendo una abstracción del hardware y proporcionando una interfaz -posiblemente estandarizada- para usarlo. Se puede esquematizar como un manual de instrucciones que le indica cómo debe controlar y comunicarse con un dispositivo en particular. Por tanto, es una pieza esencial, sin la cual no se podría usar el hardware.

Existen tantos tipos de controladores como tipos de periféricos, y es frecuente encontrar más de un controlador posible para el mismo dispositivo, cada uno ofreciendo un nivel distinto de funcionalidades. Por ejemplo, aparte de los oficiales (normalmente disponibles en la página web del fabricante), se pueden encontrar también los proporcionados por el sistema operativo, o también versiones no oficiales hechas por terceros. Estos controladores pueden ser genéricos (válidos para más de un modelo del mismo periférico) o específicos para cada modelo. También se distribuyen actualizaciones a nuevas versiones, que pueden dar un mejor funcionamiento. Normalmente son los fabricantes del hardware quienes escriben sus controladores, ya que conocen mejor el funcionamiento interno de cada aparato, pero también se encuentran controladores libres, por ejemplo en los sistemas operativos libres. En este caso, los creadores no son de la empresa fabricante, aunque a veces hay una cooperación con ellos, cosa que facilita el desarrollo. Si no la hay, el procedimiento necesita de ingeniería inversa y otros métodos difíciles o con riesgos legales.

Los controladores son muy variados, casi tanto como los dispositivos de E/S. Muchos de ellos, como los de disco, pueden controlar múltiples dispositivos. Otros, como los de canales de E/S, incluyen su propia UCP y bus para controlar la E/S por programa y evitar interrupciones en la UCP de la computadora. De cualquier forma, en los últimos años ha existido un esfuerzo importante de estandarización de los dispositivos, lo que permite usar un mismo controlador para dispositivos de distintos fabricantes. Un buen ejemplo lo constituyen los dispositivos SCSI (Srna Il? Computer Svstern interftice), cuyos controladores ofrecen una interfaz común independientemente de que se trate de un disco, una cinta, un CD-ROM, etc. Otro buen ejemplo son los controladores IDE (In tegrated Drive Electronics), que suelen usarse para conectar los discos en todas las computadoras personales. En cualquier caso, y sea como sea el controlador, su misión es convertir los datos del formato interno del dispositivo a uno externo que se ofrezca a través de una interfaz de programación bien definida. Los controladores de dispositivo se suelen agrupar en alguna de las siguientes categorías o clases:

• Adaptadores de audio (tarjetas de sonido).

• Dispositivos de comunicación (infrarrojos, módems, etc).

• Dispositivos de visualización; pantallas (displays).

• Teclados.

• Ratón (“mouse” y otros señaladores gráficos).

• Dispositivos multimedia.

• Dispositivos de Red.

• Impresoras.


sábado, 24 de noviembre de 2012

ENTRADA SALIDA PROGRAMADA Y SISTEMAS

1.      Mmio (Memory mapped i/o)
·         Proyectada en memoria.
·         Comparte cables con el acceso a memoria.

2.      Pmio (Port mapped i/o)
·         Bus separado, patas del procesador.
·         Puerto/dirección (donde en el otro había direcciones físicas de memoria).
·         Numero de puerto, indicando el dispositivo..
·         Instrucciones especiales (IN/OUT).



Mmio


Pmio

DMA
·         Desperdicio el procesador con PIO.
·         Si tengo que copiar 500 palabras son 500 instrucciones.
·         El dispositivo (o un controlador) toma el bus de memoria y copia a la memoria directamente.
·         El procesador puede hacer otras cosas mientras (tira de la cache de instrucciones/datos).
·         Para no bloquear durante mucho rato hay buers en el dispositivo.
·         Aviso con una interrupción (mejor) o en la propia memoria (por ejemplo USB), o PIO.
·         Tengo que tener cuidado condiciones de carrera (dispositivo y CPU accediendo a la memoria).




Northbridge/Southbridge



Interrupcion Y Polling
·         Polling es espera activa comprobando un valor, mmio o pmio.
·         Ejemplo, busyag.
·         Interrupción  on, el dispositivo me interrumpe cuando tiene algo para el lector y el SO lo recoge, o despierta al proceso y se lo da.

Maestro Esclavo (Master Slave)
·         Quien controla el bus.
·         Un bus no es más que un cable, uno puede usarlo el resto no.
·         Algunos usan tdm o cmda etc.
·         A veces hay un arbitro (master) y otros arbitrados (slaves) esclavos.
·         También se pueden negociar entre ellos cual se queda con el bus. negociar cual es el master.

Discos
·         Dispositivos de bloques.
·         Usan direccionamientos normales (LBA, bloques lógicos), raros.
·         Usan direccionamientos vectoriales, ya mas raro (CHS, cylinder, head, sector).
·         Antes exponían la geometría (discos apilados con cabezas).
·         Antes se optimizaba, algoritmo del ascensor, etc.
·         Ahora no tiene mucho sentido.
·         Velocidad (de los magnéticostodavía limitada por seeks (mover la cabeza).
·         Dentro fash, caches, traducción  de direcciones (también hay de estado solido, fash).
·         El hw de los discos esta optimizado para localidad temporal, leer junto lo que se escribe junto.

Ethernet
·         En Unix no se expone como tal.
·         Tiene un anillo para mandar y recibir tramas (buering), sw y a veces hw.
·         Pilas de protocolos unas encima de otro tcp/ip etc.
·         En Unix al final hay sockets para el usuario (descriptores de fichero con propiedades extra).

Terminales
·         Dispositivos virtuales (se los inventa el sistema operativo).
·         Texto o gráficos.
·         Conexión, memoria (chan), red (ssh, telnet), serie.
·         Procesamiento.

Procesamiento
·         Procesamiento, ninguno (mando los caracteres y ya).
·         Eco (hago eco local para que el usuario lo vea).
·         Disciplina de linea, modos.
·         Crudo, mando y recibo sin intervenir.
·         Cocinado, le dejo al usuario editar la linea hasta que de al enter.