CUESTIONARIO DE LA UNIDAD V

| edit post
EQUIPO I Y II (DEL 5.1 AL 5.1.1)
1.- Que tipos de archivos se utilizan para el modelo de puertos?


Los alumnos especiales de caracteres

2.- Que son las terminales?

Se denomina terminal al conjunto formado por un teclado y una pantalla conectados a la computadora para producir datos a través del primero y recibirlos a través del segundo
| edit post
EQUIPO III (DEL 5.2 AL 5.2.2)
1.-Menciona las 4 etapas de los objetivos del software

*mejorador de interrupción

*controladores de dispositivos

*software de s.o independiente del software

*software de usuario

2.- Cual es la función del manejador de interrupción

Ocultarse en el S. O con el fin de reducir el mínimo aspecto del sistema que tienes conocimiento de ello.
| edit post
EQUIPO IV (DEL 5.2.3 AL 5.2.5)
1.- Con que están comunicados los manejadores de dispositivos una vez que están listos?

Dispositivos periféricos y sus controladores

2.-Cual es la frontera exacta entre los controladores de dispositivos y el software independiente?

La frontera podría efectuarse realmente en los primeros controladores de software por razones de eficacia o de otro tipo
| edit post
EQUIPO V (5.3)
1.- Que proporciona el disco RAM?

Proporciona el acceso a cualquier parte de la memoria

2.- Cual es la aplicación principal del controlador?

Reservar una parte de la memoria para ser usada como disco ordinario
| edit post
EQUIPO VI (5.4)
1.- Cual es el requisito principal para que pueda utilizarse un disco duro?

Debe recibir un formato de bajo nivel efectuado por el software, en el cual cada pista tiene cierto número de sectores con espacios cortos entre ellos

2.- En cuanto al hardware de disco ¿a q se refiere planeación?

Implica tener un tiempo de acceso breve y gran ancho de banda en el disco
| edit post
EQUIPO VII (5.5)
1.- Para q sirven los relojes?


Son esenciales para el funcionamiento del sistema de tiempo compartido, los relojes mantienen la hora del día y evitan que un proceso monopolice le la CPU

2.- Mencione las obligaciones que hace el controlador de reloj

*mantiene la hora del día

*evita que los procesos se ejecuten durante más tiempo de lo debido

*contabiliza la utilización del CPU

*maneja la llamada al sistema a la ALARM emitida por procesos de usuario

*provee temporizadores de vigilancia aparte del sistema mismo

*prepara perfil, vigila y recaba datos estadísticos
| edit post
UNIDAD "5" ADMINISTRACION DE DISPOSITIVOS DE E/S

| edit post
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.
| edit post
5.1.1 DISPOSITIVOS DE I/O
Los dispositivos de e/s se pueden dividir en dos categorías: dispositivos por bloques y dispositivos por caracteres. Un dispositivo por bloques almacena información en bloques de tamaño fijo. La propiedad de un dispositivo por bloque es posible de leer o escribir cada bloque con independencia de los demás.
El dispositivo de caracteres: esté tipo suministra o acepta una corriente de caracteres, sin contemplar ninguna estructura de boques; no es direccional y no tiene una operación de búsqueda.
El sistema de archivos, por eje, solo maneja dispositivos y bloques abstractos y deja la parte dependiente del dispositivo a un software de mas bajo nivel llamado controladores de dispositivo.
| edit post
5.1.2 CONTROLADORES DE DISPOSITIVO
Las unidades de e/s por lo regular consisten en un componente mecánico y otro electrónico. En muchos casos es posible separar las dos partes con el objetivo de tener un diseño mas madurar y general. El componente electrónico se llaman “controlador” de dispositivos o “adaptador”. La tarjeta controladora siempre tiene un contador en el que puede insertarse un cable q reduce al dispositivo.
| edit post
5.2 PRINCIPIOS DEL SOFTWARE E/S
Los objetivos generales del software e/s son fáciles de plantear. La idea básica es organizar el software como una serie de capas, que oculten las peculiaridades del hardware, para que las capas superiores no las vean. Las capas superiores se ocuparan de presentar una interfaces bonitas, aseado y regulan a los usuarios.
| edit post
5.2.1 OBJETIVOS DEL SOFTWARE I/0
Un concepto clave del diseño de software de e/s se conoce como “independencia del dispositivo”. Esto significa que se debe ser posible escribir programas que puedan leer archivos de un disquete disco duro o un CD-ROM sin tener que modificar los programas para cada tipo de dispositivo distinto. Debemos poner teclear un comando como: sort < entrada >salida.
*aspecto importante del software es el manejo de errores
*la independencia del dispositivo es el objetivo de nombres uniformes
Estos objetivos se pueden lograr de una forma lógica y eficiente estructursandop el software de E/S en 4 capas:
1.- manejadores de interrupción (capa interior)
2.- controladores de dispositivos en software
3.- software del sistema operativo independiente del software
4.- software de usuario (capa superior)
| edit post
5.2.2 MANEJADORES DE INTERRUPCIONES
Las interrupciones son desagradables pero inevitables y deben ocultarse en las profundidades del sistema operativo; con el fin de reducir al mínimo las partes del sistema que tienen conocimiento de ellas. Las mejores formas de ocultarlas es hacer que cada proceso inicie un bloqueo de operaciones de e/s hasta que las e/s se halla llevado a cabo y las interrupción ocurra.
| edit post
5.2.3 MANEJADOR DE DISPOSITIVOS
Los manejadores de dispositivos o de una vez que estos están listos se comunican directamente con los dispositivos periféricos o sus controladores o canales. Cada manejador de dispositivos es responsable de comenzar las operaciones de e/s en operaciones con archivos, los dispositivos típicos controlados son discos y unidades de cinta. Los manejadores de dispositivos son considerados generalmente como parte del S.O
| edit post
5.2.4 SOFTWARE DE I/O INDEPENDIENTE DE DISPOSITIVOS
Aunque una parte del software de e/s es específica para cada dispositivo, una fracción considerable es independiente de el. La frontera exacta entre los controladores de dispositivos y el software independiente del sistema, porque algunas funciones q podrían realizarse de forma independiente del dispositivo podría efectuarse realmente en los controladores en software, por razones de eficacia o de otro tipo.
*interfaz uniforme para los controladores de dispositivos
*nombres de dispositivos
*protección de dispositivos
*tamaño de boque independiente del dispositivo
*almacenamiento intermedio
*asignación de almacenamiento en dispositivos de bloques
*asignación y liberación de dispositivos dedicados
*informe de errores
| edit post
5.2.5 SOFTWARE DE E/S DE ESPACIO DE USUARIO
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.
| edit post
5.3 DISCO RAM
El disco ram puede proporcionar acceso a cualquier parte de la memoria. La aplicación principal de este controlador es reservar un aparte de la memoria para ser usada como disco ordinario. Esto no quiere decir que el almacenamiento sea permanente, pero una vez que los archivos se copiaran en esta area el acceso a ellos puede ser extremadamente rápido.
El disco ram, tiene otra ventaja. Si colocamos el dispositivo raíz en un disco ram, el solityario disco flexible puede montarse y desmontarse a voluntad, manejando asdi como medidas removibles. Si se colocará el dispositivo raíz en el disco flexible seria imposible guardar archivos en disquete, ya que el dispositivo raíz (el único disquete) no puede demostrarse.
| edit post
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.
| edit post
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.
| edit post
5.4.2 Software para Discos
En esta sección veremos algunos aspectos relacionados con los controladores del disco en general. Para ello primero, considere cuanto tiempo toma en leer o escribir un blog de disco. En tiempo requerido esta determinado por tres factores:
1.- el tiempo de búsqueda (el tiempo que toma mover el brazo al cilindro correcto)
2.-el retraso rotacional (el tiempo que tarda el sector correcto en girar hasta quedar bajo la cabeza).
3.-el tiempo real de transferencia de datos.
| edit post
5.5 Relojes
Los relojes son el medio por el cual funciona la CPU. Básicamente todo sistema de computadora cuenta con un cristal de cuarzo que vibra a determinada frecuencia. Incluso, cuando se compra un procesador, lo primero que se hace es saber a qué velocidad de reloj trabajará éste. Actualmente se cuentan con procesadores capaces de trabajar a velocidades que varían desde los 800 Mega Hertz? hasta los 4 Giga Hertz? o más. Un Hertz está definido como el tiempo que transcurre durante un ciclo completo, donde un ciclo se define como un pico y un valle.
| edit post
5.5.1 Hardware de 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.
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.
| edit post
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.
| edit post
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.

