martes, 29 de noviembre de 2011

Resumen de los Sistemas Operativos Hecho en Clases

          Los Sistemas Operativos han sido factor núcleo en la evolución de la tecnología siendo este el principal elemento de cada computador.
          Evolucionan desde su primera edición y cada día los van actualizando para tener un mejor avance tecnológico en las computadoras y así darnos la facilidad y desempeño en el campo laboral y estudiantil.
          Su proceso evolutivo es periódico y constante, de este modo le proporciona al usuario un mejor manejo del computador.
          Son de gran importancia, ya que nos han facilitado muchas cosas y son una herramienta necesaria para la evolución del ser humano.
          Es el responsable de la comunicación entre el usuario y el computador, siendo el encargado de traducir las ordenes del usuario en el lenguaje binario y luego emite  una respuesta a la petición del usuario.
     Pueden ser:

  • Monotareas.
  • Monousuario.
  • Multitarea.
  • Multiusuario.


LLAMADAS A SUBRUTINAS
Subrutina


Diagrama del funcionamiento de una subrutina.
En computación, una subrutina o subprograma (también llamada procedimiento, función o rutina), como idea general, se presenta como un subalgoritmo que forma parte del algoritmo principal, el cual permite resolver una tarea específica. Algunos lenguajes de programación, como Visual Basic .NET o Fortran, utilizan el nombre función para referirse a subrutinas que devuelven un valor.
Una subrutina al ser llamada dentro de un programa hace que el código principal se detenga y se dirija a ejecutar el código de la subrutina, en cambio cuando se llama a una macro, el compilador toma el código de la macro y lo implanta donde fue llamado, aumentando así el código fuente y por consiguiente el objeto.
Elementos de la declaración de una subrutina
Las declaraciones de subrutinas generalmente son especificadas por:
  • Un nombre único en el ámbito: nombre de la función con el que se identifica y se distingue de otras. No podrá haber otra función ni procedimiento con ese nombre (salvo sobrecarga o polimorfismo en programación orientada a objetos).
  • Un tipo de dato de retorno: tipo de dato del valor que la subrutina devolverá al terminar su ejecución.
  • Una lista de parámetros: especificación del conjunto de argumentos (pueden ser cero, uno o más) que la función debe recibir para realizar su tarea.
  • El código u órdenes de procesamiento: conjunto de órdenes y sentencias que debe ejecutar la subrutina.
Ejemplos
 PROGRAMA principal
     instrucción 1
                   instrucción 2
     ...
     instrucción N
     ...
     SUBRUTINA NombreX
        .......
     FIN SUBRUTINA
     ...
 FIN PROGRAMA principal.
La siguiente función en C es la analogía al cálculo del promedio matemático. La función "Promedio" devuelve un valor decimal correspondiente a la suma de 2 valores enteros de entrada (A y B):
float Promedio(int A, int B){
   float r;
   r=(A+B)/2.0;
   return r;
}
Así una llamada "Promedio(3, 5)" devolverá el valor de tipo real (float) 4,0.

CARGADORES Y COMPILADORES

Un programa objeto contiene instrucciones traducidas y valores de datos del programa fuente, y especifica direcciones en memoria donde se cargarán estos elementos.
Un cargador es un programa del sistema que realiza la función de carga (llevar el programa objeto a la memoria para su ejecución). Algunos sistemas tienen un ligador o editor de ligado (combina dos o más programas objeto independientes y proporciona la información necesaria para realizar referencias entre ellos) para realizar las operaciones de enlace, y un cargador separado para manejar la relocalización (modificar el programa objeto de forma que puede cargarse en una dirección diferente de la localidad especificada originalmente) y la carga. En la mayoría de los casos todos los traductores de programas (esto es, ensambladores y compiladores) de un sistema en particular producen programas objeto en el mismo formato, de esta forma puede usarse el cargador o ligador del sistema con independencia del lenguaje de programación fuente original.

CARGADORES Y ENLAZADORAS


