Tải bản đầy đủ (.pdf) (27 trang)

Bài Tập Lớn Đề 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.pdf

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 (2.21 MB, 27 trang )

<span class="text_page_counter">Trang 1</span><div class="page_container" data-page="1">

<b>TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP HÀ NỘI KHOA CƠNG NGHỆ THƠNG TIN </b>

<b>BÀI TẬP LỚN </b>

<b>Mơn : Nguyên lý hệ điều hành </b>

</div><span class="text_page_counter">Trang 2</span><div class="page_container" data-page="2">

<b>TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP HÀ NỘIKHOA CÔNG NGHỆ THÔNG TIN </b>

<b>BÀI TẬP LỚN Môn : Nguyên lý hệ điều hành </b>

- <b>ĐỀ TÀI </b>

<b>-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 </b>

</div><span class="text_page_counter">Trang 3</span><div class="page_container" data-page="3">

LỜ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.

</div><span class="text_page_counter">Trang 4</span><div class="page_container" data-page="4">

<b>Mục lục </b>

<b>CHƯƠNG 1: MỞ ĐẦU ... 6</b>

<b>1.1 Tổng quan về hệ điều hành Linux ... 6</b>

<b>1.2 Tổng quan về bộ nhớ ngoài ... 7</b>

<b>1.3 Tổng quan về quản lý bộ nhớ ngoài ... 7</b>

<b>CHƯƠNG 2: CẤU TRÚC VẬT LÝ THƯ MỤC THIẾT BỊ – </b> ... 8

<b>2.1 Cấu trúc vật lí ... 8</b>

<b>2.2 Thư mục thiết bị ... 8</b>

<b>CHƯƠNG 3: CÁC PHƯƠNG PHÁP QUẢN LÝ KHÔNG GIAN NHỚ TỰ </b>DO ... 9

<b>3.1 Phương pháp bit vector (Bitmap) ... 9</b>

<b>3.2 Phương pháp liệt kê (Free List) ... 9</b>

<b>CHƯƠNG 4: CÁC PHƯƠNG PHÁP CẤP PHÁT KHÔNG GIAN NHỚ TỰ </b>DO ... 11

<b>CHƯƠNG 6: LẬP LỊCH CHO ĐĨA ... 19</b>

<b>6.1 Khái niệm lập lịch cho đĩa (Disk-scheduling) ... 19</b>

<b>6.2 Một số phương pháp lập lịch trong Linux</b> ... 19

</div><span class="text_page_counter">Trang 5</span><div class="page_container" data-page="5">

6.2.1 First Come First Served (FCFS) ... 19

</div><span class="text_page_counter">Trang 6</span><div class="page_container" data-page="6">

<b>CHƯƠNG 1: MỞ ĐẦU </b>

1.1 T ng quan v h <b>ổề ệ điề</b>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). Ngồ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

</div><span class="text_page_counter">Trang 7</span><div class="page_container" data-page="7">

tự 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 <b>ổề ộ nhớ</b> ngồi

Bộ nhớ ngồ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 ngồi của một hệ thống máy tính. Bộ nhớ ngồ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. Ngồi ra, bộ nhớ ngồ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 <b>ổề quả</b>n lý b <b>ộ nhớ</b> 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ớ ngồi là q 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)

</div><span class="text_page_counter">Trang 8</span><div class="page_container" data-page="8">

<b>CHƯƠNG 2: CẤU TRÚC VẬT LÝ – THƯ MỤC THIẾT BỊ </b>

2.1 C u trúc v t lý <b>ấậ</b>

Đĩ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 đó.

<b>2.2 Thư mục thiết bị </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.

</div><span class="text_page_counter">Trang 9</span><div class="page_container" data-page="9">

<b>CHƯƠNG 3: CÁC PHƯƠNG PHÁP QUẢN LÝ KHÔNG </b>

<b>3.1 Phương pháp bit vector (Bitmap) </b>

Đâ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 <sup>Yes </sup> <sup>Yes </sup> <sup>No </sup> <sup>No </sup> <sup>Yes </sup> <sup>No </sup> <sup>Yes </sup> <sup>No </sup>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

<b>3.2 Phương pháp liệt kê (Free List) </b>

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:

</div><span class="text_page_counter">Trang 10</span><div class="page_container" data-page="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

</div><span class="text_page_counter">Trang 11</span><div class="page_container" data-page="11">

<b>CHƯƠNG 4: CÁC PHƯƠNG PHÁP CẤP PHÁT KHƠNG </b>

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 tố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)

<b>First –fit : Cấp phát vùng </b>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 -tốn dừng khi tìm kiếm được vùng nhớ đầu tiên đủ điều kiện cho file.Do đó thuật tốn này thời gian cấp phát quyền sử dụng ô nhớ

</div><span class="text_page_counter">Trang 12</span><div class="page_container" data-page="12">

nhanh 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 tồn danh sách bộ trừ khi danh sách đó đã đượcxếp thứ tự theo kích thước, Thuật tố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 tố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 tố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 tố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

</div><span class="text_page_counter">Trang 13</span><div class="page_container" data-page="13">

từ 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) <b>ấế</b>

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ỏ.

</div><span class="text_page_counter">Trang 14</span><div class="page_container" data-page="14">

4.3 C p phát theo ch s (Index) <b>ấỉ ố</b>

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.

</div><span class="text_page_counter">Trang 15</span><div class="page_container" data-page="15">

<b>Cơ chế liên kết(Linked scheme): Lược đồ này liên kết hai hoặc nhiều khối </b>

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) .

<b>Chỉ số nhiều cấp(Multilevel index): Trong chính sách này, một khối chỉ mục </b>

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.

<b>Cơ chế kết hợp( Combined Scheme): Trong lược đồ này, một khối đặc biệt </b>

đượ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

</div>

×