Tải bản đầy đủ (.doc) (22 trang)

QUẢN lý bộ NHỚ NGOÀI TRONG hđh LINUX

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (363.19 KB, 22 trang )

MỤC LỤC
MỤC LỤC.....................................................................................................................................................1
LỜI MỞ ĐẦU................................................................................................................................................2
CHƯƠNG I: HỆ THỐNG FILE TRONG LINUX..................................................................................................3
CHƯƠNG II: QUẢN LÝ KHÔNG GIAN NHỚ TỰ DO......................................................................................10
2.1. Phương pháp quản lý không gian trống.........................................................................................10
2.2. Phương pháp bit vector ( bitmap)...................................................................................................10
CHƯƠNG III : PHƯƠNG PHÁP CẤP PHÁT KHÔNG GIAN CHO FILE..............................................................12
Phương pháp cấp phát theo chỉ số ( Index block / Node)......................................................................13
CHƯƠNG IV: LẬP LỊCH CHO ĐĨA.................................................................................................................18
4.1. Khái niệm Lập lịch...........................................................................................................................18
4.2. Các thuật toán lập lịch cho đĩa.......................................................................................................18
Tài Liệu Tham Khảo....................................................................................................................................22

1
Nhóm 6 – HTTT1 K8


LỜI MỞ ĐẦU
Những năm qua Linux đã thực sự tạo ra một cuộc cánh mạng trong lĩnh vực
máy tính . Sự phát triển và những gì chúng mang lại cho máy tính thật đáng kinh
ngạc : một hệ điều hành đa nhiệm, đa người dùng. Linux có thể chạy trên nhiều bộ
vi xử lý khác nhau như : Inter, Dec, Alpha … Nó tương tác tốt với các hệ điều
hành : Apple, Microsoft và Novell.
Không phải ngẫu nhiên mà ngành công nghệ thông tin Việt Nam chọn Linux
làm hệ điều hành nền cho các chương trình ứng dụng chủ đạo về kinh tế và quốc
phòng. Với mã nguồn mở sử dụng Linux an toàn hơn các ứng dụng Windows.
Linux đem đến cho chúng ta lợi ích về kinh tế với rất nhiều phần mềm miễn phí.
Mã nguồn mở của hệ điều hành và của các chương trình trên Linux là tài liệu vô
giá để chúng ta học hỏi về kỹ thuật lập trình vốn là những tài liệu không được công
bố với các ứng dụng Windows.


Khi cần lưu trữ các thông tin, dữ liệu các hệ thống máy tính bắt buộc phải sử
dụng bộ nhớ ngoài ( đĩa từ, băng từ, compaq…).Trong bài viết này chúng ta sẽ tìm
hiểu về một phần quan trọng trong hệ điều hành Linux đó là: quản lý bộ nhớ ngoài
hệ điều hành Linux. Bài viết này cho chúng ta hiểu rõ hơn các biện pháp quản lý
và cấp phát không gian nhớ tự do trên đĩa từ, các thuật toán lập lịch cho đĩa từ và
nguyên tắc quản lý thông tin trên bộ nhớ ngoài – Hệ file.

2
Nhóm 6 – HTTT1 K8


CHƯƠNG I: HỆ THỐNG FILE TRONG LINUX
Tổ chức hệ thống file trong Linux.
Các thông tin lưu trữ ở bộ nhớ ngoài được tổ chức thành các đơn vị lưu trữ gọi là
file(tệp tin). Phân hệ thực hiện chức năng quản lý thông tin bộ nhớ ngoài được gọi
là quản lý hệ file (file management system). Các ứng dụng quản lý, cấp phát hay
lưu trữ thông tin bộ nhớ ngoài đều phải thông qua hệ quản lý file. Để làm rõ hơn
chúng ta tìm hiểu về tổ chức bên trong file.
Tất cả các tệp được biểu diễn dưới các i-node. Mỗi cấu trúc i-node cho thông tin vị
trí của khối của tệp ở thiết bị vật lý nào. Nó chứa các con trỏ của các trình thủ tục
trong module hệ thống tệp logic và các trình điều khiển các thao tác đọc/ghi.
Trong hệ thống tệp, tệp được biểu diễn bằng một inode. Inode cho biết mô tả của
một tệp trên đĩa cùng các thông tin khác như sở hữu tệp, quyền truy nhập, thời gian
truy nhập tệp. Khái niệm inode có ý nghĩa là chỉ số của một nút (index node,
trong FS là một lá của cấu trúc cây). Mỗi tệp có một inode duy nhất, nhưng mỗi
inode lại có thể có nhiều tên (tệp) khác nhau. Các tên tệp này đều qui chiếu tới
inode đó và mỗi tên như vậy gọi là một liên kết (link). Khi một TT truy nhập một
tệp bằng tên, kernel sẽ phân tích tên trong đường dẫn, tìm tới thư mục chứa tệp,
kiểm tra phép truy nhập, tìm inode và trao inode cho TT. Khi TT tạo tệp mới,
kernel gán cho tệp một inode chưa sử dụng. Các inode lưu trong FS trên đĩa, nhưng

