sábado, 12 de diciembre de 2009

***CuEsTiOnArIo***

EQUIPO 1

1.-¿Que es un controlador de dispositivo?
R= PERMITE QUE EL SO INTERACTUÉ CON EL PERIFÉRICO HACIENDO UNA ABSTRACCIÓN DE HW

2.- ¿Cuales son las bases que utilizan los dispositivos de E/S?
R= BUS INTERNO, BIS DE DIRECCIÓN BUS DE DATOS

EQUIPO 2

1.- Menciona dos objetivos del Sw
R= MANEJO DE ERRORES, EXPLORA LAS CAPACIDADES DEL HW

2.- Menciona dos maneras de interactuar con las tarjetas calculadoras
R=SONDEOS, MANEJADORES DE INTERRUPCIONES

EQUIPO 3

1.- Menciona la labor de un manipulador de dispositivos
R= ACEPTAR LAS SOLICITUDES ABSTRACTAS Y HACER AL SW INDEPENDIENTE UN DISPOSITIVO, VERIFICA LA EJECUCION DE DICHA SOLICITUD

2.- Menciona otra labor de un manejador de dispositivos
R= ESTIMAR EL LUGAR DONDE SE ENCUENTRAN EN REALIDAD

EQUIPO 4

1.- ¿Que son los discos duros?
R= UN DISPOSITIVO NO VOLATIL QUE CONSERVA LA INFORMACION, PERDIDA DE ENERGIA QUE EMPLEA EL SISTEMA DE GRABACION MAGNETICA DIGITAL

2.- ¿Que son los discos RAM?
R= ES UNA UNIDAD DE DISCOS QUE UTILIZA LA MEMORIA RAM DE LA COMPUTADORA PARA ALMACENAR DATOS COMO SI TRATASE DE UN DISCO DURO

EQUIPO 5

1.-¿Cual es la función del disco duro?
R= PERMITE EL ALMACENAMIENTO Y RECUPERACION EN GRANDES CANTIDADES DE INFORMACION

2.- ¿Que es un reloj?
R= EL SISTEMA DE LA COMPUTADORA CUENTA CON UN CRISTAL DE CUARZO QUE VIBRA A DETERMIANDA FRECUENCIA

EQUIPO 6

1.- Menciona dos funciones del Sw de reloj
R= SE EJECUTA DURANTE MAS TIEMPO DEL PERMITIDO, MANTENER UN REGISTRO DEL USO DE LA COMPUTADORA

2.- Que es una terminal?
R=SE REFIERE AL DISPOSITIVO HW USADO PARA INTRODUCIR O MOSTRAR DATOS EN UNA COMPUTADORA

EQUIPO 7

1.- Menciona las categorías de terminales
R= TERMINALES TONTAS, PC’s CMO TERMINADO, TERMINALES X

2.- Menciona los tipos de manejadores de terminales que existen
R= LOS MANEJADORES DE TECLADO Y LOS MANEJADORES DE VIDEO

miércoles, 9 de diciembre de 2009

***DoS pReGuNtAs dE lA uNiDaD 5***

***PREGUNTAS DE LA UNIDAD 5***

**DE LOS TEMAS 5.5 AL 5.6**

1. ¿CUALES SON LAS PRINCIPALES FUNCIONES DEL RELOJ?
R=
*-*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.

2. ¿CUAL ES LA FUNCION DE LA TERMINAL Y COMO SE LE PUEDE LLAMAR?
R=
Su función es mostrar y recibir datos con capacidad significativa del procesador de datos, así como también permitiendo el uso simultaneo de programas locales y acceso a un servidor. Y puede ser llamado “Terminal inteligente o cliente lijero”.

sábado, 5 de diciembre de 2009

***PrAcTiCa 1 DeLiNuX***

***Comandos de linux***

A continuacion se mostraran algunos conamdos que se ejecutan en linux.

ALIAS




APT-GET




BC




BZIP2




CHATTR




HISTORY




MTOOLS




NICE




PS




PSTREE



ROUTE




SERVICE

***PrAcTiCa 2 y 3 De LiNuX***

Crear un directorio del equipo



en ese mismo directorio creamos carpetas que contenian los nombres de los integrantes y tambien creamos subdirectorios que contenian 2 caroetas con nuestros apellidos y en la del paterno contenia un documento donde tenia la informacion de todos los integrantes; en la del apellido materno tenia otro documento donde tenia la informacion del alumno.




carpetas con nombres













se muestran los directorios creados




Aqui se muestran las carpetas antes mencionadas de los apellidos




ahora mostramos el documento donde aparece el nombre de todos los integrantes.




ahora observaremos algunos comandos de linux



clrear: limpiar pantalla de terminal



ps: lista de procesos



date: fecha del sistema



kill: matar un proceso




ls: lista de directorios

domingo, 29 de noviembre de 2009

****MaS CoMaNdOs****

