so ii tema 2. procesos e hilos -...

121
Sistemas Operativos II (II-UJI) Procesos e hilos 1 S S O O II II II II Tema 2. Procesos e hilos Índice Concepto de proceso Información del proceso Estados del proceso Formación de un proceso Concepto de hilo de ejecución Procesos en Minix Procesos en Linux Procesos en Windows NT/2000 Planificación de procesos e hilos Servicios POSIX para gestión de procesos e hilos

Upload: vanphuc

Post on 30-Jan-2018

224 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: SO II Tema 2. Procesos e hilos - mermaja.act.uji.esmermaja.act.uji.es/docencia/ii22/teoria/TraspasTema2.pdf · Tablas del sistema operativo Tabla de procesos - T abla de me ori -

Sistemas Operativos II (II-UJI) Procesos e hilos1

SS OOIIIIIIII

Tema 2. Procesos e hilos

Índice

n Concepto de proceso

n Información del proceso

n Estados del proceso

n Formación de un proceso

n Concepto de hilo de ejecución

n Procesos en Minix

n Procesos en Linux

n Procesos en Windows NT/2000

n Planificación de procesos e hilos

n Servicios POSIX para gestión de procesos e hilos

Page 2: SO II Tema 2. Procesos e hilos - mermaja.act.uji.esmermaja.act.uji.es/docencia/ii22/teoria/TraspasTema2.pdf · Tablas del sistema operativo Tabla de procesos - T abla de me ori -

Sistemas Operativos II (II-UJI) Procesos e hilos2

SS OOIIIIIIII

Tema 2. Procesos e hilos

Índice

n Procesos en Minix3 Estados de un proceso3 Implementación del descriptor de proceso

n Procesos en Linux3 Estados de un proceso3 Implementación del descriptor de proceso3 Implementación de la tabla de procesos3 Implementación de la lista de procesos preparados

n Procesos en Windows NT/20003 Objetos tipo proceso e hilo3 Estados de un hilo3 Implementación del procesos e hilos

Page 3: SO II Tema 2. Procesos e hilos - mermaja.act.uji.esmermaja.act.uji.es/docencia/ii22/teoria/TraspasTema2.pdf · Tablas del sistema operativo Tabla de procesos - T abla de me ori -

Sistemas Operativos II (II-UJI) Procesos e hilos3

SS OOIIIIIIII

Tema 2. Procesos e hilos

Índice

n Planificación de procesos e hilos3 Planificación en Minix3 Planificación en Linux3 Planificación en Windows NT/2000

Page 4: SO II Tema 2. Procesos e hilos - mermaja.act.uji.esmermaja.act.uji.es/docencia/ii22/teoria/TraspasTema2.pdf · Tablas del sistema operativo Tabla de procesos - T abla de me ori -

Sistemas Operativos II (II-UJI) Procesos e hilos4

SS OOIIIIIIII

Bibliografía

n J. Carretero et al. Sistemas Operativos: Una Visión Aplicada. McGraw-Hill. 2001. Capítulo 3

n W. Stallings. Sistemas Operativos. Prenctice-Hall. 2001. Capítulos 3, 4, 9 y 10

n A.S. Tanenbaum, A.S. Woodnull. Operating Systems. Design and Implementation. Prentice-Hall International, 2a. edición. 1996.

n H. Custer. Inside Windows NT. Microsoft Press. 1993.

Tema 2. Procesos e hilos

Page 5: SO II Tema 2. Procesos e hilos - mermaja.act.uji.esmermaja.act.uji.es/docencia/ii22/teoria/TraspasTema2.pdf · Tablas del sistema operativo Tabla de procesos - T abla de me ori -

Sistemas Operativos II (II-UJI) Procesos e hilos5

SS OOIIIIIIII

Tema 2. Procesos e hilos

Índice

n Concepto de proceso

n Información del proceso

n Estados del proceso

n Formación de un proceso

n Concepto de hilo de ejecución

n Procesos en Minix

n Procesos en Linux

n Procesos en Windows NT/2000

n Planificación de procesos e hilos

n Servicios POSIX para gestión de procesos e hilos

*

Page 6: SO II Tema 2. Procesos e hilos - mermaja.act.uji.esmermaja.act.uji.es/docencia/ii22/teoria/TraspasTema2.pdf · Tablas del sistema operativo Tabla de procesos - T abla de me ori -

Sistemas Operativos II (II-UJI) Procesos e hilos6

SS OOIIIIIIIIConcepto de proceso

n ¿Qué es un proceso?

u Instancia de un programa en ejecución, requiriendo para ello unos recursos

Programa: estructura pasiva Proceso: estructura activa

Proceso

PC

Recursos:-Procesador-Zonas de memoria-Ficheros -Dispositivos, etc.

Programa Pila

Datos

Código

Otros recursos:-Ficheros abierto-Dispositivos E/S, etc.

Page 7: SO II Tema 2. Procesos e hilos - mermaja.act.uji.esmermaja.act.uji.es/docencia/ii22/teoria/TraspasTema2.pdf · Tablas del sistema operativo Tabla de procesos - T abla de me ori -

Sistemas Operativos II (II-UJI) Procesos e hilos7

SS OOIIIIIIIIConcepto de proceso

n Jerarquía de procesos:

u Algunos SO, como Unix, mantienen una estructura jerárquica entre procesos

u Otros, como Windows NT/2000 (en adelante WNT/2K), no la mantienen

Proceso init: l PID = 1l Ancestro de todos los procesos

init

Inicio Inicio

ShellShell

Editor

Dem. Impr. Dem. Com..

Proceso A

Proceso B Proceso D Proceso C

Proceso E Proceso F

InicioInicio

Page 8: SO II Tema 2. Procesos e hilos - mermaja.act.uji.esmermaja.act.uji.es/docencia/ii22/teoria/TraspasTema2.pdf · Tablas del sistema operativo Tabla de procesos - T abla de me ori -

Sistemas Operativos II (II-UJI) Procesos e hilos8

SS OOIIIIIIIIConcepto de proceso

n El proceso nulo (o la tarea ociosa):

u ¿Qué ocurre cuando el procesador está ocioso?l Se ejecuta el proceso nulo

u ¿Qué hace el proceso nulo?l Ejecuta un bucle infinito que no realiza ninguna operación útill En sistemas Unix suele tener PID=0

u Objetivo:l Entretener al procesador cuando no hay ninguna otra tarea

Page 9: SO II Tema 2. Procesos e hilos - mermaja.act.uji.esmermaja.act.uji.es/docencia/ii22/teoria/TraspasTema2.pdf · Tablas del sistema operativo Tabla de procesos - T abla de me ori -

Sistemas Operativos II (II-UJI) Procesos e hilos9

SS OOIIIIIIIIConcepto de proceso

n Entorno del proceso:

u Tabla NOMBRE-VALOR que se pasa al proceso en su creación

u Se incluye en la pila

u Se establece:l Por defectol Mediante mandatos del shell (export)l Mediante API del SO (putenv, getenv )

u Ejemplo de entorno de un proceso en Unix:l $envLOGNAME=castanoSHELL=/bin/bashTERM=vt100HOME=/users/icc/castanoPATH=/usr/local/bin:/bin:/usr/bin:/users/castano/bin...

Page 10: SO II Tema 2. Procesos e hilos - mermaja.act.uji.esmermaja.act.uji.es/docencia/ii22/teoria/TraspasTema2.pdf · Tablas del sistema operativo Tabla de procesos - T abla de me ori -

Sistemas Operativos II (II-UJI) Procesos e hilos10

SS OOIIIIIIIIConcepto de proceso

n Grupos de procesos:

u Los procesos forman grupos de procesos con alguna característicacomún

l Conjunto de procesos creados por el mismo padrel Conjunto de procesos creados a partir de un shelll Conjunto de procesos dependientes de un terminal

u Se pueden realizar ciertas operaciones sobre un grupo de procesos

l Matar todos los procesos de un grupo de procesosl Envío de señales a todos los procesos de un grupo de procesos

Page 11: SO II Tema 2. Procesos e hilos - mermaja.act.uji.esmermaja.act.uji.es/docencia/ii22/teoria/TraspasTema2.pdf · Tablas del sistema operativo Tabla de procesos - T abla de me ori -

Sistemas Operativos II (II-UJI) Procesos e hilos11

SS OOIIIIIIII

Tema 2. Procesos e hilos

Índice

n Concepto de proceso

n Información del proceso

n Estados del proceso

n Formación de un proceso

n Concepto de hilo de ejecución

n Procesos en Minix

n Procesos en Linux

n Procesos en Windows NT/2000

n Planificación de procesos e hilos

n Servicios POSIX para gestión de procesos e hilos

*

Page 12: SO II Tema 2. Procesos e hilos - mermaja.act.uji.esmermaja.act.uji.es/docencia/ii22/teoria/TraspasTema2.pdf · Tablas del sistema operativo Tabla de procesos - T abla de me ori -

Sistemas Operativos II (II-UJI) Procesos e hilos12

SS OOIIIIIIIIInformación del proceso

n Estado del procesador:

u Contenido de los registros del modelo de programación

n Imagen de memoria:

u Contenido de los segmentos de memoria en los que reside el código y los datos del proceso

n Bloque de control de proceso (BCP)

Page 13: SO II Tema 2. Procesos e hilos - mermaja.act.uji.esmermaja.act.uji.es/docencia/ii22/teoria/TraspasTema2.pdf · Tablas del sistema operativo Tabla de procesos - T abla de me ori -

Sistemas Operativos II (II-UJI) Procesos e hilos13

SS OOIIIIIIIIInformación del proceso

Mapa deMemoria

Mapa de memoriadel Proceso A

Tablas SOPC

SP

Estado

Mapa de memoriadel Proceso B

Mapa de memoriadel Proceso C

Registrosgenerales

Registrosespeciales

Tablas del sistema operativoTabla de procesos

- Tabla de memoria- Tabla de E/S- Tabla de ficheros

BCP Proceso BBCP Proceso A BCP Proceso C-- Identificación- Control

Estado (registros)-- Identificación- Control

Estado (registros) -- Identificación- Control

Estado (registros)

Page 14: SO II Tema 2. Procesos e hilos - mermaja.act.uji.esmermaja.act.uji.es/docencia/ii22/teoria/TraspasTema2.pdf · Tablas del sistema operativo Tabla de procesos - T abla de me ori -

Sistemas Operativos II (II-UJI) Procesos e hilos14

SS OOIIIIIIIIEstado del procesador

n Formado por el contenido de todos los registros del procesador:

u Registros generalesu Contador de programau Puntero de pilau Registro de estadou Registros especiales

n Cuando un proceso está ejecutando su estado del procesador reside en los registros del computador

n Cuando un proceso no se está ejecutando su estado del procesador reside en el BCP

Page 15: SO II Tema 2. Procesos e hilos - mermaja.act.uji.esmermaja.act.uji.es/docencia/ii22/teoria/TraspasTema2.pdf · Tablas del sistema operativo Tabla de procesos - T abla de me ori -

Sistemas Operativos II (II-UJI) Procesos e hilos15

SS OOIIIIIIIIPreparación del código de un proceso

Módulofuente A

Módulofuente B

Compilador oensamblador

Móduloobjeto A

Móduloobjeto B

Otrosobjetos

Montador

Objetoejecutable

Cargador

Editor

Ejecutable enmemoria

Problema

Bibliotecasdel sistema

Page 16: SO II Tema 2. Procesos e hilos - mermaja.act.uji.esmermaja.act.uji.es/docencia/ii22/teoria/TraspasTema2.pdf · Tablas del sistema operativo Tabla de procesos - T abla de me ori -

Sistemas Operativos II (II-UJI) Procesos e hilos16

SS OOIIIIIIIIImagen de memoria

n Formada por los espacios de memoria que un proceso está autorizado a utilizar

n La memoria del proceso la asigna el gestor de memoria del SO

n Si un proceso genera una dirección que esta fuera del espacio de direcciones el HW genera una interrupción HW interna

