Datos personales

INTEGRANTES DEL EQIPO

Cruz Angulo Juan Carlos.
Diaz Astorga Jessica.
Godinez Hernandez Diana Karen.
Mercado Pichardo Cristina,

lunes, 23 de enero de 2012

UNIDAD 7: DESEMPEÑO Y SEGURIDAD


7.1 MEDICION DEL DESEMPEÑO DE LOS SISTEMAS OPERARATIVOS

·         El software representa una porción cada vez mayor de los presupuestos informáticos.
·         El software incluye el S. O. de multiprogramación / multiproceso, sistemas de comunicaciones de datos, sistemas de administración de bases de datos, sistemas de apoyo a varias aplicaciones, etc.
·         El software frecuentemente oculta el hardware al usuario creando una máquina virtual, que está definida por las características operativas del software.
Un software deficiente y / o mal utilizado puede ser causa de un rendimiento pobre del hardware, por lo tanto es importante controlar y evaluar el rendimiento del hardware y del software

7.2 SEGURIDAD EN LOS SITEMAS OPERATIVOS

La seguridad tiene muchas facetas. Dos de las más importantes son la pérdida de datos y los intrusos. Algunas de las causas más comunes de la perdida de datos son:
1.       Actos divinos: Incendios, inundaciones, terremotos, guerras, revoluciones o ratas que roen las cintas o discos flexibles.
2.       Errores de Hardware o Software: Mal funcionamiento de la CPU, discos o cintas ilegibles, errores de telecomunicación o errores en el programa.
3.       Errores Humanos: Entrada incorrecta de datos, mal montaje de las cintas o el disco, ejecución incorrecta del programa, perdida de cintas o discos.
La mayoría de estas causas se pueden enfrentar con el mantenimiento de los respaldos adecuados; de preferencia, en un lugar alejado de los datos originales.
Si se desea diseñar un sistema seguro contra los intrusos, es importante tener en cuenta el tipo de intruso con el que se desea tener protección. Algunas de las categorías comunes son:
1.       Curiosidad casual de usuarios no técnicos
2.       Conocidos husmeando
3.       Un intento deliberado de hacer dinero
4.       Espionaje comercias o militar

7.2.1 CONSEPTOS FUNDAMENTALES DE SEGURIDAD

Archivos: Otro concepto clave que manejan todos los sistemas operativos es el sistema de archivos. Una función importante del sistema operativo consiste en ocultar las peculiaridades de los discos y otros dispositivos de entrada y salida, y presentar al programador un modelo abstracto, bueno y claro de archivos independientes de los dispositivos. Todo archivo dentro de la jerarquía de directorios puede especificarse mediante su nombre de ruta desde el tope de la jerarquía que es el directorio raíz.

Seguridad: Las computadoras contienen grandes cantidades de información que los usuarios a menudo consideran confidencial. Tal información podría incluir correo electrónico, planes de negocios, declaraciones de impuestos y muchas cosas más. Correspondientes al sistema operativo controlar la seguridad del sistema para que únicamente los usuarios autorizados puedan tener acceso a los archivos.
Además de la protección de archivos, hay muchos otros aspectos de seguridad. Proteger el sistema contra intrusos indeseables, tanto humanos como no humanos (por ejemplo, virus).

Sistema de archivos: Hay que tener un buen sistema de archivos, que controle a través del sistema operativo, el acceso a un fichero. Nada de claves independientes de fichero, por que lo único que se consigue es olvidar las claves o poner la misma en todas, con lo cual es un gran fallo.
Criptografía: Es un método más para proteger partes de ficheros, o el fichero entero. En principio no lo veo necesario a menos que se traten de datos muy importantes. Ya que se puede perder la clave y no se podrá recuperar, como se puede recuperar las de los usuarios del sistema operativo.

7.2.2 VIGILANCIA

La vigilancia tiene que ver con:
  • La verificación y la auditoria del sistema. 
  • La autentificación de los usuarios. 
Los sistemas sofisticados de autentificación de usuarios resultan muy difíciles de evitar por parte de los intrusos:
  • Un problema existente es la posibilidad de que el sistema rechace a usuarios legítimos: 
  • Un sistema de reconocimiento de voz podría rechazar a un usuario legítimo resfriado. 
  • Un sistema de huellas digitales podría rechazar a un usuario legítimo que tenga una cortadura o una quemadura.
7.2.3 PROTECCIÓN 

Mecanismo que controla el acceso de los programas o los usuarios a los recursos del sistema. El SO se encarga de:
  • Distinguir entre uso autorizado y no autorizado.
  • Especificar los controles de seguridad a realizar.
  • Forzar el uso de estos mecanismos de protección. 
7.2.4 AUDITORIA.

Un registro de auditoría es un registro permanente de acontecimientos importantes acaecidos en el sistema informático: 
  • Se realiza automáticamente cada vez que ocurre tal evento. 
  • Se almacena en un área altamente protegida del sistema. 
  • Es un mecanismo importante de detección. 
El registro de auditoría debe ser revisado cuidadosamente y con frecuencia, las cuales deben hacerse: 
Periódicamente: 
  • Se presta atención regularmente a los problemas de seguridad. 
Al azar: 
  • Se intenta atrapar a los intrusos desprevenidos.
7.2.5 CONTROLES DE ACCESO

Lo fundamental para la seguridad interna es controlar el acceso a los datos almacenados.
Los derechos de acceso definen qué acceso tienen varios sujetos o varios objetos. 
Los sujetos acceden a los objetos. 
Los objetos son entidades que contienen información. 
Los derechos de acceso más comunes son: 
  • Acceso de lectura. 
  • Acceso de escritura. 
  • Acceso de ejecución. 
7.2.6 NÚCLEOS DE SEGURIDAD 

Las medidas de seguridad más decisivas se implementan en el núcleo, que se mantiene intencionalmente lo más pequeño posible. 
Generalmente se da que aislando las funciones que deben ser aseguradas en un S. O. de propósito general a gran escala, se crea un núcleo grande. 
La seguridad del sistema depende especialmente de asegurar las funciones que realizan: 
  • El control de acceso. 
  • La entrada al sistema. 
  • La verificación. 
  • La administración del almacenamiento real, del almacenamiento virtual y del sistema de archivos 
7.2.7 SEGURIDAD POR HARDWARE Y SOFTWARE 

Desde el punto de vista de soluciones tecnológicas, una arquitectura de seguridad lógica puede conformarse (dependiendo de los niveles de seguridad) por: software antivirus, herramientas de respaldo, de monitoreo de la infraestructura de red y enlaces de telecomunicaciones, firewalls, soluciones de autentificación y servicios de seguridad en línea; que informen al usuario sobre los virus más peligrosos y, a través de Internet, enviar la vacuna a todos los nodos de la red empresarial, por mencionar un ejemplo.
Seguridad por Hardware:
  • Resultan mucho más seguras que cuando son asequibles como instrucciones de software que pueden ser modificadas. 
  • Pueden operar mucho más rápido que en el software: 
  • Mejorando la performance. 
  • Permitiendo controles más frecuentes. 