khi thao tác tệp, kernel đọc từ đĩa và đưa vào một bảng gọi là in - core inode table
(gọi tắt là Inode table) trong bộ nhớ hệ thống.
Linux ext2 FS:
Boot block : phần đầu tiên của FS đĩa, là sector đầu tiên chứa mã bootstrap được
đọc vào máy và chạy để nạp HĐH.
Superblock: mô tả tình trạng của FS: độ lớn, chứa được bao nhiêu tệp (inode),
không gian còn trống (block) của đĩa để chứa nội dung tệp tìm thấy ở đâu, cũng
3
Nhóm 6 – HTTT1 K8


như các thông tin khác.

Super block có các trường sau đây:
- Kích thước của FS.
- Tổng số các block còn chưa cấp phát cho tệp (free block) trong FS.
- Danh sách các free block sẵn có trên FS (xem thêm phần cấp phát block đĩa).
- Chỉ số của free block tiếp theo trong danh sách free block.
- Kích thước của danh sách inode.
- Tổng số các inode chưa cấp phát (free inode) trong FS.
- Danh sách free inode trong FS.
- Chỉ số của free inode tiếp theo trong danh sách free inode.
- Các trường khoá (lock) cho free block và các danh sách free inode.
- Cờ (flag) cho biết super block đã có thay đổi.
Phần tiếp theo sẽ nói đến cách sử dụng các trường, các chỉ số và khóa. Kernel sẽ
thường xuyên cập nhật super block một khi có sự thay đổi sao cho nó luôn nhất
quán với data trong hệ thống.
Inode List, danh cách các inode trong FS. Người quản trị xác định kích thước khi
làm cấu hình (cài đặt) hệ thống. Kernel qui chiếu các inode bằng chỉ số (index)
trong inode list. Có một inode gọi là root inode trong mỗi FS: là inode khởi đầu để

vào được FS sau khi thực hiện GHT phép ghép (mount) FS đó vào cây thư mục
gốc.
Data blocks, vùng chứa nội dung (dữ liệu) của tệp và dữ liệu quản trị hệ thống (là
các block của tệp thư mục, các block nội dung của một inode). Một khối khi đã cấp
4
Nhóm 6 – HTTT1 K8


cho mỗi tệp thì khối đó chỉ thuộc tệp đó mà thôi.
Trong hệ thống tập tin EXT2, inode là khối xây dựng cơ bản, tất cả các tập tin và
thư mục trong hệ thống tập tin được mô tả bởi một và chỉ inode. Inodes EXT2 cho
mỗi nhóm Block được lưu giữ trong bảng inode cùng với một bitmap cho phép hệ
thống để theo dõi phân bổ và chưa được phân bổ inodes. Hình 1.1 cho thấy định
dạng của một inode EXT2, trong số các thông tin khác, nó bao gồm các lĩnh vực
sau đây:
Đối với EXT2, một inode có thể mô tả một trong những thư mục, tập tin, biểu
tượng liên kết, khối thiết bị, nhân vật thiết bị hoặc FIFO.
Chủ sở hữu thông tin
Người dùng và nhóm định danh của chủ sở hữu của tập tin hoặc thư mục. Điều này
cho phép hệ thống tập tin một cách chính xác cho phép các loại quyền truy cập.
Kích thước của các tập tin trong byte.

