ƯƠ Ả Ệ CH NG 4: QU N LÝ T P TIN
ệ ệ ả (Files Manager) ề 4.0. Quan ni m v qu n lý t p tin
ộ ế Ở ệ ẻ ộ
ặ ư ế ữ ữ ệ ủ ạ ể
ệ ộ ế ạ ư ở ạ ớ i v i cái b n đã có? Tính ch t này c a d li u g i là c
ườ ữ ệ ọ ả ượ ế ạ c khi d li u đ
i ta đ t đ ươ
ế c khi k t thúc ch ả ộ ấ ạ ớ
ả
ợ ữ ệ ệ ố ứ ổ ắ ể ả
vi c b gãy m t ti n trình hay sau khi hoàn thành m t ti n trình, m t câu ỏ ượ ạ h i đ c đ t ra là: B n l u tr d li u c a b n nh th nào, đ sau này, b n ể ố ủ ữ ệ ấ có th làm vi c tr l ị ữ ệ ạ ớ ộ ạ ượ đ nh d li u, ng t vào b nh qu ng đ i c vi ướ ề Ở ộ ấ ẫ tr ng trình. Tuy nhiên, chúng ta v n còn m t v n đ : ườ ệ ầ ớ ư ph n l n b nh qu ng đ i, danh sách các t p tin quá dài, y nh ng ng i ta ể ẫ ớ ườ ố ỉ ậ ờ mu n th i gian truy c p ph i ng n. Do đó, tr ng h p này ch có th d n t i ệ ứ ệ ộ ch c t p tin đ qu n lý các t p d li u trong h th ng máy m t cách th c t tính.
ệ ố
ệ
(Files System)
4.1. H th ng t p tin
ả ầ ể ệ ụ ụ ệ
ả ầ
ị ớ ả ượ ộ ụ ạ ậ ế ấ ả t t ế t m t cái gì đó v ủ ộ t c các t p tin ề ộ ạ ng, v trí c a b nh qu ng đ i,
ộ
ỗ ữ ệ ữ ệ ư ư ế ộ
ậ ệ Đ ph c v vi c qu n lý t p tin, đ u tiên, chúng ta vi ầ ư vào trong m t danh sách và c n l u ý: chúng ta c n ph i bi ệ t p tin, thí d ngày tháng năm t o l p, dung l ậ ậ lu t truy c p… ộ ả ớ ng pháp ti n hành…), mà nó đ
ướ ế ữ ệ ng đ i t
ế ươ ng trình sinh ra hay đ
ữ ệ ầ
ượ ể
ứ ự ố ượ ươ ệ ng d ng. M t cách khái quát, khi không có đ i t
ố ị ụ ư ượ
ơ ở ữ ệ ướ ệ ớ ượ ng đ i t
ẫ d n t ươ ph ố ượ ngân hàng d li u h ả âm thanh và hình nh, mà chúng đ ụ d ng, lúc đó, chúng ta c n dùng m t ngân hàng d li u đa ph (multimedia databank), trong đó, thông tin đ ộ ph ể ữ ữ ệ hành khi l u tr d li u c đ nh đ ề li u l n thì h th ng đi u hành c s d li u h ể ử ụ ng đ ụ ơ ấ ệ
ả ớ ộ
ệ ế
ượ ớ ấ ệ ạ ậ ệ ệ ị
ế ấ M t b ng nh th thì không khác m y m t ngân hàng d li u. N u chúng ta ủ ụ ụ ể ả i m i thu c tính d li u và k c các tác v (nh các th t c, các ộ ượ ượ ử c m t c x lý, do đó, chúng ta nh n đ ố ượ ng. Ngoài ra, n u chúng ta có các đ i t ng ượ ử ộ ượ c m t ch c s ụ ươ ộ ng d ng ộ ồ c ch a đ ng đ làm đ ng b hai ề ng nào thì vi c đi u ố ớ ữ c phát tri n; còn đ i v i các ngân hàng d ể ố ượ ệ ố c phát tri n. ủ ấ ả t c các c c u có trên danh m c các t p tin c a Chúng ta có th s d ng t ả ể ổ ứ ấ ơ ế ạ ộ ch c m t cách hi u qu b nh qu ng đ i, các c ch này đ c tìm th y đ t ấ ữ ệ ể ườ các ngân hang d li u hình cây; v i c u trúc này, ng i ta có th tìm ki m r t ộ ấ ớ nhanh các t p tin v i m t d u hi u xác đ nh (ngày tháng t o l p t p tin, tên tác ả gi …).
ề Tuy nhiên, chúng ta ph i quan tâm t
ữ ệ ả ề ơ ả ữ ệ
ữ ệ ủ ở ạ ỏ ề ả ượ ạ ế ụ ả ộ trong b ng danh m c các d li u. N u tác v
ộ ấ ổ c gi ụ ế ị ẻ ụ ế ế ớ ấ i v n đ , mà chúng liên quan đ n ngân ế ạ ậ ự ố ị hàng d li u. M t v n đ c b n là s c đ nh d li u: N u chúng ta t o l p, ả ớ ộ ệ lo i b hay thay đ i các d li u c a m t t p tin trên b nh qu ng đ i, do đó, ụ ữ ệ ả i thích đi u đó ph i đ ộ ị ẽ t b b gãy (thí d khi này b b gãy, thí d vì m t lý do nào đó, ti n trình vi
ả ệ ụ ữ ệ ở
ọ ườ ộ ơ ấ
ộ ề ụ
ệ ệ
ạ ộ ữ
ế ợ ủ ệ ố ớ ư c th c thi v i t ộ ệ ợ ồ ấ trong b ng danh m c thì không còn thích h p m t ngu n đi n), do đó, d li u ở ụ ế ữ Ở các tác v ti p theo, ng n a. i ta đã làm quen m t c c u quan tr ng ử ạ ộ ệ ụ trong m c 2.3.2, đó là vi c k t h p nhi u tác v thành m t ho t đ ng nhân t . ụ ở ấ ả ữ t c các tác v trên danh Đ phát hi n nh ng sai sót c a h th ng t p tin, t ả ượ ử ự . cách là nh ng ho t đ ng nhân t m c t p tin ph i đ ữ ố ệ ữ ớ
ườ ử ụ ụ ệ ả
ọ ể ồ ạ ố
ố ớ ộ ỉ
ả ệ ệ Ở ả ệ ch c qu n lý t p tin.
ơ ồ ổ ứ ặ ể ộ ộ
ể ứ ệ ệ ể ụ ệ ệ ộ Vi c ký hi u tên t p tin v i m t cái tên có ghép thêm nh ng ch s là m t ự ợ ố ớ s tr giúp quan tr ng đ i v i ng i s d ng. Trong b ng danh m c các t p tin ệ ở ớ i 2 t p tin v i các tên gi ng nhau Teptin1.dat và Teptin2. hình 4.1 có th t n t ữ ố ở dat; chúng ch khác nhau b i m t ch s , do đó, đ i v i vi c qu n lý t p tin, ỉ đây, chúng khác nhau rõ ràng. Hình 4.2 ch ra s đ t ệ ộ ậ ỗ ệ m i t p tin có th đ ng đ c l p (T p tin X), ho c có th thu c m t nhóm các ệ t p tin (T p tin 1, T p tin m…)
Hình 4.2
ộ ỏ Các nhóm nh có th g p l ơ i thành nhóm l n h n tu thu c vào ng
ể ổ ứ ệ ườ ử i s ch c t p tin này thì
ớ ể ử ụ ể ể ộ ạ ỳ ấ ụ d ng, sao cho nó tr thành c u trúc cây đ s d ng. Ki u t ấ r t ph bi n. Các đ i di n nhóm đ
c bi u thì là m t th m c. ư ế ượ ượ ệ ở ạ ứ ể ổ ệ ả ể ổ ứ ộ ch c qu n lý các t p tin nh th đ ư ụ c dùng đ t ổ ế ộ M t ki u t ch c ngân
ấ ả ượ t c các t p tin đ
ệ ệ ị ộ ộ
ả ớ c mô t ồ ạ ở i ệ ố ề ệ ề ữ ệ ế ầ
hàng ữ ệ ấ v i các tính ch t và các d li u, mà trong đó, t ư ụ ể ữ ự ư hi n th n i dung. S l u ý v các t p tin thì t n t trong m t th m c d ơ ồ ơ ệ li u. Trong h u h t các h đi u hành, nh ng h th ng t p tin có s đ đ n ả ượ gi n đ c dùng.
Hình 4.3
ượ M t ki u s đ khác cũng th c dùng, đó là ki u s đ t
ộ ể ể ơ ồ ạ ườ ng đ ụ
ớ ệ Ở ủ ể ơ ồ ổ ứ ệ ch c t p ư ỉ đó ch ra 2 th ệ Thongbao. dot c a công ty, vì t p
ồ ạ ộ tin ki u m ng, hãy xem m t thí d trong hình 4.3 trên đây. m c ụ Ban a và Ban b có th n i ngang v i t p tin ể ố i. tin này luôn luôn t n t
ệ
(Filesname)
4.2. Tên t p tin
ỉ ả ượ ở ệ ề c b o v b n v ng trên b
ả ế ặ D li u c a các ti n trình không ch ph i đ ớ ữ ế
ả ạ ể c bi u th m t t
khoá rõ ràng. Vì cách t ự ả ị ộ ừ ườ ỗ ệ ệ ầ ả ố
ệ ủ ệ
ệ ượ ế ậ ộ ế ỗ ệ ư ể ệ ố
ụ ệ ả ộ ữ ệ ủ ậ ạ t ph i t o kh năng truy c p qua các ti n trình khác nh qu ng đ i, mà đ c bi ổ ứ ệ ch c h nhau, do đó, m i t p tin đ ố ư ệ ậ i th c hi n, cũng gi ng nh vi c l p th ng qu n lý t p tin h u h t do con ng ể ố ỉ ể trình các ti n trình đ truy c p các t p tin, tên c a t p tin có th gi ng nhau, ch ị ộ ư ượ ng tr ng…, khác, m i t p tin có thêm m t con s , coi nh bi u th m t khoá t ộ ộ ả ợ i cho vi c qu n lý n i b thí d Vanban1.doc, Vanban2.doc…Cách làm này có l
ệ ng) m t cách d dàng. T p tin có th đ
ị ặ ạ ộ ể ượ ẫ ễ ộ ệ ở ớ ộ ượ ỗ i m t ch nào đó c thi hành ị tron b nh mà t p tin v n không b thay
ệ các t p tin (v trí, dung l ượ hay đ c đ t t đ i.ổ
ể ệ
ệ
ạ
4.2.1 Ki u t p tin và t o tên t p tin
ồ ộ ầ ệ
ấ ấ ấ
ấ ầ ở ộ ộ ự ợ
ộ ệ
ở ở ộ ề ằ ở ộ ử ụ ể
ẩ ữ ướ ở ộ ộ theo chu n ASCII. Có nh ng quy
ặ ữ ệ ươ ụ ể ạ ộ ạ ng trình t o
ạ ả
ả ồ ủ ồ ủ ữ ữ ặ ệ ạ ươ ng trình vi ươ ng trình vi
ữ t b ng ngôn ng C;
ạ ể ế ằ t b ng ngôn ng PASCAL; ế ằ t b ng ngôn ng C; ế ằ ươ ng trình vi ạ
ộ ệ ệ
ệ ủ ặ ả t c a trang WEB;
ậ ệ ố i;
ạ ề ả ệ ố ượ c M t cách truy n th ng, nói chung tên t p tin g m hai ph n, chúng đ ộ ấ ngăn cách nhau b ng m t d u ch m: phía trái d u ch m là tên riêng, còn bên ầ ả extension). Ph n m r ng này cho th y m t s tr giúp ph i là ph n m r ng ( ệ ụ ủ ệ ề ụ v m c đích s d ng c a t p tin. Thí d tên m t t p tin Vanban.txt, ý nói: t p ạ ệ ượ ấ c c u thành b i các tin Vanban có ki u m r ng txt là m t lo i t p tin text đ ụ ầ ự ký t c khác nhau cho ph n m r ng, thí d ư nh sau: ệ ạ .dat cho d li u ho c vi c t o ki u d ng ph thu c vào ch l p;ậ .doc cho các văn b n text ho c vi c t o d ng theo ki u so n th o text; .pas cho mã ngu n c a ch .c cho mã ngu n c a ch ệ .h các t p tin khai báo cho các ch ồ ữ ệ ệ .ps các t p tin ngôn ng l nh đ ho cho máy in Laser; ữ ư ộ ệ ố .tar m t h th ng t p tin l u tr trong m t t p tin; ệ .html t p tin văn b n ASCII cho h th ng text đ c bi .Z ; .zip; .gz cho các t p tin nén l .jog; .gi; .ti; .bmp cho các t p tin v nh.
ườ ở ộ ứ ự
ề ố ớ ớ ằ ữ
ượ ự
ệ ặ ỉ ộ i ta ghi nh r ng, ph n m r ng c a t p tin ch a đ ng ch m t ít ho c ộ ả ằ i r ng, đ i v i m t c lý gi ặ ở ộ ầ làm ph n m r ng và m c t quá nhi u.
ấ ể ề ở ệ ố c t o b i h th ng ng
ệ
ủ ệ ầ Ng ả ỉ ỉ ự ổ ư ch th nh tho ng nh ng ký t c x a. Đi u đó đ ườ ệ ệ ố ng cho phép vài ký t h th ng t p tin thông th ế ả ườ ử ụ ậ khác, nó thu n ti n cho ng i s d ng không ph i vi ượ ạ ở ộ ầ ề Có r t nhi u ki u ph n m r ng, mà chúng đ ụ ụ ệ ể ượ ử ụ ữ ỳ
ệ ằ ỉ
ụ ượ ề ể c vi
ự ớ ớ i 255 ký t
ở trong Unix ệ ề ệ ầ cho ph n chính và 10 ký t . V i Unix ự
ể ự c a tên t p tin có ít h n 14 ký t ự ố ở ộ ư ệ ầ ở ườ ử i s ệ ụ d ng và chúng cũng ph c v cho vi c phân nhóm các t p tin. Vì tên t p tin nói ổ ườ ậ c s d ng thay đ i, do đó, nh ng ng i l p trình chung là tu ý và có th đ Ở ủ ớ ề i cái đó, nh m làm cho t p tin ch rõ công d ng c a chúng. đ u đã chú ý t ữ ố ả magic number) đ ộ ế ầ ệ đ u t p tin, m t hay nhi u ki u ch s o ( t, mà chúng ủ ộ ệ ộ ặ cho phép m t đ c tính chính xác c a n i dung t p tin. ệ ụ ề Thí d v tên t p tin : ở ệ trong h đi u hành Unix, có th có t Tên t p tin ự ủ version V, s ký t cho ph n m r ng. Các t p tin th c thi ơ ấ trong Unix có c u trúc nh sau:
ố ả TYPE File Header = RECORD a_magic: LONG CARDINAL {s o}
ộ ớ ủ
ộ ớ ữ ệ ủ
ướ x
ữ ệ ộ ớ ủ
ướ x
ộ ớ ả
ươ ư ng trình}
a_txt: CARDINAL {đ l n c a Codesegment} ở a_data: CARDINAL {đ l n Segment c a các d li u kh i ng} ở a_bss: CARDINAL{đ l n Segment c a các d li u không kh i ng} ể a_syms: CARDINAL {đ l n b ng bi u tr ng Symboltable} ự ắ ầ ủ a_entry: CARDINAL {s b t đ u c a ch … END
ộ ố ả
ệ ể ự ươ ỉ ẫ ớ ự ả i s gi i ằ ng pháp
ứ ấ ệ ệ ượ ầ Tuy nhiên, m t s o đ ng đ u tên t p tin; chúng không ch d n t ề ề thích v đi u đó (cho th y t p tin có th th c thi), mà còn, b ng ph ệ nào t p tin đ
ượ ả
ệ
ượ ử ụ
ạ
t c : mã không đ
c b o v cũng không đ
c s d ng cho 1
c th c hi n: a_magic= 407B {t o d ng t
ệ
ả
ượ
c b o v Data Segment đ
c đ t
ặ ở ớ ạ gi
i h n trang
ượ ở
ố
ự ấ ả ạ ế ti n trình khác} a_magic= 410B {TextSegment đ cu i cùng (4kB)
ắ ầ ở ớ ạ
ủ ệ
i h n 4kB c a t p tin; Text và Data
ộ ố ủ
ớ ộ trong b nh } a_magic= 413B {Text Segment b t đ u gi Segment là b i s c a 4kB}
ệ ự ề Đ phân bi
ể ể ự ấ ặ ệ ạ ả t các lo i t p tin khác nhau, đó là s đánh giá v kh năng có ệ t. Sau đây t này thì r t đ c bi
ả ạ ệ ệ ụ ề ể ở ộ th th c thi khi kh i đ ng t p tin. Lo i phân bi ệ ệ chúng ta kh o sát vài thí d v ki u phân bi t t p tin này.
ệ ụ ề ể :
ị ể ể ộ ệ c bi u th nh Thí d v ki u và tên t p tin Trong Unix hay trong Windows NT, ki u cách m t t p tin đ
ệ ả ủ c nén l
ố ớ ệ ể ệ ệ ế ượ
c nén. Đ i v i t p tin này, n u ki u t p tin đ ệ ể ự
ụ ứ ể ườ ở
ể ả ọ
ệ ể ạ ộ ể ợ ờ ượ ộ ệ ụ ộ m t cái tên. Thí d tên t p tin Script.ps.gz có ý nghĩa: đó là m t t p tin nguyên ượ ả ớ ạ ở ạ ấ d ng tái bút (postscript) v i b n (Script), mà n b n c a nó đã đ i ượ ệ ươ ả ọ ườ ầ ể ọ i ta ph i g i ng trình nén zip. Đ đ c đ ch c t p tin này, đ u tiên, ng ế ể ớ ệ ươ ng trình gunzip, và sau đó, t p tin chuy n t ch i cho máy in Postscript. K t ỉ ẫ ứ ỉ ứ ự ả ự ả qu ch d n là s c i biên: nó không ch ch a đ ng trong t p tin, mà còn ch a ượ ể ệ ở ự trong ki u t p tin đ đ ng c ư ụ ỉ ẫ ệ ạ i ta có th th c hi n tác v th hai. Vi c t o ch d n trong th m c, do đó, ng ở ự ế ả ả ượ ắ ể ệ trong t p tin hay nó ph i là ki u b i s x p c c t nghĩa ki u t p tin ph i đ ớ ả ỉ ề ể ề ầ ủ nhi u l n c a các ki u. Đi u đó ch có th nói g n là: ph i gi i thích ki u m i ữ ả ư ậ l p rõ ràng và ph i đ a vào nh ng ho t đ ng thích h p cho các ki u đó.
ụ ề ể ệ ng trình
ệ ề trong Unix ạ ườ ử ụ ạ ộ ộ ở trong h đi u hành Unix có m t giao di n đ ho ng : i s d ng, m t s
ươ Thí d v ki u t p tin và các ho t đ ng ch Ở ệ ả
ứ
ở ộ ỉ ầ ượ ự ề ơ ộ ự ồ ệ ấ ề ệ qu n lý t p tin bao hàm trong giao di n này. Đi u đó cho th y, các t p tin ẽ ẫ ớ ộ ữ ỗ chuyên d ng ng v i m i ph n m r ng s d n t i nh ng tác đ ng khác nhau ộ ư ủ c ch ra nh là m t Menu (th c đ n) khi kích c a ch ệ ụ ớ ươ ng trình, đi u đó đ
ộ ả ạ ộ ệ ượ ở ạ t i tên t p tin, thì ho t đ ng đ ẫ c d n ra
ộ ở ộ chu t ph i. Khi kích đôi chu t trái ẽ ắ ầ trong Menu s b t đ u kh i đ ng.
ở ươ ụ ề ể ệ ng trình Windows NT :
ộ
ạ ữ ệ ả ệ ề
ộ ở ng trình
Thí d v ki u t p tin và ho t đ ng ch D i ướ Windows NT có trình so n th o Editor, trình này qu n lý m t ngân ả ụ t c các ng d ng, b kích t o h đi u hành và các ư trong h th ng cũng nh các ộ ệ ạ i trên m t t p
ng trình đ ệ ố ộ ượ ọ c g i.
ườ ạ ộ ạ ứ ủ ấ ả hàng d li u riêng c a t ươ ấ ả ệ ố ấ c u hình h th ng…T t c các ch ầ ở ề ở ộ đó. Khi kích đôi chu t trái t c khai báo ph n m r ng đ u đ ở ộ ệ ả tin Ng
ượ trong trình qu n lý t p tin thì m t ch ằ ệ ề
ườ ệ ư ng không đ ượ ặ ớ t hay đ
ệ
ể ươ ề ể ệ ụ ừ i ta l u ý r ng, trong hai thí d v a nêu, thông tin v ki u t p tin ặ ệ i trong các t p tin đ c ề t. Đi u ng trình đ c bi ổ ứ ệ ch c ấ ổ
ữ ệ ổ ặ ự ệ ượ th ứ ự ượ c ch a đ ng và đ bi ề ể ố ấ đó thì không có v n đ gì. Ki u t ộ ấ ả ệ t ượ sung c a các t p tin đ
c th c hi n nh các đ c tính b sung ệ ổ ế ệ ủ ộ ấ ệ ề ế ệ M t v n đ khác là vi c làm sáng t
ứ ả
ệ ố ự ệ ắ ạ ể ượ ệ ỉ c phép ng n l
ồ ạ ở
i ượ ư ệ
ự ầ ố ự ầ ủ
ượ ượ ệ ấ ơ ồ ạ ả c h đi u hành qu n lý, mà nó t n t ả ệ ươ c qu n lý v i các ch ả ấ t nh t cho vi c qu n lý các t p tin là t t c t p tin thành m t ngân hàng d li u t ng th ; trong đó, các tính ch t b ờ ở ỏ ự s tham chi u t p tin, n u các t p tin ư ụ trong h th ng qu n lý files thì cho phép tên t p tin dài; nh ng khi ng d ng ụ ệ i. Thí d có hai tên t p tin (khi th c thi), t p tin ch có th đ ệ ệ ố MethodeForUser.txt và MethodeForEvery.txt cùng t n t trong h th ng t p ườ ự ố tin. Khi hai t p tin mu n th c thi, thì 8 ký t ng c l u ý. Trong tr đ u tiên đ ợ ộ ậ ở h p này, 8 ký t đây, m t ươ ph ệ đ u tiên c a hai t p tin gi ng nhau. Do v y, ế ắ c tìm th y cho phép s p x p các t p tin đ c rõ ràng h n. ng pháp đ
ổ ệ :
ệ ố ể ả ả
ở
ệ ố ả ể
ệ ố ạ ượ ổ ệ ố ề ằ c b ng các gi
ể ụ ề ự Thí d v s chuy n đ i tên t p tin trong Windows NT ệ ề ệ Windows NT có th qu n lý c các h th ng t p tin DOS Vì h đi u hành ấ ệ ạ đây v n bên c nh h th ng t p tin NTFS (windows NT File System). Cho nên, ề ặ ệ đ đ t ra là ph i chuy n đ i các t p tin có tên dài trong h th ng NTFS thành ả ệ tên t p tin rõ ràng trong h th ng MSDOS. Đi u này đ t đ i thu t sau đây:
ở ợ ự ủ ấ ả c a tên t p tin không h p lý
ậ (1) ể ệ T t c các ký t ổ
ự ủ ả c a 16 Bit Unicode, các đi m ằ ể ở ầ ở ố đ u, ượ c trong MSDOS đ ự ắ ỏ cu i và trong kho ng tên
ự ầ ấ
ầ ắ ỏ ượ
ự ứ ỗ ủ đ ng tr đ u tiên c a chu i ký t ệ c c t b ; và sau đó, ký hi u ~1 đ ự
ỗ ố ự ấ ả T t c 6 ký t ở ộ ạ i 3 ký t ự ở
ướ ấ c d u ch m phân ướ ượ c thay vào tr c ở ộ ầ ể ạ sau đi m phân đo n ph n m r ng ạ ỗ ắ ỏ cu i ph n này c t b và chu i ký t i còn l ớ ở ộ ầ , các ký t ữ đo n ph n m r ng đ đi m phân đo n ph n m r ng. Chu i ký t ự ầ ch đ l ỗ chuy n thành chu i các ch cái l n.
ự ố ộ ệ ớ ệ ế ỉ ệ ệ ố chuy n đ i thành tên t p tin trong h th ng NTFS b ng cách c t b : các ký t ố tr ng, 16 ký t ệ t p tin. (2) ạ ể ỉ ể ạ ể (3)
ế ệ ượ ệ ỗ N u có m t t p tin, mà nó ch ra s gi ng nhau v i t p tin khác, do ồ c thay vào ch đó. N u t p tin này đã t n
ồ ạ ự ố ệ ế ằ ệ đó, thay vì ký hi u ~1, ký hi u ~2 đ ạ t i, thì thay b ng ký hi u ~3 hay ~4.. cho đ n khi không t n t i s gi ng nhau.
ườ
ẫ
4.2.2. Tên đ
ng d n
ệ ế ể ơ ồ ắ ạ Qua s đ s p x p các t p tin, vi c bi u di n tên t p tin rõ ràng t o ra kh
ế ớ ẫ ng d n đi t
ể ắ ượ ệ ệ
ệ ễ ộ ườ ờ ậ ủ ẫ ng d n c a m t t p tin đ ự ườ ậ c th c hi n thu n ti n. Tên đ m t chu i các tên nút và ch a đ ng ký t
ứ ự ể ườ ự ỗ ặ ệ ệ t, nó là bi u t
ệ ề ẫ ả ộ i m t ượ ạ ộ ệ c t o ữ tách chia gi a các tên nút. Đó là ể ỗ ệ ề ng tiêu bi u cho m i h đi u hành. Thí ườ ệ trong hình 4.3, tên t p tin Vanban1.txt có đ ng d n trong h đi u hành
ệ ạ năng đ s p x p các nút có d ng hình cây, nh v y, m t đ ệ t p tin đ ậ ừ ộ l p t ộ ấ m t d u hi u đ c bi ụ ở d Unix:
ở ạ trong h đi u hành Windows NT có d ng:
ự ế ố ề ề ẫ Institut5/Rudi/Vanban1.txt ệ ể còn Institut5/Rudi/Vanban1.txt V đi u đó, do có s k t n i ngang, nên có nhi u tên đ ộ ng d n cho m t
ụ ố ớ ệ ườ ề ệ t p tin, thí d đ i v i t p tin Briefvorlage.dot có các đ ườ ẫ ng d n:
Institut5/Rudi/briefvorlage.dot và Congty/Dieuhanh/briefvorlage.dot.
ữ ố ọ
ộ ể ệ ố ư trên c a h th ng cây th m c t p tin đ ặ ượ ở ệ
ư ụ ệ ấ t: d u xiên trái(/) ị ượ ệ
ố i lên trên theo h
c g i là g c, nó ấ trong Unix, d u ệ ự c th c hi n ụ ng g c cây th m c t p tin. Thí d trong ườ th m c Hans, tên đ ng ộ th m c Rudi mà c ạ ư ụ ệ ả ở ư ụ ư ụ ướ ở ư ụ ỗ ấ ể ở ủ Nh ng nút ị ở ể ượ c bi u th b i m t bi u tr ng đ c bi đ ở ả trong Windows NT. Khi thông d ch tên t p tin, nó đ xiên ph i (\) ướ ừ ướ ừ c t t ng b d ệ hình 4.3, t p tin Brief.doc ễ ượ ẫ ủ d n c a nó đ ệ c bi u di n m i d u đ i di n cho m t th m c nào đó:
ớ ệ ủ
ệ ../../Rudi/Brief1.doc ẫ ươ Tên đ ườ ệ ố ượ m t v trí nào đó c a cây t ọ g c đ n ng n là tên t p tin. Thí d
ố ắ ầ ừ ộ ị ị ừ ố ế ố ẫ ươ ộ ườ ớ ệ ườ ng d n tuy t đ i đ ỉ ng đ i b t đ u t ể c bi u th t ng d n t i t p tin. ụ ở ng đ i ../Daten/Dat1.a v i t p tin
ủ ng d n t ẫ Tên đ trong hình 4.4 ch ra m t đ ươ ng trình Prog. Dat1.a c a ch
Hình 4.4
ư ụ ở
ụ ề
4.2.3. Thí d v cây th m c
Unix
ụ ơ ồ ộ ệ ố ỉ Trong Unix, s đ m t h th ng t p tin thông d ng đ
ờ ệ c ch ra trong hình ở ấ c u trúc cây này
ể ố ệ ượ ạ ậ ở 4.2, nh đó không gian tên t p tin đ ng
ể ệ
ế ệ ớ ư ụ ượ đĩa hay ch a (?). N u chúng đã đ
ườ ể
ượ ế ượ c t o l p. Ngoài ra ệ ữ ườ i ta có th n i ngang qua gi a các t p tin b i lênh “ln”. ườ ủ ơ ồ ố ớ ặ i ta ph i phân bi Đ i v i đ c đi m c a s đ tên, ng ế ổ c thu x p v i các tên t p tin trên ợ ế ế ượ ạ c l ả ượ ư đ ự ế ộ ự ố x p, do đó, m t s n i ngang tr c ti p là có th . Tr ế ố ứ ậ v t lý hay k t n i c ng. N u ng i, chúng đ t, các th m c đã c thu ế ố ọ ng h p này g i là k t n i ổ c thu x p khác nhau trên
ẫ ườ t đ t m t s n i ngang logic và d n ra tên đ ườ ng i ta có th thi
ộ ự ố ế ặ ọ ng h p này g i là k t n i t
ở ệ ỏ
ư ụ ậ
ư symbollink). ng tr ng ( ệ ở ỗ ch , vi c xoá b tên t p tin ườ ử ụ i s d ng truy c p chúng. ấ trong hình 4.5, chúng ta th y
ư ự ư ụ ệ ể đĩa, do đó, ng ế ố ượ ợ ẫ ủ ườ d n c a chúng. Tr ế ố ở ự trên là các k t n i ngang nói S khác nhau ề ế ề hay th m c khi có nhi u ti n trình hay nhi u ng ớ ệ ố ư ụ ở ế N u chúng ta l u ý t i h th ng cây th m c ữ ệ ằ r ng không có s phân bi t gi a tên t p tin và tên th m c.
Hình 4.5
ở ế ượ ư ụ các c ghép N u các th m c Gruppe1 và Gruppe2 đ
ố
ở ặ ứ ổ đĩa khác nhau, do ố ệ ớ t v i các n i ngang ố ậ ấ đây c p th nh t là n i v t lý, còn
đó, các n i ngang Rudi/Datei2 và Hans/Datei2 thì khác bi Gruppe1/Hans/Datei3 và Gruppe2/Datei3: ặ c p th hai là n i logic.
ẽ ồ ạ ố ố ờ ở N u bây gi c xoá b , do đó, nó s t n t
ộ ệ Unix m t t p tin đ ộ ự ế ố ậ i t ế ệ i.
ụ ỉ ượ c xoá b , do đó, t p tin ch còn l
ẫ ẫ c l
ứ ế ế ườ ng d n Rudi/Datei2 đ ườ ng d n Hans/Datei2 và có th s d ng đ ng d n Hans/Datei3 xoá b ; do đó, t p tin t
ẫ
ệ ượ ị ỏ ươ ồ ạ trong th m c Gruppe2 v n còn t n t ệ ở ậ ứ ế ể ỏ ượ i thi u ồ ạ Ở trong thí d đã nêu, n u t p tin ạ ướ ỏ i d i cái tên ượ ạ ế ệ ể ử ụ c. Ng i n u t p tin có ỏ ự ệ ứ ng ng cũng b xoá b ; s ư ư ụ i, nh ng ấ i khi tham chi u tên t p tin này,
ẫ ế ậ ệ ộ ệ ớ cho đ n khi có m t s k t n i v t lý t n t có đ có đ ườ đ tham chi u tên (sysbollink) ệ ỗ khi truy c p t p tin thì ngay l p t c xu t hi n l ữ ứ t c là m t t p tin v i cái tên này không còn n a.
ề ượ ệ ề ể ộ ệ Đi u quy t đ nh trong h đi u hành Unix là đ m t t p tin đ
ố ể ế ộ ế
ơ ệ ả ở
ạ ấ ằ
ệ ố ư ụ
c l t
ượ ề
ố ướ ư ụ ằ i tình hu ng, r ng bây gi phía d i còn t n t
ữ ứ
ồ ạ ư ụ ể ể
ể ố
ỏ ượ c. Đi u đó thì cũng khong th tránh đ ư ệ ụ ở ấ ạ
ế ố ượ ề ể ỉ
ế ở Đ i v i vi c t o l p hay xoá b t p tin,
ố ớ ế
ế ị c xoá hoàn ộ ụ ế ế ố ậ toàn, thì ph thu c vào b đ m đ đ m s tham chi u k t n i v t lý. Tuy ế ươ ơ ộ ủ ệ ề nhiên, c ch này c a h đi u hành Unix là m t ph ng ti n đ n gi n trong ậ ư ế ể ẫ ớ ỗ i. Chúng ta nh n th y r ng, ph m vi đa ti n trình, nh ng cũng có th d n t i l ủ ế ố ậ ự ư ụ ở ạ i th m c Rudi c a hình 4.5 và th c hi n k t n i v t lý trên t chúng ta đang ể ư ụ ấ ư ỏ ộ ệ th m c Gruppe1. Vì vi c xóa b m t th m c ch a tr ng thì c m (đ tránh ể ượ ạ ở ạ ư ụ ượ ỗ i), do đó, chúng ta không th xoá đ l i i, c th m c Gruppe2. Ng ứ ộ ế ố ủ ở ư ụ đây có m t k t n i th hai c a th m c Rudi, cho nên cho th m c Gruppe1: ờ ư ụ ẫ ớ ệ ỏ phép xoá b tên t p tin đ th m c c. Đi u đó d n t ệ ở ư ụ ớ i, tuy nhiên Gruppe1 v i th m c con và các t p tin ố ữ ượ ữ c n a, vì chúng là nh ng th m c tr ng, và nh ng th đó không còn dùng đ ượ ề c: tuy do đó cũng không th xoá b đ ệ ể ế ố k t n i ngang là có th , nh ng vi c ki m tra các vòng n i và vi c tách chia các ớ ả ừ ỗ ơ ồ ệ s đ t p tin t i m i tác v xoá là không nên làm. T lý do này, n b n m i ư ụ ủ c dùng ki u k t n i logic. c a Unix v cây th m c thì ch còn đ ộ ệ ạ ậ ộ ế ế ệ ờ ề i t o l p. Và nó s
ườ ạ ậ ư ậ ị ế ố ọ
ế ở ề ỏ ệ trong Unix có m t có ch thông ở ệ ộ ệ ạ ậ ụ d ng: N u m t ti n trình t o l p m t t p tin và sau đó, nhi u ti n trình m t p ẽ ấ tin này, do đó, t p tin không b bi n m t khi xoá, nh ng ộ ế ủ ụ ồ ạ ớ i cho t t n t i khi ti n trình cu i cùng g i th t c close() và nh v y, b đ m ế ự s tham chi u tr v 0.
ổ ệ ượ ệ ố ơ ồ
ủ
ệ ố ệ ố ổ ổ ủ
ố ủ ằ ở
ượ ủ c phân chia thành các s đ nhánh ở đĩa khác nhau. Khi kh i ộ đĩa khác nhau vào m t ỗ đó, nút g c c a m i ư ụ mount point
ồ ạ ệ ọ ệ ố ở ả ả ư ụ ệ c ph n nh b i tên c a m t th m c ( ộ ộ ư ậ H th ng t p tin hình cây t ng quát đ ệ khác nhau, mà các t p tin c a chúng t n t i trên các ộ đ ng h th ng (bootstrap), h th ng t p tin c a các ộ ố nút g c (root) b ng m t hàm g i h th ng mount(), mà ệ ệ ố h th ng t p tin còn đ ỉ direction). Hình 4.6 ch ra m t cây th m c t p tin nh v y.
Hình 4.6
ư ụ ở
4.2.4. Cây th m c
Windows NT
ả trong h đi u hành Windows NT mô t
ớ ầ
ổ ụ ố ượ ệ ề ộ ậ ư ư ụ ở ộ ng khác nh các kênh trao đ i thông tin (
ớ
ớ ụ ượ ố ộ toàn b các đ i Cây th m c ệ ng toàn c c; m t cách đ c l p v i cái đó, khi chúng là các t p tin thu n tuý communicationcanal ờ ệ semaphore), c trao cho
ẻ shared memory), các c hi u ( ố ượ ọ ng v i tên g i toàn c c đ ậ ng ng khi truy c p.
ắ ầ ở ấ ả
ố ượ
ộ ế ệ ươ ứ ư ụ ệ ứ ư ụ ố ượ ế ố ư ụ ớ ủ
ượ t ữ hay nh ng đ i t hay named pips), các b nh chia x ( ế ố các bi n c hay các ti n trình. Các đ i t ơ ế ả các c ch b o v t ở ớ ệ ố H th ng cây th m c b t đ u v i nút g c b i d u xiên ph i (\), ố ượ i các đ i t ng t p tin hay các đ i t ng th m c. Các th m c đ i t ố ượ ng ch a đ ng tên c a đ i t ạ ậ ữ ọ ướ ớ ở
ố ượ ng pháp (t o l p, m hay đ c l ả ạ ồ ư ụ t các th m c). H ườ ử ụ
ệ ề ỉ
ệ ố ư ả
ố ớ ụ ế ấ
ệ ử ụ ả ề ể ề ơ
ồ đó t n ạ ng là t ố ộ ự ng v i nh ng thu c tính (bi n s , các đ i t ệ ằ ươ ố h ng s …), v i các ph ỉ ạ ố th ng này không ch bao g m tr ng thái nhân, mà c tr ng thái ng i s d ng, ư ụ ể ặ nghĩa là các th m c không ch có th đ t vào nhân h đi u hành Windows NT, ỗ ể ặ mà còn có th đ t vào c các h th ng khác nh OS/2, POSIX…Đ i v i m i ạ ố ượ ữ lo i đ i t ng (t p tin, ti n trình…) có nh ng n b n chuyên d ng cho 3 ươ ng pháp s d ng các đ n th nhân khác nhau (đi u hành I/O, đi u hành ph ế ti n trình…).
các th m c đ i t
ư ụ ố ượ ề
ệ ng hay vi c ệ ể ự ng d n k t n i ngang (nh trong Unix) đ u có th th c hi n i ư ụ ế ố trong Windows NT.
ề ệ Ở ể ạ ậ ụ ừ Tuy nhiên, đ t o l p th m c toàn c c t ư ẫ ườ ế ặ t đ t các đ thi ậ ợ ở ộ m t cách thu n l ư ụ ủ ố ượ ồ ạ ng thì t n t
ẳ
ỗ ố ượ ệ ộ ạ ng h th ng t p tin “Floppy”. V i m i đ i t
ượ ế ả
ng d n A:\Texte\bs_files.doc, do đó, t
ằ
ầ ớ ở ố ượ ề cây th m c c a vi c đi u hành đ i t ng i nhi u đ i t ộ ế ố ố ượ ng “A:” là m t k t n i ngang logic ươ ớ ệ ố ng ạ c chuyên môn hoá. N u trình so n th o Editor mu n m t p tin ng, nó ng tìm ớ ố i đ i i
ng thì m t ph ố ở ệ ố ượ ố ượ ch nào (?). N u nó đi t ụ ạ ử ổ ề i c a s đi u hành đ i t ề ng pháp dò tìm, trình đi u hành đ i t ỗ ượ ươ khác nhau (xem hình 4.7). Ch ng h n đ i t ớ ố ượ v i đ i t pháp dò tìm đ ẫ ườ có đ ươ ỏ ố ượ ng này. B ng ph h i đ i t ố ượ ư ụ ủ ế ng c n t ki m cây th m c c a nó: đ i t ế ố ượ ng pháp k t n i logic đ t ế c áp d ng. ng “A:”, thì khi đó, ph
Hình 4.7
ự ế ở “A:” đ c thay th b i chu i ký t
ề ườ ự ể ẽ ử ỗ ố ượ ng. Trình này s x lý đ
ươ ố ượ ượ ỗ Chu i ký t ượ c chuy n cho trình đi u hành đ i t ớ
ườ
ớ ớ ệ ệ ệ ố ộ ố ượ i khi m t đ i t ệ ề t, cho t “\Device\Floppy0” và sau ẫ ng d n ệ ng pháp dò tìm này làm vi c ẫ ệ ng d n ng t p tin v i bs_files.doc có
ố ộ ợ ể
ủ đó, đ ặ cho t ng t p tin “Floppy0”. Ph i khi g p đ i t ư ụ ủ trên cây th m c c a trình đi u hành h th ng các t p tin, nó dò tìm đ ặ ớ ủ ụ v i các th t c đ c bi ể ượ ư ở ạ i. c đ a tr l th đ ở ế ớ ơ V i c ch này, ệ ệ ố
ệ ệ ệ ệ ố ệ ố ư ệ ố ủ ấ
ng đ
ấ trong Windows NT có th tích h p m t cách th ng nh t các h th ng t p tin khác nhau nh h th ng FAT (file allocation table) c a MS ủ DOS, h th ng t p tin hi u su t cao c a OS/2 và h th ng t p tin NT c a Windows. ố ớ ử ụ ộ ệ ơ
Đ i v i vi c xoá m t t p tin cũng nh xoá m t đ i t ế ượ ế ộ ố ượ ự ư ng t ộ ộ ể ế i: m t b đ đ m s l ư ẫ ớ ươ i t c d n t ượ ẫ ớ c d n t
ế ố ượ các ti n trình ng
ố ượ ộ ộ ữ ể ế ậ ở ượ ị ng que ch th , khi đó chúng đ
ố ượ ẽ chúng đ
ố ượ ị ả
ượ ế ủ ệ ề ộ ế ớ
ộ i. V i c
ộ ế i phóng và đ ề ở ạ ị ượ ử ế ề ượ c nhi u ti n nh trong Unix. Vì lý do ng các ườ ử c đón nh n i s ỉ ượ ư c đ a vào ở ậ c trao cho b i các đ i t ng khi truy c p ườ ử ụ ệ ế ớ i s d ng mà tham chi u t i tên t p ở ẽ ị ư ụ ng s b xóa trong cây th m c; và ậ ể c. Tuy nhiên, nó i khi b đ m các tham chi u c a h đi u hành ớ ơ ượ ự ụ c s d ng tr l c gi ộ ế c nhi u ti n trình x lý b xoá m t
ớ ớ ượ ộ ố ượ c: m t đ i t ế ẫ ệ trình s d ng, thì các c ch đ ộ ế ự th c thi, có hai b đ m tham chi u đ ứ ng, khi đó chúng đ ch c danh đ i t ố ượ ụ d ng; và m t b n a đ đ m s l ượ ệ ề h đi u hành (đáng l ế ủ ộ ế ế nhanh). N u b đ m tham chi u c a ng ớ ố tin b gi m xu ng t i 0, thì do đó, đ i t ế cũng vì th , không có m t ti n trình nào có th truy c p đ ộ ở ạ ẫ i trong b nh cho t l v n còn ả ố gi m xu ng 0. Sau đó b nh đ ế ch này đã tránh đ ướ ầ cách nh m l n tr ả ượ ng đ c khi các ti n trình khác th c thi xong.
ự ượ M t b đ m tham chi u đôi cũng tránh đ
ế ộ ế ộ ộ ế ượ c: thí d m t đ i t ủ ớ ự ế ở
ộ ế ớ ế ẫ
ứ ủ ự
ệ ề ớ ả ữ ng. S tham chi u c a h đi u hành t ng t p tin cho t i khi quan h nói trên không còn n a.
ộ ệ ế ụ ộ ố ượ ng ti n ế c sinh ra b i m t ti n trình và sau đó, v i s k t thúc c a ti n trình ệ ớ ố i k t thúc; tuy nhiên, v n còn m t ti n trình có quan h v i đ i ả ự ồ ớ ế i ti n trình th hai đ m b o s t n ệ ơ ế ả ệ trình đ này, nó đi t ế ượ t ệ ạ ủ ố ượ t i c a đ i t 4.3. Thu c tính t p tin và c ch b o v
ầ ế ứ ộ ệ
ằ ượ ộ ả ộ ớ ệ ư ụ ệ
ằ ộ ỉ
ệ ố ư ẩ ấ Hidden), h th ng.
ọ ộ ạ ệ ủ
ườ ệ t c a các thông tin tr ng thái là các thông tin b o v nh ươ ng t
ề ệ Trong m t th m c có ch a tên m t t p tin, thì h u h t các thông tin v t p ố ạ tin đ c b o v . Bên c nh đ l n t p tin (tính b ng Byte hay b ng các kh i ề ạ ậ trang), ngày tháng t o l p và ngày tháng đi u ch nh, còn có các thu c tính khác (còn g i là các c hi u khác) nh n khu t ( ạ ươ ườ
ủ ệ ộ ư ươ ươ ấ ỗ ủ ng
ớ i khi truy xu t ch ữ ệ ệ ỷ
ư ị ờ ệ ả ư ặ M t d ng đ c bi ậ ự ố ớ ệ ậ ủ ng trình đ i v i t p tin. T lu t truy c p c a con ng i và c a các ch ư ố ớ ể ạ ỏ ứ ơ ế ả i ta đã xem xét đ lo i b các ch c nh đ i v i các c ch b o v b nh , ng i sườ ử ỗ ủ ng trình nh các l i c a ch năng l ng trình c a ụ ữ ờ d ngụ nh nh ng bi n pháp có m c đích: Nh ng bi n pháp do U ban POSI6 ộ ề đ ngh có n i dùng nh sau:
ề ắ ặ ọ ấ least privilege) đ iố
ệ ệ ộ ả + Ph i đ m b o nguyên t c thu g n đ c quy n ít nh t ( ụ ệ ớ v i vi c th c hi n m t nhi m v .
ả ả ự ả ổ ể ề
ộ ậ ứ ớ
ậ ấ ưỡ ng b c thì đ c l p v i ng ở ỉ ả ế ớ ờ ạ + Ph i b sung vi c đi u khi n khi truy c p qua các thông báo r i r c ườ ệ i ặ ấ ố ượ ng ch x y ra b i các ti n trình v i các đ c
ệ (discretionary access control). Vi c truy xu t c ạ ậ t o l p. Vi c truy xu t đ i t quy n l n h n.
ệ ơ ả ư ề ạ ể ệ ng nh m có th phát hi n
ệ i làm vi c trong h th ng khi s d ng sai trái. các nguyên nhân và các ng
ằ ử ụ ầ ệ ề ỉ ự ể ấ ề ớ ủ ố ượ + Ph i l u ý các ghi chép v tr ng thái c a đ i t ệ ố ườ ớ ạ i h n các yêu c u k trên. i, h đi u hành ch th c thi r t gi ượ ạ c l Ng
ậ ở
ề
ặ
4.3.1. Các đ c quy n truy c p
Unix
ế ọ
ệ ờ ư ụ ề ự ệ ạ h đi u hành Unix có các bi n tr ng thái (còn g i là các c ) khác nhau: ấ ả t (w), th c thi (x). T t c các t p tin và các th m c đ u có
ư
Ở ệ ề ọ ế đ c (ký hi u r), vi ư ộ ạ m t tr ng thái nh nhau. ệ ừ ọ
ổ ị
ự ế ệ
ề ề ệ ậ
ộ ạ ọ Các ký hi u v a nói có ý nghĩa nh sau: ệ r cho phép đ c danh sách t p tin; ệ w cho phép thay đ i v trí t p tin trong danh sách; x cho phép th c thi hay tìm ki m t p tin trong danh sách. ệ ề V quy n truy c p, h đi u hành Unix phân bi (owner), thành viên m t nhóm ( user group member) và m i ng ệ ố t 3 h ng: ch nhân h th ng other). ủ ườ i khác (
ỉ ẫ ề ề ậ
ệ ậ Ch d n v các quy n truy c p L nh ls là đ xem các t p tin và các quy n truy c p chúng. L nh lsal đ
ể ủ ệ ư ụ ề ụ ớ ệ ệ ộ ậ ượ ạ ể ệ c đo n thông
xem các t p tin c a m t th m c, thí d v i l nh này, ta nh n đ báo:
ệ
ượ ự ế ề ti p theo đ
ưở ườ ọ
ấ ườ ử ụ i khác) v i r: đ c, w: vi ề ng), other (ng ỉ ể ộ
ủ ế ữ ả
ạ ậ ố ờ
ớ ậ ườ ử ụ i s d ng, dung l Ở ệ ở ộ ủ ộ ệ ấ ỉ
ủ ệ
ể ượ ủ ộ Ở ứ drwxrxrx brause 512 Ap23 15:55 . drwxrxrx obene 512 May17 17:53 .. rw rr – brause 44181 Ap23 15:56 data1.txt ư ụ ậ ủ Ở ộ ầ c t đ u tiên là các quy n truy c p c a các t p tin. Trong đó: d là th m c i s d ng owner c phân làm 3 cho các ng ế t, x: tìm ọ ượ c ch n. ượ ng dòng ư m t th ượ ạ ậ c t o l p ng 512Byte, đ ấ ấ dòng th 2 c a c t này có d u hai ch m
i s d ng brause có dung l ờ 55 phút. ự . ng t
ể ự ươ ệ ươ Unix, đ th c hi n m t ch
(directory), còn 9 ký t (ch nhân), grouper (nhóm tr ạ ki m và d u g ch ngang () đ ch m t quy n truy c p không đ ạ ủ ộ Nh ng c t còn l i c a b ng thông báo này là tên ng ạ ậ (Byte), ngày tháng t o l p, th i gian t o l p và cu i cùng là tên t p tin. ộ ấ ệ ầ đ u tiên c a c t tên t p tin, có m t d u ch m (.) đ ch tên t p tin ườ ử ụ ụ m c hi n hành c a ng ngày 23 tháng 4 lúc 15gi ả (..) cũng gi i thích t Ở h đi u hành ệ ề ủ ề ậ ớ ng trình, có th k t n i các iườ ộ ươ ng trình v i hàm quy n truy c p c a riêng mình trong ch ể ế ố userId cho ng
ứ ế
ạ
ể ủ ả i qu n lý nhóm. Do đó, các ch c năng c a ế ặ ệ ọ t đ t c m i ng i m t th m c, tr ng thái sticky ng không th xoá hay
ư ụ
ỉ
ệ ự ườ groupId cho ng th c hi n và ự ườ ử ụ ệ ố ươ ể ượ i s d ng th c hi n, n u thi ng trình h th ng có th đ ch ư ụ ộ ế ạ ạ userId và set groupId. Còn n u t các tr ng thái ườ ườ ử ụ bình th ộ ng ượ i s d ng t đ t, do đó, m t c thi bit đ ườ ử ụ ệ ọ i s d ng khác trong th m c này. g i các t p tin c a ng ệ ề ả ặ ữ ế ấ ớ ế ặ ủ ệ ủ ấ Ch nh ng n b n đ c bi ơ ề ớ ớ
ượ ạ ấ ố
ẽ ủ ệ ệ ố ể ạ ả ẩ t c a h đi u hành Unix m i có các danh sách ạ ự ề đi u khi n truy xu t v i nhi u c ch khác nhau. Cũng v i lý do này, s ho t ề ộ đ ng m nh m c a nhóm O/Open đã th ng nh t và t o ra đ c nhi u tiêu chu n b o v h th ng Unix.
ậ ở
ề 4.3.2. Quy n truy c p
trong Windows NT
H th ng t p tin trong h đi u hành Windows NT đ
ệ ướ ở ố ượ ượ ị ố ớ ệ ề ề ậ ng đ i t
ư ụ ủ ờ ệ ư
ấ ặ ữ ề
ố ượ ộ ở ệ ố ả c qu n lý b i m t ỗ ố ượ ơ ế ị ng ng. Quy n truy c p có giá tr đ i v i m i đ i t c ch đ nh h ả ế trong cây th m c c a Windows NT (nh các ti n trình, các c hi u, kho ng ệ ậ ộ ậ ớ nh …). Đ c l p v i các quy n truy c p này còn có nh ng tính ch t đ c bi t ố ớ đ i v i các đ i t ớ ệ ng t p tin:
:
ồ ạ ế ị ệ
ệ ạ
ế ử
ọ ươ ạ ể ộ ộ Các thu c tính ệ + Tên t p tin ể + Ki u thi t b mà trên đó t p tin t n t + Byte offset: là tình tr ng hi n hành c a t p tin, + Shared mode: là tr ng thái (đ c/vi + Open mode: là ki u và ph i, ủ ệ t/xoá) c a t p tin trong khi s dùng, ng pháp tác v c a t p tin (đ ng b / không
ủ ệ ụ ủ ệ ầ ự ấ ỳ ộ ậ ồ / b t k …)
ộ ệ ồ đ ng b , có / không có b đ m Cache, truy c p tu n t ỳ ề ữ ể ị ệ + file disposition: bi u th t p tin b n v ng hay tu ý.
ươ ng pháp :
ọ ế ở ộ
ộ ể ọ ư ụ
ủ ỗ ố ượ ộ ọ t b hay đ đ c ch n m t th m c… ề M i đ i t
ể ủ ế Các ph Các hàm CreateFile(), OpenFile(), ReadFile(), WriteFile(), CloseFile(), dùng ộ ệ ể ọ đ đ c ch n hay thay th các thông tin t p tin, các thu c tính m r ng, các đ ế ị ề ớ ệ l n t p tin (Byte), các thông tin v thi ộ ả ề i nhi u đ i t
ữ ổ ở ố ượ đó.
ộ ệ ệ ng t p tin là m t b n sao c a thông tin đi u khi n c a m t t p ệ ố ượ ể ẫ ớ tin; nó cũng có th d n t ng, mà chúng tham chi u chính t p tin ả ệ ữ này. Do đó, có nh ng thông tin toàn c c đ c l u tr trong t p tin (không ph i ệ ở c thay đ i ng t p tin) và cũng có th đ ứ trong đ i t ỗ ệ
ệ ộ ớ ệ ự ữ ệ ướ ế ụ ượ ư ể ượ ệ ự ộ M i t p tin ch a đ ng nh ng thu c tính t p tin khác nhau; khi th c hi n c h t, chúng
ồ ữ ế chúng là nh ng dòng d li u bi n thiên theo đ l n t p tin. Tr bao g m nh ng thông tin sau đây:
ấ ầ ạ ậ ờ
ữ ữ Các thông tin chu nẩ : ờ + Ngày tháng và th i gian t o l p, ngày tháng và th i gian truy xu t g n đây ầ ế ố và l n thay th cu i cùng;
ệ ượ
ị ở
ệ ng t p tin hi n hành; ủ ệ ư ụ ệ ỉ ọ ể ữ ệ ị ể ệ ệ ề ệ ệ ẩ
+ Dung l ệ ộ + Thu c tính logic c a t p tin bi u th b i giá tr Yes/No. Thí d : t p tin h ố th ng, t p tin n, t p tin l u tr , t p tin đi u khi n, t p tin ch đ c, t p tin nén…
:
ể ệ ở ệ Tên t p tin Trong cây th m c v i k t n i v t lý, tên t p tin có th dài; ế ố các k t n i
ủ ắ ớ ế ố ậ ư ụ ệ khác c a MSDOS, t p tin có tên ng n.
ể ệ
ọ ả ệ: ữ ệ Các d li u b o v ấ ố ớ ề ự ứ ựơ c ch a đ ng trong danh sách đi u khi n vi c truy xu t đ i v i Chúng đ ủ ệ ủ m i ch nhân c a t p tin.
ộ ệ :
ư ụ N i dung t p tin ự Thu c tính này ch a đ ng các d li u riêng l ẻ ạ ; t ộ ấ i các th m c, m t c u
ộ ỉ ố ượ ư ứ ữ ớ ữ ệ ệ trúc ch s đ c l u tr cùng v i các t p tin.
ộ ự ượ ấ ượ
ở
ứ ự ộ ệ trên. Vì ng ượ c b sung liên t c. Khác v i tên t p tin chính, thí d
ữ ệ c quan tâm là các d li u th c ch t đ ườ ử ụ ể ạ ổ ụ ủ ộ ớ i l p trình đ
ượ ụ ườ ậ ầ ế ở ấ c ch a đ ng m t trong các i s d ng có th t o ra các thu c tính, cho nên các ớ ụ ượ c tham chi u v i m t cái ấ c tách làm hai ph n ngăn cách nhau b i d u hai ch m,
ề ể ề ạ ổ
ươ ủ ử ẳ ạ
ố ổ
ữ ả ố ớ ệ ẫ ớ ữ ệ c d n t
ộ ệ ầ ữ ệ ộ ấ ượ ấ ề ạ ờ ệ
ở ạ ẫ
ượ ạ ộ ứ ề Đi u đ ộ thu c tính nêu ữ ệ dòng d li u cũng đ ữ ệ MyFile.dat, các d li u ph c a ng ổ tên b sung; tên này đ thí d ụ MyFile.dat:MyCommentar. Đi u đó đã t o nên nhi u thông tin b sung đ treo ộ ng trình x lý hay ng c nh khi vào m t t p tin (ch ng h n tên c a m t ch ỗ ậ ử x lý l n cu i…) mà không h thay đ i các d li u chính. Do v y, đ i v i m i ư ộ ớ ượ dòng d li u, m t thông tin tr ng thái đ i, ví nh đ l n hi n hành ố ớ ớ c c p phát, các c hi u đ i v i các ph n c a t p tin… l n nh t đ ộ ế i, các thu c tính logic đ c nén l ầ ủ ệ ượ i m t cách t
ế ợ ượ ộ ươ ờ ợ ng c tr giúp nh ph ệ ự ộ đ ng, t c là t p tin ư ộ ị ố ớ Khi thay th hay d n tr l ụ ộ ệ ạ c thu c tính nén l i. Đi u đó cũng có giá tr đ i v i toàn b cây th
pháp k t h p. Thí d m t t p tin đ ề ậ nh n đ m c.ụ
ơ ệ ượ Windows NT đ
ế ệ ề h đi u hành ố ớ ề ượ ộ ườ ử ụ đ i s d ng ủ ng
ỗ ệ ậ ư
ạ c chi ti ệ ạ ế ả Các c ch b o v trong ẽ ơ t hoá; trong đó, các quy n truy c p c a ổ ậ ườ ườ ọ ả i)…, ng i ta có th
ề ủ ọ
ậ ộ c tách chia m t ậ cách m nh m h n trong Unix. Đ i v i m i t p tin có m t danh sách truy c p ượ ự đ c th c ẩ ệ hi n. Vi c b sung thêm tên tiêu chu n nh Adminitrator (qu n lý), System, ể Creator (t o l p), Quest (Khách), EveryOne (m i ng ườ ử ụ ti p theo và các quy n c a h ; nghĩa là chuyên môn hoá nh ng ữ ượ ọ ượ h đ
ng c phép hay không đ ả ệ ố i s d ng ề c phép v m t quy n truy c p nào đó. i h n trên các t p tin, nó đ
ổ ộ ế ề ộ ớ ạ ố ượ ệ H th ng b o v này thì không gi m t cách t ng h p ợ ở ấ ả t t c các đ i t ệ ụ ở ng toàn c c ụ ượ c áp d ng ư ụ đây th m c trong
ộ ự ể ế ộ
ố ư ụ ượ ợ ỉ ượ Windows NT và đ ậ ớ ệ ệ ố ớ đ i v i vi c truy c p t ấ c ch huy m t cách th ng nh t. Ti p đó, m t s ki m tra c tr giúp. i t p tin hay th m c đ
ứ ệ 4.4. Các ch c năng t p tin
ấ ụ ả
ạ ổ ề ể ụ ạ ể ặ ệ ộ ư ệ ả ớ
ự ề ổ Có r t nhi u ki u tác v x y ra trên các t p tin. Trong m c này, chúng ta ả đĩa kh o sát vài ki u đ c tr ng cho t p tin trên b nh qu ng đ i (các lo i ứ c ng, đĩa m m, băng nh a camara…).
ẩ ứ 4.4.1. Các ch c năng chu n
ệ ề ơ ả ứ ề ầ
Trong h u h t các h đi u hành đ u có vài ch c năng c b n, mà v i chúng, ệ ế ể ượ ọ ơ ả ế ớ ứ t. Sau đây là các ch c năng c b n đó. các t p tin có th đ c đ c và vi
(cid:0) :
ạ ậ ệ ế ặ ể Đ thi
ỗ ọ ọ t/ đ c, tu n t
ố t đ t m t t p tin, các thông s bao g m m t chu i các ký t ọ ớ ự ượ
ườ ườ ứ ế
T o l p t p tin (Create File) ộ ệ ể ậ i ta nh n đ ể i ta có th truy c p t ư ế ộ ườ ế ỉ ố ủ ộ ự ố ế ệ ệ ệ
ệ ự ể ộ ồ đ ộ ậ ầ ự ự ế / t ch n). Khi g i m t chuyên môn hoá các ki u truy c p (vi ế ệ ộ ự c m t s tham chi u t p tin, mà v i s tham ch c năng, ng ứ ậ ớ ấ ả ủ ệ chi u này, ng t c các ch c năng ti p theo c a t p i t ể ứ ạ ệ tin. M t s tham chi u nh th (phân đo n t p tin, ch c danh t p tin) có th là ộ ề ộ ộ ủ ộ m t con s (ch s c a m t tr ng n i b c a vi c đi n vào t p tin) hay m t ộ ỉ b ch th m t c u trúc bên trong t p tin.
ượ ấ
: ồ ạ ế ộ
ị ở ộ ấ ở ộ ệ ở ộ ệ ệ ề ữ ệ i, các c u trúc d li u khác nhau đ ơ ộ ệ ậ ậ ế ế ấ ơ
(cid:0) M m t t p tin (OpenFiele) ở c kh i Khi m m t t p tin đang t n t ệ ướ ễ x ng, do đó, vi c truy c p ti p theo di n ra nhanh h n. Thu c cái đó có vi c ư ơ ể ki m tra các quy n truy c p cũng nh c ch các b đ m, c ch các c u trúc truy c p.ậ
ả ể ệ ạ ộ i b nh các thông tin qu n lý t p tin t
ạ ấ
(cid:0) Đóng t p tin (Close File) ệ ộ ệ Đ đóng m t t p tin, c n ph i mô t ượ ả
ả ệ ử ụ
ở ộ : ả ầ ố ế ớ b nh chính.
ớ ữ ệ c phép n i ti p vi c s d ng không gian các c u trúc d li u ệ ư ậ ở ụ ữ ế ổ ng t
ế
ổ
ườ i ta đ ấ ả ọ ự ộ ự ự ậ ượ ự ầ
ệ ề
ệ ổ ứ ữ ệ ụ ộ
ườ ề ậ ặ
ỗ ầ ể ệ
ẫ ớ ể ả qu ng đ i và đ ệ ả ủ c a vi c qu n lý t p tin ự ươ nh v y, khi trao đ i thông tin gi a các ti n trình T m c 2.4.1, ệ ể ườ ố ứ ng i ta có th thay th đôi l nh OpenFile() và CloseFile(). Thay vì n i c ng ổ ậ ượ v t lý s trao đ i thông tin, ng c phép có m t s trao đ i thông tin ế ố ậ ầ không c n k t n i v t lý: T t c m i s truy c p đ c th c hi n theo dãy tu n ầ ự ủ t c a chúng mà không c n dùng l nh OpenFile(). Tuy nhiên, đi u đó thì không ậ ệ ộ ứ ố ớ ậ ch c d li u c c b : Thay vì truy c p t p th t chính th c đ i v i m t cách t ụ ệ ỉ ế ệ i ta ch x p đ t m t l n (thí d vi c ki m tra quy n truy c p, vi c tin, ng ậ ề ự ả ố ệ i ta ph i th c hi n đi u đó m i l n truy c p, xem xét các kh i t p tin…) ng do đó d n t ộ ầ ườ ể ả i chi phí qu n lý gi m thi u đáng k .
t t p tin (Read File/ Write File)
ố
ế ộ ể ọ ị
ộ ệ ệ ự c th c hi n. (cid:0)
ế ệ ư ủ ộ ệ ượ ng b đ m, do đó, t p tin đ ệ ượ ổ ứ ả ộ
ị
ư ậ
(cid:0) Đ c và vi ọ : ộ ế ệ ọ ệ ố ậ ượ ự G i h th ng nh là m t tham s nh n đ c s tham chi u t p tin và m t ế ặ ượ ng c a b đ m đ đ c hay vi dung l t. N u có m t t p tin m c đ nh và phù ượ ệ ộ ệ ớ ợ h p v i dung l ế Tìm ki m t p tin (Seek File) ộ ệ M t t p tin đ c t ườ i đó, ng ư ữ ệ trong các h th ng các t p tin nh v y. B ng vi ả
ầ ự sequential access), thí d kho ng t
ệ ử t x lý tu n t ừ tính c a ẫ ậ ệ ố ( ệ ườ ụ i vi c truy c p tu ch n còn g i là truy c p ng u nhiên ( ậ i ta d n t
: ế ộ ị ầ ự ơ đ n gi n và chi m m t v trí, mà ch c m t cách tu n t ỏ ỉ ượ ệ ọ ể ế ạ c mô ph ng t i ta có th vi t hay đ c. V trí t p tin này không ch đ ể ượ ươ ộ ế ở ả ng trình c thay th b i m t ch nh nh ng thông tin qu n lý, mà còn có th đ ầ ự ở ọ ằ còn g i là ề ủ ổ đĩa m m, truy c p tu n t ẫ ớ random ng ề access). Đi u đó thì ti n l ậ ỳ ọ i khi làm vi c v i
ị ể ụ ệ ố Theo quan đi m h đi u hành, các d ch v h th ng nh n đ
ỏ ế ượ ệ ợ ệ ề ề
ng trình ng ọ ệ ớ ổ đĩa CD ROM. ậ ệ ả ự i s d ng ph i t
ệ ệ ố ườ ử ụ ạ ườ
ượ ế c đ c hay đ t, vì t
c s d ng, hay t
ộ ạ ọ c vi ạ i hàm Write() không có ợ ượ ử ụ ư ườ ầ ở
ữ ệ ệ i s d ng
ộ
ứ ằ ậ ộ
ượ ự ợ c s tr giúp ệ ọ t có c bao hàm trong câu h i, li u vi c đ c/ vi ề làm đi u đó, khi ế ng (?). N u i hàm Read() không ẵ ổ đĩa nào s n sàng ế ng h p này thì ngăn hãm ti n trình ượ ư ữ ệ c l u ở ỗ ượ ư i đ c đ a tr ư ổ c b sung nh : ả
ệ ề ụ ạ ộ ộ ộ m t cách khác nhau. Đi u đó đ ươ ượ ư ữ đ c l u tr , hay li u ch ặ ả ứ ủ ph n ng c a h th ng đ t lên m t tr ng thái không bình th ể ượ ữ ệ không có d li u nào có th đ có d li u nào đ làm vi c. G n nh hàm Read() trong tr ườ ử ụ , còn hàm Write() thì không. Vì lý do này, các d li u đ ng ế ế ổ ộ ệ ữ đĩa có khi m khuy t, m t thông báo l tr ; khi b đ m tràn hay ượ ề ợ ạ l i, khi đó có nhi u ch c n ng đ i. M t cách thu n l DeleteFile(), RemameFile(), CopyFile(), AppendFile(), FlushBuffer(),…T t cấ ẽ ề đ u ph thu c vào h đi u hành m t cách m nh m .
ậ ở
ứ
4.4.2. Các ch c năng truy c p
trong Unix
Ở ọ ệ ố ạ trong ệ ề h đi u hành
ấ t p tin (
ố ớ ấ ả ự ự ế Unix, các g i h th ng có d ng fd=creat(name, mode) ộ ố ộ ả ệ fd: file ậ t c s truy c p khác nhau,
và fd=open(name, mode) đã cung c p cho ta m t s b mô t discriptor). Nó chính là s tham chi u đ i v i t nh :ư
ọ ế ế ộ ệ ở + read (fd, buffer, nbytes) đ c n Bytes trong b đ m; ừ ộ ộ ệ t n Bytes t + write (fd, buffer, nbytes) vi m t b đ m; ộ ệ t m t t p tin. + close (fd) vi
ộ ả ệ B mô t ỉ ố Index)
ở ệ file descript table). S l trong m t tr ng các t p tin và s l
ự ị ố ị ượ ớ
t p tin này là ch s ( ố ượ ng l n nh t đ i v i fd) là c đ nh, nó đ ờ
ả ộ ế ữ ở ệ t p tin ( ứ ố ượ (t c s l ổ ủ h đi u hành ệ ề đ i c a ượ ư ệ ớ v i các t p tin đ ả ộ ườ ả ủ ng c a b ng mô t ố ượ ủ ự ề ng c a s đi n vào ấ ố ớ c thông báo khi có s d ch ộ ớ ủ ấ ố ồ ; đ ng th i, nó xác đ nh đ l n c a c u trúc qu n lý đ i ủ ườ ử ụ c a m t ti n trình. i s d ng ị ấ trong c u trúc c l u tr ng
ọ
ộ ế c khi kh i x
ệ ề h đi u hành ạ ở ướ ng m t ti n trình (ch ng h n m t ch ớ ượ ệ
ẳ ậ ấ ố ệ
ề
ộ c ghi nh : fd =0 cho vi c nh p s li u ( ệ ể ế ố i d ng đi u này đ k t n i các ch Ở ụ ằ Unix. Theo ươ ng trình), ố ệ stdin), fd =1 cho ỗ stderr). Ở i ( ớ ươ ng trình v i nhau, ớ ấ m c 2.4, chúng ta đã làm quan v i c u
ả ệ ộ t p tin này đóng vai trò quan tr ng trong B mô t ướ ẩ tiêu chu n, tr ả ệ ộ b mô t t p tin đ ấ ố ệ stdout) và fd=2 cho vi c xu t s li u khi có l ệ vi c xu t s li u ( ợ ụ ườ i ta l trong Unix, ng ứ ộ ẫ ớ nh m d n t i m t ch c năng nào đó. ụ ổ trúc trao đ i thông tin pipe, thí d :
ệ ệ ể ự ế ặ ế ề
ế ỗ ổ
Programm1 | Programm2 | … | ProgrammN Đ th c hi n dòng l nh này, ti n trình cha thi ộ ự ế ố ộ ng các b mô t
ỗ ế ớ ở ế t đ t nhi u ti n trình con và ộ pipe. Sau đó, ti n trình file descriptors) cho m i ti n trình; khi đó, ở ế ở ế ti n ti n trình g i đi, pipe ra v i fd =0
ả ệ t p tin ( ớ i: pipe vào v i fd =1 ả ộ ệ ố ở ố ớ ạ t o ra đ i v i m i m t s k t n i trao đ i thông tin m t ở ướ cha kh i x ẽ ẫ ớ chúng s d n t ậ trình nh n. Hình 4.8 mô t m t h th ng pipe trong Unix.
Hình 4.8
ệ ắ ướ ự
ỗ ế ệ c; m i ti n trình có th t p tin khác nhau qua vi c đóng và m
ế Vi c s p x p các b mô t ự ắ ệ ả ệ ớ ố ể ở ố ệ ố t p tin tr ng v i con s h th ng
ấ ượ ử ụ ầ ỏ ỉ ả ệ ộ t p tin ch là s quy ả ệ ộ ế ạ ượ c các s s p x p các b mô t đ t đ ở ộ ụ có m c đích các t p tin: Khi m , b mô t nh nh t đ c s d ng đ u tiên.
ậ ệ
ứ
ở
4.4.3. Các ch c năng truy c p t p tin
Windows NT
ệ ượ ượ
ơ ả ề ậ ệ ệ c tóm l ươ
ớ ộ ứ ứ ươ ể ng pháp v thi ẫ ố ớ Các ch c năng c b n đ i v i vi c truy c p t p tin đ ữ t laap các thu c tính t p tin. Các ph ớ
ọ ế ư
ượ ế ụ ố i nhi u ch c năng đ i v i các t p tin nh t, tìm ki m th ọ
ớ ộ ả ư ế
ổ ự ư
ộ ị ư ộ ả ề ữ c th c thi nh là nh ng bi n đ i nhân t ụ ặ
ỗ ầ ệ ọ ở ị ụ
đ
ế ả ổ ệ ố ạ
t trên b nh
ả
ượ ệ ả ề
ệ ố c khi vi
ộ i h th ng t p tin m t cách s ch s ộ ệ t vào b đ m dùng đ ế ả
ẽ ừ ầ ế
ạ ộ ệ ể ư c nh là ệ ế ng pháp hi u nh ng ph ư ệ ề ệ nghi m k trên còn d n t ư ụ ư ụ ặ FlushBuffer() cũng nh các tác v th m c đ c tr ng (đ c, vi ả ụ c quan tâm đó là: M i tác v dù có m c…). Nói chung, m t b n phác th o đ ạ ổ ấ ể c u trúc nh th nào đ u có th thay đ i trên b nh qu ng đ i, thì chúng cũng ử atomar transaction). Thu c cái đó ộ ượ ế ( đ ệ ọ ụ log file service: t g i là d ch v đăng ký t p tin ( còn có m t d ch v đ c bi ượ ệ ề ị ậ ệ LFS); m i l n truy c p t p tin, d ch v này đ c g i b i nhân h đi u hành và ệ ẻ ượ ệ ướ c khi các t p tin riêng l c t b n ghi đăng ký cho h th ng t p tin. Tr vi ế ờ ộ ộ ố ả ớ ả thay đ i trên b nh qu ng đ i (nh m t bi n c ), do đó, các b n ghi đăng ký ộ ụ ố ớ ủ ấ ả ế ớ ế ố ượ ộ (log records) c a t t c các tác v (đ i v i m t bi n c ) đ c vi ế ướ ở ỉ ả ạ write c luc đăng ký ( t tr c ch ra b i trình vi qu ng đ i. B n phác th o đ ẽ ệ ạ ể ế ạ ệ ố ạ ahead logging) đã t o đi u ki n đ vi t l ướ ế ự ố ả ể ế ự ố khi h th ng có s c . N u s c x y ra tr ự ụ ị ả ấ ả đăng ký (log buffer), do đó, t t c các tác v b l ng quên và vì th ph i th c ế ự ố ả ả ữ ớ ệ đ u. N u s c x y ra gi a kho ng k t thúc đăng ký I/O và hi n m i m t ở ạ ả ầ ế i, k t thúc t p tin I/O, khi đó, c n ph i ki m tra khi cho máy ho t đ ng tr l
ỉ ỗ ả ự
ệ ỏ ỗ ế ệ ố ệ ố ớ ỗ
ự ỗ ượ i và đ ư ph i xem xét và hi u ch nh ch nào đã th c hi n vi c ghi chép, ch nào ch a ố ượ ụ (?). Sau m i tình hu ng, nh ng tác v còn sai h ng đ i v i m i bi n c đ c ọ ớ g i t
ữ ế ụ ả
ộ ừ ự ệ ề ợ ả ả ượ t ph i đ
ế ố ệ ệ
ườ
ế
ẽ ệ ố ư ỗ ụ ộ ự ọ ả ị đ nh quan tr ng, chúng không ạ ậ ng h p. Do v y, s truy n đ t i, t c là, t p tin đăng ký nên linh ệ i, do đó t p tin s không ớ ẫ i ượ c ứ ự ng ch a đ ng l ế ộ ỗ i tích c c cũng ch a xoá đ
ệ c th c hi n ti p t c. Tuy nhiên, b n phác th o này có m t vài gi ườ ự ấ nh t thi c th c hi n trong t ng tr ỗ ứ ả các s li u đăng ký ph i hoàn toàn không có l ệ ộ ể ả ữ ệ đ ng, vì vi c chuy n t i d li u th ộ ả ử ế ượ ử ụ s có m t khi m khuy t th đ ng d n h th ng t s d ng đ c. N u gi ộ ạ fail save); nghĩa là m t l m t tr ng thái an toàn ( ữ ệ d li u.
ứ
ậ
ấ
4.4.4. Các ch c năng truy c p có c u trúc
ậ ữ ượ ạ ơ Nh ng ch c năng truy c p đ c trình bày cho t
ứ ỉ ớ ề ệ ộ ự
ậ
ớ ự ổ i s t ạ ủ ữ ệ ở ệ ả ộ ớ i nay là m t lo i đ n gi n ậ ề ậ ả i thu t v truy c p các t p tin. và chúng ch m i có ý nghĩa tách chia các gi ệ ế ậ ụ ể ạ ấ t l p m t s truy Trong r t nhi u h th ng, có các tác v đ t o đi u ki n thi ứ ướ ấ ậ ch c ng t c h c p có c u trúc t ớ ừ i t ng lo i: logic c a d li u ệ ố ề ệ ớ ệ i t p tin, mà vi c truy c p này đ ẽ ầ ượ trong t p tin, sau đây s l n l ượ t nói t
ầ ự ệ Các t p tin tu n t (sequential files ):
ớ ườ c nói V i các máy tính đ
c t
ữ ử ượ ắ ở ộ
ở ượ trên, ng ư ch c nh là nh ng b n ghi đ ồ ạ ở ữ i nh ng t p tin r ng rãi ứ ổ ứ ừ ấ ữ ệ i ta đã x lý các danh sách d li u ầ ộ ế ả c s p x p m t cách tu n ầ ượ ề trên đĩa m m và l n l t ể ệ c th i gian h i lâu. Ki u t p tin theo ả ộ c a toàn b các b n ơ ầ ự ủ t tu n t
ụ ữ ượ ổ ứ dài, mà chúng đ ệ ự . Vì nh ng bàn ghi t n t t ờ ạ ượ ượ ử ch c này đ t đ đ c x lý. Hình th c t ế ụ ọ ữ các tác v đ c/ vi ngôn ng Pascal xu t phát t ữ ệ ghi d li u trong kho ng hai tác v put() và get().
ế ố ữ ệ ở i ta mu n truy c p trên các d li u trong dãy tu n t ầ ự
ả ườ Tuy nhiên, n u ng ả ậ ạ ề khác, do đó, đi u đó x y ra l ậ i càng vô cùng ch m.
ỳ ọ ệ Các t p tin tu ch n (random access files ):
ệ ể ượ ộ ơ ế ệ Nh c đi m nêu
ằ trên nh m d n t ậ ế
ở ộ ự b t k . Ý t c th c hi n b i s t o l p c a h
ầ ự ấ ỳ ổ ắ ố ệ ự ệ ề ạ ệ ể ụ i vi c kh c ph c m t c ch t p tin, ộ ượ ắ c s p x p theo m t ở ự ạ ậ ủ ệ ề đĩa c ng. H u h t các h th ng t p tin đ u t o đi u ki n cho ki u truy
ứ ờ ệ ưở ế ị ầ ể ị
ầ ự ể ậ ộ ọ ỳ ẫ ớ ả mà nó cho phép m t s truy c p trên b n ghi s li u đ ể ượ ng này có th đ dãy tu n t ệ ệ ố ố th ng ậ ệ ậ c p này nh vi c bi u th v trí truy c p t p tin. Khi truy c p t p tin tu ch n hay tu n t
ậ ệ ể ệ
, m t ki u truy c p này đ ụ trên nhi u h
ằ ầ ự ề ể ự ệ ệ ỳ ọ ố ớ ự ượ c th c ạ ừ ỏ ộ ờ ộ b m t lo i hi n nh m t ki u khác; tuy nhiên, nó không nh m m c đích t ướ ề ệ ả ườ nào c . Ng i ta có th th c hi n các t p tin tu n t ng khác ợ ắ ủ ổ i l m. đĩa. Đ i v i các t p tin tu ch n thì đi u đó không có l nhau c a
ế c đ a ra, thì ng
ế ộ ơ Tuy nhiên, n u có m t c ch n i dung t p tin đ ậ ượ ơ ư ộ ể
ế ộ ả ế ệ ệ ẽ ả ậ ự ộ
ệ ệ ố ả ươ ơ ề ọ ệ ừ ệ
i ta ằ ạ ể i, ệ i ta ph i tôn tr ng c ch t p tin và ph i th c thi m t cách hi u nghi m ng ti n đi u hành hi n có. T lý do này, trong các h th ng ngân ậ ươ ữ ệ ệ ơ ườ ấ th y r ng, ti n hành truy c p c hai ki u s ch m h n m t ki u. Tóm l ườ ng ằ b ng các ph ữ ệ hàng d li u còn có nh ng ph ng pháp truy c p hi u nghi m h n.
ỉ ố ầ ự ệ Các t p tin ch s tu n t (index sequential files) :
ạ ệ c c u thành t
ẩ ừ ọ
ể ở
ự ượ ệ
ừ ầ
ượ ự ọ ầ ủ ệ ỗ ặ ộ
ủ ệ ố ủ ề ệ
ể ư ụ ỉ ấ ộ ể
ự ệ ụ
ữ ệ ấ ả
ượ ấ ữ ệ data records), chúng ả các b n ghi d li u ( Lo i t p tin này đ ế ộ ở ắ ế ượ ắ c s p x p theo m t tiêu chu n g i là s p x p theo chìa khoá (key) và kh i đ ỉ ố ỉ ố ộ ằ ư ụ ầ ủ ệ đ u c a t p tin là m t ch s . Trong th m c ch s , các ki u “đóng/m ” b ng ả ề ụ ể ế ạ c th c thi (thí d ki u đi n vào các t p tin qu n chìa khoá đ c ki n t o và đ ể ườ ậ i ta có th truy c p nhanh chóng lý nhân s : h tên, ngày sinh, quê quán…); ng ị ả ộ ợ ứ ạ ượ ừ c tr c u m t kho ng giá tr thích i đ t ng ph n c a t p tin; t ng ph n này l ấ ả ư ế ứ ư ấ t c ng c a m i chìa khoá. Vì m t ki u c u trúc nh th thì đ c tr ng cho t ể ộ các h th ng t p tin c a các th m c. Chúng ta có th nhìn th y đi u này m t ụ ề ệ ỉ ố ớ ấ ơ cách chính xác h n: Hình 4.9 ch ra c u trúc ki u ch s v i m t thí d v t p ả ế ượ ắ ộ c s p x p theo m t chìa khoá, thí d theo tin qu n lý nhân s . T p tin này đ ừ ẻ ượ ạ ậ ổ ứ l a tu i. Các b n ghi d li u riêng l c t o l p qua mũi tên xu t phát t đ ậ ố b c s 0.
Hình 4.9****************************
ớ ấ ậ ữ Chìa khoá l n nh t (con s l n nh t) c a m t t p tin (ô hình ch nh t nh
ắ ầ ừ ỉ ố ủ ậ ố
ở ủ ượ ủ ậ ố ố ớ ấ ch s c a b c s 0 đ ộ ộ ệ ả ở ỉ ố ủ ậ ố ượ
ế ữ ệ ủ
ả ạ ệ ả ả ả
ế ườ ấ ấ d ch chuy n t ủ i lên cho t
ả i khi ng ả ả ớ ể ọ i ta có th đ c b n ghi d
ừ ệ ụ ệ
t p tin. ả ấ ự ể ị ầ ầ ự ị ệ ố ủ ữ ệ ượ ạ c t o ra có m c đích t i ta th c nghi m đ mô t
ố ượ ườ ạ
ả ậ ấ
ữ ệ ớ ượ ớ ẽ ộ
ệ ụ ề ể ụ ấ ả ố ầ ủ ữ ậ
ể ạ ớ ứ ả
ấ ợ i các c u trúc tr giúp cho vi c t
ữ ệ ườ ư ch s c a b c s 1; chìa c mô t hình 4.9) b t đ u t ỉ ố ủ ậ ấ ủ ỉ ớ khoá l n nh t c a m t đo n t p tin c a b c s 1đ ch s c a b c c ch ra ị ộ ườ ố s 2… N u ng i ta tìm b n ghi d li u c a m t chìa khoá xác đ nh x, do đó, ỉ ố ứ ủ ườ i ta ph i xác đ nh kho ng xu t phát c a ch s th 2, mà trong kho ng này ng ờ ừ ớ ạ ồ ạ gi t n t i h n trên c a kho ng này, nh i chìa khoá c n tìm, và xu t phát t ậ ắ ể ừ ướ i ta d b c s p x p, các t p tin tu n t ữ ườ ấ tìm th y con s c a b n ghi d li u. Sau đó, ng li u mà nó đ ậ ế ườ ng v t lý N u ng c u trúc logic cho các đ i t ể ế ườ i ta có th v t đ ng (track), hình tr (cylinder), hình qu t (sector), do đó ng ả ể ổ ứ ả ễ ch c b n d dàng nh n đ c v n đ đ tái b n các b n ghi d li u và đ t ố ệ ổ ứ ch c b n ghi v i chìa khóa s 41 (xem ghi m t cách m i m . Thí d , vi c t ỗ ộ ữ ề ươ ng đ i đ y đ , vì m i h p ch nh t có hình 4.9) đ t o nên nh ng v n đ t ẵ ự ấ kh năng l n nh t là 3 chìa khoá và nó luôn luôn ch a đ ng s n sàng 3 chìa ệ ổ ứ ầ ớ ch c các dòng khoá này. Do đó, chúng c n t ỏ ổ ữ ệ ng xuyên các d li u và chúng đòi h i ngay d li u phát sinh khi thay đ i th
ặ ệ ề ệ ủ ệ
ổ ế ớ ấ ỉ ố ư ụ
ủ ự ệ ệ ớ ố ệ
ệ ứ ạ ộ ệ ố ự ố ớ
ấ ệ ế ư ộ ự ơ ồ ổ
ổ ứ ữ ấ ộ ả ầ ớ t, đi u đó xu t hi n khi t ch c d m t b n ghi m i và đ y đ t p tin. Đ c bi ườ ề ệ ng hay thay đ i. N u ch s th m c cho ta li u v i r t nhi u chìa khóa và th ộ ệ ố ư ụ ủ ế ộ t n i dùng th m c c a m t h th ng các t p tin và v i các chìa khoá này, bi ộ ớ ế ệ chúng ch a đ ng s tham chi u t p tin (tên t p tin, s t p tin…) c a b nh ợ ể ệ ệ ả qu ng đ i. Đ i v i m t h th ng t p tin hi u nghi m, nó thì khó thích h p đ ơ ồ ỉ ố ư ụ ổ ứ t ch c các chìa khóa thành các ch s th m c theo s đ khác nhau, mà s đ này cho phép m t s tìm ki m nhanh nh là vi c b sung vào hay l y đi linh ho t các chìa khóa.
ổ ự
ộ ầ ỉ ộ ầ ề ế
ộ ủ ờ
ớ ể
ể ắ ế ế
ộ ậ ụ ộ
ỉ ố ậ ố ạ ượ ỏ ơ
ố ớ ế ố ụ ữ
ử ụ ể ả c chúng ta s d ng đ kh o sát k t qu trong kho ng gi
ả ơ ồ ờ ả , cành này s là m t kho ng s đ cây trung gian đ
ượ ằ
ự ề
ủ ẻ ậ
ữ ệ ư ế ớ ư ầ ộ
ự ế ố ớ ở ề ượ i các lá cây đ
ị ở ạ ỗ ệ Thêm vào đó, chúng ta th c hi n 2 thay đ i. Đ u tiên chúng tag hi chép m i ượ ệ ư ụ c t ki m đ chìa khoá vào m t nút c a cây th m c ch m t l n; đi u này ti ộ ạ ẽ ế không gian b nh và th i gian tìm ki m. Sau đó, chúng ta s đem l i m t ý ầ ế ị ả nghĩa khác cho ki u này: Trong hình 4.9, đ u tiên, chúng ta ph i quy t đ nh trên ở ỗ ấ ầ m t b c, chìa khóa c n tìm đ s p x p thì ch nào (?). N u chúng ta tìm th y, ứ ế ậ t nó thu c ch s b c s 2, t c là thí d chìa khoá s 60, do đó, chúng ta nh n bi ế ụ ơ c ti p t c chìa khoá này thì l n h n 48 và nh h n 99, và cho nên nó là lo i đ ắ ẫ ớ i cho đ n s 99. Tác v so sánh gi a các chìa khoá có tính nguyên t c này d n t ớ ạ ớ ả ả ế ượ i h n này (60 t i đ ự ạ ả ớ ạ ố i h n này, mà vào kho ng t 99) và không n i các cành vào kho ng gi t o. Bây ộ ữ ượ ế ố ẽ gi c k t n i gi a các chìa ị ữ ẫ ớ i các chìa khoá mà chúng n m trong giá tr gi a 2 khoá nói khoá và đ c d n t ớ m1 chìa khóa. ấ m s tách nhánh và v i ự ỗ ứ trên. M i nút ch a đ ng nhi u nh t ả ấ ư Chúng ta nh n th y các lá c a cây (hay các b n ghi d li u riêng l ) hình nh ấ ộ không thu c cây lúc đ u. Hình nh 4.10 là m t cây nh th , v i nhi u nh t 3 ể ỗ ộ chìa khóa trên m i h p chìa khóa, mà c bi u đó s k t n i t th b i các mũi tên.
Hình 4.10******************************
ộ ộ ễ ư ế ể ạ ậ
ộ ầ ề ừ ộ ậ ố ư ụ ầ
ị ế ớ
ộ ế ầ
ượ ố ị
ố ả ụ ế ệ ố
ậ ố ơ
ướ ướ ố i. Bây gi
ẽ ộ ặ ằ ầ
ư ở ậ ơ ở ế ng nhìn xu ng d ầ ượ c s trí: chìa khóa đ
ỉ ố ủ ậ ở nh ộ ộ Chúng ta có th t o l p m t cách d dàng m t cây th m c nh th . Chúng ế ấ h p chìa khóa b c s 0 và đi n đ y h p đ u tiên này cho đ n ta xu t phát t ỉ ố ủ ụ ố ầ khi đ y tràn. Chìa khóa ti p theo (thí d s 37) d ch lên phía trên v i ch s c a ế ạ ượ ậ ố c làm đ y và khi đó chìa khóa ti p i đ b c s 1. H p chìa khóa ti p theo l ự ề ạ ượ i đ c th c c d ch lên phía trên. Đi u đó đ theo (thí d chìa khóa s 56) l ứ ế hi n cho đ n cu i b n ghi chìa khóa. N u chìa khóa cu i cùng là chìa khóa th ị m, do đó, nó s không d ch lên b c s cao h n, khi đó, chúng ta tách chia m chìa ờ khóa thành 2 h p chìa khóa khác nhau, theo h ộ ế ạ ế n u trên m t b ng k c nh cao h n, h p chìa khóa đ u tiên đã đ y tràn, do đó, ầ ẽ ượ ử ấ ươ t c đ m đ u b c th p h n, tiên t ự i m t h p có ch s c a b c ơ đây s đ đó.
ớ ữ ể ể ng t ớ ớ ấ V i c u trúc cây m i này, chúng ta đã đ t đ
ể ế ợ ơ ạ ượ ộ ộ ư ễ ậ c p nhanh h n: chúng ta có th k t h p m t cách d dàng các chìa khoá b c m t u đi m n a đ truy ổ
ừ Ở phía trên r i l n l đây, chúng xu t phát t
ộ i. N u chìa khóa ch a h t n t ị ừ ế ợ ồ ầ ượ ư ề ồ ạ ư ế i m t lá cây nh th , bây gi
ủ
ộ ộ ể
ộ ầ ở ệ ả t nhiên, chìa khoá đó, t
ở ư ở ậ ế ạ b c k c nh đ ả ộ ề ớ i. Tuy nhiên, đ c l p v i đi u đó, m t gi ậ ế ợ i thu t k t h p đ
ớ ộ ả ấ t đi qua cây và tìm kho ng sung. ế ạ ồ ạ i i, thì, chúng ta d ng l nào mà chìa khóa t n t ớ ờ ạ ỉ m t lá cây. Sauk hi ch đ nh t chúng ta k t h p v i ậ ế chìa khóa đã có c a mình. N u h p chìa khoá đã đi theo qua, do v y, chúng ta có ướ ộ ể ử ng trong h p theo h th th nghi m m t l n, di chuy n các chìa khoá d ra ấ ị ượ ự ế ừ c d ki n d ch t trái qua ph i, mà ế ượ ộ ậ ể ớ t c thi chuy n t ư ậ l p nh sau: ườ + Ng i ata phân chia h p chìa khóa có m chìa khóa thành 2 h p v i các chìa
ộ khóa S1,…,S[m/2]1, S[m/2]+1,…,Sm.
gi a lên trên
ườ ườ ở ữ ạ ợ ở ộ ạ
+Ng + Tr
[m/2] đó h p chìa khóa đã ch y qua, thì ng
ể i ta di chuy n chìa khoá S ng h p ở ậ ầ b c g n đó. ẽ ử ườ i ta s x lý t i đây.
ỏ ượ
ằ ư c phân tích ng ạ , chúng ta l u ý r ng, chúng ta đã t o ra đ
ư ụ Tác v xoá b các chìa khóa thì đ ờ Bây gi ộ
ộ ậ ầ ề ượ ố ượ ệ trên m t bình di n nh nhau và s l ộ c đi n đ y m t cách tho
ộ ữ
ợ ườ ở ố ỉ ồ ạ ng h p: ch t n t g c cây có th x y ra tr ượ ạ i: c l ề ộ ượ c m t cây mà lá cây đ u ị ng các nhánh b tách ra là nh nhau. Do ả ấ ự i đa m nhánh và m1 chìa khóa thì m t n a các nhánh [m/2] th c ch t i 1 chìa
ố ự ữ ệ c s d ng. Khi đó, ằ ấ
ọ ậ ề ể ả ấ ư ậ M t lo i cây cho c u trúc d li u nh v y có tên g i là cây B (BTree) do ứ ấ ở trên, ta nh n th y: V hình th c,
ễ c di n gi ư i nh sau:
ng (1979). Xem hình 4.10 ả ượ ư ỗ ớ ố ượ ố (1). M i cành cũng nh m i nút (t i g c và lá ) đ ể i thi u k = ả c to ra t
[m/2] và t
i đa k=m cành. ứ ự
ư ở ấ ằ đó, chúng ta nh n th y r ng, các h p chìa khoá đ ớ ố mãn v i t ượ ử ụ đ ớ khóa v i 2 nhánh, tuy r ng con s th c ch t là m nhánh. ạ ộ ề ướ D.Comer đ x ộ cây B là m t cây đ ỗ ố ỗ ấ ả ề ở ữ ư ằ ộ trên m t bình di n. Chúng ta l u ý r ng, nh ng là
nào không ch a đ ng chìa khóa thì không đ
ỉ ố (2). M i nút ch a đ ng k1 chìa khoá (hay ch s ) (3). T t c các lá đ u ứ ự ư ậ ớ ổ ượ ư ằ ậ ọ M t cây nh v y đ
ấ i ta l u ý r ng, v i t ng s ấ b c th p nh t. (Vì sao? s c g i là cây b c m. Ng trên cây là N thì chúng ta có N+1 lá
ư ướ ể
ể ạ ố ệ ượ c quan tâm. ố ườ ẽ ở ậ ố ộ i đây). Cây B có th đi qua m t cách nhanh chóng: G c ế ạ i thi u [m/2] i có t
ở i thích nh d i thi u hai cành và m i cành trong b c k c nh l ậ ở ậ ế ể ộ chìa khóa ả ượ đ c gi ể ố cây có t cành, do v y, ậ ộ ố i thi u m t s cành là: b c k n t n t
ầ ự ỗ ồ ạ ố i t 2.[m/2].[m/2]…= 2.[m/2]n1. (4.1) Cho nên, đ i v i s l ế tìm ki m)
ng các b c c n dùng (g i là dãy tu n t ề ậ ầ ố ớ ố ượ ẽ ẫ ớ ớ v i N chìa khoá và N+1 lá cây thì s d n t ọ ệ i đi u ki n sau đây:
ườ ố ậ ọ ố N+1≥ [m/2]n1 (4.2) Hay: log[m/2](N+1)/2 ≥ n1 (4.3) ố Trong đó, ng ố i ta g i N: s chìa khoá hay s lá cây; n: s b c; m: s cành
cây.
ụ ề ạ ề ệ ờ t ki m th i gian r t nhi u, thí d : khi m=200 i m t s ti Đi u đó đã đem l
và N=1,98.106 thì theo đi u ki n (4.3) chúng ta c n t ề
ấ ả ấ ế ể ủ ươ ườ ộ ự ế ấ ầ ớ ệ i: n1 <= log100(0,99.106) = log100(0,99) +log100(1003)< 3. Hay : 3≥ n1 Đ tho mãn b t ph ố ng trình cu i cùng, ng
ể ủ ậ ố i đa c a cây B cho ví d này là n=3. Tóm l
ị ậ ụ ệ ậ ố i đa c a cây đã xác đ nh, t p tin s đ
ễ ướ ủ ấ i ta nh n th y v trái c a nó ạ i, ấ ẽ ượ c tìm th y ậ ự làm th t ng t
ớ ề ố ượ
ằ ề ườ ỉ ch có th là n1 =2; khi đó b c t ớ v i chìa khóa đã cho và b c t ộ ề m t cách d dàng! Đi u đó cho th y các cây B có khuynh h ữ ệ ấ ng đi u vào các d li u gia tăng l n lên. th p xu ng khi s l Có r t nhi u hình thái khác nhau c a cây B, b ng cách, ng
ị ắ ề ố ấ ỗ ậ ủ ề
ỉ ấ
ả ề ẫ ọ
ộ ự ộ ộ ệ ề
ả ơ ả ụ ượ ơ ế ấ ấ ể ữ ệ ể ả ế ấ ng c b n đ c i ti n c u trúc cây đ
ộ ưở ỗ ỉ ử ụ ọ
ạ ỏ ộ ạ ớ
ệ ả ế ạ ổ
ả ả ế ỉ ố ủ ậ ộ ượ ạ ỉ
ộ ể ấ ạ ị ự ề ề ệ ớ
ủ ớ
ế ạ ầ ể ề
ộ ộ ượ ả ằ c trình bày trong m t gi ộ ự ng này đ
ộ ể ọ i ta có th ch n ổ cho m i b c giá tr m khác nhau. V nguyên t c, đi u đó không làm thay đ i ố ậ thu t toán, mà nó ch là v n đ d n xu t c u trúc cây. Sau đây, chúng ta mu n ễ ả kh o sát m t kh năng quan tr ng khác, đ làm gia tăng ý nghĩa th c ti n: nó ượ c các h đi u hành và các ngân hàng d li u áp d ng m t cách r ng rãi. đ ờ c đ n gi n nh lý thuy t cây B Ý t ầ ạ ở là ch : không ch s d ng các h p đ y chìa khóa (còn g i là các phân đo n), ữ mà còn chia nh m t phân đo n thành hai phân đo n m i khi có các b n ghi d ổ li u b sung, và còn ph n nh các thay đ i trong ch s c a b c k c nh. Các ầ ủ ớ c liên k t năng đ ng v i nhau qua b ch th . S đi n đ y c a phân đo n đ ẹ ườ ể ả ộ i ta có hai h p chìa khóa m i có th r t h n h p. Đ c i thi n đi u này, ng ượ ở i các chìa khóa có ý nghĩa th xem xét t phía trên c a các nút k c nh đã đ c ạ ượ ơ ầ c m t s cân b ng và làm đ y h p chìa đi u đ y h n, do đó, chúng ta đ t đ ả ưở ơ ộ ớ i khóa m i m t cách hoàn h o h n. Ý t ấ ư thu t duy nh t nh sau: ườ i ta thâu tóm h p chìa khóa có m1 chìa khóa, h p chìa khóa k ậ (cid:0) Ng
ộ ế ạ ậ ộ
1, S2,. ..,S2n.
ư ờ ộ , h p này ch a đ ng các chìa khóa S ấ ấ B y gi
ớ ố ộ ế ơ ạ c nh có m chìa khoá cũng nh các chìa khóa khác thu c b c k c nh cao h n ớ ộ ộ i m t h p duy nh t. t (cid:0) Ng ườ
ỉ ố ơ ứ ự i ta phân chia các chìa khóa trong 3 h p v i s các chìa khóa cho ớ A và SB v i các ễ ể ượ c bi u di n
ứ ể
ỗ ộ m i h p [(2m2)/3],[(2m1)/3] và [2m/3]. Khi đó, hai chìa khóa S ớ ậ ỉ ố ch s A và B đi lên phía trên v i b c có ch s cao h n. A và B đ ở b i các bi u th c: A = [(2m2)/3] +1 (4.4) B = [(2m1)/3] +1 + [(2m1)/3] +1 (4.5)
ộ ờ ạ ả
ỗ ở ườ ớ ố ộ ử ấ B y gi c làm đ y b i các chìa khóa; do đó, đ i di n v i cây B, ng i ta nh n đ
ể ớ ị c bi u th là cây B
ượ ệ ử ụ ả ủ ố ở ả , m i m t trong 3 phân đo n thì không ph i m t n a mà kho ng 2/3 ậ ượ ệ ầ c * (B* tree). Hình 4.11 ở ả ế ỉ ấ i cho th y k t qu c a vi c s d ng chìa khóa s 41 c ch
ở ượ đ ơ ộ m t cây c i ti n h n; cây m i này đ ế ướ d ra trong hình 4.10 ượ trong đây đ *. trên: hình 4.11 (a) là cây B, còn hình 4.11(b) là cây B
Hình 4.11***********************************
ượ M t cách hình th c, theo đ nh nghĩa c a cây B và cây B* đ c pahan bi ệ t
ộ ề ị ệ ệ ở ủ c nêu
ề ư ỗ ỗ ượ ớ ố ố ứ ổ qua đi u ki n thay đ i (đi u ki n 1 đ 1). M i nhánh cũng nh m i nút (t i g c và lá) đ ư trên) nh sau: ượ ẻ c l nhánh thêm t ể i thi u
ể ố
ủ ộ
ố i đa 2[(2m1)/3]+1 s phân nhánh. Do đó, g c cây ỗ ộ c phân chia thành 2 h p chìa khóa v i s chìa khóa c a m i h p ố ớ ư ự ớ ố ớ ộ ố k= (2m1)/3 và t i đa m cành. ố ố 2). G c có t i thi u 2 và t ể ượ có th đ [(2m2)/3] (v i l u ý c ng thêm 1 chìa cho g c m i ).
ề ạ Theo D.Comer (1979), còn có nhi u d ng khác n a c a cây B; v i giáo trình
ữ ủ ư ậ ệ ề ộ ự ề ớ ừ ủ nguyên lý h đi u hành, m t s trình bày v cây B nh v y là v a đ .
c
ả ế ệ
ượ (inverted files) và đa danh sách (multi liste): ữ ệ
ề ả
ữ ệ i các b n ghi d li u đ
ượ ứ ự
ệ T p tin đ o ng ượ ắ Ở ơ c s p c ch t p tin này, nh ng thông tin v các b n ghi d li u đã đ ố ớ ế ạ ộ i theo các chìa khóa khác nhau. Đ i v i ỉ ộ ế ượ ả c vi t thành m t ch ả c ch a đ ng trong các b n ghi này. Hình
ộ ệ ớ ữ ầ ừ ượ ắ ế c s p x p l x p (m t cách tu n t ) đ ế ớ ỗ m i chìa khóa, các tham chi u t ố ở ầ ệ s đ u t p tin; chìa khóa cũng đ ỉ 4.12 ch ra m t t p tin v i đa danh sách.
Hình 4.12*******************************
ề ệ ượ ắ ắ ầ Khi vi c đi n vào b t đ u, các danh sách đ
ị ủ ỉ ố ế ườ ở trên). Tuy nhiên, ng ả
ớ ở ề ự ượ ấ ỉ ẫ trong hình 4.12 th c ra v n ch a rõ ràng. Đi u đó đ
ả ỉ ố ủ ả c s p x p theo ch s c a b n ể ắ ghi, xem chìa khóa 1 và 2 (hình 4.12 i ta cũng có th s p ế x p theo ch s các giá tr tăng hay gi m c a các chìa khóa, do đó, c u trúc phân ư nhánh c ch ra v i danh sách các b n ghi đ i v i chìa khóa m (thí d trong hình 4.12 là 1, 3, 2, 6, 5, 8).
ộ ộ ế ị ủ ụ ỉ t c các b ch th c a m t chìa khóa trong ch s
ủ ệ ượ ả c c đ o ng c bi u th là
ể ứ
ị ằ ượ ừ ố ớ ế ợ ấ ả N u chúng ta k t h p t ắ ế b t đàu c a t p tin và không vi ệ ề t p tin đ đi u này đ rút ra t ng
ệ ố ố ớ ệ ọ ượ ả ọ c khai thác t ợ c thích h p đ c bi t đ i v i vi c đ c ch n có quan chìa khóa. ặ t t
ị
ứ ệ ừ ổ M t s th c thi hi u nghi m cách t
ệ ớ h v i m t chìa khóa xác đ nh. ệ ệ ề ỉ ố ữ ệ ả t chúng vào trong các b n ghi d li u, do đó, cượ ượ : Khái ni m ệ đ o ng ượ đ ượ ả c ừ ệ ừ ả ị b n ghi, vi n ch ng, r ng, chúng ta không khai thác giá tr chìa khóa t ượ ạ ả i, b n ghi đ c l ệ Các t p tin đ o ng ộ ộ ự ự ự ượ
ừ ữ
ộ ệ ề ữ ệ ụ
ế ầ ơ ớ ụ i ta không c n thi
ữ ơ ủ ụ ữ
ủ ệ ề
ớ ủ ự ả
ả ỗ c m i ng ữ ệ i c a ngân hàng d li u che ph lên h ể ự ư ớ ớ ở ư ấ ệ ch c t p tin nh c u trúc v a nêu ệ ớ ệ ở c th c hi n trên đ trong h đi u hành các máy tính l n. T lý do này, h ố ứ ớ ư ề đi u hành Unix v i t cách là m t h đi u hành máy tính đ ng v ng lâu dài đ i ứ ươ ề ớ ng trình ng d ng, v i các áp d ng v ngân hàng d li u; vì trong các ch ả ạ ậ ụ ườ t ph i t o l p trên nh ng tác v cao h n. Các l p trung ng ế ơ ỳ ệ gian gi a các tác v liên hi p (complex) và c ch đ n gi n c a các hàm tu ườ ử ụ ả ượ ọ i s d ng ch n ReadFile() và WriteFile() c a h đi u hành ph i đ ệ ề ủ ự ế ấ vi t t l y, mà v i đi u đó, s c nh gi ứ ộ ề duy ki u này còn có vai trò đi u hành Unix v i m c đ cao. Trong khi đó, s t
ể ụ ệ ả ộ ớ
ậ ớ ấ ổ ữ ớ ủ ờ ử t, vì nh ng b vi x lý v i n b n m i có ộ ằ đĩa đ i m i đã làm cân b ng t n hao c a m t
ề ặ ề đáng k trong nhi u áp d ng đ c bi ổ ố ộ t c đ truy c p nhanh và vì các ấ ớ l p trung gian r t nhi u.
ệ
ượ ả
ạ ộ ớ (memory mapping files)
4.4.5. Các t p tin đ
c nh x b nh
ớ ệ ệ ệ ườ Các t p tin v i vi c truy c p tu ch n th
ườ ẽ ư
ườ ng đ ứ ớ ự ạ ộ ớ i ta có th xem xét các t p tin
ỳ ọ ể trên b nh qu ng đ i nh là m t s k ề ở ả ả ớ
ể ớ ế ướ ả
ướ ả ế
ộ ộ c ti p theo, và m t cách đúng m c (tr ộ ệ ữ ạ ộ ả ớ ươ ượ ệ ọ ượ ả i ta g i là t p tin nh x b nh ; t ủ ộ ộ ằ ớ , b nh cũng đ ề ự ộ ng t
ạ ượ ậ c làm vi c m nh m trên ế ộ i ta có th nghiên c u ti p s phân tích nh sau: b nh chính (RAM). Ng ộ ự ế ư ả ệ Ng ạ ự ặ ụ ủ ộ t c c a b nh chính trên b nh qu ng đ i. Cho nên, đi u đó đ t ra, ph i th c ứ ệ ạ ư ộ c sau nh m t) ph i tái t o hi n b ệ ớ ộ ớ ộ ự ế ố ự m t s k t n i tr c ti p m t t p tin v i m t kho ng c a b nh chính, mà t p tin đ c tách chia thành nh ng kho ng có chi u dài b ng m t trang. Khi đó, ườ ng c phân chia thành các trang.
ế ố ư ế ẽ ạ ượ ở ọ ệ ố
ạ ư M t ki u k t n i nh th s đ t đ ượ ả ộ ự ế ộ c nh x nh là m t s thay th các trang b nh chính
ớ ạ ề ộ ế ỉ ả ủ ị
ộ
ộ ể c b i g i h th ng; trong đó, các trang ở ộ ệ ủ c a m t t p tin đ trong không gian đ a ch o c a m t ti n trình. Hình 4.13 minh ho đi u này ầ ủ m t cách đ y đ . ự ố ơ ệ ả ộ Vi c th c thi m t c ch nh v y thì t
c n p, do đó, mi n c a t p tin đ ợ ộ ế ạ ề ượ ư ế ề ộ ớ ở ộ ơ ế ư ậ ủ trên đó các trang c a m t ti n trình đ ả ra ươ ượ ạ ạ trên b nh qu ng đ i. Đi u đó, mang l ng đ i đ n gi n: Khi m t mi n mà ề ủ ệ ỉ c ch i th khác nhau nh sau: ữ i nh ng l
ộ
ượ ọ ượ ử ụ ệ ế c đ c, n u nó đ ầ c s d ng; vi c sao chép không c n
thi
ộ ộ ệ ử ụ
ộ ệ ự ộ : đ ng ươ ng trình s d ng các t p tin, m t b đ m logic đ ệ ụ ọ ề ế ế ệ t. Đi u đó thì khác bi t th c hi n vài tác v đ c/ vi
ớ ơ ế ộ ệ ệ ượ c ệ ớ ả t v i nh ượ c
ở ệ ề ự ộ ệ ệ ộ ạ : + Đ nhanh nh y ủ ệ Trang c a t p tin đ ạ ỏ ế ượ c lo i b . t đ + Ghi vào b đ m t Ở ầ ế h u h t các ch ự ế ể ầ t đ c n thi vi ạ ộ ớ x b nh : V i c ch trang (paging mechanismus), vi c ghi vào b đ m đ ự th c hi n m t cách t ệ đ ng và hi u nghi m b i h đi u hành.
Hình 4.13*****************************
ụ ờ ệ ộ
ử ụ ộ ơ ế ư ế ở ả ệ ề ừ
ộ i m t gi
ề ớ ớ Các tác v c hi u cho phép s d ng cùng nhau các kho ng b nh v i ề trong h đi u hành. Tuy ồ ạ ộ ệ i h n, do đó, m t t p tin đang t n t i ớ ả ủ t, mà còn thay đ i chi u dài c a nó. Khi đó, v i nh
c đ c và vi ề ừ ượ ế ả ế nhi u ti n trình. T lý do này, có m t c ch nh th ồ ạ ế ơ nhiên, c ch này còn t n t ỉ ượ ọ ế không ch đ ớ ấ ạ ộ x b nh , v n đ v a nói đã đ ớ ạ ổ i quy t. c gi
ạ ộ ớ ở
ụ ề ệ
ả
:
Thí d v t p tin nh x b nh
Unix
ọ ệ ố ạ ệ ề ể ạ ệ ả Đ t o các t p tin nh x , h đi u hành Unix có các g i h th ng quan
tr ng:ọ
ể ế ặ ả ạ ở ỉ ả ạ ị mmap() đ thi t đ t nh x ộ ệ không gian đ a ch o trong ph m vi m t t p
tin;
ớ ị ổ ệ i trên t p tin; ộ ế ở ạ t tr l c vi
ượ ệ ệ ạ ả ộ ế munmap() đ k t thúc nh x . N u n i dùng b nh b thay đ i, do đó các ổ ẽ ượ c thay đ i s đ ớ ừ ộ b nh ể ế trang đã đ ể ự msync() đ th c hi n t p tin t
ọ ệ ố ộ ườ ượ Thêm vào đó, còn có m t vài g i h th ng khác cũng th ng hay đ c dùng:
ờ ệ ạ ộ
ả ả ộ ộ ớ i phóng các kho ng b nh ; ớ i phóng các kho ng b nh ;
ỏ ộ ớ ớ ể ạ ậ msem_init() đ t o l p các c hi u cho ph m vi b nh ; ể ả msem_lock() đ gi ể ả msem_unlock() đ gi ể ờ msem_remove() đ r i kh i b nh
ạ ộ ớ ở
ệ
ả
:
T p tin nh x b nh
Windows NT
ệ ố ố ớ ộ ề
ộ ề
ng ( object) đ ệ ớ ụ ượ ạ ậ c t o l p; đ i t
ở ướ ể ượ ố ượ i cái tên đã bi c m b i các ti n trình khác nhau d
ả ế
ị ẩ ộ ố ượ ế ộ ộ ể ượ ả ẻ ớ ộ ả c chu n b . Các kho ng b nh riêng r
ở ọ ị
ượ ự ệ
ạ i.
ớ ạ ữ ộ ệ ả Đ i v i vi c nh x gi a b nh và h th ng các t p tin, thì b đi u hành ờ ượ ơ ấ ả c coi là cùng tác d ng v i nhau. Nh hàm I/O và b đi u hành c c u o đ ọ ng này g i CreateFileMapping(), m t đ i t ế ở có th đ t ớ ỳ OpenFileMapping(). Theo đó, m t kho ng b nh tu ý (vài Byte đ n 2 GBytes) ạ ớ ượ c nh x v i hàm có th đ đ ố ệ ớ ỉ ả trong không gian đ a ch o. V i hàm g i h th ng MapViewOfFile() ớ ạ c th c hi n và v i hàm FlushViewOfFile(), ph m v t p tin đ ượ UnmapViewOfFile() nó đ ượ ử ụ ệ ị c đóng l ể ủ ổ
ẻ ạ ộ
ế ớ ơ ấ ả ề ử ế ở
ứ ể ệ ặ c s d ng đ trao đ i thông tin c a các ti n trình; trong đó, ạ ớ ế ự c x lý m t cách tr c ti p b i nhi u ti n trình. ệ t
ờ ệ ườ ỉ ơ ế C ch này đ ệ ọ ệ ườ i ta ch n t p tin làm vi c trên ph m vi b nh chia x . V i c c u nh x ng ộ ể ượ ệ fie, t p tin này còn có th đ ộ ậ ồ ố ớ Đ i v i vi c làm đ ng b các ki u truy c p này, không có ch c năng đ c bi ệ ử ụ ng các c hi u. xem xét, mà ch có vi c s d ng bình th
ặ
ệ (special files)
ệ 4.4.6. Các t p tin đ c bi
t
ơ ữ ủ ủ Có nh ng c ch khác nhau c a h đi u hành, mà v i s tr giúp c a h
ố ế ể ộ
ệ ầ ổ ự
ệ ề ế ệ ớ ự ợ ể ượ ơ c chuy n đ i m t cách hài hoà; mà th ng t p tin, các c ch này có th đ ệ ữ ả i hay t o l p nh ng t p tin đích th c. không c n ph i lý gi ở ộ ươ ữ ộ ả M t trong nh ng ph
t b v t lý nh nh ng
ế ị ậ ộ ượ ủ ạ ậ ấ ủ ổ ế ệ ề ng pháp m r ng n i ti ng nh t c a h đi u hành ệ . M i cái ư ỗ ặ ệ ữ t t p tin đ c bi ệ ế ị ậ t b v t lý; dĩ nhiên, các t p tin này ệ Unix là vi c mô hình hóa các thi ế ộ ệ tên c a m t t p tin đ c thu x p là m t thi
ặ ể ệ t c bi u th v i tr ng thái c a m t
ư
ề ế ệ ị ớ ạ ổ ạ ế ộ t p tin đ c bi ể ả
ệ ệ ẽ ượ ệ
ủ ố ớ ệ ứ ư ế ạ ớ ế ị ầ
ố ở ệ ộ ế
ộ i m t thi ế ẽ ả ậ ấ ả ậ ệ ấ ả ệ . T t c các vi c truy c p symbol file) đ u có tác ụ ế ị t b , ch không ph i tác d ng lên t p tin. N u t p tin ị ự ế ị ộ c d ch t b nh th , do đó, khi th c hi n, t p tin s đ ế ị ẳ t b đ u cu i nào đó) và khi đó, t b (ch ng h n t ệ ủ ể ệ t c a ế ố ể ọ t trên t b đ u cu i đ đ c, do đó, nó s c m nh n t ặ ự ượ đ t c các ký t
ượ đ và các thay đ i tr ng thái đ i v i t p tin bi u tr ng này ( ự ụ d ng tr c ti p lên thi ế ượ t lên m t thi c vi đ ể ớ i thi chuy n t ượ c th hi n trên màn hình. N u m t ti n trình m t p tin đ c bi chúng đ ế ị ầ c vi thi bàn phím. ợ ữ ủ ằ
ề ự ế ặ ả
ấ ậ ủ ế
i s d ng ặ ả ả ậ ượ ạ ộ ấ ậ ằ ư ậ L i ích c a vi c mô hình hóa nh v y n m trong nh ng đi u có th t, r ng ệ ậ ườ ử ụ truy c p tr c ti p và hi u ng ả ơ ế ị t b ; m t khác, các c ch qu n lý và b o ề ệ ệ c đi u
ề ộ ợ ệ ộ ạ m t m t, nó đã t o ra kh năng cho ả qu lên các tính ch t v t lý c a thi ệ ủ ệ ề v c a h đi u hành ho t đ ng r t hi u qu ; và do đó, vi c truy c p đ ể ỉ ch nh và đi u khi n m t cách h p lý.
ệ
ặ
:
T p tin đ c bi
ệ ở t
Unix
ộ ẫ i v i đ Unix, có m t th m c t n t
ệ
ộ ệ ế ị ầ ự ọ
(
ố ự ừ ư
ng ký t ệ nh các thi ỳ ng d n /dev; ế ị ặ ượ ổ c b sung cho t ổ đĩa t ệ
ả ứ ữ c xem là các tu ch n, thí d các
ỗ ủ ụ ở ự ợ ọ ỳ ệ ượ ạ ổ c t o ra b i s tr
ệ ộ c các b kích thích thi
ư ụ ồ ạ ớ ườ ở đó, ể ệ ạ t b khác nhau. Có hai ki u t p tin thi t b : Lo i ủ ầ ệ , g i m t cách đ y đ là các t p tin đ c bi t ấ ả ự character oriented special files); chúng đ t c ế ị ầ ế ị ướ tính, máy in… t b đ u cu i, các t b h ặ ứ ệ ướ ủ ọ ầ ng t h ỳ ớ ấ ộ ể block oriented special files ); khi đó, nh ng kho ng b nh b y k ề đĩa c ng, các đĩa m m… ọ ệ ố giúp c a g i h th ng ợ i các g i h th ng close(), read(), write() t p tin này thích h p ế ị ạ ượ t b i đ ấ ẫ c xu t ng d n /dev/tty, các ký t ự ượ đ
ế ị ầ
ộ ệ ề Trong h đi u hành ồ ạ ớ i v i các thi các t p tin t n t ấ ệ ứ th nh t là các t p tin tu n t ướ ng ký t h các thi ọ ạ Lo i th hai là các t p tin tu ch n, g i đ y đ là các t p tin đ c bi ổ t ng th ( ể ượ (block) có th đ ạ ệ ộ ặ M i m t lo i t p tn đ c bi t đ ở ạ ọ ệ ố t mknod() và ủ ụ ủ ụ ặ ệ cho các th t c đ c bi t, mà các th t c này l ụ ớ ườ ử ụ ủ ệ ề c a h đi u hành s d ng. Thí d , v i đ ra và đ Ng
ụ đĩa t
ệ ệ
ộ ố t b đ u cu i. c đ c trên thi ế ừ ớ ơ ư ằ i ta l u ý r ng, v i c ch v a nêu, m t thi ặ ữ ệ ướ i nh ng tên t p tin đ c bi ặ ư ộ ệ c coi nh m t t p tin đ c bi ườ i m t cái tên khác, ng
ố
ẳ ộ
ế ị ể ậ ố ớ ố ở ị ổ ệ ị ư ế ế ị ể ượ t b nh th có th đ c ộ ổ ừ tính t khác nhau. Thí d , m t ẳ ụ ầ ự ạ ệ t, ch ng h n t p tin tu n t liên t c. ộ ệ ư ể t b này nh là m t t p i ta có th coi thi ớ ế ộ ự ng t ng th (kh i) và v i cái đó, đ truy c p tr c ti p trên m t ướ ọ ượ ạ c đ c tr c ; ch ng h n, m t kh i v i s 15 đ ộ trong b kích thích
ổ ữ ầ ự ụ ớ ả ượ ử ụ c s d ng. ế ư
m t vài thi ố ổ ể ẫ ộ ế ị ề ể ệ
t c các thi ặ ự ệ ặ
ế ị ầ ề ng ký t ậ ố ể ấ ả ư ệ ữ ệ ệ ướ t h ể ể ầ ố ượ ọ ườ ượ vay m n d ể ượ có th đ ả ướ ặ , d Ho c gi ể ệ ướ ặ t h tin đ c bi ố ư trong các kh i l u tr tu n t ộ ố ố m t kh i s 5. V i tác v này, các l nh đ nh v b sung ế ị t b ph i đ thi Ở ộ t bi nh máy in và thi ế ị t b kh i (t ng th ), do đó, nó thì có đi u ki n đ t thi ể ư th x ng hô là t p tin đ c bi cũng nh t p tin đ c bi ệ ổ t ng th (kh i). Vì giao di n đ truy c p trên các d li u thu n khi ớ t b đ u cu i thì không th l n l n v i t b đ u có ệ ướ t h ng ế t thì cho
ệ ả ầ
ị ệ ữ ặ phép không có c u trúc và không c n thông tin qu n lý, do đó, các t p tin đ c ế ị bi
ớ ệ
ẽ ượ ạ ầ ầ ướ ở ơ t b nguyên s . ộ ổ đĩa, v i l nh mount(), nút i trên m t ồ ệ ư ụ ủ ệ ố c nh x trên m t th m c c a h th ng t p tin đang t n c n p l n đ u tiên ư ụ trong th m c thì s đ
ạ c đó đã ớ ệ ấ ể ượ c bi u th là nh ng thi t này còn đ ồ ạ ệ ệ ố ể ử ụ Đ s d ng h th ng t p tin t n t ộ ả ượ ả ố ủ g c c a cây ph i đ ệ ạ t i. T t c các t p tin tr vào m t h th ng t p tin m i.
ấ ả ộ ệ ố ệ ề ặ
ậ ể Trong h đi u hành Unix, t p tin đ c bi i s d ng
ng do quan đi m c a ổ ạ ề ạ
ả ượ
ọ ệ ố ườ ệ ặ ị
ợ ệ ệ ụ ế
ộ ọ ệ ố i t
ớ ằ ệ
ộ ệ ể ệ ề ữ ờ ộ
ọ ệ ố ợ ả ữ ệ ượ ệ t đ c phô bày nh ng kh năng phi ủ ng ấ ế ị ậ ườ ử ụ khi truy c p trên thi ườ t b v t lý. T t th ị ể ổ ư ả ự ổ ố ộ c s thay đ i tr ng thái (nh thay đ i t c đ truy n đ t, thay đ i ki u khi ch u ệ ặ ờ ự ả ố ế t IOCTL() i n i ti p…) ph i đ t c th c hi n nh hàm g i h th ng đ c bi ộ ớ ự ể ố ử ụ ế ệ t. N u ng v i s bi u th thích h p t p tin đ c bi i ta mu n s d ng m t tính ề ậ ộ ặ ầ ứ ấ t vào các đĩa m m hay ch t ph n c ng đ c bi t, thí d : m t m t đ cao khi vi ườ ả ộ ự ộ ạ ự ộ m t s cu n l i qu n lý trong đ ng theo g i h th ng close(), do đó, ng ọ ệ ố ặ ệ ề ạ t m i b ng g i h th ng mknod(); h đi u hành Unix t o ra m t t p tin đ c bi ồ đ ng th i anh ta cũng chuy n giao cho b kích thích h đi u hành nh ng thông ố s thích h p khi g i h th ng.
ệ
ặ
:
T p tin đ c bi
ệ ở t
Windows NT
ọ ậ ừ các
ệ ế ế ệ ề ậ ả Các nhà thi ơ ờ ng th i và đã đ m nh n c ch c a các t p tin đ c bi
ả ố ượ ề ệ ặ
ặ ư ụ ệ ng t p tin đ c bi ệ ố ệ ề ả i qu n lý đ i t
ủ ả
ế ị ệ ợ
ệ ộ ệ ươ ẳ ị
ệ ề ớ ữ ng pháp đã kh ng đ nh. Nh ng ph ủ ụ ủ i và làm vi c nhi u trên các th t c c a b
ệ ề t k h đi u hành Windows NT đã h c t p t h đi u hành ế ủ ươ ệ ủ ệ ề đ t c a h đi u hành ườ ổ ệ ọ ữ Unix. Thêm vào đó, h đã phân b vi c qu n lý cây th m c cho nh ng ng i ả ệ qu n lý khác nhau. Vi c đi u hành các đ i t t cho phép ắ ườ ộ ng có toàn quy n trên các h th ng t p tin và b t bu c ng ả ả ệ ề . ph i quan tâm t h đi u hành ả ỗ t b ph i phù h p cho m t t p tin o (virtual file), t p tin này đã xác M i thi ươ ị ng đ nh các đ i t ộ pháp này s đ kích thích thi ố ượ ớ ệ i vi c qu n lý t p tin và qu n lý I/O c a nhân ả ố ượ ẽ ượ t b ng và có nh ng ph ườ c ng ế ị ở ươ ch ữ i ta nói t ng sau.
ơ ế ệ ự ệ 4.5. Vi c th c thi c ch t p tin
ễ ộ ớ
ể
ụ 4.5.1. Bi u di n b nh liên t c
ộ ấ ươ ư ế ố ơ ươ ả
ộ ng pháp nh th thì t ộ ệ
ộ ệ
ụ ớ
ở
ỉ ượ ử ụ ể ế ắ ỗ ắ ơ ả ủ ng đ i đ n gi n: B t C u trúc c b n c a m t ph ư ụ ầ ỉ ố ớ ộ đ u không gian b nh là m t ch s hay m t th m c, mà trong đó các t p tin ệ ế ạ ể ượ ệ i đ ghi ti p các t p tin. M t t p tin thì t kê vào; và không gian còn l c li đ ể ạ ừ ưở ộ ế ượ ng v a nêu trên phát tri n c vi đ t liên t c v i nhau trong m t đo n. Ý t ư ụ ủ ộ ị ế ỗ ệ ờ ừ và các th m c là theo th i gian, trong đó m i t p tin chi m m t v trí c a đĩa t ế ưở ừ ớ ự . Vì ý t s khái quát các ngăn x p v i các dãy ng này thì quá trong đĩa t ể ổ ệ ứ c s d ng đ thu x p ch cho c ng nh c đ thay đ i t p tin, do đó, nó ch đ
ỏ ọ ố ượ ở ộ ệ ọ ng) ư ệ ớ trong m t t p tin l n (g i là th vi n
ề ệ nhi u t p tin nh (g i là các đ i t ệ các t p tin).
ể
ễ ộ ớ ể 4.5.2. Bi u di n b nh ki u danh sách
ộ ớ ở ộ ệ ụ
ằ ế ị ữ
ế ố ả Vi c quy t đ nh cho m t kho ng b nh liên t c là ộ ớ c phân ra nh ng kho ng có đ l n b ng nhau (block) và t Ư ể
ở ỗ ộ ấ ả ủ ượ ư ụ ẫ ỏ ch , t ộ i m t th m c h ng (b xoá nh m l n…) đ
ị ề ầ ậ ượ ả ớ ch : b nh ph i ả t c các block ươ ả ượ ng c k t n i trong m t danh sách. u đi m c a ph ị ộ ể c bi u th ở ứ ự ệ c ch a đ ng
ể ệ ệ
ươ ố ế ố
ả ọ i ta ph i đ c tr ố ể
ượ đ ộ ệ ủ c a m t t p tin ph i đ ỗ ạ pháp này là ấ g p đôi và các thông tin t p tin (tên, các quy n truy c p…) đ ầ ệ đ u t p tin. ệ ậ ủ ng pháp này là vi c truy c p t p tin kém hi u c đi m c a ph Nh ướ ườ ọ ườ ệ c i ta mu n đ c block s 123, do đó, ng ấ ả ế ể ướ t c 123 blocks đ có th l t qua danh sách cho đ n block s 123. Hình ươ ỉ ộ ượ nghi m: N u ng đó t 4.14 ch ra m t ph ư ế ng pháp nh th .
Hình 4.14*************************
ễ ộ ớ ượ
ể
ỉ ố ậ
ể
ị
4.5.3. Bi u di n b nh đ
c bi u th qua ch s t p trung
ệ c s b t l
ớ
ố
ượ ươ
ư ố ậ ộ
ố ế ụ ố ủ ể ằ ượ ự ấ ợ ủ ể ườ i c a ki u danh sách t p tin, b ng i ta có th tránh đ Ng ộ ề ườ ổ ườ i ta không phân b trong môi tr ng b nh các thông tin v dãy cách, ng ế ụ ớ ố ườ ầ ự ố i ta k t s kh i cũng nh danh sách các kh i liên t c v i nhau, mà ng tu n t ỉ ấ ọ ộ ợ c g i là c u trúc ch h p chúng trong m t kh i t p trung. Ph ng pháp này đ ứ ỗ ự ề ố ậ s t p trung, nó chính là m t danh sách, mà trong đó, m i s đi n vào ch a ự đ ng s c a kh i ti p t c trên đó.
Hình 4.15*****************************
ề ả ấ ớ ệ ề
ỗ ở ệ MSDOS B ng c p phát các t p tin (FAT) : ỗ ừ ượ V i h đi u hành MSDOS, m i đĩa t đ ả ộ ớ
ố ạ ấ
ở ộ ượ ố
ả
H t
ắ ầ ả ế ố ồ ị ớ
ộ
ự ề ươ ộ ơ ng ng m t đ n v b nh
ừ ộ
ỗ ệ ạ ố ượ ể ả c phân chia thành nhi u cung ố đo n (ạ sectors), m i sectors có đ l n kho ng 512 Byte. B t đ u là sector s 0 ệ ượ bootstrapsector), còn b ng c p phát t p c b trí cho cung đo n kh i đ ng ( đ ả ố c b trí các sector s 1 đ n s 5; các b n sao tin (file allocation table: FAT) đ ự ề ế ố ố ệ ồ ạ ở ả b o v t n t các sector s 6 đ n s 10. B ng FAT thì bao g m các s đi n i ớ ố ậ ụ ề ớ H, i FFF vào v i chi u dài 12 bits hay 3 s th p l c phân v i các giá tr 000 ứ ớ ấ ớ ả cho nên, b ng FAT có m t không gian l n nh t 512*5 = 2560 Byte ng v i ứ ớ ị ộ ả kho ng 1706 s đi n vào. M i s đi n vào thì t ứ ộ ụ ứ ị ộ ỗ ơ ủ c g i là m t sluster (t c m t c m sector) ng . M i đ n v b nh đ c a đĩa t ớ ể ạ ượ ấ ề ộ v i 1024 Byte, do đó, m t đĩa t c nhi u nh t trong MSDOS có th đ t đ ộ i thi u 1kByte. m t dung l ỗ ự ề ớ ượ ọ ừ ng kho ng 1,7 MB và m i t p tin đ t t
ộ ự ề ư ả ỗ M i m t s đi n vào b ng FAT có ý nghĩa nh sau:
ụ
ị ở ố ủ ố ự ề ể ầ 000H các cluster (c m) còn tr ng; ế ế 001H…FF0H cluster đã đ y; s đi n vào bi u th b i s c a cluster k ti p
ủ ệ c a t p tin;
ế ậ ị ể ử ụ FF1H…FF7H các cluster b khuy t t t không th s d ng do l ỗ ề ặ ậ i b m t v t
li u;ệ
ủ ệ ố FF8H…FFFH các cluster cu i cùng c a t p tin.
ầ ự ề Vì hai s đi n vào đ u tiên đ
ệ ủ ượ ầ ố ệ ả c s d ng cho vi c qu n lý, còn các t p tin ẫ ộ c d n ra
ượ ử ụ ớ ắ ầ ố b t đ u v i sector s 18, do đó, s sector đ u tiên c a m t cluster đ ứ ể ở b i bi u th c: ố ủ ỉ ố ủ ề (s c a sector) = (ch s c a đi n vào cluster 2)*2 +18. (4.6)
ể ề ệ ề ườ
ớ ể ả ộ ậ Bình th ủ ệ
ạ ệ ủ
ớ ế ở ộ ả ế ố
ệ ộ ủ ể ọ ề ệ ớ ạ ố ượ i h n s l
ở ả ườ ượ ộ ệ ạ t, ph i k t n i vi c đi n vào v i thông tin đã ph tĩnh l ả ể ỉ đó, ng ả i ta có th ch qu n lý 16
ị ế ng vi c đi n vào b ng FAT t o đi u ki n đ xác đ nh cluster ti p ủ ị ộ ệ theo c a t p tin m t cách đ c l p v i vi c che ph , do đó, vi c bi u th m t ầ ầ ủ ừ ộ m t cách đ y đ . Nó thì c n cluster kh i đ ng đ đ đ c m t t p tin c a đĩa t ệ ủ i. Tuy nhiên, vi c thi ộ ớ ng các cluster đã qu n lý; các b ng FAT có đ l n mã hoá này gi 3 = 212 = ỳ tu ý đ c kéo dài quá 5 sector, mà 4096 cluster ng v i kho ng 4 MB.
ứ ỡ ả ở ổ ớ ứ ơ ở Trên c s này,
ổ ỉ ố ủ
ộ ố ủ ộ ộ ớ ả đĩa c ng, kích c b ng FAT trong MSDOS s đ ề ả ượ ừ ph i đ ệ ợ có dung l ng 2 GB đó là m t đ l n ti n l
ộ ộ ớ ầ
ả ế
ả ấ ử ụ ệ ố ở
ệ ư ế ượ ừ ậ v t lý nh th đ
ồ ạ ấ ươ ẻ i, ph Ng
ẽ ượ c ớ ằ thay đ i: ch s c a cluster là m t s dài 16bit. Đi u đó cũng có nghĩa r ng, v i 216 = 65536 cluster, thì không gian c a đĩa t ộ ổ ủ c che ph . Khi m t đĩa ề ượ ừ i cho các máy tính, đi u đó có t 31/216 = 215 = 32168 Byte. Vì h u h t các t p tin thì ệ ế nghĩa m t cluster có đ l n 2 ở ả ệ ế trong kho ng 1kByte, nghĩa là ph i bi u m t 31 đ n 32 kByte cho vi c qu n ộ trong MSDOS, m t lý h th ng, khi đó hi u su t s d ng quá th p. Cho nên ộ ệ ố ớ ổ đĩa logic, mà v i m t h th ng đĩa t ệ t p tin riêng l , khi đó, chúng ch c n m t đ l n cluster nh thôi. ượ ạ c l ớ ấ ấ ề ổ c phân làm nhi u ỉ ầ ộ ộ ớ ẫ ng pháp này v n còn t n t ấ ớ ả ở ậ
ướ ể ớ ộ ỏ ệ ố ề ằ i v n đ , r ng khi các h th ng ư ụ trong ắ t qua, do đó, không gian b nh chính ch c
ủ
ượ ng 2 GByte = 2
ả ử ộ ổ th m t ượ ỉ ố ư ụ ứ ng 1 kByte = 2
10 Byte; m t danh sách ch s th m c có t ỗ ầ ể
ề ả
ề ố ỳ ể đĩa c ng có dung l ộ ượ ẫ 20, do đó, t
ố ớ ề ề ằ
31 Byte và m iỗ ố i c d n ra. M i l n đi n vào ph i đón ố i thi u 20 bit hay 3 Byte cho c s d ng. Đi u đó, có nghĩa r ng, đ i v i m t danh sách ả ượ ự ữ c d tr , ượ
31 / 210 = 2.106 l n đi n vào đ ầ i thi u m t con s tu ý 0…2 ượ ử ụ ả ả
ớ
ộ ự ề ử ụ ư ế ằ ỉ ệ t p tin l n thì danh sách t p trung cũng r t l n. Vì th m c chung ph i ể ớ ộ b nh chính đ có th nhìn l ắ ượ c che ph … ch n đ Thí dụ: Gi block có dung l thi u 2ể ộ ậ ố nh n t ộ ỗ ầ m i l n đi n vào đ ỉ ố ậ ch s t p trung, có kho ng 6 MByte b nh chính luôn luôn ph i đ và l u ý r ng, không ph i ch có s đi n vào s d ng h t dung l ng đó!
ễ ộ ớ ể
ỉ ố
ể
ị
4.5.4. Bi u di n b nh bi u th ch s phân b
ổ
ộ ọ ỉ ố ậ
ả ế ị ạ ệ ồ
M t quy t đ nh quan tr ng đ l a ch n t p tin ch s t p trung đ i v i b ớ ỗ ệ ữ
ỉ ố ộ ượ ế ỉ
ọ ệ ộ ả ượ ư c l u tr ố ệ i. N u ch có s t p tin phù h p đ ủ ợ ả ượ ả ạ ụ ẽ ể ự ẫ nh qu ng đ i thì bao g m vi c d n ra m t danh sách ch s riêng l m i t p tin và danh sách này ph i đ ở ướ d trong hình 4.16 ỉ ố index block) c a nó s ph i đ ố th , do đó, kh i ch s ( ố ớ ộ ẻ ố ớ đ i v i trong m t block, hãy so sánh ự c làm hài lòng th c i. c hoàn tr l
Hình 4.16********************
ấ ệ ỉ ố ẽ
ờ ệ ơ ệ ố ộ i, ng
ằ ấ ồ ạ , trong các h th ng t p tin đang t n t ệ
ề ấ ề ệ ớ ồ ạ ớ ườ i ta có th d n gi
ệ ế ể ẫ ạ ộ
ầ ớ ầ ả ặ
ỉ ố ứ
ố ớ ầ ề ị ề ỉ ố ủ ấ ớ
ừ ể ủ ế ộ ậ vào đĩa t
ộ ch c m t cách h th ng các danh sách ch s
ố
ẫ ỉ
ọ ề ượ c d n ra, và do đó, nh m tăng t c đ chuy n đ i ( ị ẽ ị ượ d ng tr
ở ươ ch ị ỉ ả ị
T t nhiên, các danh sách ch s s dài h n, khi đó, các t p tin thu c danh ườ ơ i ta sách đó cũng dài h n. B y gi ồ ạ ư i i v i vài block và cũng có ít t p tin t n t l u ý r ng, có r t nhi u t p tin t n t ỉ ố ộ ả i ra m t block ch s trong nhi u block. V i lý do này, ng ố ớ chính, mà đ i v i h u h t các t p tin, block này đã đ t yêu c u. Đ i v i m t vài ỉ ộ ỉ ố ệ i nhi u không gian cho ch s , chúng ta ph i đ t vào m t block ch t p tin c n t ỉ ệ ế ố ở ố ế cu i danh sách ch s . N u các t p s ti p theo,mà đ a ch logic c a nó đ ng ả ấ ả ẩ t c các block ch s ph i tin quá l n, thì đi u x y ra r t ch m, vì khi đó, t ầ ỉ ậ ị ầ ự ượ đ tìm ki m đ a ch v t lý c a block c n đ c đ c m t cách tu n t ể ổ ứ ệ ố ỉ ố ụ ằ tìm. Đi u đó nh m m c đích đ t ổ speed of translation) ể ộ ằ đã đ ở ướ ế ị ủ ỉ ậ ớ ủ ệ i các đ a ch v t lý c a thi i các đ a ch logic c a t p tin t t b . Hình 4.17 ướ ắ ụ ỏ nguyên t c đã đ đây s làm sáng t c c trình bày trong m c 3.3 ỉ ậ ậ ừ ề ổ ể ề v chuy n đ i nhi u b c t không gian đ a ch o thành không gian đ a ch v t lý.
Hình 4.17****************************
ệ ố
ự
ệ
ở
4.5.5. Th c thi h th ng t p tin
trong Unix
ế ươ ệ ề
ấ ử ụ ữ ừ ng pháp v a trình bày ụ ở ổ ặ ộ ự ế
ữ ố ớ ệ trên, đó ệ đây, trong nh ng ng d ng, m t s bi n đ i đ c bi t c đ n nh ng thông tin xác đáng đ i v i các t p tin
ề ề ở ộ H đi u hành ti ng tăm nh t s d ng ph ứ Ở ệ ề là h đi u hành Unix. ượ ệ ử c th nghi m đ gi đ ắ ư ng n cũng nh dài V đi u này, thì nút ch s đ u tiên (
ượ ạ ủ
ộ ậ ỉ ủ ậ ị
ổ ề ề ộ
ể ữ ố ị ỉ ố ở ộ trong m t block ch s . ỉ ố ầ ầ first indexnode) đ c t o b i m t ph n ữ ỉ ầ ị ứ ự khái quát, mà trong đó ch a đ ng các tên, các đ a ch đ u tiên c a các block d ế ể ộ ệ li u, và các đ a ch c a m t cây chuy n đ i gián ti p m t b c, hai b c và ba ậ b c. Hình 4.18 ch ra m t thí d t ng quát v đi u đó. ở ụ ổ ủ ỉ ố ượ ộ N i dùng đ
trên c a m t nút ch s đã đ ị ự ở ộ ỉ ỉ ượ c ch ra ượ ụ ể ự ể ấ ở ở c m r ng b i các s bi u th th c ch t ỉ c tu ch nh trong các bên trong, thí ộ ệ ố h th ng c th và đ
ớ ể ờ ệ ệ
ỉ ị ộ ộ ớ
Ở ạ
ể ồ ạ ở ậ ậ
ụ ở d Unix System V, v i các thông tin c hi u đ ngăn hãm t p tin, chúng đã ố ở ộ ỉ ố m r ng không gian cho b ch th (khi không gian b nh còn tr ng, nút ch s ự ề ậ ẽ ượ ầ ố ớ ế ợ đ u tiên s đ c treo vào danh sách b c hai k t h p), các s đi n vào đ i v i ệ ố ớ ớ ả ậ ở ạ b ng FAT v i hàm mount() và các thông tin tr ng thái đ i v i vi c truy c p ồ ạ ả i b ng FAT gián trong Unix System V không t n t trong m ng máy tính… ế ỉ ố ẫ ế ti p hai b c và ba b c; tuy nhiên, nút ch s v n có th t n t các block ti p i theo.
ế ng t
ộ ư ượ ự ộ ệ ộ ữ
ệ ộ ở ị ị
; còn v trí giao d ch hi n hành ặ ượ ế ợ ệ ậ ộ c k t h p thành m t block đ c bi
ố ủ ệ ệ ỏ
ư ự ỉ ố ươ , th c thu x p m t cách chính xác m t nút ch s ; t ỉ ố ẽ ố ủ ư thu x p nh là m t t p tin l u tr . Các s c a nút ch s s ả ớ trên b nh qu ng ọ t, còn g i là nút ệ ố ị t (super node). N u super node này b phá h ng, do đó, h th ng t p tin ử ụ ượ ỗ ệ M i t p tin đ ế ụ ệ m c t p tin cũng t ầ ự ộ ượ c trao m t cách tu n t đ ạ đ i (s c a block v t lý) đ ế ặ đ c bi không s d ng đ c.
Hình 4.18******************************
ế ố ủ ỉ ố ủ
ế ẽ ồ ạ ệ ề ề Tham chi u chìa khóa c a m t t p tin là s c a nút ch s , còn n u có nhi u i trong các
ộ ệ ố ớ ệ ế tham chi u (nhi u tên t p tin) đ i v i t p tin này thì chúng s t n t th m c khác nhau.
ơ ộ ư ụ ẽ ượ ạ ậ
ề ỉ ứ ự ủ ự ề
ư ụ ộ M t th m c s đ ỉ ố ủ ệ ầ ậ
ữ ở ầ ộ ỗ c l u tr
ư ấ ả ủ ệ ậ ủ ộ ớ
ể ề ế ộ ơ c đ c hay đ
ộ ớ ệ ễ
ệ ứ ừ
ề ữ ộ ự ề ư ụ ơ ở ắ ố ủ ả c t o l p m t cách đ n gi n: Nó ch ch a đ ng s c a ề nút ch s c a t p tin và tên (nh chi u dài tên, chi u dài c a s đi n vào…), ư ữ ngoài ra không c n gì thêm. T t c nh ng cái khác nh quy n truy c p…thì ư ụ ả ượ ư block đ u tiên c a t p tin. Vì m i th m c chi m m t kho ng đ ứ ớ ị ộ ả ớ ộ b nh , mà kho ng này là đa b c c a đ l n block (t c là m t đ n v b nh ể ượ ọ ư ụ ữ ượ ư ổ ượ c chuy n đ i nhanh), do đó, các th m c có th đ đ c l u tr ề ả ủ ự ổ ể nhanh và hi u qu . Vi c bi u di n b sung chi u dài tên hay đ l n c a s ở ộ ư ớ ạ ượ ề đi n vào (t c chi u dài tên đ i h n 1 t ) thì cho phép l u c m r ng trên gi ộ trong m t th m c. tr m t s đi n vào tên ng n h n
ệ ố
ự
ệ
ở
:
4.5.6. Th c thi h th ng t p tin
Windows NT
ể Ở
ả ộ ở
ộ ộ ơ ề ệ ả ớ ồ ạ , mà trên đó còn t n t
ộ ế ị ệ ề ượ volume (dung l ồ ể nó có th bao g m m t hay nhi u đĩa t ớ ượ kho ng b nh đ
ộ ự ắ ắ ỗ
ị ơ ả ộ ơ trong h đi u hành Windows NT, đ n v c b n đ qu n lý t p tin là m t ạ ớ ị ộ ng). Đó là m t đ n v b nh logic ( trên b nh qu ng đ i), ữ ẻ ừ i nh ng riêng l ộ ơ ả ế M i volume thì bao g m m t s s p x p theo m t nguyên t c nào đó các d ỗ ệ ộ ố ế ọ ố
ệ ế ệ ứ
ả ố ầ ự ố ầ ự ẽ ượ . S tu n t
ố ệ ệ ộ ố ệ ườ ệ ỗ c liên k t trong m t đ n v logic. ồ ữ ộ ượ c đánh s . M i t p tin có m t s tham chi u, g i là file reference number) v i kho ng 64 Bit, t c là nó bao c gia tăng ữ t gi a ệ li u hay các t p tin đã đ ớ ố s tham chi u t p tin ( ồ g m 48bit cho s t p tin và 16bit cho s tu n t theo m i khi xoá t p tin thu c s t p tin, do đó, ng s đ ể i ta có th phân bi
ế ớ ộ ệ ệ
ươ ng t
Ư ể ố ệ ố ệ i các s t p tin t ấ ươ ị i các s t p tin trung gian đã b xoá và m t t p tin hi n hành, ự . ườ ng này là cung c p cho ng ố ầ ủ ấ ả ng đ i đ y đ t i ta t t c
ủ ề ệ
ự s tham chi u t ế ớ ế n u chúng tham chi u t ưở u đi m c a ý t các thông tin v t p tin: ậ ệ ể ả ả ơ ở + C c u truy c p t p tin thì kiên đình và đ n gi n, k c các thông tin kh i
ơ ấ ệ ố ộ đ ng h th ng;
ầ ả + Các thông tin v b o v đ c tách b ch theo các thành ph n qu n lý, và
ề ụ ớ v i đi u này, nó thì có th thích h p h n ạ các ng d ng;
ệ ượ ợ ơ ở ể ử ụ ứ ượ ề ả ể ừ không th s d ng đ
ể ượ ấ ể ả c, do đó, các thông tin qu n lý i trên các ạ c n p tr ở ạ l i s d ng không th nhìn th y…) có th đ
ầ + Khi các ph n đĩa t ườ ử ụ ủ
ỗ ừ . ứ ự ệ ả (mà ng ầ ph n khác c a đĩa t M i volume ch a đ ng m t b ng trung tâm g i là b ng t p tin ch (master
ộ ả ệ ọ file table: MFT), mà trong đó, các t p tin h th ng đ
ấ Hình 4.19 ở ướ d
ư ụ ư ề
ữ ặ ầ ủ ệ ố ấ ầ ủ c ghi chép r t đ y đ . ấ ả ồ t c các i đây cho th y, chính nó là m t t p tin bao g m t ệ ở ộ ủ kh i đ ng c a h ạ ch t và t o thành các ượ ộ ệ ề ệ ự ượ c gi
ấ ả ủ ệ ề ệ ố ữ ệ d li u v các th m c cũng nh các thông tin v vi c t ệ ố th ng (bootstrap). T t c 16 t p tin đ u tiên này đ ệ t p tin h th ng c a h đi u hành Windows NT (NT filesystem: NTFS).
ệ
ị
ị
ả
ệ
ừ
ố ớ
ủ ệ ả
.
ị ở
ượ
ệ ệ ệ
ể c bi u th
ả đây và đ m
T p tin 0 T p tin 1 T p tin 2
ổ
ụ ể
ạ ộ
ả
ạ
ế
ủ
ệ
T p tin 3
ượ
ươ
ữ ỗ
ả
ả ượ ử ng trú và s a ch a l ị ấ ả
ự i đã đ ể
ệ
ườ ể đây bi u th t
ư ấ ươ ệ c th c hi n; ch ượ ẳ c kh ng đ nh. ộ i
ị t c các ki u thu c tính t n t
ồ ạ ở
T p tin 4
ộ ư ạ ủ
ư ụ ố
“\”
ủ ủ ơ
ụ ị ộ
ả
ệ ệ
T p tin 5 T p tin 6
ươ
ệ
ệ
ng trình format và
c t o ra nh ch
T p tin 7
ượ ạ ị
ờ ỉ ậ
ở ộ ủ ư ụ ủ
ủ ệ ể ử ụ
ệ ệ
T p tin 8 T p tin 9
ườ
ệ
ệ
ả B ng t p tin ch (MFT) ả ệ ố B n sao b o v b ng MFT đ i v i các t p tin h th ng, đ nh v đĩa t ổ ấ ệ T p tin logic: Các tác v thay đ i c u trúc NTFS, đ ả ử b o các ho t đ ng chuy n đ i nhân t . ệ T p tin volume: Các thông tin tr ng thái c a volume nh tên, n b n… N u Bit ặ ng trình ng trình chkdsk ph i đ corrupted đ c đ t thì ch ể ệ ệ ố này ki m tra h th ng t p tin th Ở ị B ng đ nh nghĩa thu c tính: trong volume, nh tr ng thái ư ụ ố ự Th m c g c: Tên c a th m c g c, thí d ký t ư ụ ớ ệ T p tin bitmap: B ng che ph c a đ n v b nh volume (sluster), xem th m c 3.1.1 ệ T p tin boot: T p tin kh i đ ng này đ ứ ự ch a đ ng mã bootstrap c a Windows NT và đ a ch v t lý c a t p tin MFT ệ T p tin bad cluster: Th m c c a colume cluster không th s d ng … … Các t p tin c a
ườ ử ụ bình th
ư ụ ng và các th m c
i s d ng
ủ ng
T p tin 16
ầ ự ủ
ủ ệ ố
ệ
ệ
ầ
ở
Hình 4.19. Dãy tu n t
c a 16 t p tin đ u tiên c a h th ng các t p tin (NTFS)
Windows
NT
ấ ư ấ
ộ ủ C u trúc logic c a m t volume đ ộ ệ ố ủ ệ
ư ộ ả
ả ự ề ộ ự ề ư ụ ố ớ ỗ ệ ứ ự ữ ệ ượ ạ c t o thành nh sau: C u trúc d li u ệ ủ ộ ả trung tâm c a m t h th ng t p tin là m t b ng t p tin ch (master file table: ệ ở ặ trong Unix. B ng MFT MFT); b ng này đóng vai trò nh m t nút đ c bi t ỗ ch a đ ng m t s đi n vào đ i v i m i t p tin và m i th m c. S đi n vào
ộ ộ ể
ồ ộ ầ ự ầ ủ ệ ủ ọ i m t cách đ y đ , g i là thu c tính th
ộ ư ườ ữ ệ ẻ ồ ạ t n t
ộ ộ ự ườ
ộ ọ ượ ộ ụ ng), thêm vào đó, s tham chi u t ể
ị ườ ị ự ể resident” (th
ự
ộ ề ứ ự ộ ế ệ
ề ự ắ ầ ứ ự ề ả
ố ươ ọ
ễ ở ủ ố ủ ệ trong t p tin nh
ừ ố ủ ố ủ ệ ế ắ
ể
ủ ệ ả ở
ộ ớ
ượ ộ N u theo đó các block c a b nh ch t n t ị
ư ố
ẩ ủ ả ế ả ộ ơ
ẫ ồ ạ ở ặ ỗ các thu c tính c a t p tin. M i thu c tính có th ho c này bao g m dãy tu n t resident atribute), ho cặ ồ ạ ng trú ( t n t ộ ế i nh là m t là, n u thu c tính này quá dài (thí d các d li u riêng l ớ ế ế ớ i các block b nh ti p thu c tính bình th ộ ự ỗ c bi u th là “runs”. M i thu c tính có m t s theo (còn g i là các cluster) đ ạ ầ ng trú ) hay kéo căng hai đ u (header); bên c nh s bi u th “ ự ắ ầ ườ ng trú), s kéo căng này còn ch a đ ng s b t đ u và “nonresident” (không th ả c chi u dài thu c tính trong khi đi n vào t p tin. N u thu c tính là không ườ ứ ự ng trú, do đó, nó ch a đ ng s b t đ u và ch a đ ng c chi u dài c a các th ố ủ ố ổ ố ng đ i c a các kh i 0…N, g i là s c a các kh i b sung. Thêm vào đó, s t ư ẽ ượ ả ể cluster o (virtual cluster number: VCN), s đ c bi u di n ả s c a cluster o thành s c a cluster logic (logic là vi c s p x p chúng t ư ậ ữ ộ ự ề ễ cluster number: LCN). Hình 4.20 bi u di n m t s đi n vào nh v y. Nh ng ụ ầ ủ ở ộ c gi trên. trong m c 4.3.2 thu c tính c a t p tin đ i thích m t cách đ y đ ủ ộ ộ ế ố ỉ ồ ạ ế i toàn s 0, và n u m t thu c ể ố ớ ệ ạ ượ c bi u th compress (nén l i) đ i v i t p tin, do đó, các block tính chu n đ ớ ẽ ư ư ậ ẽ ữ ộ là nh v y, nh ng khi đ m các tr ng c a b nh s không l u tr . Đáng l ợ ẽ ượ ố cluster o, các kh i cluster thích h p s đ c nhãy qua m t cách đ n gi n, do ỗ ố ầ ự tr ng v n t n t đó, trong dãy tu n t VCN, các l i.
Hình 4.20************************************
ệ ủ ượ ệ ố
ế ư ệ ượ ở ướ c đ a tr l
ố ả
ậ ỉ ạ ượ i v i các block kh i x ứ ự ả i thu t này ch đ t đ c các t p tin h th ng c a Windows NT ố ng là các s 0. N u các ổ ậ ộ i thu t nén t ng ứ c nén nhanh ch không
ấ ọ ề Khi đ c các t p tin, thì đi u đó đ ế ở ạ ớ ậ t và đ nh n bi ủ ệ block c a t p tin nén không ch a đ ng các s 0, do đó, m t gi ượ quát đ ạ ượ đ t đ
ộ ệ ữ ệ
ỉ ố ớ ệ ụ ệ ố ộ ủ ch c thành d ng cây B* (thí d các t p tin h th ng c a
ụ
ỉ ố trên. ầ ứ ấ ượ ứ c đáp ng; tuy nhiên, gi ệ c nén hi u su t. ư ụ ồ Ở ộ m t th m c, dòng d li u bao g m m t ch s v i tên t p tin, mà b ạ ượ ổ ứ ủ ệ đ m c a nó đ c t ở ệ ề h đi u hành OS/2), xem m c 4.4.4 ầ Ch s này bao g m 3 thành ph n: ph n th nh t là các tên đ
c đánh ch s ỉ ẫ ọ đi n (g i là ch s g c:
ồ ầ ự ừ ể t ứ trong dãy tu n t ầ ế ắ ả
ủ ủ ả
ế ệ ố ờ
ữ i
ệ c b ng MFT sao chép l ổ ộ ẽ ượ ệ ộ ự
ệ ơ ở ợ
ồ ư ụ trong các th m c. Tên t p tin đ ượ ỗ ờ ờ ỉ ố ở ệ
i nh th i gian tìm ki m ng n h n trong dãy tu n t ứ đi n. M i tên t p tin đ ự ề ỉ ố ỉ ố ớ ỉ ố ở ủ ỉ ố ố index root) và các ch d n c a ể ấ ộ ệ ủ chúng; ph n th hai là các b ng s p x p (VCN > LCN) c a các b đ m đ c p ữ ệ ứ ầ ườ ỉ ố index allocation) cho các d li u không th ng trú; ph n th ba là phát ch s ( ọ ộ ệ ả ạ các b ng che ph c a các b đ m còn g i là các bit nh x . ạ ồ ỗ ự ề M i s đi n vào bao g m s tham chi u t p tin, tên t p tin, th i gian t o ạ ở ạ ượ ả ấ ả ề ậ i t l p và chi u dài t p tin; t t c nh ng cái đó đ c b sung; chi phí này đây. Tuy nhiên, m t s chi phí cho vi c đ ng b s đ ượ ệ ắ ế c có l ộ ầ ự ừ ể ỉ ẫ c ch d n trên m t đánh ch s t ộ ỏ ơ ự ộ ệ b đ m ch s và ch a đ ng các s đi n vào v i ch s nh h n. M t cây B*
ố ơ ề ề ộ ể ườ t h n chi u sâu, vì nó cho phép các tác v ụ
ng phát tri n theo chi u r ng t ế
ấ ộ ệ ỉ ẫ ệ ứ ự
ạ ả ượ ữ ệ
th tìm ki m r t nhanh. ổ ầ ớ ấ ữ ớ ệ ộ ờ ở Các b đ m b sung ch a đ ng nh ng ch d n t p tin trong d ng đóng gói; c đóng ỗ ộ
trong b nh . Nh đó, m t s l u tr v i khoáng 15 tên t p trên m i b ớ ỗ ữ ủ ệ ở ầ ử ụ l n s d ng đ u tiên (mount) c a t p tin, c u trúc d li u ph i đ ộ ự ư gói ể ả ệ đ m v i 2kB hay 4 cluster (kho ng 512 Byte cho m i cluster) là có th .
ậ ề ệ ả 4.6. Các bài t p v qu n lý t p tin
ậ ề ệ
4.6.1.Các bài t p v t p tin
ậ
ề ả ử ư ụ ủ ậ
ư ụ ộ ế ố ứ ạ ạ
ử ệ ạ ư ụ V các th m c cô l p ậ Bài t p 4.1. ư ụ ạ ư ụ ố s th m c Test là th m c g c. B n hãy l p th m c con c a th m c Gi t l p, b n hãy t o ra m t k t n i c ng (hard link). ư ụ i m t k t n i quay vòng. B n hãy th nghi m xoá th m c.
ế ậ ộ ế ố ạ ạ ượ ố ư ụ ừ Test. Trên th m c v a thi ồ ạ ấ , nó t n t B y gi ẫ Test t ng d n g c. B n đ t đ ờ ừ ườ đ c cái gì ?
ậ ề
ệ
ư ụ 4.6.2. Các bài t p v tên t p tin và th m c
ề ổ
ậ Bài t p 4.2. Ở ụ ổ
V đ i tên t p tin ậ ượ ả ể ổ ộ ví d đ i tên file, gi ệ ả i thu t cho Windows NT đ c mô t đ đ i m t tên
ắ ệ t p tin dài thành tên ng n và rõ ràng.
ệ ể ộ
ỡ ớ ư ể ự ủ ượ ự ầ ớ ắ a). Tên các t p tin có kích c bao nhiêu đ có th mã hóa thành m t tên ng n c ít c a ph n tên chính không đ ? V i l u ý: các ký t
và rõ ràng v i 8 ký t ơ h n 6.
ạ ể
b). B n có th thay đ i s đ nh th nào đ mã hóa m t s l ệ ổ ơ ồ ệ ớ ộ ố ượ ng l n các ạ theo mã ASCII ? B n hãy suy
ư ế ớ ọ ự ệ ể ự tên t p tin dài thành tên t p tin rõ ràng v i 8 ký t ả nghĩ vì sao các vi c th c thi đã không ch n kh năng này ?
ề ườ ẫ V tên đ ng d n
ậ Bài t p 4.3.
ể ể ủ
ườ ườ
ư c đi m và u đi m c a tên đ đâu và khi nào ng ả ề ợ ẫ ươ ng d n t ể i ta có th thay th tên đ ớ ự ợ ố ớ ng đ i v i tên đ ế ủ ườ ộ ệ ố ẫ ườ ng d n ẫ ng d n nào i đi u này v i s tr giúp c a m t h th ng biên
ượ Nh Ở ệ ố tuy t đ i là gì ?. ạ cho phù h p ? B n hãy lý gi ị d ch!
ề ệ ả ướ ố ượ V qu n lý t p tin h ng đ i t ng
ậ Bài t p 4.4.
ả ử ệ ộ ệ i ta cho phép vi c qu n lý t p tin trong Unix m t cách h
ươ ầ ả ữ Gi ố ượ đ i t ườ s ng ữ ng. Nh ng ph ộ ng pháp và nh ng thu c tính nào là c n thi ướ ng ế ố ớ t đ i v i
ộ ố ượ ộ ố ượ ư ụ ố ớ ở ng th m c và đ i v i m t đ i t ệ ng t p tin ệ ề trong h đi u hành
m t đ i t Unix ?
ể ề ậ ề V danh sách đi u khi n truy c p
ậ Bài t p 4.5.
ư ể ể ậ ề c đi m và u đi m c a danh sách đi u khi n truy c p là gì ? Khi đi u
ủ ế ặ ấ ả ệ ượ Nh c ượ ng ể ườ ử ụ thi i s d ng đó đ t đ t cho t ề t c các t p tin.
ậ ề
ứ
ệ
4.6.3. Các bài t p v các ch c năng t p tin
ề ở V file m
ậ Bài t p 4.6.
ộ ệ ề ể ự ụ ệ ệ ạ M t h đi u hành có th th c hi n các tác v t p tin trên hai lo i khác
nhau:
ườ ậ ệ ể ướ ả + Bình th ng đ truy c p t p tin, tr c h t ế ng ở ệ ườ ử ụ ph i m t p i s d ng
tin;
ậ ệ ề ả Ở ườ ng tr
ặ ứ ấ ộ ậ ệ ự ộ ượ ả ư + Ho c đi u này x y ra m t cách t ộ ự ợ h p th nh t, m t s truy c p t p tin đ đ ng khi truy c p t p tin. c mô t nh sau:
ỉ ệ ế ậ ệ i ta ch vi c truy c p t p tin (I/O Ops); sau ồ ớ ng trình k t thúc. V i hai cách nói trên, t n
open()...read() ...I/OOps...Close() ườ ứ ợ ng h p th hai, ng Trong tr ạ ượ ệ i khi ch c đóng l đó, t p tin đ ể ượ ể ữ ư ạ i nh ng u đi m và nh t ườ ươ c đi m nào ?
ệ L nh copy
ậ Bài t p 4.7.
ệ ạ
ộ ỗ ệ ề ị ặ đ t mình vào v trí m t nhà thi
ả ộ ệ t m t l nhh copy. ủ ệ ề ộ ệ ạ ớ
ự ư ệ ệ ả ch c năng th vi n v qu n lý t p tin (read, write...).
ả ượ ự ề ổ ữ ế ể ộ ố ệ ạ M i h đi u hành thông th o m t s l nh đ qu n lý các t p tin. B n hãy ế ế ệ ố ể ế t k h th ng đ vi ể a). B n hãy th c thi l nh copy đ sao m t t p tin c a h đi u hành v i các ệ ứ b). Nh ng thay đ i nào ph i đ
ệ ở ư ụ ị
ầ ố ớ ệ ọ c l a ch n đ i v i l nh move ? N u đ u ồ ệ th m c ngu n có b xóa không ? ệ i c ch b o v !
ể nh th nào đ sao chép toàn b th m c k ộ ư ụ ể
ạ ượ c vi c copy, thì khi đó, t p tin tiên đ t đ ạ ư Xin l u ý: B n hãy suy nghĩ t ả ượ c). L nh copy ph i đ ạ ớ ơ ế ả ả ư ế c mô t ự ệ ư ụ ệ ả c các th m c con ? B n hãy th c thi l nh này xem !
ề ậ ấ V xu t nh p
ậ Bài t p 4.8.
ấ ỗ ữ ẩ ấ ạ T i sao trong Unix có s khác nhau gi a xu t chu n và xu t l ế ẩ i chu n, n u
ự ẫ ớ ự ặ ị ề ả c hai đ u d n t i s m c đ nh trên màn hình ?
ệ ệ ự ở ế ị ặ ệ Th c hi n l nh echo b i thi t b đ c bi t
ậ Bài t p 4.9.
ấ ạ ộ ớ ươ Cái gì s x y ra, n u trong Unix b n xu t ra m t bài text v i ch ng trình
ộ ạ ườ echo (d i l ẽ ả ế i) theo các đ ng d n ẫ dev/tty hay dev/null ?
ệ ổ ứ ệ
ự 4.6.4. Th c thi vi c t
ch c t p tin
ề V inode
ậ Bài t p 4.10.
ệ ề
ỉ ủ ậ
ộ ứ ự ướ ị ư ộ ế ỉ ố ớ Trong h đi u hành Unix, các inode ch a đ ng 20 đ a ch đ i v i các block ầ ng c a b c đ u tiên, b c 2 ể ệ đĩa, thì t p tin có th
ỡ ộ ấ ớ ớ ị ứ ự ủ ậ ị ữ ệ d li u, cũng nh các đ a ch c a m t block vô h ỉ ổ ậ và b c 3. N u m t trong các block ch a đ ng 256 đ a ch ủ ổ ử ụ s d ng l n nh t là bao nhiêu ? V i kích c m t block c a đĩa là 1 KB.
ữ ệ ề ả ệ ư V qu n lý vi c l u tr các t p tin
ậ Bài t p 4.11.
ữ ẫ ớ ệ ả Vi c l u tr các t p tin d n t
ệ ư ề ệ ế ở ả ỏ ủ ỏ ổ i vi c phân m nh nh ở ngoài và ừ ạ . B n hãy trình đĩa t ầ trong g n tâm c a đĩa
ệ bày v vi c phân m nh nh các vòng xuy n ? ừ t