Comandos LINUX
1 adduser Ver useradd.
2 alias Crea atajos de comandos, lista los alias actuales.
3 apt-get Herramienta de actualizacón/instalación remota de paquetes en sistemas basados en debian.
4 arp Permite obtener/manipular la lista de direcciones MAC/Ip que el sistema ve.
5 awk Análisis y procesamiento de patrones en archivos y listados.
6 basename Permite eliminar la ruta del nombre de un archivo.
7 bc Calculadora y lenguaje matemático, muy potente.
8 bzip2 Compresor / descompresor de archivos.
9 cal Despliega un calendario.
10 cat Muestra el contenido de archivos y concatena archivos.
11 cd Cambiar de directorio.
12 cfdisk Herramienta de particionamiento de discos, usada en sistemas debian principalmente.
13 chage Permite cambiar la información (expiración, caducidad, etc) de la contraseña de un usuario.
14 chattr Cambia atributos extendidos de archivos y directorios
15 chgrp Cambia el grupo de un archivo(s) o carpetas(s).
16 chkconfig Controla/consulta el modo en que los servicios se ejecutan o no al inicio del sistema.
17 chmod Cambia los permisos de un archivo(s) o carpetas(s).
18 chown Cambia el propietario de un archivo(s) o carpetas(s).
19 chroot Ejecuta comandos de root en un shell restringido a un directorio y sus subdirectorios.
20 clear Limpia la terminal.
21 cmp Compara dos archivos byte por byte.
22 crontab Administra archivos cron para los usuarios y root.
23 curl Permite descargar o transferir url's.
24 cut Remueve secciones (columnas principalmente) de cada línea de un archivo o archivos.
25 date Muestra/establece la fecha y hora actual.
26 dd Convierte y copia archivos y sistemas de archivos.
27 df Muestra el uso de espacio de discos duros o particiones.
28 diff Busca y muestra diferencias entre archivos.
29 dig Utilería para consultas a servidores DNS.
30 dmesg Muestra los mensajes del arranque del sistema (boot).
31 dmidecode Lista hardware del equipo directamente del BIOS. (también: lshw)
32 dos2unix Convierte archivos de formato MS-DOS a formato Unix/Linux.
33 du Muestra el uso de espacio de archivos y directorios.
34 echo Imprime una línea de texto, variables, o contenido a un archivo.
35 edquota Administra el control de cuotas de disco de usuario y grupos.
36 eject Desmonta y expulsa un medio removible, como cdroms.
37 env Ejecuta un programa en un entorno modificado.
38 ethtool Permite desplegar o cambiar valores de una tarjeta de red.
39 exit Sale del shell o terminal actual.
40 export Exporta el valor de una variable.
41 expr Evaluador de expresiones matemáticas.
42 fc Lista, edita y reejecuta comandos previamente ejecutados.
43 fdisk Herramienta para particionar discos, común a casi todas las distros.
44 file Determina el tipo de archivo.
45 find Búsqueda de archivos, multitud de opciones de búsqueda.
46 fortune Imprime un adagio al azar.
47 free Muestra el espacio usado y libre de memoria RAM y Swap.
48 fsck Herramienta para verificar/reparar sistemas de archivos.
49 gawk Análisis y procesamiento de patrones en archivos y listados. (versión gnu)
50 gedit Editor de textos de gnome.
51 gpasswd Permite la administración del archivo /etc/group
52 gpg Herramienta de encriptación y de generación de certificados de seguridad (opengpg).
53 grep Busca patrones de cadenas dentro de archivos.
54 groupadd Crea un nuevo grupo en el sistema.
55 groupdel Elimina un grupo en el sistema.
56 groupmod Modifica un grupo en el sistema.
57 groups Imprime los grupos a los que pertenece un usuario.
58 gzip Comprime/expande archivos.
59 halt Apaga el equipo.
60 hdparm Establece y muestra características sobre los discos duros.
61 head Despliega las primera líneas de un archivo.
62 help Ayuda sobre los comandos internos de bash.
63 history Muestra el historial de comandos del usuario.
64 host Utileria de consulta a sevidores DNS.
65 hostname Despliega el nombre del equipo.
66 hwclock Muestra/Establece la fecha/hora del bios o hardware. (Fecha/Hora del sistema con date)
67 id Muestra el UID (User ID) y GID (Group ID) del usuario
68 ifconfig Muestra/Configura las interfaces de red del sistema.
69 init Control de inicialización de un nivel de ejecucción.
70 insmod Inserta módulos en el kernel.
71 ipcalc Realiza cálculos simples sobre direcciones IP.
72 ipcount Identificación de rangos de red, cálculo de IP's.
73 iptables Herramienta de configuración del firewall de Linux.
74 iptraf Analizador de tráfico de red en modo de texto.
75 iwconfig Configura una tarjeta de red inalámbrica.
76 iwlist Obtiene información detallada de una tarjeta inalámbrica.
77 jobs Muestra los trabajos del usuario en suspensión o en background.
78 kate Editor de textos de KDE.
79 kill Termina procesos, mas correctamente envía señales a procesos.
80 killall Termina procesos del mismo nombre o conjunto.
81 last Muestra información de los últimos usuarios logueados.
82 lastb Muestra información de los últimos intentos fallidos de loguearse.
83 less Muestra el contenido de un archivo, permite búsquedas y movimento hacía atrás y adelante.
84 ln Crea enlaces (accesos directos) suaves y duros de archivos y directorios.
85 locale Información específica sobre las variables de entorno locales.
86 locate Indexa y busca archivos. Mas seguro utilizar slocate.
87 losetup Define y controla dispositivos del tipo 'loop'.
88 lpq Muestra los documentos para imprimir en la cola de impresión.
89 lpr Añade un documento a la cola de impresión.
90 ls Lista archivos y directorios.
91 lshw Lista hardware del equipo directamente del BIOS. (también: dmidecode)
92 lsmod Muestra el estatus de los módulos en el kernel.
93 lsof Muestra archivos abiertos de un programa en ejecucción, o de un usuario, proceso, etc.
94 lspci Lista los dispositivos pci del sistema.
95 lsusb Lista los dispositivos usb del sistema.
96 man Muestra el manual del comando indicado.
97 mc Manejador de archvivos con soporte de mouse en modo de texto, no todas las distro lo tienen.
98 mcedit Editor de textos de mc.
99 md5sum Comprueba (y genera) archivos con firma de certificación md5.
100 mkdir Crea directorios.
101 mkfs Construye un sistema de archivos de Linux.
102 mkpasswd Generador de contraseñas. (Paquete del programa 'expect').
103 modinfo Muestra información acerca de los módulos del kernel.
104 modprobe Herramienta que añade/remueve módulos del kernel.
105 more Paginador similar a less pero menos funcioanal, ya que sale avanza y no retocede.
106 mount Monta dispositvos de almacenamiento en particiones indicadas.
107 mtools Conjunto de utilidades para acceder a discos DOS desde Linux.
108 mv Mueve archivos y directorios.
109 netstat Herramienta de red que muestra conexiones, tablas de ruteo, estadísticas de interfaces, etc.
110 nice Ejecuta un programa con una prioridad de ejecucción distinta a la normal.
111 nohup Ejecuta un programa inmune a los hangups y sin salida a una terminal.
112 openssl Control, administración, generación de certificados de seguridad.
113 passwd Cambia la contraseña del usuario indicado.
114 ping Manda un echo_request (solicitud de eco) a un equipo en al red.
115 pkill Manda señales a procesos basado en sus atributos.
116 pr Fromatea o convierte archivos de texto para imprimirlos.
117 ps Muestra los procesos del sistema o del usuario o ambos.
118 pstree Muestra los procesos en forma de árbol.
119 pwconv Agrega o establece la protección shadow el archivo /etc/passwd.
120 quota Permite ver el uso de cuotas por usuario.
121 quotacheck Crea, verifica, administra sistemas de cuotas de disco
122 quotaoff Desactiva el control de cuotas de discos.
123 quotaon Activa el control de cuotas de discos para usuarios y grupos.
124 rdesktop Abre terminales gráficas ha?ia equipos Windows.
125 reboot Reinicia el equipo.
126 renice Cambia la prioridad de un proceso o programa en ejecucción.
127 repquota Reporte de uso de cuotas de disco.
128 rev Invierte las líneas de un archivo.
129 rm Borra o elimina archivos.
130 route Muestra/altera la tabla de ruteo IP.
131 rpm Programa para la instalación/actualización/eliminación de paquetes, distros basadas en redhat.
132 runlevel Muestra el nivel de ejecución actual y anterior del sistema.
133 scp Copia archivos entre equipos, parte del paquete openssh (protocolo de comunicación encriptado).
134 screen Administrador de terminales virtuales.
135 sed Editor en línea que filtra y transforma archivos.
136 service Ejecuta/detiene servicios en modo manual.
137 set Muestra o establece el entorno de variables para el usuario actuual.
138 sha1sum Comprueba (y genera) archivos con firma de certificación sha1.
139 shred Elimina archivos de manera segura e irrecuperable.
140 shutdown Apaga o reinicia el equipo.
141 sort Ordena líneas de archivos y listas
142 ss Utileria similar a netstat pero más básica, listados rápidos de sockets establecidos.
143 ssh Programa de login remoto seguro, programa del paquete openssh (protocolo de comunicación encriptado).
144 startx Inicia una sesión X.
145 su Cambia del usuario actual al indicado.
146 sudo Permite indicar que usuario ejecuta que comandos de root.
147 sync Forza bloques en memoria a discos, actualiza el superbloque.
148 tac Igual que cat, muestra y/o concatena archivos pero al revés.
149 tail Muestra la parte final de un archivo.
150 tar Herramienta empaquetadora/compresora de archivos.
151 time Devuelve el tiempo en que se ejecutó el comando o programa indicado.
152 top Muestra los procesos del sistema de manera interactiva y continua.
153 touch Crea archivos vacios, cambia fechas de acceso y/o modificación de archivos.
154 tput Cambia valores o capacidades de la terminal, en base a terminfo.
155 tty Imprime el nombre de la terminal en la que se esta.
156 umask Establece una máscara de permisos para cuando se crean directorios y archivos.
157 umount Desmonta sistemas de archivos.
158 unalias Elimina alias de comandos, creados con el comando alias.
159 uname Despliega información del sistema.
160 uniq Omite o reporta sobre líneas repetidas en un archivo o listado.
161 up2date Herramienta de actualización/instalación remota de paquetes, (usada en redhat, centos).
162 uptime Muestra que tanto tiempo lleva prendido el equipo.
163 urpmi Herramienta de actualización/instalación remota de paquetes, distros basadas en rpm (usada en mandriva).
164 useradd Añade usuarios.
165 userdel Elimina usuarios.
166 usermod Modifica información de usuarios.
167 vi Editor visual de pantalla, editor de textos, que encuentras en todas las distros Linux.
168 vim Igual que el vi pero mejorado.
169 visudo Editor para el archivo de configuración /etc/sudoers de sudo.
170 vmstat Proporciona información sobre la memoria virtual.
171 vmstat Reporta estadísticas sobre la memoria virtual.
172 w Muestra quien esta conectado al sistema y que esta haciendo.
173 wall Manda un mensaje a todas las terminales.
174 warnquota Configura /etc/warnquota.conf como complemento de mensajes para cuotas de disco.
175 wc Cuenta palabras, líneas, caracteres de un archivo o listado.
176 wget Descargador de archivos desde Internet, no interactivo.
177 whereis Localiza el binario, fuentes y/o librerias, y documentación de un comado.
178 which Muestra la ruta completa de un comando.
179 who Muestra quien esta conectado al sistema.
180 xhost Control de acceso para sesiones X.
181 xkill Mata o termina a un cliente X, es decir, a un programa gráfico.
182 yes Imprime una cadena repetidamente hasta que sea terminado o matado el comando.
183 yum Herramienta de actualización/instalación remota de paquetes, distros basadas en rpm (usada en fedora, redhat y derivados).
184 zcat Descomprime / muestra archivos comprimidos con gunzip (es idéntico a utilizar gunzip -c)
185 zless Permite mostrar el contenido de archivos comprimidos.
186 zmore Permite mostrar el contenido de archivos comprimidos.

martes, 24 de noviembre de 2009

***CoMaNdOs De LiNuX***

***CoMaNdOs De LiNuX***