n La imagen de memoria, dependiendo del computador, puede estar referida a memoria virtual o memoria física

Page 17: SO II Tema 2. Procesos e hilos - mermaja.act.uji.esmermaja.act.uji.es/docencia/ii22/teoria/TraspasTema2.pdf · Tablas del sistema operativo Tabla de procesos - T abla de me ori -

Sistemas Operativos II (II-UJI) Procesos e hilos17

SS OOIIIIIIIIImagen de memoria

n Imagen de memoria de un proceso en un sistema con memoria virtual:

Memoriavirtual

Código

Datos

Pila

Disco

Memoriaprincipal

Tabla depáginas

Una tabla de páginas por proceso

RIED

Tamaño

Registro identificador de estado de direccionamiento

Page 18: SO II Tema 2. Procesos e hilos - mermaja.act.uji.esmermaja.act.uji.es/docencia/ii22/teoria/TraspasTema2.pdf · Tablas del sistema operativo Tabla de procesos - T abla de me ori -

Sistemas Operativos II (II-UJI) Procesos e hilos18

SS OOIIIIIIIIInformación del BCP

n Información de identificación:u PID del proceso, PID del padreu ID de usuario real (uid real)u ID de grupo real (gid real)u ID de usuario efectivo (uid efectivo)u ID de grupo efectivo (gid efectivo)

n Estado del procesador

n Información de control del proceso:u Información de planificación y estadou Descripción de los segmentos de memoria del procesou Recursos asignados (ficheros abiertos, ...)u Comunicación entre procesos (señales, ...)u Punteros para estructurar los procesos en listas o colas

Tabla de ficheros abiertos por el proceso

Page 19: SO II Tema 2. Procesos e hilos - mermaja.act.uji.esmermaja.act.uji.es/docencia/ii22/teoria/TraspasTema2.pdf · Tablas del sistema operativo Tabla de procesos - T abla de me ori -

Sistemas Operativos II (II-UJI) Procesos e hilos19

SS OOIIIIIIIIInformación del BCP

n ¿Qué información del proceso se saca fuera del BCP?

u La que tiene tamaño variable

l Ejemplo: Tabla de páginas

l Razones de eficiencia

l La tabla de procesos se construye como una estructura estática, formada por un número de BCP del mismo tamaño

u La que se comparte:

l El BCP es de acceso restringido al proceso que lo ocupa

l Ejemplo: Punteros de posición de ficheros abiertos por el proceso

Page 20: SO II Tema 2. Procesos e hilos - mermaja.act.uji.esmermaja.act.uji.es/docencia/ii22/teoria/TraspasTema2.pdf · Tablas del sistema operativo Tabla de procesos - T abla de me ori -

Sistemas Operativos II (II-UJI) Procesos e hilos20

SS OOIIIIIIIIInformación del BCP

n Tabla de páginas:

u Describe la imagen de memoria del procesou Tamaño variableu El BCP contiene el puntero a la tabla de páginasu La compartición de memoria requiere que sea externa al BCP

n Punteros de posición de los ficheros:

u Si se asocian a la tabla de ficheros abiertos por los procesos (en el BCP) no se pueden compartir

u Si se asocian al i-nod se comparten siempreu Se ponen en una estructura común a los procesos y se asigna uno

nuevo en cada servicio open

Page 21: SO II Tema 2. Procesos e hilos - mermaja.act.uji.esmermaja.act.uji.es/docencia/ii22/teoria/TraspasTema2.pdf · Tablas del sistema operativo Tabla de procesos - T abla de me ori -

Sistemas Operativos II (II-UJI) Procesos e hilos21

SS OOIIIIIIIICompartir información

l El proceso con BCP7 es hijo del proceso con BCP4

l Los procesos con BCP7 y BCP4 comparten punteros a los mismos ficheros

l El proceso con BCP23 abre uno de los ficheros compartido por los procesos con BCP7 y BCP4

Tabla deficheros

BCP 4 BCP 7 BCP 23

23 23

24456IDFF PP

0

544563 4563

34512 2345

63356 56

28 5566

53684 4

34512 10000

33678 2

0 0 01 1

1

12 2

2

23 3

3

34 4

4

4

fd

0

fd fd

Tabla deficheros

Tabla deficheros

Tabla de ficheros del sistema

IDFF = Identificativo de ficheroPP = Posición puntero al fichero

Page 22: SO II Tema 2. Procesos e hilos - mermaja.act.uji.esmermaja.act.uji.es/docencia/ii22/teoria/TraspasTema2.pdf · Tablas del sistema operativo Tabla de procesos - T abla de me ori -

Sistemas Operativos II (II-UJI) Procesos e hilos22

SS OOIIIIIIIITablas del SO

n Tabla de procesos: Tabla con los BCP de los procesos del sistema

n Tabla de memoria: Información sobre el uso de la memoria

n Tabla de E/S: Información asociada a los periféricos y a las operaciones de E/S

n Tabla de ficheros: Información sobre los ficheros abiertos en el sistema

Page 23: SO II Tema 2. Procesos e hilos - mermaja.act.uji.esmermaja.act.uji.es/docencia/ii22/teoria/TraspasTema2.pdf · Tablas del sistema operativo Tabla de procesos - T abla de me ori -

Sistemas Operativos II (II-UJI) Procesos e hilos23

SS OOIIIIIIIITablas del SO

n Implementación de una cola de procesos listos:

Proceso 7

Proceso 5

Proceso 3

Proceso 9

Inicio

Tabla de procesosTabla de procesos

Cola de procesos Cola de procesos listoslistos Fin

BCP 1

BCP 2

BCP 3

BCP 4

Page 24: SO II Tema 2. Procesos e hilos - mermaja.act.uji.esmermaja.act.uji.es/docencia/ii22/teoria/TraspasTema2.pdf · Tablas del sistema operativo Tabla de procesos - T abla de me ori -

Sistemas Operativos II (II-UJI) Procesos e hilos24

SS OOIIIIIIIIUsuarios y grupos reales y efectivos

n Usuarios reales y efectivos:

u UID (“real user identifier”): Identificativo real del usuarioUsuario responsable del proceso en ejecución

u EUID (“effective user id.”): Identificativo efectivo del usuarioSe usa para:

Π Acceder a ficheros de otros usuariosΠ Enviar señales a procesosΠ Ejecutar programas “setuid”

n Grupos reales y efectivos:

u GID (“real group identifier”):

u EGID (“effective group identifier”)

Page 25: SO II Tema 2. Procesos e hilos - mermaja.act.uji.esmermaja.act.uji.es/docencia/ii22/teoria/TraspasTema2.pdf · Tablas del sistema operativo Tabla de procesos - T abla de me ori -

Sistemas Operativos II (II-UJI) Procesos e hilos25

SS OOIIIIIIIIUsuarios y grupos reales y efectivos

n Programas “SETUID”:

u Cuando un proceso ejecuta un programa “setuid” el núcleo asigna al EUID del proceso el identificativo del propietario de dicho programa y al EGID del proceso el identificativo del grupo del propietario de dicho programa

u Ejemplos de programas “setuid”: login, mount, passwd, mkdir, etc.

u Cambio del bit “setuid” para el usuario y del bit “setgid” para el grupo:

-r-x-—x-—x -r-s--x-—x

-r---—x-—x -r-S--x-—x

-r-x—-x--- -r-x-—s—--

chmod 4511 (ó chmod u+s)

chmod 4411 (ó chmod u+s)

chmod 2510 (ó chmod g+s)

Bit “setuid”

Bit “setgid”

Page 26: SO II Tema 2. Procesos e hilos - mermaja.act.uji.esmermaja.act.uji.es/docencia/ii22/teoria/TraspasTema2.pdf · Tablas del sistema operativo Tabla de procesos - T abla de me ori -

Sistemas Operativos II (II-UJI) Procesos e hilos26

SS OOIIIIIIII

Tema 2. Procesos e hilos

Índice

n Concepto de proceso

n Información del proceso

n Estados del proceso

n Formación de un proceso

n Concepto de hilo de ejecución

n Procesos en Minix

n Procesos en Linux

n Procesos en Windows NT/2000

n Planificación de procesos e hilos

n Servicios POSIX para gestión de procesos e hilos

*

Page 27: SO II Tema 2. Procesos e hilos - mermaja.act.uji.esmermaja.act.uji.es/docencia/ii22/teoria/TraspasTema2.pdf · Tablas del sistema operativo Tabla de procesos - T abla de me ori -

Sistemas Operativos II (II-UJI) Procesos e hilos27

SS OOIIIIIIIIEstados de un proceso

n Cuando un proceso se ejecuta pasa por distintintos estados

n Diagrama de transición entre estados:

Ejecución

Listo BloqueadoFin E/S o llegada evento

ExitEspera por E/S o

eventoA C

PU

Expuls

ión C

PU

Page 28: SO II Tema 2. Procesos e hilos - mermaja.act.uji.esmermaja.act.uji.es/docencia/ii22/teoria/TraspasTema2.pdf · Tablas del sistema operativo Tabla de procesos - T abla de me ori -

Sistemas Operativos II (II-UJI) Procesos e hilos28

SS OOIIIIIIIIEstados de un proceso

n Estados suspendidos:

Ejecución

Listo ysuspendido

Listo

Bloqueado ysuspendido

Bloqueado

Planificado

Tiempo consu

mido

Fin E/S o llegada evento

Exit

Fin E/S

Exp

ulsa

doal

disc

o

Exp

ulsa

doal

disc

o

Rec

upe r

ado

deld

isco

Entra alsistema

Mem

oria

Procesos por lotesen espera

Espera por E/S

o evento

Zona

de

inte

rcam

bio

Page 29: SO II Tema 2. Procesos e hilos - mermaja.act.uji.esmermaja.act.uji.es/docencia/ii22/teoria/TraspasTema2.pdf · Tablas del sistema operativo Tabla de procesos - T abla de me ori -

Sistemas Operativos II (II-UJI) Procesos e hilos29

SS OOIIIIIIII

Tema 2. Procesos e hilos

Índice

n Concepto de proceso

n Información del proceso

n Estados del proceso

n Formación de un proceso

n Concepto de hilo de ejecución

n Procesos en Minix

n Procesos en Linux

n Procesos en Windows NT/2000

n Planificación de procesos e hilos

n Servicios POSIX para gestión de procesos e hilos

*

Page 30: SO II Tema 2. Procesos e hilos - mermaja.act.uji.esmermaja.act.uji.es/docencia/ii22/teoria/TraspasTema2.pdf · Tablas del sistema operativo Tabla de procesos - T abla de me ori -

Sistemas Operativos II (II-UJI) Procesos e hilos30

SS OOIIIIIIIIFormación de un proceso

Mapa dememoria

Imagendel proceso

Tabla de procesos

BCPC

arg

ad

or

Objetoejecutable

Bibliotecasistema

Page 31: SO II Tema 2. Procesos e hilos - mermaja.act.uji.esmermaja.act.uji.es/docencia/ii22/teoria/TraspasTema2.pdf · Tablas del sistema operativo Tabla de procesos - T abla de me ori -

Sistemas Operativos II (II-UJI) Procesos e hilos31

SS OOIIIIIIII

Tema 2. Procesos e hilos

Índice

n Concepto de proceso

n Información del proceso

n Estados del proceso

n Formación de un proceso

n Concepto de hilo de ejecución

n Procesos en Minix

n Procesos en Linux

n Procesos en Windows NT/2000

n Planificación de procesos e hilos

n Servicios POSIX para gestión de procesos e hilos

*

Page 32: SO II Tema 2. Procesos e hilos - mermaja.act.uji.esmermaja.act.uji.es/docencia/ii22/teoria/TraspasTema2.pdf · Tablas del sistema operativo Tabla de procesos - T abla de me ori -

Sistemas Operativos II (II-UJI) Procesos e hilos32

SS OOIIIIIIIIConcepto de hilo de ejecución

n Características básicas del modelo tradicional de proceso (pesado):

u Ejecución secuencial.u Ejecución independiente.

n Planteamiento:

