Академический Документы
Профессиональный Документы
Культура Документы
Claudia Urea
Cdigo fuente
public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello World");
}
}
El resto del software se ejecuta en modo usuario, en el cual slo un subconjunto de las
ones de mquina es permitido. En particular, las instrucciones que afectan el control de la mque se encargan de la E/S (entrada/salida) estn prohibidas para los programas en modo
Volveremos a tratar las diferencias entre el modo kernel y el modo usuario repetidamente
o de este libro.
Navegador
Web
Lector de
Reproductor
correo
electrnico de msica
Modo usuario
Programa de interfaz de usuario
Modo kernel
Software
Sistema operativo
Hardware
TB
MULTIPLEXAJE
Top
Unix
Ken Thompson
Minix->Educativo
Linux
Linus Torvalds,
Bibliografa adicional
Glyn Moody (2001)
rogramacin. En la 7094, cuando el trabajo actual se detena para esperar a que se complea operacin con cinta u otro dispositivo de E/S, la CPU simplemente permaneca inactiva
erminar la operacin de E/S. Con los clculos cientficos que requieren un uso intensivo de
, la E/S no es frecuente, por lo que este tiempo desperdiciado no es considerable. Con el proento de datos comerciales, el tiempo de espera de las operaciones de E/S puede ser a menu0 a 90 por ciento del tiempo total, por lo que deba hacerse algo para evitar que la (costosa)
st inactiva por mucho tiempo.
solucin que surgi fue particionar la memoria en varias piezas, con un trabajo distinto en
articin, como se muestra en la figura 1-5. Mientras que un trabajo esperaba a que se comuna operacin de E/S, otro poda estar usando la CPU. Si pudieran contenerse suficientes
s en memoria principal al mismo tiempo, la CPU poda estar ocupada casi 100 por ciento del
. Para tener varios trabajos de forma segura en memoria a la vez, se requiere hardware espera proteger cada trabajo y evitar que los otros se entrometan y lo malogren; el 360 y los detemas de tercera generacin estaban equipados con este hardware.
OS360
Trabajo 3
Trabajo 2
Trabajo 1
Particiones
de memoria
Sistema
operativo
1401
Terminado
Nuevo
Admitido
Interrumpido
salir
Salida
Listo
Corre
En lista
Compitiendo
con otro evento
I/O
Espera
Esperando otro
evento
I/O
SECCIN 2.2
HILOS
97
respaldos en disco sin interferir con los otros dos. En la figura 2-7 se muestra esta situacin con
tres hilos.
SUB-PROCESOS THREADS
Four score and seven
years ago, our fathers
brought forth upon this
continent a new nation:
conceived in liberty,
and dedicated to the
proposition that all
men are created equal.
Now we are engaged
in a great civil war
testing whether that
Kernel
Disco
Teclado
Figura 2-7.
atributo
accin
inicioHillo.c
#include <stdio.h>
int main()
#include <pthread.h>
{
pthread_t thread_id;
{
while(1)
while (1) {
fputc('x',stderr);
fputc('0',stderr);
return NULL;
return 0;
}
CPUs tienen soporte directo en el hardware para el multihilamiento y permiten que las conmu
iones de hilos ocurran en una escala de tiempo en nanosegundos.
En la figura 2-11(a) podemos ver tres procesos tradicionales. Cada proceso tiene su propio
pacio de direcciones y un solo hilo de control. Por el contrario, en la figura 2-11(b) vemos un s
proceso con tres hilos de control. Aunque en ambos casos tenemos tres hilos, en la figura 2-11
ada uno de ellos opera en un espacio de direcciones distinto, mientras que en la figura 2-11(b)
res comparten el mismo espacio de direcciones.
Proceso 1
Proceso 1
Proceso 1
Proceso
Espacio
de usuario
Hilo
Hilo
Espacio
de kernel
Kernel
Kernel
(a)
(b)
Figura 2-11. (a) Tres procesos, cada uno con un hilo. (b) Un proceso con tres hilos.
Hilo 2
Hilo 1
Hilo 3
Proceso
Pila del
hilo 1
Kernel
Hilo despachador
Hilo trabajador
Espacio
de usuario
Cach de
pginas Web
Espacio
de kernel
Kernel
Conexin
de red
Hilo despachador
Hilo trabajador
Cuando el trabajador se despierta, comprueba si la peticin se puede satisfacer desde la cach de pginas Web, a la que todos los hilos tienen acceso. De no ser as, inicia una operacin
read para obtener la pgina del disco y se bloquea hasta que se complete la operacin de disco.
Cuando el hilo se bloquea en la operacin de disco, se selecciona otro hilo para ejecutarlo, posi(TRUE)
blemente el despachador, para adquirir ms trabajo owhile
tal vez otro
trabajador{ que queda listo para
ejecutarse.
esperar_trabajo(&buf)
Este modelo permite escribir en el servidor en forma de una coleccin de hilos secuenciales.
buscar_pagina_en_cache(&buf,&pagina);
El programa del despachador consiste en un ciclo infinito
para obtener una peticin de trabajo y
enviarla a un trabajador. El cdigo de cada trabajadorifconsiste
en un ciclo infinito que se encarga
(pagina_no_esta_en_cache(&pagina))
de aceptar una peticin del despachador y comprobar la cach de pginas Web para ver si la pgina est presente. De ser as, se devuelve al cliente y el}trabajador se bloquea para esperar una nueva peticin.
while (TRUE)
{ obtener_siguiente_peticion(&buf);
pasar_trabajo(&buf);
}
leer_pagina_de_disco(&buf, &pagina);
devolver_pagina(&pagina);
}
sea posible crear dicho hilo con rapidez. El nuevo hilo recibe el mensaje entrante que va a procesar. El resultado de utilizar hilos emergentes es que la latencia entre la llegada del mensaje y el inicio del procesamiento puede ser muy baja.
CONCEPTOS DE ADMINISTRACIN.
Proceso
Hilo existente
Mensaje entrante
Red
(a)
(b)
Figura 2.18. Creacin de un nuevo hilo cuando llega un mensaje. (a) Antes de que llegue el mensaje. (b) Despus de que llega el mensaje.
#include <stdio.h>
dosHilos.c
#include <pthread.h>
struct estparametros
int main()
{
pthread_t thread1_id;
char character;
pthread_t thread2_id;
int count;
};
thread1_args.character = 'X';
thread1_args.count = 40;
struct estparametros * p;
thread2_args.character = 'Y';
thread2_args.count = 50;
return 0;
}
POSIX EN LINUX
Llamada de hilo
Descripcin
Pthread_create
Pthread_exit
Pthread_join
Pthread_yield
Pthread_attr_init
Pthread_attr_destroy
main()
..
pthread_join (thread1_id, NULL);
pthread_join (thread2_id, NULL);
printf(" \n);
..
thread_join
Condicin de carretera
ALGORITMOS DE EVALUACIN
ALGORITMOS DE EVALUACIN
Hilado simple
Variables y parametros
Globales y Locales
PROCESOS E HILOS
CAPTULO 2
regin crtica y slo se permite uno a la vez. En consecuencia, B se suspende temporalmente hasta el tiempo T3 cuando A sale de su regin crtica, con lo cual se permite a B entrar de inmediato.
En algn momento dado B sale (en T4) y regresamos a la situacin original, sin procesos en sus
regiones crticas.
A entra a su regin crtica
Proceso A
B sale de su
regin crtica
B entra a su
regin crtica
B intenta entrar
a su regin
crtica
Proceso B
B se bloquea
T1
T2
T3
T4
Tiempo
1965 - Disjkstra
ingreso_a_la_seccin_critica
balances[to_acct] += dollars;
balances[from_acct] -= dollars;
salida_de_la_seccin_critica
pthread_setcancelstate
(PTHREAD_CANCEL_DISABLE, &old_cancel_state);
account_balances[to_acct] += dollars;
account_balances[from_acct] -= dollars;
pthread_setcancelstate (old_cancel_state, NULL);
INHABILITACIN DE INTERRUPCIONES
bandera =0
si (bandera =0)
Hilo 1 trabaja
sino
Hilo 2 trabaja
ALTERNANCIA ESTRICTA
while (TRUE) {
while (turno != 0)
region_critica();
turno = 1;
region_nocritica();
while (TRUE) {
while (turno != 1)
region_critica();
turno = 0;
region_nocritica();
PETERSON
variables compartidas
bool bandera[2] = {false, false};
int turno = 0; // desempate
hilo()
{
bandera[i] = true;
turno = j;
while (bandera[j] && turno == j);
seccio n
cr t ica();
bandera[i] = false;
seccio n
no cr t ica();
}
/* nmero de procesos */
int turno;
int interesado[N];
/* de quin es el turno? */
/* al principio todos los valores son 0 (FALSE) */
turno = proceso;
/* establece la bandera */
1981
Consumidor
{
recuperar (e);
consumir(e);
}
#define N 100
int cuenta = 0;
void productor(void) {
int elemento;
while (TRUE) {
elemento = producir_elemento();
if (cuenta == N)
sleep();
insertar_elemento(elemento);
cuenta = cuenta + 1;
if (cuenta == 1)
wakeup(consumidor);
}
}
void consumidor(void) {
int elemento;
while (TRUE) { /* se repite en forma indefinida */
if (cuenta == 0) /* si bfer est vaco, pasa a inactivo */
sleep();
elemento = quitar_elemento(); /* saca el elemento del bfer */
cuenta = cuenta 1; /* disminuye cuenta de elementos en bfer */
if (cuenta==N1) /* estaba lleno el bfer? */
wakeup(productor);
consumir_elemento(elemento); /* imprime el elemento */
}}
(a)
proceso (b)
Proceso (b)
utiliza proceso (a)
vida de un filsofo
repetir
{
pensar
estar hambriento
coger tenedores
comer
soltar tenedores
}
in_mutex;
seccin_critica;
out_mutex;
seccin_no_criticas;
SEMFOROS
1
1
C
C
B
-3
D
D
TERCER DA
LIMITACIONES EN EL SISTEMA
A. Numero limitado de recursos
LIMITACIONES EN EL SISTEMA
B. Recursos compartidos (Loked resources)
Recurso
LIMITACIONES EN EL SISTEMA
Re-asignacin de tarea
POLTICAS DE USO
Trabajo
Trabajo
Trabajo
Trabajo
Trabajo
Trabajo
B
A
Aleatorio
C
D
ROUND ROBIN
ROUND ROBIN
Tiempo definido
Time Quantum
CALENDARIZACIN
Por lotes
Primero
en llegar el
primero en ser atendido
Trabajo
Tiempo
corto primero
restante ms
corto a continuacin
Interactivo
Calendarizacin
por turno
circular
Calendarizacin
Multiples
Tiempo
real
colas
por prioridades
Y QU PASA
CON LA
MEMORIA?
FUNDAMENTACIN
MEMORIA
Mono programacin
Job 1
Job 1
Job 2
Finito
RAM
Mono programacin
X
Finito
Job 1
RAM
Job 1
PARTICIONES FIJAS
Job 1
Job 2
Job 3
RAM
PARTICIONES FIJAS
RAM
Direccin de
memoria
Acceso
Status
50K
200K
Job 1
Busy
50 K
200K
Job 2
Busy
80 K
300K
30 K
320K
Free
Job2
Busy
Cambio
CARGA DINMICA
Job 1
Quie
Job 2
RAM
Acceso
Tamao
Direccin de
memoria
Status
Job 1
50K
400K
Busy
Job 2
50 K
500K
Busy
Job3
80 K
100K
Busy
RE ASIGNAR LA MEMORIA
- El primer espacio en
el que entre
Desperdicio
Job 1
Vaco
de espacio
Job 6
Job 2
Vaco
Job 7
Job 3
Job 4
Trabajo terminado
RAM
Trabajo esperando
RE ASIGNAR LA MEMORIA
- El mejor espacio
Job 1
Vaco
Job 6
Job 2
+Tiempo utilizado
Vaco
Eficiente
Job 3
Vaco
Trabajo terminado
Job 7
Job 4
RAM
Trabajo esperando
Particiones fijas
DEALLOCATION
Job 1
Job 2
Job 3
Trabajo terminado
RAM
RAM
Trabajo esperando
Memoria dinmica
DEALLOCATION
Job 1
Job
Vaco6
Job 2
- Unir la memoria
Vaco
Job 3
Job 7
Vaco
Trabajo terminado
Job 4
RAM
Trabajo esperando
Job 1
Job 2
Job 3
Sectores
o
Memoria Virtual
bloques
PAGE FRAME
1
Page frame
Programa
cuenta
Page frame
RAM
1
2
3
PAGE FRAME
1
Page frame
2
RAM
Tabla de trabajos
Tamao del trabajo
400
3065
200
3100
600
5066
PAGE FRAME
1
Page frame
2
RAM
PAGE FRAME
1
Page frame
2
RAM
Estado
Busy
Free
Busy
DEMANDA DE MEMORIA
1
Page frame
2
RAM
Page frame
Estado
Modificado
Referenciado
Page Frame
Number
Esta en la memoria?
Ha sido modificado?
Ha sido referenciado?
Por quien?
ALGORITMOS DE REMPLAZO
El menos usado
El ms usado
SWAPPING
Sectores
o
bloques
sector1
Sector 2
Funcin Suma
()
0x0004
0x0005
0x0006
0x0012
0x0013
0x0014
0x0062
Funcin Resta
()
0x0007
0x0008
0x0009
0x0015
0x0016
0x0021
0x0072
0x0085
0x0090
0x0010
0x0022
0x0011
0x0050
Programa 1
0x0060
0x0061
0x0091
0x0111
PAGINACIN
Tabla del mapeo de las pginas
Page frame
Numero page
frame
Puntero de la pagina
Read
Write
Execute
SWAPING
1
6
2
2
Extencin
6
1
3
1
Hard drive
Ms lento ->
pero funciona
BIBLIOGRAFA
REFERENCIAS BIBLIOGRFICAS
http://www.cplusplus.com/
https://blog.feabhas.com/2009/09/mutex-vs-semaphores%E2%80%93-part-1-semaphores/