Social Icons

Featured Posts

miércoles, 12 de diciembre de 2012

DEFINICION Y CONCEPTO

El sistema operativo es el programa más importante de un ordenador. Para que funcionen los otros programas, cada ordenador de uso general debe tener un sistema operativo. Los sistemas operativos realizan tareas básicas, tales como reconocimiento de la conexión del teclado, enviar la información a la pantalla, no perder de vista archivos y directorios en el disco, y controlar los dispositivos periféricos tales como impresoras, escáner, etc. En sistemas grandes, el sistema operativo tiene incluso mayor responsabilidad y poder, es como un policía de tráfico, se asegura de que los programas y usuarios que están funcionando al mismo tiempo no interfieran entre ellos. El sistema operativo también es responsable de la seguridad, asegurándose de que los usuarios no autorizados no tengan acceso al sistema. Se puede definir el sistema operativo como el software básico que permite al usuario interactuar con el ordenador, administrando sus recursos, coordinando los sucesos y proporcionando la ayuda y los servicios necesarios para la mayoría de los programas.

Todas las actividades que puede realizar el ordenador son dirigidas y coordinadas por el sistema operativo; por ejemplo, facilita la comunicación entre los diferentes periféricos que estén conectados a la unidad central. Como el sistema operativo es el que coordina todos los elementos del sistema, es éste el primero que se carga en la memoria del ordenador al ponerlo en funcionamiento, cargándose después todos los programas que desee ejecutar el usuario. El sistema operativo se encarga de dirigir los procesos cada vez que se ejecuta un programa de usuario, por lo que funciona como intermediario entre el hardware del sistema y el programa o software y, a la vez, como el vínculo entre el ordenador y el usuario que lo utiliza. Es decir, el usuario no podrá interactuar con el ordenador ni ejecutar ningún programa de aplicación si no existe un sistema operativo.
En la década de los setenta se produjeron grandes cambios en la programación de estos sistemas, de manera que se rompieron las normas clásicas del proceso informático. A partir de esta década, los sistemas  operativos de Microsoft (Windows) y los de otras empresas que aparecieron en el mercado han ido desarrollándose y mejorando. Como ejemplo de sistemas operativos están: Pick, Prologue, Theos, Unix, Linux, Dos y Windows.
El sistema operativo Windows se caracteriza por el uso de ventanas, y es multiusuario y multitarea. Desde hace unos años, la popularización de los entornos gráficos en los ordenadores ha sido el factor decisivo para la enorme difusión que han  alcanzado. Microsoft consiguió que su entorno operativo Windows 3 se convirtiese en el más importante de los entornos gráficos de usuario, pero siguió trabajando en nuevas versiones y surgió así Windows 95, que desbancó a DOS como sistema operativo por excelencia, aunque puede ejecutar los programas escritos para DOS. Windows 98 surgió como adaptación de Windows 95, con algunas mejoras. En el año 2000 apareció Windows Millennium, con novedades respecto a versiones anteriores como cambios estéticos, distinta ubicación de determinadas carpetas, nueva organización de la ayuda, etc. También en el año 2000 apareció Windows 2000, en su versión cliente, o Windows 2000 Professional, como en su versión de servidor, o Windows 2000 Server. En el año 2001 apareció Windows XP, con numerosas novedades orientadas a multimedia, Internet y redes. Por último, en el año 2003 apareció el último sistema operativo de Windows, hasta la fecha, un sistema operativo de red denominado Windows Server 2003.


  Funciones y características.
El sistema operativo cumple varias funciones:
  • Administración del procesador: el sistema operativo administra la distribución del procesador entre los distintos programas por medio de un algoritmo de programación. El tipo de programador depende completamente del sistema operativo, según el objetivo deseado.
  • Gestión de la memoria de acceso aleatorio: el sistema operativo se encarga de gestionar el espacio de memoria asignado para cada aplicación y para cada usuario, si resulta pertinente. Cuando la memoria física es insuficiente, el sistema operativo puede crear una zona de memoria en el disco duro, denominada "memoria virtual". La memoria virtual permite ejecutar aplicaciones que requieren una memoria superior a la memoria RAM disponible en el sistema. Sin embargo, esta memoria es mucho más lenta.
  • Gestión de entradas/salidas: el sistema operativo permite unificar y controlar el acceso de los programas a los recursos materiales a través de los drivers (también conocidos como administradores periféricos o de entrada/salida).
  • Gestión de ejecución de aplicaciones: el sistema operativo se encarga de que las aplicaciones se ejecuten sin problemas asignándoles los recursos que éstas necesitan para funcionar. Esto significa que si una aplicación no responde correctamente puede "sucumbir".
  • Administración de autorizaciones: el sistema operativo se encarga de la seguridad en relación con la ejecución de programas garantizando que los recursos sean utilizados sólo por programas y usuarios que posean las autorizaciones correspondientes.
  • Gestión de archivos: el sistema operativo gestiona la lectura y escritura en el sistema de archivos, y las autorizaciones de acceso a archivos de aplicaciones y usuarios.
  • Gestión de la información: el sistema operativo proporciona cierta cantidad de indicadores que pueden utilizarse para diagnosticar el funcionamiento correcto del equipo.
El sistema operativo tiene las siguientes características:
  1. Conveniencia: un sistema operativo hace más conveniente el uso de una computadora.
  2. Eficiencia: el sistema operativo permite que los recursos de la computadora se usen de manera correcta y eficiente.
  3. Habilidad para evolucionar: un sistema operativo debe de ser capaz de aceptar nuevas funciones sin que tenga problemas.
  4. Encargado de administrar el hardware: el sistema operativo debe de ser eficaz.
  5. Relacionar dispositivos