7.2.8 CRIPTOGRAFÍA 

La criptografía es el uso de la transformación de datos para hacerlos incomprensibles a todos, excepto a los usuarios a quienes están destinados. 
El problema de la intimidad trata de cómo evitar la obtención no autorizada de información de un canal de comunicaciones. 
El problema de la autentificación trata sobre cómo evitar que un oponente: 
  • Modifique una transmisión. 
  • Le introduzca datos falsos. 

7.2.9 PENETRACIÓN AL SISTEMA OPERATIVO 

La penetración definitiva puede consistir en cambiar el bit de estado de la máquina del estado problema al estado supervisor; el intruso podrá así ejecutar instrucciones privilegiadas para obtener acceso a los recursos protegidos por el S. O. 
Los estudios de penetración están diseñados para: 
  • Determinar si las defensas de un sistema contra ataques de usuarios no privilegiados son adecuadas. 
  • Descubrir deficiencias de diseño para corregirlas. 
  • El control de entrada / salida es un área favorita para intentar la penetración a un sistema, ya que los canales de entrada / salida tienen acceso al almacenamiento primario y por consiguiente pueden modificar información importante.

UNIDAD 6: ADMINISTRADOR DE ARCHIVOS

6.1 SISTEMAS DE ARCHIVOS 

Los sistemas de archivos estructuran la información guardada en una unidad de almacenamiento (normalmente un disco duro) de una computadora, que luego será representada ya sea textual o gráficamente utilizando un gestor de archivos. La mayoría de los sistemas operativos poseen su propio sistema de archivos.
Lo habitual es utilizar dispositivos de almacenamiento de datos que permiten el acceso a los datos como una cadena de bloques de un mismo tamaño, a veces llamados sectores, usualmente de 512 bytes de longitud. El software del sistema de archivos es responsable de la organización de estos sectores en archivos y directorios y mantiene un registro de qué sectores pertenecen a qué archivos y cuáles no han sido utilizados. 

6.2 JERARQUÍA DE DATOS.

En este tipo de jerarquía cada lista define un nodo que representa un nuevo nivel en la jerarquía. Los datos de la estructura definen los elementos finales de la jerarquía y los llamamos hojas.
Como sabes, los árboles son el tipo de datos típico que se usa en computación para representar estructuras jerárquicas. ¿Qué diferencia fundamental hay entre los árboles y las listas jerárquicas? En un árbol todos los nodos tienen un dato asociado, mientras que en las listas jerárquicas los datos sólo se encuentran en las hojas. Por esta razón, los árboles definidos por estas listas no son verdaderos y los llamaremos pseudo-árboles.
La utilidad principal de las listas jerárquicas es doble. Por una parte definen una estructura relativamente sencilla en la que podemos definir y probar un conjunto de funciones que después van a ser directamente adaptables a los árboles. Por otra parte, representan una estructura de datos muy flexible con la que representar gran cantidad de objetos.
En los nombres de las funciones definidas para listas jerárquicas usaremos el sufijo pt (pseudo tree) para no confundirlas con las funciones que definiremos más adelante para árboles verdaderos. Por ejemplo, la función levels-pt contará el número de niveles de un pseudo árbol o lista jerárquica, mientras que la función levels-tree contará el número de niveles de un árbol genérico.

6.3 TIPOS DE ARCHIVOS
  • Ejecutables : están creados para funcionar por si mismos 
  • No ejecutables o archivos de datos: almacenan información que tendrá que ser utilizada con ayuda de algún programa. 
La mayoría de los programas llevan otros archivos que resultan necesarios aparte del ejecutable. Estos archivos adjuntos que requieren los programas son necesarios para su buen funcionamiento, y aunque puedan tener formatos distintos no pueden ser separados de su programa original. 

6.4 INTERFAZ CON EL USUARIO 

La interfaz de usuario es el medio con que el usuario puede comunicarse con una máquina, y comprende todos los puntos de contacto entre el usuario y el equipo. Se puede distinguir básicamente tres tipos: 
  1. Una interfaz de hardware, a nivel de los dispositivos utilizados para ingresar, procesar y entregar los datos: teclado, ratón y pantalla. 
  2. Una interfaz de software, destinada a entregar información acerca de los procesos y herramientas de control, a través de lo que el usuario observa habitualmente en la pantalla. 
  3. Una interfaz de Software-Hardware, que establece un puente entre la máquina y las personas, permite a la máquina entender la instrucción y a el hombre entender el código binario traducido a información legible. 
6.4.1 EL SISTEMA DE ARCHIVO VISTO POR EL USUARIO. 

Es la forma en que una computadora: Organiza, Da nombre, Almacena y Manipula los archivos. Un Sistema de archivo visto por el usuario suele depender del sistema operativo(Windows, Unix, Ms-Dos) y del medio de almacenamiento (disco duro, disco óptico, etc.). 

6.4.3 SERVIDOR DE ARCHIVOS. 

El servidor de archivos es un tipo de servidor en una red de ordenadores cuya función es permitir el acceso remoto a archivos almacenados en el directamente accesible por este. 
Proporciona una ubicación central en el red en la que puede almacenar y compartir los archivos con usuarios de la red. Cuando los usuarios necesiten un archivo importante podrán tener acceso al archivo del servidor en lugar de tener que pasarlo por distintos equipos 

6.4.4 SEGURIDAD EN LOS ARCHIVOS. 

Es fundamental hacer una copia de seguridad de los archivos pero existen varias posibilidades para evitar accidentes o pérdida de información.
  • Evitar golpear la unidad 
  • Tener una buena ventilación del equipo 
  • Evitar la cercanía de campos magnéticos de alta intensidad 
  • Organización de los datos contenidos 
  • Y por supuesto un mantenimiento constante
6.4.5 MECANISMOS DE PROTECCIÓN
  • Físicas: Controlar el acceso al equipo. 
  • Personal: Acceso sólo del personal autorizado 
  • Identificar y autorizar a los usuarios: uso de códigos de acceso 
  • Diferentes tipos de cuentas: creación de cuentas, asignación de los niveles de seguridad. 
  • Manejo de la tabla de usuarios con código y contraseña, control de las operaciones efectuadas en cada sesión de trabajo por cada usuario y anotadas en la bitácora. 
6.4.6 IMPLEMENTACIÓN.

Un sistema de archivos podría implantarse como parte de un sistema operativo distribuido haciendo el papel de una capa de software cuya tarea es administrar la comunicación entre los sistemas operativos y los sistemas de archivos convencionales 

6.5 LLAMADAS AL SISTEMA (SYSTEMCALLS). 