u Varios procesos pueden cooperar para resolver una misma tarea del SO Õ Ejecución concurrente entre procesos Õ Comunicación entre procesos, por ejemplo, a través de memoria.

u Un programa podría incluir varias actividades concurrentes Õ Ejecución concurrente dentro de un proceso.

Page 33: SO II Tema 2. Procesos e hilos - mermaja.act.uji.esmermaja.act.uji.es/docencia/ii22/teoria/TraspasTema2.pdf · Tablas del sistema operativo Tabla de procesos - T abla de me ori -

Sistemas Operativos II (II-UJI) Procesos e hilos33

SS OOIIIIIIIIConcepto de hilo de ejecución

n ¿Qué es un hilo de ejecución?

u También llamado hebra, proceso ligero, flujo, subproceso o “thread”.u Programa en ejecución que comparte la imagen de memoria y otros

recursos del proceso con otros hilos.u Desde el punto de vista de programación: Función cuya ejecución se

puede lanzar en paralelo con otras.u Un proceso puede contener uno o más hilos.

Page 34: SO II Tema 2. Procesos e hilos - mermaja.act.uji.esmermaja.act.uji.es/docencia/ii22/teoria/TraspasTema2.pdf · Tablas del sistema operativo Tabla de procesos - T abla de me ori -

Sistemas Operativos II (II-UJI) Procesos e hilos34

SS OOIIIIIIIIConcepto de hilo de ejecución

n ¿Qué es un hilo de ejecución (cont.)?

Hilo: unidad de planificación Proceso: unidad de asignación de recursos

Proceso

Hilo 2

PC2PC1

Pila 1

Pila2

Datos

Código

Otros recursos:-Ficheros abierto-Dispositivos E/S, etc.

Hilo 1

Page 35: SO II Tema 2. Procesos e hilos - mermaja.act.uji.esmermaja.act.uji.es/docencia/ii22/teoria/TraspasTema2.pdf · Tablas del sistema operativo Tabla de procesos - T abla de me ori -

Sistemas Operativos II (II-UJI) Procesos e hilos35

SS OOIIIIIIIIConcepto de hilo de ejecución

n Descriptor de un proceso y de un hilo:

. . .

. . .

Hilo 1 (principal)

Hilos

Zonas de memoria

Gestión de E/S

Otros datos

Estado, tiempo de CPU, registros de CPU, pila, etc.

Espacio de direcciones

Ficheros abiertos, dispositivos abiertos, etc.

Hilo 2

Hilo j

. . .

Page 36: SO II Tema 2. Procesos e hilos - mermaja.act.uji.esmermaja.act.uji.es/docencia/ii22/teoria/TraspasTema2.pdf · Tablas del sistema operativo Tabla de procesos - T abla de me ori -

Sistemas Operativos II (II-UJI) Procesos e hilos36

SS OOIIIIIIIIConcepto de hilo de ejecución

n Descriptor de un proceso y de un hilo:

u Todos los hilos de un proceso comparten el mismo entorno de ejecución (variables globales, espacio de direcciones, ficheros abiertos, etc.).

u Cada hilo tiene su propio juego de registros de CPU, pila, variables locales, etc.

u No existe protección entre hilos: un error en un hilo puede estropear la pila de otro.

u Para ordenar la forma en la que los hilos acceden a datos comunes hay que emplear mecanismos de sincronización.

Page 37: SO II Tema 2. Procesos e hilos - mermaja.act.uji.esmermaja.act.uji.es/docencia/ii22/teoria/TraspasTema2.pdf · Tablas del sistema operativo Tabla de procesos - T abla de me ori -

Sistemas Operativos II (II-UJI) Procesos e hilos37

SS OOIIIIIIIIEstados de un hilo y de un proceso

n Estado de un proceso con hilos:

u Combinación de los estados de sus hilos:

l Si hay un hilo en ejecución Õ Proceso en ejecución

l Si no hay hilos en ejecución pero sí preparados Õ Proceso preparado

l Si todos sus hilos bloqueados Õ Proceso bloqueado

Proceso

Hilo

Activo

Bloqueado por acceso a discoBloqueado por comunicación

Page 38: SO II Tema 2. Procesos e hilos - mermaja.act.uji.esmermaja.act.uji.es/docencia/ii22/teoria/TraspasTema2.pdf · Tablas del sistema operativo Tabla de procesos - T abla de me ori -

Sistemas Operativos II (II-UJI) Procesos e hilos38

SS OOIIIIIIIIParalelización usando hilos

n Los hilos permiten paralelizar la ejecución de una aplicación

n Mientras un hilo está bloqueado, otro podría ejecutarse

u Uso de llamadas al sistema bloqueantes por hilo

Procedimiento 2

Procedimiento 1

Esperaen E/S

P F

Procedimiento 1

Ejecuciónparalela

Ejecuciónserie

Esperaen E/S

P F

Procedimiento 2

Esperaen E/S

P F

Esperaen E/S

P F Procesamiento

Page 39: SO II Tema 2. Procesos e hilos - mermaja.act.uji.esmermaja.act.uji.es/docencia/ii22/teoria/TraspasTema2.pdf · Tablas del sistema operativo Tabla de procesos - T abla de me ori -

Sistemas Operativos II (II-UJI) Procesos e hilos39

SS OOIIIIIIIIServidor con múltiples hilos

n Hilos trabajadores:

u Pueden crearse a medida que se necesitan y destruirse al finalizar la tarea encomendada

u Pueden existir siempre y quedar libres al finalizar la tarea encomendadal Más eficiente (evita el trabajo de crear y destruir hilos)

Hilo distribuidor

Hilo trabajador

Peticiones

Proceso

Page 40: SO II Tema 2. Procesos e hilos - mermaja.act.uji.esmermaja.act.uji.es/docencia/ii22/teoria/TraspasTema2.pdf · Tablas del sistema operativo Tabla de procesos - T abla de me ori -

Sistemas Operativos II (II-UJI) Procesos e hilos40

SS OOIIIIIIII

n Ejemplo: Servidor secuencial de ficheros

AlgoritmoMientras no haya que terminar {

Esperar a que llegue una peticiónComprobar que la petición es correctaSi (los datos no están en la caché) {

Realizar operación de E/S bloqueante sobre disco}Enviar resultado

}

l Sencillol Prestaciones pobres: permanece bloqueado

Servidor con múltiples hilos

Caché para bloques accedidos recientemente

Page 41: SO II Tema 2. Procesos e hilos - mermaja.act.uji.esmermaja.act.uji.es/docencia/ii22/teoria/TraspasTema2.pdf · Tablas del sistema operativo Tabla de procesos - T abla de me ori -

Sistemas Operativos II (II-UJI) Procesos e hilos41

SS OOIIIIIIIIServidor con múltiples hilos

n Ejemplo (cont.): Servidor de ficheros con múltiples hilos

l Mayor complejidadl Buenas prestaciones

Algoritmo 1Mientras no haya que terminar {

Esperar a que llegue una peticiónEsperar trabajador libre}Enviar resultado

}

Algoritmo 2Mientras no haya que terminar {

Esperar trabajoComprobar que la petición es correctaSi (los datos no están en la caché) {

Realizar operación de E/Sbloqueante sobre disco

}Enviar resultadoAvisar que está libre

}

Hilo distribuidor Hilo trabajador

Page 42: SO II Tema 2. Procesos e hilos - mermaja.act.uji.esmermaja.act.uji.es/docencia/ii22/teoria/TraspasTema2.pdf · Tablas del sistema operativo Tabla de procesos - T abla de me ori -

Sistemas Operativos II (II-UJI) Procesos e hilos42

SS OOIIIIIIIIConcepto de multihilo

n Capacidad de un SO para mantener varios hilos de ejecución dentro de un mismo proceso.

Múltiples procesosMúltiples hilos/proceso

Ej: Windows 2000, Solaris, OS/2

Técnica Técnica multihilomultihilo

Un procesoMúltiples hilos/proceso

Ej: Java

Un procesoUn hilo/proceso

Ej: MS-DOS

Múltiples procesosUn hilo/proceso

Ej: Algunos UNIX

MonoMonoProceProceSadoSadoresres

Técnica Técnica monohilomonohilo

Proceso

Hilo

MultiMultiProceProcesadosadoresres

Page 43: SO II Tema 2. Procesos e hilos - mermaja.act.uji.esmermaja.act.uji.es/docencia/ii22/teoria/TraspasTema2.pdf · Tablas del sistema operativo Tabla de procesos - T abla de me ori -

Sistemas Operativos II (II-UJI) Procesos e hilos43

SS OOIIIIIIIIImplementación de hilos

n Dos categorías:

u Hilos a nivel de usuario

u Hilos a nivel de núcleo

Page 44: SO II Tema 2. Procesos e hilos - mermaja.act.uji.esmermaja.act.uji.es/docencia/ii22/teoria/TraspasTema2.pdf · Tablas del sistema operativo Tabla de procesos - T abla de me ori -

Sistemas Operativos II (II-UJI) Procesos e hilos44

SS OOIIIIIIIIHilos a nivel de usuario

n Gestión de hilos realizada por la aplicación a nivel de usuario mediante una biblioteca de hilos.

n El núcleo no es consciente de la existencia de hilos.

n Es posible programar cualquier aplicación como multihilo.

Biblioteca de hilos

Modo supervisor

Modo usuario

P

Hilo a nivel de usuario

ProcesoP

Page 45: SO II Tema 2. Procesos e hilos - mermaja.act.uji.esmermaja.act.uji.es/docencia/ii22/teoria/TraspasTema2.pdf · Tablas del sistema operativo Tabla de procesos - T abla de me ori -

Sistemas Operativos II (II-UJI) Procesos e hilos45

SS OOIIIIIIIIHilos a nivel de usuario

n Ventajas frente a hilos a nivel de núcleo:

u No necesario acceder al núcleo para intercambio de hilos.u Algoritmos de planificación ad-hoc para cada aplicación.u Pueden ejecutarse en cualquier SO.

n Desventajas frente a hilos a nivel de núcleo:

u Una llamada al sistema realizada por un hilo bloquea a todos los hilos del proceso.

u Una aplicación multihilo no puede aprovechar las ventajas del multiprocesamiento.

n Ejemplo:

u Pthreads de POSIX.

Page 46: SO II Tema 2. Procesos e hilos - mermaja.act.uji.esmermaja.act.uji.es/docencia/ii22/teoria/TraspasTema2.pdf · Tablas del sistema operativo Tabla de procesos - T abla de me ori -

Sistemas Operativos II (II-UJI) Procesos e hilos46

SS OOIIIIIIIIHilos a nivel de núcleo

n Gestión de hilos realizada por el núcleo.

n Es posible programar cualquier aplicación como multihilo.

Modo supervisor

Modo usuario

Proceso

Hilo a nivel de usuario

P

Hilo a nivel de núcleo

P

Page 47: SO II Tema 2. Procesos e hilos - mermaja.act.uji.esmermaja.act.uji.es/docencia/ii22/teoria/TraspasTema2.pdf · Tablas del sistema operativo Tabla de procesos - T abla de me ori -

Sistemas Operativos II (II-UJI) Procesos e hilos47

SS OOIIIIIIIIHilos a nivel de núcleo

n Ventajas frente a hilos a nivel de usuario:

u El bloqueo de un hilo no supone (necesariamente) bloquear todo el proceso.

u Planificación de múltiples hilos de un proceso en múltiples procesadores.

u Las funciones del núcleo pueden ser multihilo.

n Desventajas frente a hilos a nivel de usuario:

u El intercambio de hilos se realiza accediendo al núcleo.

n Ejemplos:

u Linux, Windows 2000, OS/2.

Page 48: SO II Tema 2. Procesos e hilos - mermaja.act.uji.esmermaja.act.uji.es/docencia/ii22/teoria/TraspasTema2.pdf · Tablas del sistema operativo Tabla de procesos - T abla de me ori -

Sistemas Operativos II (II-UJI) Procesos e hilos48

