Professional Documents
Culture Documents
NGUYN L HJ DIEU
HNH
Bao cao d an
NGUYN L HJ DIEU
HNH
Sinh vin thc hin Phan Vn Tun
Nguyn Trung Dng
Lp 07T1
Ahm 08A
Cio vin hung dn Mai Vn H
D Giao tip gia cc tin trnh bng dung
ng pipe
D Giao tip gia cc tin trnh bng dung
ng pipe
GII THIJU
TONG QUAN DE TI 1
CO SO L THUYET 2
CI DAT THUAT TON V TRIEN KHAI
3
KET LUAN V HUNG PHT TRIEN
4
TONG QUAN DE TI
1.1 Bi canh d ti
Vic giao tip giua cac tin trinh trn linux co th giup ta
hiu r hon co ch xu ly, va trao di du liu giua cac tin
trinh trong h diu hanh linux.
Trong do vic trao di du liu, giao tip qua duong ng
pipe theo co ch FIFO tuong di d hiu
Quyt dinh chon d tai nay.
TONG QUAN DE TI
1.2 Mc tiu d ti
iu hon v vic giao tip giua cac tin trinh trong h diu
hanh linux dc bit la bng duong ng pipe.
Nghin cuu d tai nay s co th cho ta hiu duoc th nao la
pipe va co ch hoat dng cua no.
TONG QUAN DE TI
1.3 Hung giai quyt
hi giao tip bng pipe nay thi vn d gi s nay sinh ra ( li,
han ch ).
hi mt pipe duoc thit lp giua hai tin trinh, mt tin trinh
s ghi du liu vao pipe con tin trinh kia doc du liu tu pipe.
Tao hai tin trinh cha va con, d hai tin trinh nay giao tip
voi nhau ta phai tao mt duong ng pipe.
TONG QUAN DE TI
1.4 Mi trung p dng
huong trinh m phong s duoc vit bng ngn
ngu su dung trinh bin dich G chay trn nn h
diu hanh linux Unbuntu 10.04 d ap dung.
CO SO L THUYET
2.1Gii thiu v h diu hnh Linux
2.1.1L|ch su ra di h diu hnh Linux
Nm 1991 tai Phn Lan, Linux B. Torvalds luc do la sinh
vin o truong Dai hoc tng hop ensinki d dung mt may
tinh ca nhn co trang bi b xu li 386 d nghin cuu cach lam
vic cua no.
Phin ban du tin cua Linux la 0.01 duoc tung ra vao thang
8/1991.
CO SO L THUYET
2.1.1L|ch su ra di h diu hnh Linux
Ngay nay, Linux hoan toan la mt h diu hanh Unix. No n
dinh va lin tuc phat trin
Linux d co mt khoang thoi gian bi gioi han trong mi truong
cac truong dai hoc, by gio no dang duoc tip nhn o cac hng
cng nghip.
CO SO L THUYET
2.1.2 Cc chc nng cua h diu hnh Linux
Da xu li.
Da nn.
tro truyn thng giao xu li ( Pipes , IP , Sockets ).
Quan li cac thng dip diu khin khac nhau.
thng quan li thit bi du cui tun thu theo tiu chun POSIX.
tro mt dai rng cac thit bi ngoai vi.
BuIIer cache.
thng quan li b nho trang yu cu.
ac thu vin dng va dung chung.
ac h thng Iile co th quan li tt va dng du cac phn hoach Iile
Linux duoc su dung boi Iilesystem lam cac phn hoach co cac dinh dang
khac ( MS-DOS , ISO9660, vv. .. ).
Thit bi cua TP/IP va cac giao thuc mang khac.
CO SO L THUYET
2.1.3 Hn ch cua h diu hnh Linux
in nay h diu hanh Linux vn con rt han ch di voi
nguoi su dung, no vn chua duoc su dung mt cach rng ri.
Mt phn la do co qua it phn mn tuong thich voi no.
CO SO L THUYET
2.2 Tin trnh trong Linux
Tin trinh la mt chuong trinh dang xu ly, so huu mt con
tro lnh, tp cac thanh ghi va cac bin.
D hoan thanh tac vu cua minh, mt tin trinh co th cn dn
mt s tai nguyn nhu PU, b nho chinh, cac tp tin va
thit bi nhp/xut.
CO SO L THUYET
2.2.1 Cc trng thi cua tin trnh
In execution ( thc hin ) Tin trinh dang duoc b xu ly
thuc hin.
#eady ( sn sang ) Tin trinh co th duoc thuc hin nhung
mt tin trinh khac lai dang chay.
$uspended (ch kich hot) Tin trinh cho din ra su kin (
Vi du nhu dang cho nhp hoc xut kt thuc).
ombie (ton ti) Tin trinh d kt thuc thuc hin, nhung
no vn duoc tham chiu trong h thng.
$top (ngng) Tin trinh d bi treo boi mt tin trinh
ngoai.
CO SO L THUYET
2.2.1 Cc trng thi cua tin trnh
So d trng thi cua mt tin trnh.
S to
thnh
Ngng
Sn sng
Dang
thc hin
Treo
Tn ti
Lp l|ch trnh
Nhp / Xut
Kt thc
Nhp / Xut
Kt thc
Tn hiu Tn hiu
CO SO L THUYET
2.2.2 Cu trc tin trnh
Trang thai.
Dinh danh.
ac gia tri cua cac thanh ghi.
M dinh danh nguoi su dung.
Thng tin duoc kernel su dung d thit lp lich biu cua cac
tin trinh (thu tu uu tin, v.v.).
Thng tin v khng gian dia chi cua tin trinh ( cac phn
doan cua m, du liu, ngn xp).
Thng tin v cac nhp / xut duoc tin trinh thuc hin ( cac
m ta v cac Iile mo, thu muc hin hanh .)
Tinh tuong thich thng tin tng kt cac tai nguyn do tin
trinh su dung.
CO SO L THUYET
2.3 Giao tip tin trnh
2.3.1 Tng quan v giao tip gia cc tin trnh
Chia se thng tin h diu hanh cn cung cp mt
mi truong cho phep su truy cp dng thoi dn cac
du liu chung.
Hp tc hon thnh tc v Nhiu tin trinh cung
tham gia thuc hin mt cng vic dy nhanh kha
nng xu ly cng vic trong h thng.
CO SO L THUYET
2.3.2 Cc co ch giao tip tin trnh trong
Linux
- Giao tip bng tin hiu (signals handing).
- Giao tip bng duong ng (pipe).
- Giao tip bng hang doi thng dip (message
queue).
- Giao tip bng su dung vung nho chia se (share
memory).
- Giao tip bng dng b tin hiu semephore.
- Giao tip trao di thng qua socket.
CO SO L THUYET
2.3.3 Cc vn d nay sinh trong giao tip
gia cc tin trnh
Giao tip tuong minh hay tim n
Giao tip theo ch d dng b hay khng dng b
(blocking/ nonblocking)
Giao tip giua cac tin trinh trong h thng tp
trung va h thng phn tan
CO SO L THUYET
2.4 Co ch giao tip bng dung ng
(pipe)
2.4.1 D|nh nghia
ac pipe (ng dn) tao thanh phuong tin truyn thng
giua nhung tin trinh.
Nguyn tc du liu d ghi tai mt du va duoc doc o du
bn kia.
Truyn thng gia hai tin trnh bng pipe.
Tin trnh A Tin trnh B
ng dn truyn thng
CO SO L THUYET
2.4.2 Dung ng pipe giao tip trao di d liu
mt chiu
am pipe() dung d tao duong ng co kha nng doc/ghi.
#include unistd.h~
int pipe(int Iiledes|2|)
Phn tu thu nht cua mang duoc dung d doc, trong khi phn
tu thu hai cua mang duoc dung d ghi.
CO SO L THUYET
2.4.3 Dung ng pipe giao tip trao di d liu
hai chiu
Tuong duong voi vic su dung 2 duong ng 1 chiu.
a 2 tin trinh cha va con du co th doc va ghi du
liu vao duong ng.
Tuy nhin cng rt d gy ra tinh trang tc nghn.
CO SO L THUYET
2.4.3 Dung ng pipe giao tip trao di d
liu hai chiu
am read() doc du liu tu pipe.
- o ch nu duong ng rng ham s khoa trong trang
thai cho (block) cho dn khi du liu duoc d vao duong
ng hay khi duong ng bi dong lai boi phia bn ghi.
am rite() Dung d ghi du liu vao trong duong
ng
CO SO L THUYET
2.4.4 Pipe d}t tn
Nu hai tin trinh khng co quan h gi voi nhau thi vn co
th su dung duoc co ch pipe d giao tip voi nhau.
Linux cho phep ta tao ra cac duong ng dt tn. Nhung
duong ng mang tn s nhin thy va truy xut duoc boi cac
tin trinh khac nhau.
CO SO L THUYET
2.4.4 Pipe d}t tn
Tao pipe dt tn voi ham mkIiIo()
include <sys/types.h>
include <sys/stat.h>
mkIiIo(const char *Iilename, modet mode);
Iilename la tn cua duong ng cn tao
mode la ch d doc ghi cua duong ng.