23
Báo cáo bài thc hành 3: Qun lý ti ến trình, tiu trình

DOWNLOAD PREMIUM SCRUBS

Embed Size (px)

Citation preview

7/26/2019 DOWNLOAD PREMIUM SCRUBS

http://slidepdf.com/reader/full/download-premium-scrubs 1/23

Báo cáo bài thực hành 3: Quản lý tiến

trình, tiểu trình

7/26/2019 DOWNLOAD PREMIUM SCRUBS

http://slidepdf.com/reader/full/download-premium-scrubs 2/23

I. M c tiêuụ

Sinh viên sẽ thực hành các thao tác liên quan tới tiến trình trong hệ điều hành.

Mục đích ca !ài thực hành nà" là giới thiệu về tiến trình# ti$u trình trong hệđiều hành linu%. &u'i c(ng sinh viên sẽ á) *ụng l+) trình đa tiều trình,-ultithra*ing/ nh0- gi1- th2i gian thực thi hiện song song.

7/26/2019 DOWNLOAD PREMIUM SCRUBS

http://slidepdf.com/reader/full/download-premium-scrubs 3/23

II. N i dungộ

7/26/2019 DOWNLOAD PREMIUM SCRUBS

http://slidepdf.com/reader/full/download-premium-scrubs 4/23

Ti n trình trong linuxế

M3t tiến trình# trong linu% đ45c g6i là tas7# là -3t thực th$ ca -3t ch48ng

trình đang ch9" trong linu%. :a c; th$ *(ng lệnh )s < đ$ hi$n th= các t>t c1 cáctiến trình đang ch9" trong hệ th'ng# hình -inh h6a

?ình @. :iến trình trong linu%

:rong đ;# ABC ,Arocss BC/ là s' i* ca tiến trình# ::D ,tlt")Eritrs/ cho !iết tiến trình thu3c vào tr-inal nào và &MC là tên ca ch48ng trình đangđ45c ch9". M3t 7hi tiến trình đ45c 7hFi t9o# !iến countr sẽ đ45c tang lên vàgiá tr= ca n; trF thành ABC ca tiến trình vGa đ45c 7hFi t9o đ;.

H$ hi$n th= nhiều thIng tin các tiến trình gJn liền với -3t tr-inal ta gKlệnh )s Ll.

?ình . ?i$n th= thIng tin tiến trình gJn liền với tr-inal hiện t9i&3t S,Status/ là -3t trong các c3t quan tr6ng nh>t# n; cho !iết tr9ng thái

ca tiến trình. &ác tiến trình c; th$ thu3c vào các tr9ng thái nh4 !1ng sau

&o* Na-CO 

Pnintru)ti!l sl)Ounna!l ,on run quu/

7/26/2019 DOWNLOAD PREMIUM SCRUBS

http://slidepdf.com/reader/full/download-premium-scrubs 5/23

S:Q

Sl)ing:rac* hoRc Sto))*Cunct ,To-!i/

:rong ?ình # ta c; th$ th>" AABC ,Aarnt Arocss BC/ ca )s chính là ABC

ca !ash# *o )s đ45c 7ích ho9t tG !ash# 7hi đ; !ash đ45c g6i là tiến trình chaca tiến trình )s. Nh4 v+" sau 7hi 7hFi t9o tiến trình )s %ong# !ash đU chu"$nsang tr9ng thái ng.

7/26/2019 DOWNLOAD PREMIUM SCRUBS

http://slidepdf.com/reader/full/download-premium-scrubs 6/23

Signals

:rong linu%# các tín hiệu đ45c %- nh4 -3t 7ênh giao tiế) !>t đVng !3 với -3t

tiến trình. M3t signal ngJt -3t tiến trình đang ch9" !ình th42ng đ$ chu"$n hệth'ng sang )hục vụ sự 7iện 7hác. &; r>t nhiều lo9i signal# -Wi signal c; -WichXc nYng 7hác nhau.:G tr-inal# ta c; th$ *(ng 7ill gZi signal tới -3t tiến trình. [í *ụ\