SS OOIIIIIIIIAproximaciones combinadas

n Ejemplo: Solaris

u Creación, sincronización y planificación de hilos de una aplicación en modo usuario.

u Planificación de múltiples hilos de un proceso en múltiples procesadores.

u El bloqueo de un hilo no supone (necesariamente) bloquear todo el proceso.

Page 49: SO II Tema 2. Procesos e hilos - mermaja.act.uji.esmermaja.act.uji.es/docencia/ii22/teoria/TraspasTema2.pdf · Tablas del sistema operativo Tabla de procesos - T abla de me ori -

Sistemas Operativos II (II-UJI) Procesos e hilos49

SS OOIIIIIIIIAproximaciones combinadas

n Ejemplo: Solaris (cont.)

Modo usuarioBiblioteca de hilos

Modo supervisor Proceso

Hilo a nivel de usuario

P

Hilo a nivel de núcleo

P P

Page 50: SO II Tema 2. Procesos e hilos - mermaja.act.uji.esmermaja.act.uji.es/docencia/ii22/teoria/TraspasTema2.pdf · Tablas del sistema operativo Tabla de procesos - T abla de me ori -

Sistemas Operativos II (II-UJI) Procesos e hilos50

SS OOIIIIIIIIModelos multihilo

n Relación de:

u Muchos a uno.u Uno a uno.u Muchos a muchos.

DescripciónHNU:HNN Ejemplos

Pthreads POSIX

Windows 2000, OS/2

Solaris

M:1

1:1

M:NHilo a nivel de usuario (HNU)

Hilo a nivel de núcleo (HNN)

Page 51: SO II Tema 2. Procesos e hilos - mermaja.act.uji.esmermaja.act.uji.es/docencia/ii22/teoria/TraspasTema2.pdf · Tablas del sistema operativo Tabla de procesos - T abla de me ori -

Sistemas Operativos II (II-UJI) Procesos e hilos51

SS OOIIIIIIIIConcepto de hilo de ejecución

n Ventajas de utilizar múltiples hilos:

u La ejecución concurrente de hilos de un mismo proceso puede mejorar la eficiencia del sistema.

l Paralelismo dentro del proceso (en multiprocesadores).l Las operaciones bloqueantes no paralizan al proceso (completo).

u Mayor eficiencia que con múltiples procesos en:l Creación/eliminación de unidades de planificación.l Cambio de contexto.

u Una buena solución para sistemas cliente/servidor.

u Facilidad de implementación.

Page 52: SO II Tema 2. Procesos e hilos - mermaja.act.uji.esmermaja.act.uji.es/docencia/ii22/teoria/TraspasTema2.pdf · Tablas del sistema operativo Tabla de procesos - T abla de me ori -

Sistemas Operativos II (II-UJI) Procesos e hilos52

SS OOIIIIIIII

Tema 2. Procesos e hilos

Índice

n Concepto de proceso

n Información del proceso

n Estados del proceso

n Formación de un proceso

n Concepto de hilo de ejecución

n Procesos en Minix3 Estados de un proceso3 Implementación del descriptor de proceso

*

Page 53: SO II Tema 2. Procesos e hilos - mermaja.act.uji.esmermaja.act.uji.es/docencia/ii22/teoria/TraspasTema2.pdf · Tablas del sistema operativo Tabla de procesos - T abla de me ori -

Sistemas Operativos II (II-UJI) Procesos e hilos53

SS OOIIIIIIIIProcesos en Minix

n Diagrama de transición entre estados:

u ready: Pone el proceso en alguna de las colas de procesos listos del planificador → Activa el proceso

u unready: Elimina el proceso de las colas de procesos listos → Suspendeel proceso

u pick_proc: Selecciona el proceso listo a ser ejecutado por la CPU →Planificador

u sched: Pone al final de la cola el proceso de usuario en ejecución pueséste ha agotado su quantum de CPU

ready

sched

En ejecuciónunreadypick_proc

BloqueadoListo

Page 54: SO II Tema 2. Procesos e hilos - mermaja.act.uji.esmermaja.act.uji.es/docencia/ii22/teoria/TraspasTema2.pdf · Tablas del sistema operativo Tabla de procesos - T abla de me ori -

Sistemas Operativos II (II-UJI) Procesos e hilos54

SS OOIIIIIIIIProcesos en Minix

n Descriptor de un proceso:

EXTERN struct proc{

int p_reg[NR_REGS]; /* process’ registers */

int *p_sp; /* stack pointer */

struct pc_psw p_pcpsw; /* pc and psw as pushed by interrupt*/

struct mem_map p_map[NR_SEGS];/* memory map */

int *p_splimit; /* lowest legal stack value */

int p_pid; /* process id passed in from MM*/

int p_flags; /* P_SLOT_FREE, SENDING, RECEIVING, */

/* or 0 if the process is runnable */

real_time user_time; /* user time in ticks */

real_time sys_time; /* sys time in ticks */

real_time child_utime; /* cumulative user time of children */

real_time child_stime; /* cumulative sys time of children */

real_time p_alarm; /* time of next alarm in ticks, or 0 */

Page 55: SO II Tema 2. Procesos e hilos - mermaja.act.uji.esmermaja.act.uji.es/docencia/ii22/teoria/TraspasTema2.pdf · Tablas del sistema operativo Tabla de procesos - T abla de me ori -

Sistemas Operativos II (II-UJI) Procesos e hilos55

SS OOIIIIIIIIProcesos en Minix

n Descriptor de un proceso (cont.):

struct proc *p_callerq; /* head of list of procs wishing to send */

struct proc *p_sendlink; /* link to next proc wishing to send */

message *p_messbuf; /* pointer to message buffer */

int p_getfrom; /* from whom does process want to receive? */

stuct proc *p_nextready; /* pointer to next ready process */

int p_pending; /* bit map for pending signals */

} proc[NR_TASKS+NR_PROCS];

Page 56: SO II Tema 2. Procesos e hilos - mermaja.act.uji.esmermaja.act.uji.es/docencia/ii22/teoria/TraspasTema2.pdf · Tablas del sistema operativo Tabla de procesos - T abla de me ori -

Sistemas Operativos II (II-UJI) Procesos e hilos56

SS OOIIIIIIII

Tema 2. Procesos e hilos

Índice

n Concepto de proceso

n Información del proceso

n Estados del proceso

n Formación de un proceso

n Concepto de hilo de ejecución

n Procesos en Minix

n Procesos en Linux3 Estados de un proceso3 Implementación del descriptor de proceso3 Implementación de la tabla de procesos3 Implementación de la lista de procesos preparados

*

Page 57: SO II Tema 2. Procesos e hilos - mermaja.act.uji.esmermaja.act.uji.es/docencia/ii22/teoria/TraspasTema2.pdf · Tablas del sistema operativo Tabla de procesos - T abla de me ori -

Sistemas Operativos II (II-UJI) Procesos e hilos57

SS OOIIIIIIIIProcesos en Linux

n Diagrama de transición entre estado típico.

n Bloqueo de un proceso:u Espera a que ocurra un cierto evento

u Proceso bloqueado e interrumplible:l Puede ser interrumpido por señalesl Puede desbloquearle:

Una interrupción HW Liberación de un recurso por el que esperaba Una señal

u Proceso bloqueado e ininterrumplible:l No acepta señalesl Puede desbloquearle:

Una interrupción HW Liberación de un recurso por el que esperaba

Page 58: SO II Tema 2. Procesos e hilos - mermaja.act.uji.esmermaja.act.uji.es/docencia/ii22/teoria/TraspasTema2.pdf · Tablas del sistema operativo Tabla de procesos - T abla de me ori -

Sistemas Operativos II (II-UJI) Procesos e hilos58

SS OOIIIIIIIIProcesos en Linux

n Descriptor de un proceso:

u Estructura task_struct del fichero include/linux/sched.h

n Estado del proceso:

volatile long state;

#define TASK_RUNNING 0 /* Proceso listo o en ejecución */

#define TASK_INTERRUPTIBLE 1 /* Proceso bloqueado interrumpible */

#define TASK_UNINTERRUPTIBLE 2 /* Proceso bloquea ininterrumpible */

#define TASK_ZOMBIE 3 /* Proceso finalizado */

#define TASK_STOPPED 4 /* Proceso parado tras llegar unaseñal SIGSTOP*/

unsigned long flags; /* Combinación de las banderas de estado */

#define PF_STARTING 0x00000002 /* Recién creado */

#define PF_EXITING 0x00000004 /* Finalizando */

Variable current: Puntero a la estructura task_struct del proceso en ejecución

Page 59: SO II Tema 2. Procesos e hilos - mermaja.act.uji.esmermaja.act.uji.es/docencia/ii22/teoria/TraspasTema2.pdf · Tablas del sistema operativo Tabla de procesos - T abla de me ori -

Sistemas Operativos II (II-UJI) Procesos e hilos59

SS OOIIIIIIIIProcesos en Linux

n Identificativos del proceso:

pid_t pid; /* Identificativo del proceso */

pid_t pgrp; /* Identificativo del grupo del proceso*/

pid_t session; /* Número de sesión del proceso */

uid_t uid,euid; /* Identificativo real y efectivo del usuario */

gid_t gid,egid; /* Identificativo real y efectivo del grupo */

gid_t groups[NGROUPS]; /* Lista grupos a los que pertenece el proceso */

Page 60: SO II Tema 2. Procesos e hilos - mermaja.act.uji.esmermaja.act.uji.es/docencia/ii22/teoria/TraspasTema2.pdf · Tablas del sistema operativo Tabla de procesos - T abla de me ori -

Sistemas Operativos II (II-UJI) Procesos e hilos60

SS OOIIIIIIIIProcesos en Linux

n Planificación del proceso:

unsigned long policy; /* Tres posibles políticas de planificación */

#define SCHED_FIFO 1

#define SCHED_RR 2

#define SCHED_OTHER 0

long counter; /* Procesos SCHED_OTHER: Tiempo de CPU porconsumir */

/* Procesos RR: Valor actual del quantum de CPU(prioridad dinámica) */

long priority; /* Procesos RR: Valor inicial del quantum de CPU

(prioridad estática) */

Los tiempos de CPU se miden en tics de reloj

Page 61: SO II Tema 2. Procesos e hilos - mermaja.act.uji.esmermaja.act.uji.es/docencia/ii22/teoria/TraspasTema2.pdf · Tablas del sistema operativo Tabla de procesos - T abla de me ori -

Sistemas Operativos II (II-UJI) Procesos e hilos61

SS OOIIIIIIIIProcesos en Linux

n Jerarquía del proceso:

struct task_struct *p_opptr; /* Original parent */

struct task_struct *p_pptr; /* Parent */

struct task_struct *p_cptr; /* Youngest child */

struct task_struct *p_ysptr; /* Younger sibling */

struct task_struct *p_osptr; /* Older sibling */

hijo másjoven hijo hijo más

viejo

padre

p_pptr

p_osptr

p_ysptr

p_osptr

p_ysptr

p_pptr

p_pptrp_cptr

Page 62: SO II Tema 2. Procesos e hilos - mermaja.act.uji.esmermaja.act.uji.es/docencia/ii22/teoria/TraspasTema2.pdf · Tablas del sistema operativo Tabla de procesos - T abla de me ori -

Sistemas Operativos II (II-UJI) Procesos e hilos62

SS OOIIIIIIIIProcesos en Linux

n Señales del proceso:

struct sigset_t signal; /* Mapa de bits de señales recibidas */

struct sigset_t blocked; /* Mapa de bits de señales bloqueadas */

struct sigset_t sigpending; /* Mapa de bits de señales no bloqueadas y pendientes */

struct signal_struct *sig; /* Manejadores de señales */

struct signal_struct {

atomic_t count;

struct sigaction action[NSIG];/* Función que modifica el tratamiento por defecto de la señal */

};

int exit_signal; /* Número de señal que mató al proceso */

struct wait_queue *wait_chldexit; /* Lista de espera de finalización de

hijos */