En informática, un cargador es la parte de un sistema operativo que es responsable de cargar programas en memoria desde los ejecutables (por ejemplo, archivos ejecutables). El cargador es usualmente una parte del núcleo del sistema operativo y es cargado al iniciar el sistema y permanece en memoria hasta que el sistema es reiniciado o apagado. Algunos sistemas operativos que tienen un núcleo paginable pueden tener el cargador en una parte paginable de la memoria, entonces a veces el cargador hace un intercambio de memoria.
Todos los sistemas operativos que an la carga de programas tienen cargadores. Algunos sistemas operativos empotrados de computadoras altamente especializadas corren un único programa y no existen capacidades de carga de programas, por lo tanto no usan cargadores. Ejemplos de estos sistemas embebidos se encuentran en equipos de audio para automóviles.
En los sistemas Unix, el cargador es el manejador para la llamada del sistema execve().
Algunas computadoras necesitan cargadores relocalizables, los cuales ajustan direcciones de memoria (punteros) en un ejecutable para compensar las variaciones en la cual la memoria disponible de la aplicación empieza. Las computadoras que necesitan de los cargadores relocalizables son aquellos en los cuales los punteros son direcciones absolutas en vez de compensaciones de direcciones base del programa. Un ejemplo muy conocido está en los mainframes IBM Sistema 360 y sus descendientes, incluyendo la serie de los sistemas Z9.

MICROPROGRAMACION

La microprogramación consiste en un conjunto de microinstrucciones, para poder ejecutar líneas de código y operaciones.
La microprogramación es un lenguaje de programación a un nivel muy bajo sin llegar al nivel mas bajo (que es donde las operaciones se realizan con números binarios)
Para poder realizar la microprogramación, se deben conocer muy bien los registros del procesador en el que se va a trabajar, ya que en este lenguaje se interactúa muy de cerca con ellos.
También es importante conocer las instrucciones del mismo para poder usar algunas de ellas que simplifiquen las instrucciones, todo esto con las microinstrucciones que se usen por default para la programación
Un ejemplo de microprogramación seria la siguiente línea
MOV AX,0000000100000000b
PUSH AX
POPF
Esta instrucción pretende modificar un registro de bandera (If) con un valor de 1, estas microinstrucciones juntas en un lenguaje de alto nivel podrían significar algo como "If b = a", como se ve codificar en microprogramación es un poco mas laborioso, la ventaja de este lenguaje como en la mayoría de los lenguajes de bajo nivel, es la precisión de los datos, ya que en todo momento se sabe donde están los datos, y en que posición se encuentran los registros.
Como otro ejemplo se mostrara una rutina de microinstrucciones que representa una búsqueda
AR ß PC
DR ß M[AR]
PC ßPC+1
AR ß DR(0-10)
CAR(2-5) ß DR(11-14)
CAR(0,1,6) ß 0
Se muestran a continuación una tabla con instrucciones de microprogramación
F1
Microoperacion
Símbolo
000
Ninguno
NOP
001
AC ß AC + DR
ADD
010
AC ß 0
CLRAC
011
AC ßAC+1
INCAC
100
AC ß DR
DRTAC
101
AR ß DR(0-10)
DRTAR
110
AR ß PC
PCTAR
111
M[AR] ß DR
WRITE

F2
Microoperacion
Símbolo
000
Ninguno
NOP
001
AC ß AC -DR
SUB
010
AC ß AC < DR
OR
011
AC ß AC > DR
AND
100
DR ß M[AR]
READ
101
DR ß AC
ACTDR
110
DR ß DR + 1
INCDR
111
DR(0-10) ß PC
PCTDR

F3
Microoperacion
Símbolo
000
Ninguno
NOP
001
AC ß AC Å DR
XOR
010
AC ß AC
COM
011
AC ß shl AC
SHL
100
AC ß shr AC
SHR
101
PC ß PC +1
INCPC
110
PC ß AR
ARTPC
111

Reservado

CD
Condición
Símbolo
Comentario
00
Siempre = 1
U
Transferencia incondicional
01
DR(15)
I
Bit de dirección indirecta
10
AC(15)
S
Bit se digno de AC
11
AC = 0
Z
Valor cero en AC

BR
Símbolo
Función
00
JMP
CAR ß AD si la condición =0
01
CALL
CAR ß AD, SBR ß CAR +1 si la condición = 1
10
RET
CAR ß SBR (Retorno de subrutina)
11
MAP
CAR(2-5) ß DR (11-14), CAR(0,1,6)ß 0



ESTADO DE PROBLEMA