Son las llamadas que ejecutan los programas de aplicación para pedir algún servicio al SO. 
Cada SO implementa un conjunto propio de llamadas al sistema. Este conjunto de llamadas es la interfaz del SO frente a las aplicaciones. 
Constituyen el lenguaje que deben usar las aplicaciones para comunicarse con el SO. Las llamadas correspondientes deben tener el mismo formato.

UNIDAD 5: ADMINISTRACIÓN DE DISPOSITIVOS E/S

5.1 PRINCIPIOS DE HARDWARE DE I/O

La programación de muchos dispositivos de e/s a menudo esta íntimamente ligada con sus funcionamiento interno. En las tres sesiones que siguen presentaremos antecedentes del hardware de e/s y pueden tener relación con su programa.

5.1.1 DISPOSITIVOS DE I/O 
Se refiere a ejecutar una operación de entrada o de salida. Los dispositivos de E/S (entrada/salida) o en ingles I/O(input/output) los usa una persona u otro sistema para comunicarse con una computadora. 
  • Dispositivos de Entrada:
Son aquellos que sirven para introducir datos a la computadora para su proceso. Los datos se leen de los dispositivos de entrada y se almacenan en la memoria central o interna. Los dispositivos de entrada convierten la información en señales eléctricas que se almacenan en la memoria central.
Los dispositivos de entrada típicos son los teclados, otros son: lápices ópticos, palancas de mando (joystick), CD-ROM, discos compactos (CD), etc. Hoy en día es muy frecuente que el usuario utilice un dispositivo de entrada llamado ratón que mueve un puntero electrónico sobre una pantalla que facilita la interacción usuario-máquina.

  • Dispositivos de Salida
Son los que permiten representar los resultados (salida) del proceso de datos. El dispositivo de salida típico es la pantalla o monitor. Otros dispositivos de salida son: impresoras (imprimen resultados en papel), trazadores gráficos (plotters), bocinas, entre otros.

5.1.2 CONTROLADORES DE DISPOSITIVOS

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.

5.2 PRINCIPIOS DE SOFTWARE DE I/O 

Los principios de software en la entrada/salida se resumen en cuatro puntos: el software debe ofrecer manejadores de interrupciones, manejadores de dispositivos, software que sea independiente de los dispositivos y software para usuarios.
  • Manejadores de Interrupciones.
El primer objetivo referente a los manejadores de interrupciones consiste en que el programador o el usuario no debe darse cuenta de los manejos de bajo nivel para los casos en que el dispositivo está ocupado y se debe suspender el proceso o sincronizar algunas tareas. Desde el punto de vista del proceso o usuario, el sistema simplemente se tardó más o menos en responder a su petición.
  • Manejadores de Dispositivos.
El sistema debe proveer los manejadores de dispositivos necesarios para los periféricos, así como ocultar las peculiaridades del manejo interno de cada uno de ellos, tales como el formato de la información, los medios mecánicos, los niveles de voltaje y otros. Por ejemplo, si el sistema tiene varios tipos diferentes de discos duros, para el usuario o programador las diferencias técnicas entre ellos no le deben importar, y los manejadores le deben ofrecer el mismo conjunto de rutinas para leer y escribir datos. 
  • Software que sea independiente de los dispositivos.
Este es un nivel superior de independencia que el ofrecido por los manejadores de dispositivos. Aquí el sistema operativo debe ser capaz, en lo más posible, de ofrecer un conjunto de utilerías para accesar periféricos o programarlos de una manera consistente. Por ejemplo, que para todos los dispositivos orientados a bloques se tenga una llamada para decidir si se desea usar 'buffers' o no, o para posicionarse en ellos. 
  • Software para Usuarios.
La mayoría de las rutinas de entrada - salida trabajan en modo privilegiado, o son llamadas al sistema que se ligan a los programas del usuario formando parte de sus aplicaciones y que no le dejan ninguna flexibilidad al usuario en cuanto a la apariencia de los datos. Existen otras librerías en donde el usuario si tiene poder de decisión (por ejemplo la llamada a "printf" en el lenguaje"C"). Otra facilidad ofrecida son las áreas de trabajos encolados (spooling areas), tales como las de impresión y correo electrónico.

5.2.1 OBJETIVOS DEL SOFTWARE DE I/O 

Un concepto clave es la independencia del dispositivo: 
  • Debe ser posible escribir programas que se puedan utilizar con archivos en distintos dispositivos, sin tener que modificar los programas para cada tipo de dispositivo. 
  • El problema debe ser resuelto por el S. O. 
El objetivo de lograr nombres uniformes está muy relacionado con el de independencia del dispositivo. 
Todos los archivos y dispositivos adquieren direcciones de la misma forma, es decir mediante el nombre de su ruta de acceso. 
Otro aspecto importante del software es el manejo de errores de e/s: 
  • Generalmente los errores deben manejarse lo más cerca posible del hardware. 
  • Solo si los niveles inferiores no pueden resolver el problema, se informa a los niveles superiores. 
  • Generalmente la recuperación se puede hacer en un nivel inferior y de forma transparente. 
Otro aspecto clave son las transferencias por bloques o controlada por interruptores:
  • La mayoría de la e/s es asíncrona: la CPU inicia la transferencia y realiza otras tareas hasta una interrupción. 
  • La programación es más fácil si la e/s es síncrona (por bloques): el programa se suspende automáticamente hasta que los datos estén disponibles en el buffer. 
El S. O. se encarga de hacer que operaciones controladas por interruptores parezcan del tipo de bloques para el usuario. 
También el S. O. debe administrar los dispositivos compartidos (ej.: discos) y los de uso exclusivo (ej.: impresoras). 
Generalmente el software de e/s se estructura en capas:
  • Manejadores de interrupciones. 
  • Directivas de dispositivos. 
  • Software de S. O. independiente de los dispositivos. 
  • Software a nivel usuario. 
Los objetivos más importantes del software de E/S son:
  • Ocultar la complejidad del hardware a los procesos que se ejecutan por encima del sistema operativo.
  • Presentar una interfaz de E/S sencilla.
Para conseguir estos objetivos se estructura el software de E/S en capas, de forma que las capas inferiores ocultan la complejidad del hardware a las capas superiores y éstos se encargan de conseguir una interfaz sencilla.


5.2.2 MANEJADORES DE INTERRUPCIONES 

Un manejador de interrupciones, también conocido como ISR (interrupt service routine o rutina de servicio de interrupción), es una subrutina callback en un sistema operativo o en un controlador de dispositivo cuya ejecución es desencadenada por la recepción de una interrupción. Los manejadores de instrucciones tienen una multitud de funciones, que varían basadas en el motivo por el cual la interrupción fue generada y la velocidad en la cual el manejador de interrupciones completa su tarea.Estos manejadores pueden ser iniciados por interrupciones de hardware o de software, y son usados para servir a los dispositivos de hardware y transiciones entre modos protegidos de operación como los llamados de sistema