Easy Time Clock Driver es nuestro programa middleware, diseñado para mantener conexión y comunicación entre la base de datos de Easy Time Control y tu reloj checador de cualquier tipo. Es utilizado para obtener registros de entrada de tus empleados desde tu dispositivo reloj checador, y transferirlos a tu base de datos. Nosotros utilizamos la tecnología más nueva del mundo para desarrollar este programa, para que funcione perfectamente en segundo plano, proviendote con los resultados más exactos y eficientes. Easy Time Clock Driver es la solución ideal para organizaciones de cualquier tipo, y es una pieza fundamental para tu Sistema de Asistencia que se comunica con cualquier tipo de reloj checador.
- Compatible con diferentes tipos de relojes checadores biométricos;
- Recoge registros de asistencia de empleados desde cualquier dispositivo reloj checador biométrico;
- Transfiere registros de asistencia a la base de datos central;
- Tiene una interfaz de usuario y funciona como un servicio;
- Logging;
| edit post
5.6 Terminales
Dispositivo del hardware electrónico o electromecánico que se usa para introducir o mostrar datos de una computadora. Su funcion es mostrar y recibir datos con capacidad significativa del procesador de datos, puede ser llamado “Terminal inteligente o cliente lijero”.
Una computadora puede ejecutar software que envie la funcion de un terminal en cocaciones permitiendo el uso simultaneo de programas locales y acceso a un servidor.
Las terminales proveen una manera conveniente y de bajo coste de accesar su sistema FreeBSD cuando no se encuentra en la consola de la computadora o en una red conectada. Esta sección describe como utilizar terminales con FreeBSD
| edit post
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árseles 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.
| edit post
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 disposisitivos 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
| edit post
UNIDAD 4 ADMINISTRACION DE LA MEMORIA
AHORA LES PRESENTAREMOS
LA UNIDAD 4,ESPERAMOS Q
SEA DE SU AGRADO YA Q
TODOS LOS TEMAS ESTAN
DESARROLLADOS.
| edit post
4.1 GESTION DE MEMORIA
La gestión de memoria representa un vínculo delicado entre el rendimiento (tiempo de acceso) y la cantidad (espacio disponible). Siempre se busca obtener el mayor espacio disponible en la memoria, pero pocas veces existe la predisposición para comprometer el rendimiento.
La gestión de memoria también debe realizar las siguientes funciones:
• permitir que la memoria se comparta (en sistemas de multiprocesos).
• asignar bloques de espacio de memoria a distintas tareas;
• proteger los espacios de memoria utilizados (por ejemplo, evitar que un usuario modifique una tarea realizada por otro usuario).
• optimizar la cantidad de memoria disponible, específicamente a través de sistemas de expansión de memoria.
| edit post
4.1.1 ORGANIZACIÓN DE LA MEMORIA
La memoria principal es un recurso muy costoso e importante, por esta razón y por esta razón con el fin de optimizar su uso, ha sido objeto de muchos estudios
Algunas preguntas importantes en la organización son:
Localizaremos a un solo usuario, o a varios usuarios en memoria principal al mismo tiempo?
Si hay varios usuarios al mismo tiempo, ¿le asignaremos la misma cantidad de memoria a cada uno, o le asignaremos particiones y tamaño diferente a cada uno?
| edit post
4.1.2 ADMINISTRADOR DE LA MEMORIA
Independientemente de que se escoja cualquier practica para la organización del almacenamiento, con respecto a la administración de este debemos preguntarnos:
Cuando tomaremos u nuevo programa para cargarlo en memoria?
Se esperara que requiera cargar en programa o se tratara de anticipar las demandas?
| edit post
4.1.3 JERARQUIA DE LA MEMORIA
La memoria principal estaba construida por núcleos magnaticos, lo cual es indispensable diseñar un sistema computacional con el mínimo tamaño requerido por tanto, debían conservarse en memoria principal solo el código y los datos estrictamente necesarios, y los demás en memoria secundaria.
La memoria secundaria era de mayor densidad con un menor costo por bit pero con tiempos de acceso mayores que la memoria principal.
| edit post
4.1.4 ESTRATEJIAS PARA LA ADMINISTACION DE MEMORIA
Estrategias de FECH: se encarga de definir cuando tener la siguiente parte de información a memoria principal
Estrategias de localización: se refieren a donde localizar u programa dentro de la memoria principal
Estrategias de reemplazo: están relacionadas con la determinación de que parte de un programa quitar para reemplazar con otra nueva.
| edit post
4.1.5 MULTIPROGRAMACION CON PARTICION FIJAS Y VARIABLES
. Partición fija: la fragmentación ocurre cuando un proceso es mas pequeño que la partición a la q fue asignado, de esta manera, se desperdicia el espacio sobrante.
. Partición variable: con el fin de utilizar mas eficientemente la memoria principal como se aplicaron particiones variables, en las que a un proceso solo se le asignaba la capacidad de localidades d memorias que requiere
| edit post
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.
| edit post
4.2.1 ADMINISTRACION 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). La figura 6 muestra una parte de la memoria y su correspondiente mapa de bits.
| edit post
4.2.2 ADMINISTRACION DE MEMORIA CON LISTA DE ENLAZADOS
Aquí entran en juego varios temas, se trata de combinar las estructuras con los punteros para acabar por fin con la limitación de los arrays, ya no hará falta indicar el tamaño del array al principio. Después comentaremos los pros y los contras de las listas enlazas respecto a los arrays.
Las listas enlazadas pueden ser simples, dobles o circulares.
| edit post
4.2.3 DISTRIBUCION DE 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 numero 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.
| edit post
4.3 MEMORIA VIRTUAL
Esta asociado a la unidad de poder acceso a un espacio de almacenamiento mayor que el espacio de almacenamiento principal de un sistema computacional
Los métodos más comunes para el manejo de memoria virtual son:
1. Segmentación
2. Paginación
3. Segmentación con paginación
| edit post
4.3.1 PAGINACION DE MEMORIA VIRTUAL
La clave del concepto de almacenamiento virtual esta en desasociar las direcciones referidos por un proceso de ejecución de las direcciones disponibles en almacenamiento primario.
| edit post
4.3.2 SEGMENTACION MEMORIA VIRTUAL
La traducción de direcciones en un sistema de segmentación pude realizarse tal como los de segmentación de paginación. El control de acceso dentro de un sistema de segmentación permite controlar:
1. La lectura (r)
2. La escritura (w)
3. La ejecución (e)
4. El agregado
| edit post
4.3.3 ALGORITMOS DE SUSTITUC ION 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 reescribir en el disco a fin de actualizar la copia del disco, pero si no fue así (p. ej., si la página contenía texto de programa), la copia en disco ya estará actualizada y no será necesario reescribirla. La nueva página simplemente sobre escribe la que está siendo desalojada.
| edit post
4.3.4 ASPECTOS DEL DISEÑO PARA EL SISTEMA
En las secciones anteriores hemos explicado cómo funciona la paginación y hemos presentado algunos de los algoritmos de reemplazo de páginas básicos. Sin embargo, no basta con conocer los aspectos mecánicos del funcionamiento. Para diseñar un sistema, necesitamos saber mucho más si queremos lograr que funcione bien. La diferencia es similar a la que existe entre saber cómo se mueven la torre, el caballo, el alfil y las demás piezas de ajedrez, y ser un buen jugador En las siguientes secciones examinaremos otros aspectos que los diseñadores de sistemas operad deben considerar detenidamente si quieren obtener un buen rendimiento de un sistema de paginación
| edit post
4.3.5 LIBERACION DE PAGINAS
La idea de compiladores y los sistemas operativos pueden detectar cuando una página no se necesita, de esta manera, los conjuntos de trabajos no experimentaron grandes trabajos y podría mantenerse en espacio de memoria virtual utilizado, lo cual haría posible soportar mayor numero de procesos.
| edit post
UNIDAD III ADMINISTRACION DEL PROCESADOR
AHORA LES PRESENTAREMOS LA UNIDAD III
CON SUS RESPECTIVOS TEMAS Y SUBTEMAS
DESARROLLADOS.
| edit post
3.1 PLANEACION TRABAJOS JOB SCHEDULING
 OBJETIVO:
 Minimizar el tiempo de espera y minimizar el tiempo de respuesta. La planificación (scheduling) es la base para lograr la multiprogramación.
 Un sistema multiprogramado tendrá varios procesos que requerirán el recurso procesador a la vez. Esto sucede cuando los procesos están en estado ready (pronto). Si existe un procesador disponible, se debe elegir el proceso que será asignado para ejecutar. La parte del sistema operativo que realiza la elección del proceso es llamada planificador (scheduler).
 La planificación hace referencia a un conjunto de políticas Y mecanismos incorporados a sistemas operativos que gobiernan el orden en que se ejecutan los trabajos.
 Un planificador es un módulo del S.O que selecciona el siguiente trabajo que hay que admitir en el sistema y el siguiente proceso que hay que ejecutar
 En muchos sistemas, la actividad de planificación se divide en tres funciones independientes: planificación a largo, medio, y corto plazo.
| edit post
3.2 CONCEPTOS BASICOS JOB SCHEDULING
 Un planificador de tareas es una aplicación de software empresarial que se encarga de las ejecuciones de fondo sin vigilancia, comúnmente conocido por razones históricas como “ el procesamiento por lotes ”.
 Que es un procesamiento por lotes?
 Es la ejecución de una serie de programas.
 Hay muchos conceptos que son centrales para la aplicación casi todos los trabajos planificador y que son ampliamente reconocidos con variaciones mínimas:
 Empleos
 Dependencias
 Flujos de Trabajo
 Usuarios
 Más allá de la básica, herramientas de programación única instancia de SO hay dos arquitecturas principales que existen para el software de planificación de trabajo.
 Maestro / Agente de la arquitectura - El software Job Scheduling se instala en una sola máquina (Master), mientras que en equipos de producción sólo un componente muy pequeño (agente) está instalado que le espera a las órdenes del Maestro, los ejecuta, y devuelve el código de salida de nuevo al Maestro.
 Arquitectura Cooperativa - Esto permite equilibrar la carga de trabajo dinámico para maximizar la utilización de los recursos de hardware y de alta disponibilidad para garantizar la prestación de servicios.
y
| edit post
3.3 TIPOS DE PLANEACION JOB SCHEDULING
Objetivo de la planificación: Minimizar el tiempo de espera y minimizar el tiempo de respuesta. La planificación (scheduling) es la base para lograr la multiprogramación.

Un sistema multiprogramado tendrá varios procesos que requerirán el recurso procesador a la vez. Esto sucede cuando los procesos están en estado ready (pronto). Si existe un procesador disponible, se debe elegir el proceso que será asignado para ejecutar. La parte del sistema operativo que realiza la elección del proceso es llamada planificador (scheduler).

La planificación hace referencia a un conjunto de políticas Y mecanismos incorporados a sistemas operativos que gobiernan el orden en que se ejecutan los trabajos.

Un planificador es un módulo del S.O que selecciona el siguiente trabajo que hay que admitir en el sistema y el siguiente proceso que hay que ejecutar

En muchos sistemas, la actividad de planificación se divide en tres funciones independientes: planificación a largo, medio, y corto plazo.
| edit post
3.3.1 FIRST IN FIRST OUT JOB SCHEDULING (FIFO)
 Primero en llegar primero en ser tendido. la cpu se asigna a los procesos en el orden que lo solicitan,
 cuando el primer proceso entra en el sistema,
 se le inicia de inmediato y se le permite ejecutar todo el tiempo que necesite, cuando llegan otros procesos se les coloca al final de la cola.
 Cuando se bloquea el proceso en ejecucion, se ejecuta el primer proceso de la cola, si un proceso bloqueado vuelve a estar listo se le coloca al final de la cola como si fuera un proceso recien llegado.
 . Es del tipo no expropiativo
 . Es equitativo
 . Solo necesita una cola para implementarse
 . Presenta desventajas cuando se tienen procesos dedicados a CPU y dedicados a E/S