5
Nhóm 6 – HTTT1 K8


Hình 1.1. EXT2 I-NODE
Timestamps:
Thời gian mà inode được tạo ra và thời gian cuối cùng mà nó đã được sửa đổi
Datablocks Con trỏ tới các khối có chứa các dữ liệu mà inode này được mô tả.

Việc đầu tiên 12 là con trỏ đến các khối vật lý có chứa các dữ liệu được mô tả bởi
inode này và ba con trỏ qua chứa hàm lượng nhiều hơn và nhiều hơn nữa về mình.
Ví dụ, khối gián tiếp đôi con trỏ điểm tại một khối của các con trỏ khối con trỏ đến
khối dữ liệu. Điều này có nghĩa rằng các tập tin nhỏ hơn hoặc bằng 12 khối dữ liệu
dài nhanh chóng truy cập hơn so với các tập tin lớn hơn.
Bạn nên lưu ý rằng inodes EXT2 có thể mô tả các tập tin thiết bị đặc biệt. Đây
không phải là tập tin thực sự nhưng xử lý mà chương trình có thể sử dụng để truy
cập các thiết bị. Tất cả các tập tin thiết bị / dev có để cho phép các chương trình để
truy cập vào các thiết bị của Linux. Ví dụ chương trình gắn kết có như là một đối
số tập tin thiết bị là nó mong muốn gắn kết.

6
Nhóm 6 – HTTT1 K8


Superblock EXT2
Superblock chứa một mô tả về kích thước và hình dạng cơ bản của hệ thống tập
tin. Các thông tin bên trong nó cho phép người quản lý hệ thống tập tin để sử dụng
và duy trì hệ thống tập tin. Thường chỉ có các Superblock ở Block Group 0 được
đọc khi hệ thống tập tin được gắn nhưng Khối mỗi nhóm có chứa một bản sao
trong trường hợp tham nhũng hệ thống tập tin. Trong số khác thông tin mà nó nắm
giữ:
Số lượng phép thuật
Điều này cho phép phần mềm gắn kết để kiểm tra rằng đây là thực sự là
Superblock cho một
Hệ thống tập tin EXT2. Đối với phiên bản hiện tại của EXT2 0xEF53.
Sửa đổi Cấp
Mức sửa đổi lớn và nhỏ cho phép mã lắp để xác định có hay không phải hệ thống
tập tin hỗ trợ các tính năng mà chỉ có sẵn trong phiên bản đặc biệt của hệ thống tập
tin. Ngoài ra còn có tính năng tương thích các lĩnh vực, giúp gắn kết mã để xác

định các tính năng mới một cách an toàn có thể được sử dụng trên hệ thống tập tin.
Số Núi Mount Count và tối đa
Cùng với những cho phép hệ thống để xác định nếu hệ thống tập tin cần được đầy
đủ kiểm tra. Số đếm gắn kết được tăng lên mỗi lần hệ thống tập tin đã được lắp và
khi nó bằng gắn kết tối đa tính thông điệp cảnh báo "gắn kết tối đa đếm đạt tới,
chạy e2fsck được khuyến khích "được hiển thị
− Chặn Số Nhóm.
− Nhóm Lô số nắm giữ bản sao của các Superblock.
− Kích cỡ khối.
7
Nhóm 6 – HTTT1 K8


− Kích thước của khối cho hệ thống tập tin trong byte, ví dụ như 1024 byte.
− Khối cho mỗi Nhóm.
− Số lượng các khối trong một nhóm. Giống như kích thước khối này là cố
định khi hệ thống tập tin được tạo ra.
Free Blocks: Số lượng các khối trong hệ thống tập tin miễn phí.
Free inodes: Số lượng các inodes miễn phí trong hệ thống tập tin,
Đầu tiên Inode: Đây là số inode của inode đầu tiên trong hệ thống tập tin. Inode
đầu tiên trong một EXT2 hệ thống tập tin gốc sẽ là entry thư mục cho thư mục '/'.
Descriptor Nhóm EXT2
Mỗi Nhóm Block có một cấu trúc dữ liệu mô tả nó. Giống như Superblock, tất cả
các nhóm mô tả cho tất cả của các nhóm khối được nhân đôi trong mỗi Nhóm
Block trong trường hợp của tập tin hệ thống tham nhũng.
Mỗi Descriptor Group chứa các thông tin sau:
Khối Bitmap: Số khối của bitmap phân bổ khối cho tập đoàn này Block. Này
được sử dụng trong khối phân bổ và deallocation:
Inode Bitmap.
Số khối inode bitmap giao cho Tập đoàn Khối. Này được sử dụng trong inode phân