INTERRUPCIONES
  • El periférico lleva la iniciativa.
  • Una interrupción de E/S es asíncrona con respecto a la ejecución de las instrucciones.
  • No esta asociada a ninguna instrucción.
  • El periférico estará conectado a una línea de interrupciones del procesador.
  • Se necesita especificar el identificador del periférico que realizara la interrupción.
  • Es habitual que haya interrupciones más urgentes que otras, por lo que se requiere algún sistema de prioridades.
  • Se requiere hardware especial (causar y detectar interrupción).
PROCESO DE INTERRUPCIÓN
  • Activación, por parte del periférico, de la línea de interrupción.
  • Suspensión de la ejecución del programa en curso:
  • Termina la instrucción en curso.
  • Almacenamiento del estado del procesador.
  • Identificación de la fuente de la interrupción.
  • Carga y ejecución de la rutina de interrupción.
  • Recuperación del estado anterior a la interrupción.
  • Reanulación de la ejecución del programa interrumpido.
5.2.3 MANEJADOR 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 está 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, por lo cual 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 está colocado en el cilindro adecuado, etc.
  • Resumiendo: debe decidir cuáles 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.
  • Regresa información de estado sobre los errores a quien lo llamó.
  • Inicia otra solicitud pendiente o queda en espera.
5.2.4 SOFTWARE DE I/O INDEPENDIENTE DE DISPOSITIVOS 

Aunque una parte del software de E/S es específica para los dispositivos concretos existentes en el sistema, otras partes son independientes del dispositivo. 
La frontera exacta entre los drivers y el software independiente del dispositivo depende del sistema (y del dispositivo), porque algunas funciones que podrían realizarse con independencia del dispositivo en realidad se llevan a cabo en los drivers por cuestiones de eficiencia u otras razones.

5.2.5 ESPACIO DEL USUARIO PARA SOFTWARE DE IO 

A aunque la mayor parte del software de e/s esta dentro del S.O, una pequeña parte de el consiste en bibliotecas enlazadas a los programas de usuario, e incluso a los completos que se ejecutan fuera del kernel. Las llamadas as sistema, entre ellas las e/s , normalmente son efectuadas por procedimientos de bibliotecas. Cuando un programa en contiene la llamada 
Count=write (fd,buffer,nbytes)
El procedimiento de biblioteca write se enlazara a programa y estará contenido en el programa binario presente en la memoria en el momento de la ejecución. La colección de todos estaos procedimientos de biblioteca evidentemente forma parte del sistema de e/s.

5.3 DISCOS RAM 

Un disco RAM o unidad RAM es una unidad de disco que usa una zona de memoria RAM del sistema como almacenamiento secundario en lugar de un medio magnético (como los discos duros y las disqueteras) o memoria flash, implementada como un controlador de dispositivo más. El tiempo de acceso mejora drásticamente, debido a que la memoria RAM es varios órdenes de magnitud más rápida que las unidades de disco reales. Sin embargo, la volatilidad de la memoria RAM implica que los datos almacenados en un disco RAM se perderán si falla la alimentación (por ejemplo, cuando el ordenador se apaga). Los discos RAM suelen usarse para almacenar datos temporales o para guardar programas descomprimidos durante cortos periodos. 
Los discos RAM fueron populares como unidades de arranque en los años 1980, cuando los discos duros eran caros y las disqueteras demasiado lentas, por lo que unos pocos sistemas, soportaban arrancar desde un disco RAM. A cambio de dedicar un poco de memoria principal, el sistema podía realizar un reinicio en caliente y volver al sistema operativo en pocos segundos en lugar de minutos. Algunos sistemas contaban con discos RAM alimentados por baterías, de forma que sus contenidos no se perdían cuando el sistema se apagaban. 
La adecuada implementación de un caché de disco suele obviar las motivaciones relacionadas con el rendimiento que impulsan a usar un disco RAM, adoptando un papel parecido (acceso rápido a los datos que en realidad residen en un disco) sin sus varias desventajas (pérdida de datos en caso de apagado, particionado estático, etcétera). Los discos RAM son, sin embargo, indispensables en situaciones en las que un disco físico no está disponible o en las que el acceso o cambios a éste no es deseable. También pueden usarse en dispositivos de tipo quiosco, en los que los cambios hechos al sistema no se guardan en el disco físico y la configuración original del sistema se carga de éste cada vez que el sistema es reiniciado. 
Otra forma de usar memoria RAM para almacenar ficheros es el sistema de ficheros temporal. La diferencia entre éste y un disco RAM es que el segundo es de tamaño fijo y funciona como una partición más, mientras el sistema de ficheros temporal cambia su tamaño bajo demanda para ajustarse al espacio necesario para albergar los ficheros guardados en él.

5.4 DISCOS DUROS 

El disco duro es un dispositivo de almacenamiento no volátil, es decir conserva la información que le ha sido almacenada de forma correcta aun con la perdida de energía, emplea un sistema de grabación magnética digital, es donde en la mayoría de los casos se encuentra almacenado el sistema operativo de la computadora. En este tipo de disco se encuentra dentro de la carcasa una serie de platos metálicos apilados girando a gran velocidad. Sobre estos platos se sitúan los cabezales encargados de leer o escribir los impulsos magnéticos. Hay distintos estándares a la hora de comunicar un disco duro con la computadora. Existen distintos tipos de interfaces las más comunes son: Integrated Drive Electronics (IDE, también llamado ATA) , SCSI generalmente usado en servidores, SATA, este último estandarizado en el año 2004 y FC exclusivo para servidores.

5.4.1 HARDWARE DE DISCOS 

Un disco duro se compone de muchos elementos; citaremos los más importantes de cara a entender su funcionamiento. En primer lugar, la información se almacena en unos finos platos o discos, generalmente de aluminio, recubiertos por un material sensible a alteraciones magnéticas. Estos discos, cuyo número varía según la capacidad de la unidad, se encuentran agrupados uno sobre otro y atravesados por un eje, y giran continuamente a gran velocidad.
Asimismo, cada disco posee dos diminutos cabezales de lectura/escritura, uno en cada cara. Estos cabezales se encuentran flotando sobre la superficie del disco sin llegar a tocarlo, a una distancia de unas 3 o 4 micropulgadas (a título de curiosidad, podemos comentar que el diámetro de un cabello humano es de unas 4.000 micropulgadas). Estos cabezales generan señales eléctricas que alteran los campos magnéticos del disco, dando forma a la información. (Dependiendo de la dirección hacia donde estén orientadas las partículas, valdrán 0 o valdrán 1).
La distancia entre el cabezal y el plato del disco también determinan la densidad de almacenamiento del mismo, ya que cuanto más cerca estén el uno del otro, más pequeño es el punto magnético y más información podrá albergar. 

5.5 RELOJES 

Una computadora personal tiene un reloj de hardware alimentado por una batería. Esa batería asegura que el reloj continúe trabajando aún cuando la computadora se encuentre sin suministro eléctrico. El reloj de hardware puede ser modificado (o definido) desde la pantalla de configuración de la BIOS o desde cualquier sistema operativo.