CONCEPTO DE PROCESO

Un proceso puede informalmente entenderse como un programa en ejecución. Formalmente un proceso es "Una unidad de actividad que se caracteriza por la ejecución de una secuencia de instrucciones, un estado actual, y un conjunto de recursos del sistema asociados".
Para entender lo que es un proceso y la diferencia entre un programa y un proceso, A. S. Tanenbaum propone la analogía "Un científico computacional con mente culinaria hornea un pastel de cumpleaños para su hija; tiene la receta para un pastel de cumpleaños y una cocina bien equipada con todos los ingredientes necesarios, harina, huevo, azúcar, leche, etcétera." Situando cada parte de la analogía se puede decir que la receta representa el programa (el algoritmo), el científico computacional es el procesador y los ingredientes son las entradas del programa. El proceso es la actividad que consiste en que el científico computacional vaya leyendo la receta, obteniendo los ingredientes y horneando el pastel.
Cada proceso tiene su contador de programa, registros y variables, aislados de otros procesos, incluso siendo el mismo programa en ejecución 2 veces. Cuándo este último caso sucede, el sistema operativo usa la misma región de memoria de código, debido a que dicho código no cambiará, a menos que se ejecute una versión distinta del programa.
Los procesos son gestionados por el sistema operativo y están formados por:
  • Las instrucciones de un programa destinadas a ser ejecutadas por el microprocesador.
  • Su estado de ejecución en un momento dado, esto es, los valores de los registros de la unidad central de procesamiento para dicho programa.
  • Su memoria de trabajo (memoria crítica), es decir, la memoria que ha reservado y sus contenidos.
  • Otra información que permite al sistema operativo su planificación.
Un proceso se rige en pequeñas porciones, conocidas como páginas, y cada proceso tiene su propia tabla de paginación, fungiendo como una optimización del sistema operativo ante los fallo de página.
Esta definición varía ligeramente en el caso de sistemas operativos multihilo, donde un proceso consta de uno o más hilos, la memoria de trabajo (compartida por todos los hilos) y la información de planificación. Cada hilo consta de instrucciones y estado de ejecución.
Los procesos son creados y eliminados por el sistema operativo, así como también éste se debe hacer cargo de la comunicación entre procesos, pero lo hace a petición de otros procesos (interrupción o tiempo de reloj). El mecanismo por el cual un proceso crea otro proceso se denomina bifurcación (fork). El proceso de arranque de GNU/Linux inicia con un sólo proceso (init) y después comienza a crear los hilos necesarios para tener el sistema listo para su uso. Los nuevos procesos pueden ser independientes y no compartir el espacio de memoria con el proceso que los ha creado o ser creados en el mismo espacio de memoria.
En los sistemas operativos multihilo es posible crear tanto hilos como procesos. La diferencia estriba en que un proceso solamente puede crear hilos para sí mismo y en que dichos hilos comparten toda la memoria reservada para el proceso.
Los procesos pueden ser cooperativos o independientes. Dos o más procesos pueden cooperar mediante señales de forma que uno obliga a detenerse a los otros hasta que reciban una señal para continuar.
  • Se usa una variable de tipo semáforo para sincronizar los procesos.
  • Si un proceso está esperando una señal, se suspende hasta que la señal se envíe.
  • Se mantiene una cola de procesos en espera en el semáforo.
  • La forma de elegir los procesos de la cola en espera es mediante una política first in first out.
La sincronización explícita entre procesos es un caso particular del estado "bloqueado". En este caso, el suceso que permite desbloquear un proceso no es una operación de entrada/salida, sino una señal generada a propósito por el programador desde otro proceso.
Hay cuatro eventos principales que provocan la creación de procesos:
  • El arranque del sistema.
  • La ejecución, desde un proceso, de una llamada al sistema para la creación de otro proceso.
  • Una petición de usuario para crear un proceso.
  • El inicio de un trabajo por lotes.
