Вы находитесь на странице: 1из 83

PROCESOS

Claudia Urea

QU PASA POR DENTRO DEL SOFTWARE

Cdigo fuente
public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello World");
}
}

BiteCode -> nivel 1


Cdigo maquina -> nivel 0

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

Figura 1-1. Ubicacin del sistema operativo.

TB

MULTIPLEXAJE

Top

INTEL 386 - MULTITICS

Intel 386 - MultiTICs

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

Figura 1-5. Un sistema de multiprogramacin con tres trabajos en memoria.

1401

ra caracterstica importante de los sistemas operativos de tercera generacin fue la capacidad


er trabajos en tarjetas y colocarlos en el disco tan pronto como se llevaban spooling
al cuarto de compu(de Simultaneous
. As, cada vez que terminaba un trabajo en ejecucin, el sistema operativo poda cargar un nueOperation On Line,
ajo del disco en la particin que entonces estaba vaca y lo ejecutaba. A estaPeripheral
tcnica se le conoce
pooling (de Simultaneous Peripheral Operation On Line, operacin perifrica
simultneaperifrica
en
operacin
simultnea
tambin se utiliz para las operaciones de salida. Con el spooling, las mquinas 1401 no eran
sarias y desapareci la mayor parte del trabajo de transportar las cintas. en lnea
unque los sistemas operativos de tercera generacin eran apropiados para los clculos cientxtensos y las ejecuciones de procesamiento de datos comerciales masivos, seguan siendo en

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

nation, or any nation


so conceived and so
dedicated, can long
endure. We are met on
a great battlefield of
that war.
We have come to
dedicate a portion of
that field as a final
resting place for those
who here gave their

lives that this nation


might live. It is
altogether fitting and
proper that we should
do this.
But, in a larger sense,
we cannot dedicate, we
cannot consecrate we
cannot hallow this
ground. The brave
men, living and dead,

who struggled here


have consecrated it, far
above our poor power
to add or detract. The
world will little note,
nor long remember,
what we say here, but
it can never forget
what they did here.
It is for us the living,
rather, to be dedicated

here to the unfinished


work which they who
fought here have thus
far so nobly advanced.
It is rather for us to be
here dedicated to the
great task remaining
before us, that from
these honored dead we
take
increased
devotion to that cause

for which they gave


the last full measure of
devotion, that we here
highly resolve that
these dead shall not
have died in vain that
this nation, under God,
shall have a new birth
of freedom and that
government of the
people by the people,

Kernel
Disco

Teclado

Figura 2-7.

Un procesador de palabras con tres hilos.

atributo

pthread_create (&thread_id, NULL, &imprimir, (void *) i);


thread
pthread_t thread_id;

accin

attributos -> NULL es por defecto


pthread_attr_init (&attr);
pthread_attr_setdetachstate (&attr, PTHREAD_CREATE_DETACHED);
pthread_create (&thread, &attr, &thread_function, NULL);
pthread_attr_destroy (&attr);

inicioHillo.c
#include <stdio.h>

int main()

#include <pthread.h>

{
pthread_t thread_id;

void *imprimir (void *nada)

pthread_create (&thread_id, NULL, &imprimir, NULL);

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

Esta es la razn por la cual cada hilo necesita su propia pila.

Hilo 2
Hilo 1

Hilo 3

Proceso

Pila del hilo 3

Pila del
hilo 1

Kernel

Figura 2-13. Cada hilo tiene su propia pila.

Proceso del servidor Web

Hilo despachador
Hilo trabajador

Espacio
de usuario

Cach de
pginas Web
Espacio
de kernel

Kernel
Conexin
de red

Figura 2-8. Un servidor Web con mltiples hilos.

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);
}

PROCESOS CONCURRENTES, PARALELISMO


A collection of processing elements (PE) that cooperate to solve
large problems

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

Hilo emergente creado


para manejar el
mensaje entrante

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;

struct estparametros thread1_args;

};

struct estparametros thread2_args;

void* imprimir (void* param)