5.5.1 HARDWARE DEL RELOJ

El reloj del kernel siempre muestra la hora universal, por lo que no necesita conocer como utilizar usos horarios. La simplicidad de este modo de trabajar proporciona alta confiabilidad y facilita actualizar la información de la zona horaria. Cada proceso realiza las conversiones de zona horaria de manera independiente (utilizando herramientas estándar que son parte del paquete de zona horaria). 
El reloj de hardware puede estar en formato de hora local u hora universal. Usualmente es mejor que el reloj de hardware mantenga la hora universal, porque de esta manera no será necesario modificar la hora del reloj cuando el "horario de verano" (daylight savings time) empiece o finalice (UTC no tiene DST). Desafortunadamente, algunos sistemas operativos de PC (incluyendo a MS-DOS, Windows y OS/2) asumen que el reloj de hardware muestra la hora local. Linux puede manejar cualquiera de los dos formatos, pero si el reloj de hardware muestra la hora local, entonces debe modificarlo cada vez que el "horario de verano" empiece o finalice.

5.5.2 SOFTWARE RELOJ 

El kernel Linux mantiene la fecha y hora de manera independiente al reloj de hardware. Durante el inicio de un sistema Linux, el kernel configura su propio reloj de software accediendo a la fecha y hora mantenida por el reloj de hardware. Luego, ambos relojes trabajan independientemente. Linux mantiene su propio reloj debido a que leer el reloj de hardware constantemente es lento y complicado.

5.5.3 MANEJADOR DEL RELOJ 

Las principales funciones del software manejador del reloj son: 
  • Mantener la hora del día o tiempo real 
  • Evitar que los procesos se ejecuten durante mas tiempo del permitido 
  • Mantener un registro del uso de la CPU 
  • Controlar llamadas al sistema tipo “alarm” por parte de los procesos del usuario 
  • Proporcionar cronómetros guardianes de partes del propio sistema 
  • Realizar resúmenes, monitoreo y recolección de estadísticas 
El software manejador del reloj puede tener que simular varios relojes virtuales con un único reloj físico.

5.6 TERMINALES 

Dispositivo del hardware electrónico o electromecánico que se usa para introducir o mostrar datos de una computadora. Su función es mostrar y recibir datos con capacidad significativa del procesador de datos, puede ser llamado “Terminal inteligente o cliente ligero”. 
Una computadora puede ejecutar software que envié la funcion de un terminal en cocaciones permitiendo el uso simultaneo de programas locales y acceso a un servidor. 

5.6.1 HARDWARE DE TERMINALES 

  • Un terminal IP suele ser un dispositivo hardware con forma de teléfono, aunque con la diferencia de que utiliza una conexión de red de datos, en lugar de una conexión de red telefónica. 
  • Suelen tener más opciones y ventajas que un teléfono convencional. Al ser un sistema completamente digital y programable, suelen tener teclas especiales perfectamente configurables mediante un sistema de administración que puede ser accedido mediante web o mediante telnet.
  • Algunos incluyen cámara de vídeo para poder realizar videoconferencias. 
  • Disponen de una dirección IP a la que poder acceder y mediante la que se puede configurar como si fuese un ordenador más. Por lo que, al considerarse un sistema más dentro de la red, suelen aplicárselas las características típicas de grandes redes: QoS o VLAN.
  • Hardware o Software 
  • Un terminal IP suele ser un dispositivo físico (similar al un teléfono normal), aunque también puede ser una aplicación que funciona en un sistema y que interactúa junto con micrófonos y auriculares/altavoz. 
  • Los terminales IP hardware evitan el choque de realizar una llamada de teléfono a través de otro dispositivo distinto a un teléfono normal. 
  • Los terminales IP software permiten reducir costes, a la vez que cuenta con la ventaja espacial de no tener un aparato más en la mesa.
5.6.2 MANEJADORES

Manejadores de interrupciones.
El primer objetivo referente a los manejadores de interrupciones consiste en que el programador o el usuario no debe darse cuenta de los manejos de bajo nivel para los casos en que el dispositivo está ocupado y se debe suspender el proceso o sincronizar algunas tareas. Desde el punto de vista del proceso o usuario, el sistema simplemente se tardó más o menos en responder a su petición.

Manejadores de dispositivos.
El sistema debe proveer los manejadores de dispositivos necesarios para los periféricos, así como ocultar las peculiaridades del manejo interno de cada uno de ellos, tales como el formato de la información, los medios mecánicos, los niveles de voltaje y otros. Por ejemplo, si el sistema tiene varios tipos diferentes de discos duros, para el usuario o programador las diferencias técnicas entre ellos no le deben importar, y los manejadores le deben ofrecer el mismo conjunto de rutinas para leer y escribir datos.

UNIDAD 4: ADMINISTRACIÓN DE LA MEMORIA


4.1 GESTIÓN DE MEMORIA

La memoria es uno de los principales recursos de la computadora, la cual debe de administrarse con mucho cuidado. Aunque actualmente la mayoría de los sistemas de computo cuentan con una alta capacidad de memoria, de igual manera las aplicaciones actuales tienen también altos requerimientos de memoria, lo que sigue generando escasez de memoria en los sistemas multitarea y/o multiusuario.
La parte del sistema operativo que administra la memoria se llama administrador de memoria y su labor consiste en llevar un registro de las partes de memoria que se estén utilizando y aquellas que no, con el fin de asignar espacio en memoria a los procesos cuando éstos la necesiten y liberándola cuanto terminen, así como administrar el intercambio entre la memoria principal y el disco en los casos en los que la memoria principal no le puedan dar capacidad a todos los procesos que tienen necesidad de ella.
Los sistemas de administración de memoria se pueden clasificar en dos tipo: Los que desplazan los procesos de la memoria al disco y viceversa durante la ejecución y los que no.

4.1.1 ORGANIZACIÓN DE LA MEMORIA.

En primer lugar tenemos que distinguir claramente entre tres tipos de memoria:
Una: la memoria EEPROM donde almacenaremos el programa que haremos, esta memoria solo podrá ser leída por el pic (el pic va leyendo las instrucciones del programa almacenado en esta memoria y las va ejecutando). Al apagar el pic esta memoria no se borra. Dos: la memoria RAM en cuyos registros se irán almacenando los valores de las variables que nosotros queramos y cuando nosotros queramos (por programa), al apagar el pic esta memoria se borra. Tres: la memoria EEPROM para datos, es un espacio de memoria EEPROM en la que se pueden guardar variables que queremos conservar aunque se apague el pic. No se tratará aquí por ser una memoria más difícil de emplear.

4.1.2 ADMINISTRADOR DE LA MEMORIA