ADDUSER:permite añadir un usuario
ALIAS:atajos de comando
APT-GET:herramienta de actualizacion instalacion remoto de paquetes
ARP:obtener o manipular listas de direcciones MAC IP que el sistema ve
AWK:analisis y procesamiento de patrones en archivos y listados
BASENAME:permite elimeinar la ruta del nombre de un archivo
BC:calculadora y lenguaje matem{atico
BZIP2:compresor/descompresor de archivos
CAL:despliega un calendario
CAT:contenido de archivos y concatena archivos
CD:cambia de directorio
CFDISK:herramienta de particionamiento de discos usando sistemas debian principalmente
CHANGE:cambia informacion (expiracion, caducidad)de contraseña de usuario
CHATTR:cambia atributos extendidos de archivos y directorios
CHGRP:cambia grupo de archivos o carpeta
CHKCONFIG:controla la consulta el modo en que los servicios se ejecuten o no al inicio del sistema
CHMOD:cambiba permisos archivos o carpeta
chOWN:cambia propietario de archivo o carpeta
CHROOT:ejecuta comandos de root en un shell restringido a un directorio y su subdirectorio
CLEAR:limpia la terminal
CMP:compara dos archivos byte por byte
CRONTAB:administra archivos cron para los usuarios y root
CURL:descargar o transferir url´s

jueves, 19 de noviembre de 2009

UnIdAd 4 "AdMiNiStRaCiOn De lA MeMoRiA"

UNIDAD 4 “ADMINISTRRACION DE LA MEMORIA”

GESTION DE LA MEMORIA
La memoria es uno de los principales recursos de la computadora, el cual debe de administrarse con mucho cuidado.
La mayoría de los sistemas de computo cuenta con una alta capacidad de memoria.
En los sistemas multiusuario y multitarea es escaza la memoria.
Los sistemas de administración de la memoria se pueden clasificar en dos tipos:
 Los que desplazan los procesos de la memoria principal al disco.
 Los que desplazan los procesos del disco a la memoria principal.

ORGANIZACIÓN DE LA MEMORIA
Se refiere a los distintos métodos y operaciones se encargan de obtener la máxima utilidad de la memoria.
Organizando los procesos y programas que se ejecutan de igual manera que se aprovecha de la mejor manera posible el espacio disponible.
Existen 4 tipos de esquema de asignación de memoria.
 Configuración de un solo usuario
 Particiones fijas
 Particiones dinámicas
 Particiones dinámicas reubicables

ADMINISTRACION DE LA MEMORIA
Tres tipos de memoria
 MEMORIA EEPROM Donde se almacena el programa que hacemos, esta memoria solo podrá ser leída por el PIC (va leyendo las instruccioners del programa almacenado y las va ejecutando).
 MEMORIA RAM En cuyos registros se iran almacenando los valores de las vcariables que nosotros queramos, a través del PIC esta memoria se borra.
 MEMORIA EEPROM PARA DATOS Es un espacio de memoria en la que se pueden guardar variables que queramos conservar aunque se apague el PIC

JERARQUIA DE LA MEMORIA
Organización piramidal de la memoria en niveles en que vienen los ordenadores.
Su objetivo es conseguir el rendimiento de una memoria de gran velocidad al coste de una memoria de baja velocidad.
Puntos basicos de memoria:
 Calidad
 Velocidad
 Coste

ESTRATEGIAS PARA ADMINISTRACION DE MEMORIA
Determina el lugar donde será cargado de nuevo proceso a un criterio las estrategias de asignación son:
1. PRIMER AJUSTE El SO asigna el primer bloque de memoria libre con espacio suficiente para satisfacer la información.
2. MEJOR AJUSTE El SO busca el bloque de memoria que represente el menor desperdicio según el rendimiento
3. PEOR AJUSTE El SO asigna el bloque mas grande que encuentre

MULTIPROGRAMACION CONTRA PARTICIONES FIJAS Y VARIABLES.
PARTICIONES FIJAS: La memoria se organiza dividiéndole en diversas partes las cuales pueden variar de tamaño. Esta partición la puede hacer el usuario de forma manual, al iniciar una sesión con la mano.

PARTICIONES VARIABLES: El SO lleva una tabla indicando cuales partes de la memoria están disponibles y cuales están ocupadas.
MEMORIA REAL
Son ejecutados los programas y los procesos de una computadora y es el espacio real que existe en la memoria para que se ejecuten los procesos.
Esta memoria es de mayor costo que la memoria secundaria, desde el acceso la información contenida, su acceso es más rápido.
ADMINISTRACION DE MAPA DE BITS
Divide la memoria en unidades de asignación, las cuales pueden ser tan pequeñas como unas cuantas palabras o tan grandes como varios KB. A cada unidad de asignación le corresponde un bit del mapa de bits, el cual toma el valor de 0 si esa desocupado y 1 si esta ocupado.
ADMINISTRACION DE LA MEMORIA CON LISTAS ENLAZADAS
Otra forma de mantener un registro de la memoria es mediante una lista ligada de los segmentos de memoria asignados o libres, en donde un segmento puede ser un proceso o hueco entre los procesos.
DISTRIBUCION DE ESPACIO PARA EL INTERCAMBIO
En algunos sistemas cuando el proceso se encuentra en la memoria no hay huecos en el disco asignados a él. Cuando debe intercambiarse se deberá asignar un hueco en el área de intercambio de disco.
Proceso intercambiado siempre pasara al hueco asignado en vez de ir a otro lugar cada vez. Cuando el proceso concluya el proceso se libera el hueco de intercambio.
MEMORIA VIRTUAL
Es un concepto que permite al SW enlazar la MP que lo que realmente posee el ordenador. La mayoría de los ordenadores tienen 4 tipos de memoria:
 Registros en CPU
 Memoria caché
 Memoria fisica
 Disco duro

PAGINACION MV
Deciden los programas en pequeñas partes o paginas del mismo modo la memoria es dividida en trozos del mismo tamaño que las paginas llamadas marcos de pagina. De esta forma, la cantidad de memoria desperdiciada por un proceso es el final de su ultima pagina lo minimizan la argumentación interna y evita la externa.
SEGMENTACION MEMORIA VIRTUAL
Mediante el cual la estructura si división lógica llevándose a cabo una agrupación lógica de la información a bloques.
Alcanza los siguientes objetivos
1. modularidad de programas
2. estructura de datos de larga variable
3. protección
4. comparación
5. enlace dinámico entre segmentos

ALGORITMOS DE SUSTITUCION DE PAGINAS
Cuando ocurre una falla de pagina el SO tiene que escoger la pagina que sacarla de la memoria para que pueda entrar la nueva pagina. Si la pagina que se eliminara fue modificada mientras estaba en la MEMORIA se debe rescribir en el disco a fin de actualizar la copia del disco.
ASPECTOS DE DISEÑO PARA EL SISTEMA
Para diseñar un sistema se necesita saber mucho mas si queremos lograr que funcione bien. La diferencia es similar a la que existe entre saber como se mueve la torre y ser un buen jugador.
LIBERACION DE PAGINAS
Un proceso de usuario puede emitir una liberación voluntaria de pagina para liberar el marco de pagina cuando ya no necesitas esa pagina.
Se puede eliminar el desperdicio y acelerar la ejecución.
Los compiladores y el SO deberían detectar automáticamente situaciones de liberación.

martes, 10 de noviembre de 2009

UNIDAD 5
Conceptos Básicos Job Scheduling


Maximizar la utilización del CPU obtenida con la multiprogramación
􀂄 Ciclo de ráfaga CPU–I/O. La ejecución del proceso consiste de un ciclo de CPU y de una espera de I/O.
􀂄 Distribución de las ráfagas de CPU
Un planificador de tareas es una aplicación de software de la empresa que se encarga de las ejecuciones desatendida fondo, comúnmente conocido por razones históricas como del procesamiento por lotes.
Los sinónimos son lote sistema, Sistema de Gestión de Recursos Distribuidos (SGDD), y Distributed Resource Manager (DRM). Hoy en día el trabajo de programadores suelen ofrecer una interfaz gráfica de usuario y un único punto de control para la definición y el seguimiento de las ejecuciones en el fondo de una red distribuida de computadoras. Trabajo cada vez más programadores están obligados a organizar la integración de los negocios en tiempo real con las actividades tradicionales de transformación de fondo que, a través de diferentes plataformas de sistemas operativos y entornos de aplicaciones de negocio .


Tipos De Planeacion Job Scheduling


PLANEACION DE TRABAJOS (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.
First in First Out Job Scheduling
google_protectAndRun("ads_core.google_render_ad", google_handleError, google_render_ad);


First in first out (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
ITSOEH

Round Robin Job Scheduling

ROUN ROBIN (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.

Shortest Job First Job Scheduling

SHORTEST JOB FIRST (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.
Shortest Remaining Time Job Scheduling
SHORTEST REMAINING TIME (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.

Highest Response Ratio Next Job Scheduling
HIGHEST RESPONSE RATIO NEXT (HRN)

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.7



Multiprocesamiento Procesador


MULTIPROCESAMIENTO
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.

Principio del formulario
Final del formulario


Conceptos Basicos Multiprocesamiento

SISTEMAS MULTIPROCESAMIENTO
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.

Paralelismo Multiprocesamiento

PARALELISMO
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.

Sistemas Multiprocesamiento

SISTEMAS MULTIPROCESAMIENTO 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


Organizacion Del Multiprocesador

ORGANIZACIÓN DEL HARDWARE 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


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.

sábado, 7 de noviembre de 2009

***gUíA pArA eL eXaMeN***

***GUIA PARA EL EXAMEN***

1.- ¿QUÉ ES MULTIPROCESAMIENTO?
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.
También es tradicionalmente conocido como el uso de múltiples procesos concurrentes en un sistema en lugar de un único proceso en un instante determinado. solo nacional la multitarea que permite a múltiples procesos compartir una única CPU, múltiples CPUs pueden ser utilizados para ejecutar múltiples hilos dentro de un único proceso

2.- ¿QUÉ ES MULTIPROCESAMIETNO SIMETRICO?
Se trata de un tipo de arquitectura de ordenadores en que dos o más procesadores comparten una única memoria central.

3.- ¿CUÁLES SON LOS DOS FACTORES CLAVE PARA LA EXTENCION DEL MULTIPROCESAMIENTO?
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.

4.- ¿QUÉ ES EL PROCESAMIENTO POR LOTES?
Se conoce como procesamiento por lotes, o modo batch, a la ejecución de un programa sin el control o supervisión directa del usuario (que se denomina procesamiento interactivo). Este tipo de programas se caracterizan por que su ejecución no precisa ningún tipo de interacción con el usuario.
Generalmente, este tipo de ejecución se utiliza en tareas repetitivas sobre grandes conjuntos de información, ya que sería tedioso y propenso a errores realizarlo manualmente.

5.- ESCRIBE LA DIEFERENCIA ENTRE LA TAREA APROPIATIVA Y COOPERATIVA
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

6.- ¿EN QUE CONSISTE EL PARALELISMO EN EL MULTIPROCESAMIENTO?
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

7.- ¿CUÁLES SON LAS FASES DEL PARALELISMO?
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

8.- ¿A QUE SE LE LLAMA EJECUCION PARALELA?
Es 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.
Paralelismo implícito: E el que hace que un algoritmo genético que manipule una población de unos cuantos millares de cadenas, realmente esté tomando muestras de un número de regiones o esquemas enormemente mayor. Tal paralelismo implícito (en el sentido de procesamiento paralelo), proporciona al algoritmo genérico su ventaja principal sobre otros métodos de resolución de problemas.

Paralelisto explicito: 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.

9.- ¿QUÉ ES EL PARALELISMO EN SOFTWARE?
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.

10.- ¿QUÉ ES EL PARALELIAMO EN HARDWARE?
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.

lunes, 2 de noviembre de 2009

miércoles, 28 de octubre de 2009

PREGUNTIXAS

Bueno, esta es la parte complicada, acá tendremos que leer y ver si ese servicio nos hace falta. La regla de oro es "Si no lo uso, no debe estar habilitado". Pero no los voy a dejar solo, acá les dejo una lista de servicios que podremos "frenar" con total tranquilidad.
• Actualizaciones Automáticas.
• Ayuda de NetBIOS sobre TCP/IP.
• Ayuda y soporte técnico.
• Centro de seguridad: se encarga de mostramos los carteles que nos dice que el antivirus esta desactualizado, que el firewall esta desactivado, y que las actualizaciones automáticas están desactivadas.
• Cliente DHCP, y Cliente DNS: se encargan de brindarnos una IP cuando iniciamos la pc, si lo deshabilitamos nosotros tendremos que brindarle una IP a nuestra pc y sin IP tal ves no podremos conectarnos a internet o la red que usemos. Antes de deshabilitarlo, averguaremos la ip, luego la ingresaremos manualmente, y luego deshabilitaremos el serbio.
Averiguar la ip:
Vayan a la consola de Windows (inicio > ejecutar > "command" y luego "aceptar") tipeen "ipconfig /all" y denle Enter, nos mostrara la configuración de la placa de red, dejemos la ventana abierta a modo de recordatorio y...
Ingreso de la ip:
Vayamos a inicio > panel de control > conexiones de red, ahí veremos las placas de red, doble clic en la placa que tengamos, aparecerá una ventana con una lista (entre otras cosas), hacemos clic en "protocolo internet (TCP/IP)" y luego en propiedades, nos aparecerá una ventana donde ingresaremos los datos que tenemos en ventana que dejamos abierta y luego clic en aceptar.
Luego, a deshabitar los 2 servicios.
• Cliente web.
• Cola de impresión: se encarga de imprimir, si no tienen impresora (local o en red) aconsejo deshabilitarlo
• Compatibilidad de cambio de usuario rápido.
• Configuración inalámbrica rápida, si no tenemos placa inalámbrica.
• Firewall de Windows, si no usamos el firewall de Windows, ya saben lo que deben hacer. Ojo, también se encarga de compartir internet si usamos la PC como ROuter.
• Horario de Windows.
• Inicio de sesión secundario.
• Programador de tares.
• Servicios de restauración de sistema.
• Servidor IPSEC


Windows XP] Activar o desactivar el firewall de XP
última actualización el 22 de agosto de 2008, 02:43 por Carlos-vialfa
Publicado por Carlos-vi alfa
Desde una sesión de Windows XP, con derechos de administración suficientes, sigue las instrucciones siguientes:
• Ve al menu"Inicio"
• Haz clic en el icono "Configuración"
• Selecciona "Panel de control"
• Haz doble clic en “Conexiones de red e Internet"
• En la lista "LAN o Internet a alta velocidad". Haz clic con el botón derecho del ratón en el icono correspondiente a tu conexión Internet ("Conexión remota")
o En el menú, selecciona "Propiedades"
o Selecciona la pestaña " Opciones avanzadas"
En el Panel de control, haz doble clic en el icono "Firewall de Windows", luego selecciona "Activado" o "Desactivado" para activar o desactivar el firewall (cortafuegos) y finalmente haz clic en Aceptar para confirmar.

domingo, 11 de octubre de 2009

desarrollo y conclusion

DESARROLLO

A continuación les mostraremos las etapas que obtuvimos al meter el disco para la instalacion de la ultima versión de linux, llamada “ INTREPID IBEX”.

Primero aparece en nuestra pantalla el logotipo de ubuntu, tienes que dar clic en donde dice “instalar ubuntu”. Aquí te presentamos una imagen de la pantalla:



La instalación de INTREPID IBEX consta de 7 etapas.

ETPA 1 “Bienvenida”

Lo unico que hay que hacer en esta etapa es seleccionar el idioma, en este caso elegimos el idioma español.



ETAPA 2 “¿Dónde se encuentra?
Seleccionemos el pais en donde nos ubicamos, nosotros seleccionamos México City.


ETAPA 3 “Distribución del teclado”

Seleccionemos el idioma español.

ETAPA 4 “Preparar el espacio en disco”

Seleccionaremos “guiado” y después daremos click seleccionando en donde dice “SCSI1 0.0.0. (sda) G80GB ATA ST 380011A”




ETAPA 5 “¿Quién es usted?”

En esta ventana nos pedirán nuestro nombre, nosotros usaremos “tesci”, también pedirán el nombre para iniciar sesión, pondremos tesci. Y te pediran una contraseña, usaremos tesci. Esta es la pantalla:



ETAPA 6 Y 7 “Listo para instalar”

Solo daremos clic en instalar y esperaremos a que termine el proceso.




Ya que este terminada la instalación podremos hacer uso de todas las aplicaciones de la ultima versión de Linux Ubuntu 8.10 llamada “INTREPID IBEX”.

En esta imagen se muestra al equipo que instalo INTREPID IBEX en el laboratorio de Linux en el Tecnológico de estudios Superiores de Cuautitlan Izcalli.




CONCLUSION

La versión de Linux Ubuntu 8.10 “INTREPID IBEX”, ya instalada el usuario podrá usar los programas y aplicaciones de este sistema operativo, por medio de procesos que nos ayudaran a realizar nuestras tareas apropiadamente y a parte es muy fácil de usar.

Ahora sabemos que existen mas sistemas operativos, tales como Liux, que es un SO eficaz y eficiente, no solo es WINDOWS, tenemos que aprender a trabajar con los dos para mejorar en nuestro ámbito personal y profesional

sábado, 10 de octubre de 2009

***PrÁcTiCa 1***

TECNOLOGICO DE ESTUDIOS SUPERIORES DE CUAUTITLAN IZCALLI

LIC. EN INFORMATICA

SISTEMAS OPERATIVOS
GRUPO 251M

EQUIPO 7
INTEGRANTES:

SALAZAR MALDONADO MONSERRATH FLORIDA
JARAMILLO ARELLANO BRISA ELIZABETH
ORTEGA VALENCIA JORGE ADRIAN
HERNANDEZ CRUCES JOSE LUIS


PRACTICA 1 "INSTALACIÓN DE UNA VERSIÓN DE LINUX (UBUNTU 8 . 10)"

PLANIFICACIÓN

BRISA ELIZABETH JARAMILLO ARELLANO:
PORTADA Y PLANEACION

JOSE LUIS HERNANDEZ CRUCES:
INDICE, CONCLUSIÓN
JORGE ADRIAN ORTTEGA VALENCIA:
INTRODUCCIÓN
MONSERRATH FLORIDA SALAZAR MALDONADO:
DESCARGAR LINUX, SUBIR AL BLOGGER


INTRODUCCIÓN

UBUNTU 8.10

ya existe un grupo de usuarios que ha preferido las ventajas de un software libre,
incluso optando por Sistemas Operativos basados en Linux. y esta no es una tendencia
en contra de las aplicaciones comerciales, pero la verdad es, que el software libre
se ha venido desarrollando intensamente , logran muchas veces, resultados superiores
a estas aplicaciones de pago.

ya sea en el ambito de las herramientas ofimáticas , tal es el caso de OPEN OFFICE,
o de navegadores web, tal es el caso de fire fox; la creciente demanda por el uso
de estos productos, se debe a la estrecha preocupacion que ofrecen estas aplicaciones
en el usuario final. ademas, es peculiaridad del software libre, seguir desarrollando
tecnología mas eficient, para el desarrollo de sus aplicaciones.

asi, en esta oportunidad, hablaremos sobre la ultima version disponible, de uno
de los Sistemas Operativos basados en Linux, que ,mayor grupo de usuarios posee.
nos referimos a UBUNTU, que ya se encuantra, desde el pasado mes de octubre, disponible
en su version 8.10 llamada INTREPID IBEX por ser lanzada ese mes.

como se manifiesta en su portal web y por parte del grupo encargado de su
desarrollo, se lanzara una version cada seis meses, cumpliéndose en esta ocacion
los pasos previstos para el lanzamiento.

UBUNTU, es un sistema operativo, mas extendido al mercado desktop, es decir,
para los usuarios del hogar, aficionados al ocio y multimedia. pero, aun asi, sus
funciones no se restringen a las empresas. es tan funcional como un sisteam
personal como empresarial; además incluye, gran cantidad de características que hacen
de ubuntu, un sistema potente y conofiable.

esta version es totalmente compatible con las conexiones de red 3G, que
es usada por dispositivos móvilescomo el iphone de Apple; asimismo es compatible
con BLUETOOTH, WIFI, ETHERNET y las demás tipicas conexiones de red .
tambien se incluye una ultima revision de drivers, que permite la compatibilidad
con este tipo de dispositivos.

otra intoduccion novedos en esta versión, es la cuenta GUEST o INVITADO

para los usuarios de windows (XP hacia adelante), existia la posibilidad de
habilitar una cuenta con le nombre de invitado, dicha cuenta, se caracterizaba
por brindar acceso limitado y restricciones avanzada por los usuarios que
accedieran a traves de ella. para esta versión, UBUNTU ha incorporado su símil,
desde donde los usuarios no habituales del ordenador, podran hacer el uso de el,
con las limitaciones del caso, sin perturbar nuestras conmfiguraciones y archivos
personales.

miércoles, 7 de octubre de 2009

Cuestionario
Cual es la diferencia entre proceso e hilo?
Es la ejecución del programa y de una entidad dinámica grabada en memoria
Cuales son los estados de los procesos?
Espera, Ejecución, Bloqueado, Vacio, Termino
Que es un semáforo y cuales son sus banderas?
Es un algoritmo de control de proceso diseñado de modo que la ejecución se realice en forma ordenada.
A que se le llama zona critica?
Cuando se combinan varios programas en donde hay semáforos.
Que contiene el monitor de S.O?
Cargador, Proceso, Interprete
Cuales son los algoritmos usados en exclusión mutua?
Derrer, Peterson
A que se le llama concurrencia?
Aquella donde 2 o mas procesos acceden al mismo recurso
Cual es la finalidad de la exclusión mutua?
Consiste en un proceso, excluye temporalmente a todos los demás para usar un recurso compartido.
Que es un hilo?
Unidad a otros procesos
Cuales son las formas de matar un proceso en algunos S.O?
Windows: Ctrl, Alt, Supr.
Linux: Killer
Define los siguientes conceptos:
Proceso: Tarea identificada como una consecuencia de instrucciones ejecutándose.
Concurrencia: Varios procesos al mismo tiempo
Interbloqueo: Cuando se mata un proceso
UNIDAD 2


2.1 DESCRIPCION Y CONTROL DE PROCESOS DE SISTEMASOPERATIVOS

El los 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. A si 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.
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 también, 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 a su vez un proceso se encarga de transformar la ordenes en llamadas al sistema.

2.2 DEFINICION DE PROCESOS DE UN SISTEMAOPERATIVO
UN PRCESO NO ES MAS QUE UN PROGRAMA EN EJECUCION
Una vez definido que es un proceso nos podríamos preguntar cuál es la diferencia entre un programa y un proceso, y básicamente la diferencia es que un proceso es una actividad de cierto tipo que contiene un programa, entradas salidas y estados.
Ø Programa: entidad estática grabada en disco
Ø Proceso: entidad dinámica grabada en memoria,
Ø Analogías: Diferencia entre programa y proceso
Programa Proceso
Receta cocinar platillo
Libro leer libro
Los procesos pueden ser cooperantes o independientes, en el primer caso se entiende que los procesos interactúan entre sí y pertenecen a una misma aplicación. En el caso de procesos independientes en general se debe a que no interactúan y un proceso no requiere información de otros o bien porque son procesos que pertenecen a distintos usuarios.


2.3 ESTADOS DE PROCESOS
Los cinco estados de este diagrama son los siguientes:
Ejecución: el proceso está actualmente en ejecución.
Listo: el proceso está listo para ser ejecutado, sólo está esperando que el planificador así lo disponga.
Bloqueado: el proceso no puede ejecutar hasta que no se produzca cierto suceso, como una operación de Entrada/Salida.
Nuevo: El proceso recién fue creado y todavía no fue admitido por el sistema operativo. En general los procesos que se encuentran en este estado todavía no fueron cargados en la memoria principal.
Terminado: El proceso fue expulsado del grupo de procesos ejecutables, ya sea porque terminó o por algún fallo, como un error de protección, aritmético, etc.
2-4 CONTROL DE PROCESOS DE LOS SITEMAS 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 control no es necesario y, por seguridad, tampoco conveniente para los programas de usuario.

2.5 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.

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
INHABILITACIÓN DE INTERRUPCIONES
En una máquina monoprocesador, la ejecución de procesos concurrentes no puede superponerse; los procesos solo pueden intercalarse. Es más, un proceso continuará ejecutándose hasta que solicite un servicio el sistema operativo o hasta que sea interrumpido. Por lo tanto, para garantizar la exclusión mutua, es suficiente con impedir que un proceso sea interrumpido. Esta capacidad puede ofrecerse en forma de primitivas definidas por el núcleo del sistema para habilitar o inhabilitar las interrupciones. Un proceso puede hacer cumplir la exclusión mutua del siguiente modo:
While (cierto)
{
/*inhabilitar interrupciones */;
/* sección critica */;
/* habilitar interrupciones */;
/* resto */;
}
Puesto que la sección crítica no puede ser interrumpida, la exclusión mutua está garantizada. Sin embargo, el precio de esta solución es alto. La eficiencia de la ejecución puede verse notablemente degradada debido a que se limita la capacidad del procesador para intercalar programas. Un segundo problema es que está técnica no funciona en arquitecturas de multiprocesador. Cuando el sistema tenga más de un procesador, es posible (y habitual) que haya más de un proceso ejecutándose al mismo tiempo. En este caso, inhabilitar las interrupciones no garantiza la exclusión mutua.
INSTRUCCIONES ESPECIALES DE MAQUINA
En configuraciones multiprocesador, varios procesadores comparten el acceso a una memoria principal común. En este caso, no hay relación maestro/esclavo, sino que los procesadores funcionan independientemente en una relación de igualdad. No hay un mecanismo de interrupciones entre los procesadores en el que se pueda basar la exclusión mutua.
A nivel de hardware, como se ha mencionado, los accesos a posiciones de memoria excluyen cualquier otro acceso a la misma posición. Con esta base, los diseñadores han propuesto varias instrucciones de máquina que realizan dos acciones atómicamente, tales cono leer y escribir o leer y examinar, sobre una misma posición de memoria en un único ciclo de lectura de instrucción.
Puesto que estas acciones se realizan en un único ciclo de instrucción, no están sujetas a injerencias por parte de otras instrucciones.
-La instrucción COMPARAR Y FIJAR (TS, Test and Set)puede definirse de la siguiente forma:
booleano TS(int i)
{
if (I==0)
{
I=1;
return cierto;
}
else
{
return falso;
}
}
La instrucción examina el valor de su argumento i. Si el valor es 0 , lo cambia por 1 y devuelve cierto. En otro caso, el valor no se modifica y se devuelve falso. La función Comparar y Fijar se ejecuta atómicamente en su totalidad, es decir, no esta sujeta a interrupciones.
La instrucción INTERCAMBIAR se puede definir como sigue:
void intercambiar (int registro, int memoria)
{
int temp;
temp = memoria;
memoria = registro;
registro = temp;
}
Esta instrucción intercambia el contenido de un registro con el de una posición de memoria. Durante la ejecución de la instrucción, se bloquea el acceso a la posición de memoria de cualquier otra instrucción que haga referencia a la misma posición.
Propiedades de las soluciones con instrucciones de maquina
El uso de instrucciones especiales de la maquina para hacer cumplir la exclusión mutua tiene varias ventajas:
Es aplicable a cualquier número de procesos en sistemas con memoria compartida, tanto de monoprocesador como de multiprocesador. Es simple y fácil de verificar. Puede usarse para disponer de varias secciones críticas; cada sección crítica puede definirse con su propia variable. Algunas desventajas importantes son las siguientes:
SE EMPLEA ESPERA ACTIVA. Así pues, mientras un proceso está esperando para acceder a la sección crítica, continúa consumiendo tiempo del procesador. PUEDE PRODUCIRSE INANICIÓN. Cuando un proceso abandona la sección crítica y hay más de un proceso esperando, la selección es arbitraria. Así pues se podría denegar el acceso a algún proceso indefinidamente. PUEDE PRODUCIRSE INTERBLOQUEO. Supóngase la siguiente escena en un sistema monoprocesador. El proceso “P1″ ejecuta una instrucción especial (sea TS o Intercambiar) y entra su sección crítica. Se interrumpe a “P1″ para dar el procesador a “P2″, que tiene mayor prioridad. Si “P2″ intenta ahora usar el mismo recurso que “P1″, se le negará el acceso por el mecanismo de exclusión mutua. De este modo, “P2″ entrará en un bucle de espera activa. Sin embargo, “P1″ nunca será expedido porque su prioridad es menor que la del proceso listo “p2″.
SEMÁFOROS
Para solucionar problemas de procesos concurentes, se diseño un S.O. como un conjunto de procesos secuenciales, eficiente y fiables para dar soporte a la cooperación. Los procesos de usuario podrían utilizar estos mecanismos si el procesador y el S.O. los hacían disponible.
El principio fundamental es el siguiente, 20+ procesos pueden cooperar por medio de simples señales, de manera que se pueda obligar a un proceso a detener en una posición determinada hasta que reciba una señal específica. Para la señalización se usan variables especiales llamadas semáforos “S”, los procesos ejecutan las primitivas wait(s) si la señal aun no se transmitió, el proceso se suspende hasta que tiene lugar la transmisión.
A los semáforos se los contemplan como variables que tienen un N° entero sobre el que se definen las siguientes operaciones:
un semáforo puede iniciarse con un valor negativo la operación wait disminuye el valor del semáforo. Si el valor no es positivo el proceso que ejecuta wait se bloquea. las operaciones signal incrementa el N° del semáforo. Si el valor es positivo se desbloquea el proceso bloqueado por una operación wait. No hay forma de examinar o manipular los semáforos aparte de estas tres operaciones.
Las primitivas wait y signal se suponen atómicas, es decir no pueden ser interrumpidas y cada rutina puede considerarse como un peso indivisible.
Un semáforo solo puede tomar los valores 0 y 1. Son más sencillos de implantar y pueden demostrarse que tienen la misma potencia de expresión que los semáforos generales.
En ambos semáforos se emplean una cola para mantener los procesos en espera, la cuestión reside en el orden en que se retiran los procesos de la cola. La política utilizada el la de FIFO; el proceso que estuvo bloqueado durante mas tiempo se libera de la cola, se denomina semáforo robusto (incluye esta estrategia). Un semáforo débil no especifica el orden en que se retiran los procesos de la cola.
Los semáforos robustos garantizan la inexistencia de inanición en el algoritmo de exclusión mutua, pero no así en los semáforos débiles, se supone que los semáforos son siempre robustos ya que son los más adecuados y porque son los tipos de semáforos que más incluyen los S.O.
Implementación de los semáforos. Como se menciono anteriormente es impredecible que las operaciones wait y signal sean implementadas como primitivas atómicas.
La esencia del problema del productor/consumidor, es la exclusion mutua: solo 1 proceso puede manipular un semáforo a la vez, en una operación wait o signal. Se pueden utilizar cualquier esquema de software con los algoritmos de Dekker o Peterson los que suponen una sobrecarga de procesos sustancial. Otra alternativa es usar uno de los esquemas de soporte del hardware p/la exclusion mutua..
En sistemas monoprocesador procesador, se pueden inhibir las interrupciones durante una operación wait o signal.
MONITORES
Los monitores son estructuras de un lenguaje de programación que ofrecen una funcionalidad equivalente a las de los semáforos pero son más fáciles de controlar. El concepto de monitor fue definido por primera vez en [HOAR 74] . La estructura de monitor se ha implementado en varios lenguajes de programación como: Pascal concurrente, Modulo-2, Java, etc.
En concreto, para una lista enlazada se puede necesitar un cierre que bloquee todas las listas enlazadas o bien un cierre por cada elemento de una lista.
Monitores con Señales: ( definición de Hoare )
Un monitor es un modulo de software que consta de uno o más procedimientos, una secuencia de inicio y uno datos locales. Sus características son las siguientes:
Solo los procedimientos del monitor acceden a variables de datos locales. Un proceso entra en el monitor invocando a uno de sus procedimientos. En el monitor solo un proceso puede ser ejecutado en un momento dado; cualquier otro proceso quedara suspendido esperando la disponibilidad del monitor. Al ser un proceso por vez, el monitor puede ofrecer un servicio de exclusión mutua fácilmente. Así una estructura de datos puede protegerse situándola dentro de un monitor.
Los monitores deben ofrecer herramientas de sincronización. Por ejemplo: si un proceso llama a un monitor y una vez dentro de él el proceso queda suspendido esperando alguna condición, hará falta un servicio que libere al monitor y lo deje disponible para el siguiente proceso. Mas tarde cuando la condición se cumpla el proceso suspendido podrá regresar al monitor y ejecutarse desde el momento de la suspensión.
El monitor proporciona variables de condición que son accesibles solo desde dentro del monitor.
Hay dos funciones para operar variables de condición:
cwait ©: suspende la ejecución del proceso que llama bajo la condición “c”. El monitor está ahora disponible para otro proceso. csignal ©: retorna la ejecución de un proceso suspendido después de un cwait, bajo la misma condición. Si hay varios procesos elige uno de ellos. Si un proceso de monitor ejecuta un csignal y no hay tareas esperando entonces el csignal de pierde.
Aunque un proceso puede entrar al monitor llamando a cualquiera de sus procedimientos, se puede decir que el monitor tiene un solo punto de acceso, custodiado para que solo un proceso este en el monitor en un instante dado. Si existen otros procesos tratando de entrar al monitor, estos se colocan en una cola de procesos suspendidos esperando la disponibilidad del monitor.
Un proceso dentro de un monitor puede suspenderse a sí mismo, temporalmente, bajo la condición X ejecutando cwait(x), entonces se coloca en una cola de procesos que esperan que cambie la condición X entonces ejecuta un csignal(x) que avisa a la cola de condición correspondiente de que la condición a cambiado.
En el código se puede apreciar la solución al problema de productor / consumidor usando monitores:
El modulo monitor, buffers_acotado, controla el buffer para almacenar y retirar caracteres. El monitor incluye dos variables de condición:
No-lleno es verdadero su hay lugar para agregar al menos un carácter.
No-vació es verdadero si hay al menos un carácter en el buffer.
Un productor solo puede agregar caracteres al buffer mediante el procedimiento añadir del monitor; el productor no tiene acceso directo al buffer. El procedimiento comprueba si hay espacio en el buffer, mediante la condición no-lleno, si no lo hay el proceso queda suspendido y cualquier otro proceso (consumidor o productor) puede entrar al monitor. Luego, cuando el buffer ya no esta lleno, el proceso se retira de la cola y es reactivado. Luego de añadir un carácter el proceso activa la condición no-vació.
La estructura misma del monitor garantiza la exclusión mutua (solo un proceso por vez puede acceder al buffer). Sin embargo, el programador debe situar correctamente las primitivas cwait( ) y csignal( ) en el monitor para evitar que los procesos depositen elementos en un buffer lleno o los extraigan de uno vació.
Un proceso sale del monitor inmediatamente después de ejecutar csignal( ).
Si csignal( ) se ejecuta antes del final entonces ese proceso libera el monitor y esta colocado en una lista de procesos suspendidos. Un nuevo proceso puede entrar el monitor.
Si no hay procesos esperando en la condición X, la ejecución de csignal (x) no tiene efecto.
Es posible cometer errores en la sincronización de los monitores, por ejemplo, si se omite cualquiera de las funciones csignal() en el monitor buffer _ acotado los procesos que entran en la cola de condición permanecen colgados permanentemente. Sin embargo la ventaja de los monitores es que todas las funciones de sincronización están incluidas dentro del monitor, lo que permite una fácil detección y corrección de fallas de sincronización.
Monitores con Notificación y Difusión (definición de Lampson y Redell)
Son varios los inconvenientes que presenta la solución de Hoare:
-Si el proceso que ejecuta el csignal( ) no ha terminado en el monitor, se necesitaran dos cambios de procesos adicionales: uno para suspender el proceso y otro para reanudarlo.
-La planificación de procesos asociados con las señales debe ser muy fiable. Si un proceso ejecuta un csignal ( ), el proceso de la cola de condición correspondiente debe activarse de inmediato, antes de que ingrese otro proceso del exterior o cambie la condición bajo la que se activó el proceso. Otro caso seria que un proceso productor escribe un carácter en el buffer y falla antes de dar la señal, entonces la cola de condición no-vacía se colgaría para siempre.
Lampson y Redell desarrollaron una definición de monitores para el lenguaje MESA [Lamp 80]. La estructura de mesa reemplaza la primitiva csignal( ) por cnotify( ). Cuando un proceso ejecuta cnotify(x) envía una notificación a la cola de condición X, lo cual no significa que el proceso que esta ocupando el monitor vaya a detenerse, simplemente el cnotify(x) avisa al proceso de la cola de condición correspondiente de que será reanudado en un futuro cercano. Puesto que esta no garantiza que un proceso exterior entre al monitor, el proceso debe comprobar la condición nuevamente.
En el código, la sentencia IF se reemplaza por un bucle While, lo cual genera una evaluación extra de la variable, pero sin embargo no hay cambios de procesos extra.
Una modificación útil seria asociar un temporizador de guardia a cnotify( ) que permitiría que un proceso que ha esperado durante el intervalo máximo sea situado en estado de listo, independientemente de sí se ha notificado la condición.
Con la norma de notificar a los procesos en lugar de reactivarlos, es posible añadir una primitiva de difusión cbroadcast. La difusión provoca que todos los procesos que están esperando por una condición se coloquen en el estado de listo. Esto es útil cuando un proceso no sabe cuantos procesos deben reactivarse.
El método Lampson/Redell es menos propenso a errores debido a que cada procedimiento comprueba la condición luego de ser despertado, por medio de la instrucción while, un proceso puede realizar una señal o una difusión incorrectamente sin provocar un error en el programa que la recibe.
Además este modelo presta un método mas modular de construcción de programas.
Hay dos niveles de condición que deben satisfacerse para los procesos secuenciales cooperantes.
Estructura de datos consistentes: significa que el monitor hace cumplir la exclusión mutua y concluye la operación de entrada o salida antes de permitir cualquier otra operación sobre el buffer. La misma condición del nivel 1 y, además disponer de suficiente memoria para que este proceso pueda completar su solicitud de asignación. PASO DE MENSAJES
Son 2 los requisitos básicos que deben satisfacerse cuando los procesos interactúan entre si.
Ellos son:
La sincronización La comunicación Los procesos tienen que sincronizarse para cumplir la exclusión mutua, los procesos cooperantes pueden necesitar intercambiar información.
El paso de mensajes es un método que permite que se realice ambas funciones. Este método tiene la ventaja de que es de fácil implementación en sistemas distribuidos y también es sistemas de multiprocesador y monoprocesador de memoria compartida.
La funcionalidad real del paso de mensajes, generalmente, se da por medio de un par de primitivas:
send(destino, mensaje)
receive(origen, mensaje)
Este es el conjunto mínimo de operaciones necesarias para que los procesos puedan dedicarse al paso de mensajes.
SINCRONIZACION
La comunicación de un mensaje entre 2 procesos implica cierto nivel de sincronización entre ambos. El receptor no puede recibir un mensaje hasta que sea enviado por otro proceso. Además hace falta especificar que le sucede a un proceso después de ejecutar una primitiva SEND o RECEIVE.
Considérese en primer lugar la primitiva send. Cuando se ejecuta una primitiva send en un proceso, hay 2 posibilidades: o bien el proceso emisor se bloquea hasta que recibe el mensaje o no se bloquea. Igualmente cuando un proceso ejecuta una primitiva RECEIVE, existen 2 opciones:
1) Si previamente se ha enviado algún mensaje, este es recibido y continua la ejecución.
2) Si no hay ningún mensaje esperando entonces:
a) el proceso se bloquea hasta que llega un mensaje o,
b) el proceso continúa ejecutando, abandonando el intento de recepción.
El emisor y el receptor pueden ser bloqueantes o no bloqueantes.
Existen 3 tipos de combinaciones pero un sistema solo implementa uno o dos.
I) Envío bloqueante, recepción bloqueante: tanto el emisor como el receptor se bloquean hasta que llega el mensaje; esta técnica se conoce como rendezvous.
II) Envío no bloqueante, recepción bloqueante: aunque el emisor puede continuar, el receptor se bloquea hasta que llega el mensaje solicitado. Es la combinación más útil.
III) Envío no bloqueante, recepción no bloqueante: nadie debe esperar.
El send no bloqueante es la forma más natural para muchas tareas de programación concurrente. Un posible riesgo del send no bloquente es que por error puede llevar a una situación en la que el proceso genere mensajes repetidamente.
Para el receive, la versión bloqueante es la mas natural para muchas tareas de programación concurrente. En general, un proceso que solicita un mensaje necesitara la información esperada antes de continuar.
DIRECCIONAMIENTO
Es necesario disponer de alguna forma de especificar en la primitiva send que proceso va a recibir el mensaje. La mayoría de las implementaciones permiten a los procesos receptores indicar el origen del mensaje que se va a recibir.
Los distintos esquemas para hacer referencia a los procesos en las primitivas send y receive se encuadran dentro de 2 categorías:
1) Direccionamiento directo: la primitiva send incluye una identificación específica del proceso de destino.
La primitiva receive se puede gestionar de 2 formas:
Una posibilidad requiere que el proceso designe explícitamente un proceso emisor. El proceso debe conocer de antemano de que proceso espera un mensaje. En otros casos es imposible especificar el proceso de origen por anticipado. 2) Direccionamiento indirecto: los mensajes no se envían directamente del emisor al receptor, sino a una estructura de datos compartidos formada por colas, que pueden guardar los mensajes temporalmente, que se denominan BUZONES (mailboxes). Para que 2 procesos se comuniquen, uno envía mensajes al buzón apropiado y el otro los retira. Una ventaja de este tipo de direccionamiento es que se desacopla a emisor y receptor, asegurando mayor flexibilidad en el uso de mensajes.
Relación entre emisores y receptores
UNO A UNO: permite que se establezca un enlace privado entre 2 procesos. Aísla su interacción de injerencias erróneas de otros procesos. MUCHOS A UNO: resulta útil para interacciones cliente-servidor. En este caso el buzón se llama puerto. UNO A MUCHOS: permite un emisor y varios receptores. La asociación de procesos a buzones puede ser ESTATICA o DINAMICA. Los puertos suelen estar asociados estáticamente con algún proceso en particular. El puerto se crea y se asigna al proceso permanentemente. Una relación de UNO A UNO se define de forma estática y permanentemente. Cuando hay varios emisores, la asociación a un BUZON puede realizarse dinámicamente. Se pueden utilizar primitivas como CONECTAR o DESCONECTAR.
Propiedad del buzón. en el caso de 1 puerto, normalmente pertenece y se crea por el RECPTOR. Entonces cuando se destruye el proceso, también se destruye el puerto.
Para los buzones en general el S.O. ofrece un servicio de creación de buzones. Son considerados como propiedad del proceso creador en cuyo caso se destruyen junto con el proceso, o como propiedad del S.O., en este caso se necesita una orden explicita para destruir el buzón.
FORMATO DE MENSAJES
Para algunos S.O. los diseñadores han elegido mensajes cortos y tamaños fijos para minimizar procesamiento y coste de almacenamiento. Si se van a pasar una gran cantidad de datos, estos pueden ponerse en un archivo y el mensaje simplemente hará referencia a este archivo. Una solución más flexible es utilizar mensajes de longitud variable.
DISCIPLINA DE COLA
La disciplina de cola más simple es FIFO, pero esta puede no ser suficiente para mensajes más urgentes que otros. Una opción es habilitar la especificación de prioridades de los mensajes, en función del tipo de mensajes o por designación del emisor. Otra es permitir al receptor examinar la cola de mensajes y seleccionar el mensaje a recibir a continuación.
EXCLUSION MUTUA
Con el siguiente algoritmo de muestra una forma de usar el PASO DE MENSAJES para cumplir la exclusión mutua.
Se usan RECEIVE bloqueantes y SEND no bloqueantes. Unos procesos concurrentes comparte un BUZON, EXMUT, que puede ser usado por todos los procesos. EXMUT (buzón) tiene inicialmente un único mensaje nulo. Un proceso que requiere entrar en su sección crítica intenta:
1) recibir el mensaje. Si el EXMUT(buzón) esta vacío, se bloquea el proceso.
2) Una vez que consiguió el mensaje, ejecuta su sección crítica y devuelve el mensaje al buzón.
El mensaje funciona como un testigo(TOKEN) que se pasa de 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 solo a uno de los procesos y los demás se bloquean. Si el buzón esta vacío, todos se bloquean cuando hay un mensaje, solo se activara y tomara el mensaje uno de los procesos bloqueados. PROBLEMA DE LOS LECTORES/ESCRITORES
Descripción del problema:
Existe un área de datos compartida entre una serie de procesos, algunos sólo leen los datos (lectores) y otros sólo escriben datos (escritores). El problema es satisfacer las siguientes condiciones:
1. Cualquier número de lectores puede leer el archivo simultáneamente.
2. En el archivo sólo puede escribir un escritor en cada instante.
3. Si un escritor está accediendo al archivo, ningún lector puede leerlo.
El problema general de exclusión mutua, consiste en permitir a cualquiera de los procesos (lectores o escritores) leer o escribir en el área de datos. Esto hace necesario declarar cualquier acceso como una sección crítica donde los procesos tendrían que acceder uno a uno produciéndose intolerables retrasos, además se debe impedir que los escritores interfieran unos con otros y también que se realicen consultas mientras se llevan a cabo modificaciones
Aplicar la solución general al problema de los lectores/escritores sería inaceptablemente lenta. En este caso más restrictivo es posible crear soluciones más eficientes.
A continuación se examinan dos soluciones al problema:
PRIORIDAD A LOS LECTORES Es una solución que utiliza semáforos para respetar la exclusión mutua. Se permite el acceso a varios lectores, pero mientras que un escritor está accediendo a los datos compartidos, no se permite acceder a ningún escritor o lector.
El primer lector que intenta acceder debe esperar en el semáforo, Cuando haya al menos un lector, los lectores siguientes no necesitan esperar para entrar, se les da prioridad. El problema es que un escritor estará esperando mientras que haya al menos un lector leyendo, que luego podría dar paso a otro lector, en este caso el lector estará sujeto a inanición.
Se utiliza una variable global contlect para mantener el número de lectores y el semáforo x para que la actualización de contlect sea consistente. El semáforo esem controla el acceso al recurso compartido.
/* program lectores_escntores*/
int contlect;
semáforo x = 1, esem=1;
void lector()
{
while (cierto)
{
wait(x);
contlect++;
If (contlect==1)
wait(esem);
signal(x);
LEER_UNIDAD();
wait(x);
contlect—;
If (contlect==0)
signal(esem);
signal(x);
}
}
void escritor()
{
while (cierto)
{
wait(esem);
ESCRIBIR_UNIDAD();
signal(esem);
}
}
vold main() {
contlect = 0;
parbegln(tector, escritor);
}
Una solución al problema de los lectores/escritores por medio de semáforos; los lectores tienen prioridad.
2. PRIORIDAD A LOS ESCRITORES
Esta solución garantiza que no se permitirá acceder a los datos a ningún nuevo lector una vez que, al menos, un escritor haya declarado su deseo de escribir. Se utilizan los mismos semáforos que en la solución anterior y se añaden otros más:
• Un semáforo Isem que inhibe todas las lecturas cuando al menos un escritor desea acceder
• Una variable contesc que controla la activación de Isem
• Un semáforo y que controla la actualización de contesc
• Un semáforo y que controla la actualización de contesc
• Un semáforo z donde se encolan los lectores cuando ya hay uno en lsem