bổ và deallocation.
Inode Table Số khối của khối bắt đầu cho bảng inode cho tập đoàn này Block. Mỗi
inode được đại diện bởi các cấu trúc dữ liệu EXT2 inode mô tả dưới đây. Khối số
miễn phí, số inode miễn phí, sử dụng số thư mục.
Các mô tả của nhóm được đặt trên khác và họ cùng nhau thực hiện các mô tả nhóm
bảng. Mỗi Nhóm Blocks chứa toàn bộ bảng mô tả nhóm sau bản sao của
Superblock. Chỉ có bản sao đầu tiên (ở Block Group 0) là thực sự được sử dụng
8
Nhóm 6 – HTTT1 K8


bởi hệ thống tập tin EXT2. Các bản sao khác đang có, giống như bản sao của
Superblock, trong trường hợp các bản sao chính là bị hỏng.

9
Nhóm 6 – HTTT1 K8


CHƯƠNG II: QUẢN LÝ KHÔNG GIAN NHỚ TỰ DO
2.1. Phương pháp quản lý không gian trống
Vì không gian trống là giới hạn nên chúng ta cần dùng lại không gian từ các
tập tin bị xoá cho các tập tin mới nếu có thể. Để giữ vết của không gian đĩa trống,
hệ thống duy trì một danh sách không gian trống. Danh sách không gian trống ghi
lại tất cả khối đĩa trống. Để tạo tập tin, chúng ta tìm trong danh sách không gian
trống lượng không gian được yêu cầu và cấp phát không gian đó tới tập tin mới.
Sau đó, không gian này được xoá từ danh sách không gian trống. Khi một tập tin bị
xoá, không gian đĩa của nó được thêm vào danh sách không gian trống. Mặc dù tên
của nó là danh sách nhưng danh sách không gian trống có thể không được cài như
một danh sách.
2.2. Phương pháp bit vector ( bitmap)

Không gian đĩa được chia thành các khối (Block) và đánh số từ 0 đến max. Ví dụ :
Đĩa mềm 1,44M , 2 mặt, 80 track/1 mặt , 18 sector/1 track được đánh số như sau :
Head 0 , track 0 , sector 1
…………………………..

Block 0


Head 0 , track 0 , sector 19

Block 18

Head 1, track 0 , sector 1

Block 19

………………………….



Head 1, track 0, sector 18

Bloc 36

Head 0, track 1, sector 1

Block 37

…………………………




………………………….



Head 1 , track 79 , sector 18

Block 2879

Mỗi khối đĩa sử dụng một bit để đánh dấu trạng thái . Khối đĩa nào đã sử dụng thì
bit trạng thái có giá trị bằng 1 , chưa sử dụng thì có giá trị bằng 0 . Tập hợp các ký
hiệu 0,1 tạo thành một bitvector ( bitmap )

10
Nhóm 6 – HTTT1 K8


Hình 1.2. Quản lý không gian đĩa
Ví dụ : Cho không gian đĩa từ hình 1.2 các khối
2,3,4,5,8,9,10,11,12,13,17,18,25,26,27. là các khối đĩa tự do . Khi các bitmap quản
lý không gian nhớ tự do bởi địa chỉ :
11000011000000111001111110001111…
Phương pháp bitmap có ưu điểm là cài đặt đơn giản, dễ quản lý, dễ tìm kiếm
những khối đĩa tự do liên tục trên đĩa nhưng tốn không gian dành cho bitmap ( mỗi
khối đĩa sẽ tốn một bit ).

11
Nhóm 6 – HTTT1 K8