| edit post
3.3.2 ROUND ROBIN JOB SCHEDULING (RR)
Algoritmo apropiativo consistente en determinar un quantum (tiempo de reloj) que marcará
el intervalo de CPU que se le cederá al proceso ejecutando. Cuando finalice el quantum al
Proceso se le quitará la CPU y pasará a la cola de listo. La cola de listos sigue la estructura
FIFO. Si un proceso no consume su quantum libera la CPU y ésta es asignada al siguiente
Proceso de la cola de listo.
Los procesos se despachan en “FIFO” y disponen de una cantidad limitada de tiempo de cpu, llamada “división de tiempo” o “cuanto”.
Si un proceso no termina antes de expirar su tiempo de cpu ocurren las siguientes acciones:
1. La cpu es apropiada.
2. La cpu es otorgada al siguiente proceso en espera.
3. El proceso apropiado es situado al final de la lista de listos.
Es efectiva en ambientes de tiempo compartido.
La sobrecarga de la apropiación se mantiene baja mediante mecanismos eficientes de intercambio de contexto y con suficiente memoria principal para los procesos.
Características:
• Fácil de implementar.
• Perjudica a los procesos de E/S.
• Si el quantum es muy grande se comporta como un FCFS.
• El tiempo de respuesta para procesos cortos es bueno.
• Trato equitativo entre procesos, bueno para interactividad.
• No se produce inanición.
• El valor mínimo del quantum debe ser (10 * Tiempo Cambio Contexto )
• El quantum más adecuado es el Tiempo de CPU del proceso más corto.
| edit post
3.3.3 SHORTEST JOB FIRST JOB SCHEDULING (SJF)
Es una disciplina no apropiativa y por lo tanto no recomendable en ambientes de tiempo compartido. El proceso en espera con el menor tiempo estimado de ejecución hasta su terminación es el siguiente en ejecutarse. Los tiempos promedio de espera son menores que con “FIFO”.
Los tiempos de espera son menos predecibles que en “FIFO”.
Favorece a los procesos cortos en detrimento de los largos.
Tiende a reducir el número de procesos en espera y el número de procesos que esperan detrás de procesos largos. Requiere un conocimiento preciso del tiempo de ejecución de un proceso, lo que generalmente se desconoce. Se pueden estimar los tiempos en base a series de valores anteriores.
| edit post
3.3.4 SHORTEST REMAINING TIME JOB SCHEDULING (STR)
Esta disciplina elige siempre al proceso que le queda menos tiempo de ejecución estimado para completar su ejecución; de esta forma aunque un proceso requiera mucho tiempo de ejecución, a medida que se va ejecutando iría avanzando en la lista de procesos en estado listo hasta llegar a ser el primero. Para realizar esta elección, es necesario actualizar el PCB de los procesos a medida que se le asigna tiempo de servicio, lo que supone una mayor sobrecarga adicional.
Es una disciplina apropiativa ya que a un proceso activo se le puede retirar la CPU si llega a la lista de procesos en estado listo otro con un tiempo restante de ejecución estimado menor.
Este algoritmo es la versión no apropiativa o espulsiva del algoritmo Shortest Process Next (SPN) o también llamado Shortest Job First (SJF).
En el algoritmo Shortest Remaining Time el planificador selecciona el proceso más corto, al igual que antes, pero en este caso el cambio se controla cada vez que un proceso llega a la cola. Es decir, cuando un proceso se desbloquea o se crea uno nuevo y el tiempo de ráfaga es menor que el tiempo de ráfaga del proceso que se está ejecutando, entonces se realiza un cambio de contexto, el bloqueado se ejecuta y el que se estaba ejecutando pasa a la cola de procesos listos. De este modo cuando se desbloquea o entra un proceso nuevo, se calcula su tiempo de ráfaga. Si el proceso que se está ejecutando le queda más tiempo de ráfaga que nuestro tiempo de ráfaga calculado entonces se procede a realizar el cambio de contexto.
. Definición: Algoritmo apropiativo (que en cualquier momento se le puede quitar la CPU para asignársela otro proceso) consistente en elegir de la cola de listos el proceso con menos necesidad de tiempo restante de CPU para cada instante de tiempo.
Características:
Ofrece un buen tiempo de respuesta.

La productividad es alta a cambio de la sobrecarga del sistema (a cada paso debe decidir a que proceso asignarle la CPU).

Penaliza los procesos largos.

Se puede producir inanición.
| edit post
3.3.5 HIGHEST RESPONSE RATIO NEXT JOB SCHEDULING (HNR)
Definición:
Algoritmo apropiativo parecido al SRT consistente en calcular el Reponse Ratio (Ratio de respuesta) para asignar la CPU a procesos más viejos. (Para evitar la inanición).
Características:
Es muy productivo pero se sobrecarga el sistema.

Ofrece un buen tiempo de respuesta.

Equilibra los procesos, aunque da prioridad a los procesos más cortos.

