Multitasca / Multiprocés

73
Multitasca / Multiprocés Xavier Sala Pujolar Desenvolupament de Funcions en el Sistema Informàtic IES Cendrassos

description

Teoria de multitasca, multiprocés i threads a més d'utilitats de Windows i Linux

Transcript of Multitasca / Multiprocés

Page 1: Multitasca / Multiprocés

Multitasca / Multiprocés

Xavier Sala PujolarDesenvolupament de Funcions en el Sistema InformàticIES Cendrassos

Page 2: Multitasca / Multiprocés

Procés

Page 3: Multitasca / Multiprocés

Desenvolupament de Funcions en el Sistema Informàtic

Procés● Un procés és una instància d'una aplicació que

està essent executada per una computadora– Això implica que un programa és només una

col·lecció passiva d'instruccions

Page 4: Multitasca / Multiprocés

Desenvolupament de Funcions en el Sistema Informàtic

Procés● En general un procés consisteix en:

– Una còpia del codi executable

– Memòria (normalment virtual)

– Descriptors de recursos del sistema operatiu que el procés està fent servir

– Atributs de seguretat: propietari, operacions permeses, etc...

– Estat del processador (es copia al executar-se)

● La majoria d'aquesta informació es guarda en unes estructures de dades anomenades PCB (Process Control Blocks)

Page 5: Multitasca / Multiprocés

Threads

Page 6: Multitasca / Multiprocés

Desenvolupament de Funcions en el Sistema Informàtic