CHƯƠNG III : PHƯƠNG PHÁP CẤP PHÁT KHÔNG GIAN
CHO FILE
Tính tự nhiên của truy xuất trực tiếp đĩa cho phép chúng ta khả năng linh
hoạt trong việc cài đặt tập tin. Trong hầu hết mọi trường hợp, nhiều tập tin sẽ được
lưu trên cùng đĩa. Vấn đề chính là không gian cấp phát tới các tập tin này như thế
nào để mà không gian đĩa được sử dụng hiệu quả và các tập tin có thể được truy
xuất nhanh chóng. Ba phương pháp quan trọng cho việc cấp phát không gian đĩa
được sử dụng rộng rãi: cấp phát kề, liên kết và chỉ mục. Mỗi phương pháp có ưu và
nhược điểm. Một số hệ thống hỗ trợ cả ba. Thông dụng hơn, một hệ thống sẽ dùng
một phương pháp cụ thể cho tất cả tập tin. Linux sử dụng phương pháp cấp phát
theo chỉ số Index . Để làm rõ hơn chúng ta tìm hiểu về cơ chế quản lý đĩa
Sơ bộ về tổ chức đĩa:
 Thông tin được đọc/ghi theo từng khối sector
 Nhóm các sector thành block hay cluster (khối)
 Trên đĩa: 1 file gồm 1 tập các khối. HDH chịu trách nhiệmcấp phát
các khối cho file:
 Không gian trên đĩa phải được cấp phát cho file
 Cần theo dõi không gian trống sẵn sàng cho việc cấp phát
 Một số vấn đề:
 Không gian tối đa yêu cầu cấp phát cho file 1 lần là bao nhiêu?
 Không gian cấp phát cho file gọi là phần (portion). Kích thước phần
như thế nào ?
 Theo dõi các phần được gán cho 1 file .
Cấp phát trước và cấp phát động :
12
Nhóm 6 – HTTT1 K8


 Cấp phát trước : Phải xác định kích thước của một file lúc tạo , khó

xác định và gây lãng phí .
 Cấp phát động : Cấp phát một file theo các thành phần như mong
muốn .
Hai lựa chọn :
 Các phần liên tục, lớn, thay đổi: hiệu năng tốt, tránh lãng phí, bảng
cấp phátnhỏ; khó sử dụng lại không gian
 Các khối: các phần nhỏ cố định; linh hoạt cao; cần bảng lớn, cấu trúc
phứctạp để quản lý
 Các lựa chọn trên tương thích hoặc với cấp phát trước, hoặc cấp phát
động
 Với các phần có kích thước thay đổi, sử dụng một số chiến lược:
 Phù hợp đầu tiên: chọn nhóm các khối liên tục chưa sử dụng đầu tiên
cókích thước phù hợp
 Phù hợp nhất: chọn nhóm chưa sử dụng nhỏ nhất có kích thước phù
hợp
 Phù hợp gần nhất: chọn nhóm có kích thước phù hợp, chưa sử dụng
cầnvới cấp phát cho file đó lần trước nhất

Phương pháp cấp phát theo chỉ số ( Index block / Node)
Cấp phát liên kết giải quyết việc phân mãnh ngoài và vấn đề khai báo kích thước
của cấp phát kề. Tuy nhiên, cấp phát liên kết không hỗ trợ truy xuất trực tiếp hiệu
quả vì các con trỏ chỉ tới các khối được phân tán với chính các khối đó qua đĩa và
cần được lấy lại trong thứ tự. Cấp phát được lập chỉ mục giải quyết vấn đề này
bằng cách mang tất cả con trỏ vào một vị trí: khối chỉ mục (index block).Mỗi tập
13
Nhóm 6 – HTTT1 K8


tin có khối chỉ mục của chính nó, khối này là một mảng các địa chỉ khối đĩa. Mục
từ thứ i trong khối chỉ mục chỉ tới khối i của tập tin. Thư mục chứa địa chỉ của

khối chỉ mục (như hình X-8). Để đọc khối i, chúng ta dùng con trỏ trong mục từ
khối chỉ mục để tìm và đọc khối mong muốn. Cơ chế này tương tự như cơ chế
phân trang.

Hình 2.1. Cấp phát không gian đĩa được lập chỉ mục