SUPERVICION
La supervisión a través de aplicaciones informáticas, por otra parte, todavía permanece sin ser regulada por los gobiernos y puede ser utilizada sin informar a sus empleados. La supervisión informática introduce disciplina a sus empleados sin provocar la reacción negativa que causan la videovigilancia y la presencia de las videocámaras. Finalmente, casi es imposible abusar de la vigilancia informática ya que funciona solamente en los ordenadores de los empleados, que se supone deben utilizarse para una sola cosa: trabajo. Se puede considerar la supervisión informática como una herramienta de control de rendimiento y no como un sistema de vigilancia de empleados.
Además de beneficios legales y psicológicos, cuya importancia es difícil de evaluar, los programas de supervisión tienen varias ventajas directas. Mediante los programas de supervisión de ordenadores puede grabar las actividades de sus empleados hasta la última pulsación de tecla y el último clic del ratón. Este nivel de control bajo se encuentra a su disposición por si lo necesita, pero siempre puede implementar un nivel de control más conveniente (más alto). Un buen programa de vigilancia reconoce los mensajeros instantáneos más conocidos, como AIM, ICQ o MSN y registra las conversaciones, permitiéndole así tener acceso a unos informes en formato fácilmente legible.
Si se decide por la supervisión informática, en vez de la videovigilancia, solamente queda una cosa por decidir: ¿De entre todas las ofertas de programas de supervisión, cuál elegir? Aunque existen múltiples soluciones de vigilancia, Refog Personal Monitor integra convenientemente todo lo que es importante para usuarios corporativos: seguridad, comodidad y usabilidad. Siendo una aplicación de vigilancia completa, Refog Personal Monitor reúne todas las características habituales, como captura de pulsaciones de teclas, registro de aplicaciones y monitoreo de los sitios Web. Sin embargo, tratándose de un producto destinado a la empresa, Refog Personal Monitor va incluso más allá y ofrece características como acceso remoto a los registros vía correo electrónico o FTP, alertas remotas instantáneas de eventos predefinidos (como determinadas frases clave) y un completo control ambiental. Refog Personal Monitor hace capturas periódicas de pantallas de ordenador, con lo que le proporciona unas instantáneas detalladas en vez de las manchas difusas proporcionadas por una cámara de vídeo. Finalmente, Refog Personal Monitor es prácticamente indetectable e imposible de desinstalar sin saber la contraseña maestra.
INSTRUCCIONES

Instrucción en informática, se le llama a un conjunto de datos insertados en una secuencia estructurada o específica que el procesador interpreta y ejecuta.
Los tipos de instrucción permitidos están definidos y determinados dentro de cada plataforma en el conjunto de instrucciones (en inglés ISA, instruction set architecture), que también determina los registros de origen y destino de la CPU, y en ocasiones un dato inmediato (aquellos que son especificados explícitamente en la instrucción).

BUFFERING

Un buffer (o búfer) en informática es un espacio de memoria, en el que se almacenan datos para evitar que el programa o recurso que los requiere, ya sea hardware o software, se quede sin datos durante una transferencia.
Normalmente los datos se almacenan en un buffer mientras son transferidos desde un dispositivo de entrada (como un ratón) o justo antes de enviarlos a un dispositivo de salida (como unos altavoces). También puede utilizarse para transferir datos entre procesos, de una forma parecida a los bufferes utilizados en telecomunicaciones. Un ejemplo de esto último ocurre en una comunicación telefónica, en la que al realizar una llamada esta se almacena, se disminuye su calidad y el numero de bytes a ser transferidos, y luego se envian estos datos modificados al receptor.
Pueden ser implementados por software o hardware, aunque la gran mayoría son del primer tipo. Normalmente se usan cuando la frecuencias de transferencia de datos es distinta a la de procesado, dependiendo de las limitaciones del sistema, o también cuando la frecuencia es variable, como en la recepción de vídeo online (streaming). Éstas diferencias temporales de transmisión son normalmente ajustadas mediante la implementación de un algoritmo con cola (o estructura de tipo FIFO) en memoria, para así escribir datos en la cola a una frecuencia y leerlos a otra. Esto ocurre en el envió de datos de un procesador a una impresora para que los imprima, la velocidad de impresión de la fotocopiadora en comparación a la del procesador es muy lenta, debido a esto la impresora tendrá que tener una cola FIFO(software), para ir acumulando los trabajos que todavía no se han podido imprimir.
Los buffers se pueden usar en cualquier sistema digital, no solo en informáticos, como en reproductores de música y vídeo .
Se puede ejemplificar la función de un buffer utilizando ésta metáfora: Un buffer es como tener dinero en el banco (buffer), un trabajo (entrada) y unos gastos fijos (salida). Si tienes un trabajo inestable, mientras tengas ciertos ahorros, puedes mantener tus gastos fijos sin problemas, e ir ingresando dinero cuando puedas según vas trabajando. Si los ahorros son pequeños, en seguida que no tengas trabajo, no vas a poder acometer los gastos fijos. De la misma forma si escuchas música en Internet y tu programa de audio usa un buffer pequeño, en cuanto que haya alguna interrupción en la descarga (porque las descargas nunca tienen una velocidad constante), notarás cortes de sonido, ya que faltará información.