{

thread1_args.character = 'X';
thread1_args.count = 40;

struct estparametros * p;

pthread_create(&thread1_id, NULL, &imprimir, &thread1_args);

p = (struct estparametros*) param;


int i;

thread2_args.character = 'Y';
thread2_args.count = 50;

for (i=0; i< p-> count; ++i)

pthread_create(&thread2_id, NULL, &imprimir, &thread2_args);

fputc (p->character, stderr);


return NULL;
}

return 0;
}

POSIX EN LINUX
Llamada de hilo

Descripcin

Pthread_create

Crea un nuevo hilo

Pthread_exit

Termina el hilo llamador

Pthread_join

Espera a que un hilo especfico


termine

Pthread_yield

Libera la CPU para dejar que otro hilo


se ejecute

Pthread_attr_init

Crea e inicializa la estructura de


atributos de un hilo

Pthread_attr_destroy

Elimina la estructura de atributos de


un hilo

main()
..
pthread_join (thread1_id, NULL);
pthread_join (thread2_id, NULL);
printf(" \n);
..

thread_join

ALGORITMOS DE ADMINISTRACIN DE CPU

ADMINISTRACIN PARA MLTIPLES PROCESADORES

Condicin de carretera

ALGORITMOS DE EVALUACIN

ALGORITMOS DE EVALUACIN
Hilado simple

Variables y parametros
Globales y Locales

EL PROBLEMA DE LA SECCIN CRITICA


120

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

A sale de 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

Figura 2-22. Exclusin mutua mediante el uso de regiones crticas.

1965 - Disjkstra

CUANDO UN PROCESO ESTA TRABAJANDO


CON RECURSOS COMPARTIDOS (VARIABLES
POR EJEMPLO)
SE DICE QUE ESTE PROCESO EST EN UNA
SECCIN CRITICA (DOS O MS PROCESOS
ESTA EN SU SECCIN CRITICA)
- Uno solo a la vez -

EL PROBLEMA DE LA SECCIN CRITICA


1. No puede haber dos procesos de manera simultnea
dentro de sus regiones crticas.
2. No pueden hacerse suposiciones acerca de las velocidades
o el nmero de CPUs.
3. Ningn proceso que se ejecute fuera de su regin crtica
puede bloquear otros procesos.
4. Ningn proceso tiene que esperar para siempre para
entrar a su regin crtica.


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);

EXCLUSIN MUTUA CON


ESPERA ACTIVA

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();
}

Solucin de Peterson para lograr la exclusin mutua.


#define FALSE 0
#define TRUE 1
#define N 2

/* nmero de procesos */

int turno;
int interesado[N];

/* de quin es el turno? */
/* al principio todos los valores son 0 (FALSE) */

void entrar_region (int proceso);


/*el proceso es 0 o 1*/
{ int otro;
/* nmero del otro proceso */
otro = 1 proceso;
interesado[proceso] = TRUE;

/* el opuesto del proceso */


/* muestra que est interesado */

turno = proceso;

/* establece la bandera */

while (turno == proceso && interesado[otro] == TRUE); }/* instruccin nula */

void salir_region(int proceso)


{interesado[proceso] = FALSE;}

/* proceso: quin est saliendo */ {


/* indica que sali de la regin crtica */ }

1981

EL PROBLEMA DEL PRODUCTOR CONSUMIDOR


Productor
{
producir(e);
depositar (e);
}

Consumidor
{
recuperar (e);
consumir(e);
}

#define N 100

/* nmero de ranuras en el bfer */

int cuenta = 0;

/* nmero de elementos en el bfer */

void productor(void) {
int elemento;
while (TRUE) {
elemento = producir_elemento();
if (cuenta == N)

/* se repite en forma indefinida */


/* genera el siguiente elemento */
/* si el bfer est lleno, pasa a inactivo */

sleep();
insertar_elemento(elemento);
cuenta = cuenta + 1;

/* coloca elemento en bfer */


/* incrementa cuenta de elementos en bfer */

if (cuenta == 1)

/* estaba vaco el bfer? */

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 */
}}

EL PROBLEMA DEL DEAD-LOCK