Se refiere a los distintos métodos y operaciones que se encargan de obtener la máxima utilidad de memoria, organizando los procesos y programas que se ejecutan de manera tal que se aproveche de la mejor manera posible.
Para poder lograrlo, la operación principal que realiza es la de trasladar la información que deberá ser ejecutada por el procesador, a la memoria principal. Actualmente esta administración se conoce como  Memoria Virtual ya que no es la memoria física del procesador si no una memoria virtual que la representa.
Entre algunas ventajas, esta memoria permite que el sistema cuente con una memoria mas extensa teniendo la misma memoria real, con lo que esta se puede utilizar de manera más eficiente para que los programas que son utilizados no ocupen lugar innecesario.

4.1.3 JERARQUÍA DE LA MEMORIA

Se conoce como jerarquía de memoria a la organización piramidal de la memoria en niveles, que tienen los ordenadores. Su objetivo es conseguir el rendimiento de una memoria de gran velocidad al coste de una memoria de baja velocidad, basándose en el principio de cercanía de referencias.
Los puntos básicos relacionados con la memoria pueden resumirse en:
·         Cantidad
·         Velocidad
·         Coste
Como puede esperarse los tres factores compiten entre sí, por lo que hay que encontrar un equilibrio. Las siguientes afirmaciones son válidas:
·         A menor tiempo de acceso mayor coste
·         A mayor capacidad menor coste
·         A mayor capacidad menor velocidad.


4.1.4 ESTRATEGIAS PARA ADMINISTRACIÓN DE MEMORIA

La memoria principal es el lugar donde el CPU lee las instrucciones a ejecutar, así como algunos datos a emplear.
Una de las funciones básicas que debe implementar un SO es la Administración de la Memoria para tener un control sobre los lugares donde están almacenados los procesos y datos que actualmente se están utilizando.
Mecanismos De Asignación: Un mecanismo de asignación determina la cantidad de bloques (particiones) que serán administrados en la memoria.
Existen 3 mecanismos de Asignación:

1.       Asignación De Una Partición: En la memoria se considera la existencia de una sola partición, esto es, se tiene la capacidad de ejecutar un proceso. La partición es toda la memoria, cuya administración corre por cuenta del usuario, o sea, no hay un sistema operativo.
2.       Asignación De Dos Particiones: La memoria se divide en 2 bloques. En una partición se carga el Sistema Operativo y en la otra el programa del usuario. Es el concepto de Sistema Operativo Monousuario.
3.       Asignación De Multiples Particiones: La memoria es dividida en varias particiones una para el Sistema Operativo y las demás para los procesos de usuarios u otras funciones especiales del Sistema Operativo. Este es el concepto teórico de asignación de memoria en los Sistemas Operativos de Multiparticiones y de Multitarea.


4.1.5 MULTIPROGRAMACIÓN CON PARTICIONES FIJAS Y VARIABLES
  • Multiprogramación con particiones fijas:
Para poder implementar la multiprogramación, se puede hacer uso de particiones fijas o variables en la memoria. En el caso de las particiones fijas, la memoria se puede organizar dividiéndose en diversas partes, las cuales pueden variar en tamaño. Esta partición la puede hacer el usuario en forma manual, al iniciar una sesión con la máquina. 
La primera es mediante el uso de una cola única que asigna los procesos a los espacios disponibles de la memoria conforme se vayan desocupando. El tamaño del hueco de memoria disponible es usado para localizar en la cola el primer proceso que quepa en él.
  • Multiprogramación con particiones variables.
Este esquema fue originalmente usado por el sistema operativo IBM OS/360 (llamado MFT), el cual ya no está en uso. El sistema operativo lleva una tabla indicando cuáles partes de la memoria están disponibles y cuáles están ocupadas. Inicialmente, toda la memoria está disponible para los procesos de usuario y es considerado como un gran bloque o hueco único de memoria. Cuando llega un proceso que necesita memoria, buscamos un hueco lo suficientemente grande para el proceso. Si encontramos uno, se asigna únicamente el espacio requerido, manteniendo el resto disponible para futuros procesos que requieran de espacio. Cuando a un proceso se le asigna un espacio y es cargado a la memoria principal, puede entonces competir para el uso del CPU.

4.2 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 información contenida en ella es de más rápido acceso. Solo la memoria cache es más rápida que la principal, pero su costo es a su vez mayor.

4.2.1 ADMINISTRACIÓN DE MEMORIA CON MAPA DE BITS

Este tipo de administración divide la memoria en unidades de asignación, las cuales pueden ser tan pequeñas como unas cuantas palabras o tan grandes como varios kilobytes. A cada unidad de asignación le corresponde un bit en el mapa de bits, el cual toma el valor de 0 si la unidad está libre y 1 si está ocupada (o viceversa). Un mapa de bits es una forma sencilla para llevar un registro de las palabras de la memoria en una cantidad fija de memoria, puesto que el tamaño del mapa sólo depende del tamaño de la memoria y el tamaño de la unidad de asignación.

4.2.2 ADMINISTRACIÓN DE MEMORIA CON LISTAS ENLAZADAS

Mantiene una lista enlazada de segmentos de memoria asignados y libres, donde un segmento es un proceso o un hueco entre dos procesos.
·         Si la lista se ordena por dirección es más fácil su actualización.
·         Si hay dos listas, una para memoria usada y otra para huecos, la asignación es más rápida, pero la liberación es más lenta
·         Ocurre lo mismo para asignar hueco de intercambio

4.2.3 DISTRIBUCIÓN DEL ESPACIO PARA INTERCAMBIO

En algunos sistemas, cuando un proceso esta en la memoria, no se le puede asignar espacio en disco. Cuando deba intercambiarse, puede colocarse en alguna otra parte del disco. Los algoritmos para administrar el espacio de intercambio son los mismos que se emplean para administrar la memoria principal.
En otros sistemas, cuando se crea un proceso, el espacio para intercambio se asigna para el en disco. Cada ves que el proceso se intercambia, siempre se cambia a su espacio asignado, en lugar de dirigirse a un lugar diferente en cada ocasión. Cuando el proceso sale, se desasigna el espacio para el intercambio.
La única diferencia es que el espacio en el disco para un proceso debe asignarse como un número integral de bloques de disco. Por lo tanto, un proceso de tamaño 13.5 k que utiliza un disco con bloques de 1k se redondeara a 14k antes de que se busquen las estructuras de datos del espacio en el disco.

4.3 MEMORIA VIRTUAL

Es aquella que permite al software usar más memoria principal que la que realmente posee el ordenador. La mayoría de los ordenadores tienen cuatro tipos de memoria: registros en la CPU, la memoria cache (tanto dentro como fuera del CPU), la memoria física (generalmente en forma de RAM, donde la CPU puede escribir y leer directa y razonablemente rápido) y el disco duro que es mucho más lento, pero también más grande y barato. 
La memoria virtual podría estar implementada por el software del sistema operativo, en la práctica casi siempre se usa una combinación de hardware y software, dado el esfuerzo extra que implicaría para el procesador. 
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. 