?ình ]. ?" tiến trình !0ng lệnh trong tr-inal[í *ụ trên *(ng lệnh ^B__ đ$ gZi tín hiệu SB`^B__ tới tiến trình ng ]

gib". :a c; th$ *(ng lệnh nà" nà" đ$ lo9i ! các tiến trình 7hIng -ong -u'nvới các lựa ch6n SB`^B__ hoRc SB`:dOM. H'i với SB`^B__ tiến trình sẽ !=h" nga" l+) tXc# trong 7hi SB`:dOM thì tiến trình c; th2i gian đ$ %Z le cácthao tác.

&; ] cách đ$ !Jt -3t tín hiệu trong l+) trình.L N; c; th$ != tG ch'i ,7hIng )h1i t>t c1 tín hiệu đều != tG ch'i/#L N; c; th$ đ45c gZi tới -3t han*lr -Rc đ=nh

L N; c; th$ gZi tới -3t han*lr đ=nh tr4ớc.H$ c; th$ !Jt tín hiệu đ=nh tr4ớc# ta c; th$ *(ng hà- signal ,trong th4 việnsignal.h/ đ$ l>" s' hiệu và đ=a chf ca -3t hà- đ$ !Jt tín hiệu. [í *ụ *4ới đb"

 !Jt sự 7iện &:O_L& ,SB`BN: < signal intrru)t/.

7/26/2019 DOWNLOAD PREMIUM SCRUBS

http://slidepdf.com/reader/full/download-premium-scrubs 7/23

?ình . Jt tín hiệu SB`BN:

7/26/2019 DOWNLOAD PREMIUM SCRUBS

http://slidepdf.com/reader/full/download-premium-scrubs 8/23

T oạ ti nế  trình

7/26/2019 DOWNLOAD PREMIUM SCRUBS

http://slidepdf.com/reader/full/download-premium-scrubs 9/23

1 T o ti nạ ế trình t ti n trình cha ừ ế

:rong linu%# tiến trình đ45c t9o ra !0ng cách nhbn đIi -3t tiến trình !0n

-3t l2i g6i hệ th'ng or7. :rong &# ta c; th$ thực hiện !0ng lệnh or7,/\#include <sys/types.h>#include <unistd.h>

pid_t fork(void);

Sau 7hi t9o tiến trình con tG tiến trình cha# tiến trình sZ *ụng chung co*nh4ng sZ *ụng stac7 và ha) riêng. ?à- or7 tr1 về giá tr= là ABC# đ'i với tiếntrình con# hà- or7 tr1 về giá tr= # trong hà- or7 cha sẽ tr1 về ABC ca hà-

-ới t9o ,nếu giá tr= tr1 về b- là lWi/.#include <unistd.h> /* Symbolic onst!nts */#include <sys/types.h> /* "rimitive System !t! $ypes */#include <stdio.h> /* %nput/&utput */#include <stdlib.h> /* 'ener!l tilities */

int m!in()  pid_t pid;

  pidfork();

  if(pid+)  printf(,hild process- i! tri pidd0n,-pid);

  else  printf(,"!rent "roces- i! tri pidd0n,-pid);  e1it(+);2

H$ ch9" đ45c ch48ng trình tr4ớc hết ta cn *=ch !3 lệnh và t9o ra @ il%cuta!l ,c; th$ ch9" đ45c/ !0ng lệnh gcc ,!iên *=ch c trong u!untu/\

gcc jtên ilk.c <o jtên il %cuta!lk

 Hinh 1: Kết quả của ví dụ

7/26/2019 DOWNLOAD PREMIUM SCRUBS

http://slidepdf.com/reader/full/download-premium-scrubs 10/23