Los procesos pueden contener uno o más hilos, haciendo más eficiente las tareas, asimismo la complejidad de los algoritmos de sincronización, ya que podría ocurrir la condición de carrera muy a menudo, inclusive los indeseados interbloqueos.



  Estados y transiciones de los procesos
  • Registros generales. De existir registros especificos de coma flotante tambien se incluyen aqui.
  • Contador de programa.  
  • Estados y transiciones de los procesos 
  • Puntero de pila. 
  • Registro o registros de estado.
  • Registros especiales. Como puede ser el RIED (registro identificador de espacio de direccionamiento).
      
    El estado del procesador de un proceso reside en los registros del procesador, cuando el proceso esta en ejecucion, o en el bloque de control de proceso (BCP), cuando el proceso no esta en ejecucion.
    Cuando el proceso esta ejecutando, el estado del procesador varia de acuerdo al flujo de instrucciones maquina ejecutado. En este caso, la copia del estado del procesador que reside en el BCP no esta actualizada. Tengase en cuenta que los registros de la maquina se utilizan para no tener que acceder a la informacion de memoria, dado que es mucho mas lenta. Por tanto, no tiene sentido plantear que, en cada modificacion de un registro, se actualice su valor en el BCP, puesto que esta en memoria.
    Sin embargo, cuando se detiene la ejecucion de un proceso, como consecuencia de la ejecucion de una interrupcion, es muy importante que el sistema operativo actualice la copia del estado del procesador en su BCP. En terminos concretos, la rutina del sistema operativo que trata las Interrupciones lo primero que ha de hacer es salvar el estado del procesador en el BCP del proceso interrumpido.
      
      Procesos ligeros: Hilos o hebras.
     
    Un proceso ligero, o thread, es un programa en ejecucion (flujo de ejecucion) que comparte la imagen de memoria y otras informaciones con otros procesos ligeros. Como muestra la Figura , un proceso puede contener un solo flujo de ejecucion, como ocurre en los procesos clasicos, o mas de un flujo de ejecucion (procesos ligeros).
    Desde el punto de vista de la programacion, un proceso ligero se define como una funcion cuya ejecucion se puede lanzar en paralelo con otras. El hilo de ejecucion primario, o proceso ligero primario, corresponde a la funcion main.
    Cada proceso ligero tiene informaciones que le son propias y que no comparte con otros procesos ligeros. Las informaciones propias se refieren fundamentalmente al contexto de ejecucion, pudiendose destacar las siguientes:
    • Contador de programa.
    • Pila.
    • Registros.
    • Estado del proceso ligero (ejecutando, listo o bloqueado).
    Todos los procesos ligeros de un mismo proceso comparten la informacion del mismo. En concreto, comparten:
    • Espacio de memoria.
    • Variables globales.
    • Archivos abiertos.
    • Procesos hijos.
    • Temporizadores.
    • Senales y semaforos.
    • Contabilidad.
    Es importante destacar que todos los procesos ligeros de un mismo proceso comparten el mismo espacio de direcciones de memoria, que incluye el codigo, los datos y las pilas de los diferentes procesos ligeros. Esto hace que no exista proteccion de memoria entre los procesos ligeros de un mismo proceso, algo que si ocurre con los procesos convencionales.
    El proceso ligero constituye la unidad ejecutable en Windows NT. La Figura representa de forma esquematica la estructura de un proceso de Windows NT con sus procesos ligeros. 
      Concurrencia y secuenciabilidad.
    Los procesos son concurrentes si existen simultaneamente. Los procesos concurrentes pueden funcionar en forma totalmente independiente unos de otros, o pueden ser asincronos, lo cual significa que en ocasiones requieren cierta sincronizacion o cooperacion. 
    Cuando dos o mas procesos llegan al mismo tiempo a ejecutarse, se dice que se ha presentado una concurrencia de procesos. Es importante mencionar que para que dos o mas procesos sean concurrentes , es necesario que tengan alguna relacion entre ellos como puede ser la cooperacion para un determinado trabajo o el uso de informacion o recursos compartidos, por ejemplo: en un sistema de un procesador , la multiprogramacion es una condicion necesaria pero no suficiente para que exista concurrencia, ya que los procesos pueden ejecutarse de forma totalmente independiente.
    Por otro lado en un sistema de varios procesos se puede presentar la concurrencia siempre y cuando las actividades necesiten actuar entre si ya sea para utilizar informacion en comun o para cualquier otra cosa.

    Existen tres formas modelos de computadora en los que se puede pueden ejecutar procesos concurrentes:
    Multiprogramacion con un unico procesador.
    En este modelo todos los procesos concurrentes ejecutan sobre un unico procesador. El sistema operativo se encarga de ir repartiendo el tiempo del procesador entre los distintos procesos, intercalando la ejecucion de los mismos para dar asi una apariencia de ejecucion simultanea.
    Multiprocesador.
    Un multiprocesador es una maquina formada por un conjunto de procesadores que comparten memoria principal. En este tipo de arquitecturas, los procesos concurrentes no solo pueden intercalar su ejecucion sino tambien superponerla. En este caso si existe una verdadera ejecucion simultanea de procesos, al coincidir las fases de procesamiento de distintos procesos. En un instante dado se pueden ejecutar de forma simultanea tantos procesos como procesadores haya.
    Multicomputadora.
    Una multicomputadora es una maquina de memoria distribuida, en contraposicion con el multiprocesador que es de memoria compartida. Esta formada por una serie de computadoras completas con su UCP, memoria principal y, en su caso, periferia. Cada uno de estos procesadores completo se denomina nodo. Los nodos se encuentran conectados y se comunican entre si a traves de una red de interconexion, empleando el metodo de paso de mensajes. En este tipo de arquitecturas tambien es posible la ejecucion simultanea de los procesos sobre los distintos procesadores.
    En general la concurrencia sera aparente siempre que el numero de procesos sea mayor que el de procesadores disponibles, es decir, cuando haya mas de un proceso por procesador. La concurrencia sera real cuando haya un proceso por procesador
     
Como se indico anteriormente, el proceso es la unidad de procesamiento gestionada por el sistema operativo. Para poder realizar este cometido, el proceso tiene asociado una serie de elementos de informacion,que se analizan seguidamente. Estos elementos se organizan en tres grupos: estado del procesador, imagen de memoria y tablas del sistema operativo.
Estado del procesador
El estado del procesador esta formado por el contenido de todos sus registros, que se enumeran seguidamente:

POLITICA Y FILOSOFIA

  Filosofía
La memoria principal puede ser considerada como un arreglo lineal de localidades de almacenamiento de un byte de tamano. Cada localidad de almacenamiento tiene asignada una direccion que la identifica.
Una de las funciones basicas que debe implementar un SO es la Administracion de la Memoria para tener un control sobre los lugares donde estan almacenados los datos y procesos que actualmente se estan utilizando.
Sea cual sea es esquema de organizacion del almacenamiento que se adopte para un sistema especifico es necesario decidir que estrategias se deben utilizar para obtener un rendimiento optimo.


  Políticas
FIFO: Los procesos se despachan de acuerdo a su tiempo de llega a la cola de procesos listos, si un proceso llega al procesador sale hasta que termine. La politica FIFO actualmente no se usa como el esquema principal de un sistema, pero si por ejemplo cuando se usa una politica de prioridades y hay procesos con la misma prioridad, a estos se les podria aplicar FIFO.