2.8 EXCLUSION MUTUA


«Consiste en que un solo proceso excluye temporalmente a todos los demás para usar un recurso compartido de forma que garantice la integridad del sistema

«Los algoritmos de exclusión mutua se usan en programación para evitar que fragmentos de código conocidos como secciones críticas sean accedidas al mismo tiempo a recursos que no deben ser compartidos


«La mayoría de los métodos de exclusión mutua clásicos intentan reducir la espera activa mediante las colas y cambios de contexto
«Algunos investigadores afirman que las pruebas indican que estos algoritmos especiales pierden más tiempo del que ahorran

«Algunos ejemplos de soluciones por software y hardware son los algoritmos clásicos de exclusión mutua:
«El algoritmo de Dekker
El algoritmo de Peterson

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.

2.10 MONITOREOS DE 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

2.11 PASO DE MENSAJE 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.

2.12 CONCURRENCIA E INTERBLOQUEO 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.
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.
EJEMPLOS DE INTERBLOQUEO
Ejemplo 1: Interbloqueo de tráfico
Cuatro coches llegan aproximadamente en el mismo instante a un cruce de cuatro caminos. Los cuatro cuadrantes de la intersección son los recursos compartidos sobre los que se demanda control; por tanto, si los coches desean atravesar el cruce, las necesidades de recursos son las siguientes:
- - El coche que va hacia el norte necesita los cuadrantes 1 y 2.
- - El coche que va hacia el oeste necesita los cuadrantes 2 y 3.
- - El coche que va hacia el sur necesita los cuadrantes 3 y 4.
- - El coche que va hacia el este necesita los cuadrantes 4 y 1.
La norma mas habitual en la carretera es que un coche en un cruce de cuatro caminos debe ceder el paso al coche que está a su derecha. Esta norma funciona si solo hay dos o tres coches en el cruce. Por ejemplo, si solo llegan al cruce los coches del norte y del oeste, el coche del norte esperará hasta que el del oeste pase. Sin embargo, si los cuatro coches llegan al mismo tiempo cada uno se abstendrá de entrar en el cruce, provocando interbloqueo. Si todos los coches ignoran las normas y entran (con cuidado) en el cruce, cada coche obtendrá un recurso (un cuadrante) pero no podrá continuar porque el segundo recurso que necesita ya ha sido invadido por otro coche. De nuevo, se tiene interbloqueo.
Ejemplo 2: Cruce en un puente (es parecido al interbloqueo de trafico)
En una carretera de dos direcciones, donde en un determinado cruce con la vía del ferrocarril, se ha construido un puente que solo deja pasar vehículos en un solo sentido. El bloqueo ocurre cuando dos carros intentan pasar por el puente al mismo tiempo.
Una manera de resolver el bloqueo es: el conductor situado en uno de los extremos es lo suficientemente educado que deja pasar en primer lugar al del otro extremo y luego pasa él.
Este ejemplo nos muestra como sucede el interbloqueo en nuestra vida diaria.
Ejemplo 3: Dos procesos desean imprimir cada uno un enorme archivo en cinta. El proceso A solicita el permiso para utilizar la impresora, el cual se le concede. Es entonces cuando el proceso B solicita permiso para utilizar la unidad de cinta y se le otorga. El proceso A solicita entonces la unidad de cinta, pero la solicitud es denegada hasta que B la libere. Por desgracia, en este momento, en vez de liberar unidad de cinta, B solicita la impresora. Los procesos se bloquean en ese momento y permanecen así por siempre.
RECURSOS
Un sistema se compone de un numero finito de recursos que se distribuyen entre varios tipos:
- - Físicos: Ciclo de cpu, espacio en memoria, dispositivos de e/s (impresoras, unidades de cinta, etc.)
- - Lógicos: Ficheros, tablas del sistemas, semáforos.
Por lo general, una computadora tiene distintos recursos que pueden ser otorgados. Algunos recursos podrán tener varias instancias idénticas, como es el caso de tres unidades de cinta. Si se tienen disponibles varias copias de un recurso, cualquiera de ellas se pude utilizar para satisfacer cualquier solicitud del recurso. Un recurso es cualquier cosa que solo puede ser utilizada por un único proceso en un instante dado.
Los recursos son de dos tipos:
- - Apropiable
- - No apropiables
Un recurso apropiable es aquel que se puede tomar del proceso que lo posee sin efectos dañinos. La memoria es un ejemplo de recurso apropiable.
Por el contrario, un recurso no apropiable, es aquel que no se puede tomar de su poseedor activo sin provocar un fallo de calculo. Si un proceso comienza a imprimir una salida, se toma la impresora y se le da a otro proceso, el resultado será una salida incomprensible. Las impresoras no son apropiables.
Los interbloqueos se relacionan con los recursos no apropiables. Lo usual es que los bloqueos asociados a recursos apropiables se pueden resolver, mediante la reasignación de recursos de un proceso a otro.
La secuencia de eventos necesaria para utilizar un recurso es:
- - Solicitar el recurso
- - Utilizar el recurso
- - Liberar el recurso
Si el recurso no esta disponible cuando se le solicita, el proceso solicitante debe esperar. En algunos sistemas operativos, el proceso se bloquea de manera automática al fallar una solicitud de un recurso y se despierta cuando dicho recurso esta disponible. En otros sistemas la solicitud falla con un código de error y el proceso solicitante debe esperar un poco e intentar de nuevo.
Un proceso cuya solicitud de un recurso ha sido denegada entra por lo general en un ciclo, en el cual solicita el recurso, duerme e intenta de nuevo.
Aunque este proceso no esta bloqueado, para todos los efectos esta como bloqueado, puesto que no puede hacer ninguna labor útil.
El interbloque se puede definir entonces de la siguiente forma:
Un conjunto de procesos se encuentra en estado de interbloqueo cuando cada uno de ellos espera un suceso que solo puede originar otro proceso del mismo conjunto.
En la mayoría de los casos, el evento que espera cada proceso es la liberación de cierto recurso que posee por el momento otro miembro del conjunto. En otras palabras, cada miembro del conjunto de procesos bloqueados espera un recurso poseído por un proceso bloqueado. Ninguno de los procesos puede continuar su ejecución, ni liberar recursos, y puede ser despertado.
CONDICIONES PARA PRODUCIR INTERBLOQUEO
En la política del sistema operativo, deben darse tres condiciones para que pueda producirse un interbloqueo:
1- 1- Condición de exclusión mutua: Cada recurso esta asignado a un único proceso o esta disponible.
2- 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- 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- 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.
Exclusión mutua.-Si ningún recurso se puede asignar de forma exclusiva, no se producirá interbloqueo. Sin embargo, existen recursos para los que no es posible negar la condicion de exclusión mutua. No obstante, es posible eliminar esta condicion en algunos procesos. Por ejemplo, una impresora es un recurso no compatible pues si se permite que dos procesos escriban en la impresora al mismo tiempo, la salida resulta caótica. Pero con el spooling de salida varios procesos pueden generar salida al mismo tiempo. Puesto que el spooler nunca solicita otros recuersos, se elimina el bloqueo originado por la impresora.
El inconveniente es que no todos los recursos pueden usarse de esta forma (por ejemplo, la tabla de procesos no se presenta al spooling y, ademas, la implementacion de esta técnica puede introducir nuevos motivos de interbloqueo, ya que el spooling emplea una zona de disco finita)
Retencion y espera.-La condicion de retencion y espera puede prevenirse exigiendo que todos los procesos soliciten todos los recursos que necesiten a un mismo tiempo y bloqueando el proceso hasta que todos los recursos puedan concederse simultáneamente. Esta solucion resulta ineficiente por dos factores:
- - En primer lugar, un proceso puede estar suspendido durante mucho tiempo, esperando que concedan todas sus solicitudes de recursos, cuando de hecho podria haber avanzado con solo algunos de los recursos.
- - Y en segundo lugar, los recursos asignados a un proceso pueden permanecer sin usarse durante periodos considerables, tiempo durante el cual se priva del acceso a otros procesos.
No apropiación.-La condición de no apropiación puede prevenirse de varias formas. Primero, si a un proceso que retiene ciertos recursos se le deniega una nueva solicitud, dicho proceso deberá liberar sus recursos anteriores y solicitarlos d eneuvo, cuando sea necesario, junto con el recurso adicional. Por otra parte, si un proceso solicita un recurso que actualmente esta retenido por otro proceso, el sistema operativo debe expulsar al segundo proceso y exigirle que libere sus recursos. Este ultimo esquema evitará el interbloqueo sólo si nho hay dos procesos que posean la misma prioridad.
Esta técnica es práctica sólo cuando se aplica a recursos cuyo estado puede salvarse y restaurarse más tarde de una forma facil, como es el caso de un procesador.
Circulo vicioso de espera.-La condición del circulo vicioso de espera puede prevenirse definiendo una ordenación lineal de los tipos de recursos. Si a un proceso se le han asignado recursos de tipo R, entonces sólo podrá realizar peticiones posteriores sobre los recursos de los tipos siguientes a R en la ordenación.
Para comprobar el funcionamiento de esta estrategia, se asocia un índice a cada tipo de recurso.
Como en la retención y espera, la prevención del circulo vicioso de espera puede ser ineficiente, retardando procesos y denegando accesos a recursos innecesariamente.
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.
Negativa de iniciación de procesos.-Confedérese un sistemas de n procesos y m tipos diferentes de recursos. Se definen los vectores y matrices siguientes:
Recursos = (R1, R2, … Rm) cantidad total de cada recurso en el sistema
Disponible = (D1, D2, … Dm) cantidad total de cada recurso sin asignar a los procesos
Demanda = exigencias de recursos para cada proceso
Asignación = asignación actual
La matriz Demanda indica las exigencias máximas de recursos para cada proceso, con una fila para cada uno. Es decir, Cij = demanda del recurso j por parte del proceso i. Esta información debe declararse por adelantado para que funcione la predicción de interbloqueo.
De forma similar, Aij = asignación del recurso j al proceso i. Se puede ver que se cumplen las siguientes relaciones:
1. Para todo i, Ri = Di + Σ Aki : todos los recursos están asignados o disponibles.
2. Para todo k e i, Cki <= Ri: ningún proceso puede demandar más recursos que la cantidad total de recursos del sistema
3. Para todo k e i, Aki <= Cki: ningún proceso tiene asignados más recursos de cualquier tipo que los que ha declarado necesitar.
Con estas tres cantidades, se puede definir una política de predicción del interbloqueo que rechace iniciar un nuevo proceso si sus exigencias de recursos pueden conducir a un intebloqueo. Un nuevo proceso Pn+1 comenzará sólo si:
Ri >= C(n+1)i + Σ Cki, para todo i
Es decir, un proceso comenzará sólo si puede servirse la demanda máxima de todos los procesos actuales más la del nuevo proceso. Esta estrategia es poco óptima, puesto que asume el caso peor: que todos los procesos expresen su demanda máxima a la vez.
Negativa de asignación de recursos.-La estrategia de negar la asignación de recursos, denominada algoritmo del banquero, fue propuesta por primera vez por Dijkstra, que usó este nombre por la analogía de este problema con el de un banco cuando los clientes quieren obtener dinero prestado. Los clientes sería los procesos y el dinero a prestar, los recursos. Si se enuncia de esta manera, el banco tiene una reserva limitada de dinero para prestar y un conjunto de clientes con líneas de crédito. Un cliente puede elegir pedir dinero a cargo de la línea de crédito en un instante dado y no hay garantía de que el cliente realice ninguna reposición hasta después de sacar la cantidad máxima. El banquero puede rechazar un préstamo a un cliente si hay riesgo de que el banco no tenga fondos suficientes para hacer préstamos futuros que los clientes finalmente repondrán.
Para empezar se definen los conceptos de estado y de estado seguro. Considérese un sistema con un número fijo de procesos. Así pues, el estado estará formado por los dos vectores, Recursos y Disponible, y las dos matrices, Demanda y Asignación, definidas anteriormente. Un estado seguro es un estado en el cual existe al menos una secuencia que no lleva al interbloqueo ( es decir, todos los procesos pueden ejecutarse hasta el final). Un estado inseguro es, naturalmente, un estado que no es seguro.