PROCESAMIENTOS DE E/S

Entrada/salida
En computación, entrada/salida, también abreviado E/S o I/O (del original en inglés input/output), es la colección de interfaces que usan las distintas unidades funcionales (subsistemas) de un sistema de procesamiento de información para comunicarse unas con otras, o las señales (información) enviadas a través de esas interfaces. Las entradas son las señales recibidas por la unidad, mientras que las salidas son las señales enviadas por ésta.
El término puede ser usado para describir una acción; "realizar una entrada/salida" se refiere a ejecutar una operación de entrada o de salida. Los dispositivos de E/S los usa una persona u otro sistema para comunicarse con una computadora. De hecho, a los teclados y ratones se los considera dispositivos de entrada de una computadora, mientras que los monitores e impresoras son vistos como dispositivos de salida de una computadora. Los dispositivos típicos para la comunicación entre computadoras realizan las dos operaciones, tanto entrada como salida, y entre otros se encuentran los módems y tarjetas de red.
Es importante notar que la designación de un dispositivo, sea de entrada o de salida, cambia al cambiar la perspectiva desde el que se lo ve. Los teclados y ratones toman como entrada el movimiento físico que el usuario produce como salida y lo convierten a una señal eléctrica que la computadora pueda entender. La salida de estos dispositivos son una entrada para la computadora. De manera análoga, los monitores e impresoras toman como entrada las señales que la computadora produce como salida. Luego, convierten esas señales en representaciones inteligibles que puedan ser interpretadas por el usuario. La interpretación será, por ejemplo, por medio de la vista, que funciona como entrada.
En arquitectura de computadoras, a la combinación de una unidad central de procesamiento (CPU) y memoria principal (aquélla que la CPU puede escribir o leer directamente mediante instrucciones individuales) se la considera el corazón de la computadora y cualquier movimiento de información desde o hacia ese conjunto se lo considera entrada/salida. La CPU y su circuitería complementaria proveen métodos de entrada/salida que se usan en programación de bajo nivel para la implementación de controladores de dispositivos.
Los sistemas operativos y lenguajes de programación de más alto nivel brindan conceptos y primitivas de entrada/salida distintos y más abstractos. Por ejemplo, un sistema operativo brinda aplicativos que manejan el concepto de archivos. El lenguaje de programación C define funciones que les permiten a sus programas realizar E/S a través de streams, es decir, les permiten leer datos desde y escribir datos hacia sus programas.
Una alternativa para las funciones primitivas especiales es la mónada de E/S, que permite que los programas describan su E/S y que las acciones se lleven a cabo fuera del programa. Esto resulta interesante, pues las funciones de E/S introducirían un efecto colateral para cualquier lenguaje de programación, pero ahora una programación puramente funcional resultaría práctica.

Interrupcion

Interrupción (también conocida como interrupción de hardware o petición de interrupción) es una señal recibida por el procesador de un ordenador, indicando que debe "interrumpir" el curso de ejecución actual y pasar a ejecutar código específico para tratar esta situación.
Una interrupción es una suspensión temporal de la ejecución de un programa, para pasar a ejecutar una subrutina de servicio de interrupción, la cual, por lo general, no forma parte del programa (generalmente perteneciente al sistema operativo, o al BIOS). Luego de finalizada dicha subrutina, se reanuda la ejecución del programa.
Las interrupciones surgen de las necesidades que tienen los dispositivos periféricos de enviar información al procesador principal de un sistema de computación. La primera técnica que se empleó fue que el propio procesador se encargara de sondear (polling) los dispositivos cada cierto tiempo para averiguar si tenía pendiente alguna comunicación para él. Este método presentaba el inconveniente de ser muy ineficiente, ya que el procesador constantemente consumía tiempo en realizar todas las instrucciones de sondeo.
El mecanismo de interrupciones fue la solución que permitió al procesador desentenderse de esta problemática, y delegar en el dispositivo la responsabilidad de comunicarse con el procesador cuando lo necesitara. El procesador, en este caso, no sondea a ningún dispositivo, sino que queda a la espera de que estos le avisen (le "interrumpan") cuando tengan algo que comunicarle (ya sea un evento, una transferencia de información, una condición de error, etc.).

dispositivos E/S