Khi một tập tin được tạo, tất cả con trỏ trong khối chỉ mục được đặt tới nil.
Khi khối thứ i được viết đầu tiên, khối được chứa từ bộ quản lý không gian trống
và địa chỉ của nó được đặt trong mục từ khối chỉ mục. Cấp phát được lập chỉ mục
hỗ trợ truy xuất trực tiếp, không gặp phải sự phân mãnh ngoài vì bất cứ khối trống
trên đĩa có thể đáp ứng yêu cầu thêm không gian. Cấp phát được lập chỉ mục gặp
phải sự lãng phí không gian. Chi phí con trỏ của khối chỉ mục thường lớn hơn chi
14
Nhóm 6 – HTTT1 K8


phí con trỏ của cấp phát liên kết. Xét trường hợp thông thường trong đó chúng ta
có một tập tin với chỉ một hoặc hai khối. Với cấp phát liên kết, chúng ta mất không
gian của chỉ một con trỏ trên khối (một hay hai con trỏ). Với cấp phát được lập chỉ
mục, toàn bộ khối chỉ mục phải được cấp phát thậm chí nếu một hay hai con trỏ là
khác nil.
Điểm này sinh ra câu hỏi khối chỉ mục nên lớn bao nhiêu? Mỗi tập tin phải cómột
khối chỉ mục để mà chúng ta muốn khối chỉ mục nhỏ nhất có thể. Tuy nhiên,
nếukhối chỉ mục quá nhỏ nó không thể quản lý đủ các con trỏ cho một tập tin lớn
và một cơ chế sẽ phải sẳn có để giải quyết vấn đề này:
• Cơ chế liên kết (linked scheme): một khối chỉ mục thường là một
khối đĩa. Do đó, nó có thể được đọc và viết trực tiếp bởi chính nó. Để
cho phép đối với các tập tin lớn, chúng ta có thể liên kết nhiều khối
chỉ mục với nhau. Thí dụ, một khối chỉ mục có thể chứa một header
nhỏ cho tên tập tin và một tập hợp của các địa chỉ 100 khối đĩa đầu

tiên. Địa chỉ tiếp theo (từ cuối cùng trong khối chỉ mục) là nil (đối với
một tập tin nhỏ) hay một con trỏ tới khối chỉ mục khác (cho một tập
tin lớn)
• Chỉ mục nhiều cấp (multilevel index): một biến dạng của biểu diễn
liên kết là dùng khối chỉ mục cấp 1 để chỉ tới khối chỉ mục cấp 2.
Khối cấpchỉ tới các khối tập tin. Để truy xuất một khối, hệ điều hành
dùng chỉ mục cấp 1 để tìm một khối chỉ mục cấp 2 và khối đó tìm
khối dữ liệu mong muốn. Tiếp cận này có thể được tiếp tục tới cấp 3
hay cấp 4, tuỳ thuộc và kích thước tập tin lớn nhất được mong muốn.
Với khối có kích thước 4,096 bytes, chúng ta có thể lưu 1,024 con trỏ
4 bytes trong một khối chỉ mục. Chỉ mục hai cấp cho phép 1,048,576
khối dữ liệu, cho phép tập tin có kích thước tới 4G
• Cơ chế kết hợp (combined scheme): một biến dạng khác được dùng
15
Nhóm 6 – HTTT1 K8


trong UFS là giữ 15 con trỏ đầu tiên của khối chỉ mục trong inode của
tập tin. 12 con trỏ đầu tiên của 15 con trỏ này chỉ tới khối trực tiếp
(direct blocks); nghĩa là chúng chứa các địa chỉ của khối mà chứa dữ
liệu của tập tin. Do đó, dữ liệu đối với các tập tin nhỏ (không lớn hơn
12 khối) không cần một khối chỉ mục riêng. Nếu kích thước khối là 4
KB, thì tới 48 KB dữ liệu có thể truy xuất trực tiếp. 3 con trỏ tiếp theo
chỉ tới các khối gián tiếp(indirect blocks). Con trỏ khối gián tiếp thứ
nhất là địa chỉ của khối gián tiếp đơn (single indirect blocks). Khối
gián tiếp đơn là một khối chỉ mục không chứa dữ liệu nhưng chứa địa
chỉ của các khối chứa dữ liệu. Sau đó, có con trỏ khối gián tiếp đôi
(double indirect block) chứa địa chỉ của một khối mà khối này chứa
địa chỉ của các khối chứa con trỏ chỉ tới khối dữ liệu thật sự. Con trỏ
cuối cùng chứa chứa địa chỉ của khối gián tiếp ba (triple indirect

block). Với phương pháp này, số khối có thể được cấp phát tới một
tập tin vượt quá lượng không gian có thể đánh địa chỉ bởi các con trỏ
tập tin bytes hay 4 GB. Nhiều cài đặt LINUX gồm Solaris và AIX của
IBM hỗ trợ tới 64 bit con trỏ tập tin. Các con trỏ có kích thước này
cho phép các tập tin và hệ thống tập tin có kích thước tới terabytes.
Một inode được hiển thị trong hình 2.2 :