Page 63: SO II Tema 2. Procesos e hilos - mermaja.act.uji.esmermaja.act.uji.es/docencia/ii22/teoria/TraspasTema2.pdf · Tablas del sistema operativo Tabla de procesos - T abla de me ori -

Sistemas Operativos II (II-UJI) Procesos e hilos63

SS OOIIIIIIIIProcesos en Linux

n Monitorización del proceso:

long per_cpu_utime[NR_CPU]; /* Tiempo del proceso en modo usuario */

long per_cpu_stime [NR_CPU]; /* Tiempo del proceso en modo supervisor */

long start_time; /* Tiempo de creación del proceso */

/* Tiempos sobre temporizadores y alarmas */

unsigned long it_real_value; /* Tiempo real */

unsigned long it_prof_value, /* Tiempo en ejecución o estado listo */

unsigned long it_virt_value; /* Tiempo en ejecución sin contar la ejecución de llamadas al sistema */

struct timer_list real_timer; /* Lista de alarmas */

¿Temporizador vs. Alarma?

Page 64: SO II Tema 2. Procesos e hilos - mermaja.act.uji.esmermaja.act.uji.es/docencia/ii22/teoria/TraspasTema2.pdf · Tablas del sistema operativo Tabla de procesos - T abla de me ori -

Sistemas Operativos II (II-UJI) Procesos e hilos64

SS OOIIIIIIIIProcesos en Linux

n Segmentos de memoria del proceso:

struct mm_struct *mm;

struct mm_struct {

...

struct vm_area_struct *mmap;

struct vm_area_struct *mmap_avl;

struct vm_area_struct *mmap_cache;

unsigned long start_code, end_code; /* Dirección de inicio y fin del segmento de código */

unsigned long start_data, end_data; /* Dirección de inicio y fin delsegmento de datos */

unsigned long start_stack; /* Dirección del tope del segmentode pila de usuario */

...};

Page 65: SO II Tema 2. Procesos e hilos - mermaja.act.uji.esmermaja.act.uji.es/docencia/ii22/teoria/TraspasTema2.pdf · Tablas del sistema operativo Tabla de procesos - T abla de me ori -

Sistemas Operativos II (II-UJI) Procesos e hilos65

SS OOIIIIIIIIProcesos en Linux

n Sistema de ficheros del proceso:

struct fs_struct *fs; /* Información del sistema de ficheros */

struct files_struct *files; /* Información de ficheros abiertos por el proceso */

struct fs_struct {

atomic_t count; /* Número de procesos que comparten esta estructura */

int umask; /* Máscara de creación de ficheros */

struct dentry * root; /* Directorio raíz del proceso */

struct dentry * pwd; /* Directorio de trabajo */

};

struct files_struct {

tomic_t count; /* Num. procs que comparten estos ficheros abiertos */

fd_set * close_on_exec;/* Ficheros a cerrar ante una llamada exec */

fd_set * open_fds; /* Máscara bits de los descriptores de fichs usados */

struct file * fd_array[NR_OPEN_DEFAULT];

/* Tabla de ficheros abiertos por el proceso*/

};

Page 66: SO II Tema 2. Procesos e hilos - mermaja.act.uji.esmermaja.act.uji.es/docencia/ii22/teoria/TraspasTema2.pdf · Tablas del sistema operativo Tabla de procesos - T abla de me ori -

Sistemas Operativos II (II-UJI) Procesos e hilos66

SS OOIIIIIIIIProcesos en Linux

n Sistema de ficheros del proceso (cont.):

Tabla de inodosTabla de ficheros del sistema

Tabla de ficheros del proceso

0

1

2

3

4

5

6

1 READ. . .

1 WRITE

1 READ. . .

. . .

1 /etc/passwd

2 /usr/castano

. . .

Page 67: SO II Tema 2. Procesos e hilos - mermaja.act.uji.esmermaja.act.uji.es/docencia/ii22/teoria/TraspasTema2.pdf · Tablas del sistema operativo Tabla de procesos - T abla de me ori -

Sistemas Operativos II (II-UJI) Procesos e hilos67

SS OOIIIIIIIIProcesos en Linux

n Lista de procesos preparados:u Lista circular doblemente enlazada que comienza y finaliza con el proceso

init_task (PID=0)

struct task_struct *next_run; /* Siguiente proceso de esta lista */

struct task_struct *prev_run; /* Anterior proceso de esta lista */

extern struct task_struct init_task; /* Cabeza y cola de la lista */

int nr_running; /* Num. total de procesos listos */

struct task_struct *current; /* Proceso en ejecución */

procesoinit_task proceso A proceso B

next_run

prev_run

Incluye el proceso en ejecución

Page 68: SO II Tema 2. Procesos e hilos - mermaja.act.uji.esmermaja.act.uji.es/docencia/ii22/teoria/TraspasTema2.pdf · Tablas del sistema operativo Tabla de procesos - T abla de me ori -

Sistemas Operativos II (II-UJI) Procesos e hilos68

SS OOIIIIIIIIProcesos en Linux

n Lista de procesos del sistema:

u Lista circular doblemente enlazada que comienza y finaliza con el proceso init_task

struct task_struct *next_task; /* Siguiente proceso de esta lista */

struct task_struct *prev_task; /* Anterior proceso de esta lista */

extern struct task_struct init_task; /* Cabeza y cola de la lista */

procesoinit_task proceso A proceso B

next_task

prev_task

Page 69: SO II Tema 2. Procesos e hilos - mermaja.act.uji.esmermaja.act.uji.es/docencia/ii22/teoria/TraspasTema2.pdf · Tablas del sistema operativo Tabla de procesos - T abla de me ori -

Sistemas Operativos II (II-UJI) Procesos e hilos69

SS OOIIIIIIIIProcesos en Linux

n Tabla de procesos:

u Vector task del fichero kernel/sched.c

struct task_struct * task[NR_TASKS] = {&init_task, };

struct task_struct init_task;

n Operaciones habituales sobre (todos los procesos de) la lista de procesos del sistema:

u Vector task del fichero kernel/sched.c

#define for_each_task(p) \

for (p = &init_task ; (p = p->next_task) != &init_task ; )

Page 70: SO II Tema 2. Procesos e hilos - mermaja.act.uji.esmermaja.act.uji.es/docencia/ii22/teoria/TraspasTema2.pdf · Tablas del sistema operativo Tabla de procesos - T abla de me ori -

Sistemas Operativos II (II-UJI) Procesos e hilos70

SS OOIIIIIIII

Tema 2. Procesos e hilos

Índice

n Concepto de proceso

n Información del proceso

n Estados del proceso

n Formación de un proceso

n Concepto de hilo de ejecución

n Procesos en Minix

n Procesos en Linux

n Procesos en Windows NT/20003 Objetos tipo proceso e hilo3 Estados de un hilo3 Implementación del procesos e hilos

*

Page 71: SO II Tema 2. Procesos e hilos - mermaja.act.uji.esmermaja.act.uji.es/docencia/ii22/teoria/TraspasTema2.pdf · Tablas del sistema operativo Tabla de procesos - T abla de me ori -

Sistemas Operativos II (II-UJI) Procesos e hilos71

SS OOIIIIIIIIProcesos en Windows NT/2000

n Características de un proceso de Windows NT/2000:

u Los procesos NT se implementan como objetos y son accedidos mediante servicios de objetos

u Un proceso NT tiene asociados varios hilos que se ejecutan en su espacio de direccionamiento

u El gestor de procesos NT no mantiene ninguna relación entre los procesos que crea

Page 72: SO II Tema 2. Procesos e hilos - mermaja.act.uji.esmermaja.act.uji.es/docencia/ii22/teoria/TraspasTema2.pdf · Tablas del sistema operativo Tabla de procesos - T abla de me ori -

Sistemas Operativos II (II-UJI) Procesos e hilos72

SS OOIIIIIIIIProcesos en Windows NT/2000

n Objeto tipo proceso:

Identificativo de procesoObjeto de accesoPrioridad baseAfinidad del procesadorTiempo de ejecuciónPuertos de comunicaciónEstado de finalizaciónetc.

PROCESO

Tipo

del

ob

jeto

Atr

ibut

os

del o

bjet

oS

ervi

cios

de

l obj

eto

Crear procesoAbrir procesoPedir información del procesoAñadir información del procesoFinalizar procesoAsignar/liberar memoria virtualLeer/escribir memoria virtualetc.

Page 73: SO II Tema 2. Procesos e hilos - mermaja.act.uji.esmermaja.act.uji.es/docencia/ii22/teoria/TraspasTema2.pdf · Tablas del sistema operativo Tabla de procesos - T abla de me ori -

Sistemas Operativos II (II-UJI) Procesos e hilos73

SS OOIIIIIIIIProcesos en Windows NT/2000

n Objeto tipo proceso (cont.):Atributo DescripciónID proceso Valor único que identifica al proceso

Acceso Objeto con información de seguridad sobre el usuario que generó el objeto

Prioridad base Prioridad base de sus hilos

Afinidad del procesador Procesadores en los que se pueden ejecutar sus hilos

Límites de cuotas Cantidad máxima de memoria paginada y no paginada, de tiempo de ejecución, etc.

Tiempo de ejecución Tiempo total de ejecución de todos sus hilos

Puertos comunicación Canal de comunicación al que enviar un mensaje si un hilo genera una excepción

Estado de finalización Motivo de la finalización del proceso

Page 74: SO II Tema 2. Procesos e hilos - mermaja.act.uji.esmermaja.act.uji.es/docencia/ii22/teoria/TraspasTema2.pdf · Tablas del sistema operativo Tabla de procesos - T abla de me ori -

Sistemas Operativos II (II-UJI) Procesos e hilos74

SS OOIIIIIIIIProcesos en Windows NT/2000

n Objeto tipo hilo:

Identificativo de hiloContextoPrioridad basePrioridad dinámicaAfinidad del procesadorTiempo de ejecuciónPuerto de terminaciónEstado de finalizaciónetc.

HILO

Tipo

del

ob

jeto

Atr

ibut

os

del o

bjet

oS

ervi

cios

de

l obj

eto

Crear hiloAbrir hiloPedir información del hiloAñadir información del hiloFinalizar hiloSuspender/continuar hiloGuardar/cargar contextoetc.

Page 75: SO II Tema 2. Procesos e hilos - mermaja.act.uji.esmermaja.act.uji.es/docencia/ii22/teoria/TraspasTema2.pdf · Tablas del sistema operativo Tabla de procesos - T abla de me ori -

Sistemas Operativos II (II-UJI) Procesos e hilos75

SS OOIIIIIIIIProcesos en Windows NT/2000

n Objeto tipo hilo (cont.):

Atributo Descripción

ID hilo Valor único que identifica al hilo

Contexto Valores de los registros y de otros datos que definen su estado de ejecución

Prioridad dinámica Prioridad de ejecución en ese instante

Prioridad base Límite inferior de la prioridad dinámica

Afinidad del procesador Procesadores en los que se puede ejecutar

Tiempo de ejecución Tiempo de ejecución transcurrido en modo usuario y en modo supervisor

Puerto de terminación Canal de comunicación al que enviar un mensaje cuando finaliza

Estado de finalización Motivo de la finalización del subproceso

Page 76: SO II Tema 2. Procesos e hilos - mermaja.act.uji.esmermaja.act.uji.es/docencia/ii22/teoria/TraspasTema2.pdf · Tablas del sistema operativo Tabla de procesos - T abla de me ori -

Sistemas Operativos II (II-UJI) Procesos e hilos76

SS OOIIIIIIIIProcesos en Windows NT/2000

n Diagrama de transición entre estados (de un hilo):

Inicializado

Finalizado

Ejecución

Bloqueado

Alerta

ListoEvento

Expulsar

Reinicializar

Finalización

A CPU

Esperar evento

Exp

ulsa

r

Pla

nific

ador

Page 77: SO II Tema 2. Procesos e hilos - mermaja.act.uji.esmermaja.act.uji.es/docencia/ii22/teoria/TraspasTema2.pdf · Tablas del sistema operativo Tabla de procesos - T abla de me ori -

