Nghiên cứu tìm hiểu về quản lý bộ nhớ trong hệ điều hành linux

20 574 1
Nghiên cứu tìm hiểu về quản lý bộ nhớ trong hệ điều hành 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

Nghiên cứu tìm hiểu về quản lý bộ nhớ trong hệ điều hành linux tổng quan về linux. So sánh DosWindows và Linux cấu trúc thư mục linux. Quản lý bộ nhớ Cấu trúc cơ bản của chương trình. Cơ chế phân đoạn CƠ CHẾ PHÂN TRANG ....

Nghiên cứu tìm hiểu quản lý nhớ hệ điều hành linux *chương 1: tổng quan linux giới thiệu *Linux hệ điều hành máy tính dựa Unix phát triển phân phối qua mơ hình phần mềm tự mã nguồn mở Thành phần tạo nên Linux nhân linux, nhân hệ điều hành đời vào tháng năm 1991 Linux Torvalds Nhiều người gọi Linux GNU/Linux, lý thân linux phần nhân hệ điều hành Rất nhiều phần mềm, ứng dụng khác hệ thống đồ họa, trình biên dịch, soạn thảo, cơng cụ phát triển cần gắn vào nhân để tạo nên HĐH hoàn chỉnh Hầu hết phần mềm phát triển cộng đồng GNU Tổng quan 2.1 Tiện ích Được sử dụng thường xuyên Dùng cho nhiều thứ như: thao tác file, đĩa, nén, lưu file …Tiện ích Linux lệnh thao tác hay chương trình giao diện đồ hoạ Hầu hết sản phẩm GNU Linux có nhiều tiện ích như: trình biên dịch, trình gỡ lỗi soạn văn bản… Tiện ích người dùng hay hệ thống 2.2 Chương trình ứng dụng: Khác với tiện ích, chương trình word, hệ quản trị sở liệu chương trình ứng dụng có độ phức tạp lớn nhà sản xuất viết 2.3 So sánh Dos/Windows Linux 2.3.1 Giống nhau: * Chế độ hiển thị: Dos Linux Console có chế độ hiển thị ký tự.Windows X-Windows có chế độ đồ hoạ * Lưu trữ liệu theo thư mục cấu trúc cây: thư mục chứa file thư mục khác Cả hai có khả xử lý thao tác liệt kê, tìm kiếm, tạo, xố, đổi tên, di chuyển file thư mục * Khởi động chương trình dịng lệnh kích chuột vào biểu tượng * Trong mơi trường đồ hoạ: có khả năg phóng to, thu nhỏ, di chuyển đóng sổ Tạo thành phần giao diện đồ hoạ thân thiện nút nhấn, menu… 2.4 cấu trúc thư mục linux 1 Các thư mục hệ thống tập tin Hệ thống tập tin Linux Unix tổ chức theo hệ thống phân bậc tương tự cấu trúc phân cấp Bậc cao hệ thống tập tin thư mục gốc, ký hiệu gạch chéo “/” (root directory) Đối với hệ điều hành Unix Linux tất thiết bị kết nối vào máy tính nhận dạng tập tin, kể linh kiện ổ đĩa cứng, phân vùng đĩa cứng ổ USB Điều có nghĩa tất tập tin thư mục nằm thư mục gốc, tập tin biểu tượng cho ổ đĩa cứng 2.5 Quản lý nhớ *Một tài nguyên quan trọng khác quản lý hạt nhân nhớ Để có hiệu quả, theo cách mà phần cứng quản lý nhớ ảo, nhớ quản lý gọi trang (4KB kích thước cho hầu hết kiến trúc) Linux bao gồm phương tiện để quản lý nhớ sẵn có, chế phần cứng cho ánh xạ ảo vật lý *Tuy nhiên, quản lý nhớ nhiều quản lý đệm 4KB Linux cung cấp trừu tượng 4KB đệm, chẳng hạn đếm slab Sơ đồ quản lý nhớ sử dụng đệm 4KB làm sở nó, sau phân bổ cấu trúc từ bên trong, theo dõi trang đầy đủ, phần sử dụng trống rỗng Điều cho phép đề án tự động phát triển co lại dựa nhu cầu hệ thống lớn *Hỗ trợ nhiều người sử dụng nhớ, có lúc nhớ có sẵn cạn kiệt Vì lý này, trang di chuyển khỏi nhớ lên đĩa Quá trình gọi trao đổi trang đổi từ nhớ sang đĩa cứng Bạn tìm thấy nguồn quản lý nhớ *Chương Cấu trúc chương trình Cơ chế phân đoạn - Linux sử dụng chế phân đoạn để phân tách vùng nhớ cấp phát cho hạt nhân tiến trình Hai phân đoạn liên quan đến 3GB ( từ đến 0xBFFF FFFF ) không gian địa tiến trình nội dung chúng đọc chỉnh sửa chế độ người dùng chế độ Kernel Hai phân đoạn liên quan đến GB thứ (từ 0xC000 0000 đến 0xFFFF FFFF ) khơng gian địa tiến trình nội dung đọc chỉnh sửa chế độ Kernel Theo cách này, liệu mã Kernel bảo vệ khỏi truy cập không hợp lý tiến trình chế độ người dùng Kernel GB 3GB tasks GB GB 0x00000000 Kernel/User Linear addresses 2.CƠ CHẾ PHÂN TRANG: 2.1./ Nhu cầu phân trang: Vì có q nhớ vật lý so với nhớ ảo nên HĐH phải trọng để không lãng phí nhớ vật lý Một cách để tiết kiệm nhớ vật lý load trang ảo mà sử dụng chương trình thực thi Ví dụ, chương trình sở liệu thực truy vấn vào sở liệu Trong trường hợp khơng phải tồn sở liệu load vào nhớ mà load ghi có liên quan Việc mà load trang ảo vào nhớ chúng truy cập dẫn đến nhu cầu phân trang 2.2 Trang lưu trữ ( page cache) Cache tầng nằm phần quản lý nhớ kernel phần vào đĩa Các trang mà kernel hoán đổi không ghi trực tiếp lên đĩa mà ghi vào cache Khi cần vùng nhớ trống kernel ghi trang từ cache đĩa -Đặc tính chung trang danh sách trang theo chuẩn LRU (Least Recently Used : sử dụng thường xuyên nhất) : - active_list : trang có page -> age > 0, chứa không chứa liệu, ánh xạ mục bảng trang tiến trình - inactive_clean_list : vùng có inactive_dirty_list riêng nó, chứa trang clean với age == 0, khơng ánh xạ mục bảng trang tiến trình Trong quản lý lỗi trang, kernel tìm kiếm trang lỗi page cache Nếu lỗi tìm thấy đưa đến active_list để đưa thơng báo - inactive_dirty_list : trang có page -> age == 0, chứa không chứa liệu, không ánh xạ mục bảng trang tiến trình  Vịng đời User Page Trang P đọc từ đĩa vào nhớ lưu vào page cache Có thể xảy trường hợp sau : * Tiến trình A muốn truy cập vào trang P Nó trình quản lý lỗi trang kiểm tra xem có tương ứng với file ánh xạ không Sau lưu vào page cache bảng trang tiến trình Từ vịng đời trang bắt đầu active_list, nơi mà lưu giữ kể sử dụng : * Trang P đọc suốt trình hoạt động đầu đọc hoán đổi, lưu vào page cache Trong trường hợp này, lý mà trang đọc đơn giản phần cluster khối đĩa Một loạt trang liên tiếp Trang P ghi tiến trình, có chứa liệu ( dirty ) Lúc trang P active_list Trang P khơng sử dụng thời gian Sự kích hoạt định kì hàm kswapd() (kernel swap daemon) giảm dần biến đếm page->age Hàm kswapd() hoạt động nhiều nhu cầu nhớ tăng Thời gian tồn trang P giảm dần xuống (age == 0) khơng cịn tham chiếu, dẫn đến kích hoạt hàm re_fill inactive() Nếu nhớ đầy, hàm swap_out gọi hàm kswapd() để cố gắng lấy lại trang từ khơng gian địa ảo tiến trình A Vì trang P khơng cịn tham chiếu có age == 0, nên mục bảng trang bị xóa Tất nhiên, thời gian khơng có tiến trình ánh xạ đến Hàm swap_out thực khơng đưa trang P ngồi mà đơn giản loại bỏ tham chiếu tiến trình đến trang Nhờ vào page cache chế swap mà trang bảo đảm ghi lên đĩa cần Thời gian xử lý hay nhiều tùy thuộc vào nhu cầu sử dụng nhớ Tiếp theo, hàm refill_inactive_scan() tìm trang mà đưa đến inactive_dirty list Từ trang P không ánh xạ tiến trình có age == đưa từ active_list đến inactive_dirty list Tiến trình A truy cập vào trang P, khơng có nhớ ảo tiến trình mục bảng trang bị xóa hàm swap_out() Trình điều khiển lỗi gọi hàm find_page_nolock() để xác định vị trí trang P page cache Sau tìm thấy, mục bảng trang phục hồi trang P đưa đến active_list Quá trình nhiều thời gian hàm swap_out() xóa mục bảng trang tiến trình A,hàm refill_inactive_scan() vơ hiệu hóa trang P, đưa đến inactive_dirty list Việc tốn nhiều thời gian làm nhớ trở nên chậm Hàm page_ launder() kích hoạt để làm trang dirty Nó tìm trang P inactive_dirty list ghi trang P đĩa Sau đó, trang đưa đến inactive_clean_list Khi hàm page_ launder() thực định ghi lên trang thực bước sau : * Khóa trang * Gọi phương thức writepage Lời gọi kích hoạt vài đoạn mã đặc biệt để thực ghi lên đĩa ( không đồng ) với trang bị khóa Lúc này, hàm page_ launder() hoàn thành nhiệm vụ, trang inactive_dirty list mở khóa việc ghi hoàn tất * Hàm page_ launder() gọi lại để tìm trang clean để đưa đến inactive_clean_list, giả sử thời gian khơng có tiến trình tham chiếu đến page cache 10 Hàm page_ launder () thực lại để tìm trang khơng sử dụng clean, đưa chúng đến inactive_clean_list 11 Giả sử cần trang trống riêng lẻ Điều thực cách lấy lại trang inactive_clean, trang P chọn Hàm reclaim_page() loại bỏ trang P khỏi page cache ( điều bảo đảm khơng có tiến trình khác tham chiếu đến q trình quản lý lỗi trang ), đưa cho lời gọi trang trống Hoặc : *Hàm kreclaimd () cố gắng tạo nhớ trống Nó giành lại trang P xóa Đây chuỗi kiện hợp lý: trang sống page cache thời gian dài, chết đi, lại phục hồi trở lại, *Trang phục hồi từ inactive_clean, active lists hay inactive_dirty list Trang đọc trang khơng phải dirty, hàm page_ launder() đưa chúng từ inactive_dirty_list đến inactive_clean_list để làm trống Các trang inactive_clean list kiểm tra định kì nhằm tạo khối nhớ trống lớn liên tiếp để đáp ứng có yêu cầu Tóm lại, trang P thực chất trang logic, thể vài trang vật lý cụ thể 2.3 Bảng trang (page table) Hình I.3 : Mức bảng trang Linux giả sử có mức bảng trang Mỗi bảng trang chứa số khung trang bảng trang mức Hình I.3 cách mà địa ảo chia thành trường Mỗi trường cung cấp địa offset đến bảng trang cụ thể Để chuyển địa ảo thành địa vật lý, xử lý phải lấy nội dung trường chuyển thành địa offset đến trang vật lý chứa bảng trang đọc số khung trang bảng trang mức Việc lặp lại lần số khung trang trang vật lý chứa địa ảo tìm Bây giờ, trường cuối địa ảo sử dụng để tìm liệu trang Mỗi mà Linux chạy phải cung cấp chuyển đổi macro cho phép kernel hiểu bảng trang tương ứng Do đó, kernel khơng cần biết định dạng mục bảng trang cách xếp Điều giúp cho Linux thành công việc sử dụng đoạn mã để xử lý bảng trang xử lý Alpha ( có mức bảng trang ) xử lý Intel x86 ( có mức bảng trang ) 2.4 Định vị giải phóng trang 2.4.1 Định vị trang Linux sử dụng thuật toán Buddy để định vị giải phóng cách hiệu khối trang Đoạn mã định vị trang xác định khối hay nhiều trang vật lý Những trang định vị khối có kích thước lũy thừa Điều có nghĩa định vị khối gồm trang, trang, trang , Khi có đủ số trang trống hệ thống để cấp cho yêu cầu, đoạn mã định vị tìm free_area khối trang có kích thước u cầu Mỗi phần tử free_area ánh xạ đến khối trang trống có kích thước tương ứng Ví dụ, phần tử thứ mảng ánh xạ đến khối gồm trang trống định vị Trước hết, thuật tốn định vị tìm khối trang có kích thước u cầu Nó tìm theo chuỗi trang trống xếp phần tử list free_area Nếu khơng có khối trang trống có kích thước u cầu khối có kích thước (gấp đơi kích thước u cầu) tìm Tiến trình tiếp tục tất free_area tìm khối trang tìm thấy Nếu khối trang tìm thấy lớn kích thước u cầu phải chia nhỏ có khối kích thước Bởi khối có số trang lũy thừa nên việc chia nhỏ thực cách dễ dàng cách chia đôi khối Phần trống khối đưa vào hàng đợi tương ứng, phần lại cung cấp cho lời gọi Hình I : Cấu trúc liệu free_area Ví dụ, hình I 4, khối gồm trang yêu cầu khối trang thứ ( bắt đầu khung trang số ) chia thành hai khối trang Khối thứ (bắt đầu khung trang số 4) cung cấp cho lời gọi khối thứ hai (bắt đầu khung trang số 6) đưa vào hàng đợi khối trang trống phần tử thứ mảng free_area 2.4.2 Giải phóng trang Việc định vị khối trang làm cho nhớ bị phân mảnh khối trang lớn bị chia nhỏ Đoạn mã giải phóng trang kết hợp trang lại thành khối lớn trang trống Khi có khối trang trống khối lân cận có kích thước kiểm tra xem có trống khơng Nếu có chúng kết hợp với để tạo khối trang có kích thước gấp đơi Đoạn mã giải phóng trang lại tìm cách kết hợp khối với khối khác Theo cách này, khối trang trống lớn dần Ví dụ, hình 4, khung trang số trống kết hợp với khung trang số trống sẵn để tạo thành khối trang xếp vào phần tử thứ free_are Chương 3: quản lý nhớ ảo, khơng gian hốn đổi 1.Khái niệm nhớ ảo, khơng gian hoá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 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 Bộ nhớ ảo tách biệt nhớ luận lý từ nhớ vật lý Việc tách biệt cho phép nhớ ảo lớn cung cấp cho người lập trình nhớ vật lý nhỏ sẳn dùng (hình II-1) Bộ nhớ ảo thực tác vụ lập trình dễ nhiều người lập trình khơng cần lo lắng lượng nhớ vật lý sẳn có hay mã thay việc phủ lắp; thay vào đó, người lập trình quan tâm vấn đề lập trình Trên hệ thống hỗ trợ nhớ ảo, việc phủ lắp biến Hình II-1 Lưu đồ minh hoạ nhớ ảo lớn nhớ vật lý Thêm vào đó, việc tách biệt nhớ luận lý từ nhớ vật lý, nhớ ảo cho phép tập tin nhớ chia sẻ q trình khác thơng qua việc chia sẻ trang Ngoài ra, chia sẻ trang cho phép cải tiến lực tạo trình Bộ nhớ ảo thường cài đặt phân trang theo yêu cầu (demand paging) Nó cài đặt chế phân đoạn Một vài hệ thống cung cấp chế phân đoạn phân trang Trong chế phân đoạn chia thành trang Do đó, tầm nhìn người dùng phân đoạn, hệ điều hành cài đặt tầm nhìn với chế phân trang theo yêu cầu Phân đoạn theo yêu cầu dùng để cung cấp nhớ ảo Các hệ thống máy tính Burrough dùng phân đoạn theo yêu cầu Tuy nhiên, giải thuật thay đoạn phức tạp giải thuật thay trang đoạn có kích thước thay đổi Chúng ta không đề cập phân đoạn theo yêu cầu giáo trình 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ý luôn 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ý HĐH Để 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 ) Hình II-2 : Mơ hình trừu tượng ánh xạ từ địa ảo đến địa vật lý Trong mơ hình này, địa ảo bao gồm hai phần : Địa offset số khung trang ảo Nếu kích thước trang 4Kbyte từ bit 11 đến bit địa ảo chứa địa offset, từ bit 12 trở lên số khung trang ảo Mỗi lần xử lý bắt gặp địa ảo, lấy địa offset số khung trang ảo Bộ xử lý phải chuyển từ số khung trang ảo sang số khung trang vật lý sau truy cập vào vị trí địa offset trang vật lý Để làm điều xử lý sử dụng bảng trang Hình II-2 khơng gian địa ảo hai tiến trình X Y, tiến trình có bảng trang riêng Các bảng trang ánh xạ trang ảo tiến trình vào trang vật lý nhớ Khung trang ảo số tiến trình X ánh xạ vào nhớ khung trang vật lý số khung trang ảo số tiến trình Y ánh xạ vào khung trang vật lý số Mỗi mục bảng trang theo lý thuyết chứa thông tin sau : - Cờ hợp lệ : cho biết mục bảng trang có hợp lệ hay khơng - Số khung trang vật lý mà mục mô tả - Thông tin điều khiển truy cập : mô tả trang sử dụng ?, ghi hay khơng ?, có chứa đoạn mã thực thi hay không ? Bảng trang truy cập nhờ sử dụng số khung trang ảo địa offset Khung trang ảo số phần tử số bảng ( bắt đầu phần tử ) Để chuyển từ địa ảo sang địa vật lý, xử lý trước hết phải làm việc với số khung trang ảo địa offset trang ảo Xem lại hình giả thiết kích thước trang 0x2000 byte địa 0x2194 không gian địa ảo tiến trình Y, xử lý chuyển địa thành địa offset 0x194 vào khung trang ảo số Bộ xử lý sử dụng số khung trang ảo mục vào bảng trang tiến trình để truy xuất vào mục bảng trang Nếu mục bảng trang địa offset hợp lệ xử lý lấy số khung trang vật lý từ mục Nếu mục khơng hợp lệ tiến trình truy cập vào vùng không tồn nhớ ảo Trong trường hợp này, xử lý làm việc với địa mà chuyển điều khiển cho HĐH để khắc phục lỗi Chúng ta xem cách mà xử lý báo cho HĐH biết tiến trình cố gắng truy cập vào địa ảo không hợp lệ Điều gọi lỗi trang, xử lý chuyển đến HĐH HĐH thông báo địa ảo gây lỗi nguyên nhân lỗi trang Giả sử mục hợp lệ bảng trang, xử lý lấy số khung trang vật lý nhân với kích thước trang để lấy địa trang sở nhớ vật lý Cuối cùng, xử lý cộng gộp vào địa offset để lệnh hay liệu cần dùng Sử dụng lại ví dụ trên, khung trang ảo số tiến trình Y ánh xạ đến khung trang vật lý số bắt đầu 0x8000 ( x 0x2000 ), cộng với địa offset 0x194 cho ta địa vật lý cuối 0x8194 Bằng cách ánh xạ địa ảo địa vật lý này, nhớ ảo ánh xạ vào nhớ vật lý hệ thống theo thứ tự Ví dụ, hình II-2, khung trang ảo số tiến trình X ánh xạ đến khung trang vật lý số khung trang ảo số ánh xạ đến khung trang vật lý số cao khung trang ảo số nhớ ảo Điều chứng minh cho kết luận thú vị nhớ ảo : trang nhớ ảo hiển thị nhớ vật lý khơng theo thứ tự Tạo khơng gian hốn đổi 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à 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 khơng thể 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() Tốt hết bạn nên sử dụng hàm cài đặt lên hệ thống bạ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 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 none swap sw 0 /swapfile none swap sw 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 14896 256 12404 2528 -/+ buffers: 12368 2784 Swap: 32452 6684 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ớ 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 hoá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 nhớ Dữ liệu đưa không tự động đưa vào cần, nhớ vật lý 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 V Đị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 qn 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 q 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 hoá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ớ Chương : CƠ CHẾ QUẢN LÝ BỘ NHỚ VẬT LÝ, ÁNH XẠ BỘ NHỚ Bộ định vùng : Các bảng trang kernel ánh xạ tối đa nhớ vật lý vào dãy địa bắt đầu PAGE_OFFSET Các trang vật lý chiếm đoạn mã liệu kernel dành riêng khơng sử dụng cho mục đích khác Các trang vật lý khác định vị cho nhớ ảo tiến trình, nhớ đệm, nhớ ảo kernel, cần Để làm điều này, phải có cách theo dõi trang vật lý sử dụng sử dụng Bộ định vùng ( zone allocator ) quản lý nhớ vật lý Bất kì mã kernel gọi tới định vùng thơng qua hàm alloc_pages() cấp khối gồm 2n trang khối không cần thiết đồng thời làm tăng kích thước đoạn mã định vị trang Các vùng : Các dãy trang vật lý khác có thuộc tính khác nhau, phục vụ cho mục đích kernel Ví dụ, DMA ( Direct Memory Access ) cho phép thiết bị ngoại vi đọc viết liệu trực tiếp lên RAM mà khơng có can thiệp CPU, làm việc với địa vật lý nhỏ 16MB Một vài hệ thống có nhớ vật lý nhiều ánh xạ PAGE_OFFSET 4GB, trang vật lý truy cập trực tiếp đến kernel, chúng phải quản lý theo cách khác Bộ định vùng quản lý khác cách chia nhớ thành vùng xem vùng đơn vị cho định vị Cấu trúc liệu root quản lý định vùng zone_struct, gồm tập hợp tất liệu liên quan đến việc quản lý vùng cụ thể Zonelist_struct bao gồm mảng trỏ zone_struct gfp_mask chế định vị sử dụng zone_list Zone_struct offset địa offset nơi bắt đầu vùng nhớ vật lý Chương 5: cấp phát giải phóng nhớ 1.Cấp phát vùng nhớ đơn giản Vùng nhớ giản đơn vùng nhớ có kích thước nhỏ kích thước nhớ vật lý Chúng ta cấp phát vùng nhớ cho tiến trình dựa vào hàm malloc() thư viện C chuẩn void *malloc(size_t size); Không giống DOS Windows, sử dụng hàm này, không cần phải khai báo thư viện malloc.h size : kích thước vùng nhớ muốn cấp phát, size có kiểu size_t Thực size_t định nghĩa kiểu nguyên không dấu unsigned int II Giải phóng vùng nhớ Đối với tiến trình u cầu cấp phát vùng nhớ nhỏ, sử dụng chúng thờii gian ngắn kết thúc HĐH tự động giải phóng vùng nhớ tiến trình kết thúc Tuy nhiên hầu hết tiến trình có nhu cầu cấp phát vùng nhớ động lớn, yêu cầu cấp phát , HĐH không hỗ trợ việc giải phóng vùng nhớ, chương trình ln cần phải giải phóng vùng nhớ khơng dùng đến cách sử dụng hàm free( ) void free( void *ptr_to_memory); Khi sử dụng khai báo kèm theo thư viện stdlib.h * ptr_to_memory trỏ trỏ đến vùng nhớ cần giải phóng Thường trỏ hàm malloc( ), calloc( ) realoc( ) trả ... cứng 2.5 Quản lý nhớ *Một tài nguyên quan trọng khác quản lý hạt nhân nhớ Để có hiệu quả, theo cách mà phần cứng quản lý nhớ ảo, nhớ quản lý gọi trang (4KB kích thước cho hầu hết kiến trúc) Linux. .. phương tiện để quản lý nhớ sẵn có, chế phần cứng cho ánh xạ ảo vật lý *Tuy nhiên, quản lý nhớ nhiều quản lý đệm 4KB Linux cung cấp trừu tượng 4KB đệm, chẳng hạn đếm slab Sơ đồ quản lý nhớ sử dụng... 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ớ Chương : CƠ CHẾ QUẢN LÝ BỘ NHỚ VẬT LÝ, ÁNH XẠ BỘ NHỚ Bộ định vùng : Các bảng trang kernel ánh xạ tối đa nhớ vật lý vào dãy