Proceso
utiliza

(a)

proceso (b)

Proceso (b)
utiliza proceso (a)

EL PROBLEMA DE LOS FILSOFOS

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

SUJECIN DEL RECURSO

DIVISIN DE TIEMPO O PRIORIDAD DE TRABAJOS

Esquema de distribucin de tiempos (Tiempos compartidos)

Tiene el poder de interrumpir un proceso

Esquema de no distribucin de tiempos (Tiempos reales)

Espera que el proceso termine para empezar uno nuevo

PRIMERO EN ENTRAR ES EL PRIMERO EN SALIR

- Respuesta en tiempo puede fallar

EL TRABAJO MAS CORTO PRIMERO

- Los grandes pueden tardar ms en procesarse

ESQUEMA DE PRIORIDADES NPE

B
A

Aleatorio

C
D

ROUND ROBIN

ROUND ROBIN

Tiempo definido
Time Quantum

QU PASA CON LA MULTIPROGRAMACIN

Sincronizacin para que no ocurra

DeadLook - Bloque entre procesos


(Filsofos comensales)

LiveLock - Libera procesador pero eso le


lleva al bloqueo

Starvation - Se agarra el procesador

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

Solo un usuario a la vez

Mono programacin

X
Finito

Job 1

RAM

Job 1

Solo un usuario a la vez

PARTICIONES FIJAS
Job 1

Job 2

Job 3

RAM

PARTICIONES FIJAS

No pueden ser modificables con la necesidad, la mquina


requiere ser apagada para cambiar el tamao de las
particiones.
No puede variar
en tamao

RAM

Tabla de particin de memoria


Tamao

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

Quiero 500 K por fa

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

TAMAO DE LOS TRABAJOS

Job 1

Job 2

Job 3

Paged memory allocation

Sectores
o
Memoria Virtual

bloques

PAGE FRAME
1
Page frame

Programa

cuenta

Page frame

Espacio entre pginas


Page frame
3

RAM

1
2
3

PAGE FRAME
1
Page frame
2

Espacio entre pginas


Page frame
3

RAM

Tabla de trabajos
Tamao del trabajo

Tabla del mapeo de de las


pginas

400

3065

200

3100

600

5066

PAGE FRAME
1
Page frame
2

Espacio entre pginas


Page frame
3

RAM

Tabla del mapeo de las pginas


Page frame

Numero page frame

PAGE FRAME
1
Page frame
2

Espacio entre pginas


Page frame
3

RAM

Tabla del mapa de la memoria


Page frame

Estado

Busy

Free

Busy

DEMANDA DE MEMORIA
1

Necesidad de Page frame

Page frame
2

Espacio entre pginas


Page frame

RAM

Sin necesidad de Page frame

Tabla del mapa de la memoria

Page frame

Estado

Modificado

Referenciado

Page Frame
Number

Esta en la memoria?
Ha sido modificado?
Ha sido referenciado?
Por quien?

ALGORITMOS DE REMPLAZO

Primero en entrar es el primero en salir

El ltimo recientemente usado

El menos usado

El ms usado

SWAPPING

Cargar datos del RAM al Hard Disk

Sectores
o
bloques

thrashing = mucho uso del swapping hace que se vuelva lenta

SEGMENTACIN DE ESPACIOS DE MEMORIA

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

Tabla del segmentos


Numero de segmento

Puntero de la pagina

Read

Write

Execute

SWAPING

1
6
2
2

Extencin

6
1
3
1

Hard drive

RAM 100% ocupado

Ms lento ->
pero funciona

BIBLIOGRAFA

Tanenbaum, Andrew S. (2009) Sistemas Operativos


Modernos, Prentice Hall, Inc. Mexico. ISBN 9780136006633
(Capitulo 2)

William Stalling(2008) 6th edition Operating Systems.

REFERENCIAS BIBLIOGRFICAS

http://www.cplusplus.com/

https://blog.feabhas.com/2009/09/mutex-vs-semaphores%E2%80%93-part-1-semaphores/

Вам также может понравиться