?à- Eait c; th$ đ45c sZ *ụng đ$ hà- cha đ5i cho đến 7hi hà- con 7ếtthc. [í *ụ sau đb" 7hiến tiến trình cha )h1i đ5i tiến trình con hoàn thành tr4ớc.

#include <unistd.h> /* Symbolic onst!nts */#include <sys/types.h> /* "rimitive System !t! $ypes */

#include <stdio.h> /* %nput/&utput */#include <stdlib.h> /* 'ener!l tilities */

int m!in()  pid_t pid;

  pidfork();

  if(pid+)  printf(,hild process- i! tri pidd0n,-pid);  else   3!it(455);  printf(,"!rent "roces- i! tri pidd0n,-pid);  2  e1it(+);

2

 Hinh 2: Output của nhánh con xuất ra trước

7/26/2019 DOWNLOAD PREMIUM SCRUBS

http://slidepdf.com/reader/full/download-premium-scrubs 11/23

2 Kh i t o ti n trình t ch ng trình có s nở ạ ế ừ ươ ẵ

?à- or7 gi) t9o -3t tiến trình -ới tG tiến trình hiện t9i# tu" nhiên# nếu

chng ta -u'n ch9" -3t ch48ng trình đU c; smn thì chng ta cn thực hiện -3tl2i g6i hệ th'ng. ?à- %cl sẽ tha" thế tiến trình hiện t9i !Fi tiến trình -ớiđ45c g6i tG -3t ch48ng trình. [í *ụ\

#include<stdlib.h>#include<unistd.h>int m!in()

e1ecl(,/usr/bin/edit,- ,edit,- ,foo.c6- 455);e1it(7);

2

 Nếu chng ta -u'n -F t9o -3t il với tên là oo.c# đVng ngha với việc

ta gK lệnh g*it oo.c trong tr-inal# ta c; th$ tru"ền các tha- s' cho hà- %clnh4 %cl,pusrp!inpg*it# g*it# oo.c# NP__/

:rong l+) trình ta c; th$ 7ết h5) lệnh or7 và lệnh %cl đ$ tiến trình vGatiế) tục ch9" và vGa t9o thê- tiến trình -ới tG việc -F thê- ch48ng trình 7hác.Hu tiên# ta *(ng lệnh or7 đ$ t9o -3t tiến trình con -ới. Sau đ;# trong tiếntrình con ta *(ng hà- %cl đ$ 7hFi t9o tiến trình -ới.

7/26/2019 DOWNLOAD PREMIUM SCRUBS

http://slidepdf.com/reader/full/download-premium-scrubs 12/23

Ti u trìnhể

:i$u trình trong linu% đ45c sZ *ụng thIng qua g;i th4 viện chun )thra*s.

&hng ta cn thê- c2 L)thra* 7hi !iên *=ch ch48ng trình đ$ c; th$ !iên *=chch48ng trình c; sZ *ụng ti$u trình. [ì *ụ# nếu ta -u'n !iên *=ch il c; tên làthra*)rog.c ta sZ *ụng lệnh nh4 sau\

gcc <)thra* <o thra*)rog thra*)rog.c Ngoài ra# 7hi l+) trình chng ta cn 7hai !áo th4 viện )thra*s vào !0ng

cách thê- )thra*.h vào ha*r.

7/26/2019 DOWNLOAD PREMIUM SCRUBS

http://slidepdf.com/reader/full/download-premium-scrubs 13/23

1 Kh i t o ti u trìnhở ạ ể

M3t ti$u trình đ45c t9o ra !0ng cách g6i hà- )thra*crat. ?à-

 )thra*crat đ45c đ=nh ngha đ" đ nh4 sau\int pthre!d_cre!te(pthre!d_t *thre!d- const pthre!d_!ttr_t *!ttr- void

*(*st!rt_routine)(void *)- void *!r);

Athra*crat tr1 về -3t s' intgr# nếu ti$u trình t9o thành cIng

sẽ tr1 về # ng45c l9i là s' 7hác .

H'i s' đu tiên tr tới -3t 7i$u c>u trc c; tên )thra*t. &>u trc