Sistemas Operativos II (II-UJI) Procesos e hilos77

SS OOIIIIIIIIProcesos en Windows NT/2000

n Algunos estados de un hilo:

u Alerta: Seleccionado como el siguiente hilo a ser ejecutado en un procesador dadoOperación (planificación) previa a la invocación de un cambio de contexto

u Bloqueado: Espera a que un objeto de sincronización pase a una situación de marcado ("signaled") que indique la llegada del evento de espera

Page 78: SO II Tema 2. Procesos e hilos - mermaja.act.uji.esmermaja.act.uji.es/docencia/ii22/teoria/TraspasTema2.pdf · Tablas del sistema operativo Tabla de procesos - T abla de me ori -

Sistemas Operativos II (II-UJI) Procesos e hilos78

SS OOIIIIIIIIProcesos en Windows NT/2000

n Implementación de procesos e hilos en Windows NT/2000:

Objetoproceso

Objetode aceeso

Descripción del espacio virtual de direccionamiento

Subproceso x

Fichero y

Sección z

Tabla de objetos

. . .

.

..

Page 79: SO II Tema 2. Procesos e hilos - mermaja.act.uji.esmermaja.act.uji.es/docencia/ii22/teoria/TraspasTema2.pdf · Tablas del sistema operativo Tabla de procesos - T abla de me ori -

Sistemas Operativos II (II-UJI) Procesos e hilos79

SS OOIIIIIIII

Tema 2. Procesos e hilos

Índice

n Concepto de proceso

n Información del proceso

n Estados del proceso

n Formación de un proceso

n Concepto de hilo de ejecución

n Procesos en Minix

n Procesos en Linux

n Procesos en Windows NT/2000

n Planificación de procesos e hilos*

3 Planificación en Minix

3 Planificación en Linux

3 Planificación en Windows NT/2000

Page 80: SO II Tema 2. Procesos e hilos - mermaja.act.uji.esmermaja.act.uji.es/docencia/ii22/teoria/TraspasTema2.pdf · Tablas del sistema operativo Tabla de procesos - T abla de me ori -

Sistemas Operativos II (II-UJI) Procesos e hilos80

SS OOIIIIIIIIEl planificador de Minix

n Sistema de colas multinivel (sin realimentación) con prioridades expulsivas

n Se invoca al planificador (rutina pick_proc) cuando:

u Se bloquea un proceso (en ejecución) con SEND o RECEIVE

u Tras cada interrupción

u Tras la finalización del cuantum de CPU de un proceso de usuario

u Al finalizar un proceso

FCFSTAREAS

FCFSPROCESOS SERVIDOR

RRPROCESOS USUARIO-

+

PRIORIDAD

Page 81: SO II Tema 2. Procesos e hilos - mermaja.act.uji.esmermaja.act.uji.es/docencia/ii22/teoria/TraspasTema2.pdf · Tablas del sistema operativo Tabla de procesos - T abla de me ori -

Sistemas Operativos II (II-UJI) Procesos e hilos81

SS OOIIIIIIIIEl planificador de Minix

FCFSTAREAS

FCFSPROCESOS SERVIDOR

RRPROCESOS USUARIO-

+

PRIORIDAD

rdy_head[TASK_Q]

rdy_head[SERVER_Q]

rdy_head[USER_Q]

n Implementación del planificador:

Page 82: SO II Tema 2. Procesos e hilos - mermaja.act.uji.esmermaja.act.uji.es/docencia/ii22/teoria/TraspasTema2.pdf · Tablas del sistema operativo Tabla de procesos - T abla de me ori -

Sistemas Operativos II (II-UJI) Procesos e hilos82

SS OOIIIIIIIIEl planificador de Minix

n Implementación del planificador (cont.):

PUBLIC pick_proc ()

{ register int q;/* Cola a usar: */

/* - Cola de tareas: TASK_Q */

/* - Cola de procesos servidor: SERVER_Q */

/* - Cola de procesos de usuario: USER_Q */

if (rdy_head [TASK_Q] != NIL_PROC) q = TASK_Q;

else if (rdy_head [SERVER_Q] != NIL_PROC) q = SERVER_Q;else q = USER_Q;

prev_proc = cur_proc;

if (rdy_head [q] != NIL_PROC)

{ cur_proc = rdy_head [q]; /* Someone is runable */

} else{

cur_proc = IDLE; /* No one id runable */}

}

Page 83: SO II Tema 2. Procesos e hilos - mermaja.act.uji.esmermaja.act.uji.es/docencia/ii22/teoria/TraspasTema2.pdf · Tablas del sistema operativo Tabla de procesos - T abla de me ori -

Sistemas Operativos II (II-UJI) Procesos e hilos83

SS OOIIIIIIIIPlanificación en POSIX

n Cada política de planificación lleva asociado un rango con al menos 32 niveles de prioridad

n El planificador elegirá el proceso o hilo con la prioridad más alta

n Políticas de planificación:

u FIFO (FCFS)u Round Robin (RR)u Otra

Page 84: SO II Tema 2. Procesos e hilos - mermaja.act.uji.esmermaja.act.uji.es/docencia/ii22/teoria/TraspasTema2.pdf · Tablas del sistema operativo Tabla de procesos - T abla de me ori -

Sistemas Operativos II (II-UJI) Procesos e hilos84

SS OOIIIIIIIIEl planificador de Linux

n Prioridad y algoritmo de planificación de un proceso de Linux:

u Todo proceso del sistema tiene asociadasl una prioridadl una política de planificación, que puede ser:

FIFO (SCHED_FIFO) RR (SCHED_RR) Otra (SCHED_OTHER)

u Se asigna política de planificación FIFO y RR a los procesos en tiempo real (procesos que tienen que reaccionar muy rápidamente a sucesos externos)

Page 85: SO II Tema 2. Procesos e hilos - mermaja.act.uji.esmermaja.act.uji.es/docencia/ii22/teoria/TraspasTema2.pdf · Tablas del sistema operativo Tabla de procesos - T abla de me ori -

Sistemas Operativos II (II-UJI) Procesos e hilos85

SS OOIIIIIIIIEl planificador de Linux

n Prioridad y algoritmo de planificación de un proceso de Linux (cont.):

u Política SCHED_OTHER:l Favorece procesos interactivosl Prioridad dinámica = Prioridad_base + (Estimación_CPU_restante / 2)l Objetivo prioridad base: Dividir los procesos en bandas fijas de

prioridad

Page 86: SO II Tema 2. Procesos e hilos - mermaja.act.uji.esmermaja.act.uji.es/docencia/ii22/teoria/TraspasTema2.pdf · Tablas del sistema operativo Tabla de procesos - T abla de me ori -

Sistemas Operativos II (II-UJI) Procesos e hilos86

SS OOIIIIIIIIEl planificador de Linux

n Algoritmo de planificación:

u Algoritmo expulsivo con prioridades (selecciona el proceso con máxima prioridad)

u Los procesos con planificación FIFO y RR tienen mayor prioridad

u Un proceso FIFO abandona la CPU cuando:l Aparece otro proceso listo con mayor prioridadl El proceso finaliza

u Un proceso RR abandona la CPU cuando:l Aparece otro proceso listo con mayor prioridadl El proceso finalizal Acaba su quantum de CPU y otro proceso tiene igual prioridad (y es

la máxima)

Page 87: SO II Tema 2. Procesos e hilos - mermaja.act.uji.esmermaja.act.uji.es/docencia/ii22/teoria/TraspasTema2.pdf · Tablas del sistema operativo Tabla de procesos - T abla de me ori -

Sistemas Operativos II (II-UJI) Procesos e hilos87

SS OOIIIIIIIIEl planificador de Linux

n Función de planificación:

void schedule(void){

int c;struct task_struct * p, * prev, * next;

prev = current;

cli();/* move an exhausted RR process to be last */if (!prev->counter && prev->policy == SCHED_RR) {

prev->counter = prev->priority;move_last_runqueue(prev);

}

p = init_task.next_run;sti();

Deshabilitar interrupciones

Habilitar interrupciones

Page 88: SO II Tema 2. Procesos e hilos - mermaja.act.uji.esmermaja.act.uji.es/docencia/ii22/teoria/TraspasTema2.pdf · Tablas del sistema operativo Tabla de procesos - T abla de me ori -

Sistemas Operativos II (II-UJI) Procesos e hilos88

SS OOIIIIIIIIEl planificador de Linux

n Función de planificación (cont.):

/* this is the scheduler proper: */c = -1000;next = idle_task;while (p != &init_task) {

int weight = goodness(p, prev, this_cpu);if (weight > c)

c = weight, next = p;p = p->next_run;

}/* if all runnable processes have "counter == 0",

re-calculate counters */if (!c) { for_each_task(p)

p->counter = (p->counter >> 1) + p->priority;}if (prev != next) { switch_to(prev,next); }return;

} Cambio de proceso

Page 89: SO II Tema 2. Procesos e hilos - mermaja.act.uji.esmermaja.act.uji.es/docencia/ii22/teoria/TraspasTema2.pdf · Tablas del sistema operativo Tabla de procesos - T abla de me ori -

Sistemas Operativos II (II-UJI) Procesos e hilos89

SS OOIIIIIIIIEl planificador de Linux

n Función de planificación (cont.):

/* This is the function that decides how desirable a process is* Return values:* -1000: never select this* 0: out of time, recalculate counters* +ve: "goodness" value (the larger, the better)* +1000: realtime process, select this.*/

int goodness(struct task_struct * p,struct task_struct * prev)

{ int weight;...if (p->policy != SCHED_OTHER)

return 1000 + p->rt_priority;

Page 90: SO II Tema 2. Procesos e hilos - mermaja.act.uji.esmermaja.act.uji.es/docencia/ii22/teoria/TraspasTema2.pdf · Tablas del sistema operativo Tabla de procesos - T abla de me ori -

Sistemas Operativos II (II-UJI) Procesos e hilos90

SS OOIIIIIIIIEl planificador de Linux

n Función de planificación (cont.):

/* Give the process a first-approximation goodness value* according to the number of clock-ticks it has left.* Don't do any other calculations if the time slice is over */

weight = p->counter;if (weight) {

/* Give a slight advantage to the current process */if (p == prev)

weight += 1;} return weight;

}

Page 91: SO II Tema 2. Procesos e hilos - mermaja.act.uji.esmermaja.act.uji.es/docencia/ii22/teoria/TraspasTema2.pdf · Tablas del sistema operativo Tabla de procesos - T abla de me ori -

Sistemas Operativos II (II-UJI) Procesos e hilos91

SS OOIIIIIIIIEl planificador de Windows NT/2000

n Prioridad de un hilo:

u Dentro del rango 0..31u Depende del tipo de trabajo que esté haciendou Una cola de hilos listos por cada posible nivel de prioridad

n Tipos de prioridad:

u Prioridades en tiempo realu Prioridades variables

Page 92: SO II Tema 2. Procesos e hilos - mermaja.act.uji.esmermaja.act.uji.es/docencia/ii22/teoria/TraspasTema2.pdf · Tablas del sistema operativo Tabla de procesos - T abla de me ori -

Sistemas Operativos II (II-UJI) Procesos e hilos92

SS OOIIIIIIIIEl planificador de Windows NT/2000

n Prioridades en tiempo real:

u Prioridades más altas (rango 31..16)u Asignadas cuando el tiempo de respuesta del subproceso es crítico

(operaciones de comunicaciones, tareas de tiempo real, etc.)u La prioridad del hilo no cambia nuncau Política RR para los hilos de un nivel de prioridad dado

Page 93: SO II Tema 2. Procesos e hilos - mermaja.act.uji.esmermaja.act.uji.es/docencia/ii22/teoria/TraspasTema2.pdf · Tablas del sistema operativo Tabla de procesos - T abla de me ori -

Sistemas Operativos II (II-UJI) Procesos e hilos93

SS OOIIIIIIIIEl planificador de Windows NT/2000

n Prioridades variables:

