Procesos - Hilos Flashcards
(15 cards)
Que es un programa
Es una secuencia de instrucciones compiladas a código de máquina.
- Es la “clase”
Que es un proceso?
Es un programa en ejecución (que corre en modo Usuario).
- El programa es la entidad pasiva y el proceso la activa, es decir un programa se convierte en proceso cuando su archivo ejecutable es cargado en memoria.
- Es el “objeto”
- Es la unidad de ejecución más pequeña planificable.
Que es el PCB
Bloque de control de proceso, tiene toda la información útil de un proceso para el SO
- Cada proceso en el sistema tiene su propio PCB. El SO reconoce la existencia de un proceso
en MP porque hay un PCB.
- El PCB está siempre en MP.
Que informacion tiene el PCB
- Identificadores: PID (Process ID), PPID (Parent Process ID), UID (User ID).
- Contexto de ejecución: Para cuando el proceso no se está ejecutando, pero no finalizó.
o PC (Program Counter): Contiene la dirección de memoria de la proxima instrucción a
leer.
o PSW (Program Status Word): Conjunto de registros que contienen la información de
estado. - Control: estado del proceso referido a la planificación (ready, running, etc)
- Prioridad: Nivel de prioridad relativo al resto de los procesos.
- Punteros a memoria: al código, los datos asociados y demás bloques de memoria.
- Información de estado de E/S: peticiones pendientes, dispositivos asignados a dicho proceso,
etc. - Información contable: estadísticas.
Corto Plazo
Se controla el grado de multiprocesamiento. El grado maximo es el de Cores del CPU. Tiene que tener el menor overhead, es el que mas se ejecuta.
Largo Plazo
Se controla el grado de multiprogramacion. Gestiona de NEW a READY y gestiona la finalizacion de procesos.
Mediano plazo
Se controlan los procesos suspendidos Modulo SWAP en Disco.
MULTIPROGRAMACION que es:
Cantidad de procesos en memoria, tiene un límite. Refiere a la
concurrencia, varios procesos que esperan ejecutarse.
MULTIPROCESAMIENTO:
Cantidad de procesos corriendo en paralelo. Refiere al paralelismo, varios
procesos ejecutando en paralelo.
Cuando hay syscalls?
- Cambio de NEW a READY (fork)
- Entrada a I/O – READY a BLOCKED/WAITING
- Cambio de cualquiera a TERMINATED (exit)
- Yield() o “cesión voluntaria de la CPU”) es una operación en sistemas operativos donde un
proceso o hilo en estado RUNNING libera voluntariamente el control de la CPU, pasando al
estado READY.
Esto permite que otros procesos/hilos de igual o mayor prioridad puedan
ejecutarse, promoviendo la equidad y evitando la monopolización del recurso.
Donde hay interrupciones?
- Fin de Quantum de RUNNING a READY
- Fin de I/O de BLOCKED/WAITING a READY (salvo que haya sido SUSPENDED)
Hilos Estructura
- Todos sus hilos comparten: código, datos, heap y PCB.
- Cada hilo tiene su propio TCB (Thread control block), pila, contexto de ejecución (PC y PSW) y estado.
Estado de los procesos segun hilos
- Si cualquier hilo está en RUNNING, el proceso también estará en RUNNING.
- Si ningún hilo está en RUNNING, y alguno está en READY, el proceso está en READY.
- Si todos los hilos están en BLOCKED, el proceso también estará en BLOCKED.
Procesos vs hilos
- Los hilos permiten la comunicación privada entre vario hilos del mismo proceso, sin
intervención del SO. - Mayor eficiencia en el cambio de un Hilo a otro, que de un proceso a otro.
- Mayor eficiencia en la creación de un hilo que en la creación de un proceso hijo.
- Un proceso multihijo puede recuperarse de la muerte de un hilo, dado que conoce sus efectos
y toma su espacio de memoria. - Cuando un proceso “muere” todos sus hilos también, pues los recursos de un proceso son
tomados por el SO.
KLT vs ULT
Los ULT se desprenden del KLT. Por eso para el SO todo lo que hagan los ULT lo habrá hecho el KLT del
que ellos dependen.
Los ULT tienen concurrencia, no paralelismo dado que el SO no los conoce, no les puede dar 2 cpu.
No pueden ser planificados.