nà" gi các thIng tin hu ích về -3t ti$u trình ,thra*/. [ì thế# -Wi7hi t9o -ới -3t ti$u trình# ta cn c>) )hát !3 nhớ đ$ l4u tr thIng

tin nà".

H'i s' thX hai là -3t con tr tới c>u trc )thra*attrt. &>u trc

nà" chXa các thu3c tính ca ti$u trình nh4 s' l45ng !3 nhớ cn c>)

 )hát cho stac7 ca ti$u trình. MRc đ=nh !3 nhớ cn thiết là w@^.

 Nếu s' l45ng ti$u trình quá nhiều c; th$ gb" ra tràn !3 nhớ. [ì thếta c; th$ c>) )hát !3 nhớ cho stac7 nh h8n.

#define S8955_S$9: 77+= //7=: for st!ckpthre!d_!ttr_t thre!d_!ttr;pthre!d_!ttr_init(?thre!d_!ttr);pthre!d_!ttr_setst!cksi@e(?thre!d_!ttr- S8955_S$9:);

_4u e# ta c; th$ sZ *ụng l9i c>u trc thu3c tính nà" cho các ti$u trình

7hác nhau.H'i s' thX ] là con tr hà- chf tới hà- -à ti$u trình sẽ thực thi.

H'i s' cu'i c(ng là đ'i s' đ45c tru"ền cho hà- sẽ thực thi đ45c

7hai !áo F đ'i s' thX ].

7/26/2019 DOWNLOAD PREMIUM SCRUBS

http://slidepdf.com/reader/full/download-premium-scrubs 14/23

2 Ví d v ti u trìnhụ ề ề

C4ới đb" là -3t ví *ụ về sZ *ụng )thra*crat. &ác *xng lệnh *4ới sẽ t9o

-3t ti$u trình thực thi hà- n#include<stdio.h>#include<stdlib.h>#include<pthre!d.h>

#define S8955_S$9: 77+= //7=: for st!ck

pthre!d_!ttr_t thre!d_!ttr;void* fn(void* !r);int m!in(int !rc- ch!r** !rv)

pthre!d_!ttr_init(?thre!d_!ttr);pthre!d_!ttr_setst!cksi@e(?thre!d_!ttr- S8955_S$9:);pthre!d_t th;pthre!d_cre!te(?th- ?thre!d_!ttr- fn- (void*)7A);void* v!l;thre!d_Boin(th- ?v!l);return +;

2void* fn(void* !r)

printf(,!r +110n,- (int)!r);return 455;

2

?à- )thra*yoin là- cho hà- -ain đ5i cho đến 7hi ti$u trình 7ết thc.

7/26/2019 DOWNLOAD PREMIUM SCRUBS

http://slidepdf.com/reader/full/download-premium-scrubs 15/23

T ng k tổ ế

ài thực hành nà" đU h4ớng *zn sinh viên tì- hi$u về tiến trình trong linu%.