4.3.1 PAGINACIÓN MEMORIA VIRTUAL

Cuando la paginación se utiliza junto con memoria virtual, el sistema operativo mantiene además el conocimiento sobre qué páginas están en memoria principal y cuáles no, usando la tabla de paginación. Si una página buscada está marcada como no disponible (tal vez porque no está presente en la memoria física, pero sí en el área de intercambio), cuando la CPU intenta referenciar una dirección de memoria en esa página, la MMU responde levantando una excepción (comúnmente llamada fallo de página). Si la página se encuentra en el área de intercambio, se salta a una rutina que invoca una operación llamada un intercambio de página, para traer a memoria principal la página requerida. La operación lleva varios pasos. Primero se selecciona una página en memoria, por ejemplo una que no haya sido usada recientemente (para más detalles ver algoritmos de remplazo de páginas). Si la página fue modificada, se escribe la misma en el espacio de intercambio. El siguiente paso en el proceso es leer la información en la página necesitada desde el espacio de intercambio). Cuando esto sucede, las tablas para traducción de direcciones virtuales a reales son actualizadas para reflejar los contenidos de la memoria física. Entonces el intercambio de página sale, y el programa que usó la dirección que causó la excepción es vuelto a ejecutar desde el punto en que se dio la misma y continúa como si nada hubiera pasado. También es posible que: una dirección virtual es marcada como no disponible, porque no fue localizada previamente. En estos casos, una página de memoria es localizada y llenada con ceros, la tabla de paginación es modificada para mostrar los cambios y el programa se reinicia como en el otro caso. 

4.3.2 SEGMENTACIÓN MEMORIA VIRTUAL

Es un esquema de manejo de memoria mediante el cual la estructura del programa refleja su división lógica; llevándose a cabo una agrupación lógica de la información en bloques de tamaño variable denominados segmentos. Cada uno de ellos tienen información lógica del programa: subrutina, arreglo, etc. Luego, cada espacio de direcciones de programa consiste de una colección de segmentos, que generalmente reflejan la división lógica del programa. La segmentación permite alcanzar los siguientes objetivos:
  1. Modularidad de programas: cada rutina del programa puede ser un bloque sujeto a cambios y recopilaciones, sin afectar por ello al resto del programa.
  2. Estructuras de datos de largo variable: eje. Stack, donde cada estructura tiene su propio tamaño y este puede variar.
  3. Protección: se puede proteger los módulos del segmento contra accesos no autorizados.
  4. Comparación: dos o más procesos pueden ser un mismo segmento, bajo reglas de protección; aunque no sean propietarios de los mismos.
  5. Enlace dinámico entre segmentos: puede evitarse realizar todo el proceso de enlace antes de comenzar a ejecutar un programa. Los enlaces se establecerán solo cuando sea necesario.
4.3.3 ALGORITMOS DE SUSTITUCIÓN DE PÁGINAS.

Cuando ocurre una falla de página, el sistema operativo tiene que escoger la página que sacará de la memoria para que pueda entrar la nueva página. Si la página que se eliminará fue modificada mientras estaba en la memoria, se debe rescribir en el disco a fin de actualizar la copia del disco, pero si no fue así, la copia en disco ya estará actualizada y no será necesario reescribirla. La nueva página simplemente sobrescribe la que está siendo desalojada. 
Algoritmo de remplazo de páginas óptimo: Solo dicen que se debe eliminar la página que tenga el rótulo más alto. Si una página no se va a usar sino hasta después de 8 millones de instrucciones y otra página no se usará sino hasta después de 6 millones de instrucciones, el desalojo de la primera postergará la falla de página que la traerá de nuevo a la memoria lo más lejos hacia el futuro que es posible. 

4.3.4 ASPECTOS DE DISEÑO PARA EL SISTEMA

·         El modelo de conjunto de trabajo
En la forma más pura de paginación, los procesos se inician con ninguna de sus páginas en la memoria. Tan pronto como la CPU trata de obtener la primera instrucción, detecta una falla página que hace que el sistema operativo traiga a la memoria la página que contiene dicha instrucción. Por lo regular, pronto ocurren otras fallas de página al necesitarse variables globales y la pila. Después de un tiempo, el proceso tiene la mayor parte de las páginas que necesita y se dedica a ejecutarse con relativamente pocas fallas de página. Tal estrategia se denomina paginación por demanda porque las páginas se cargan sólo cuando se piden, no por adelantado.
·         Tamaño de página
En muchos casos, el tamaño de página es un parámetro que el sistema operativo puede escoger. Incluso si el hardware se diseñó con páginas de, por ejemplo, 512 bytes, el sistema operativo fácilmente puede considerar las páginas O y l, 2 y 3, 4 y 5,etc., como páginas de 1K asignando siempre dos marcos de página de 512 bytes consecutivos a ellas. La determinación del tamaño de página óptimo requiere balancear varios factores opuestos.

4.3.5 LIBERACIÓN DE PÁGINAS 

Un proceso usuario puede emitir una “liberación voluntaria de página” para liberar el marco de página cuando ya no necesitara esa página.
Se puede eliminar el “desperdicio” y acelerar la ejecución.
El inconveniente es que la incorporación de mandatos de liberación de páginas dentro de los programas de usuarios puede ser peligrosa y retrasar el desarrollo de aplicaciones.





miércoles, 30 de noviembre de 2011

Unidad 3


DESCRIPCIÓN Y CONTROL DE PROCESOS

Proceso
Un proceso es un programa en ejecución la ejecución de un proceso debe proceder de manera secuencial.

Estados de los procesos
A medida que un proceso s ejecuta cambia de estado.
El estado de un proceso esta definido en parte por la actividad actual  del proceso, el cual puede encontrarse en los siguientes estados.
1.- Nuevo: el proceso se esta creando
2.- En ejecución: se están ejecutando instrucciones
3.- Listo: Proceso que esta preparado para ejecutarse en cuanto se pueda
4.- Bloqueado: Proceso que no se puede ejecutar hasta que se produzca cierto suceso como la terminación de e/s.
5.- Terminado: Proceso que ha sido  excluido por el sistema del grupo e procesos ejecutables, bien porque se detuvo o fue abandonado.

Control de Procesos
Los requisitos que debe satisfacer un sistema operativo están expresados haciendo referencia a los procesos.
·         El S.O. debe asignar los recursos a los procesos conforme a una política específica, por ejemplo en ciertas funciones o aplicaciones que son de mayor prioridad.
·         El S.O. dará soporte a la comunicación entre procesos por parte del usuario, labores que pueden ayudar en la estructuración de las aplicaciones.

Modos de ejecución
Se asocian con el sistema operativo y los programas del usuario, la mayoría de los procesadores soportan al menos dos modos de ejecución. Se usan dos modos porque es necesario proteger al sistema y a las tablas importantes del mismo como los bloques de control de procesos de las injerencias de los programas
·         
      Modo sistema (o modo privilegiado)