Los dispositivos de entrada y salida se pueden dividir de manera general en dos categorías: dispositivos de bloque y dispositivos de carácter.
Dispositivo de Bloque: Es aquel que almacena la información en bloques de tamaño fijo, cada uno con su propia dirección. Los tamaños comunes de los bloques van desde 128 bytes hasta 1024 bytes. La propiedad esencial de un dispositivo de bloque es la posibilidad de leer o escribir en un bloque de forma independiente de los demás, es decir, el programa puede leer o escribir en cualquiera de los bloques.
Entre los dispositivos de bloque se pueden encontrar:
  • CD - ROM: Acrónimo de Compact Disc-Read Only Memory. Estándar de almacenamiento de archivos informáticos en disco compacto. Se caracteriza por ser de sólo lectura. Otros estándares son el CD-R o WORM (permite grabar la información una sola vez), el CD-DA (permite reproducir sonido), el CD-I (define una plataforma multimedia) y el PhotoCD (permite visualizar imágenes estáticas).
  •   Disco Duro: Los discos duros proporcionan un acceso más rápido a los datos que los discos flexibles y pueden almacenar mucha más información. Al ser las láminas rígidas, pueden superponerse unas sobre otras, de modo que una unidad de disco duro puede tener acceso a más de una de ellas. La mayoría de los discos duros tienen de dos a ocho láminas. Un disco duro normal gira a una velocidad de 3.600 revoluciones por minuto y las cabezas de lectura y escritura se mueven en la superficie del disco sobre una burbuja de aire de una profundidad de 10 a 25 millonésimas de pulgada. El disco duro va sellado para evitar la interferencia de partículas en la mínima distancia que existe entre las cabezas y el disco.

  Disquete o Disco flexible: Es un elemento plano de mylar recubierto con óxido de hierro que contiene partículas minúsculas capaces de mantener un campo magnético, y encapsulado en una carcasa o funda protectora de plástico. La información se almacena en el disquete mediante la cabeza de lectura y escritura de la unidad de disco, que altera la orientación magnética de las partículas. La orientación en una dirección representa el valor binario 1, y la orientación en otra el valor binario 0. Dependiendo de su capacidad, un disco de este tipo puede contener desde algunos cientos de miles de bytes de información hasta casi tres millones (2,88 Mb). Un disco de 3y pulgadas encerrado en plástico rígido se denomina normalmente disquete pero puede llamarse también disco flexible.
Dispositivo de Carácter: Es aquel que envía o recibe un flujo de caracteres, sin sujetarse a una estructura de bloques. No se pueden utilizar direcciones ni tienen una operación de búsqueda.
Entre los dispositivos de carácter se pueden mencionar:
  Mouse: Es el segundo dispositivo de entrada más utilizado. El mouse o ratón es arrastrado a lo largo de una superficie para maniobrar un apuntador en la pantalla del monitor. Fue inventado por Douglas Engelbart y su nombre se deriva por su forma la cual se asemeja a la de un ratón.
  Monitores: El monitor ó pantalla de vídeo, es el dispositivo de salida más común. Hay algunos que forman parte del cuerpo de la computadora y otros están separados de la misma. Existen muchas formas de clasificar los monitores, la básica es en término de sus capacidades de color, pueden ser: Monocromáticos, despliegan sólo 2 colores, uno para el fondo y otro para la superficie. Los colores pueden ser blanco y negro, verde y negro ó ámbar y negro. Escala de Grises, un monitor a escala de grises es un tipo especial de monitor monocromático capaz de desplegar diferentes tonos de grises. Color: Los monitores de color pueden desplegar de 4 hasta 1 millón de colores diferentes
  Impresoras de Línea: de línea: Son rápidas y ruidosas. Tienen la desventaja de estar limitadas a la impresión de caracteres, por lo que no son apropiadas para aplicaciones donde los gráficos son un ingrediente esencial del producto acabado. imprimen una línea de puntos a la vez. Se alinean martillos similares a agujas sobre el ancho del papel.
  Tarjetas Perforadas: Habían, sido inventada en los años de la revolución industrial (finales del siglo XVIII) por el francés Jacquard y perfeccionado por el estadounidense Hermand Hollerith en 1890. Se usaron para acumular y procesar automáticamente gran cantidad de datos. Durante décadas, desde mediados de los cincuentas la tecnología de las tarjetas perforadas se perfeccionó con la implantación de más dispositivos con capacidades más complejas. Dado que cada tarjeta contenía en general un registro (Un nombre, dirección, etc.) el procesamiento de la tarjeta perforada se conoció también como procesamiento de registro unitario.