Nhiệm vụ chính của hệ điều hành là phải đảm bảo được các chức năng: - Quản lý không gian nhớ tự do trên bộ nhớ ngoài Free Space Manage - Cấp phát không gian nhớ tự do Allocation Methods
Trang 1TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP HÀ NỘI KHOA CÔNG NGHỆ THÔNG TIN
BÀI TẬP LỚN Môn : Nguyên lý hệ điều hành
- ĐỀ TÀI Nghiên cứu tìm hiểu về quản lý bộ nhớ ngoài trong
Trang 2TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP HÀ NỘI KHOA CÔNG NGHỆ THÔNG TIN
BÀI TẬP LỚN Môn : Nguyên lý hệ điều hành
- ĐỀ TÀI Nghiên cứu tìm hiểu về quản lý bộ nhớ ngoài trong hệ điều hành Linux GIẢNG VIÊN: Ths Nguyễn Thanh Hải
Trang 3LỜI MỞ ĐẦU Vài năm vừa qua Linux đã thực sự tạo ra một cuộc cách mạng trong lĩnh vực máy tính Sự phát triển và những gì chúng ta 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ư Intel, Motorola, MC68K, 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 lại 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á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ố đối với các ứng dụng Windows
Trong bài tập lớn này, chúng ta sẽ tìm hiểu một phần quan trọng trong hệ điều hành Linux đó là: quản lí bộ nhớ ngoài trong Linux, Một hệ điều hành muốn chạy
ổn định thì phải có một cơ chế quản lí bộ nhớ hiệu quả Cơ chế này sẽ được trình bày một cách chi tiết trong bài tập
Trang 4Mục lục
CHƯƠNG 1: MỞ ĐẦU 6
1.1 Tổng quan về hệ điều hành Linux 6
1.2 Tổng quan về bộ nhớ ngoài 7
1.3 Tổng quan về quản lý bộ nhớ ngoài 7
CHƯƠNG 2: CẤU TRÚC VẬT LÝ THƯ MỤC THIẾT BỊ – 8
2.1 Cấu trúc vật lí 8
2.2 Thư mục thiết bị 8
CHƯƠNG 3: CÁC PHƯƠNG PHÁP QUẢN LÝ KHÔNG GIAN NHỚ TỰ DO 9
3.1 Phương pháp bit vector (Bitmap) 9
3.2 Phương pháp liệt kê (Free List) 9
CHƯƠNG 4: CÁC PHƯƠNG PHÁP CẤP PHÁT KHÔNG GIAN NHỚ TỰ DO 11
4.1 Cấp phát liên tục (Contiguous) 11
4.2 Cấp phát liên kết (Linked) 13
4.3 Cấp phát theo chỉ số (Index) 14
CHƯƠNG 5: BỘ NHỚ ẢO 18
5.1 Khái niệm 18
5.2 Swap 18
CHƯƠNG 6: LẬP LỊCH CHO ĐĨA 19
6.1 Khái niệm lập lịch cho đĩa (Disk-scheduling) 19
6.2 Một số phương pháp lập lịch trong Linux 19
Trang 56.2.1 First Come First Served (FCFS) 19
6.2.3 I/O scheduler 20
CHƯƠNG 7: MỘT SỐ HỆ THỐNG FILE TRONG LINUX 22
7.1 Giới thiệu 22
7.2 Hệ thống Ext2 25
Trang 6
CHƯƠNG 1: MỞ ĐẦU
1.1 T ng quan v h ổ ề ệ điều hành Linux
Linux là hệ điều hành Về mặt nguyên tắc hệ điều
hành cũng là một software, nhưng đây là
một software đặc biệt – được dùng để quản lý, điều
phối các tài nguyên (resource) của hệ thống (bao gồm
cả hardware và các software khác) Linux còn được
gọi là Open Source Unix (OSU), Unix-like Kernel,
clone of the UNIX operating system
Linux do Linus Torvalds, một sinh viên tại trường
Đại Học ở Helsinki (Phần Lan) phát triển dựa trên hệ
điều hành Minix, một hệ điều hành có cấu trúc tương tự Unix với các chức năng tối thiểu được dùng trong dạy học
Hiện nay, Linux là một hệ điều hành với mã nguồn mở (Open Source) và miễn phí (free) dưới bản quyền của tổ chức GNU (Gnu’s Not Unix)
Khởi đầu, Linux được thiết kế để hoạt động trên nền tảng của kiến trúc i386 Intel với khả năng đa tác vụ (multitasking) Tuy nhiên ngày nay, Linux đã có các phiên bản trên các họ chip khác chẳng hạn như chip Alpha
Linux có nguyên lý hoạt động tương tự hệ điều hành Unix (Unix like) Mặc
-dù Linux không phải là Unix nhưng người ta vẫn xem Linux như là phiên bản Unix trên PC (PC version of Unix OS)
Do là Unix-like; Linux có đầy đủ tất cả các đặc tính của Unix (fully functional) Ngoài ra nó còn hỗ trợ thêm một số tính năng mà trên Unix không có, như long file name (tên file có ký tự space “ ”)
Hiện tại có nhiều hãng, nhiều tổ chức, nhiều nhóm khác nhau cùng phát triển Linux Tất cả các phiên bản (release) Linux đều có chung phần kernel (phần nhân của hệ điều hành) và hầu hết các tính năng đặc trưng, tuy nhiên các tool (công cụ)
và utility (tiện ích) có đôi chút dị biệt
Có rất nhiều các ứng dụng cho Linux, tuy nhiên hầu hết các ứng dụng cho Linux hiện có đều là các ứng dụng mang tính chuyên dụng Để đưa Linux vào từng gia đình, các tổ chức, các hãng đang cố gắng phát triển các ứng dụng mang tính phổ cập trên Linux chẳng hạn hãng SUN đưa ra phiên bản Star Office tương
Trang 7tự như MS Office – và cũng tương thích với MS Office - cho những người sử dụng Linux ở gia đình, văn phòng
Các ứng dụng được viết trên Linux đều có thể hoạt động trên các hệ thống UNIX (có thể cần phải compile lại)
1.2 T ng quan v b ổ ề ộ nhớ ngoài
Bộ nhớ ngoài, còn được gọi là bộ nhớ bên ngoài, là bộ nhớ được sử dụng để lưu trữ dữ liệu và thông tin bên ngoài của một hệ thống máy tính Bộ nhớ ngoài thường có dung lượng lớn hơn so với bộ nhớ trong và được sử dụng để lưu trữ dữ liệu lâu dài Một số loại bộ nhớ ngoài phổ biến có thể kể đến là: ổ đĩa cứng (HDD),
ổ đĩa thể rắn (SSD), Thẻ nhớ (SD, microSD), USB Flash Drive,…
Bộ nhớ ngoài cho phép người dùng mở rộng khả năng lưu trữ của thiết bị của
họ và di chuyển dữ liệu giữa các thiết bị khác nhau Ngoài ra, bộ nhớ ngoài cũng
có thể được sử dụng như một phương tiện sao lưu dữ liệu quan trọng, giúp bảo vệ thông tin trong trường hợp hỏng hóc hoặc mất mát dữ liệu từ bộ nhớ trong 1.3 T ng quan v ổ ề quản lý b ộ nhớ ngoài
Khi cần lưu trữ các chương trình hoặc 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 Quản lý bộ nhớ ngoài là quá trình tổ chức, lưu trữ và
sử dụng các phương tiện lưu trữ dữ liệu không thuộc phạm vi bộ nhớ chính của thiết bị Nhiệm vụ chính của hệ điều hành là phải đảm bảo được các chức năng:
- Quản lý không gian nhớ tự do trên bộ nhớ ngoài (Free Space Manage)
- Cấp phát không gian nhớ tự do (Allocation Methods)
- Cung cấp các khả năng định vị bộ nhớ ngoài
- Lập lịch cho bộ nhớ ngoài (Disk Scheduling)
Trang 8CHƯƠNG 2: CẤ U TRÚC VẬT LÝ – THƯ MỤC THIẾT BỊ
2.1 C u trúc v t lý ấ ậ
Đĩa từ là một loại bộ nhớ ngoài sử dụng cơ cấu cơ học và từ từ để lưu trữ và truy xuất dữ liệu Xét về cấu trúc vật lý: đĩa từ bao gồm một hoặc nhiều đĩa quay được làm từ kim loại nhẹ như nhôm hoặc thủy tinh đặc động trục Mỗi mặt đĩa chia thành các vùng tròn đồng tâm, có bề dày xác định dùng để ghi từ gọi là các rãnh từ (track), các rãnh cách nhau bởi vành hẹp không được từ hóa Mỗi track được chi thành các cung từ (sector), mỗi sector = 512 byte, các sector được đánh
số Liên cung (Cluster) là một nhóm các sector liên tiếp, thường 2/4/8 sector Tập hợp các track có cùng bán kính tạo thành một từ trụ (Cylinder)
Trên mỗi mặt đĩa có một đầu đọc từ đọc/ghi dữ liệu (Read/Write Heads), để điều khiển đầu đọc/ghi dữ liệu cần có trình điều khiển đầu đọc (Disk Controller Driver) Thông tin trên đĩa được tham chiếu bỏi các thành phần: ổ đĩa, mặt đãi, track, sector
Hệ điều hành xem đãi như mảng một chiều mà các thành phần là các khối đĩa (Disk Block) Mỗi khối đĩa ghi các thông tin về mặt đĩa, track, sector mà hệ điều hành có thể định vị trên đó
2.2 Thư mục thiết bị
Trên mỗi đĩa thông thường có một thư mục thiết bị (Device Directory) cho biết dãi gồm những thông tin gì, độ dài, kểu, người sở hữu, thời điểm khởi tạo, vị trí, được phân bổ trong không gian như thế nào… Thư mục thiết bị được tạo ngay
ở trên đĩa tại một vùng nhớ đặc biệt
Trang 9CHƯƠNG 3: CÁC PHƯƠNG PHÁP QUẢN LÝ KHÔNG
3.1 Phương pháp bit vector (Bitmap)
Đây là phương pháp dùng khá phổ biến trên linux
Bitmap trong linux dùng để theo dõi trạng thái phân bổ của mỗi block Đó là một tập hợp các bit như một bản đồ
Hãy xem xét 8 bit trong bitmap để biểu thị trạng thái phân bổ của các block
11 đến 18 như trong bảng dưới đây Giá trị 1 trong bitmap có nghĩa là block đã được phân bổ để giữ dữ liệu cho một file Giá trị 0 trong bitmap có nghĩa là block hiện không được sử dụng
Bitmap 1 1 0 0 1 0 1 0 Number 11 12 13 14 15 16 17 18 Allocation
status Yes Yes No No Yes No Yes No Chúng ta có thể thấy các block 11,12,15,17 đang được sử dụng, các block 13,14,16,18 không được sử dụng ( các block tự do)
+ Ưu điểm: Cài đặt đơn giản,dễ quản lý ,dễ tìm kiếm những khối đĩa liên tục
+ Nhược điểm: Tốn không gian lưu trữ dành cho bitmap
3.2 Phương pháp liệt kê (Free List)
Trong linux phương pháp liệt kê được sử dụng chính gồm có 4 loại cơ bản : Active List,Inactive-dirty list ,Inactive-clean list,Free list
Trong phương pháp này ,hệ thống sử dụng 1 danh sách móc nối để liệt kê các khối đĩa tự do con trỏ đầu danh sách chỉ tới khối đĩa tự do đầu tiên ,mỗi khối có 1 con trỏ trỏ tới khối kế tiếp
Ví dụ : Cho không gian đĩa từ có các block 0, 1, 3, 5, 7, 8, 10, 12, 13, 16, 21,
23, 24, 25, 26, 27, 29 là các block tự do Khi đó ta có thể quản lý không gian nhớ
tự do sẽ như sau:
Trang 10Ưu điểm: Tiết kiệm không gian nhớ
Nhược điểm: Làm tăng thời gian truy nhập dữ liệu
Trang 11CHƯƠNG 4: CÁC PHƯƠNG PHÁP CẤP PHÁT KHÔNG
Ví dụ: Chúng ta có thể thấy trong sơ đồ đã cho, có một tệp Tên của tệp là
‘mail.’ Tệp bắt đầu từ khối thứ 19 và độ dài của tệp là 6 Vì vậy, tệp chiếm 6 khối theo cách liền kề Như vậy, nó sẽ chứa các khối 19, 20, 21, 22, 23, 24
Ưu điểm: Hỗ trợ tốt cho phương pháp truy nhập tuần tự và truy nhập trực tiếpNhược điểm:
+ Phải chọn được thuật toán tối ưu để tìm các vùng không gian nhớ tự do cấp phát cho file (First-fit, Best-fit, Worst-fit)
First –fit : Cấp phát vùng nhớ tự do đầu tiên đủ lớn tìm được cho file.Việc tìm kiếm có thể bắt đầu tại đầu tập hợp các vùng nhớ trống hay tại điểm kết thúc của tìm kiếm first fit trước đó đã kết thúc Thuật -toán dừng khi tìm kiếm được vùng nhớ đầu tiên đủ điều kiện cho file.Do đó thuật toán này thời gian cấp phát quyền sử dụng ô nhớ
Trang 12nhanh chóng nhưng cũng gây lãng phí bộ nhớ
Best-fit : Cấp phát vùng nhớ tự do nhỏ nhất tuy nhiên đủ lớn tìm được
Chúng ta phải tìm toàn danh sách bộ trừ khi danh sách đó đã đượcxếp thứ tự theo kích thước, Thuật toán này tạo ra lỗ trống nhỏ nhất còn lại dư thừa.Do đó có thể tận dụng tối ưu không gian nhớ của đĩa Nhược điểm là thời gian chờ cấp phát tương đối dài,hiệu năng hoạt động chung của hệ thống giảm khi có nhiều chương trình thực thi đòi hỏi quyền cấp phát bộ nhớ
Worst-fit: Cấp phát vùng nhớ tự do có kích thước lớn nhất cho file Thuật toán này phải tìm danh sách trừ khi nó được xếp theo thứ tự kích thước Thuật toán này tạo ra vùng nhớ trống còn lại lớn nhất cái mà có thể có ích hơn lỗ trống nhỏ từ thuật toán best-fit
+ Có thể xảy ra trương hợp không đủ số khối đĩa tự do liên tiếp chưa
sử dụng để cấp phát cho file chẳng hạn như là kích thước file lớn hơn cùng các khối đĩa tự do liên tục lớn nhất trong bộ nhớ còn trống)
+ Trong trường hợp các khối đĩa tự do nằm tản mạn sẽ không sử dụng được gây tình trạng lãng phí bộ nhớ trong khi đó dung lượng không đủ để cấp phát quyền truy xuất cho file có kích thước dung lượng lớn
Trong hệ điều hành Linux, Linux trải ra tất cả các tập tin của hệ thống trên toàn bộ bề mặt đĩa (các tập tin không ghi sát với nhau như ở hệ điều hành Windows) và dữ liệu của tập tin khi ghi xuống đĩa được hệ thống cấp phát dung lượng lớn hơn kích thước của tập tin cần ghi, do đó khi kích thước thay đổi phần dữ liệu mới sẽ được thêm vào phần trống (đã được chừa sẵn từ trước khi tạo tập tin này), trong trường hợp vùng trống này không đủ thì hệ thống sẽ tìm một vị trí khác còn trống có thể chứa được tập tin này và dời tập tin này đến vị trí đó
Sự phân mảnh chi xảy ra khi dung lượng của đĩa không còn đủ đế chứa tập tin mà không cần phải chia nhỏ tập tin này ra Trường hợp này chỉ xảy
ra khi dung lượng của đĩa đã sử dụng quá 80%
Với cách thực hiện như trên như vậy Linux đã chống phân mảnh ngay
Trang 13từ khi thực hiện ghi tập tin trên đĩa, sự phân mảnh chỉ xảy ra khi dung lượng đĩa còn ít hơn 20%
4.2 C p phát liên k t (Linked) ấ ế
Trong phương pháp này, mỗi file được định vị trong thư mục thiết bị bằng hai con trỏ, một trỏ tới khối đĩa đầu tiên, một trỏ tới khối đĩa cuối cùng đã cấp phát cho file Trong mỗi khối đĩa đã cấp phát cũng có một con trỏ để trỏ tới khối đĩa
kế tiếp nó
Ví dụ: Chúng ta có thể thấy trong hình bên dưới rằng chúng ta có một tệp tên
là ‘jeep.’ Giá trị của phần bắt đầu là 9 Vì vậy, chúng ta phải bắt đầu phân bổ từ khối thứ 9 và các khối được phân bổ theo cách ngẫu nhiên Giá trị cuối là 25 Có nghĩa là việc phân bổ đã kết thúc vào khối thứ 25 Chúng ta có thể thấy trong hình bên dưới rằng khối (25) bao gồm 1, có nghĩa là một con trỏ null và nó sẽ không -trỏ đến một khối khác
Ưu điểm:
+ Hỗ trợ phương pháp nhập tuần tự
+Tận dụng được các khối đĩa tự do nằm tản mạn trong vùng nhớ
Nhược điểm:
+ Không hỗ trợ việc truy nhập trực tiếp
+ Độ tin cậy cũng không cao do nguy cơ việc bị mất các con trỏ liên kết + Tốn không gian nhớ để lưu trữ các con trỏ
Trang 144.3 C p phát theo ch s (Index) ấ ỉ ố
Trong việc sử dụng phương pháp này, để cấp phát không gian nhớ cho một file, hệ thống sử dụng một khối đĩa đặc biệt gọi là khối đĩa chỉ số (Index block) cho mỗi file Trong khối đĩa chỉ số chứa địa chỉ của các khối đĩa đã cấp phát cho file, trong thư mục thiết bị địa chỉ của các khối đĩa chỉ số Khi một khối đĩa được cấp phát cho file thì hệ thống loại bỏ địa chỉ của khối đĩa này ra khỏi danh sách các khối đĩa tự do và cập nhật vào khối chỉ số của file đó
Ưu điểm:
+ Tận dụng được khối nhớ tự do nằm tản mạn
+ Hỗ trợ cho việc truy nhập trực tiếp
Nhược điểm:
+ Tốn không gian nhớ giành cho khối chỉ số
+ Không thể truy nhập tuần tự cũng là một nhược điểm
Cách giải quyết với vấn đề tốn dung lượng bộ nhớ cần đưa ra một cơ chế phù hợp dành cho việc điều chỉnh dung lượng của khối chỉ số sao cho tối ưu nhất
Trang 15Cơ chế liên kết(Linked scheme): Lược đồ này liên kết hai hoặc nhiều khối
chỉ mục với nhau để giữ các con trỏ Mọi khối chỉ mục sau đó sẽ chứa một con trỏ hoặc địa chỉ đến khối chỉ mục tiếp theo
Thí dụ, một khối chỉ số 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 đầu tiên Địa chỉ tiếp theo (từ cuối cùng trong khối chỉ số) là nil (đối với một tập tin nhỏ ) hay một con trỏ trỏ tới khối chỉ số khác (cho một tập tin lớn)
Chỉ số nhiều cấp(Multilevel index): Trong chính sách này, một khối chỉ mục
cấp một được sử dụng để trỏ đến các khối chỉ mục cấp hai Điều này có thể được
mở rộng đến 3 cấp hoặc nhiều hơn tùy thuộc vào kích thước tệp tối đa
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ỉ số Chỉ số hai cấp cho phép 1,048,567 khối dữ liệu, cho phép tập tin có kích thước tối đa 4GB
Cơ chế kết hợp( Combined Scheme): Trong lược đồ này, một khối đặc biệt
được gọi là Inode (nút thông tin) chứa tất cả thông tin về tệp như tên, kích thước, quyền hạn, v.v và không gian còn lại của Inode được sử dụng để lưu trữ các địa chỉ Khối đĩa chứa tệp thực tế như được hiển thị trong hình ảnh bên dưới Một số con trỏ đầu tiên trong Inode trỏ đến các khối trực tiếp, tức là các con trỏ chứa địa chỉ của các khối đĩa chứa dữ liệu của tệp Một số con trỏ tiếp theo trỏ đến các khối gián tiếp Khối gián tiếp có thể là gián tiếp đơn, gián tiếp kép hoặc gián tiếp ba Khối gián tiếp đơn là khối đĩa không chứa dữ liệu tệp mà là địa chỉ đĩa của các khối chứa dữ liệu tệp Tương tự, các khối gián tiếp kép không chứa dữ liệu tệp mà là địa chỉ đĩa của các khối chứa địa chỉ của các khối chứa dữ liệu tệp Chúng ta có thể hiểu theo cách khác: Một biến dạng khác được dùng là giữ 15 con trỏ đầu tiên của khối chỉ số 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ĩ 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ỉ số riêng Nếu kích thước khối là 4KB, 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ỉ số không chứa