16
Nhóm 6 – HTTT1 K8


Hình 2.2 Inode của Linux
Cơ chế cấp phát lập chỉ mục gặp một số khó khăn về năng lực như cấp phát liên
kết. Đặc biệt, các khối chỉ mục có thể được lưu trữ (cache) trong bộ nhớ , nhưng
các khối dữ liệu có thể được trãi rộng khắp phân khu.
Cấp phát dạng chỉ mục phức tạp hơn. Nếu khối chỉ mục đã ở trong bộ nhớ rồi thì
truy xuất có thể được thực hiện trực tiếp. Tuy nhiên, giữ khối chỉ mục trong bộ nhớ
yêu cầu không gian có thể xem xét. Nếu không gian bộ nhớ này không sẳn dùng
thì chúng ta phải đọc trước khối chỉ mục và sau đó khối dữ liệu mong muốn. Đối
với chỉ mục hai cấp, đọc hai khối chỉ mục là cần thiết. Đối với tập tin rất lớn, truy
xuất một khối gần cuối tập tin yêu cầu đọc tất cả khối chỉ mục để lần theo chuỗi
con trỏ trước khi khối dữ liệu được yêu cầu cuối cùng được đọc. Do đó, năng lực
của cấp phát chỉ mục phụ thuộc cấu trúc chỉ mục trên kích thước tập tin và vị trí
của khối mong muốn. Một số hệ thống kết hợp cấp phát kề và cấp phát chỉ mục
bằng cách dùng cấp phát kề cho các tập tin nhỏ (ba hay bốn khối) và tự động
chuyển tới cấp phát chỉ mục nếu tập tin lớn lên. Vì hầu hết các tập tin là nhỏ và cấp
phát kề là hiệu quả cho các tập tin nhỏ, năng lực trung bình là rất tốt. Nhiều tối ưu
khác là có thể và đang được dùng. Với sự chênh lệch tốc độ giữa CPU và đĩa, nó là
không hợp lý để thêm hàng ngàn chỉ thị tới hệ điều hành để tiết kiệm chỉ một vài di
chuyển của đầu đọc. Ngoài ra, sự chênh lệch này tăng theo thời gian, tới điểm nơi

mà hàng trăm của hàng ngàn chỉ thị phù hợp có thể được dùng để tối ưu sự di
chuyển của đầu đọc.

17
Nhóm 6 – HTTT1 K8


CHƯƠNG IV: LẬP LỊCH CHO ĐĨA

4.1. Khái niệm Lập lịch

Lập lịch cho đĩa là xây dựng các thuật toán dịch chuyển đầu từ đọc ghi sao cho
thời gian truy nhập đĩa là tối ưu nhất
Thời gian truy nhập đĩa
Thời gian di chuyển đầu từ đọc ghi đến strack thích hợp(seek-time)
Thời gian chờ cho khối cần thiết dưới đầu đọc( latency -time)
Thời gian vận chuyển dữ liệu giữa đĩa và bộ nhớ chính(transfer-time)
4.2. Các thuật toán lập lịch cho đĩa.
- First come first Served(FCFS)
- Shortest seek time first(SSTF)
- Scan
- C-Scan
- Look
- C-Look
4.2.1 First come first Served(FCFS)

18
Nhóm 6 – HTTT1 K8



