Procesos y Threads en Windows (Xp y Server 2003)

Anuncio
75-08 Sistemas Operativos
Lic. Ing. Osvaldo Clúa
2008
Facultad de Ingeniería
Universidad de Buenos Aires
Procesos y Threads en
Windows (Xp y Server 2003)
EPROCESS
●
Executive Process (bloque de control)
–
Es la representación de un proceso para Windows.
–
Son varias estructuras relacionadas.
Threads
KPROCESS
Th1
Th2
EPROCESS,
System Space
W32PROCESS
PEB
Process Environment Block
User Space
FIUBA 2008
75-08 Sistemas Operativos
Prof. Lic. Ing. Osvaldo Clúa
2
Detalle del
EPROCESS y del PEB
Kernel Process Block (or PCB)
Process ID
Parent Process ID
Exit Status
Create and Exit Time
Next Process Block
Image base address
Module list
Thread-local storage data
Code page data
Critical section time-out
Number of heaps
Heap size info
EPROCESS
Quota Block
Memory Management Information
Exception Port
Debugger Port
Primary Access Token
Handle Table
Process Environment Block
Image File Name
GDI shared handle table
OS version no info
Image version info
Image process affinity mask
Process
heap
Image Base Address
Process Priority Class
Win32 Process Block
FIUBA 2008
75-08 Sistemas Operativos
Prof. Lic. Ing. Osvaldo Clúa
3
Flujo de CreateProcess
●
Abrir el archivo imagen (.exe).
●
Crear el proceso.
●
Crear el thread inicial.
●
Notificar al Windows Susbsystem.
–
●
Termina la inicialización del thread (Carga de
DLLs, etc).
Comenzar la ejecución del programa.
FIUBA 2008
75-08 Sistemas Operativos
Prof. Lic. Ing. Osvaldo Clúa
4
Abrir el archivo imagen
●
Definir la prioridad con la que se va a crear el proceso.
●
Asociar el proceso a un Desktop.
●
●
Verificar las políticas de seguridad (si el usuario tiene
permitido correr esa imagen)
Asociar el proceso con un subsistema (Win16, Win32,
WoW, DOS)
–
Invocar la imagen correspondiente si no es la nativa.
–
Si hay un intérprete predefinido en el Registry (un
debugger o un Just in Time Compiler), invocarlo.
FIUBA 2008
75-08 Sistemas Operativos
Prof. Lic. Ing. Osvaldo Clúa
5
Crear el Proceso
●
Preparar el bloque EPROCESS.
●
Preparar el espacio inicial de direcciones.
●
Crear el bloque KPROCESS
●
●
●
Mapea los recursos del executive al espacio de
direcciones (Ntdll.dll, Nat. Language, etc).
Prepara el PEB.
Encadena el EPROCESS (aunque todavía no puede
ejecutar).
FIUBA 2008
75-08 Sistemas Operativos
Prof. Lic. Ing. Osvaldo Clúa
6
Crear el Thread Inicial
●
●
Incrementa la thread count del proceso.
Prepara un Executive Thread Block (ETHREAD) y
le asigna un id.
●
Prepara un Thread Environment Block (TEB)
●
Mapea la dirección de comienzo.
●
Inicializa prioridades y características que
dependen del sistema (afinidad, seguridad)
FIUBA 2008
75-08 Sistemas Operativos
Prof. Lic. Ing. Osvaldo Clúa
7
Notificar al Subsistema
(Windows en este ejemplo)
●
●
●
Crea las estructuras para que CRSS lo
maneje.
Prepara el bloque W32PROCESS.
Muestra el cursor de “starting” por 7
segundos.
–
FIUBA 2008
Si el proceso no crea una ventana, vuelve al
cursor original.
75-08 Sistemas Operativos
Prof. Lic. Ing. Osvaldo Clúa
8
Pasos finales
●
●
●
Inicializa el Heap y demás estructuras de runtime.
Carga las DLLs necesarias ...
–
y las inicializa llamando a su entry-point
DLL_PROCESS_ATTACH.
–
si es .net interpreta los XML asociados a las DLL (o
assemblies).
Prepara un Asynchronous Process Call (APC) para
comenzar la ejecución.
FIUBA 2008
75-08 Sistemas Operativos
Prof. Lic. Ing. Osvaldo Clúa
9
ETHTREAD
ETHREAD
KTHREAD
Dispatcher Time
User Time
Kernel Time
KTHREAD
Create & Exit times
Process ID
Eprocess
Start Address
Access Token
Impersonation
LPC
Timer
Thread Schduling
Info
Pending APC
I/O Pending
System Mode
FIUBA 2008
75-08 Sistemas Operativos
Prof. Lic. Ing. Osvaldo Clúa
Stack
Local
Storage
Thread
Environment
Block
User Mode
10
CreateThread
●
Función Win32 en Kernel32.dll .
●
Crea el stack e inicializa el contexto.
●
Inicializa ETHREAD.
●
Deja al thread en ready.
●
Al resumir la ejecución
–
FIUBA 2008
Ejecuta los “Pasos Finales” de la creación de
un proceso.
75-08 Sistemas Operativos
Prof. Lic. Ing. Osvaldo Clúa
11
Usando el Process Explorer para ver
la actividad de un Thread (Totalcmd.exe)
FIUBA 2008
75-08 Sistemas Operativos
Prof. Lic. Ing. Osvaldo Clúa
12
Estados de un Thread
Init (0)
preempt
Standby (3)
Ready (1)
preemption,
quantum end
Running (2)
voluntary
switch
Transition (6)
Waiting (5)
Terminate (4)
wait resolved
after kernel
stack made
pageable Ready = thread eligible to be scheduled to run
Standby = thread is selected to run on CPU
FIUBA 2008
75-08 Sistemas Operativos
Prof. Lic. Ing. Osvaldo Clúa
13
Algunos estados del diagrama
●
Standby – esperando por un determinado
procesador
–
●
●
Solo un thread por procesador puede estar en
standby.
Waiting – a la espera de algún evento.
Transition – Ready pero sus estructuras no
están en memoria.
FIUBA 2008
75-08 Sistemas Operativos
Prof. Lic. Ing. Osvaldo Clúa
14
El Scheduler
●
Está repartido por el Kernel.
–
Colectivamente se lo conoce como Dispatcher.
–
Utiliza Prioridades.
–
Los threads corren por un quantum de tiempo.
–
Es apropiativo (preemptive).
–
Trabaja a nivel de threads sin tener en cuenta
al proceso
FIUBA 2008
75-08 Sistemas Operativos
Prof. Lic. Ing. Osvaldo Clúa
15
El Quantum
●
Su valor es 3* ticks de reloj
–
con cada tick se decrementa en 3 si el thread
esta running y en 1 si esta waiting.
–
6 para el Workstation, 36 para el Server.
–
Se puede ajustar entre ciertos límites.
–
FIUBA 2008
Interactúa con la prioridad.
75-08 Sistemas Operativos
Prof. Lic. Ing. Osvaldo Clúa
16
Eligiendo un Quantum
FIUBA 2008
75-08 Sistemas Operativos
Prof. Lic. Ing. Osvaldo Clúa
17
Idle Thread
●
●
Tambien conocido como Idle Process,
System Process o Idle.
Se lo activa cuando no hay threads listos
para ejecutarse
–
Verifica y termina los DPC (Defered
Procedure Call) que hubiera.
–
Habilita interrupciones
–
Depués de un tiempo llama a las rutinas de
ahorro de energía.
FIUBA 2008
75-08 Sistemas Operativos
Prof. Lic. Ing. Osvaldo Clúa
18
Multiprocesadores
●
●
Cualquier thread corre en cualquier CPU (a
menos que se especifique affinity)
–
Se trata de mantenerlos en la misma CPU
(soft affinity).
–
No hay un Master Processor.
A partir de 2003 hay una cola ready por
CPU y se tiene en cuenta NUMA.
FIUBA 2008
75-08 Sistemas Operativos
Prof. Lic. Ing. Osvaldo Clúa
19
Descargar