Evita la inanición (los procesos que envejecen serán ejecutados).
Las prioridades, que son dinámicas, se calculan según la siguiente fórmula, donde pr es la “prioridad”, te es el “tiempo de espera” y ts es el “tiempo de servicio”:
• Elige proceso listo con valor mayor de R
• Tiene en cuenta edad del proceso
• Debe estimarse el tiempo se servicio previamente: en base a historia pasada o valor dado por usuario o administrador.
• R= w + s
s
R= tasa de respuesta
w= tiempo consumido esperando al procesador
s = tiempo de servicio esperado
Que corrige algunas deficiencias de SJF, particularmente el retraso excesivo de trabajos largos y el favoritismo excesivo para los trabajos cortos. HRN es un disciplina de planificación no apropiativa en la cual la prioridad de cada proceso no sólo se calcula en función del tiempo de servicio, sino también del tiempo que ha esperado para ser atendido. Cuando un trabajo obtiene el procesador, se ejecuta hasta terminar. Las prioridades dinámicas en HRN se calculan de acuerdo con la siguiente expresión: Prioridad = (tiempo de espera + tiempo de servicio) / tiempo de servicio Como el tiempo de servicio aparece en el denominador, los procesos cortos tendrán preferencia. Pero como el tiempo de espera aparece en el numerador, los procesos largos que han esperado también tendrán un trato favorable. Obsérvese que la suma tiempo de espera + tiempo de servicio es el tiempo de respuesta del sistema para el proceso si éste se inicia de inmediato.
Para cada proceso, basado en el tiempo que va a ocupar el procesador(s) y el tiempo que lleva esperando para ocuparlo (w), Se calcula w+s/s, una vez echo esto el proceso que tenga un valor mayor será asignado al procesador. Este algoritmo es bastante bueno, por que además de dar preferencia a los procesos cortos también tiene en cuenta el envejecimiento de los procesos para evitar así la “inanición”. Cuando el proceso actual termina o se bloquea, se elige el proceso listo con un mayor valor de R.
La decisión de planificación se basa en una estimación del tiempo de retorno normalizado.
Este método es atractivo porque tiene en cuenta la edad del proceso. Aunque se favorece a los trabajos más cortos (un denominador menor produce una razón mayor), el envejecimiento de un proceso sin que haya sido servido incrementa el valor de la razón, de forma que los procesos más largos puedan pasar, en competición con los más cortos. El tiempo esperado de servicio debe estimarse antes de emplear la técnica de la mayor tasa de respuesta.
| edit post
3.4 MULTIPROCESAMIENTO PROCESADOR
Generalidades de Multiprocesadores.
Un multiprocesador se define como una computadora que contiene dos o más unidades de procesamiento que trabajan sobre una memoria común bajo un control integrado.
Si el sistema de multiprocesamiento posee procesadores de aproximadamente igual capacidad, estamos en presencia de multiprocesamiento simétrico; en el otro caso hablamos de multiprocesamiento asimétrico.
Si un procesador falla, los restantes continúan operando, lo cual no es automático y requiere de un diseño cuidadoso.
Un procesador que falla habrá de informarlo a los demás de alguna manera, para que se hagan cargo de su trabajo .
Los procesadores en funcionamiento deben poder detectar el fallo de un procesador
Determinado. El Sistema Operativo debe percibir que ha fallado un procesador determinado y ya no podrá asignarlo y también debe ajustar sus estrategias de asignación de recursos para evitar la sobrecarga del sistema que está degradado.
Distribución de Ciclos
Una “estructura de ciclos o de repetición” implica la repetición de una serie de proposiciones (cuerpo del ciclo) hasta que ocurre alguna condición de terminación, por ejemplo:
For i = 1 to 3
Do
El procesador secuencial realizará en secuencia lo siguiente:
En un sistema de multiprocesamiento con tres procesadores disponibles se podrían
Ejecutar concurrentemente.
Reducción de la Altura del Arbol
Utilizando las propiedades asociativa, conmutativa y distributiva de la aritmética, los
Compiladores pueden:
1. Detectar el paralelismo implícito en expresiones algebraicas.
2. Producir un código objeto para multiprocesadores que indique las operaciones que se pueden realizar simultáneamente.
3. Reordenar expresiones para que sean más apropiadas para la computación en paralelo.
| edit post
3.5 CONCEPTOS BASICOS MULTIPROCESAMIENTOS
INTRODUCCION
A pesar de las grandes mejoras acaecidas en monoprocesadores para algunas aplicaciones no es suficiente.
– La solución pueden ser los sistemas multiprocesadores:
o Solución más sencilla, natural y con mejor coste-prestaciones.
o Las mejoras en microprocesadores cada vez son más complejas: cada avance implica crecer en complejidad, potencia y superficie.
o Lenta pero clara mejora en el software, que permite explotar el paralelismo.
– Las arquitecturas actuales son muy diversas: hay más investigación que resultados definitivos.
– Hablaremos de multiprocesadores de pequeña y median escala
Dos factores clave para la extensión de los Multiprocesadores
1. Flexibilidad: El mismo sistema puede usarse para un único usuario incrementado el rendimiento en la ejecución de una única aplicación o para varios usuarios y aplicaciones en un entorno compartido.
2. Coste-rendimiento: Actualmente estos sistemas se basan en procesadores comerciales, por lo que su coste se ha reducido drásticamente. La inversión más fuerte se hace en la memoria y la red de interconexión.
Como su nombre indica son aquellos sistemas operativos que están montados sobre ordenadores que están compuestos por más de un procesador, supongamos un PC que en vez de tener un Pentium, tuviera dos o más Pentium conectados entre si dentro de la misma placa base, esto sería un sistema multiprocesador.
CLASIFICACION POR USO DE LOS RECURSOS
Sistemas monoprogramados: Son los que solo permiten la ejecución de un programa en el sistema, se instalan en la memoria y permanecen allí hasta que termine su ejecución. Sistemas multiprogramados: Son aquellos que se basan en las técnicas de multiprogramación, existen dos tipos:
• Multitarea apropiativa (preemptive): Se utiliza en sistemas operativos cuya gestión es quitar el control del microprocesador al programa que lo tiene.
• Multitarea cooperativa: El programa tiene el control del microprocesador, el sistema operativo no puede decidir quien usa el microprocesador.
Sistemas de multiprocesamiento: Formado por varios microprocesadores. Depende del tipo de trabajo y los objetivos que debe cumplir cada sistema para dar el mejor servicio al usuario, se clasifican en:
Procesamiento por lotes (batch): Cada programa realiza un conjunto de pasos secuenciales relacionados entre si
Multiprocesamiento
Medios de multiprocesamiento que tienen más de un procesador que opera en la misma memoria pero ejecuta procesos simultáneamente. En un sistema de multiprocesamiento procesadores múltiples son empleados a ejecutado más de una actividad en el tiempo, siempre que la informática masiva deba ser realizada con regularidad.
Multiprocesador.
Como muchas de las actividades principales de la informática se ejecutan simultáneamente por los procesadores diferentes.
Sin embargo, es esencial proporcionar la sincronización entre procesador múltiple ellos tienen acceso a la memoria común tal que ninguna parte del trabajo de informática debería ser descuidada por el procesador individual con una presunción que el otro procesador lo hará.
Un sistema de multiprocesamiento con vario funcionamiento juntos a la vez proporcionará un ambiente de multiprogramación. La multiprogramación permite que programas múltiples residan en áreas separadas de la memoria principal al mismo tiempo. Con este acercamiento, es posible mantener dos o más empleos simultáneamente en la ejecución o en estados de la ejecución.
Los sistemas de ordenador de multiprocesador son caros y encontraron su uso sólo en la aplicación de informática compleja y en la alta velocidad que funda el punto aplicación de cálculo numérica en espacios de Investigación e Industria.
| edit post
3.6 PARALELISMO MULTIPROCESAMIENTO
Funcionamiento
El paralelismo consiste en ejecutar más instrucciones en menos tiempo, aunque las instrucciones sigan tardando lo mismo en ejecutarse, mediante un simple truco, aunque algo difícil de explicar en detalle. Intentémoslo.
un microprocesador ejecuta instrucciones de código máquina.
Estas instrucciones le dicen como tiene que ir modificando diferentes posiciones de memoria, y como debe ir modificando el flujo de ejecución. Se tiende a pensar, erróneamente, que un procesador con un reloj a 200 MHz (200 millones de ciclos por segundo) ejecuta 200 millones de estas operaciones por segundo. Esto no es así, por una sencilla razón. Una instrucción no se ejecuta en un solo ciclo de reloj, salvo alguna rara excepción. De hecho, algunas instrucciones tardan bastantes más ciclos, llegando algunas a necesitar 50 o más ciclos para completarse. En cambio, las más rápidas se ejecutan en tan sólo 3 o 4 ciclos de reloj. Aquí es donde entra el paralelismo para solucionar este problema. Se puede dividir cualquier instrucción en fases más o menos comunes a todas:
-fetch (carga de la instrucción desde la memoria al procesador)
-decodificación (identificación de qué instrucción nos hemos encontrado)
-carga de operandos
-operación en sí
-escritura de resultados
Este esquema, expresamente simplificado, nos da una idea de las fases que todo microprocesador tiene. Vamos a suponer un microprocesador ideal donde todas las operaciones que se pueden ejecutar en él tardan 15 ciclos, correspondientes a tres ciclos por cada una de las 5 fases que hemos descrito. Si ejecutáramos tres de estas operaciones sin ningún tipo de paralelismo, tardaríamos 45 ciclos, según el siguiente esquema:
instr.1:111222333444555
instr.2:_________111222333444555
instr. 3:________111222333444555
Ahora supongamos que somos capaces de dividir el microprocesador en circuitos separados capaces cada uno de trabajar independientemente y ejecutar cada una de las 5 fases anteriores. Si logramos que sean independientes, cuando la instrucción uno ha acabado ya la fase de fetch y pasa a la decodificación, deja libre el módulo que se encarga del fetch, donde puede ir ya ejecutándose la segunda instrucción. De esta forma, logramos paralelizar las instrucciones.
instr.1111222333444555
instr.2:___111222333444555
instr. 3:______111222333444555
Resultado: las tres instrucciones, por separado, siguen ejecutándose en el mismo tiempo, pero en conjunto ya no tardan 45 ciclos, sino solo 21 ciclos. Más de un 45% de incremento en el rendimiento. De esta forma es como algunos procesadores muy paralelizados logran ejecutar, en promedio, más de una instrucción por ciclo de reloj, aunque estas instrucciones tarden, por sí mismas, más de un ciclo en ejecutarse.
En la realidad, como siempre, no todo es tan fácil y hay muchos problemas al diseñar un procesador con paralelismo. Por citar algunos de los problemas más comunes, hay veces que una instrucción no se puede ejecutar ya que requiere un dato que quizás calculaba la operación anterior (cosa muy habitual). Claro, si ante este problema detuviéramos la anterior instrucción, bloquearía el procesador y se acabaría el paralelismo hasta que acabara la primera instrucción y con ella se pudiera reanudar la segunda. Para evitar estos problemas se recurre a cortocircuitos, o lo que es lo mismo, se comunican diferentes fases del microprocesador internamente para pasarse antes los datos. Esto, sin embargo, también nos da otros problemas, ya mucho más complicados, como el encontrarnos con que hay que decidir que datos son los correctos en cada momento. En estos problemas ya no entraremos, y se podrían resumir en que el procesador ha de decidir como paralelizar las instrucciones. Bien, todo lo que hemos visto sobre el paralelismo involucra única y exclusivamente al microprocesador en sí, y más bien a su diseño. El software que se ejecuta sobre él ignora totalmente si hay paralelismo o no. Esto es el paralelismo implícito.
Por el contrario, Intel implementa una solución que de hecho ya deriva de ideas de principios de los años 80. En el paralelismo explícito, el procesador ya no es el que decide cómo paralelizar las instrucciones, sino que es el compilador del software el que ha empaquetado las instrucciones para que el microprocesador pueda ejecutarlas paralelamente sin tantos problemas. De hecho, esta manera es mucho más eficiente, porque el compilador tiene todo el tiempo del mundo para decidir cómo paralelizar y por supuesto, la lógica que puede aplicar es infinitamente más potente que la que podemos encontrar implementada en cualquier microprocesador. Esto también redunda en una simplificación de la circuitería de control del microprocesador, lo que permite acelerar aún más las instrucciones. Además, queda libre más espacio para incluir aún más registros y hacer los buses internos más anchos, lo que permite ejecutar aún más instrucciones en paralelo.
Paralelismo en software Definamos como paralelismo en software como la ejecución de un programa sin tomar en cuenta el hardware con que va ser ejecutado. El paralelismo en software es considerado como el caso ideal de la ejecución de las instrucciones que forman parte de un programa, ya que no toma en cuenta las limitantes del hardware con que el mismo va ser ejecutado.
Paralelismo en hardware Definamos como paralelismo en hardware como la ejecución de un programa tomando en consideración el hardware con que va a ser ejecutado.
El diagrama de paralelismo en Software representa el caso ideal con que dicho programa puede ser ejecutado. Nótese que la ejecución de las 8 instrucciones se realiza solamente en tres ciclos de máquina. Por otro lado podemos observar las limitantes que genera la ejecución de este mismo programa con un hardware en particular (procesador Superescalar con capacidad de ejecutar un acceso a la memoria y una operación aritmética simultáneamente) obteniendo 6 ciclos de maquina para ejecutar el programa.
Tomando como base este ejemplo, la ejecución paralela de las instrucciones de un programa se mide mediante el parámetro conocido como Promedio de Ejecución Paralela de instrucciones (PEP). Este parámetro se define como la relación entre el número de instrucciones del programa y el número de ciclos de máquina realizados en su ejecución. Su expresión matemática es:
PEP = No. de Instrucciones / No. de Ciclos de Máquina
Por consiguiente, el promedio de ejecución paralela de instrucciones en software para este ejemplo es: 8/3 = 2,667 y el promedio de ejecución paralela de instrucciones en hardware es: 8/6 = 1,333.
El desarrollo de hardware y software es un proceso integral que busca soluciones que permitan satisfacer cada vez más las condiciones de paralelismo con el fin de incrementar el promedio de ejecución paralela de instrucciones. Para lograr este objetivo es necesario detectar y resolver las dependencias entre instrucciones. El proceso de detección y resolución de dependencias entre instrucciones se conoce como el proceso de planificación de instrucciones. Cuando la planificación de instrucciones es llevada a cabo únicamente por el compilador se dice que la planificación de instrucciones es estática. Y cuando la planificación de instrucciones es llevada a cabo únicamente por hardware (Ejemplo: microprocesador) se dice que la planificación de instrucciones es dinámica. La planificación de instrucciones en los microprocesadores súper escalares es un proceso de planificación de instrucciones estático y dinámico.
Las técnicas estáticas de planificación de instrucciones están compuestas por tres grupos: Planificación de instrucciones de bloques de un programa, Planificación de instrucciones de lazos iterativos continuos y planificación de instrucciones global. La técnica de bloques consiste en dividir un programa en bloques para luego detectar y resolver solamente las dependencias entre las instrucciones de cada bloque. Esta técnica es la mas utilizada en los últimos 20 años ya que es la más simple de implementar. La técnica de lazos iterativos consiste planificar las instrucciones que forman parte de los lazos continuos de un programa. Esta técnica esta compuesta básicamente por dos técnicas: Unrolling y Software Pipeline. Y por ultimo la técnica global consiste en planificar todas las instrucciones que forman parte de un programa.
En la sección 2 del seminario Arquitectura de Microprocesadores se analizan las técnicas más comunes de planificación de instrucciones dinámicas implementadas en los microprocesadores y a su vez se demuestra que el desarrollo de hardware y software es un proceso integral que busca soluciones que permitan satisfacer cada vez más las condiciones de paralelismo con el fin de incrementar el promedio de ejecución paralela de instrucciones.
| edit post
3.7 SISTEMAS MULTIPROCESAMIENTOS
A pesar de las grandes mejoras acaecidas en monoprocesadores para algunas aplicaciones no es suficiente.
– La solución pueden ser los sistemas multiprocesadores:
o Solución más sencilla, natural y con mejor coste-prestaciones.
o Las mejoras en microprocesadores cada vez son más complejas: cada avance implica crecer en complejidad, potencia y superficie.
o Lenta pero clara mejora en el software, que permite explotar el paralelismo.
– Las arquitecturas actuales son muy diversas: hay más investigación que resultados definitivos.
– Hablaremos de multiprocesadores de pequeña y median escala
Dos factores clave para la extensión de los Multiprocesadores
1. Flexibilidad: El mismo sistema puede usarse para un único usuario incrementado el rendimiento en la ejecución de una única aplicación o para varios usuarios y aplicaciones en un entorno compartido.
2. Coste-rendimiento: Actualmente estos sistemas se basan en procesadores comerciales, por lo que su coste se ha reducido drásticamente. La inversión más fuerte se hace en la memoria y la red de interconexión.
Como su nombre indica son aquellos sistemas operativos que están montados sobre ordenadores que están compuestos por más de un procesador, supongamos un PC que en vez de tener un Pentium, tuviera dos o más Pentium conectados entre si dentro de la misma placa base, esto sería un sistema multiprocesador.
CLASIFICACION POR USO DE LOS RECURSOS
Sistemas monoprogramados: Son los que solo permiten la ejecución de un programa en el sistema, se instalan en la memoria y permanecen allí hasta que termine su ejecución.
Sistemas multiprogramados: Son aquellos que se basan en las técnicas de multiprogramación, existen dos tipos:
• Multitarea apropiativa (preemptive): Se utiliza en sistemas operativos cuya gestión es quitar el control del microprocesador al programa que lo tiene.
• Multitarea cooperativa: El programa tiene el control del microprocesador, el sistema operativo no puede decidir quien usa el microprocesador.
Sistemas de multiprocesamiento: Formado por varios microprocesadores. Depende del tipo de trabajo y los objetivos que debe cumplir cada sistema para dar el mejor servicio al usuario, se clasifican en:
Procesamiento por lotes (batch): Cada programa realiza un conjunto de pasos secuenciales relacionados entre si
| edit post
3.8 ORGANIZACION DEL MULTIPROCESADOR
El problema clave es determinar los medios de conexión de los procesadores múltiples y los procesadores de Entrada / Salida a las unidades de almacenamiento.
Los multiprocesadores se caracterizan por los siguientes aspectos:
• Un multiprocesador contiene dos o más procesadores con capacidades aproximadamente comparables.
• Todos los procesadores comparten el acceso a un almacenamiento común y a canales de Entrada / Salida, unidades de control y dispositivos.
• Todo está controlado por un Sistema Operativo que proporciona interacción entre procesadores y sus programas en los niveles de trabajo, tarea, paso, archivo y elementos de datos.
Las organizaciones más comunes son las siguientes:
• Tiempo compartido o bus común (conductor común).
• Matriz de barras cruzadas e interruptores.
• Almacenamiento de interconexión múltiple.
Tiempo Compartido o Bus Común (o Conductor Común)
Usa un solo camino de comunicación entre todas las unidades funcionales
El bus común es en esencia una unidad pasiva.
Un procesador o procesador de Entrada / Salida que desee transferir datos debe efectuar los siguientes pasos:
1. Verificar la disponibilidad del conductor y de la unidad de destino.
2. Informar a la unidad de destino de lo que se va a hacer con los datos.
3. Iniciar la transferencia de datos.
Las unidades receptoras deben poder reconocer qué mensajes del bus son enviados hacia ellas y seguir y confirmar las señales de control recibidas de la unidad emisora.
Es una organización económica, simple y flexible pero con una sola vía de comunicación, por lo cual:
• El sistema falla totalmente si falla el bus.
• La tasa neta de transmisiones está limitada por la tasa neta de transmisión del conductor.
• La contención por el uso del bus en un sistema sobrecargado puede ocasionar una seria degradación.
Matriz de Barras Cruzadas e Interruptores
En este caso existe un camino diferente para cada unidad de almacenamiento, por lo cual las referencias a dos unidades diferentes de almacenamiento no son bloque antes sino simultáneas y la multiplicidad de caminos de transmisión puede proporcionar tasas de transferencia muy altas
Almacenamiento de Interconexión Múltiple Se obtiene al sacar las lógicas de control, de conmutación y de arbitraje de prioridades fuera del interruptor de barras cruzadas se las coloca en la interfaz de cada unidad de almacenamiento
Cada unidad funcional puede acceder a cada unidad de almacenamiento, pero sólo en una “conexión de almacenamiento” específica, es decir que hay una conexión de almacenamiento por unidad funcional.
El conexionado es más complejo que en los otros esquemas.
Se puede restringir el acceso a las unidades de almacenamiento para que no todas las unidades de procesamiento las accedan, en tal caso habrá unidades de almacenamiento “privadas” de determinados procesadores
| edit post
3.9 SISTEMAS OPERATIVOS DEL MULTIPROCESADOR
Sistema Operativo de Multiprocesadores Las capacidades funcionales de los Sistema Operativo de multiprogramación y de multiprocesadores incluyen lo siguiente:
• Asignación y administración de recursos.
• Protección de tablas y conjuntos de datos.
• Prevención contra el ínter bloqueo del sistema.
• Terminación anormal.
• Equilibrio de cargas de Entrada / Salida.
• Equilibrio de carga del procesador.
• Reconfiguración.
Las tres últimas son especialmente importantes en Sistemas Operativos de multiprocesadores, donde es fundamental explotar el paralelismo en el hardware y en los programas y hacerlo automáticamente. Las organizaciones básicas de los Sistemas Operativos para multiprocesadores son las siguientes:
• Maestro / satélite.
• Ejecutivo separado para cada procesador.
• Tratamiento simétrico (o anónimo) para todos los procesadores.
• Maestro / Satélite - Es la organización más fácil de implementar.
No logra la utilización óptima del hardware dado que sólo el procesador maestro puede ejecutar el Sistema Operativo y el procesador satélite sólo puede ejecutar programas del usuario.
Las interrupciones generadas por los procesos en ejecución en los procesadores satélites que precisan atención del Sistema Operativo deben ser atendidas por el procesador maestro y por ello pueden generarse largas colas de requerimientos pendientes.
• Ejecutivos Separados - Cada procesador tiene su propio Sistema Operativo y responde a interrupciones de los usuarios que operan en ese procesador.
Existen tablas de control con información global de todo el sistema (por ejemplo, lista de procesadores conocidos por el Sistema Operativo) a las que se debe acceder utilizando exclusión mutua.
Es más confiable que la organización maestro / satélite.
Cada procesador controla sus propios recursos dedicados.
La reconfiguración de los dispositivos de Entrada / Salida puede implicar el cambio de dispositivos a diferentes procesadores con distintos Sistemas Operativos.
La contención sobre las tablas del Sistema Operativo es mínima.
Los procesadores no cooperan en la ejecución de un proceso individual, que habrá sido asignado a uno de ellos.
• Tratamiento Simétrico - Es la organización más complicada de implementar y también la más poderosa y confiable.
El Sistema Operativo administra un grupo de procesadores idénticos, donde cualquiera puede utilizar cualquier dispositivo de Entrada / Salida y cualquiera puede referenciar a cualquier unidad de almacenamiento.
El Sistema Operativo precisa código reentrarte y exclusión mutua.
Es posible equilibrar la carga de trabajo más precisamente que en las otras organizaciones.
Adquieren significativa importancia el hardware y el software para resolución de conflictos.
Todos los procesadores pueden cooperar en la ejecución de un proceso determinado.
El procesador ejecutivo es el responsable (uno sólo) en un momento dado de las tablas y funciones del sistema; así se evitan los conflictos sobre la información global.
| edit post




