hành phải kiểm soát chặt chẽ các trường hợp này. Để tránh hiện tượng này hđiều
hành phải tạo một chế thích hợp để loại trừ lẫn nhau trong thao tác đọc/ghi file
giữa các file đồng thời.
Để thực hiện loại trln nhau này hđiu hành đưa thêm hai trường vào các
entry trong bng danh mục người sử dụng: Trường thứ nhất, Bítghi, = 1 đang
một tiến trình ghi vào file, = 0 không có tiến trình nào ghi vào file. Trường thứ hai,
Bđếm, = <scác tiến trình đang mfile để đọc>. Theo đó một tiến trình ch
thmở file để đọc khi t ghi = 0, mfile để ghi khi t ghi = 0 Bđếm = 0.
Như vậy, ngay sau khi chấp nhn yêu cu mở file để ghi từ một tiến trình th
điều hành phi gán Bít ghi = 1, ngay sau khi chấp nhận yêu cu mở file để đọc từ
một tiến trình thì hđiều hành phải tăng Bộ đếmn 1 đơn vị, Bộ đếm = bộ đếm +
1. Khi một tiến trình đọc file đóng file thì Bộ đếm = bộ đếm + 1, khi một tiến trình
ghi file đóng file thì Bít ghi được gán = 1. Rõ ràng kỹ thuật này có thể dẫn đến lỗi
khi hthống không giám sát tốt việc thay đổi giá trị trên các trường Bítghi và B
đếm, điu này chúng ta đã thy trong cơng Quản lý tiến trình ca tài liu này.
IV.1.6. Hiệu suất hệ thống file
Như đã biết, tốc độ truy xuất dữ liệu trên đĩa chậm hơn rất nhiều so với tốc độ truy
xuất dữ liệu trên b nhớ, tốc độ truy xuất dữ liu trên đĩa tính bằng đơn v
milliseconds, trong khi đó tốc độ truy xuất dữ liệu trên b nhchỉ tính bằng đơn v
nanoseconds. Do đó, để tạo ra sự đồng bộ trong việc trao đổi dữ liệu trên bnhớ và
trên đĩa, cũng như tăng tốc độ truy xuất dữ liệu trên bnhớ, các hệ điều hành phi
thiết kế hệ thống file ca sao cho tốc đđọc dữ liệu là nhanh nhất và gim số
ln truy cập đĩa mỗi khi truy xuất file xuống mc thấp nht.
Một trong những k thuật được hệ điu hành sdụng đây là to ra các
block cache hoặc buffer cache. Trong ngữ cảnh này, cache một tập c block
logic trên đĩa, nhưng được tạo ra và được giữ trong bộ nhớ chỉ để phục vụ cho mục
đích ci thin hiu suất ca hthống.
nhiều thuật toán khác nhau được sdụng để qun cache, nhưng tt cả
đều hướng tới mục đích của việc sdụng cache và nguyên hoạt động ca cache:
Khi nhn được một yêu cầu đọc dliệu ttiến trình của người sử dụng thì bộ phận
quản lý cache sẽ kim tra block dữ liệu cần đọc đã trong cache hay chưa, nếu có
trong cache thì đọc trc tiếp trong cache mà không cn truy cập đĩa, nếu không
trong cache thì dliu cần đọc sẽ được đọc và ghi vào trong cache trước rồi sau đó
được chép đến bất cứ i nào cần thiết. Việc ghi vào cache y nhm chuẩn bcho
các lần đọc dữ liu sau này. Tc là, nếu sau này một yêu cu đọc cùng một
block dliệu như trên thì s được đọc trực tiếp từ cache mà không cần truy cập
đĩa.
Khi cache b đầy các block thì một vài block
trong đó phải bị xoá hoặc bị xoá và ghi trli về
Click to buy NOW!
P
D
F
-
X
C
h
a
n
g
e
V
i
e
w
e
r
w
w
w
.
d
o
c
u
-
t
r
a
c
k
.
c
o
m
Click to buy NOW!
P
D
F
-
X
C
h
a
n
g
e
V
i
e
w
e
r
w
w
w
.
d
o
c
u
-
t
r
a
c
k
.
c
o
m
đĩa nếu block này sthay đổi kể từ khi được
mang vào b nhớ kể từ lần được mang vào gần đây
nhất. Trong trường hợp này hệ điều hành cũng sử dụng
các thuật toán thay trang trong quản b nhớ n
FIFO, LRU, … để chọn một block trong cache để đưa ra
đĩa. Tuy nhiên cache được truy xuất ít thường xuyên
hơn, nên hđiều hành thtổ chức một danh sách
liên kết để theo dõi việc truy xuất các block trong
cache, danh sách liên kết này được sử dụng cho thuật
toán thay block: LRU.
Một s ki niệm dùng trong qun lý đĩa
Track (tđạo): các vòng tròn đồng m được tạo ra trên bmặt đĩa,
đây slà nơi chứa dữ liệu sau này. Các track được đánh sbắt đầu từ 0. S
track trên mỗi mặt đĩa phụ thuộc vào tng loại đĩa.
Sector (cung t): Các track được chia thành các khối có kích thước c
định bằng nhau và được đánh địa chỉ, các khối này được gọi là các sector. Các
sector được đánh địa chỉ bắt đầu từ 1 trên mi track, như vậy trên đĩa stồn
tại nhiều sector cùng s hiệu địa chỉ, cách đánh địa chỉ này gây khó khăn
nhiều người lập trình.
Kích thước ca sector, số byte dữ liệu có thchứa trên một sector, phụ
thuộc vào phần cứng. Trên các h processor x86, kích thước sector trên đĩa
cứng thường là 512 byte, kích thước sector trên đĩa CD_ROM thường là 2048
byte.
Các sector được đánh đa chỉ theo kiu trên được gọi là sector vật lý.
Trong thực tế lp trình các h điều hành ch s dụng sector logic, theo đó thì
địa chỉ các sector được đánh bắt đầu từ 0 ktừ track 0 ca mặt 0 trên đĩa thứ
nhất. Như vy trên đĩa không các sector cùng shiu địa chỉ. Bảng sau
đây cho thy sự tương ứng giữa các sector vật lý với sector logic trên một đĩa
mm:
Mặt đĩa Trac
k
Sector
Sector
logic
Thông tin lưu
tr
0 0 1 0 Boot
record
0 0 2 - 5 1 - 4 FAT
0 0 6 - 9 5 - 8 Thư mục gốc
1 0 1 - 3 9 - 11 Thư mục gốc
1 0 4 - 9 12 - 17 Dliu
Click to buy NOW!
P
D
F
-
X
C
h
a
n
g
e
V
i
e
w
e
r
w
w
w
.
d
o
c
u
-
t
r
a
c
k
.
c
o
m
Click to buy NOW!
P
D
F
-
X
C
h
a
n
g
e
V
i
e
w
e
r
w
w
w
.
d
o
c
u
-
t
r
a
c
k
.
c
o
m
0 1 1 - 9 18 - 26 Dliu
Bng 4.1: Tương ứng giữa sector vật và sector logic trên đĩa mm
Trên bmặt đĩa tồn tại các sector mà h điu hành không thghi dliu
vào đó hoặc không th đọc dữ liệu từ đó. Các sector y được gọi là bad
sector. Trong quá trình định dạng đĩa hệ điều hành đánh du loại bỏ các bad
sector này.
Cluster (liên cung): Một nhóm gồm 2, 4 hoặc 6 sector liên tiếp nhau tạo
thành một cluster. Kích thước ca cluster thường là bội số kích thước ca một
sector. Các cluster được đánh địa chỉ bắt đầu từ 0. S sector trên một cluster
phthuộc vào từng loại đĩa. Mt s hệ điều hành cho phép người sử dụng quy
định s sector trên một cluster. Các hệ điều hành thường tchức u trdữ
liu, nội dung các tập tin, trên đĩa theo từng cluster. Trên bmặt đĩa cũng tồn
tại các bad cluster, đó là các cluster có chứa bad sector.
Một số hệ điu hành th khôi phục lại được dliệu chứa trên các bad-
sector hay bad cluster ghi nó vào li một cluster mới. Hệ điều hành thchỉ
khôi phục và thay thế dữ liệu tại sector bị bad hoặc phi khôi phục và thay thế toàn
bộ dữ liệu trên cluster có chứa bad-sector.
Hthống file NTFS ca windowsNT/2000 tham chiếu đến các vị trí vật
trên đĩa bằng số hiệu cluster logic (LCNs: logical cluster numbers). LCN là kết quả
của việc đánh số tất cả các cluster trên volume tvị trí bắt đầu volume đến kết tc
volume. Đchuyển một LCN thành đa chỉ vật trên đĩa, NTFS nhân LCN với
thừa số cluster (s sector trên một cluster) để đưc byte offset vật trên
volume. NTFS tham chiếu đến dữ liệu trong phm vi một file bằng shiệu cluster
ảo (VCNs: Virtual cluster numbers), VCN đánh sc cluster dựa vào một file c
thvà đánh stừ 0 đến m. Các VCN không cần phi liên tc về mặt vật lý, tuy
nhiên nó có thể ánh xạ đến bất k một LCN nào trên volume.
Cylinder (ttrụ): Các track có cùng shiệu trên các mt đĩa khác nhau
ca một hthống đĩa tạo thành một cylinder. Như vậy mặt đĩa có bao nhiêu
track thì đĩa có bấy nhiêu cylinder. Cylinder chỉ có trên các ổ đĩa cứng.
Partition (phân khu): Partition một tập các sector liền kề trên một đĩa.
Mỗi partition có một bảng partition hoc một sdữ liệu quản đĩa riêng,
dùng để lưu trữ sector đầu tiên, kích thước và các đặc tính khác của partition.
Volume: Một volume tương t một partition logic trên mt đĩa, và nó
được tạo khi ta định dạng một đĩa hoặc mt phần ca đĩa theo hthống file
NTFS. Trong hđiều hành windowsNT/2000 ta có thtạo ra một volume trãi
dài trên nhiu đĩa vật khác nhau. Một đĩa có thể một hoặc nhiều volume.
NTFS điều khiển mi volume sao cho không phụ thuộc vào các volume khác.
Một volume bao gm một tập các file cùng với bất kỳ mt không gian
Click to buy NOW!
P
D
F
-
X
C
h
a
n
g
e
V
i
e
w
e
r
w
w
w
.
d
o
c
u
-
t
r
a
c
k
.
c
o
m
Click to buy NOW!
P
D
F
-
X
C
h
a
n
g
e
V
i
e
w
e
r
w
w
w
.
d
o
c
u
-
t
r
a
c
k
.
c
o
m
chưa được cấp phát nào còn lại trên partition đĩa. Trong hệ thống file FAT,
một volume cũng chứa các vùng đặc biệt được định dạng cho việc sử dụng của
h thống file. Trong các volume NTFS thì ngược lại u trũ tất cả dữ liệu
ca hệ thống file, như bitmap, directory c system bootstrap, trên các
file.
Simple volume: các đối tượng đại diện cho các sector từ một
partition đơn, các trình điu khiển hthống file, qun như một
đơn vị đơn.
Multipartition volume: các đối tượng đại diện cho các sector từ
nhiều partition khác nhau, mà các trình điều khiển hệ thống file quản
như một đơn vđơn. Các multipartition volume có các đặc tính mà
các simple volume không có được như: hiệu suất cao, đ tin cậy cao và
khnăng mở rộng kích thước.
Metadata: là một dạng dữ liệu đặc biệt, được u trtrên đĩa, hỗ tr
cho các thành phn quản lý các dạng thức hệ thống file khác nhau, dữ liệu ca
có th là vtrí ca các tập tin/ t mc trên các đĩa. Metadata không
được sử dụng trong các ứng dụng.
File system (hthống file): Các dng thức hệ thống file định nghĩa cách
dliệu file được u trtrên thiết bu trvà stác động của hệ thống
file đến các file. Một dạng thức hệ thống file cũng có thể đưa ra các giới hn về
kích thước ca các file và các thiết bị u trmà hthống file hỗ trợ. Mt vài
hthống file hỗ trợ cho cả các file lớn hoặc nhỏ, hoặc cả các đĩa lớn và nhỏ.
Một h thống file thường bao gồm các thành phần: Sector khởi động
(Boot sector), bng định vfile (FAT: File Allocation Table), bảng thư mục gốc
(Root Directory), một tập các file các thư mục và các công cquản các thành
phần này. Các thành phn này th có cấu trúc hoặc phương thức tổ chức
khác nhau trên các dạng thức hệ thống file khác nhau. Người ta thường dùng
tên của FAT trong hệ thống file để gọi tên của hệ thống file đó.
Hđiu hành MS_DOS s dụng hệ thống file FAT12 và FAT16, hđiu
hành Windows9x s dụng hệ thống file FAT32 và CDFS, h điu hành
Windows NT Windows 2000 s dụng các h thống file FAT12, FAT16,
FAT32, CDFS (CD_ROM File System, UDF (Universal Disk Format) và NTFS
(New Technology File System).
Các điu khiển hệ thống tập tin
Các điu khiển hệ thống tập tin (FSD: File system driver) qun các dạng
thức hệ thống file khác nhau. FSD chính thức xuất hiện từ windowsNT/2000.
Trong windows 2000 2 loi FSD: Local FSD và Network/ Remote FSD.
Local FSD: quản các volume được nối trực tiếp với máy nh. Network/
Click to buy NOW!
P
D
F
-
X
C
h
a
n
g
e
V
i
e
w
e
r
w
w
w
.
d
o
c
u
-
t
r
a
c
k
.
c
o
m
Click to buy NOW!
P
D
F
-
X
C
h
a
n
g
e
V
i
e
w
e
r
w
w
w
.
d
o
c
u
-
t
r
a
c
k
.
c
o
m
Remote FSD: cho phép người s dụng và chương trình của nời sử dụng
truy cập dữ liệu trên các volume được nối với một máy tính ở xa.
Local FSD (FSD cc bộ): Các Local FSD bao gồm các tập tin: Ntfs.sys,
Fastfat.sys, Cdfs.sys Raw FSD (được tích hợp trong Ntoskrnl.exe). Hình
sau đây cho thấy cách local FSD tương tác với quản I/O và các thiết bị u
trữ. Các local FSD chịu trách nhiệm đăng vi b phận quản I/O, khi
FSD đã đăng thì bphận quản I/O có thể gọi để thực hiện việc xác
nhận volume khi các ứng dụng hoặc các h thống khởi tạo truy cập đến
volume.
Việc xác nhn volume bao hàm việc kiểm tra boot sector của volume và các
thông tin hthống khác. Sector đầu tiên của mi dạng thức hệ thng file được hỗ
tr bởi windows 2000 đều được dành riêng cho boot sector ca volume. Boot
sector chứa đầy đủ thông tin cần thiết để local FSD vừa nhận biết mà sector trên đó
đang chứa một dạng thức mà FSD qun và tìm kiếm bất k mt metadata khác
được lưu trữ trên đĩa.
Để cải tiến hiệu suất, các local FSD thường sử dụng hệ thống quản lý cache để
cache dliu của hệ thng file bao gm cả metadata.
Các Network/Remote FSD (FSD mạng/từ xa): Các Remote FSD bao gồm 2
thành phần: Mt Client và một Server. Các client remote FSD cho phép các
ứng dụng truy cập đến các file và các thư mục ở xa.
Client FSD chấp nhận các yêu cầu I/O từ các ng dụng và chuyn thành
các lệnh trong các giao thức về hệ thống file của mạng để thông qua mạng được
Applicat
Applicat
I/O manager
File system
Sto
rage device
Logical
volume
(partition)
User mode
Kernel mode
Hình 4.7.a: FSD cục bộ
Click to buy NOW!
P
D
F
-
X
C
h
a
n
g
e
V
i
e
w
e
r
w
w
w
.
d
o
c
u
-
t
r
a
c
k
.
c
o
m
Click to buy NOW!
P
D
F
-
X
C
h
a
n
g
e
V
i
e
w
e
r
w
w
w
.
d
o
c
u
-
t
r
a
c
k
.
c
o
m