Ngày đăng: 14/07/2020, 21:56

Hình ảnh liên quan

2.3. Bảng trang (page table) - Nghiên cứu tìm hiểu về quản lý bộ nhớ trong hệ điều hành linux

2.3..

Bảng trang (page table) Xem tại trang 6 của tài liệu.
Hình I. 4: Cấu trúc dữ liệu của free_area - Nghiên cứu tìm hiểu về quản lý bộ nhớ trong hệ điều hành linux

nh.

I. 4: Cấu trúc dữ liệu của free_area Xem tại trang 8 của tài liệu.
Hình II-1 Lưu đồ minh hoạ bộ nhớ ảo lớn hơn bộ nhớ vật lý - Nghiên cứu tìm hiểu về quản lý bộ nhớ trong hệ điều hành linux

nh.

II-1 Lưu đồ minh hoạ bộ nhớ ảo lớn hơn bộ nhớ vật lý Xem tại trang 10 của tài liệu.
Hình II-2 : Mô hình trừu tượng của sự ánh xạ từ địa chỉ ảo đến địa chỉ vật lý - Nghiên cứu tìm hiểu về quản lý bộ nhớ trong hệ điều hành linux

nh.

II-2 : Mô hình trừu tượng của sự ánh xạ từ địa chỉ ảo đến địa chỉ vật lý Xem tại trang 11 của tài liệu.

Từ khóa liên quan

Mục lục

  • *chương 1: tổng quan về linux.

    • 1. giới thiệu.

    • 2. Tổng quan

      • 2.1 Tiện ích.

      • Được sử dụng thường xuyên. Dùng cho nhiều thứ như: thao tác file, đĩa, nén, sao lưu file …Tiện ích trong Linux có thể là các lệnh thao tác hay các chương trình giao diện đồ hoạ. Hầu hết là sản phẩm của GNU. Linux có nhiều tiện ích như: trình biên dịch, trình gỡ lỗi soạn văn bản… Tiện ích có thể được người dùng hay hệ thống. 2.2 Chương trình ứng dụng: Khác với tiện ích, các chương trình word, hệ quản trị cơ sở dữ liệu.. là các chương trình ứng dụng có độ phức tạp lớn và do các nhà sản xuất viết ra. 2.3 So sánh Dos/Windows và Linux

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

Tài liệu liên quan