Round Robin: Los procesos se despachan en la forma que lo hace el FIFO, pero se les asigna una cantidad limitada de tiempo (CUANTUM) en el procesador, si no termina en ese lapso se manda al final de la lista de procesos listos.

SJF (Shortest job first - Prioridad del trabajo mas corto): Se ejecuta primero el proceso en espera que tiene el menor tiempo estimado. SJF favorece a los procesos cortos, ya que los largos podrian llegar a rezagarse mucho tiempo e incluso nunca ejecutarse. 

SRT (Sortest remaining time scheduling ? Tiempo restante mas corto. En SJF una vez que un proceso comienza su ejecucion continua hasta terminar. En SRT, un proceso en ejecucion puede ser desposeido por uno nuevo de menor tiempo de ejecucion.

HRN: (highest response ratio next ? Prioridad de la tasa de respuesta mas alta): Politica no apropiativa que corrige el retraso excesivo de procesos grandes que produce el SJF, para asi no caer en un favoritismo excesivo por los procesos cortos, lo logra usando una formula basada en el tiempo de espera y el tiempo de servicio, con lo cual la prioridad de cada trabajo no solo esta en funcion del tiempo de servicio

  Memoria real

La memoria real o principal es en donde son ejecutados los programas y procesos de una computadora y es el espacio real que existe en memoria para que se ejecuten los procesos.
Por lo general esta memoria es de mayor costo que la memoria secundaria, pero el acceso a la informacion contenida en ella es de mas rapido acceso.
Solo la memoria cache es mas rapida que la principal, pero su costo es a su vez mayor.
Cuando no existe memoria virtual no hay diferenciacion entre el espacio de direcciones y la memoria real; el espacio de direcciones que puede ser usado en los programas tiene identico tamano al espacio de memoria real posible. Si se utiliza memoria virtual, el espacio de direcciones disponibles para los programas es aquel determinado por el tamano de la memoria virtual implementada y no el espacio de direcciones provisto por la memoria real disponible (el espacio de la memoria virtual sera mayor que el de la memoria real).
La organización y administración de la “memoria principal”, “memoria primaria” o “memoria real” de un sistema ha sido y es uno de los factores mas importantes en el diseño de los S. O. (Ver la figura 3.2.1)
Los términos “memoria” y “almacenamiento” se consideran equivalentes.
Los programas y datos deben estar en el almacenamiento principal para:
  • Poderlos ejecutar.
  • Referenciarlos directamente


  Organización de memoria virtual
Almacenamiento virtual significa la capacidad de direccionar un espacio de almacenamiento mucho mayor que el disponible en el almacenamiento primario de determinado sistema de computación.
Esta tecnología apareció en 1960 en la Universidad de Manchester (Inglaterra), en el sistema “Atlas”.
La ilusión de la memoria virtual está soportada por el mecanismo de traducción de memoria, junto con una gran cantidad de almacenamiento rápido en disco duro. Así en cualquier momento el espacio de direcciones virtual hace un seguimiento de tal forma que una pequeña parte de él, está en memoria real y el resto almacenado en el disco, y puede ser referenciado fácilmente.
Debido a que sólo la parte de memoria virtual que está almacenada en la memoria principal, es accesible a la CPU, según un programa va ejecutándose, la proximidad de referencias a memoria cambia, necesitando que algunas partes de la memoria virtual se traigan a la memoria principal desde el disco, mientras que otras ya ejecutadas, se pueden volver a depositar en el disco (archivos de paginación).
Los métodos más comunes de implementación son mediante:
• Técnicas de paginación.
• Técnicas de segmentación.
• Una combinación de ambas técnicas.


Administración de memoria virtual
La clave del concepto de memoria (almacenamiento) virtual esta en la disociación:
  • De las direcciones a las que hace referencia un programa.
  • De las direcciones disponibles en la memoria real (almacenamiento primario).
Mientras el proceso se ejecuta con sus páginas actuales, el sistema carga las demás páginas que estarán disponibles cuando las requiera el proceso.
El S. O. intenta predecir las páginas que un proceso va a necesitar y a continuación precarga estas páginas cuando hay espacio disponible Mientras el proceso ejecuta sus páginas actuales, el sistema carga páginas nuevas que estarán disponibles cuando el proceso las pida, debido a ello, el tiempo de ejecución de un proceso se puede reducir.
Es un método mediante el cual, un sistema operativo simula tener másmemoria principal que la que existe físicamente. Para implementar la memoriavirtual se utiliza un medio de almacenamiento secundario de alta velocidad deacceso, generalmente en disco duro de la maquina. Un sistema de memoriavirtual se implementa utilizando paginación como método de administración dememoria básica y algún mecanismo de intercambio (para descargar paginas dela memoria principal hacia el disco duro y para cargar esas paginas de nuevo ala memoria).La memoria virtual es una técnica para proporcionar la simulación de unespacio de memoria mucho mayor que la memoria física de una maquina. Esta
“ilusión” permite que los programas se hagan sin tener en cuenta el tamaño
exacto de la memoria física. La ilusión de la memoria virtual esta soportada porel mecanismo de traducción de memoria, junto con una gran cantidad dealmacenamiento rápido en disco duro.

DISPOSITIVOS DE ENTRADA/SALIDA

Clasificacion
1. Dispositivos de bloque
2. 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.



Manejadores de Dispositivos
Todo el código que depende de los dispositivos aparece en los manejadores de dispositivos.
 
Cada controlador posee uno o más registros de dispositivos:
  • Se utilizan para darle los comandos.
  • Los manejadores de dispositivos proveen estos comandos y verifican su ejecución adecuada.
La labor de un manejador de dispositivos es la de:
  • Aceptar las solicitudes abstractas que le hace el software independiente del dispositivo.
  • Verificar la ejecución de dichas solicitudes.
Si al recibir una solicitud el manejador esta ocupado con otra solicitud, agregara la nueva solicitud a una cola de solicitudes pendientes.
La solicitud de e / s, por ej. para un disco, se debe traducir de términos abstractos a términos concretos:
  • El manejador de disco debe:
    • Estimar el lugar donde se encuentra en realidad el bloque solicitado.
    • Verificar si el motor de la unidad funciona.
    • Verificar si el brazo esta colocado en el cilindro adecuado, etc.
    • Resumiendo: debe decidir cuales son las operaciones necesarias del controlador y su orden.
    • Envía los comandos al controlador al escribir en los registros de dispositivo del mismo.
    • Frecuentemente el manejador del dispositivo se bloquea hasta que el controlador realiza cierto trabajo; una interrupción lo libera de este bloqueo.
    • Al finalizar la operación debe verificar los errores.
    • Si todo esta o.k. transferirá los datos al software independiente del dispositivo.
    • Regresa información de estado sobre los errores a quien lo llamo.
    • Inicia otra solicitud pendiente o queda en espera.
  Mecanismos y funciones de los manejadores de dispositivos: device drivers


El controlador es el componente más importante desde el punto de vista del sistema operativo, ya que constituye la interfaz del dispositivo con el bus de la computadora y es el componente que se ve desde la CPU. El Sistema Operativo generalmente trabaja con el controlador y no con el dispositivo.
Tecnicas de E/S
E/S programada: El procesador emite una orden de E/S de parte de un proceso a un modulo de E/S; el proceso espera entonces a que termine la operación, antes de seguir.
E/S dirigida por interrupciones: El procesador emite una orden de E/S de parte de un proceso, continua la ejecución de las instrucciones siguientes y el modulo de E/S lo interrumpe cuan do completa su trabajo. Las instrucciones siguientes pueden ser del mismo proceso, si no es necesario para este esperar la terminación de E/S. en otro caso, el proceso se suspende a la espera de la interrupción, mientras se realiza otro trabajo.
Acceso Directo a la Memoria (DMA): unmodulo de DMA controla el intercambio de datos entre la memoria principal y un modulo de E/S. El procesador envía una petición de transferencia de un bloque de datos al modulo DMA y se interrumpe solo cuando se ha transferido el bloque entero.
En la mayoría de los sistemas informáticos, el DMA es la forma dominante de transferencia ofrecida por el sistema operativo.



Sin interrupciones
Con interrupciones
Transferencia de E/S a memoria a través del procesador
E/S programada
E/S dirigida por interrupciones
Transferencia de E/S directa a memoria

Acceso directo a memoria (DMA)



Hay que recalcar que el controlador al ser una parte crítica del sistema operativo, el fallo de un controlador puede ser más grave que otros errores de software, pudiendo bloquear el ordenador o incluso dañar el hardware. Debido a que el hardware es (necesariamente) indeterminista, encontrar y solucionar un fallo en un controlador es una tarea complicada ya que no sólo hay que monitorizar el programa, sino también el propio dispositivo.
A medida que han evolucionado los sistemas informáticos, se ha producido tendencia crecientes en la complejidad y sofisticación de cada componente individual. En ninguno de los puntos es mas evidente que en la función deE/S. la etapa de su evolución puede resumirse como lo siguiente:
1.- El procesador controla directamente los dispositivos periféricos.
2.- Se añade un controlador o modulo de E/S. El procesador utiliza E/S programada sin interrupciones.
3.- Se añade un controlador o modulo. Pero empleándose interrupciones.
4.- El modulo de E/S recibe el control directo de la memoria, a través de DMA, Ahora puede mover un bloque de datos a la memoria o desde la misma sin que intervenga el procesador.
5.- se mejora el modulo de E/S hasta llegar a ser un procesador separado con un conjunto de instrucciones especializadas para E/S.
6.- El modulo de E/S posee su propia memoria local y es, de hecho un computador independiente.
A medida que sigue la evolución, una mayor parte de la funciones de E/S se realiza sin la participación del procesador. El procesador central se libera cada vez más de las tareas relacionadas con la E/S, mejorando así el rendimiento.


  Estructuras de datos para manejo de dispositivos

¿Qué es una estructura?
Los sistemas operativos actuales son grandes y complejos, estos deben poseer una ingeniería correcta para su fácil actualización y para que puedan cumplir su función correctamente. La estructura es generalmente modular, cada modulo cumple una función determinada e interactúa con los demás módulos.
Estructura simple
El sistema MS-DOS es, sin duda, el mejor sistema operativo para microcomputadoras. Sin embargo, sus interfaces y niveles de funcionalidad no están bien definidos. Los programas de aplicación pueden acceder a operaciones básicas de entrada / salida para escribir directamente en pantalla o discos. Este libre acceso, hace que el sistema sea vulnerable, ya que un programa de aplicación puede eliminar por completo un disco rígido por alguna falla. Además este sistema, también esta limitado al hardware sobre el que corre.
Otra estructura simple es la utilizada por la versión original de UNIX, esta consiste de dos partes separadas, el kernel y los programas de sistemas . El kernel fue posteriormente separado en manejadores (drivers) de dispositivos y una serie de interfaces. El kernel provee el sistema de archivos, la programación de CPU, el administrador de memoria y otras funciones del sistema operativo que responden a las llamadas del sistema enunciadas anteriormente.
Estructura por capas (layers)
Las nuevas versiones de UNIX se diseñaron para hardware mas avanzado. Para dar mayor soporte al hardware, los sistemas operativos se dividieron en pequeñas partes. Ahora los sistemas operativos tienen mayor control sobre el hardware y las aplicaciones que se ejecutan sobre este.
La modularizacion de un sistema se puede presentar de varias formas, la mas utilizada es la de capas, la cual consiste en dividir al sistema operativo en un numero de capas. La capa de menor nivel es el hardware y la de mayor nivel es la interfaz con el usuario.
La principal ventaja es que cada capa cumple con una serie de funciones y servicios que brinda a las otras capas, esto permite una mejor organización del sistema operativo y una depuración mas fácil de este.
Cada capa se implementa solo utilizando las operaciones provistas por la capa de nivel inferior. Una capa no necesita saber como se implementan estas funciones, solo necesita saber que operaciones puede realizar.

Operaciones de Entrada /salida
 
Funciones que realizan:
 Vamos a señalar las funciones que debe realizar un computador para ejecutar trabajos de entrada/salida:

- Direccionamiento o selección del dispositivo que debe llevar a cabo la operación de E/S.
- Transferencia de los datos entre el procesador y el dispositivo (en uno u otro sentido).
- Sincronización y coordinación de las operaciones.
Esta ultima función es necesaria debido a la deferencia de velocidades entre los dispositivos y la CPU y a la independencia que debe existir entre los periféricos y la CPU (por ejemplo, suelen tener relojes diferentes).
Se define una transferencia elemental de información como la transmisión de una sola unidad de información (normalmente un byte) entre el procesador y el periférico o viceversa. Para efectuar una transferencia elemental de información son precisas las siguientes funciones:

- Establecimiento de una comunicación física entre el procesador y el periférico para la transmisión de la unidad de información.
- Control de los periféricos, en que se incluyen operaciones como prueba y modificación del estado del periférico. Para realizar estas funciones la CPU gestionara las líneas de control necesarias.
Definiremos una operación de E/S como el conjunto de acciones necesarias para la transferencia de un conjunto de datos (es decir, una transferencia completa de datos). Para la realización de una operación de E/S se deben efectuar las siguientes funciones:

- Recuento de las unidades de información transferidas (normalmente bytes) para reconocer el fin de operación.
- Sincronización de velocidad entre la CPU y el periférico.
- Detección de errores (e incluso corrección) mediante la utilización de los códigos necesarios (bits de paridad, códigos de redundancia cíclica, etc.)
- Almacenamiento temporal de la información. Es más eficiente utilizar un buffer temporal específico para las operaciones de E/S que utilizan el área de datos del programa.
- Conversión de códigos , conversión serie/paralelo, etc.

SISTEMA DE ARCHIVOS

¿Qué es un sistema de archivos?

Aunque los discos rígidos pueden ser muy chicos, aún así contienen millones de bits, y por lo tanto necesitan organizarse para poder ubicar la información. Éste es el propósito del sistema de archivos. Recuerde que un disco rígido se conforma de varios discos circulares que giran en torno a un eje. Las pistas (áreas concéntricas escritas a ambos lados del disco) se dividen en piezas llamadas sectores (cada uno de los cuales contiene 512 bytes). El formateado lógico de un disco permite que se cree un sistema de archivos en el disco, lo cual, a su vez, permitirá que un sistema operativo (DOS, Windos 9x, UNIX, ...), el espacio disponible en disco para almacenar y utilizar archivos. El sistema de archivos se basa en la administración de clústers, la unidad de disco más chica que el sistema operativo puede administrar.
Un clúster consiste en uno o más sectores. Por esta razón, cuanto más grande sea el tamaño del clúster, menores utilidades tendrá que administrar el sistema operativo...
Por el otro lado, ya que un sistema operativo sólo sabe administrar unidades enteras de asignación (es decir que un archivo ocupa un número entero de clústers), cuantos más sectores haya por clúster, más espacio desperdiciado habrá. Por esta razón, la elección de un sistema de archivos es importante. 
  Sistemas de archivos y sistema operativo
En realidad, la elección de un sistema de archivos depende en primer lugar del sistema operativo que esté usando. Generalmente, cuanto más reciente sea el sistema operativo, mayor será el número de archivos que admita. Por esto, se necesita contar con FAT16 en DOS y en las primeras versiones de Windows 95.
Empezando por Windows 95 OSR2, usted puede elegir entre los sistemas de archivos FAT16 y FAT32. Si el tamaño de la partición es mayor a 2GB, se excluyen los sistemas de archivos FAT y usted necesitará usar el sistema FAT32 (o modificar el tamaño de la partición).
Por debajo de este límite, se recomienda FAT16 para particiones con una capacidad menor a 500Mb. De lo contrario, es preferible usar FAT32.
En el caso de Windows NT (hasta la versión 4) usted puede elegir entre el sistema FAT16 y NTFS. No se admite FAT32. Por lo general, se recomienda el sistema NTFS ya que brinda una mayor seguridad y un mejor rendimiento que el sistema FAT. Actualmente, Microsoft recomienda el uso de una partición de tipo FAT pequeña (de entre 250 y 500MB) para el sistema operativo, para poder iniciar el sistema desde un disquete DOS de arranque en caso de que ocurra una catástrofe, y el uso de una segunda partición para almacenar sus datos.

En Windows NT5, hay muchas más opciones ya que acepta particiones FAT16, FAT32 y NTFS. Nuevamente, se recomienda el sistema de archivos más reciente (NTFS 5), ya que ofrece muchas más opciones que los sistemas FAT. Por las mismas razones mencionadas anteriormente, aún puede elegir una partición del tipo FAT.
 

  Coexistencia de varios sistemas de archivos
Cuando coexisten varios sistemas operativos en la misma máquina, la elección de un sistema de archivos es un gran problema. Debido a que el sistema de archivos está estrechamente ligado al sistema operativo, cuando existen varios sistemas operativos, usted debe elegir un sistema de archivos para cada uno, teniendo en cuenta que es posible que deba acceder a los datos de un sistema operativo desde otro. Una solución sería la de usar particiones FAT para todos los sistemas, asegurándose de que las particiones no sean mayores a 2 GB. La solución más apropiada sería la de utilizar, para cada SO, una partición cuyo sistema de archivos sea el que mejor se adapte a ésta y utilizar una partición FAT16 dedicada para que los diferentes sistemas operativos compartan datos.

PROTECCION Y SEGURIDAD

Concepto y Objetivos de Protección.
La protección es un mecanismo control de acceso de los programas, procesos o usuarios al sistema o recursos. Hay importantes razones para proveer protección. La más obvia es la necesidad de prevenirse de violaciones intencionales de acceso por un usuario. Un recurso desprotegido no puede defenderse contra el uso no autorizado o de un usuario incompetente. Los sistemas orientados a la protección proveen maneras de distinguir entre uso autorizado y desautorizado.
Objetivos
·         Inicialmente protección del SO frente a usuarios poco confiables.
·         Protección: control para que cada componente activo de un proceso solo pueda acceder a los recursos especificados, y solo en forma congruente con la política establecida.
·         La mejora de la protección implica también una mejora de la seguridad.
·         Las políticas de uso se establecen:
·         Por el hardware.
·         Por el administrador / SO.
·         Por el usuario propietario del recurso.
·         Principio de separación entre mecanismo y política:
·         Mecanismo con que elementos (hardware y/o software) se realiza la protección.
·         Política es el conjunto de decisiones que se toman para especificar cómo se usan esos elementos de protección.
·         La política puede variar dependiendo de la aplicación, a lo largo del tiempo
·         La protección no solo es cuestión del administrador, sino también del usuario.
·         El sistema de protección debe:
·         Distinguir entre usos autorizados y no-autorizados.
·         Especificar el tipo de control de acceso impuesto.
·         Proveer medios para el aseguramiento de la protección.

  Funciones del Sistema de Protección.
·         Control de acceso que hace referencia a las características de seguridad que controlan quien puede obtener acceso a los recursos de un sistema operativo.
·         Tener la flexibilidad suficiente para poder imponer una diversidad de políticas y mecanismos.
·         Protección de los procesos del sistema contra los procesos de usuario.
·         Protección de los procesos de usuario contra los de otros procesos de usuario.
·         Protección de Memoria.
·         Protección de los dispositivos.

  Implantación de matrices de acceso
Los derechos de acceso definen que acceso tienen varios sujetos sobre varios objetos. Los sujetos acceden a los objetos. Los objetos son entidades que contienen información. Los objetos pueden ser:
Concretos:
Ej. Discos, cintas, procesadores, almacenamiento, etc.
Abstractos:
Ej. Estructuras de datos, de procesos, etc.
Los objetos están protegidos contra los sujetos. Las autorizaciones a un sistema se conceden a los sujetos.
Los sujetos pueden ser varios tipos de entidades:
Ej. Usuarios, procesos, programas, otras entidades, etc.
Los derechos de acceso más comunes son:
Acceso de lectura.
Acceso de escritura.
Acceso de ejecución.
Una forma de implementación es mediante una matriz de control de acceso con:
Filas para los sujetos.
Columnas para los objetos.
Celdas de la matriz para los derechos de acceso que un usuario tiene a un objeto.
Una matriz de control de acceso debe ser muy celosamente protegida por el S.O.

  Protección Basada en el Lenguaje.
A medida que ha aumentado la complejidad de los sistemas operativos, sobre todo al trata de ofrecer interfaces de más alto nivel con el usuario, lo objetivos de la protección se han vuelto mucho más refinados. En esta refinación observamos que los diseñadores de los diseñadores de los sistemas de protección se han apoyado mucho en ideas que se originaron en los lenguajes de programación y especialmente en los conceptos de tipos de datos abstractos y objetos. Los sistemas de protección ahora se ocupan no sólo de la identidad de un recurso al cual se intenta acceder, sino también de la naturaleza funcional de ese acceso. En los sistemas de protección más nuevos, el interés en la función que se invocará se extiende más allá de un conjunto de funciones definidas por el sistema, como los métodos de acceso a archivos estándar, para incluir funciones que también podrían ser definidas por el usuario.
Las políticas para el uso de recursos también podrían variar, dependiendo de la aplicación, y podrían cambiar con el tiempo. Por estas razones, la protección ya no puede considerarse como un asunto que sólo concierne al diseñador de un sistema operativo; también debe estar disponible como herramienta que el diseñador de aplicaciones pueda usar para proteger los recursos de un subsistema de aplicación contra intervenciones o errores.
Aquí es donde los lenguajes de programación entran en escena. Especificar el control de acceso deseado a un recurso compartido en un sistema es hacer una declaración acerca del recurso. Este tipo de declaración se puede integrar en un lenguaje mediante una extensión de su mecanismo de tipificación. Si se declara la protección junto con la tipificación de los datos, el diseñado de cada subsistema puede especificar sus necesidades de protección así debería darse directamente durante la redacción del programa, y en el lenguaje en el que el programa mismo se expresa. Este enfoque tiene varias ventajas importantes:
1. Las necesidades de protección se declaran de forma sencilla en vez de programarse como una secuencia de llamadas a procedimientos de un sistema operativo.
2. Las necesidades de protección pueden expresarse independientemente de los recursos que ofrezca un sistema operativo en particular.
3. El diseñador de un subsistema no tiene que proporcionar los mecanismos para hacer cumplir la protección.
4. Una notación declarativa es natural porque los privilegios de acceso están íntimamente relacionados con el concepto lingüístico de tipo de datos.

  Concepto de seguridad.
La seguridad informática es el área de la informática que se enfoca en la protección de la infraestructura computacional y todo lo relacionado con esta (incluyendo la información contenida). La seguridad informática comprende software, bases de datos, metadatos, archivos y todo lo que la organización valore (activo) y signifique un riesgo si ésta llega a manos de otras personas. Este tipo de información se conoce como información privilegiada o confidencial.
El uso creciente y la confianza en los computadores en todo el mundo han hecho surgir una preocupación legítima con respecto a la seguridad informática. El uso de los computadores ha extendido en ambientes comerciales, gubernamentales, militares e incluso en los hogares. Grandes cantidades de datos vitales sensibles se están confiando y almacenado cada vez más en computadores. Entre ellos se incluyen registros sobre individuos, negocios y diferentes registros públicos y secretos gubernamentales y militares. Grandes transacciones monetarias tienen lugar diariamente en forma de transferencia electrónicas de fondos. Más recientemente, informaciones tales como notificaciones de propiedad intelectual y datos comerciales estratégicos son también almacenados, procesados y diseminados mediante computadores. Entre ellos se incluyen diseños de ventas, contratos legales y muchos otros.
La seguridad, no solo requiere un sistema de protección apropiado, sino también considerar el entorno externo en el que el sistema opera. La protección interna no es útil si la consola del operador está al alcance de personal no autorizado, o si los archivos se pueden sacar simplemente del sistema de computación y llevarse a un sistema sin protección. Estos problemas de seguridad son esencialmente de administración, no problemas del sistema operativo.

  Clasificaciones de la Seguridad.
Es decir que la clasificación de los sistemas de computación según sus requerimientos de la seguridad ha sido ampliamente discutida de la seguridad del sistema.
En esta clasificación especifica, hay cuatro niveles de seguridad: a, b, c y d… a continuación, se describen estos niveles de seguridad y las características de cada uno.
Nivel D es el Sistemas con protección mínima o nula no pasan las pruebas de seguridad mínima. MS-DOS y Windows 3. 1 son sistemas de nivel d. Puesto que están pensados para un sistema mono proceso y mono usuario, no proporcionan ningún tipo de control de acceso ni de separación de recursos.
 Nivel C a la Capacidad discrecional para proteger recursos, La aplicación de los mecanismos de protección depende del usuario, o usuarios, que tienen privilegios sobre los mismos. Entonces esto significa que un objeto puede estar disponible para lectura, escritura o cualquier otra operación. Y entonces casi todos los sistemas operativos comerciales de propósito general, como Unix, Linux o Windows NT se clasifican en este nivel.es decir dos son:
Control de acceso por dominios.
Control de acceso individualizado.
Nivel B es el Control de acceso obligatorio en este nivel, los controles de acceso no son discrecionales de los usuarios o los dueños de los recursos, que deben existir obligatoriamente. Esto significa que todo objeto controlado debe tener protección sea del tipo que sea. Es decir que son tres y son:
Etiqueta de seguridad obligatoria.
Protección estructurada.
Y el dominio de seguridad.
Nivel A es el Sistemas de seguridad certificados para acceder a este nivel, la política de seguridad y los mecanismos de protección del sistema deben ser verificados y certificados por un organismo autorizado para ello.es decir dos tipos:
Diseño verificado.
Desarrollo controlado.

   Validación y amenazas al sistema.
Amenazas a la seguridad en el acceso al sistema:
·         Intrusos.
·         Programas malignos.
Intrusos:
Piratas o hackers: individuos que acceden al sistema sin autorización.
Los sistemas presentan agujeros por donde los hackers consiguen colarse.

Técnicas de intrusión:
Averiguar contraseñas (más del 80% de las contraseñas son simples).
Probar exhaustivamente.
Descifrar archivo de contraseñas.
Intervenir líneas.
Usar caballos de Troya.

Técnicas de prevención de intrusos:
Establecer una buena estrategia de elección de contraseñas:
·         Contraseñas generadas por ordenador (difícil memorización).
·         Inspección activa (proceso periódico de averiguación).
·         Inspección proactiva (decidir si es buena en su creación).

Tipos de amenazas:
Amenazas pasivas:
·         Revelación del contenido del mensaje.
·         Análisis del tráfico:
·         En caso de que los mensajes vayan encriptados.
·         Determinar las máquinas que se comunican y la frecuencia y longitud de los mensajes.
Amenazas activas:
·         Alteración del flujo de mensajes.
·         Privación del servicio:
·         Impide el uso normal de los servicios de comunicaciones.
·         Suplantación:
·         Cuando una entidad finge ser otra diferente.
Clasificación de programas malignos:
Programas malignos que necesitan anfitrión:
·         Trampillas:
·         Bomba lógica:
·         Caballo de Troya:
Programas malignos que no necesitan anfitrión:
·         Gusanos.
·         Bacterias.
·         Virus.              

  Cifrado.
El cifrado es un método que permite aumentar la seguridad de un mensaje o de un archivo mediante la codificación del contenido, de manera que sólo pueda leerlo la persona que cuente con la clave de cifrado adecuada para descodificarlo. Por ejemplo, si realiza una compra a través de Internet, la información de la transacción (como su dirección, número de teléfono y número de tarjeta de crédito) suele cifrarse a fin de mantenerla a salvo. Use el cifrado cuando desee un alto nivel de protección de la información.
 

Sample text

Sample Text

Sample Text