Anda di halaman 1dari 20

Procesos

Introducción
Inicialmente, los sistemas eran
monoprogramados:

● El SO corría los programas de a uno a la vez


● SO: actuaba como
○ Interfaz entre recursos del sistema
○ Agente de seguridad (acceso indebido a
recursos, etc)
Introducción
Luego aparecieron los sistemas
multiprogramados:
Ejecutan más de un programa “a la vez”

Motivos:
● Mejor aprovechamiento del sistema (CPU)
● Habilitar sistemas multi-usuario
Introducción
¿Qué necesita hacer el sistema operativo para
tener multiprogramación?
Necesito => Gestionar los programas
Nueva funcionalidad:
● Seguimiento de los programas
● Más control de los programas
Definiciones
Programa: secuencia de instrucciones
compiladas a código de máquina.

Ejecución concurrente: ejecución de dos o más


programas durante un mismo intervalo de
tiempo, bajo el cual podrían compartir (o
competir por) recursos

Multiprogramación: modo de operación en el


cual dos o más programas ejecutan
concurrentemente
Proceso: definición

● “Programa en ejecución”
(Punto de vista del usuario)

● “La unidad de trabajo de un sistema operativo”


(Punto de vista funcional)
Proceso: definición
● “Una entidad formada por” (p.v. diseñador
del s.o.)
○ Secuencia de instrucciones (código)
○ Conjunto de datos (variables, pila de
ejecución)
○ Un estado (contexto de ejecución,
prioridad, etc)
○ Conjunto de atributos (process id, user id,
etc)
○ Recursos asignados (archivos abiertos,
etc)
Proceso: manifestación física
Imagen del proceso

STACK Pila del sistema (Tamaño variable)

HEAP Memoria dinámica (tamaño variable)

DATOS Memoria estática (tamaño fijo)


CÓDIGO Instrucciones propias del programa
PCB Estructura del S.O. para administrar el prog.
Proceso: manifestación física
¿Donde se ubica cada cosa?
STACK
int valor_inicial = 1;

int main (){


int total = sumar(valor_inicial,2);
HEAP char * mensaje = malloc(30);
sprintf(mensaje,”Total: %d”,total);
printf(mensaje);
DATOS }

CÓDIGO int sumar(int valor1, int valor2){


int resultado = valor1 + valor2;
return resultado;
PCB }
Proceso: PCB (Process Control Block)

● Identificación proceso: PID, PPID, UID


● Estado del procesador
○ Registros visibles al usuario (AX, BX, etc)
○ Registros de control y estado (PC,IR, FLAGS, etc)
○ Stack pointers
● Control de proceso
○ Planificación: estado (READY, RUNNING, etc),
prioridad, quantum, evento de espera
● Memoria: punteros a segmentos de código/datos/heap
● Recursos asignados: archivos / semáforos abiertos, etc
Proceso: ejemplo multiprogramación
Proceso: ciclo de vida
Creación Finalización
¿Quién los crea? ¿Quién los finaliza?
● El SO ● El SO
● Otro proceso ● Otro proceso
● El propio proceso
○ Normal exit /
Abnormal exit
Proceso: ciclo de vida

Poner ejemplo de pstree -s -p pid, ver


parent pid
algo parecido matando procesos
How signaling works?
Would you please
kill yourself?

windows

FIREFOX Linux
se cuelga
Proceso: ciclo de vida
Diagrama de 2 estados

NOT
RUNNING
RUNNING
Proceso: ciclo de vida
Diagrama de 5 estados

NEW EXIT
READY RUNNING

BLOCKED
Proceso: ciclo de vida
Diagrama de 7 estados

NEW RUNNIN EXIT


READY
G

BLOCK
ED

SUSP / SUSP /
READY BLOCKED
Proceso: cambio de proceso

¿Cuando podría ocurrir esto? => En cualquier


oportunidad en la que el SO recupere el control:
● Interrupciones (hw/sw)
● Syscall
Proceso: cambio de proceso
1- Interrupcion
2- HW: Stack ← PC and PSW (save process context)
3- HW: PC ← SO routine && mode switch (user → kernel)
4- SO: Stack ← other registers (save rest of context)
5- SO: Decides to switch process
6- SO: A's PCB ← PC, PSW and rest (from stack)
7- SO: A's PCB.state ← Ready
8- SO: ReadyQueue ← A's PCB
9: SO: Select other process: B
10:SO: B's PCB.state ← Running
11:SO: Memory management registers ← B's limits
12:SO: Processor state ← B (PC, PSW, etc) && mode switch
(kernel → user)
Syscalls y bloqueo de Procesos
Bloqueante No Bloqueante

Operación se
puede realizar Realiza la operación Realiza la operación
inmediatamente

Operación va a
- No realiza la
tardar mucho Bloquea el proceso operación
(indefinido) - Continua ejecutando

Valores de
Ok / Error Ok / Error / Reintentar
retorno

Anda mungkin juga menyukai