Báo cáo môn học Nguyên lý hệ điều hành Nghiên cứu tìm hiểu về quản lý bộ nhớ trong HĐH Linux

22 20 0
Báo cáo môn học Nguyên lý hệ điều hành Nghiên cứu tìm hiểu về quản lý bộ nhớ trong HĐH Linux

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI TRƯỜNG CÔNG NGHỆ THƠNG TIN VÀ TRUYỀN THƠNG **************** Báo cáo mơn học: Nguyên lý hệ điều hành Nghiên cứu tìm hiểu quản lý nhớ HĐH Linux ĐIỂM Sinh viên thực hiện: NHẬN XÉT VÀ CHỮ KÝ CỦA GIẢNG VIÊN Đào Xuân An 20190076 Nguyễn Hoàng Thành 20194378 Vũ Duy Hiệp 20194279 Lớp: 128692 Giảng viên hướng dẫn: GV.Phạm Đăng Hải Hà Nội, tháng 11 năm 2021 LỜI MỞ ĐẦU Linux hệ điều hành mã nguồn mở phổ biến toàn giới Linux hệ điều hành họ UNIX miễn phí sử dụng rộng rãi Được viết vào năm 1991 Linus Toward, hệ điều hành Linux thu nhiều thành công Là hệ điều hành đa nhiệm, đa người dùng, Linux chạy nhiều phần cứng khác Với tính ổn định mềm dẻo, Linux dần sử dụng nhiều máy chủ máy trạm mạng máy tính Linux cịn cho phép dễ dàng thực việc tích hợp hệ điều hành khác mạng máy tính Windows, Novell, Apple Ngồi ra, với tính mã nguồn mở, hệ điều hành cho phép khả tùy biến cao, thích hợp cho nhu cầu sử dụng cụ thể Nhiều năm qua, Linux thực tạo cách mạng lĩnh vực máy tính Sự phát triển mà Linux mang lại thật đáng kinh ngạc: hệ điều hành đa nhiệm, đa người dùng Linux chạy nhiều vi xử lý khác như: Intel , Motorola , MC68K , Dec Alpha… Ngồi Linux cịn tương tác tốt với hệ điều hành của: Apple , Microsoft Novell Vì ưu điểm mà ngành công nghệ thông tin Việt Nam chọn Linux làm hệ điều hành cho chương trình ứng dụng chủ đạo kinh tế quốc phòng Với mã nguồn mở, việc sử dụng Linux an toàn với ứng dụng Windows Linux đem đến cho lợi ích kinh tế với nhiều phần mềm miễn phí Giống hệ điều hành khác, Linux phải có chế phương pháp khai thác sử dụng tài nguyên máy hiệu quả, đặc biệt tài nguyên nhớ Trong đồ án này, em trình bày phần quan trọng hệ điều hành Linux hệ điều hành khác là: chế quản lý nhớ Linux MỤC LỤC CHƯƠNG 1: GIỚI THIỆU VỀ HỆ ĐIỀU HÀNH LINUX 1.1 Hệ điều hành Linux 1.2 Tổng quan quản lí nhớ Linux CHƯƠNG : CƠ CHẾ QUẢN LÝ BỘ NHỚ CỦA LINUX 2.1 Một mơ hình tóm tắt nhớ ảo 2.2 Lý yêu cầu phải phân trang Chương : QUẢN LÝ BỘ NHỚ ẢO, KHƠNG GIAN HỐN ĐỔI……….….10 3.1 Khái niệm nhớ ảo, khơng gian hốn đổi .10 3.2 Mơ hình nhớ ảo 10 3.3 Tạo khơng gian hốn đổi 10 3.4 Sử dụng khơng gian hốn đổi 12 3.5 Định vị khơng gian hốn đổi 13 CHƯƠNG 4: CACHES 14 CHƯƠNG 5: CÁC BẢNG QUẢN LÝ TRANG TRONG LINUX 16 5.1 Việc phân phối thu hồi trang 16 5.2 Việc phân phối trang 17 5.3 Thu hồi trang phân phối 18 Kết luận 20 CHƯƠNG 1: GIỚI THIỆU VỀ HỆ ĐIỀU HÀNH LINUX 1.1 Hệ điều hành Linux Linux tên gọi hệ điều hành máy tính mà nguồn mở tên hạt nhân hệ điều hành Phiên Linux Linus Torvalds viết vào năm 1991, lúc ông sinh viên Đại học Helsinki Phần Lan Ông làm việc cách hãng say vòng năm liên tục cho đời phiên Linux 1.0 vào năm 1994 Bộ phận chủ yếu phát triển tung thị trưởng quyền GNU Generl Public License Do mà tái xem mà nguồn Linux Một cách xác, thuật ngữ “Linux" sử dụng để chi nhân Linux, tên sử dụng cách rộng rãi để miêu tả tổng thể hệ điều hành giống Unix tạo việc đóng gói nhân Linux với thư viện công cụ GNU, phân phối Linux Thực tế tập hợp số lượng lớn phần mềm máy chủ web, ngơn ngữ lập trình, hệ quan trị sở liệu, môi trường làm việc desktop GNOME KDE, ứng dụng thích hợp cho cơng việc văn phịng OpenOffice hay LibreOffice Khởi đầu, Linux phát triển cho dòng vi xử lý 386, hệ điều hành hỗ trợ số lượng lớn kiến trúc xử lý, sử dụng nhiều ứng dụng khác từ máy tính cá nhân siêu máy tính thiết bị máy điện thoại di động Ban đầu, Linux phát triển sử dụng người say mê Tuy nhiên, Linux có hỗ trợ công ty lớn IBM HewlettPackard, đồng thời bắt kịp phiên Unix độc quyền chí thách thức thống trị Microsoft Windows số lĩnh vực Sở Linux đạt thành công cách nhanh chóng nhờ vào đặc tính bật so với hệ thống khác; chi phi phần cứng thấp, tốc độ cao (khi so sánh với phiên Unix độc quyền) vả khả bảo mật tốt, độ tin cậy cao (khi so sánh với Windows) đặc điểm giá thành rẻ, không bị phụ thuộc vào nhà cung cấp Một đặc tính trội phát triển mơ hình phát triển phần mềm nguồn mở hiệu Tuy nhiên, số lượng phần cứng hỗ trợ Linux khiêm tốn so với Windows Vì trình điều khiển thiết bị tương thích với Windows nhiều Linux Mong tương lai linux phát triển mạnh 1.2 Tổng quan quản lí nhớ Linux Trong hệ thống máy tính, nhớ tài nguyên quan trọng Cho dù có nhớ khơng đáp ứng đủ nhu cầu người sử dụng Các máy tính cá nhân trang bị dung lượng nhớ lớn Thậm chí máy chủ server có đến hàng gigabyte nhớ Thế nhu cầu nhớ khơng thỏa mãn Có nhiều chiến lược quản lí nhớ nghiên cứu áp dụng, chiến lược sử dụng nhớ ảo hiệu Giống hệ điều hành khác, Linux sử dụng chế nhớ ảo để quản lí tài ngun nhớ máy tính Linux có cách tiếp cận quản lý nhớ rõ ràng Các ứng dụng Linux không phép truy cập trực tiếp vào địa vật lý nhớ Linux cung cấp cho chương trình chạy HĐH - cịn gọi tiến trình - mơ hình đánh địa phẳng khơng phân đoạn segment:offset DOS Mỗi tiến trình thấy vùng khơng gian địa riêng Tất phiên UNIX cung cấp cách bảo vệ nhớ theo chế bảo đảm khơng có tiến trình ghi đè lên vùng nhớ tiến trình khác hoạt động vùng nhớ hệ thống Nói chung, nhớ mà hệ thống cấp phát cho tiến trình khơng thể đọc ghi tiến trình khác-tránh khả xung đột nhớ Trong hầu hết hệ thống Linux, trỏ sử dụng số nguyên 32 bit trỏ đến ô nhớ cụ thể Với 32 bit, hệ thống đánh địa lên đến GB nhớ Mơ hình nhớ phẳng dễ truy xuất xử lý nhớ phân đoạn segment:offset Ngồi ra, vài hệ thống cịn sử dụng mơ hình địa 64 bit, khơng gian địa mở rộng đến hàng Terabyte Để tăng dung lượng nhớ sẵn có, Linux cịn cài đặt chương trình phân trang đĩa tức lượng khơng gian hốn đổi phân bố đĩa Khi hệ thống yêu cầu nhiều nhớ vật lý, đưa trang khơng hoạt động đĩa, nhờ ta chạy ứng dụng lớn lúc hỗ trợ nhiều người sử dụng Tuy vậy, việc hoán đổi khơng thay nhớ vật lý, chậm cần nhiều thời gian để truy cập đĩa Kernel cài đặt khối nhớ hợp cho chương trình người sử dụng đệm đĩa tạm thời (disk cache) Theo cách này, tất nhớ trống dành để nhớ tạm nhớ đệm (cache) giảm xuống xử lý chạy chương trình lớn CHƯƠNG : CƠ CHẾ QUẢN LÝ BỘ NHỚ CỦA LINUX Máy tính ln có nhu cầu cần nhiều không gian nhớ không gian nhớ nhớ vật lý tồn hệ thống Nhiều chiến lược phát triển để khắc phục vấn đề đa số thành cơng sử dụng nhớ ảo Bộ nhớ ảo làm cho hệ thống có nhiều khơng gian nhớ không gian nhớ thực tế cách chia sẻ tiến trình tiến trình cần nhớ Bộ nhớ ảo làm cho không gian nhớ máy tính ta rộng mở Hệ thống quản lý nhớ cung cấp: Không gian địa rộng (Large Address Spaces) Bộ nhớ ảo có khơng gian nhớ lớn nhiều lần nhớ vật lý hệ thống Vấn đề bảo vệ nhớ (Protection) Mỗi tiến trình hệ thống có khơng gian địa riêng Các khơng gian địa tiến trình hồn tồn tách biệt tiến trình chạy khơng thể ảnh hưởng đến tiến trình khác Cũng vậy, kỹ thuật nhớ ảo phần cứng cho phép vùng nhớ chống lại ghi đè Kỹ thuật bảo vệ mã lệnh liệu không bị ghi đè tiến trình khơng hợp lệ Bản đồ nhớ (Memory Mapping) Bản đồ nhớ sử dụng để ánh xạ file liệu file ảnh vào tiến trình đánh địa không gian nhớ Nội dung file liên kết trực tiếp với không gian địa tiến trình Phân phối nhớ vật lý hợp lý (Fair Physical Memory Allocation) Hệ thống quản lý nhớ cho phép tiến trình chạy hệ thống chia sẻ nhớ vật lý hệ thống cách hợp lý Chia sẻ nhớ ảo (Shared Virtual Memory) Mặc dù nhớ ảo cho phép tiến trình có khơng gian địa riêng, xong nhiều ta cần tiến trình để chia sẻ nhớ 2.1 Một mơ hình tóm tắt nhớ ảo Hình Mơ hình tóm tắt ánh xạ từ nhớ ảo tới đồ địa nhớ vật lý Khi vi xử lý thi hành chương trình, đọc lệnh từ nhớ giải mã Trong giải mã lệnh, lấy cất nội dung ô nhớ nhớ Bộ vi xử lý sau thi hành lệnh chuyển đến lệnh chương trình, đảm bảo vi xử lý ln ln truy cập nhớ để nhận lệnh nhận cất liệu Trong hệ thống nhớ ảo, tất địa ảo chuyển đổi thành địa vật lý vi xử lý Để thực việc chuyển đổi này, nhớ ảo nhớ vật lý chia thành phần có kích thước hợp lý gọi trang (pages) Tất trang có kích thước giống hệt VD: Linux hệ thống Alpha AXP sử dụng trang có dung lượng KB hệ thống Intel x86 sử dụng trang có dung lượng KB Mỗi trang đánh số với số nhất, gọi số hiệu khung trang (page frame number - PFN) Trong mơ hình đánh số trang này, địa ảo gồm phần: địa offset số hiệu khung trang (PFN) VD: Nếu cỡ trang KB, địa ảo bit 011 địa ảo thể địa offset, bit từ bit 12 đến bit cao cho biết số hiệu khung trang ảo Mỗi vi xử lý xử lí địa ảo tách riêng địa offset số hiệu khung trang, chuyển đổi số hiệu khung trang ảo thành số hiệu khung trang vật lý phù hợp truy cập vào địa offset trang vật lý nhờ bảng phân trang Mỗi phần tử bảng phân trang gồm thông tin sau: - Valid flag: Cờ xác định tính hợp lệ, nhận giá trị - Số hiệu khung trang vật lý mà phần tử diễn tả - Thông tin điều khiển truy cập trang Để chuyển đổi địa ảo sang địa vật lý, vi xử lý phải tính tốn số hiệu khung trang địa ảo địa offset trang ảo Giả sử kích thước trang ảo 1000h bytes (là 4096 bytes theo hệ thập phân) địa có giá trị 1194h khơng gian địa ảo tiến trình địa chuyển đổi thành địa offset 0194h thuộc trang ảo có số hiệu khung trang Nếu số hiệu khung trang ảo hợp lệ (nhỏ số max bảng phân trang) vi xử lý nhận số hiệu khung trang vật lý phần tử Ngược lại, số số vùng không tồn nhớ ảo, vi xử lý thực chuyển đổi quyền điều khiển tới hệ điều hành để hệ điều hành sửa chữa lại địa chỉ: vi xử lý thông báo cho hệ điều hành tiến trình hợp lệ cố gắng truy cập địa ảo chuyển đổi địa vật lý hợp lệ, địa coi hỏng trang hệ điều hành thông báo địa ảo không hợp lệ Đây lỗi trang Nếu phần tử cần tìm bảng phân trang hợp lệ, vi xử lý lấy số hiệu khung trang vật lý nhân với kích thước trang kết làm địa sở (địa đầu) trang nhớ vật lý Sau cộng địa sở với địa offset để địa lệnh liệu cần truy cập VD: số hiệu khung trang ảo tiến trình 1, theo giá trị phần tử tương ứng bảng phân trang ta có số hiệu khung trang vật lý 4, kích thước trang 4Kb (1000h) địa sở trang vật lý 4000h (4 x 1000h), cộng với địa offset 0194h địa vật lý 4194h Theo phương pháp trên, nhớ ảo ánh xạ vào trang vật lý hệ thống cách 2.2 Lý u cầu phải phân trang Khi có khơng gian nhớ vật lý không gian nhớ ảo, hệ điều hành phải cân nhắc để sử dụng hiệu nhớ Một phương pháp để tiết kiệm nhớ vật lý yêu cầu trang Theo hệ thống nạp trang nhớ ảo truy cập mà sử dụng chương trình thi hành Khi tiến trình cố gắng truy cập tới địa ảo không thời nhớ, hay vi xử lý khơng thể tìm thấy phần tử bảng phân trang ứng với trang ảo tham chiếu VD hình khơng có phần tử bảng phân trang ứng với số hiệu khung trang ảo nên tiến trình X cố gắng đọc địa từ số hiệu khung trang ảo này, vi xử lý chuyển đổi địa thành địa vật lý Lúc vi xử lý thông báo với hệ điều hành xuất lỗi trang *) Nếu địa ảo lỗi địa không hợp lệ (hay không tồn tại), hệ điều hành kết thúc để bảo vệ tiến trình khác hệ thống khơng bị ảnh hưởng tiến trình khơng minh bạch *) Nếu địa ảo lỗi địa hợp lệ trang mà đưa khơng có nhớ, hệ điều hành phải nạp trang phù hợp vào nhớ từ đĩa Việc truy cập đĩa nhiều thời gian tiến trình phải đợi trang nạp Sau trang ảo nạp ghi vào khung trang vật lý trống phần tử bảng phân trang có số giống số hiệu khung trang ảo nhận số hiệu trang vật lý vừa phân phối cho Sau tiến trình chuyển trở lại trạng thái hoạt động để thực tiếp lệnh bị tạm dừng lỗi nhớ xuất Việc truy cập nhớ ảo tiếp tục thực hiện, vi xử lý thực việc chuyển đổi địa ảo thành địa vật lý, tiến trình tiếp tục thi hành * Trong thời gian chờ nạp trang có tiến trình khác chạy hệ điều hành lựa chọn số chúng thi hành Linux sử dụng kỹ thuật yêu cầu trang để nạp trang thi hành vào nhớ ảo Bất lệnh thi hành, file chứa mở nội dung ánh xạ vào nhớ ảo Điều thực sơ đồ nhớ (memory mapping) Tuy nhiên, có phần trang đưa vào nhớ vật lý Khi thi hành lệnh, hệ thống sinh lỗi trang Linux sử dụng sơ đồ để định phần nạp để thi hành CHƯƠNG 3: CƠ CHẾ QUẢN LÝ BỘ NHỚ ẢO 3.1 Khái niệm nhớ ảo, khơng gian hốn đổi Linux hỗ trợ nhớ ảo, nghĩa sử dụng phần đĩa RAM để tăng kích thước nhớ Kernel ghi nội dung khối nhớ không sử dụng lên đĩa cứng để nhớ sử dụng cho mục đích khác Khi cần lại nội dung chúng đọc trở lại vào nhớ Việc hoàn toàn suốt người sử dụng, chương trình chạy Linux thấy số lượng lớn nhớ có sẵn mà khơng quan tâm phần nằm đĩa Tất nhiên, việc đọc ghi lên đĩa chậm ( khoảng ngàn lần ) so với sử dụng nhớ thật, chương trình chạy khơng nhanh Phần đĩa cứng sử dụng nhớ ảo gọi không gian hốn đổi Linux sử dụng mơt file thông thường file hệ thống phân vùng riêng để làm khơng gian hốn đổi Một phân vùng swap nhanh lại dễ việc thay đổi kích thước file swap Khi bạn biết cần khơng gian hốn đổi bạn bắt đầu tạo phân vùng swap, bạn khơng bạn nên sử dụng file swap trước, sử dụng hệ thống thời gian để biết khơng gian hốn đổi mà cần sau tạo phân vùng swap 3.2 Mơ hình nhớ ảo Trước tìm hiểu phương thức mà Linux sử dụng để hỗ trợ nhớ ảo, nên tìm hiểu mơ hình trừu tượng Khi xử lý thực chương trình, đọc lệnh từ nhớ giải mã lệnh Trong giải mã lệnh, lấy hay lưu trữ nội dung vị trí nhớ Sau xử lý thực lệnh di chuyển đến lệnh chương trình Theo cách này, xử lý ln truy cập nhớ để lấy lệnh lấy lưu trữ liệu Tất địa nhớ ảo địa ảo địa vật lý Bộ xử lý chuyển địa ảo thành địa vật lý dựa vào thông tin bảng quản lý Để cho chuyển đổi dễ dàng nhớ ảo nhớ vật lý chia thành nhiều khúc có kích thước thích hợp gọi trang Tất trang có kích thước để dễ quản lý Linux hệ thống Alpha AXP sử dụng trang 8Kbyte, hệ thống Intel x86 trang 4Kbyte Mỗi trang cung cấp số gọi số khung trang ( PFN : Page Frame Number) 3.3 Tạo khơng gian hốn đổi 10 Một file swap file thơng thường, khơng có đặc biệt kernel Điều mà có nghĩa kernel khơng có vùng trống Nó chuẩn bị để sử dụng với hàm mkswap() Nó phải thường trú đĩa cục Bit vùng trống quan trọng File swap dự trữ khơng gian đĩa để kernel đưa trang ngồi nhanh chóng mà khơng phải thực tất bước cần thiết định vị disk sector cho file Bởi vùng trống file có nghĩa khơng có disk sector định vị nên kernel sử dụng file Cách tốt để tạo file swap mà khơng có vùng trống thực đoạn lệnh sau : $ dd if=/dev/zero of=/extra-swap bs=1024 count=1024 1024+0 records in 1024+0 records out $ Trong đó, /extra-swap tên file swap kích thước cho sau count= Kích thước tốt bội số kernel ghi trang nhớ, trang có kích thước Kbyte Nếu kích thước khơng phải bội số cặp Kbyte cuối khơng sử dụng Một phân vùng swap khơng có đặc biệt Bạn tạo giống phân vùng khác, khác sử dụng phân vùng thơ, khơng chứa file hệ thống Phân vùng swap đánh dấu loại 82 ( Linux swap ), điều giúp cho việc liệt kê phân vùng rõ ràng khơng hồn tồn cần thiết kernel Sau bạn tạo phân vùng swap phân vùng swap, bạn cần ghi chữ ký lên nơi bắt đầu Chữ ký sử dụng kernel chứa số thông tin việc quản lý Đoạn lệnh để làm việc hàm mkswap(), sử dụng sau : $ mkswap /extra-swap 1024 Setting up swapspace, size = 1044480 bytes $ Chú ý khơng gian hốn đổi chưa sử dụng, tồn kernel khơng sử dụng để cung cấp nhớ ảo Bạn nên cẩn thận sử dụng hàm mkswap() khơng kiểm tra file hay phân vùng sử dụng chưa Bạn dễ dàng ghi đè lên file hay phân vùng quan trọng với hàm mkswap() Chỉ nên sử dụng hàm cài đặt lên hệ thống 11 củabạn Trình quản lý nhớ Linux giới hạn kích thước khơng gian hốn đổi 127MB Tuy nhiên bạn sử dụng lúc tới khơng gian hốn đổi nên tổng kích thước lên đến 1GB Điều khơng cịn đúng, với phiên kernel giới hạn thay đổi tùy thuộc vào cấu trúc Ví dụ xử lý i386 giới hạn 2GB 3.4 Sử dụng khơng gian hốn đổi Một khơng gian hốn đổi khởi tạo lấy để sử dụng nhờ lệnh swapon Lệnh báo cho kernel khơng gian hốn đổi sử dụng Đường dẫn đến khơng gian hốn đổi cấp đối số, để bắt đầu hốn đổi file swap tạm thời, bạn sử dụng đoạn lệnh sau : $ swapon /extra-swap $ Khơng gian hốn đổi sử dụng tự động cách liệt kê chúng file /etc/fstab /dev/hda8 /swapfile none none swap swap sw sw 0 0 Đoạn mã khởi động chạy lệnh swapon -a, lệnh bắt đầu thực hoán đổi tất khơng gian hốn đổi liệt kê file /etc/fstab Do lệnh swapon thường sử dụng cần hốn đổi thêm Bạn quản lý việc sử dụng khơng gian hốn đổi với lệnh free Nó cho biết tổng số khơng gian hoán đổi sử dụng $ free total used free shared buffers Mem: 15152 -/+ buffers: Swap: 32452 14896 12368 6684 256 12404 2528 2784 25768 $ Một không gian hốn đổi bị loại bỏ lệnh swapoff Thông thường không cần phải dùng lệnh ngoại trừ khơng gian hốn đổi tạm thời Bất kì trang sử dụng khơng gian hốn đổi đưa vào trước Nếu khơng có đủ nhớ 12 vật lý để chứa chúng chúng đưa đến khơng gian hốn đổi khác Nếu khơng có đủ nhớ ảo để chứa tất trang, Linux bắt đầu dừng lại (thrash), sau khoảng thời gian dài khôi phục lúc hệ thống sử dụng Bạn nên kiểm tra ( lệnh free ) để xem có đủ nhớ trống khơng trước loại bỏ khơng gian hốn đổi Tất khơng gian hốn đổi sử dụng tự động nhờ lệnh swapon -a loại bỏ với lệnh swapoff -a, lệnh tìm thơng tin file /etc/fstab để loại bỏ Cịn khơng gian hốn đổi điều khiển tay sử dụng bình thường Đơi có nhiều khơng gian hốn đổi sử dụng có nhiều nhớ vật lý trống Điều xảy thời điểm có nhu cầu hốn đổi, sau tiến trình lớn chiếm nhiều nhớ vật lý kết thúc giải phóng nhớ Dữ liệu đưa không tự động đưa vào cần, nhớ vật lý cịn trống thời gian dài Bạn khơng cần phải lo lắng điều mà cần biết điều xảy Bạn khơng cần phải lo 3.5 Định vị khơng gian hốn đổi Người ta thường nói bạn nên định vị khơng gian hốn đổi gấp đôi nhớ vật lý, quy luật Bạn xem cách làm sau : + Dự đoán tổng nhớ mà bạn cần Đây số lượng nhớ lớn mà bạn cần thời điểm đó, tổng nhớ cần thiết cho tất chương trình mà bạn muốn chạy lúc Lệnh free ps có ích để đốn lượng nhớ cần dùng + Cộng thêm vào dự đốn bước 1, dự đốn kích thước chương trình sai bạn quên số chương trình mà bạn muốn chạy, để chắn bạn nên chuẩn bị không gian phụ để dùng cần Nên định vị dư thiếu không dư nhiều gây lãng phí Bạn nên làm trịn lên thành số chẵn megabyte + Dựa tính tốn trên, bạn biết cần tổng cộng nhớ Vì vậy, để định vị khơng gian hốn đổi, bạn cần lấy tổng nhớ dùng trừ cho nhớ vật lý + Nếu khơng gian hốn đổi mà bạn tính lớn hai lần nhớ vật lý bạn nên mua thêm RAM, khơng hiệu máy thấp Tốt hết nên có vài khơng gian hốn đổi cho dù theo tính tốn bạn khơng cần Linux sử dụng khơng gian hốn đổi linh hoạt Linux đưa trang nhớ khơng sử dụng ngồi cho dù nhớ chưa cần dùng Điều giúp tránh việc chờ đợi hoán đổi cần nhớ 13 CHƯƠNG 4: CACHES Các phương pháp quản lý nhớ lại không thực hiệu Do người thiết kế hệ điều hành người thiết kế vi xử lý cố gắng nâng cao hiệu hệ thống Xét khía cạnh chế tạo vi xử lý, nhớ, v v để hệ thống hiệu tốt cần trì vùng nhớ đệm cho liệu thông tin hữu ích làm cho thao tác nhanh Trong Linux sử dụng số loại vùng nhớ đệm cache sau: Vùng đệm (Buffer Cache): chứa đệm liệu (data buffers) sử dụng trình điều khiển thiết bị khối Các đệm có dung lượng ấn định trước (ví dụ 512 bytes) chứa khối thông tin đọc từ thiết bị khối ghi tới thiết bị khối Một thiết bị khối thiết bị truy cập việc đọc ghi khối liệu có kích thước quy ước từ trước Ví dụ tất ổ đĩa thiết bị khối Vùng đệm đánh số thông qua việc định danh thiết bị số hiệu khối sử dụng để tìm kiếm khối liệu Nếu liệu tìm vùng đệm khơng cần phải đọc từ thiết bị khối vật lý, ví dụ đĩa cứng truy cập liệu nhanh việc truy cập ổ đĩa vật lý tốn nhiều thời gian Vùng trang nhớ (Page Cache) Vùng trang nhớ sử dụng để tăng tốc độ truy cập trang liệu đĩa Một trang nhớ sử dụng để lưu trữ nội dung logic file trang truy cập thông qua file địa offset file Khi trang đọc từ đĩa để ghi vào nhớ, chúng ghi vào vùng trang nhớ Vùng lưu trữ trung gian (Swap Cache) Chỉ có trang bị thay đổi (có kiểu dirty) ghi vào file trung gian (swap file) Nếu trang không bị thay đổi sau ghi tới file trung gian trước lần truy cập không cần phải ghi lại trang vào file trung gian Thay vào bị loại bỏ, điều tiết kiệm cho ta nhiều thao tác không cần thiết với ổ đĩa Các vùng đệm phần cứng (Hardware Caches) Thông thường vùng đệm phần cứng đặt vi xử lý, nơi lưu giữ phần tử bảng quản lý trang Trường hợp vi xử lý không đọc trang trực tiếp từ bảng quản lý trang mà chuyển đổi giá trị bảng quản lý trang để có địa trang mà cần Hệ thống sử dụng phần tử gọi Translation Look-aside Buffers 14 (TLB) để chứa phần tử bảng quản lý trang từ nhiều tiến trình hệ thống Khi địa ảo xử lý, vi xử lý cố gắng tìm phần tử TLB phù hợp cho Nếu tìm phần tử phù hợp, chuyển đổi trực tiếp địa ảo thành địa vật lý thực thao tác liệu Nếu khơng phải gửi tín hiệu thơng báo lỗi LTB tới hệ điều hành Lỗi chuyển tới hệ điều hành để sửa chữa: hệ điều hành đưa phần tử TLB để ánh xạ địa chỉ, phần tử lỗi bị xóa, vi xử lý chuyển đổi địa ảo sang địa vật lý Lúc thực thao tác đọc/ghi liệu với nhớ Hạn chế việc sử dụng vùng đệm Linux phải sử dụng nhiều lần nhiều khơng gian nhớ cho việc trì vùng đệm vùng đệm bị lỗi, hệ thống bị treo 15 CHƯƠNG 5: CÁC BẢNG QUẢN LÝ TRANG TRONG LINUX Hình Các bảng quản lý trang mức Linux áp dụng bảng quản lý trang mức Số hiệu khung trang bảng quản lý trang chứa thông tin bảng quản lý trang mức Để chuyển đổi địa ảo thành địa vật lý, vi xử lý lấy nội dung địa ảo trường lưu trữ, chuyển đổi thành địa offset trang vật lý chứa bảng quản lý trang đọc số hiệu khung trang bảng quản lý trang mức Việc lặp lại lần đến số hiệu khung trang trang vật lý chứa địa ảo tìm thấy, đồng thời nội dung trường cuối địa ảo (địa offset) sử dụng để tìm liệu trang 5.1 Việc phân phối thu hồi trang Có nhiều yêu cầu với trang vật lý hệ thống Ví dụ, trang nạp vào nhớ, hệ điều hành cần phân phối trang Các trang tự tiến trình xử lý chúng hồn thành trang loại bỏ khỏi hệ thống (với trang vật lý tương tự) Các kỹ thuật cấu trúc liệu sử dụng cho việc phân phối trang thu hồi trang coi tối ưu việc trì hệ thống quản lý nhớ ảo hiệu 16 5.2 Việc phân phối trang Linux sử dụng thuật toán Buddy để phân phối thu hồi khối trang, cố gắng phân phối khối gồm nhiều trang vật lý Các trang phân phối khối có số lượng lũy thừa ví dụ khối gồm trang, trang, trang, v v miễn số lượng nhỏ số trang tự hệ thống free_area mảng lưu giữ khối trang Hệ thống duyệt free_area để tìm khối có số lượng trang đáp ứng yêu cầu Mỗi phần tử free_area có sơ đồ khối phân phối khối cịn tự kích thước khối (theo đơn vị trang - page) Ví dụ phần tử mảng có sơ đồ nhớ diễn tả khối tự khối cấp phát, khối gồm trang (4 pages) Đầu tiên thuật tốn duyệt khối có kích thước phù hợp với số trang u cầu Nếu khơng có khối tự có đủ số trang yêu cầu, khối có kích thước (là khối có kích thước gấp lần số trang yêu cầu) tìm kiếm Quá trình thực tất phần tử free_area duyệt tìm khối có số trang thỏa mãn Nếu khối tìm thấy có số trang lớn số trang u cầu, phải tách đơi khối thành khối nhỏ có khối có số trang phù hợp theo yêu cầu Các khối tự xếp thành hàng đợi khối phân phối trang trả cho đối tượng gọi 17 Hình Cấu trúc liệu free_area Ví dụ, hình khối gồm trang yêu cầu, khối đầu có phần tử bị bỏ qua, khối thứ có kích thước trang chọn (bắt đầu khung trang số 4) Nó tách làm khối khối trang Khối khung trang số trả cho đối tượng gọi trang phân phối khối thứ bắt đầu khung trang số xếp thành khối gồm trang vào phần tử mảng free_area 5.3 Thu hồi trang phân phối Việc phân phối khối nhớ gồm nhiều trang dẫn đến phân mảnh nhớ khối nhớ tự có số trang lớn yêu cầu phải tách thành khối nhỏ Mã lệnh thu hồi trang gộp khối có số trang nhỏ thành khối có số trang tự lớn Bất khối gồm trang tự kiểm tra khối liền kề có kích thước tương tự xem trang có tự hay khơng, tự do, gộp với khối tạo thành khối tự có số lượng trang lớn gấp đôi Mỗi lần khối kết hợp lại thành khối có số trang tự lớn mã thu hồi trang cố 18 gắng kết hợp khối thành khối lớn so với thời điểm Theo phương pháp này, khối gồm trang tự ngày lớn nhớ trở thành khối nhớ Ví dụ, hình khung trang số vừa giải phóng (được trả lại thành tự do), kết hợp với với khung trang số tự xếp hàng vào phần tử số mảng free_area khối gồm trang 19 Kết luận Qua phần tập trình bày tài liệu này, ta nắm nguyên lí chế quản lý nhớ hệ điều hành Linux mức độ Từ giúp hiểu phần cách vận hành hoạt động hệ thống hệ điều hành Linux Tài liệu mang đến phần kiến thức nhỏ đầy đủ giúp em tự tin nghiên cứu sâu vấn đề quản lý nhớ không hệ điều hành Linux mà hệ điều hành khác Tài liệu chủ yếu nghiên cứu hệ thống nhớ ảo, kỹ thuật quản lý nhớ hiệu thông dụng không áp dụng riêng với Linux Phần tập mang tính chất nghiên cứu nên khơng trình bày sâu em cố gắng tóm lược lại vấn đề để hiểu cách hoạt động nhớ hệ thống sử dụng hệ điều hành Linux như: địa ảo, địa vật lý, loại bảng phân trang, đệm, vùng đệm cache,… Qua thấy tầm quan trọng việc quản lý nhớ sử dụng hiệu tài nguyên hệ thống cách hợp lý 20 LỜI CẢM ƠN Cảm ơn thầy Phạm Đăng Hải giảng dạy phần quản lý nhớ đưa hướng dẫn gợi ý giúp em hoàn thành tập lớn Tp Hà Nội, tháng 12 năm 2021 Sinh viên Đào Xuân An Vũ Duy Hiệp Nguyễn Hoàng Thành 21 Tài liệu tham khảo bài: -Homepage: -Understanding The Linux Virtual Memory Manager -http://www.tldp.org/LDP/tlk/mm/memory.html -Giáo trình hệ điều hành Linux Unix 22

Ngày đăng: 19/07/2022, 19:33

Tài liệu cùng người dùng

Tài liệu liên quan