u Prioridades más bajas (rango 15..0)u Cola RR en cada nivel de prioridad

u Prioridad inicial del hilo:l Prioridad del proceso + Prioridad base del hilo (-2..+2)

u La prioridad del hilo puede variar durante su vidal No puede ser superior a 15 l No puede ser inferior a la prioridad iniciall El núcleo baja la prioridad (dinámica) de un hilo cada vez que finaliza

su quantum de CPU asignadol La prioridad (dinámica) de un hilo aumenta tras una operación de E/S

Los hilos interactivos tienden a prioridades más altas dentro de la clase de prioridad variable

Page 94: SO II Tema 2. Procesos e hilos - mermaja.act.uji.esmermaja.act.uji.es/docencia/ii22/teoria/TraspasTema2.pdf · Tablas del sistema operativo Tabla de procesos - T abla de me ori -

Sistemas Operativos II (II-UJI) Procesos e hilos94

SS OOIIIIIIIIEl planificador de Windows NT/2000

n Prioridades variables:

u Ejemplo de relación entre prioridades

menordebajo normal

normalencima normal

mayor

0123456789

101112131415

Prioridad base del proceso

Prioridad inicial del

hilo

Prioridad dinámica del hilo

+2+1

-1-2

0

Page 95: SO II Tema 2. Procesos e hilos - mermaja.act.uji.esmermaja.act.uji.es/docencia/ii22/teoria/TraspasTema2.pdf · Tablas del sistema operativo Tabla de procesos - T abla de me ori -

Sistemas Operativos II (II-UJI) Procesos e hilos95

SS OOIIIIIIIIEl planificador de Windows NT/2000

n Algoritmo de planificación de hilos:

u Esquema expulsivo con prioridades y colas multinivel realimentadas (selecciona el hilo con máxima prioridad de todas las colas)

NIVEL DE PRIORIDAD

31

.

.

.

.

.

.

.

.

.

16

15

14

0

.

.

.

.

.

.

Prio

ridad

es e

n tie

mpo

real

Prio

ridad

es

varia

bles

Page 96: SO II Tema 2. Procesos e hilos - mermaja.act.uji.esmermaja.act.uji.es/docencia/ii22/teoria/TraspasTema2.pdf · Tablas del sistema operativo Tabla de procesos - T abla de me ori -

Sistemas Operativos II (II-UJI) Procesos e hilos96

SS OOIIIIIIII

Tema 2. Procesos e hilos

Índice

n Concepto de proceso

n Información del proceso

n Estados del proceso

n Formación de un proceso

n Concepto de hilo de ejecución

n Procesos en Minix

n Procesos en Linux

n Procesos en Windows NT/2000

n Planificación de procesos e hilos

n Servicios POSIX para gestión de procesos e hilos*

Page 97: SO II Tema 2. Procesos e hilos - mermaja.act.uji.esmermaja.act.uji.es/docencia/ii22/teoria/TraspasTema2.pdf · Tablas del sistema operativo Tabla de procesos - T abla de me ori -

Sistemas Operativos II (II-UJI) Procesos e hilos97

SS OOIIIIIIIIServicios POSIX para gestión de hilos

int pthread_attr_init(pthread_attr_t *attr);

int pthread_attr_destroy (pthread_attr_t *attr);

int pthread_create (pthread_t *thread, const pthread_attr_t *attr, void *(*func)(void *), void *arg);

int pthread_exit(void *value);

int pthread_join(pthread_t thid, void **value);

pthread_t pthread_self(void);

int pthread_attr_setdetachstate(pthread_attr_t *attr, int detachstate);

Pthreads

Page 98: SO II Tema 2. Procesos e hilos - mermaja.act.uji.esmermaja.act.uji.es/docencia/ii22/teoria/TraspasTema2.pdf · Tablas del sistema operativo Tabla de procesos - T abla de me ori -

Sistemas Operativos II (II-UJI) Procesos e hilos98

SS OOIIIIIIIIServicios POSIX sobre atributos de hilos

n Creación de atributos:u Sintaxis:

int pthread_attr_init(pthread_attr_t *attr);

u Descripción:l Inicia un objeto atributo de tipo pthread_attr_t con las

propiedades que tendrán los hilos que se creen posteriormentel Los atributos permiten especificar: tamaño de pila, prioridad, política

de planificación, etc.l Existen diversas llamadas para modificar los atributos

Page 99: SO II Tema 2. Procesos e hilos - mermaja.act.uji.esmermaja.act.uji.es/docencia/ii22/teoria/TraspasTema2.pdf · Tablas del sistema operativo Tabla de procesos - T abla de me ori -

Sistemas Operativos II (II-UJI) Procesos e hilos99

SS OOIIIIIIIIServicios POSIX sobre atributos de hilos

n Destrucción de atributos:u Sintaxis:

int pthread_attr_destroy (pthread_attr_t *attr);

u Descripción:l Destruye el objeto atributo de tipo pthread_attr_t pasado como

argumento a la misma

Page 100: SO II Tema 2. Procesos e hilos - mermaja.act.uji.esmermaja.act.uji.es/docencia/ii22/teoria/TraspasTema2.pdf · Tablas del sistema operativo Tabla de procesos - T abla de me ori -

Sistemas Operativos II (II-UJI) Procesos e hilos100

SS OOIIIIIIIIServicios POSIX sobre atributos de hilos

n Establecimiento del estado de terminación:u Sintaxis:

int pthread_attr_setdetachstate(pthread_attr_t *attr, int detachstate);

u Descripción:l Establece el estado de terminación de un hilo:

♣ Si "detachstate" = PTHREAD_CREATE_DETACHED

El hilo se considerará como “independiente” El hilo liberará sus recursos cuando finalice su ejecución

♣ Si "detachstate" = PTHREAD_CREATE_JOINABLE

El hilo se considerará como “no independiente” El hilo no liberará todos los recursos (descriptor y pila)

cuando finalice su ejecución, es necesario utilizar pthread_join()

Habitualmente, valor por defecto

Page 101: SO II Tema 2. Procesos e hilos - mermaja.act.uji.esmermaja.act.uji.es/docencia/ii22/teoria/TraspasTema2.pdf · Tablas del sistema operativo Tabla de procesos - T abla de me ori -

Sistemas Operativos II (II-UJI) Procesos e hilos101

SS OOIIIIIIIIServicios POSIX sobre gestión de hilos

n Creación de hilos:u Sintaxis:

int pthread_create (pthread_t *thread,

const pthread_attr_t *attr, void *(*func)(void *),

void *arg);

u Descripción:l Crea un hilo con atributos attr que ejecuta func con argumentos arg

n Finalización de hilos:u Sintaxis:

int pthread_exit(void *value);

u Descripción:l Finaliza la ejecución de un hilo, indicando su estado de terminación

Page 102: SO II Tema 2. Procesos e hilos - mermaja.act.uji.esmermaja.act.uji.es/docencia/ii22/teoria/TraspasTema2.pdf · Tablas del sistema operativo Tabla de procesos - T abla de me ori -

Sistemas Operativos II (II-UJI) Procesos e hilos102

SS OOIIIIIIIIServicios POSIX sobre gestión de hilos

n Suspensión de hilos:u Sintaxis:

int pthread_join(pthread_t thid, void **value);

u Descripción:l Suspende la ejecución de un hilo hasta que termina el hilo con

identificador thid (no necesariamente un hilo hijo)l Deja el estado de terminación del hilo en la posición apuntada por value

l Sólo se puede solicitar este servicio sobre hilos no independientes

n Identificación de hilos:u Sintaxis:

pthread_t pthread_self(void);

u Descripción:l Devuelve el identificador del hilo que ejecuta la llamada

Page 103: SO II Tema 2. Procesos e hilos - mermaja.act.uji.esmermaja.act.uji.es/docencia/ii22/teoria/TraspasTema2.pdf · Tablas del sistema operativo Tabla de procesos - T abla de me ori -

Sistemas Operativos II (II-UJI) Procesos e hilos103

SS OOIIIIIIIIServicios POSIX sobre gestión de hilos

n Jerarquía de hilos:

Hilo 1

pthread_create

Hilo 4

pthread_exit

pthread_create

Hilo 2

pthread_create

Hilo 3

pthread_join

pthread_exit

No independiente

Hilo principal (main)

Page 104: SO II Tema 2. Procesos e hilos - mermaja.act.uji.esmermaja.act.uji.es/docencia/ii22/teoria/TraspasTema2.pdf · Tablas del sistema operativo Tabla de procesos - T abla de me ori -

Sistemas Operativos II (II-UJI) Procesos e hilos104

SS OOIIIIIIIIServicios POSIX para gestión de hilos

#include <pthread.h>#include <stdio.h>

void *hilo(void *cadena){int i;for (i=0; i<10; i++)

printf("Hilo (%d): %d %s \n",pthread_self(),i,(char *)cadena);pthread_exit(0);

}

int main(){char *cadena1="Hola";char *cadena2="Adios";

pthread_t hilo1, hilo2;

pthread_create(&hilo1, NULL, hilo, (void *)cadena1);pthread_create(&hilo2, NULL, hilo, (void *)cadena2);

exit(0);}

n Ejemplo 1:

A partir de aquí, el hilo principal, hilo1 e hilo2 se ejecutan concurrentemente. Cualquiera puede acabar 1°, 2°o último

Page 105: SO II Tema 2. Procesos e hilos - mermaja.act.uji.esmermaja.act.uji.es/docencia/ii22/teoria/TraspasTema2.pdf · Tablas del sistema operativo Tabla de procesos - T abla de me ori -

Sistemas Operativos II (II-UJI) Procesos e hilos105

SS OOIIIIIIIIServicios POSIX para gestión de hilos

#include <pthread.h>#include <stdio.h>

int cont=0;

void *hilo(void *arg){ sleep(2);cont=cont+1;printf("Hilo (%d): cont=%d \n",pthread_self(),cont);pthread_exit(0);

}

int main(){ pthread_t hilo1, hilo2;

printf("Hilo principal (%d): cont=%d \n",pthread_self(),cont);

pthread_create(&hilo1, NULL, hilo, NULL);pthread_create(&hilo2, NULL, hilo, NULL);pthread_join(hilo1,NULL); /* Punto de sincronización con hilo1 */

/* Hilo2 sigue su marcha. Puede o no haber acabado*/pthread_join(hilo2,NULL); /* Punto de sincronización con hilo2 */

printf("Hilo principal (%d): cont=%d \n",pthread_self(),cont);exit(0);

}

n Ejemplo 2:¡Ojo a la exclución mutua!

Page 106: SO II Tema 2. Procesos e hilos - mermaja.act.uji.esmermaja.act.uji.es/docencia/ii22/teoria/TraspasTema2.pdf · Tablas del sistema operativo Tabla de procesos - T abla de me ori -

Sistemas Operativos II (II-UJI) Procesos e hilos106

SS OOIIIIIIIIServicios POSIX para gestión de procesos

#include <stdio.h>int main(){ int estado, cont=0;

printf("Padre (%d): cont=%d \n",getpid(),cont);if (fork() != 0){if (fork() != 0){ wait(&estado);wait(&estado);printf("Padre (%d): cont=%d \n",getpid(),cont);

} else { /* HIJO 2 */cont=cont+1;printf("Hijo 2 (%d): cont=%d \n",getpid(),cont);

}} else { /* HIJO 1 */

cont=cont+1;printf("Hijo 1 (%d): cont=%d \n",getpid(),cont);

}exit(0);}

n Ejemplo 2: Código pseudo-equivalente con gestión de procesos pesados:

¿Por qué?

Page 107: SO II Tema 2. Procesos e hilos - mermaja.act.uji.esmermaja.act.uji.es/docencia/ii22/teoria/TraspasTema2.pdf · Tablas del sistema operativo Tabla de procesos - T abla de me ori -

Sistemas Operativos II (II-UJI) Procesos e hilos107

SS OOIIIIIIIIServicios POSIX para gestión de hilos

#include <pthread.h>#include <stdio.h>#include <unistd.h>#include <stdlib.h>#include <time.h>