Phương pháp lập lịch đơn giản nhất là FCFS(first-come,first-served). Thuật toán
này rất dể lập trình nhưng không cung cấp được một dịch vụ tốt. Ví dụ : cần phải
đọc các khối theo thứ tự như sau :
98, 183, 37, 122, 14, 124, 65, và 67
Giả sử hiện tại đầu đọc đang ở vị trí 53. Như vậy đầu đọc lần lượt đi qua các khối
53, 98, 183, 37, 122, 14, 124, 65, và 67 như hình sau :

4.2.2 Lập lịch SSTF (shortest-seek-time-first)
Thuật toán này sẽ di chuyển đầu đọc đến các khối cần thiết theo vị trí lần lượt gần
với vị trí hiện hành của đầu đọc nhất. Ví dụ : cần đọc các khối như sau :
98, 183, 37, 122, 14, 124, 65, và 67
Giả sử hiện tại đầu đọc đang ở vị trí 53. Như vậy đầu đọc lần lượt đi qua các khối
53, 65, 67, 37, 14, 98, 122, 124 và 183 như hình sau :

Với ví dụ này, thuật toán SSTF làm giảm số khối mà đầu đọc phải di chuyển là 208
khối.
4.2.3 Lập lịch SCAN

19
Nhóm 6 – HTTT1 K8


Theo thuật toán này, đầu đọc sẽ di chuyển về một phía của đĩa và từ đó di chuyển
qua phía kia. Ví dụ : cần đọc các khối như sau :
98, 183, 37, 122, 14, 124, 65, và 67
Giả sử hiện tại đầu đọc đang ở vị trí 53. Như vậy đầu đọc lần lượt đi qua các khối
53, 37, 14, 0 , 65, 67, 98, 122, 124 và 183 như hình sau :

Thuật toán này còn được gọi là thuật toán thang máy. Hình ảnh thuật toán giống
như hình ảnh của một người quét tuyết, hay quét lá.

4.2.4 Lập lịch C-SCAN
Thuật toán này tương tự như thuật toán SCAN, chỉ khác là khi nó di chuyển đến
một đầu nào đó của đĩa, nó sẽ lập tức trở về đầu bắt đầu của đĩa. Lấy lại ví dụ trên,
khi đó thứ tự truy xuất các khối sẽ là : 53, 65, 67, 98, 122, 124, 183, 199, 0, 14, 37
như hình sau :

4.2.5 Lập lịch LOOK
Nhận xét rằng cả hai thuật toán lập lịch SCAN và C-SCAN luôn luôn chuyển đầu
đọc của đĩa từ đầu này sang đầu kia. Nhưng thông thường thì đầu đọc chỉ chuyển
đến khối xa nhất ở mỗi hướng chứ không đến cuối. Do đó SCAN và C-SCAN
được chỉnh theo thực tế và gọi là lập lịch LOOK. Như hình sau :
20
Nhóm 6 – HTTT1 K8


4.2.6 C-Look
Tương tự như Look nhưng đầu đọc/ghi không phục vụ đường về . Theo ví
dụ trên , sơ đồ dịch chuyển đầu từ đọc/ghi theo thuật toán SSFT được thể
hiện như sau :

Lựa chọn thuật toán lập lịch :
Với những thuật toán lập lịch, vấn đề là phải lựa chọn thuật toán nào cho hệ
thống. Thuật toán SSTF thì rất thông thường. Thuật toán SCAN và C-SCAN thích
hợp cho những hệ thống phải truy xuất dữ liệu khối lượng lớn. Với bất kỳ thuật
toán lập lịch nào, điều quan trọng là khối lượng về số và kiểu khối cần truy xuất.
Ví dụ, nếu số khối cần truy xuất là liên tục thì FCFS là thuật toán tốt.

21
Nhóm 6 – HTTT1 K8



Tài Liệu Tham Khảo
1. Giáo trình Nguyên lý hệ điều hành – Hồ Đắc Phương.
2. Giáo trình Nguyên lý hệ điều hành – NXB Hà Nội – Đặng Vũ Tùng.
3. Giáo trình Nguyên lý hệ điều hành – Tổ KHMT Trường ĐHCN Hà Nội.
4. />5. Các Thuật toán lập lịch.
6. Hệ thống file trong Linux

22
Nhóm 6 – HTTT1 K8



×