| edit post
UNIDAD II ADMINISTRACION DE PROCESOS
AHORA BIEN LES PRESENTAREMOS LA UNIDAD DOS DANDO DESARROLLO A CADA UNO DE LOS PUNTOS DE LA ADMINISTRACION DE PROCESOS.
| edit post
2.1 Descripcion Y Control De Procesos Sistemas Operativos
• En algunos sistemas operativos como en los de tiempo compartido, cada programa que se ejecuta, por ejemplo mediante una orden de EJECUTAR dada por el usuario, se trata como un proceso independiente. Estos procesos generados por el O.S se denominan IMPLÍCITOS. Una vez terminada la ejecución de los mismos, su eliminación también la realiza el propio O.S. Asi mismo, el O.S proporciona en tiempo real los servicios que son necesarios para que el usuario pueda definir procesos de forma explicita. Los programa acceden a estos servicios realizando LLAMADAS AL SISTEMA(SYSTEM CALL).
• Estas llamadas pueden aparecer incrustadas en el código de un programa de usuario o del propio sistema, en cuyo caso, se asemejan a llamadas a procedimientos o funciones que dan lugar a transferencias de rutinas del O.S cuando se invocan en tiempo real. Las llamadas al sistema se realizan tambien, pero de forma indirecta, cuando se dan ordenes al O.S a través de un terminal(ó SHELL)la rutina de monitorización del terminal( que es asu vez un proceso) se encarga de transformar la ordenes en llamadas al sistema.
• De este modo, al comienzo de la ejecución del programa principal de un usuario se inicia la ejecución de un proceso. A su vez el proceso podría crear nuevos procesos. En este caso, el proceso que crea otro nuevo se denomina proceso padre(parent process), y el proceso creado de denomina proceso hijo(child process). Una vez creado un proceso hijo, la ejecución de padre e hijo transcurre de manera concurrente. De esta forma se puede crear una jerarquía arborescente de procesos, en la que un padre puede tener varios hijos y estos pueden tener otros hijos, etc, pero donde cada hijo sólo tiene un padre.
| edit post
2.2 Definicion De Proceso Sistemas Operativos
Un proceso es una instancia de ejecución de un programa, caracterizado por su contador de programa, su palabra de estado(Palabra que recoge en binario el estado del entorno de programa, después de la ejecución de cada instrucción.), sus registros ( pequeña memoria interna del microprocesador, formada generalmente por biestables) del procesador, su segmento de texto, pila (zona reservada de la memoria o registros hardware donde se almacena temporalmente el estado o información de un programa, rutina, etc..) y datos, etc.
| edit post
2.3 Estados De Procesos Sistemas Operativos
Como se ha puesto de manifiesto, el proceso es un elemento dinámico que puede pasar por diferentes estados a lo lo largo de su existencia. De forma general, un proceso puede encontrarse en un instante determinado en uno de lo siguientes estados:
• Activo, Preparado, Bloqueado o suspendido, Nonato y Muerto.
• La tarea activa es la que está ejecutándose en un instante dado.En el caso de sistemas con un único procesador, sólo puede haber una tarea en dicho estado en cada instante.
• En el estado de preparado, se encuentran todas las tareas que están listas para ejecutarse pero que esperan a que un/el procesador quede libre(hay otros procesos más prioritarios en ejecución).
• Las tareas que están a la espera de que se cumpla una condición y que por lo tanto, no están preparadas para ejecutase, se dice que están en el estado bloqueado o suspendido; alguno ejemplos de condición son: que se termine una operación de E/S o que se reciba una señal de sincronización.
• Un proceso esta muerto cuando ha terminado su ejecución o bien el sistema operativo a detectado un error fatal y lo ha transferido a dicho estado. Tambien es posible que haya entrado él como resultado de un fallo del propio sistema operativo(cuestión que desgraciadamente suele ocurrir frecuentemente en algunos OS.
• El estado de nonato indica que el programa realmente existe pero todavía no es conocido por el OS.
| edit post
2.4 Control De Procesos Sistemas Operativos
• La mayoría de los procesadores dan soporte para dos modos de ejecución por lo menos. Ciertas instrucciones pueden ejecutarse sólo en modo privilegiado. Entre éstas están la lectura o modificación de registros de control (como la palabra de estado del programa), instrucciones primitivas de E/S e instrucciones relativas a la gestión de memoria. Además, se puede acceder a ciertas regiones de memoria sólo en el modo más privilegiado.
• El modo menos privilegiado a menudo se conoce como modo de usuario, ya que los pro¬ gramas de usuario ejecutan normalmente en ese modo. Al modo más privilegiado normal¬ mente se le conoce como modo del sistema, modo de controlo modo del núcleo. Este último término se refiere al núcleo del sistema operativo, que es la parte del sistema operativo que lleva a cabo las funciones importantes del sistema.
• La razón por la que se usan dos modos debe quedar clara. Es necesario proteger al sistema operativo y a las tablas importantes del mismo, tales como los bloques de control de procesos, de las injerencias de los programas de usuario. En el modo del núcleo, el software tiene control completo del procesador y de todas sus instrucciones, registros y memoria. Este nivel de con¬ trol no es necesario y, por seguridad, tampoco conveniente para los programas de usuario.

• Surgen dos preguntas: ¿Cómo conoce el procesador en qué modo va a ejecutar? ¿Cómo se cambia de modo? Para la primera pregunta, normalmente hay un bit en la PSW que indica el modo de ejecución. El bit es cambiado como respuesta a ciertos sucesos. Por ejemplo, cuando un usuario hace una llamada a un servicio del sistema operativo, el modo se cambia al de núcleo. Esto se suele llevar a cabo ejecutando una instrucción que cambia el modo. Un ejemplo de cómo se hace esto es la instrucción de Cambio de Modo (CHM, Change Mode) del VAX.
| edit post
2.5 Procesos E Hilos
Procesos E Hilos
1. Definición de proceso.
Espíritu animado de un programa
Es una ejecución concreta de un programa, con un camino determinado y un valor de sus variables determinados.
La unidad mínima de expedición y de asignación de recursos es el proceso.
2. Estados en los que puede estar un proceso.
• Listo. Tiene todo lo necesario para ejecutarse excepto el procesador.
• Suspendido. No está en memoria principal.
• Bloqueado. Está esperando un evento.
• Bloqueado y suspendido.
• Listo y suspendido.
3. Tareas e hilos.
Unidad mínima de asignación: tarea.
Unidad mínima de expedición: hilo.
Dos hilos de una misma tarea (denominados hilos pares) comparten el segmento de código, el segmento de datos y un espacio de pila, es decir, los recursos asignados a la tarea.
Podemos captar la funcionalidad de los hilos si comparamos el control de múltiples hilos con el control de múltiples procesos. En el caso de los procesos, cada uno opera independientemente de los otros; cada proceso tiene su propio contador de programa, registro de pila, y espacio de direcciones. Este tipo de organización es muy útil cuando los trabajos que los procesos efectúan no tienen ninguna relación entre si.
Pero cuando los trabajos a realizar van a necesitar, por ejemplo, la llamada a una misma función o bien, la compartición de una variable en memoria, nos interesará englobarlos en una tarea. Ej: Avion-Torre.
Cuando un hilo está en ejecución, posee el acceso a todos los recursos que tiene asignados la tarea.
Un hilo tendrá lo siguiente:
• Estado.
• Contexto del procesador. Punto en el que estamos ejecutando, la instrucción concretamente en la que nos hallamos.
Es útil a la hora de reanudar un hilo que fue interrumpido con anterioridad, puesto que al guardar el contexto, guardamos la ultima instrucción que ejecutamos, y así podemos conocer por donde tenemos que continuar la ejecución del hilo.
• Pila de ejecución donde se irá metiendo y sacando instrucciones.
(Lugar donde almacenaremos las instrucciones que van a ser ejecutadas).
• Espacio de almacenamiento estático donde almacenará las variables.
• Acceso a los recursos de la tarea, que son compartidos por todos los hilos de la tarea.
• Ventajas del uso de hilos.
• Se tarda menos tiempo en crear un hilo de una tarea existente que en crear un nuevo proceso.
• Se tarda menos tiempo en terminar un hilo que en terminar un proceso.
• Se tarda menos tiempo en cambiar entre dos hilos de una misma tarea que en cambiar entre dos procesos (porque los recursos no cambian, por ejemplo)
• Es mas sencillo la comunicación (paso de mensajes por ejemplo) entre hilos de una misma tarea que entre diferentes procesos.
• Cuando se cambia de un proceso a otro, tiene que intervenir el núcleo del sistema operativo para que haya protección.
Cuando se cambia de un hilo a otro, puesto que la asignación de recursos es la misma, no hace falta que intervenga el sistema operativo.
| edit post
2.6 Concurrencia Exclusion Mutua Y Sincronizacion
Concurrencia: exclusión mutua y sincronización
Los temas fundamentales del diseño de sistemas operativos están relacionados con la gestión de procesos e hilos:
• Multiprogramación: consiste en la gestión de varios procesos dentro de un sistema mono-procesador.
• Multiprocesamiento: consiste en la gestión de varios procesos, dentro de un sistema multiprocesador.
• Procesamiento distribuido: consiste en la gestión de varios procesos, ejecutándose en sistemas de computadores múltiples y distribuidos. La reciente proliferación de las agrupaciones es el principal ejemplo de este tipo de sistemas.
La concurrencia es fundamental en todas estas áreas y para el diseño sistemas operativos. La concurrencia comprende un gran número de cuestiones de diseño, incluida 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. Se verá que estas cuestiones no solo surgen en entornos de multiprocesadores y proceso distribuido, sino incluso en sistemas multiprogramados con un solo procesador.
La concurrencia puede presentarse en tres contextos diferentes:
• Múltiples aplicaciones: la multiprogramación se creó para permitir que el tiempo de procesador de la máquina fuese compartido dinámicamente entre varias aplicaciones activas.
• Aplicaciones estructuradas: como ampliación de los principios del diseño modular y la programación estructurada, algunas aplicaciones pueden implementarse eficazmente como un conjunto de procesos concurrentes.
• Estructura del sistema operativo: las mismas ventajas de estructuración son aplicables a los programadores de sistemas y se ha comprobado que algunos sistemas operativos están implementados como un conjunto de procesos o hilos.
PRINCIPIOS GENERALES DE LA CONCURRENCIA
En un sistema multiprogramado con un único procesador, los procesos se intercalan en el tiempo aparentando una ejecución simultánea. Aunque no se logra un procesamiento paralelo y produce una sobrecarga en los intercambios de procesos, la ejecución intercalada produce beneficios en la eficiencia del procesamiento y en la estructuración de los programas.
La intercalación y la superposición pueden contemplarse como ejemplos de procesamiento concurrente en un sistema monoprocesador, los problemas son consecuencia de la velocidad de ejecución de los procesos que no pueden predecirse y depende de las actividades de otros procesos, de la forma en que el sistema operativo trata las interrupciones surgen las siguientes dificultades:
Compartir recursos globales es riesgoso Para el sistema operativo es difícil gestionar la asignación óptima de recursos. Las dificultades anteriores también se presentan en los sistemas multiprocesador.
El hecho de compartir recursos ocasiona problemas, por esto es necesario proteger a dichos recursos.
Los problemas de concurrencia se producen incluso cuando hay un único procesado
LABORES DEL SISTEMA OPERATIVO
Elementos de gestión y diseño que surgen por causa de la concurrencia:
1) El sistema operativo debe seguir a los distintos procesos activos
2) El sistema operativo debe asignar y retirar los distintos recursos a cada proceso activo, entre estos se incluyen:
_Tiempo de procesador
_Memoria
_Archivos
_Dispositivos de E/S
3) El sistema operativo debe proteger los datos y los recursos físicos de cada proceso contra injerencias no intencionadas de otros procesos.
4) Los resultados de un proceso deben ser independientes de la velocidad a la que se realiza la ejecución de otros procesos concurrentes.
Para abordar la independencia de la velocidad debemos ver las formas en las que los procesos interactúan.
INTERACCIÓN ENTRE PROCESOS
Se puede clasificar los en que interactúan los procesos en función del nivel de conocimiento que cada proceso tiene de la existencia de los demás. Existen tres niveles de conocimiento:
1) Los procesos no tienen conocimiento de los demás: son procesos independientes que no operan juntos. Ej: la multiprogramación de procesos independientes. Aunque los procesos no trabajen juntos, el sistema operativo se encarga de la “competencia” por los recursos.
2) Los procesos tienen un conocimiento indirecto de los otros: los procesos no conocen a los otros por sus identificadores de proceso, pero muestran cooperación el objeto común.
3) Los procesos tienen conocimiento directo de los otros: los procesos se comunican por el identificador de proceso y pueden trabajar conjuntamente.
Competencia entre procesos por los recursos
Los procesos concurrentes entran en conflicto cuando compiten por el uso del mismo recurso; dos o más procesos necesitan acceder a un recurso durante su ejecución .Cada proceso debe dejar tal y como esté el estado del recurso que utilice.
La ejecución de un proceso puede influir en el comportamiento de los procesos que compiten. Por Ej. Si dos procesos desean acceder a un recurso, el sistema operativo le asignará el recurso a uno y el otro tendrá que esperar.
Cuando hay procesos en competencia, se deben solucionar tres problemas de control: la necesidad de exclusión mutua. Suponiendo que dos procesos quieren acceder a un recurso no compartible. A estos recursos se les llama “recursos críticos” y la parte del programa que los utiliza es la “sección crítica” del programa. Es importante que sólo un programa pueda acceder a su sección crítica en un momento dado.
Hacer que se cumpla la exclusión mutua provoca un interbloqueo.
Otro problema es la inanición si tres procesos necesitan acceder a un recurso, P1 posee al recurso, luego lo abandona y le concede el acceso al siguiente proceso P2, P1 solicita acceso de nuevo y el sistema operativo concede el acceso a P1 YP2 alternativamente, se puede negar indefinidamente a P3 el acceso al recurso.
El control de competencia involucra al sistema operativo, porque es el que asigna los recursos.
Cooperación entre procesos por compartimiento Comprende los procesos que interactúan con otros sin tener conocimiento explícito de ellos. Ej. : Varios procesos pueden tener acceso a variables compartidas.
Los procesos deben cooperar para asegurar que los datos que se comparten se gestionan correctamente. Los mecanismos de control deben garantizar la integridad de los datos compartidos.
Cooperación entre procesos por comunicación Los distintos procesos participan en una labor común que une a todos los procesos.
La comunicación sincroniza o coordina las distintas actividades, está formada por mensajes de algún tipo. Las primitivas para enviar y recibir mensajes, vienen dadas como parte del lenguaje de programación o por el núcleo del sistema operativo
REQUISITOS PARA LA EXCLUSIÓN MUTUA
Sólo un proceso, de todos los que poseen secciones críticas por el mismo recurso compartido, debe tener permiso para entrar en ella en un momento dado. Un proceso que se interrumpe en una sección no crítica debe hacerlo sin interferir con los otros procesos. Un proceso no debe poder solicitar acceso a una sección crítica para después ser demorado indefinidamente, no puede permitirse el interbloqueo o la inanición. Si ningún proceso está en su sección crítica, cualquier proceso que solicite entrar en la suya debe poder hacerlo sin demora. No se debe suponer sobre la velocidad relativa de los procesos o el número de procesadores. Un proceso permanece en su sección crítica por un tiempo finito. Una manera de satisfacer los requisitos de exclusión mutua es dejar la responsabilidad a los procesos que deseen ejecutar concurrentemente. Tanto si son programas del sistema como de aplicación, los procesos deben coordinarse unos con otros para cumplir la exclusión mutua, sin ayuda del lenguaje de programación o del sistema operativo. Estos métodos se conocen como soluciones por software.
EXCLUSIÓN MUTUA: SOLUCIONES POR SOFTWARE
Pueden implementarse soluciones de software para los procesos concurrentes que se ejecuten en máquinas monoprocesador o multiprocesador con memoria principal compartida.
ALGORITMO DE DEKKER
La solución se desarrolla por etapas. Este método ilustra la mayoría de los errores habituales que se producen en la construcción de programas concurrentes.
Primer intento
Cualquier intento de exclusión mutua debe depender de algunos mecanismos básicos de exclusión en el hardware. El más habitual es que sólo se puede acceder a una posición de memoria en cada instante, teniendo en cuenta esto se reserva una posición de memoria global llamada turno. Un proceso que desea ejecutar su sección crítica primero evalúa el contenido de turno. Si el valor de turno es igual al número del proceso, el proceso puede continuar con su sección crítica. En otro caso el proceso debe esperar. El proceso en espera, lee repetitivamente el valor de turno hasta que puede entrar en su sección crítica. Este procedimiento se llama espera activa.
Después de que un proceso accede a su sección crítica y termina con ella, debe actualizar el valor de turno para el otro proceso.
Segundo intento:
Cada proceso debe tener su propia llave de la sección crítica para que, si uno de ellos falla, pueda seguir accediendo a su sección crítica; para esto se define un vector booleano señal. Cada proceso puede evaluar el valor de señal del otro, pero no modificarlo. Cuando un proceso desea entrar en su sección crítica, comprueba la variable señal del otro hasta que tiene el valor falso (indica que el otro proceso no está en su sección crítica). Asigna a su propia señal el valor cierto y entra en su sección crítica. Cuando deja su sección crítica asigna falso a su señal.
Si uno de los procesos falla fuera de la sección crítica, incluso el código para dar valor a las variables señal, el otro proceso no se queda bloqueado. El otro proceso puede entrar en su sección crítica tantas veces como quiera, porque la variable señal del otro proceso está siempre en falso. Pero si un proceso falla en su sección crítica o después de haber asignado cierto a su señal, el otro proceso estará bloqueado permanentemente.
Tercer intento
El segundo intento falla porque un proceso puede cambiar su estado después de que el otro proceso lo ha comprobado pero antes de que pueda entrar en su sección crítica.
Si un proceso falla dentro de su sección crítica, incluso el código que da valor a la variable señal que controla el acceso a la sección crítica, el otro proceso se bloquea y si un proceso falla fuera de su sección crítica, el otro proceso no se bloquea.
Si ambos procesos ponen sus variables señal a cierto antes de que ambos hayan ejecutado una sentencia, cada uno pensará que el otro ha entrado en su sección crítica, generando así un interbloqueo.
Cuarto intento
En el tercer intento, un proceso fijaba su estado sin conocer el estado del otro. Se puede arreglar esto haciendo que los procesos activen su señal para indicar que desean entrar en la sección crítica pero deben estar listos para desactivar la variable señal y ceder la preferencia al otro proceso.
Existe una situación llamada bloqueo vital, esto no es un interbloqueo, porque cualquier cambio en la velocidad relativa de los procesos rompería este ciclo y permitiría a uno entrar en la sección crítica. Recordando que el interbloqueo se produce cuando un conjunto de procesos desean entrar en sus secciones críticas, pero ninguno lo consigue. Con el bloqueo vital hay posibles secuencias de ejecución con éxito.
Una solución correcta
Hay que observar el estado de ambos procesos, que está dado por la variable señal, pero es necesario imponer orden en la actividad de los procesos para evitar el problema de “cortesía mutua”. La variable turno del primer intento puede usarse en esta labor, indicando que proceso tiene prioridad para exigir la entrada a su sección crítica.
ALGORITMO DE PETERSON
El algoritmo de Deker resuelve el problema de la exclusión mutua pero mediante un programa complejo, difícil de seguir y cuya corrección es difícil de demostrar. Peterson ha desarrollado una solución simple y elegante. Como antes, la variable global señal indica la posición de cada proceso con respecto a la exclusión mutua y la variable global turno resuelve los conflictos de simultaneidad.
Considérese el proceso P0. Una vez que ha puesto señal[0] a cierto, P1 no puede entrar en su sección crítica. Si P1 esta aun en su sección crítica, entonces señal[1] = cierto y P0 está bloqueado en su bucle while. Esto significa que señal[1] es cierto y turno = 1. P0 puede entrar en su sección crítica cuando señal[1] se ponga a falso o cuando turno se ponga a 0. Considérense ahora los siguientes casos exhaustivos:
P1 no está interesado en entrar en su sección crítica. Este caso es imposible porque implica que señal[1] = falso. P1 está esperando entrar en su sección crítica. Este caso es también imposible porque si turno = 1, P1 podría entrar en su sección crítica. P1 entra en su sección crítica varias veces y monopoliza el acceso a ella. Esto no puede pasar porque P1 está obligado a dar a P0 una oportunidad poniendo turno a 0 antes de cada intento de entrar en su sección crítica. Así pues, se tiene una solución posible al problema de la exclusión mutua para dos procesos. Es más, el algoritmo de Peterson se puede generalizar fácilmente al caso de n procesos.
Disciplina de cola
La disciplina de cola mas simple es la de primero en llegar/ primero en salir, pero ésta puede no ser suficiente si algunos mensajes son mas urgentes que otros. Una alternativa es permitir la especificación de prioridades de los mensajes, en función del tipo de mensaje o por designación del emisor. Otra alternativa es permitir al receptor examinar la cola de mensajes y seleccionar el mensaje a recibir a continuación.
Exclusión mutua
Supóngase que se usan primitivas receive bloqueantes y send no bloqueantes. Un conjunto de procesos concurrentes comparten un buzón, exmut, que puede ser usado por todos los procesos para enviar y recibir. El buzón contiene inicialmente un único mensaje, de contenido nulo. Un proceso que desea entrar en su sección crítica intenta primero recibir el mensaje. Si el buzón está vacío, el proceso se bloquea. Una vez que un proceso ha conseguido el mensaje, ejecuta su sección crítica y, después, devuelve el mensaje al buzón. De este modo, el mensaje funciona como testigo que se pasa de un proceso a otro.
Esta técnica supone que si hay más de un proceso ejecutando la acción receive concurrentemente, entonces:
Si hay un mensaje, se entrega sólo a uno de los procesos y los otros se bloquean. Si el buzón está vacío, todos los procesos se bloquean; cuando haya un mensaje disponible, sólo se activará y tomará el mensaje uno de los procesos bloqueados.
EXCLUSIÓN MUTUA: SOLUCIONES POR HARDWARE
| edit post
2.7 Principios Generales De Concurrencia
En un sistema multiprogramado con un único procesador, los procesos se intercalan en el tiempo aparentando una ejecución simultánea. Aunque no se logra un procesamiento paralelo y produce una sobrecarga en los intercambios de procesos, la ejecución intercalada produce beneficios en la eficiencia del procesamiento y en la estructuración de los programas. La intercalación y la superposición pueden contemplarse como ejemplos de procesamiento concurrente en un sistema monoprocesador, los problemas son consecuencia de la velocidad de ejecución de los procesos que no pueden predecirse y depende de las actividades de otros procesos, de la forma en que el sistema operativo trata las interrupciones surgen las siguientes dificultades:
1. Compartir recursos globales es riesgoso
2. Para el sistema operativo es difícil gestionar la asignación óptima de recursos.
| edit post
2.8 Exclusion Mutua
EL TEMA Exclusion Mutua ENCUENTRA ESPERANDO TUS CONOCIMIENTOS.
Estoy invitando a todos los maestros y profesionales de esta area y/o carrera a colaborar construyendo este sitio dedicado a esta hermosa y util profesion aportando el material apropiado a cada uno de los mas de 1,000 temas que lo componen.
Tambien los invito a aportar material a los mas de 20,000 temas que constituyen las 20 carreras profesionales que se imparten en los Institutos Tecnologicos de Mexico y se encuentran en este sitio.
| edit post
2.9 Semaforos Sistemas Operativos
Semáforos es un algoritmo de control de procesos, que tiene solo dos operaciones básicas, las cuales son:
Wait.- Pregunta a los procesos si su contador es > ó = que cero, en caso de no ser así, los decrementa. El proceso que cambia en este caso a negativo (−1) desde la cola de procesos Listos a ser ejecutados es el que automáticamente toma el control del procesador.
Signal.- A partir de un tiempo t definido por el despachador se ejecuta, y pregunta a los procesos si su contador es < que cero en caso de que sea afirmativa la respuesta, saca a este proceso de su ejecución y depende de su estado
| edit post
2.10 Monitores Sistemas Operativos
Un monitor encapsula el código relativo a un recurso compartido en un solo módulo de programa; ventajas:
• mantenimiento más simple
• menos errores de programación
La interfaz del monitor es un conjunto de funciones que representan las diferentes operaciones que pueden hacerse con el recurso
La implementación del monitor garantiza la exclusión mutua
• mediante semáforos o algún otro mecanismo
• o implícitamente en los lenguajes concurrentes
| edit post
2.11 Paso De Mensajes Sistemas Operativos
Paso de mensajes
El paso de mensajes es una técnica empleada en programación concurrente para aportar sincronización entre procesos y permitir la exclusión mutua, de manera similar a como se hace con los semáforos, monitores, etc.
Su principal característica es que no precisa de memoria compartida, por lo que es muy importante en la programación para sistemas distribuidos.
Los elementos principales que intervienen en el paso de mensajes son el proceso que envía, el que recibe y el mensaje.
| edit post
2.12 Concurrencia E Interbloqueo Deadlock
DEADLOCK
Los procesos no son ejecutados constantemente desde que se inician hasta que son finalizados.
Un proceso puede estar identificado con tres estados diferentes: leyendo (ready), ejecutando (running) o bloqueado (blocked). En el estado de lectura, un proceso está parado, concediendo que otro proceso sea ejecutado; en el estado de ejecución, un proceso está utilizando algún recurso; y en el estado de bloqueo, el proceso está parado y no se ejecutará mientras algo lo restaure.
Una condición común no deseable es descripta como deadlock, que es cuando dos procesos están en un estado de ejecución, y requieren intercambiar recursos entre sí para continuar. Ambos procesos están esperando por la liberación del recurso requerido, que nunca será realizada; como no hay ningún resultado, tomará un camino que llevará a un estado de deadlock.
Muchos escenarios han sido construidos para ilustrar las condiciones de deadlock, siendo el más popular el Problema de Comida de los Filósofos. Cinco filósofos tienen cinco platos de fideos enfrente suyo y cinco tenedores, uno a cada lado del plato. Los filósofos necesitan ambos tenedores (derecha e izquierda) para comer. Durante la comida realizarán solo dos operaciones mutuamente excluyentes, pensar o comer. El problema es un paralelismo simplista entre procesos (los filósofos) tratando de obtener recursos (tenedores); mientras están en estado de ejecución (comiendo) o de lectura (pensando). Una condición posible de deadlock puede ocurrir, si todos los filósofos quieren coger el tenedor de la derecha y, a la vez, el de la izquierda: la comida terminará en estado de deadlock.
Se dice que dos procesos se encuentran en estado de deadlock (interbloqueo, bloqueo mutuo o abrazo mortal) cuando están esperando por condiciones que nunca se van a cumplir. Se podría hablar de deadlock como el estado permanente de bloqueo de un conjunto de procesos que están compitiendo por recursos del sistema.
| edit post
2.13 PRINCIPIOS DEL INTERBLOQUEO
El interbloqueo se puede definir como 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.
| edit post
2.14 Acciones Realizar En Interbloqueo
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.
En la mayoría de los casos, estas condiciones son bastantes necesarias. La exclusión mutua hace falta para asegurar la consistencia de resultados y la integridad de la base de datos. De forma similar, la apropiación no se puede aplicar arbitrariamente y, cuando se encuentran involucrados recursos de datos, debe estar acompañada de un mecanismo de recuperación y reanulación, que devuelva un proceso y sus recursos a un estado previo adecuado, desde el que el proceso puede finalmente repetir sus acciones.
Puede no existir interbloqueo con solo estas tres condiciones. Para que se produzca interbloqueo, se necesita una cuarta condición:
4- Condición de espera circular (o circulo vicioso de espera): Debe existir una cadena circular de dos o mas procesos, cada uno de los cuales espera un recurso poseído por el siguiente miembro de la cadena.
Las tres primeras condiciones son necesarias, pero no suficientes, para que exista interbloqueo. La cuarta condición es, en realidad, una consecuencia potencial de las tres primeras. Es decir, dado que se producen las tres primeras condiciones, puede ocurrir una secuencia de eventos que desemboque en un circulo vicioso de espera irresoluble. El circulo de espera de la condición 4 es irresoluble porque se mantienen las tres primeras condiciones. Las cuatro condiciones en conjunto constituyen una condición necesaria y suficiente para el interbloqueo.
PREVENCIÓN DEL INTERBLOQUEO
La estrategia básica de la prevención del interbloqueo consiste, a grandes rasgos, en diseñar su sistema de manera que esté excluida, a priori, la posibilidad de interbloqueo.
Los métodos para prevenir el interbloqueo son de dos tipos:
- Los métodos indirectos que consisten en impedir la aparición de alguna de las tres condiciones necesarias para que se de el interbloqeo.
- Los métodos directos que consisten en evitar la aparición del circulo vicioso de espera.
PREDICCIÓN DEL INTERBLOQUEO
Una forma de resolver el problema del interbloqueo, que se diferencia sutilmente de la prevención, es la predicción del interbloqueo. En la prevención de interbloqueo, se obligaba a las solicitudes de recursos a impedir que sucediera , por lo menos, alguna de las cuatro condiciones de interbloqueo. Esto se hace indirectamente, impidiendo la aparición de una de las tres condiciones necesarias (exclusión mutua, retención y espera, no apropiación) o directamente, impidiendo la aparición de un circulo viciosos de espera. Se llega así a un uso ineficiente de los recursos y una ejecución ineficiente de los procesos. Con predicción del interbloqueo, por otro lado, se pueden alcanzar las tres condiciones necesarias, pero se realizan elecciones acertadas para asegurar que nunca se llega al punto de interbloqueo. La predicción, por lo tanto, permite más concurrencia que la prevención. Con predicción del interbloqueo, se decide dinámicamente si la petición actual de asignación de un recurso podría, de concederse, llevar potencialmente a un interbloqueo. La predicción del interbloqueo necesita, por lo tanto, conocer las peticiones futuras de recursos. Enfoques para la predicción del interbloqueo: - - No iniciar un proceso si sus demandas pueden llevar a interbloqueo. - - No conceder una solicitud de incrementar los recursos de un proceso si esta asignación puede llevar a interbloqueo.
- DETECCIÓN DEL INTERBLOQUEO
- Las estrategias de prevención de interbloqueo son muy conservadoras; resuelven el problema limitando el acceso a recursos e imponiendo restricciones sobre los procesos. En cambio, las estrategias de detección de interbloqueo, no limitan el acceso a recursos ni restringen las acciones del proceso. Con la detección del interbloqueo, se concederán los recursos que los procesos necesiten siempre que sea posible. Periódicamente, el S. O. ejecuta un algoritmo que permite detectar la condición de circulo vicioso de espera. - La detección del interbloqueo es el proceso de determinar si realmente existe un interbloqueo e identificar los procesos y recursos implicados en él. Una posibilidad detectar un interbloqueo es monitorear cada cierto tiempo el estado de los recursos. Cada vez que se solicita o se devuelve un recurso, se actualiza el estado de los recursos y se hace una verificación para observar si existe algún ciclo. - Este método está basado en suponer que un interbloqueo no se presente y que los recursos del sistema que han sido asignados, se liberarán en el momento que otro proceso lo requiera
| edit post
guia de la unidad II