{ua đ;# gi) sinh viên nJ- đ45c cách thXc c8 !1n trong l+) trình nh4 7hFi t9otiến trình# ti$u trình# !Jt sự 7iện trong l+) trình#...

7/26/2019 DOWNLOAD PREMIUM SCRUBS

http://slidepdf.com/reader/full/download-premium-scrubs 16/23

III. Bài t ! d ngậ ụ

@. [ẽ cb" -'i quan hệ ca *anh sách các tiến trình trong hình !ên *4ới. :9i

-Wi nhánh# ghi ch tên và ABC ca tiến trình ,nhớ r0ng init luIn luIn c;ABC là @/

. Sinh viên viết -3t ch48ng trình c; chXa các han*lr ca các sự 7iệnSB`?PA# SB`:dOM# SB`BN:. H'i với -Wi han*lr in ra *xng ch cho

 !iết ch48ng trình đU !Jt đ45c tín hiệu thành cIng.

7/26/2019 DOWNLOAD PREMIUM SCRUBS

http://slidepdf.com/reader/full/download-premium-scrubs 17/23

#include <stdio.h>#include <sin!l.h>

int loop 7;

void on_siint()

printf(,0n***S%'%4$Csin!l 9'D$0n,);loop +;

2

void on_siterm()

printf(,0n***S%'$EF8Csin!l 9'D$0n,);loop +;

2

void on_sihup()

printf(,0n***S%'D"Csin!l 9'D$0n,);

loop +;2

int m!in()

sin!l(S%'%4$- on_siint);sin!l(S%'$EF8- on_siterm);sin!l(S%'D"- on_sihup);3hile (loop) 2;

2

Hinh 3: bắt tín hệu SIGINT (nhấn tổ hợp phím CTRL+C)

7/26/2019 DOWNLOAD PREMIUM SCRUBS

http://slidepdf.com/reader/full/download-premium-scrubs 18/23

 Hinh 4: !t tín h"#u $%&'()* 

 Hinh +: !t tín h"#u $%&H,- 

]. &ho ch48ng trình sau\

#include<stdio.h>#include<stdlib.h>#include<sys/types.h>#include<unistd.h>

int m!in()

pid_t pid;

7/26/2019 DOWNLOAD PREMIUM SCRUBS

http://slidepdf.com/reader/full/download-premium-scrubs 19/23

int num_coconuts 7;pid fork();

if(pid +) num_coconuts A=;e1it(+);

2 else 3!it(455); /*3!it until the child termin!tes */ 2

2

printf(,% see d coconutsG0n,- num_coconuts);e1it(+);

2

&h48ng trình sẽ in gì ra -àn hình| `i1i thích t9i sao.&h48ng trình sẽ in ra }B s @~ coconuts•.

`i1i thích\ Co -Wi tiến trình sZ *ụng stac7 và ha) riêng# nên !iến nu./coconut0 F -Wi tiến trình là 7hác nhau# *zn tới nu.coconut0 trong tiến trình

cha 7hIng tha" đ€i *( cho nu.coconut0 trong tiến trình con != tha" đ€i.. [iết ch48ng trình là- các cIng việc sau tho thX tự\

a. Bn ra *xng ch }:huc hanh h *iu hanh !. MF ch48ng trình g*itc. H5i ng42i *(ng nh>n &:O_L& đ$ tJt.*. ^hi ng42i *(ng nh>n &:O_L&# in *xng ch }an *a nhan &:O_L

&.

7/26/2019 DOWNLOAD PREMIUM SCRUBS

http://slidepdf.com/reader/full/download-premium-scrubs 20/23

#include<stdio.h>#include<stdlib.h>#include<sin!l.h>#include<unistd.h>

int loop;

void on_siint()

printf(,0nH!n d! nh!n $F5C0n,);loop +;

2

void sin()

sin!l(S%'%4$- on_siint);3hile (loop)2;

2

int m!in()

loop 7;int pid fork();if (pid > 7)

printf(,$huc h!nh he dieu h!nh0n,);e1ecl(,/usr/bin/edit,- ,edit,- ,e1!mple.c,- (ch!r

*)455);2else

if (pid +) sin();else e1it(7);

2;e1it(+);

2

"êu cu c và *# nếu 7hIng sZ *ụng or7,/ đ$ )hbn ra là- tiến trình -àcho toàn !3 co* vào chf @ nhánh ch48ng trình thì 7hi !>- t€ h5) &:O_‚&#ch48ng trình sẽ chf đ;ng -à 7hIng %u>t }an *a nhan &:O_‚&.

_í *o c; th$ *ự đoán là vì\ 7hi *(ng c(ng lc signal và %cl# %cl sẽ tha"thế tiến trình hiện t9i !Fi tiến trình -ới đ45c g6i tG -3t ch48ng# *zn tới việc7hi ch48ng trình g*it 7ết thc ,sau 7hi nh>n &:O_‚&/ thì tiến trình c; signalcƒng 7ết thc luIn -à 7hIng in 7ết qu1 ra -àn hình.

w. Sinh viên ! hà- )thra*yoin trong ví *ụ -ục @... Sau đ; !iên *=ch vàch9" l9i ch48ng trình. &h48ng trình c; in ra -àn hình gi'ng với tr4ớc đ;7hIng| `i1i thích t9i sao.&h48ng trình lc đu @.. sẽ !áo lWi\

L F *xng c; lệnh thra*yoin# lệnh đng là )thra*yoin

7/26/2019 DOWNLOAD PREMIUM SCRUBS

http://slidepdf.com/reader/full/download-premium-scrubs 21/23

L )rint,arg „ %…%†n# ,int/arg/ != !áo lWi# đ$ in ra s' là 7i$u th+) lục )hbn ,c; % F tr4ớc/ ta *(ng …l%# -à 7i$u …l% là long unsign* int#*o v+" cƒng )h1i sZa 7i$u arg. Cxng lệnh đng là\

 )rint,arg „ %…l%†n# ,long/arg/

&h48ng trình in ra arg„%Sau 7hi ! )thra*yoin\

&h48ng trình 7hIng in ra gì c1.`i1i thích\‡^hi vzn cxn )thra*yoin\ ch48ng trình đ45c )hbn là- luVng# @ luVng

sinh 7hFi t9o hà- -ain ,val/ và @ luVng thực hiện hà- n ,th/. _ệnh )thra*yoin là- cho luVng sinh hà- -ain )h1i ch2 luVng thực hiệnhà- n %ong tr4ớc rVi -ới thực hiện# *o đ; ch48ng trình in ra 7ết qu1.

‡^hi đU %;a )thra*yoin\ ch48ng trình cƒng c; luVng# tu" nhiên lcnà" lệnh )thra*yoin 7hIng cxn# *o đ; sau 7hi hà- -ain đ45c 7hFi t9o

và thực hiện thì ch48ng trình 7ết thc -à ! qua và 7hIng thực hiệnluVng hà- n. Co v+" ch48ng trình %u>t ra -àn hình 7hIng gì c1.

7/26/2019 DOWNLOAD PREMIUM SCRUBS

http://slidepdf.com/reader/full/download-premium-scrubs 22/23

ˆ. Sinh viên tì- hi$u thê- về )thra*crat nh0- !iết cách tru"ền nhiềuđ'i s' cho hà- thực thi ca ti$u trình. ?U" hiện thực ch48ng trình tru"ềnMSS[ và ?6 :ên ca -ình cho ti$u trình và in ra -àn hình. đb"# -u'n tru"ền nhiều đ'i s'# ta *(ng c>u trc struct# đ4a nhiều đ'i s'đ; vào -3t !iến rVi tru"ền con tr ca !iến đ; vào.

#include<stdio.h>#include<stdlib.h>#include<pthre!d.h>#define S8955_S$9: 77+= //7=: for st!ckstruct SI

ch!r* 4!me;ch!r* %;

2;pthre!d_!ttr_t thre!d_!ttr;void* &utp(void* !r);int m!in(int !rc- ch!r** !rv)

struct SI 5;

5.4!me ,5e 9nh 8inh,;5.% ,7AJ=+J==,;pthre!d_!ttr_init(?thre!d_!ttr);pthre!d_!ttr_setst!cksi@e(?thre!d_!ttr- S8955_S$9:);pthre!d_t th;pthre!d_cre!te(?th- ?thre!d_!ttr- &utp- (void*)?5);void* v!l;pthre!d_Boin(th- ?v!l);return +;

2void* &utp(void* !r)

struct SI* :5 (struct SI*) !r;printf(,4!meK s0n,- :5C>4!me);printf(,%K s0n,- :5C>%);

return 455;2

7/26/2019 DOWNLOAD PREMIUM SCRUBS

http://slidepdf.com/reader/full/download-premium-scrubs 23/23