El cual tiene ciertas instrucciones que solo se ejecutan de esta forma
·         
      Modo Usuario
Los programas de usuario se ejecutan normalmente de este modo

      Hilos
Es una pequeña unidad de procesamiento que rescata a un proceso antes ejecutado, guarda la llamada a dicho proceso para ser ejecutado más rápidamente en caso de ser requerido, característica que permite a una aplicación realizar varias tareas a la vez (concurrentemente).
Los hilos comparten una serie de recursos tales como el espacio de memoria, los archivos abiertos, situación de autenticación, etc.
Un hilo es básicamente una tarea que puede ser ejecutada en paralelo con otra tarea.

Principios generales de la Concurrencia
Comprende multiples cuestiones en cuanto al diseño de un sistema operativo, como son la comunicación entre procesos, compartición y competencia por los recursos, sincronización de la ejecución de varios procesos y asignación del tiempo de procesador a los procesos.  Dichas cuestiones no solo surgen en entornos de multiprocesadores, sino en sistemas multiprogramados con un solo procesador; los procesos se intercalan en el tiempo aparentando una ejecución simultánea lo que produce beneficios en la eficiencia del procesamiento y en la estructuración de los programas a lo cual le podemos llamar concurrencia.
Los problemas surgen a consecuencia de la velocidad de ejecución de los procesos que no pueden predecirse y depende de las actividades de otros procesos.


Concurrencia
Es la propiedad de los sistemas que permiten que múltiples procesos sean ejecutados al mismo tiempo, y que potencialmente puedan interactuar entre si
La concurrencia puede presentarse en tres contextos diferentes:
 Múltiples aplicaciones: multiprogramación.
 Aplicaciones estructuradas: algunas aplicaciones pueden implementarse como un conjunto de procesos concurrentes.
 Estructura del sistema operativo

Exclusión Mutua
consiste en que un solo proceso excluye temporalmente a todos los demás para usar un recurso compartido de forma que garantice la integridad del sistema.

Sección critica.
Es la parte del programa con un comienzo y un final claramente marcados que generalmente contiene la actualización de una mas variables compartidas. Para que una solución al problema de la exclusión mutua sea válida, se tienen que cumplir una serie de condiciones:
  • Hay que garantizar la exclusión mutua entre los diferentes procesos a la hora de acceder al recurso compartido. No puede haber en nungún momento dos procesos dentro de sus respectivas secciones criticas.
  • No se deben hacer suposiciones en cuanto a la velocidad relativa de los procesos en conflicto.
  • Ningún proceso que esté fuera de sus sección critica debe interrumpir a otros para el acceso a la sección critica.
  • Cuanto mas de un proceso desee entrar en su sección critica, se le debe conceder la entrada en un tiempo finito, es decir, que nunca se le tendrá esperando en un bucle que no tenga final.
  • Para solucionar el problema de la exclusión mutua vamos a tener tres tipos de soluciones:
    • Software
    • Hardware
    • Aportadas por el S.O

Sincronización
·         Entre subrutinas de la misma tarea
En este caso una subrutina llamada asicrónicamente (como respuesta a una señal) deberá coordinar el acceso con el resto del programa. (Por ejemplo, el acceso a una variable global. Ejemplos: práctico.).
·         Entre tareas del mismo proceso
Las tareas del mismo proceso son ejecutadas en un orden no definido por el SO y pueden ser interrumpidas en cualquier momento.
·         Entre procesos diferentes
Diferentes procesos cooperativos deberán sincronizarse para acceder a recursos, como por ejemplo, un archivo de configuración R/W.

Cuando no es necesario sincronizar:
Cuando no hay recursos compartidos.
Cuando sabemos el orden en el cual nuestro código se ejecutará.
Cuando el acceso al recurso compartido es en sí atómico.



Semáforos
Ayudan a solucionar problemas de procesos concurrentes, se diseño un S.O. como un conjunto de procesos secuenciales, eficiente y fiable para dar soporte a la cooperación. Los procesos de usuario podrían utilizar estos mecanismos si el procesador y el S.O. los hacían disponible.
Múltiples procesos pueden cooperar por medio de simples señales, de manera que se pueda obligar a un proceso a detener en una posición determinada hasta que reciba una señal específica. Para la señalización se usan variables especiales llamadas semáforos "S", los procesos ejecutan las primitivas wait para un proceso suspendido y signal para un para ejecutar .

Monitores del Sistema Operativo
Los monitores son estructuras de un lenguaje de programación que ofrecen una funcionalidad equivalente a las de los semáforos pero son más fáciles de controlar.
 es un modulo de software que consta de uno o más procedimientos, una secuencia de inicio y uno datos locales. Sus características son las siguientes:
  1. Solo los procedimientos del monitor acceden a variables de datos locales.
  2. Un proceso entra en el monitor invocando a uno de sus procedimientos.
  3. En el monitor solo un proceso puede ser ejecutado en un momento dado; cualquier otro proceso quedara suspendido esperando la disponibilidad del monitor.
El monitor proporciona variables de condición que son accesibles solo desde dentro del monitor.
Hay dos funciones para operar variables de condición:
  1. cwait (c): suspende la ejecución del proceso que llama bajo la condición "c". El monitor está ahora disponible para otro proceso.
  2. csignal (c): retorna la ejecución de un proceso suspendido después de un cwait, bajo la misma condición. Si hay varios procesos elige uno de ellos.

 Pasos de mensajes de los Sistemas Operativos
El paso de mensajes es un método que permite que se realice ambas funciones. Este método tiene la ventaja de que es de fácil implementación en sistemas distribuidos y también es sistemas de multiprocesador y monoprocesador de memoria compartida.
La funcionalidad real del paso de mensajes, generalmente, se da por medio de un par de primitivas:
·         send(destino, mensaje)
·         receive(origen, mensaje)
Este es el conjunto mínimo de operaciones necesarias para que los procesos puedan dedicarse al paso de mensajes.

Interbloqueo
Es el bloqueo permanente de un conjunto de procesos que compiten por los recursos del sistema o bien se comunican unos con otros. A diferencia de otros problemas de la gestión concurrente de procesos, no existe una solución eficiente para el caso general.
Todos los interbloqueos suponen necesidades contradictorias de recursos por parte de dos o más procesos.

Condiciones para producir interbloqueo
 En la política del sistema operativo, deben darse tres condiciones para que pueda producirse un interbloqueo:
1-     Condición de exclusión mutua: Cada recurso esta asignado a un único proceso o esta disponible.
2-     Condición de posesión y espera: Los procesos que tienen, en un momento dado, recursos asignados con anterioridad, pueden solicitar nuevos recursos.
3-     Condición de no apropiación: Los recursos otorgados con anterioridad no pueden ser forzados a dejar un  proceso. El proceso que los posee debe liberarlos en forma explicita.