*GUIA DE ESTUDIO UNIDAD II*

1.     ¿Qué es un proceso?
Se refiere a las instrucciones que ejecutara el procesador, mientras que lee un problema determinado.

2.     ¿Qué es concurrencia?
Es la ejecución de procesos al mismo tiempo.

3.     ¿Cuáles son los estados de los procesos?
     Corriendo (Running)
    Listo (Ready)
    Bloqueado (blocked)

4.     ¿Qué es una bandera y donde se aplica?
Es la que te indica si el proceso se va a aplicar, o hay que esperar y se aplica en el sistema.

5.     ¿Qué diferencia existe entre semáforo y monitor?
El  monitor es más fácil de usar que los semáforos. Semáforo general: dos o más procesos pueden cooperar por medio de simples señales de forma que se pueda obligar a detener a un proceso en una posición determinada hasta que reciba una señal específica. un  monitor es una colección de procedimientos y datos, agrupados en una especie de módulo muy especial conocido como módulo monitor. Los procesos pueden llamar a los procedimientos del monitor siempre que lo deseen, pero no pueden acceder directamente a las estructuras de datos internas del monitor desde procedimientos declarados fuera del monitor.


6.     Investigue dentro de Windows y Linux como matar un proceso
Windows: ctrl+alt+supr
Linux: primer debes mostrar la lista de procesos activos y luego con su PID (identificador situado en la segunda columna) matarlo, Si ya estás cansado de hacerlo de esta forma, tienes PsDoom, una herramienta con la que podemos tratar con los procesos jugando al Doom. Cada uno de los procesos aparecerá como un “monstruo” con su pid y su nombre. Para matarlo simplemente habrá que acribillarlo. xD


7.     ¿En qué consiste la técnica de interbloqueo?
Es cuando varios procesos  piden el mismo recurso y se salva.

8.     ¿Cuáles son las condiciones para producir un interbloqueo?
Antes de interbloquear debe existir concurrencia y se produce un bloque permanente.






        9.  Defina los conceptos de:
a) Sincronización: Ejecución simultanea  de dos procesos.
b) Exclusión mutua: Comunicación requerida entre uno o dos procesos.
c) Semáforo: Son aquellos que solucionan problemas de procesos concurrentes de manera fiable.


10.¿Cuáles son los 5 estados de los procesos y sus similitudes?
     Inicio
     Espera
     Ejecución
   Bloqueado
     Liberado
      Listo
  Suspendido
     Bloqueado
    Bloqueado- Suspendido
    Listo y suspendido



| edit post