Professional Documents
Culture Documents
Bai Giang Kien Truc Unixlinux
Bai Giang Kien Truc Unixlinux
Bai Giang Kien Truc Unixlinux
___________________________________________________________________________
Hnh trn cho ta mt phn gi l kernel, hay nhn ca HH, kernel h tr HH thc hin chc nng qun l cc thnh phn sau y: 1.Thit b (devices), cho mt giao tip cc chng trnh ngi dng ni chuyn vi thit b; 2.B nh (memory), cp b nh cho cc chng trnh (tin trnh) ang chy; 3.Cc Tin trnh (process), to, gim st hot ng ca cc tin trnh; 4.Lin lc (communication) gia cc TT. Ngun ti nguyn my tnh c nhiu, nh (CPU(s), b nh, cc thit b ngoi vi ghp ni vo my tnh) to thnh mt h thng rt phc tp. Vit cc chng trnh theo di tt c cc thnh phn, khai thc chng chnh xc v chng chy c lp mt cch ti u, l vic rt kh. V nu iu ny li cho tng ngi dng quan tm, th s c v s cc 2 ________________________________________________________________________ Hunh Thc Cc, Vin CNTT, VKHCN VN, H ni
___________________________________________________________________________ chng trnh c vit v nu h l loi nhiu ngi dng th, hy th tng tng Nh vy r rng cn tch ngi dng ra khi s phc tp ca phn cng. Cch c th m bo l t phn mm (hay lp phn mm) ln trn nh ca phn cng v n qun l tt c cc phn ca my tnh, trong khi trao cho ngi dng mt giao din (interface) hay mt my tnh o (virtual machine) d hiu hn v d lp trnh ng dng hn. Lp phn mm gi l HH. T y xut hin mt quan nim mi, l s phn bit ch chy my, n bao gm: HH chy trong mt mi trng c bit, gi l ch nhn (kernel mode hay supervisor mode). Ch ny c h tr bi kin trc ca CPU ( bi cc lnh my c bit) v n ngn ngi dng truy nhp vo phn cng (qun l phn cng chun xc cho nhiu ngi dng ng thi, cn gi l ch c bo v (protected mode)). Thut ng kernel cp n phn m ct yu nht ca cc chng trnh h thng, n kim sot cc tp, khi ng v cho chy cc chng trnh ng dng ng thi, phn chia thi gian s dng CPU cho cc chng trnh, cp b nh cng nh cc ti nguyn khc cho cc chng trnh ca ngi dng. Bn thn kernel khng lm g nhiu nhng cung cp cc cng c nguyn thu (primitive functions) m cc tin ch khc, cc dch v khc ca HH c xy dng. Do cc chng trnh h thng, cc trnh ng dng s dng cc dch v ca HH, chy trong user mode. Tuy nhin c s khc bit l cc trnh ng dng th tn dng nhng tin ch h thng cho, cn cc trnh h thng l cn thit my tnh chy c. Cc trnh ng dng chy trong ch ngi dng (user mode), cc primitive functions chy trong kernel . Vic kt ni gia hai ch chy trnh c thc hin bi gi h thng (system call). Gi h thng (hay gi cc dch v ca h thng, GHT), l mt giao din lp trnh gia HH v ng dng. N c thc hin bng cch t cc thng s vo nhng ch c nh ngha r rng (vo cc thanh ghi ca CPU hay t vo stack) v sau thc hin mt lnh by t bit (trap intruction) ca CPU. Lnh ny chuyn ch chy my t user mode vo kernel mode v t iu khin chuyn cho HH (1). Tip theo HH kim tra s hiu v cc thng s ca GHT xc nh GHT no s thc hin (2). T trong bng vi ch s (s hiu ca GHT), HH ly ra con tr tr n qui trnh (procedure) thc hin GHT (3). Khi thc hin xong GHT, iu khin chuyn tr li cho chng trnh ca ngi dng.
T y c th thy cu trc c bn ca GHT nh sau: 1. Mt chng trnh chnh kch hot dch v h thng bng mt GHT. 3 ________________________________________________________________________ Hunh Thc Cc, Vin CNTT, VKHCN VN, H ni
___________________________________________________________________________ 2. 3. 4. By (TRAP) chuyn GHT vo nhn HH, nhn xc nh s hiu ca dch v. Thc hin dch v. Kt thc dch v v tr v ni pht sinh GHT.
Hnh sau cho cc bc theo trnh t t lp trnh n thc thi GHT read():
Khi nhn cch thc thi mt chng trnh, phn m chng trnh ngi dng c kt hp vi m ca kernel (khi thc hin cc primitive functions qua GHT), to ra ton b m chng trnh. Ni cch khc vo thi im chy trnh, phn m ca kernel thc hin bi GHT l m ca chng trnh ngi dng, ch khc ch thc hin. 2. Trn c s nh ngha kernel mode v user mode, kin trc ca cc HH c th khc nhau: a. Loi n th (monolitic OS):
___________________________________________________________________________
HH kiu n th (monolitic OS) Cc trnh ng dng chy user mode khi thc hin gi mt dch v ca H thng, HH s chuyn vic thc hin dch v vo kernel mode. Khi dch v hon tt HH chuyn vic thc hin chng trnh pht sinh gi dch v tr li user mode, chng trnh ny tip tc chy. PC DOS l mt v d. c im chung ca loi ny l kernel l mt thc th n, mt chng trnh rt ln, m cc thnh phn chc nng truy nhp ti tt c cc cu trc d liu v th tc ca h thng. b. M hnh Client/Server: Chia OS ra thnh nhiu tin trnh (TT), mi TT cung cp mt tp cc dch v ( v d cc dch v b nh, dch v to TT, dch v lp biu ). Cc phn mm dch v (server) chy trong user mode thc hin vng lp tip nhn yu cu cc dch v ca n t cc client. Client c th l thnh phn khc ca HH, hay l mt ng dng, yu cu phc v bng cch gi mt thng ip (message) ti server. Kernel ca HH, l phn rt nh gn (microkernel) chy trong kernel mode pht cc thng ip ti server, server thc hin yu cu, kernel tr li kt qu cho client. Server chy cc TT trong user mode tch bit, nn nu c s c (fail) th ton b h thng khng h b nh hng. Vi nhiu CPU, hay nhiu my kt hp, cc dch v chy trn cc CPU, my khc nhau, thch hp cho cc tnh ton phn tn.
___________________________________________________________________________
c. Loi cu trc theo lp (layered OS): HH c chia thnh cc lp xp chng ln nhau. Phn lp l cu trc c sp xp theo hai hng ln-xung (nhn ti mt lp bt k), sao cho mi lp thnh mt n th vi chc nng cung cp cc dch v cho lp trn lin k, v s dng tan b dch v ca lp di lin k, vi nguyn tc lp trn yu cu v nhn kt qu, lp di thc hin v trao kt qu cho lp trn. Vi cch xc nh tng minh nh vy s trnh c s trng lp chc nng cng nh chng cho quan h (v d m hnh n th ni trn) gia cc n th. Kiu cu trc ny mang li cc u im sau: - Nu chun ha c cc dch v mi lp, v chun nh dng d liu vo/ra th cc phn mm thc hin n th s tr nn ph qut, d dng chung cho cc h thng c cu trc tng t. Chng trnh ngun d dng bin dch li v chy cc phn cng khc nhau. l tnh portable. - n gin ha qu trnh ci tin hay nng cp h thng bng vic thay i, nng cp cc n th cc th, m khng phi ch i cho n khi han tt ton b h thng. Chnh nh vy m tng c hiu nng hat ng, tnh n nh ca h thng. - H tr tt cho nhu cu trao i d liu gia cc h thng khc nhau khi c s chun ha v giao din (interface), v giao thc (protocol). chnh l tnh m ca h thng. Cc HH kiu UNIX (VAX/VMS hay Multics (tin thn ca UNIX), ) thuc loi ny. Hy quan st m t in hnh ca cu trc phn lp theo hnh sau:
___________________________________________________________________________
Trn m hnh ny, lp 1, 2 gn vi tng loi kin trc my tnh (hardware), trong lp 1 c gng du i cc kin trc phn cng c th, to ra mt lp phn cng tru tng (Hardware Abstract Layer). Lp 2 l cc thao tc (handling) c bn p dng trn cc phn cng bn di (bao gm x l ngt, chuyn bi cnh thc hin ca cc tin trnh, qun l b nh). Lp 3 thc thi phn phi thi gian chy my (scheduling), ng b tin trnh v lung. Lp 4 l cc c t thit b c trn my dng tng qut, khng ph thuc vo loi thit b c th, v d UNIX ti gm cc tp thit b ti th mc /dev. Lp 5 v 6 l cch t chc ti nguyn m kernel s thc hin cc bin php qun l (t chc chc tp (File System, Virtual File System), b nh o). Lp 7 l giao din ca HH vi trnh ng dng. C th thy, lp 3 n 7 l cc lp tng qut, khng ph thuc vo phn cng. Nh vy m thc thi c th trin khai trn bt k loi kin trc my no. M hnh di cho thy mt v d ca tng trn:
Unix l mt v d in hnh vi cc c im nh sau: 7 ________________________________________________________________________ Hunh Thc Cc, Vin CNTT, VKHCN VN, H ni
___________________________________________________________________________ 1. H c vit bng ngn ng bc cao, lm cho d c, d hiu, d thay i v chy trn cc nn phn cng khc nhau. 2. C giao din ngi dng n gin, mang li sc mnh cung cp cc dch v ngi dng yu cu. 3. Cung cp cc hm c bn (primitive) pht trin cc chng trnh phc tp t cc chng trnh n gin. 4. S dng h thng tp c cu trc, d dng, d bo tr v hiu qu. 5. Tp c t chc theo kiu dng cc byte, nht qun, d to cc ng dng. 6. Giao tip cc thit b ngoi vi n gin, nht qun v n nh. 7. L h nhiu ngi dng, nhiu tin trnh, mi ngi dng c th chy nhiu tin trnh ng thi. H cn l h a x l. 8. Ngi pht trin ng dng khng cn bit ti cu trc my tnh, do ng dng vit ra c th chy trn nhiu phn cng khc nhau. n gin, nht qun, l t tng ch o ca Unix.
II. Unix/Linux
Chng I. Tng quan h thng Unix
1. Cu trc h thng
Cu trc ca Unix Unix c th xem nh mt loi kim t thp vi cc lp chc nng xp chng ln nhau v to ra cc giao din. Phn cng (hardware) s cp sau. H iu Hnh (HH, hay Operating System-OS) tng tc trc tip vi phn cng, cung cp cc dch v c bn cho cc chng trnh v ngn cch cc chng trnh vi phn cng c th. Nu nhn h thng nh t cc lp, th OS thng thng c gi l nhn h thng (System Kernel), n c cch li vi chng trnh ca ngi dng. Bi v cc chng trnh ng dng ni chung, k c OS, c lp vi phn cng, nn d dng chy trn cc phn cng khc nhau v khng ph thuc vo 8 ________________________________________________________________________ Hunh Thc Cc, Vin CNTT, VKHCN VN, H ni
___________________________________________________________________________ phn cng c th. Chng hn Shell v cc editors (vi, ed) lp ngoi tng tc vi kernel bng cch pht sinh ra Gi H Thng (GHT) system calls. GHT s ch th cho kernel lm nhng vic khc nhau m chng trnh gi yu cu, thc hin trao i d liu (data) gia kernel v chng trnh . Mt vi chng trnh c tn trong hnh l cc chng trnh chun trong cu hnh ca h thng v c bit tn di dng cc lnh commands. Lp ny cng c th bao hm c cc chng trnh ca ngi dng vi tn l a.out, mt loi tn chun cho cc tp chy c do b dch C to ra. Cn c loi ng dng khc (APPS) c xy dng trn lp trn cng ca cc chng trnh c mc thp hn hin din lp ngoi cng ca m hnh. Mc d m hnh m t hai cp cc APPS, nhng ngi dng c th m rng ra cc cp thch hp. Rt nhiu cc h thng ng dng, cc chng trnh, cho cch nhn mc cao, song tt c u dng cc dch v cp thp c cung cp bi kernel qua GHT. Trong System V chun c 64 GHT, trong c 32 GHT l thng dng nht (LINUX 2.x c nhiu hn v khon chng 164 lnh GHT).
Tp hp cc System calls v cc thut ton bn trong to thnh thn (body) ca kernel, do vy vic nghin cu Unix trong sch ny s gin lc nghin cu chi tit cc system calls cng nh s tng tc gia chng. V khi nim Unix system, hay kernel hay system trong sch u c ni ti kernel ca h iu hnh Unix v r rng hn tng bi cnh trnh by.
___________________________________________________________________________ Kh nng bo v d liu ca tp (bi cc kiu thuc tnh nh quyn truy nhp); X l cc thit b ngoi vi nh x l cc tp (cch nhn thit b bi m t kiu tp).
FS c t chc nh mt cy bt u t mt nt n gi l root, c biu din nh sau: / ; t s c cc th mc khc to thnh nhnh ca cy, trong cc nhnh c th c cc nhnh (con) khc. Di cc nhnh s l tp. Tp c th l tp bnh thng (regural files) hay cng c th l tp c bit (special files). Tp c truy nhp qua ng dn (path name) m t cch thc nh v c tp trong FS. ng dn y , hay ng dn tuyt i, bt u bi du / v n xc nh s tm tp bng cch i t root qua cu trc cy th mc theo cc nhnh ch th trong ng dn. V d trong hnh ta c: /usr/src/cmd/date.c l ng dn tuyt i ti tp date.c. ng dn khng bt u t root gi l ng dn tng i, ch ti th mc hin ti ca tp. Cc chng trnh trong Unix khng c hiu bit g v nh dng (format) bn trong ca d liu ca tp. Kernel lu d liu ca tp, x l d liu tp nh mt dng cc bytes (byte stream) khng c nh dng. Do vy c php truy nhp d liu trong tp c nh ngha bi h thng v nht qun nh nhau cho tt c cc chng trnh, nhng ng ngha ca d liu th chng trnh ng dng phi x l. V d: Chng trnh troff x l vn bn c nh dng hoi vng s tm thy cc k t dng mi ( new line ) cui mi dng vn bn, cn chng trnh k ton acctcom hoi vng tm thy nhng bn ghi c di c nh. C hai chng trnh dng cng cc dch v h thng truy nhp d liu trong tp theo cch byte stream, nhng bn trong mi chng trnh li dng cch phn tch c php khc nhau thch hp cho n. Nu mt chng trnh pht hin thy nh dng l khng ng, th bn thn chng trnh s thc hin mt hnh vi khc x l (ch khng phi h thng lm iu ). Th mc cng l mt loi tp, h thng x l d liu trong th mc cng bng byte stream, nhng d liu y cha tn cc tp trong th mc c khun dng d on c, sao cho OS v cc chng trnh, v d ls, c th nhn ra cc tp trong th mc. Vic truy nhp tp c kim sot bi quyn truy nhp (access permission) kt hp vi tp. Quyn truy nhp c lp ra mt cch c lp kim sot truy nhp c (read), ghi (write), v thc hin (execute) cho ba lp ngi s dng: ngi s hu tp (u - user), nhm ngi c truy nhp (g - group), nhng ngi khc (o - other). Ngi dng c th to tp nu h c php v cc tp mi to s l cc nhnh l ca cu trc th mc h thng. 10 ________________________________________________________________________ Hunh Thc Cc, Vin CNTT, VKHCN VN, H ni
___________________________________________________________________________ i vi ngi dng, Unix x l cc thit b nh th l cc tp. Cc thit b c m t bi cc tp thit b c bit v nm mt nhnh trong cu trc h thng th mc (/dev). Cc chng trnh truy nhp cc thit b bng c php ging nh dng truy nhp tp bnh thng, cc thit b cng c bo v cng phng thc nh cc tp, qua vic n nh quyn truy nhp. Bi v tn cc thit b cng ging nh tn cc tp bnh thng v cc thao tc trn chng l nh nhau, nn hu ht cc chng trnh u khng bit ti kiu tp bn trong ca tp m chng thao tc.
2.2
Mi trng x l
Mt chng trnh - program l mt tp thc thi v mt tin trnh (TT procces) l mt khonh khc (instance) ca chng trnh c thc hin theo trc thi gian. TT bao gm: m trnh thc thi, d liu (data) ca TT, program (user) stack, CPU program counter, kernel stack, CPU registers v thng tin khc cn thit chy trnh. Cc d liu ny to ra bi cnh (context) ca TT, mi TT c bi cnh ring bit. C rt nhiu TT c thc hin ng thi trn Unix (c tnh ny cn gi l a trnh - multiprogramming hay a nhim - multitasking) theo nguyn l phn chia thi gian (time sharing), m tng s cc TT v logic l khng c gii hn. C nhiu GHT cho php cc TT to ra cc TT mi, kt thc cc TT, ng b cc giai on thc hin TT, kim sot phn ng vi cc s kin khc nhau. Cc TT s dng GHT c lp vi nhau. V d chy a trnh vi 4 chng trnh A, B, C, D trn mt CPU:
Hy xt v d sau: main (argc, argv) int argc; char *argv[]; { /* gi nh c 2 i u vo*/ 11 ________________________________________________________________________ Hunh Thc Cc, Vin CNTT, VKHCN VN, H ni
___________________________________________________________________________ if (fork () == 0) execl (copy, copy, argv[1], argv[2], 0); wait((int *) 0); printf (copy done\n); } Chng trnh trn dng GHT fork() to ra mt TT mi. TT mi gi l TT con s nhn c gi tr tr li l 0 t lnh fork v n kch hot execl chy trnh copy. Lnh execl s ph ln khng gian a ch ca TT con bng m ca trnh copy, vi gi nh trnh copy nm cng trong th mc hin hnh ca main, v chy trnh copy vi cc thng s do ngi dng a vo. Nu execl hon tt n s khng tr v a ch xut pht trong main v n chy trong mt min a ch mi khc. Trong khi TT b kch hot fork() li nhn c gi tr tr li khc 0 t GHT wait(), n treo vic thc hin i cho n khi copy kt thc v in ra thng bo copy done v sau kt thc thc hin main bng exit (exit() l ngm nh khi kt thc main trong C). Mt cch tng qut, GHT cho php ngi dng vit cc chng trnh thc hin cc thao tc rt tinh t m bn thn kernel khng cn c nhiu chc nng hn l cn thit. C th cp ti mt s cc chc nng, chng hn cc b dch (compilers), b son tho (editors) thuc lp cc chng trnh cp ngi dng (user level) v quan trng hng u l shell, l trnh thng dch m ngi dng s dng ngay sau khi log in vo h thng: shell thng dch cc t trong dng lnh thnh tn lnh my, pht sinh TT con v TT con thc hin lnh a vo, x l cc t cn li trong dng lnh nh cc thng s ca lnh. Shell thc hin ba kiu lnh: 1. Lnh l tp c th thc hin c cha m my pht sinh do b dch to ra t m ngun (chng trnh C chng hn); 2. Lnh l tp cha mt xu cc dng lnh ca shell; 3. L cc lnh bn trong ca shell. Cc lnh bn trong ny lm cho shell tr thnh mt ngn ng lp trnh rt mnh trong Unix. Shell l chng trnh thuc lp ngi dng, khng phi l phn ca kernel, cho nn c th d dng bin ci cho mi mi trng c th. Bn thn shell cng c ba loi khc nhau thch hp cho cc nhu cu s dng khc nhau v h thng c th chy cc shell ng thi. Sc mnh ca mi kiu shell th hin kh nng lp trnh ca mi kiu. Mi TT c thc hin trong Unix c mt mi trng (execution environment) thc hin, bao gm c th mc hin hnh. Th mc hin hnh ca TT l th mc dng ch ng dn khng bt u bng /. Ngi dng c th thc hin nhiu TT cng mt lc, v cc TT li c th to ra cc TT khc mt cch ng, v ng b vic thc hin cc TT . c tnh ny to ra mt mi trng thc hin chng trnh rt mnh trong Unix. 2.3 Xy dng cc hm chc nng c bn (primitives) Nh cp, tnh trit l ca Unix l cung cp cho OS cc nguyn hm (primitives) m ngi dng s s dng vit cc chng trnh (chc nng) nh, c tnh modul, c dng nh cc khi xy dng to ra cc chng trnh ln v phc tp. Mt trong cc primitive l kh nng ti nh tuyn vo/ra (redirect I/O). Tip theo l pipe, mt c ch linh hot cho php truyn d liu gia cc TT, hay lnh ngay t bn phm. V d, khi dng cc chng 12 ________________________________________________________________________ Hunh Thc Cc, Vin CNTT, VKHCN VN, H ni
___________________________________________________________________________ trnh nh to cc chng trnh ln v phc tp, ngi lp trnh s dng cc primitives redirect I/O v pipe hp nht cc phn li.
3. Cc dch v ca Unix/Linux