int x=0;

void *fhilo1(void *arg) void *fhilo2(void *arg){ int i, cont; { int i, cont;for (i=0; i<3; i++) { for (i=0; i<3; i++) {

cont=x+1; cont=x-1;printf (“Suma 1\n”); printf (“Resta 1\n”);sleep (random()%3); sleep (random()%3);x=cont; x=cont;

} }pthread_exit (NULL); pthread_exit (NULL);

} }

n Ejemplo 3:

Page 108: SO II Tema 2. Procesos e hilos - mermaja.act.uji.esmermaja.act.uji.es/docencia/ii22/teoria/TraspasTema2.pdf · Tablas del sistema operativo Tabla de procesos - T abla de me ori -

Sistemas Operativos II (II-UJI) Procesos e hilos108

SS OOIIIIIIIIServicios POSIX para gestión de hilos

main(){ pthread_t hilo1, hilo2;time_t t;

srandom (time(&t);printf ("Valor inicial de x: %d \n",x);

pthread_create(&hilo1, NULL, fhilo1, NULL);pthread_create(&hilo2, NULL, fhilo2, NULL);

pthread_join(hilo1,NULL);pthread_join(hilo2,NULL);

printf ("Valor final de x: %d \n",x);exit(0);

}

n Ejemplo 3 (cont.):

¿Funcionamiento correcto?

Page 109: SO II Tema 2. Procesos e hilos - mermaja.act.uji.esmermaja.act.uji.es/docencia/ii22/teoria/TraspasTema2.pdf · Tablas del sistema operativo Tabla de procesos - T abla de me ori -

Sistemas Operativos II (II-UJI) Procesos e hilos109

SS OOIIIIIIIIEjercicios

n Ejercicio 1:

Realizar un algoritmo o programa en el que, dado el número de identificación de un proceso, se obtenga el número de hijos que tiene dicho proceso y sus correspondientes números de identificación.

Page 110: SO II Tema 2. Procesos e hilos - mermaja.act.uji.esmermaja.act.uji.es/docencia/ii22/teoria/TraspasTema2.pdf · Tablas del sistema operativo Tabla de procesos - T abla de me ori -

Sistemas Operativos II (II-UJI) Procesos e hilos110

SS OOIIIIIIIIEjercicios

n Ejercicio 1 (solución):

Solución I:

void muetra_hijos (int pidPadre);

{struct task_struct *p;

int n_hijos=0;

p=&init_task->next_task;

while ((p->pid!=pidPadre) && (p!=&init_task))

p=p->next_task;

if (p==&init_task) return (-1);

if (p=p->cptr!=NULL)

doprintf (“%d \n”,p-> pid);

n_hijos++1;

while (p=p->p_osptr!=NULL);

printf (“El proceso %d tiene %d hijos \n”,pidPadre,n_hijos);

return (0);}

Page 111: SO II Tema 2. Procesos e hilos - mermaja.act.uji.esmermaja.act.uji.es/docencia/ii22/teoria/TraspasTema2.pdf · Tablas del sistema operativo Tabla de procesos - T abla de me ori -

Sistemas Operativos II (II-UJI) Procesos e hilos111

SS OOIIIIIIIIEjercicios

n Ejercicio 1 (solución):

Solución II:

void muetra_hijos (int pidPadre);

{struct task_struct *p;

int n_hijos=0;

p=&init_task->next_task;

while ((p->pid!=pidPadre) && (p!=&init_task))

p=p->next_task;

if (p==&init_task) return (-1);

for each_task (p)

if (p->p_pptr->pid==pidPadre)

{printf (“%d \n”,p->p_pptr->pid);

n_hijos++1;}

printf (“El proceso %d tiene %d hijos\n”,pidPadre,n_hijos);

return (0);}

Page 112: SO II Tema 2. Procesos e hilos - mermaja.act.uji.esmermaja.act.uji.es/docencia/ii22/teoria/TraspasTema2.pdf · Tablas del sistema operativo Tabla de procesos - T abla de me ori -

Sistemas Operativos II (II-UJI) Procesos e hilos112

SS OOIIIIIIIIEjercicios

n Ejercicio 2:

Desarrollar un algoritmo o un programa que genere una salida similar a la del comando pstree en el sistema operativo Linux.

void pstree2 ();

{struct task_struct *p;

void pstree2_rec (struct task_struct *h);

{ hh=h->p_cptr;while (hh!=NULL)

{ printf (“Proc padre %d. Proc hijo %d\n”,h->pid,hh->pid);pstree2_rec (hh);hh=hh->p_osptr;

}return (0);

}

p=&init_task;pstree2_rec (p);return (0);}

Page 113: SO II Tema 2. Procesos e hilos - mermaja.act.uji.esmermaja.act.uji.es/docencia/ii22/teoria/TraspasTema2.pdf · Tablas del sistema operativo Tabla de procesos - T abla de me ori -

Sistemas Operativos II (II-UJI) Procesos e hilos113

SS OOIIIIIIIIEjercicios

n Ejercicio 3:

Desarrollar un algoritmo o un programa que calcule de la forma más eficiente posible el número de procesos huérfanos que hay en un sistema Linux en un instante dado.

Page 114: SO II Tema 2. Procesos e hilos - mermaja.act.uji.esmermaja.act.uji.es/docencia/ii22/teoria/TraspasTema2.pdf · Tablas del sistema operativo Tabla de procesos - T abla de me ori -

Sistemas Operativos II (II-UJI) Procesos e hilos114

SS OOIIIIIIIIEjercicios

n Ejercicio 4:

Desarrollar un algoritmo o un programa en el que, dado el número de identificación de un proceso Linux, se muestre el proceso hijo preparado para ejecución (en estado listo) que lleva más tiempo ejecutándose, ya sea en modo usuario o supervisor.

Page 115: SO II Tema 2. Procesos e hilos - mermaja.act.uji.esmermaja.act.uji.es/docencia/ii22/teoria/TraspasTema2.pdf · Tablas del sistema operativo Tabla de procesos - T abla de me ori -

Sistemas Operativos II (II-UJI) Procesos e hilos115

SS OOIIIIIIIIEjercicios

n Ejercicio 5:

Supongamos que, en un instante dado, la lista de procesos preparados para ejecución de un sistema operativo linux es la que aparece a continuación y que el proceso en ejecución es el proceso 3. ¿Qué proceso pasaría a ejecución si se invoca al planificador de linux? Justificar la respuesta.

. . .

. . .Política planificación

Prioridad dinámicaPrioridad estática

Proceso init

. . .

. . .Proceso 1

FIFO2020

. . .

. . .Proceso 2

OTHER5075

. . .

. . .Proceso 3

RR0

25. . .

. . .Proceso 4

FIFO2525

. . .

. . .Proceso 5

RR2025

. . .

. . .Proceso 6

RR2525

. . .

. . .Proceso 7

OTHER2020

. . .

. . .Proceso 8

FIFO2525

counter

priority counter

rt_prio

rity

rt_prio

rity

Page 116: SO II Tema 2. Procesos e hilos - mermaja.act.uji.esmermaja.act.uji.es/docencia/ii22/teoria/TraspasTema2.pdf · Tablas del sistema operativo Tabla de procesos - T abla de me ori -

Sistemas Operativos II (II-UJI) Procesos e hilos116

SS OOIIIIIIIIEjercicios

n Ejercicio 5 (solución):

1. El proceso 3 se mueve al final de la lista2. La función goodness proporciona las siguientes prioridades a los

procesos de la lista de procesos listos:

3. Tras el bucle while c=1025 y next apunta al proceso P4

FIFO Other FIFO RR RR Other FIFO RR

Proceso P1 P2 P4 P5 P6 P7 P8 P3

Weight 1020 50 1025 1025 1025 20 1025 1025

Page 117: SO II Tema 2. Procesos e hilos - mermaja.act.uji.esmermaja.act.uji.es/docencia/ii22/teoria/TraspasTema2.pdf · Tablas del sistema operativo Tabla de procesos - T abla de me ori -

Sistemas Operativos II (II-UJI) Procesos e hilos117

SS OOIIIIIIIIEjercicios

n Ejercicio 6:

¿Qué proceso seleccionaría el planificador de linux en un instante dado en el que hay dos procesos con la máxima prioridad y uno tiene asignada la política FIFO y otro RR?

Solución:

El primero que se encuentre en la lista (ver ejemplo del ejercicio 5).

Page 118: SO II Tema 2. Procesos e hilos - mermaja.act.uji.esmermaja.act.uji.es/docencia/ii22/teoria/TraspasTema2.pdf · Tablas del sistema operativo Tabla de procesos - T abla de me ori -

Sistemas Operativos II (II-UJI) Procesos e hilos118

SS OOIIIIIIIIEjercicios

n Ejercicio 8:

¿En qué variaría la política de planificación de procesos de linux si en la función schedule se sustituye la línea

if (weight > c)

por lo siguiente:

if (weight >= c)?

Solución:

En este caso, ante varios procesos con máxima prioridad se seleccionaría el último de ellos que esté en la lista de procesos listos del sistema. Consecuentemente, si estos procesos con la máxima prioridad tuviesen asignada una política de planificación FIFO, dejaría que cumplirse dicha política. Y lo mismo ocurriría con la política de planificación RR.

Page 119: SO II Tema 2. Procesos e hilos - mermaja.act.uji.esmermaja.act.uji.es/docencia/ii22/teoria/TraspasTema2.pdf · Tablas del sistema operativo Tabla de procesos - T abla de me ori -

Sistemas Operativos II (II-UJI) Procesos e hilos119

SS OOIIIIIIIIEjercicios

n Ejercicio 9:

Explicar cómo se cumple la política FIFO en el planificador de procesos de linux cuando varios procesos con este tipo de política tienen la máxima prioridad.

Page 120: SO II Tema 2. Procesos e hilos - mermaja.act.uji.esmermaja.act.uji.es/docencia/ii22/teoria/TraspasTema2.pdf · Tablas del sistema operativo Tabla de procesos - T abla de me ori -

Sistemas Operativos II (II-UJI) Procesos e hilos120

SS OOIIIIIIIIEjercicios

n Ejercicio 9 (solución):

Veámoslo con el siguiente ejemplo:

Tras el bucle while c=1050 y next apunta al proceso P1. Si no apareciesen más procesos listos, cuando acabe la ejecución del proceso P1 el planificador seleccionará al siguiente proceso de la lista más prioritario, esto es, P3, que entró después de P1 en la lista. Si no hubiesen aparecido más procesos listos, cuando P3 finalice el proceso más prioritario sería P8, que había entrado en la lista tras P1 y P3. Resumiendo, los tres procesos FIFO con la prioridad máxima se ejecutan en el orden en que entraron en la lista.

PROCESO P1 P2 P3 P4 P5 P6 P7 P8

Política FIFO RR FIFO Other Other FIFO RR FIFO

Prior. Estática 50 40 50 80 60 30 25 50

Prior. Dinámica 50 30 50 75 60 30 20 50

Weight 1050 1040 1050 75 60 1030 1025 1050

Page 121: SO II Tema 2. Procesos e hilos - mermaja.act.uji.esmermaja.act.uji.es/docencia/ii22/teoria/TraspasTema2.pdf · Tablas del sistema operativo Tabla de procesos - T abla de me ori -

Sistemas Operativos II (II-UJI) Procesos e hilos121

SS OOIIIIIIIIEjercicios

n Ejercicio 10:

Explicar la validez del siguiente código:

#include <pthread.h>#include <stdio.h>#define MAX_THREADS 10

void *imprimir(int *n){ sleep (3);printf("Hilo (%d): %d \n",pthread_self(),*n);pthread_exit(0);

}int main(){ int num;pthread_t hilo;pthread_attr_t attr;pthread_attr_init (&attr);pthread_attr_setdetachstate (&attr, PTHREAD_CREATE_DETACHED);

while (1) {scanf (“%d”, &num);pthread_create(&hilo, &attr, imprimir, &num);

exit(0);}