Threads (fils d'execució)● Un fil d'execució (thread en anglès) és una

característica dels sistemes operatius que permet a un procés executar diferents tasques al mateix temps

– També es coneixen com a “processos lleugers”

– Permeten simplificar el disseny d'aplicacions concurrents i millorar-ne el rendiment

– La creació d'un fil no copia les dades del creador sinó que els fills comparteixen les dades

– Els canvis de context permeten simular una execució concurrent dels threads

Page 7: Multitasca / Multiprocés

Desenvolupament de Funcions en el Sistema Informàtic

Threads● La majoria dels sistemes operatius moderns

suporten threads– De fet en Windows, és més fàcil crear threads

que processos

– En Linux hi ha la llibreria libpthread

$ ps axH | grep firefox 8227 ? S 0:00 /bin/sh /home/xxx/bin/firefox/firefox 8235 ? Sl 3:10 /home/xxx/bin/firefox/firefox-bin 8235 ? Sl 0:01 /home/xxx/bin/firefox/firefox-bin 8235 ? Sl 0:05 /home/xxx/bin/firefox/firefox-bin 8235 ? Sl 0:00 /home/xxx/bin/firefox/firefox-bin 8235 ? Sl 0:00 /home/xxx/bin/firefox/firefox-bin 8235 ? Sl 0:00 /home/xxx/bin/firefox/firefox-bin 8235 ? Sl 0:05 /home/xxx/bin/firefox/firefox-bin 8235 ? Sl 0:00 /home/xxx/bin/firefox/firefox-bin 13567 pts/0 S+ 0:00 grep firefox

Page 8: Multitasca / Multiprocés

Concurrència

Page 9: Multitasca / Multiprocés

Desenvolupament de Funcions en el Sistema Informàtic

Sistemes operatius● Al principi els sistemes operatius eren

monoprocés però actualment la majoria dels sistemes són concurrents

● Concurrència: Propietat de que els sistemes que permeten que múltiples processos siguin executats alhora i que puguin interactuar entre ells

Podem obtenir concurrència en sistemes que suportin:

– Multiprocés

– Multitasca

Page 10: Multitasca / Multiprocés

Desenvolupament de Funcions en el Sistema Informàtic

Multitasca● Diferents processos comparteixen una sola

CPU– En un instant determinat només hi ha una

instrucció executant-se

● S'intenta aconseguir la sensació de tenir diferents tasques alhora en marxa

● La majoria dels sistemes operatius moderns ofereixen multitasca tot i que inicialment van ser monotasca

● Podem tenir multitasca a nivell de procés o a nivell de thread

Page 11: Multitasca / Multiprocés

Desenvolupament de Funcions en el Sistema Informàtic

Multitasca

Page 12: Multitasca / Multiprocés

Desenvolupament de Funcions en el Sistema Informàtic

Multitasca

Page 13: Multitasca / Multiprocés

Desenvolupament de Funcions en el Sistema Informàtic

Multitasca

Page 14: Multitasca / Multiprocés

Desenvolupament de Funcions en el Sistema Informàtic

Multitasca

Page 15: Multitasca / Multiprocés

Desenvolupament de Funcions en el Sistema Informàtic

Multiprocés● S'executen diversos processos alhora en

diferents processadors– En un instant determinat hi poden haver tantes

instruccions executant-se alhora com processadors tinguem

● Normalment també són alhora sistemes multitasca

● Hi ha diferents tipus de multiprocés però el més corrent actualment és el multiprocessament simètric (SMP)

Page 16: Multitasca / Multiprocés

Desenvolupament de Funcions en el Sistema Informàtic

Multiprocés

Page 17: Multitasca / Multiprocés

Desenvolupament de Funcions en el Sistema Informàtic

Canvi de context● El canvi de context es produeix quan una tasca

és suspesa i se'n comença una altra

● El canvi de context de processos és una tasca costosa:

– S'ha de substituir tot l'espai d'adreces

● En threads és menys costós

Page 18: Multitasca / Multiprocés

Desenvolupament de Funcions en el Sistema Informàtic

Comunicació● La multitasca o el multiprocés han de

col·laborar per oferir algun avantatge● Per això és essencial que es puguin comunicar● Bàsicament hi ha dues formes de comunicar:

– Missatges directes o a través del nucli● La comunicació es produeix enviant i rebent

paquets d'informació o fluxos de dades

– Memòria compartida● La comunicació es produeix utilitzant variables

comunes. ● És molt eficient però produeix condicions de

carrera

Page 19: Multitasca / Multiprocés

Problemes

Page 20: Multitasca / Multiprocés

Desenvolupament de Funcions en el Sistema Informàtic

Problemes● Però la programació concurrent també ens

afegeix problemes nous que no teníem en programació monoprocés

● L'execució concurrent ens pot portar a incorreccions com

– Condicions de carrera

– Deadlock

– Livelock

– Starvation (inanició)

● Un programa és correcte pot tenir problemes al executar-se concurrentment

Page 21: Multitasca / Multiprocés

Desenvolupament de Funcions en el Sistema Informàtic

Condicions de carrera● Quan l'execució d'un conjunt d'operacions

concurrents sobre una variable compartida la variable pren valors incorrectes

● Succeeix quan es produeix un canvi de context en el moment inoportú

● Generalment la solució ve evitant l'accés simultani a les dades crítiques (monitors, semàfors, mutex, tipus protegits, ...)

● És molt difícil de detectar

Page 22: Multitasca / Multiprocés

Desenvolupament de Funcions en el Sistema Informàtic

Condicions de carrera● Tenim dos programes que executats per

separat no donarien cap problema

Page 23: Multitasca / Multiprocés

Desenvolupament de Funcions en el Sistema Informàtic

Condicions de carrera● Primer s'executa el de l'esquerra i carrega el

valor de A de la memòria:

Page 24: Multitasca / Multiprocés

Desenvolupament de Funcions en el Sistema Informàtic

Condicions de carrera● Abans de poder fer res es produeix un canvi de

context i passem a executar el de la dreta...

Page 25: Multitasca / Multiprocés

Desenvolupament de Funcions en el Sistema Informàtic

Condicions de carrera● Després de carregar la variable la decrementa

segons la següent instrucció

Page 26: Multitasca / Multiprocés

Desenvolupament de Funcions en el Sistema Informàtic

Condicions de carrera● Torna a executar-se el programa de la esquerra

que incrementa el valor de A

Page 27: Multitasca / Multiprocés

Desenvolupament de Funcions en el Sistema Informàtic

Condicions de carrera● Torna a posar el valor de A a memòria i s'acaba

la execució

Page 28: Multitasca / Multiprocés

Desenvolupament de Funcions en el Sistema Informàtic

Condicions de carrera● Continua el de la dreta posant el valor que té

calculat de A a memòria...

Page 29: Multitasca / Multiprocés

Desenvolupament de Funcions en el Sistema Informàtic

Condicions de carrera● El resultat final és un valor invàlid de la variable

A! 5 + 1 – 1 = 4?

Page 30: Multitasca / Multiprocés

Desenvolupament de Funcions en el Sistema Informàtic

Deadlock (abraçada mortal)● Bloqueig permanent d'un conjunt de processos

que competeixen pels recursos del sistema o es comuniquen entre ells

Page 31: Multitasca / Multiprocés

Desenvolupament de Funcions en el Sistema Informàtic

Deadlock (abraçada mortal)● Bloqueig permanent d'un conjunt de processos

que competeixen pels recursos del sistema o es comuniquen entre ells

Page 32: Multitasca / Multiprocés

Desenvolupament de Funcions en el Sistema Informàtic

Deadlock (abraçada mortal)● Bloqueig permanent d'un conjunt de processos

que competeixen pels recursos del sistema o es comuniquen entre ells

Page 33: Multitasca / Multiprocés

Desenvolupament de Funcions en el Sistema Informàtic

Deadlock (abraçada mortal)● Bloqueig permanent d'un conjunt de processos

que competeixen pels recursos del sistema o es comuniquen entre ells

Page 34: Multitasca / Multiprocés

Desenvolupament de Funcions en el Sistema Informàtic

Livelock● Un livelock és semblant a una abraçada mortal

però on l'estat dels processos canvia constantment

● Es fàcil que es produeixi quan s'intenta evitar el deathlock

● Semblant a quan dues persones intenten deixar passar a l'altra en un passadís i van cap al mateix costat

Page 35: Multitasca / Multiprocés

Desenvolupament de Funcions en el Sistema Informàtic

Livelock

Page 36: Multitasca / Multiprocés

Desenvolupament de Funcions en el Sistema Informàtic

Livelock

Page 37: Multitasca / Multiprocés

Desenvolupament de Funcions en el Sistema Informàtic

Livelock

Page 38: Multitasca / Multiprocés

Desenvolupament de Funcions en el Sistema Informàtic

Livelock

Page 39: Multitasca / Multiprocés

Desenvolupament de Funcions en el Sistema Informàtic

Starvation (inanició)● Es produeix quan a un procés se li impedeix

sempre l'accés a un recurs● Els processos bloquejants no tenen perquè

estar en un punt mort● Pot provocar que els processos de més prioritat

s'executin sempre i els de baixa prioritat mai● També els processos d'alta prioritat poden

quedar amb starvation si algun espera el resultat d'un procés de baixa prioritat

Page 40: Multitasca / Multiprocés

Desenvolupament de Funcions en el Sistema Informàtic

Starvation

Page 41: Multitasca / Multiprocés

Desenvolupament de Funcions en el Sistema Informàtic

Starvation

Page 42: Multitasca / Multiprocés

Desenvolupament de Funcions en el Sistema Informàtic

Starvation

Page 43: Multitasca / Multiprocés

Multitasca en Linux

Page 44: Multitasca / Multiprocés

Desenvolupament de Funcions en el Sistema Informàtic

Processos Linux● Linux és un sistema que fa servir el concepte

de “temps compartit” per simular la multitasca– El temps de CPU es divideix en “slices”

● D'entre els objectius del planificador hi ha:– Temps de resposta ràpid

– Ample de banda prou bo pels processos en background

– Evitar la inanició de processos (starvation)

– Complir amb les necessitats dels processos de prioritat alta i baixa

Page 45: Multitasca / Multiprocés

Desenvolupament de Funcions en el Sistema Informàtic

Processos Linux● La prioritat és un dels factors que determina

quin procés ha de ser executat (32● La prioritat dels processos és dinàmica:

– Als processos que fa estona que no accedeixen a la CPU se'ls incrementa la prioritat i a l'inrevés

● Els processos de Linux són preemptius● Es guarda una estructura de directoris en el

directory /proc amb informació dels processos en execució

Page 46: Multitasca / Multiprocés

Desenvolupament de Funcions en el Sistema Informàtic

Estats d'un procés

Page 47: Multitasca / Multiprocés

Desenvolupament de Funcions en el Sistema Informàtic

Control de processos● Podem saber quins processos tenim en

execució en un sistema amb la comanda: ps– Tots els processos: ps -eF o ps ax

– Arbre de processos: ps -eH o ps axf

$ ps ax PID TTY STAT TIME COMMAND 1 ? Ss 0:00 /sbin/init 2 ? S< 0:00 [kthreadd] 3 ? S< 0:00 [migration/0] ...

$ ps axf PID TTY STAT TIME COMMAND 2 ? S< 0:00 [kthreadd] 3 ? S< 0:00 \_ [migration/0] 4 ? S< 0:00 \_ [ksoftirqd/0] 5 ? S< 0:00 \_ [watchdog/0]...

Page 48: Multitasca / Multiprocés

Desenvolupament de Funcions en el Sistema Informàtic

Control de processos● pidof: Ens dóna el PID d'un procés en

execució

● top i htop: Estat dels processos en temps real

$ pidof gnome-terminal12925

Page 49: Multitasca / Multiprocés

Desenvolupament de Funcions en el Sistema Informàtic

Control de processos● kill: permet enviar senyals (signals) als

processos. – El senyal per defecte és matar el procés

(CTRL+C)

– Però podem enviar-ne qualsevol (kill -l per veure'ls

● killall: permet enviar un signal a totes les instàncies d'un programa (killall squid)o als processos d'un usuari (killall -U pepet)

$ ps ax | grep firefox 2784 ? S 0:00 /bin/sh /home/xavier/bin/firefox/firefox$ kill 2784$ ps ax | grep firefox

$ kill -SIGKILL 2784

Page 50: Multitasca / Multiprocés

Desenvolupament de Funcions en el Sistema Informàtic

Control de processos● nice / renice: Canviar la prioritat d'un procés

– Zero: prioritat normal

– Valors negatius: més prioritat (min -20)

– Valors positius: menys prioritat (max 19)

– Només podem canviar la prioritat dels processos en execució amb renice.

$ ps -l F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD 0 S 1000 6432 6226 0 80 0 - 1661 wait pts/1 00:00:00 bash$ nice -n 5 yes$ ps -l F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD 0 S 1000 6432 6226 0 80 5 - 1661 write_ pts/1 00:00:00 yes$ renice -5 6432$ ps -l F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD 0 S 1000 6432 6226 0 80 -5 - 1661 write_ pts/1 00:00:00 yes

Page 51: Multitasca / Multiprocés

Desenvolupament de Funcions en el Sistema Informàtic

Control de processos● strace: Serveix per saber què està fent un

procés en un moment determinat

● ltrace: Permet veure les crides a llibreries que fa un programa

$ ps -e | grep bash 9747 ? 00:00:04 bash$ strace -p 9747Process 9747 attached - interrupt to quitread(0, "a", 1) = 1rt_sigprocmask(SIG_BLOCK, [INT], [], 8) = 0write(2, "a", 1) = 1rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0rt_sigprocmask(SIG_BLOCK, NULL, [], 8) = 0read(0,

$ ps -e | grep bash 9747 ? 00:00:04 bash$ strace -p 9747Process 9747 attached - interrupt to quitread(0, "a", 1) = 1rt_sigprocmask(SIG_BLOCK, [INT], [], 8) = 0write(2, "a", 1) = 1rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0rt_sigprocmask(SIG_BLOCK, NULL, [], 8) = 0read(0,

$ ltrace ./gen-ipv6__libc_start_main(0x8048564, 1, 0xbfda9c04, 0x8048620, 0x8048610 <unfinished ...>rand(0x362304, 0x361ff4, 0x8048620, 0xbfda9b58, 0x251345) = 0x6b8b4567printf("%d", 1) = 1

$ ps -e | grep bash 9747 ? 00:00:04 bash$ strace -p 9747Process 9747 attached - interrupt to quitread(0, "a", 1) = 1rt_sigprocmask(SIG_BLOCK, [INT], [], 8) = 0write(2, "a", 1) = 1rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0rt_sigprocmask(SIG_BLOCK, NULL, [], 8) = 0read(0,

Page 52: Multitasca / Multiprocés

Desenvolupament de Funcions en el Sistema Informàtic

Control de processos● &: Porta a la tasca a un segon pla (CTRL+Z)

● Les tasques en segon pla es veuen amb jobs

● fg: torna els processos a primer pla

Per defecte el que té el signe +

$ jobs[1]- Aturat ./programa1 &[2]+ Aturat yes >/dev/null &

$ ./programa1 &[1] 12972$ yes > /dev/null &[1] 12976

$ fg %1./programa1

Page 53: Multitasca / Multiprocés

Desenvolupament de Funcions en el Sistema Informàtic

Control de processos● nohup / dissow: Permeten la execució d'un

procés lliure de l'associació amb el pare– Si el pare mor la tasca no es morirà

– Perfecte per acabar tasques en sistemes remots

– Com diu la comanda guarda les sortides per pantalla al fitxer nohup.out

● Amb bash podem fer el mateix amb dissow

$ nohup firefoxnohup: es descarta l’entrada i s’afegeix l’eixida a «nohup.out»$

$ dissow -h 2345

Page 54: Multitasca / Multiprocés

Desenvolupament de Funcions en el Sistema Informàtic

Control de processos● fuser: saber quin procés està fent servir un

dispositiu o un socket

● Interessant per saber quan un programa està bloquejat perquè passa

● Executant-ho com a usuari pot ser que no doni cap valor

$ sudo fuser /dev/nvidia0/dev/nvidia0: 1128m 2574m 2580 2581$ ps 2580 2581 PID TTY STAT TIME COMMAND 2580 ? Ss 0:00 /bin/sh -c /usr/bin/compiz-decorator 2581 ? S 0:10 /usr/bin/gtk-window-decorator

Page 55: Multitasca / Multiprocés

Desenvolupament de Funcions en el Sistema Informàtic

Control de processos● Podem controlar en quin moment s'executarà

un programa amb:– at, atq, atrm: Permeten executar un programa

en una hora determinada

– batch: Permet que el programa s'executi només quan la càrrega del sistema sigui inferior a un valor determinat

– cron: Permet programar execucions periòdiques de comandes

– watch: Executa una comanda periòdicament i mostra per pantalla la sortida

Page 56: Multitasca / Multiprocés

Desenvolupament de Funcions en el Sistema Informàtic

at● Per exemple per executar un 'ls' a una hora

determinada: (CTRL+D == EOT)

● La configuració de crontab per un usuari

● I watch:

$ at 2009.12.01 16:08warning: commands will be executed using /bin/shat> lsat> <EOT>job 2 at Tue Dec 1 16:08:00 2009

$ crontab -eno crontab for xavier - using an empty oneProcessing '/etc/joe/joerc'...Processing '/etc/joe/ftyperc'...donedone21 * * * * ls

$ watch -n 3 tail /var/log/messages...

Page 57: Multitasca / Multiprocés

Desenvolupament de Funcions en el Sistema Informàtic

ipcs● Dóna informació sobre la memòria compartida,

els semàfors i les cues de missatges (-u sumari):

$ ipcs---- Segments de memòria compartida ----clau shmid propietari perms octets nattch estat 0x00000000 0 root 777 135168 2 0x00000000 557057 xavier 600 393216 2 dest 0x00000000 589826 xavier 600 393216 2 dest 0x00000000 262147 xavier 600 393216 2 dest 0x00000000 294916 xavier 600 393216 2 dest 0x00000000 327685 xavier 600 393216 2 dest 0x00000000 360454 xavier 600 393216 2 dest 0x00000000 393223 xavier 600 393216 2 dest 0x00000000 425992 xavier 600 393216 2 dest 0x00000000 458761 xavier 600 393216 2 dest 0x00000000 491530 xavier 600 393216 2 dest 0x00000000 720911 xavier 600 393216 2 dest 0x00000000 753680 xavier 600 393216 2 dest 0x00000000 851986 xavier 600 393216 2 dest

------ Matrius del semàfor ------clau semid propietari perms nsems 0x4d060001 32769 xavier 600 8

------ Cues de missatges -----clau msqid propietari perms octets emprats missatges

Page 58: Multitasca / Multiprocés

Multitasca en Windows

Page 59: Multitasca / Multiprocés

Desenvolupament de Funcions en el Sistema Informàtic

Processos Windows● Es basa en “temps compartit” (time sharing) i

és preemptiu ● Tots els processos comencen amb un thread

– La planificació es fa en base ans threads.

– Els processos no s'executen

– No hi ha relació pare/fill entre processos

● Tots els processos del sistema són “companys” independentment del procés pare que tinguin

● Windows només té un planificador de curt termini que se n'encarrega de triar els threads a executar

Page 60: Multitasca / Multiprocés

Desenvolupament de Funcions en el Sistema Informàtic

Processos Windows● Es divideixen els processos en threads perquè:

– Millora el temps de resposta

– Es pot aprofitar si hi ha múltiples processadors

● Cada thread té una prioritat i es tria el que tingui més prioritat per ser executat

● Hi ha grups de processos (Jobs) (ex. runas)

● La prioritat és un dels factors que determina quin procés ha de ser executat (32)

● La planificació està governada per events

Page 61: Multitasca / Multiprocés

Desenvolupament de Funcions en el Sistema Informàtic

Processos Windows● Cada procés i cada thread tenen un

identificador únic● Els processos en Windows es moren:

– Quan el programa decideix acabar (ExitProcess)

– Quan l'escriptori acaba la execució del programa (ExitProcess)

– Quan es força l'acabament del programa (Terminate process)

– Quan es produeix una excepció no prevista (unhandled exception)

Page 62: Multitasca / Multiprocés

Desenvolupament de Funcions en el Sistema Informàtic

Processos Windows

Page 63: Multitasca / Multiprocés

Desenvolupament de Funcions en el Sistema Informàtic

Control de processos● Administrador de tasques

Page 64: Multitasca / Multiprocés

Desenvolupament de Funcions en el Sistema Informàtic

Control de processos● Windows ens dóna eines per controlar les

tasques des de consola: tasklist

Per veure les DLL de cada procés:

C:> TASKLISTNombre de imagen PID Nombre de sesión Núm. de Uso de memor========================= ====== ================ ======== ============System Idle Process 0 0 16 KBSystem 4 0 212 KBsmss.exe 380 0 400 KBcsrss.exe 596 0 3.704 KBwinlogon.exe 620 0 4.440 KBservices.exe 672 0 3.308 KBlsass.exe 684 0 5.904 KBsvchost.exe 852 0 3.444 KBsvchost.exe 940 0 4.216 KB

C:> TASKLIST /Mcmd.exe 2288 ntdll.dll, kernel32.dll, msvcrt.dll, USER32.dll, GDI32.dll, ShimEng.dll, AcGenral.DLL, ADVAPI32.dll

Page 65: Multitasca / Multiprocés

Desenvolupament de Funcions en el Sistema Informàtic

Control de processos● Podem obtenir informació d'una altre màquina:

● I permet exportar en diferents formats /fo (table,csv, ... )

● O posar-hi filtres (tasklist /?):

C:> TASKLIST /S 192.168.1.1 /u administradorEscriba la contraseña para administrador:******Nombre de imagen PID Nombre de sesión Núm. de Uso de memor========================= ====== ================ ======== ============System Idle Process 0 0 16 KBSystem 4 0 212 KB...

C:> tasklist /FI "IMAGENAME eq cmd.exe"

Nombre de imagen PID Nombre de sesión Núm. de Uso de memor========================= ====== ================ ======== ============cmd.exe 2288 Console 0 1.128 KB

C:> TASKLIST /S 192.168.1.1 /u administradorEscriba la contraseña para administrador:******Nombre de imagen PID Nombre de sesión Núm. de Uso de memor========================= ====== ================ ======== ============System Idle Process 0 0 16 KBSystem 4 0 212 KB...

C:> TASKLIST /S 192.168.1.1 /u administradorEscriba la contraseña para administrador:******Nombre de imagen PID Nombre de sesión Núm. de Uso de memor========================= ====== ================ ======== ============System Idle Process 0 0 16 KBSystem 4 0 212 KB...

Page 66: Multitasca / Multiprocés

Desenvolupament de Funcions en el Sistema Informàtic

Control de processos● També podem matar processos des de la

consola: taskkill – Podem matar processos a partir del seu nom

/IM, del seu PID /PID

– Processos d'una altra màquina (sempre que tinguem credencials per fer-ho)

– O matar segons filtres

C:> TASKKILL /S sistema /F /IM notepad.exeC:> TASKKILL /PID 1230 /PID 1241 /PID 1253C:> TASKKILL /F /IM notepad.exe /IM mspaint.exeC:> TASKKILL /F /FI "PID ge 1000" /FI "WINDOWTITLE ne untitle*"C:> TASKKILL /F /FI "USERNAME eq NT AUTHORITY\SYSTEM" /IM notepad.exeC:> TASKKILL /S sistema /U dominio\usuario /FI "USERNAME ne NT*" /IM *C:> TASKKILL /S sistema /U nombreusuario /P contraseña /FI "IMAGENAME eq note*"

Page 67: Multitasca / Multiprocés

Desenvolupament de Funcions en el Sistema Informàtic

Control de processos● Wmic: es tracta d'una comanda immensa que

permet extreure dades d'una màquina Windows local o remotament

● Podem matar processos amb el seu PID

● O amb el nom

● Veure els processos

● La sortida pot ser formatejada, etc..

c:\> wmic process 1884 delete

C:\> wmic process where name='cmd.exe' delete

C:\> wmic process list brief

Page 68: Multitasca / Multiprocés

Desenvolupament de Funcions en el Sistema Informàtic

Control de processsos● Start: iniciar la execució d'un programa

– Generalment es fa servir dins d'algun script

● Sc: es fa servir per controlar els serveis del sistema: crear, aturar, engegar, reiniciar, etc..

– Mostrar tots els serveis

c:\> start notepad.exe

c:\> sc start messenger

c:\> sc queryc:\> sc queryex

Page 69: Multitasca / Multiprocés

Desenvolupament de Funcions en el Sistema Informàtic

Control de processos● Podem controlar en quin moment s'executarà

un programa amb:– at: Permet executar un programa en una hora

determinada

– Task scheduller

Page 70: Multitasca / Multiprocés

Desenvolupament de Funcions en el Sistema Informàtic

Control de processos● at ens permet executar comandes en una data

determinada

● però també repetir-les periòdicament.

● I en altres màquines

de les que hem de conèixer les credencials

c:\> at 16:16 dirSe ha agregado un nuevo trabajo con identificador = 1c:\> atEstado ID Día Hora Línea de comando-------------------------------------------------------------------------------------------------------------------------- 1 Hoy 16:16 dir

c:\> at 16:17 /every:1,5,6,8,10,19 backupSe ha agregado un nuevo trabajo con identificador = 2

c:\> at \\server 16:17 backup

Page 71: Multitasca / Multiprocés

Desenvolupament de Funcions en el Sistema Informàtic

Control de processos● Comandes externes: Tenim programes que no

estan en la instal·lació de Windows que fan coses interessants:

– Sysinternals suite: Eines de control de múltiples coses de sistemes Windows. En processos ens interessen:

● Pstools: pslist (/m /x /t )● Process Explorer● Handle● listdlls

– Windows Debugging Tools

– Windows Powershell: Incorporat a Windows 7

Page 72: Multitasca / Multiprocés

Desenvolupament de Funcions en el Sistema Informàtic

SysInternals suite● Es tracta d'una recopilació d'utilitats per

treballar amb Windows. – Comprades per Microsoft.

c:> pslistC:> pslist /mC:> Pslist /xC:> pslist /t

C:> handleC:> handle -p 3890C:> handle -p 3890 -a

C:> listdllsC:> listdlls cmd.exe

C:> procexp

C:> procmon

C:> procdump iexplore

Page 73: Multitasca / Multiprocés

Desenvolupament de Funcions en el Sistema Informàtic

Windows Debugging Tools● Serveixen per inspeccionar les estructures de

dades que gestiona el nucli internament– Hi ha dues versions del debugger:

● kd.exe● windbg.exe

– Per poder treballar calen les versions adequades dels símbols del sistema en que treballem

– Permeten detectar i eliminar errors en el programari que pugui afectar al sistema operatiu