TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP HÀ NỘI TRƯỜ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 HỌC OS Tên đề tài Nghiên cứu tìm hiểu về quản lý Bộ Nhớ Trong trong HĐH Linux Giáo viên Ths Nguyễn Tuấn Tú Nhóm thực hiện Nhóm 04 Lớp IT6025 6(006)K15 Hà Nội, 2022 2 TRƯỜ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 HỌC OS Tên đề tài Nghiên cứu tìm hiểu về quản lý Bộ Nhớ Trong trong HĐH Linux Giáo viên Ths Nguyễn Tuấn Tú Nhóm thực hiện Nhóm 04 Lớp IT6025 6(006)K15.
TRƯỜ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 HỌC: OS Tên đề tài: Nghiên cứu tìm hiểu quản lý Bộ Nhớ Trong HĐH Linux Giáo viên: Ths Nguyễn Tuấn Tú Nhóm thực hiện: Nhóm 04 Lớp: IT6025.6(006)K15 Hà Nội, 2022 TRƯỜ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 HỌC: OS Tên đề tài: Nghiên cứu tìm hiểu quản lý Bộ Nhớ Trong HĐH Linux Giáo viên: Ths Nguyễn Tuấn Tú Nhóm thực hiện: Nhóm 04 Lớp: IT6025.6(006)K15 Hà Nội, 2022 MỤC LỤC LỜI NÓI ĐẦU 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 .11 CHƯƠNG 3: VÙNG TRUNG GIAN (SWAPPING) 13 CHƯƠNG 4: BỘ NHỚ ẢO DÙNG CHUNG (SHARED VIRTUAL MEMORY) 14 CHƯƠNG 5: CACHES 16 5.1 Vùng đệm (Buffer Cache) .16 5.2 Vùng trang nhớ (Page Cache) 16 5.3 Vùng lưu trữ trung gian (Swap Cache) 17 5.4 Các vùng đệm phần cứng (Hardware Caches) 17 CHƯƠNG 6: CÁC BẢNG QUẢN LÝ TRANG TRONG LINUX18 6.1 Việc phân phối thu hồi trang 18 6.2 Việc phân phối trang .19 6.3 Thu hồi trang phân phối 20 CHƯƠNG 7: VẤN ĐỀ ÁNH XẠ BỘ NHỚ 22 7.1 Yêu cầu đánh số trang 23 7.2 Vùng trang đệm Linux (The Linux Page Cache) 25 7.3 Việc loại bỏ trang tráo đổi trang 26 7.3.1 Phương pháp giảm kích thước trang vùng đệm 27 7.3.2 Phương pháp tráo đổi trang nhớ dùng chung System V .29 7.3.3 Phương pháp tráo đổi loại bỏ trang 30 7.4 Việc tráo đổi trang nạp .32 Kết luận 33 LỜI NÓI ĐẦU Linux hệ điều hành mã nguồn mở phổ biến toàn giới 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… Ngoài Linux 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ớ hệ điều hành Linux CHƯƠNG 1: GIỚI THIỆU VỀ HỆ ĐIỀU HÀNH LINUX 1.1 Hệ điều hành Linux 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ể 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 nguyên 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 Ngoà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 hố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 Hệ thống quản lý nhớ thành phần quan trọng hệ điều hành 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 2.1: 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ý luôn 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 011 đị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 10 Hình 6.2: 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 6.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, 20 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ố 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 21 CHƯƠNG 7: VẤN ĐỀ ÁNH XẠ BỘ NHỚ Khi trang thi hành, nội dung phải truy cập thơng qua khơng gian địa ảo tiến trình File thi hành thực khơng đưa vào nhớ vật lý mà liên kết với nhớ ảo tiến trình Khi phần chương trình chạy, trang đưa vào nhớ từ file thi hành Việc liên kết file vào không gian địa ảo gọi ánh xạ nhớ Hình 7.1: Các vùng nhớ ảo Mỗi nhớ ảo tiến trình diễn tả cấu trúc liệu mm_struct Cấu trúc chứa thông tin file thời thi hành có trỏ trỏ tới cấu trúc liệu vm_area_struct, cấu trúc liệu diễn tả vị trí bắt đầu kết thúc nhớ ảo tiến trình có quyền truy cập tới vùng nhớ thao tác với chúng Các thao tác tập thủ tục mà Linux phải sử dụng tác động tới vùng nhớ ảo 22 Khi tiến trình cố gắng truy cập nhớ ảo địa nhớ thực tế không tồn nhớ vật lý (trường hợp truy cập bị lỗi trang), thao tác với vùng nhớ ảo thực hiện, thao tác gọi thao tác nopage Thao tác nopage sử dụng yêu cầu Linux đánh số trang file thi hành nhớ Khi file có khả thi hành ánh xạ vào địa ảo tiến trình, tập cấu trúc liệu vm_area_struct tạo Mỗi cấu trúc liệu vm_area_struct diễn tả phần file có khả thi hành: mã có khả thi hành, liệu ban đầu (biến), v.v… Linux hỗ trợ số thao tác nhớ ảo chuẩn cấu trúc liệu vm_area_struct tạo, tập chuẩn thao tác với nhớ ảo gắn kết với chúng 7.1 Yêu cầu đánh số trang Một file có khả thi hành ánh xạ vào nhớ ảo tiến trình, thi hành Ngay file vừa nạp vào nhớ, truy cập vùng nhớ ảo không thuộc nhớ vật lý Khi tiến trình truy cập địa ảo mà khơng có phần tử bảng quản lý trang hợp lệ, vi xử lý báo với Linux có lỗi trang Linux phải tìm cấu trúc liệu vm_area_struct diễn tả vùng nhớ xuất lỗi trang Nếu khơng có cấu trúc liệu vm_area_struct chứa địa ảo đó, tiến trình xác nhận truy cập địa không hợp lệ Linux chuyển tín hiệu tới hệ điều hành, tiến trình khơng có phản hồi hợp lệ, bị kết thúc Tiếp theo Linux kiểm tra kiểu lỗi trang xảy có với kiểu truy cập phép vùng nhớ ảo khơng Nếu tiến trình truy cập theo phương pháp không hợp lệ, ghi tới vùng mà phép đọc, gây lỗi nhớ Nếu Linux xác định lỗi trang lỗi hợp lệ, bắt đầu xử lý lỗi 23 Nếu phần tử bảng phân trang không hợp lệ không rỗng, thời trang phần tử quản lý lưu trữ swap file, phần tử có bit valid trường PFN có giá trị khác Trong trường hợp trường PFN chứa thơng tin vị trí lưu trữ trang swap file Không phải tất cấu trúc liệu vm_area_struct có tập thao tác nhớ ảo, chí cấu trúc liệu khơng có thao tác nopage… Nếu có thao tác nopage cho vùng nhớ ảo này, Linux sử dụng Nếu khơng, trang nhớ vật lý phần tử bảng phân trang hợp lệ tạo cho Thao tác nopage Linux sử dụng cho file có khả thi hành ánh xạ nhớ sử dụng vùng trang đệm để nạp trang yêu cầu vào nhớ vật lý Bất lúc trang yêu cầu đưa vào nhớ vật lý, bảng quản lý trang cần cập nhật, đặc biệt vi xử lý sử dụng việc chuyển đổi địa để duyệt đệm dự trữ Lúc xác định nguyên nhân lỗi trang xử lý lỗi, tiến trình kích hoạt lại thực tiếp lệnh chạy lúc nhớ ảo bị lỗi 24 7.2 Vùng trang đệm Linux (The Linux Page Cache) Hình 7.2: Vùng trang đệm Linux Vai trò vùng trang đệm Linux làm tăng tốc độ truy cập tới file đĩa Các file ánh xạ nhớ đọc trang thời điểm trang lưu trữ vùng trang đệm Vùng trang đệm có vector page_hash_table, có trỏ trỏ tới cấu trúc liệu mem_map_t Mỗi file Linux định danh cấu trúc liệu VFS inode, VFS inode diễn tả file Chỉ số bảng quản lý trang bắt nguồn từ VFS inode file địa offset file Khi trang đọc từ file ánh xạ nhớ, cần đưa vào nhớ yêu cầu, trang đọc thông qua vùng trang đệm Nếu trang có sẵn vùng trang đệm, trỏ trỏ tới cấu trúc liệu mem_map_t chứa thơng tin trả cho mã xác định lỗi trang Nếu khơng trang phải nạp vào nhớ từ hệ thống file lưu trữ Linux phân phối trang vật lý đọc trang từ file đĩa 25 Nếu thực được, Linux bắt đầu việc đọc trang file Nếu tiến trình truy cập chuỗi trang file, trang đợi sẵn nhớ chờ tiến trình xử lý Theo thời gian vùng trang đệm trở nên lớn ảnh đọc thi hành Các trang loại bỏ khỏi vùng đệm chúng có “tuổi” lớn để giảm kích thước vùng trang đệm 7.3 Việc loại bỏ trang tráo đổi trang Khi nhớ vật lý trở nên đi, hệ thống quản lý nhớ Linux phải cố gắng giải phóng trang nhớ vật lý lưu trữ liệu Cơng việc thực trình tiện ích tráo đổi nhân Linux (kswapd) Trình tiện ích tráo đổi hạt nhân kiểu đặc biệt tiến trình, đoạn mã nhân HĐH Các đoạn mã hạt nhân tiến trình khơng có nhớ ảo, chúng chạy chế độ hạt nhân không gian địa vật lý Trình tiện ích đưa trang cần tráo đổi swap file hệ thống Vai trị đảm bảo có đủ trang tự hệ thống có đủ để giúp cho hệ điều hành thực quản lý sử dụng nhớ hiệu Kswap khởi tạo thời điểm khởi động hệ thống thực việc tráo đổi trang theo định kỳ nhờ swap timer hạt nhân Tại thời điểm số đếm thời gian chạy đến không, kswapd xem xét xem số trang nhớ tự hệ thống để định giải phóng số trang trạng thái tự hay không Chừng mà số trang nhớ tự hệ thống trì phạm vi cho phép, kswapd khơng làm Nó trở trạng thái sẵn sàng thời điểm số đếm thời gian không Để kiểm tra kswapd nhận giá trị tổng số trang thời ghi swap file Nó lưu trữ giá trị tổng lại, giá trị tăng thời điểm trang xếp hàng đợi để ghi swap file, giảm thời điểm 26 việc ghi tới thiết bị swap (ví dụ ổ cứng chứa swap file) hồn thành Nếu số trang tự hệ thống thấp mức cho phép, kswapd cố gắng giảm số trang vật lý sử dụng hệ thống theo cách sau: - Giảm kích thước đệm vùng trang đệm - Sử dụng trang nhớ dùng chung - Loại bỏ tráo đổi trang nhớ Nếu số trang nhớ tự hệ thống thấp HĐH cố gắng giải phóng trang nhớ trước chạy lần Nếu khơng cố gắng giải phóng trang Mỗi cách cố gắng thực có đủ số trang nhớ tự cần thiết Kswap nhớ cách mà sử dụng sau cùng, lần chạy cố gắng thử giải phóng trang nhớ việc sử dụng phương pháp sau Sau có đủ trang nhớ tự do, kswapd lần quay trạng thái sẵn sàng thời điểm mà số đếm thời gian khơng Nếu nguyên nhân đó, số trang tự hệ thống q thấp trạng thái sẵn sàng khoảng thời gian nửa khoảng thời gian trạng thái sẵn sàng thông thường Một số trang tự lớn trở lại giá trị bình thường 7.3.1 Phương pháp giảm kích thước trang vùng đệm Các trang lưu giữ vùng trang đệm (page caches) vùng đệm (buffer caches) đối tượng phù hợp để trở thành trang tự free_area vector Vùng trang đệm chứa trang file ánh xạ nhớ chứa trang khơng cịn cần thiết trang làm đầy nhớ hệ thống Tương tự vậy, vùng đệm cho việc đọc ghi liệu tới thiết bị vật lý, chứa đệm liệu khơng cịn cần thiết 27 Khi nhớ vật lý hệ thống bắt đầu chạy trạng thái đầy, việc loại bỏ trang khỏi vùng đệm tương đối dễ khơng u cầu ghi tới thiết bị vật lý (Không giống trang lưu trữ tạm ổ đĩa) Việc loại bỏ có ưu điểm khơng phải truy cập tới thiết bị vật lý file ánh xạ nhớ (2 việc làm cho hệ thống chạy chậm hơn) Tuy việc loại bỏ trang khỏi vùng đệm làm cho tất tiến trình trở nên hiệu kswapd ln cố gắng làm giảm kích thước vùng đệm sử dụng Nó kiểm tra trang khối nhớ mem_map page vecto Để chọn trang giải phóng khỏi nhớ vật lý Kích thước khối tính theo trang lớn kswapd thực việc tráo đổi mạnh (trường hợp số lượng trang tự hệ thống thấp đến mức nguy hiểm) Các khối gồm nhiều trang kiểm tra theo kiểu xoay vòng, lần trang khối khác kiểm tra tối thiểu hóa việc ánh xạ nhớ Thuật tốn sử dụng gọi thuật toán clock Tại thời điểm, vài trang toàn mem_map page vector kiểm tra Nếu trang kiểm tra kiểm tra lại lưu trữ vùng trang đệm vùng đệm Nếu trang khơng thuộc vùng đệm trang mem_map page vector kiểm tra Nếu tất đệm giải phóng trang chứa chúng giải phóng Các trang kiểm tra thuộc vùng trang đệm Linux loại bỏ khỏi vùng trang đệm trở thành trang tự Khi có đủ trang tự kswapd đợi lần chạy để kích hoạt trở lại Khi khơng có trang giải phóng phần nhớ ảo (chúng trang cất giữ) khơng cập nhật bảng quản lý trang Nếu khơng có đủ trang lưu trữ liệu để loại bỏ cố gắng tráo đổi vài trang dùng chung 28 7.3.2 Phương pháp tráo đổi trang nhớ dùng chung System V Bộ nhớ dùng chung System V kỹ thuật liên lạc tiến trình bên cho phép nhiều tiến trình dùng chung nhớ ảo để chuyển giao thông tin chúng với Mỗi vùng nhớ dùng chung System V diễn tả cấu trúc liệu shmid_ds Cấu trúc chứa trỏ trỏ tới danh sách cấu trúc liệu vm_area_struct ứng với tiến trình chia sẻ vùng nhớ nhớ ảo Các cấu trúc liệu vm_area_struct chứa vị trí vùng nhớ chia sẻ system V nhớ ảo tiến trình Mỗi cấu trúc liệu vm_area_struct cho nhớ chia sẻ system V liên kết với cấu trúc liệu vm_area_struct khác việc sử dụng trỏ vm_next_shared vm_prev_shared Cấu trúc liệu shmid_ds chứa danh sách phần tử bảng quản lý trang diễn tả trang nhớ vật lý ánh xạ trang nhớ ảo dùng Kswap sử dụng thuật toán clock tráo đổi trang nhớ dùng chung system V Nó ghi nhớ trang thuộc vùng nhớ ảo dùng chung mà tráo đổi gần cách giữ số, số số so sánh tập cấu trúc liệu shmid_ds, số thứ số danh sách phần tử bảng quản lý trang cho vùng nhớ chia sẻ system V Khi số hiệu khung trang vật lý tương ứng với trang nhớ ảo nhớ chia sẻ (số hiệu có bảng phân trang tất tiến trình chia sẻ vùng nhớ ảo này), kswapd phải thay đổi tất bảng phân trang để trang nhớ khơng cịn nhớ lưu lại swap file Đối với trang dùng chung tráo đổi, kswapd tìm phần tử bảng quản lý trang (chứa tập bảng quản lý trang tiến trình chia sẻ) Nếu phần tử hợp lệ, chuyển thành không hợp lệ giảm tổng số người sử dụng trang (giá trị count) 29 Nếu giá trị count trang sau tất bảng quản lý trang tiến trình chia sẻ bị thay đổi, trang dùng chung ghi swap file Phần tử bảng quản lý trang ứng với cấu trúc liệu shmid_ds cho vùng nhớ chia sẻ system V thay phần tử quản lý trang tráo đổi ngồi Thơng tin phần tử bảng quản lý trang tráo đổi sử dụng lại trang đưa trở lại vào nhớ vật lý 7.3.3 Phương pháp tráo đổi loại bỏ trang Trình tiện ích tráo đổi xem xét tiến trình hệ thống cách để tìm đối tượng phù hợp để tráo đổi Các đối tượng tốt tiến trình tráo đổi (có số tiến trình khơng thể) đối tượng có nhiều trang tráo đổi loại bỏ khỏi nhớ Khi liệu chúng lấy lại, trang tráo đổi nhớ vật lý ghi vào swap file hệ thống Nhiều nội dung file có khả thi hành nạp dễ dàng đọc lại từ file Ví dụ, lệnh có khả thi hành khơng bị thay đổi không ghi tới swap file Khi chúng tham chiếu lại tiến trình, chúng đưa trở lại nhớ từ file * Các trang bị tráo đổi loại bỏ chúng bị khóa nhớ Thuật tốn tráo đổi Linux sử dụng trang “già” Mỗi trang có giá trị truyền vào kswapd để kswapd biết trang có thuộc diện bị tráo đổi hay khơng Độ già trang tuỳ thuộc vào việc truy cập sử dụng trang, kswapd tráo đổi trang già Các trang kiểu Dirty trang tráo đổi Linux sử dụng bit xác định cấu trúc PTE để diễn tả trang có kiểu dirty Tuy khơng phải tất trang dirty ghi tới swap file vùng nhớ ảo tiến trình có thao tác tráo đổi phương thức sử dụng riêng 30 Mặt khác, trình tiện ích tráo đổi định trang swap file để ghi trang tới thiết bị tráo đổi Phần tử bảng quản lý trang thay phần tử mà đánh dấu invalid chứa thơng tin vị trí trang swap file Đó địa offset swap file nơi cất trang dấu hiệu thông báo swap file sử dụng Nếu đủ số trang tiến trình tráo đổi, trang tráo đổi ngồi hay trang bị loại bỏ, trình tiện ích tráo đổi quay lại trạng thái sẵn sàng Nó xem xét tiến trình hệ thống Trình tiện ích tráo đổi thực tráo đổi trang vật lý tiến trình hệ thống trở lại trạng thái cân Phương pháp tối ưu nhiều với việc tráo đổi toàn tiến trình Khi trang tráo đổi ngồi swap file, Linux tránh việc cố gắng ghi trang khơng thể, việc gây tượng trang vừa swap file vừa nhớ vật lý Điều xảy trang tráo đổi khỏi nhớ lại nạp lại vào nhớ truy cập tiến trình khác Linux sử dụng vùng đệm tráo đổi để kiểm soát file Vùng đệm tráo đổi danh sách phần tử bảng quản lý trang, phần tử tương ứng với trang vật lý hệ thống Nếu phần tử vùng đệm tráo đổi khác 0, trang lưu giữ swap file chưa bị thay đổi Nếu sau trang bị thay đổi (bị ghi), phần tử quản lý bị đẩy khỏi vùng đệm tráo đổi Các phần tử vùng đệm tráo đổi phần tử thuộc bảng quản lý trang cho trang bị tráo đổi ngồi Chúng chứa thơng tin cho phép Linux tìm swap file trang swap file cách xác 31 7.4 Việc tráo đổi trang nạp Các trang kiểu dirty ghi swap file cần đến lần nữa, ví dụ ứng dụng ghi tới vùng nhớ ảo mà nội dung lưu trữ trang vật lý lúc trước tráo đổi Việc truy cập trang thuộc nhớ ảo không lưu trữ nhớ vật lý nguyên nhân gây lỗi trang Mã xử lý lỗi trang tìm kiếm phần tử bảng quản lý trang địa ảo lỗi Nếu phần tử mà tìm thấy cho biết trang tráo đổi nhớ, Linux phải tráo đổi trang trở lại nhớ vật lý Linux cần thông tin vị trí swap file chứa phần tử cần tìm để nạp lại trang vào nhớ vật lý Nó phân phối trang vật lý tự nạp trang tráo đổi trở lại nhớ từ swap file Thông tin cho biết trang nằm swap file lấy từ phần tử quản lý trang có thuộc tính invalid bảng quản lý trang Nếu việc truy cập với thao tác ghi nguyên nhân gây lỗi trang trang bị bỏ lại vùng đệm tráo đổi phần tử quản lý trang bị loại bỏ quyền ghi Về sau trang ghi lên, lỗi trang khác xảy ra, lúc trang đánh dấu dirty, phần tử quản lý bị đẩy khỏi vùng đệm tráo đổi Nếu trang không ghi tới cần tráo đổi lần nữa, Linux ngăn ngừa việc ghi trang tới swap file trang tồn swap file Nếu việc truy cập thao tác ghi khiến trang nạp lại vào nhớ từ swap file, bị di chuyển khỏi vùng đệm tráo đổi phần tử quản lý bảng quản lý trang đánh dấu dirty thêm quyền cho phép ghi file 32 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ý Em xin chân thành cảm ơn! 33 Tài liệu tham khảo bài: -Homepage: -https://www.kernel.org -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 34 ... 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ệ... xử lý chạy chương trình lớn CHƯƠNG : CƠ CHẾ QUẢN LÝ BỘ NHỚ CỦA LINUX Hệ thống quản lý nhớ thành phần quan trọng hệ điều hành Máy tính ln có nhu cầu cần nhiều khơng gian nhớ khơng gian nhớ nhớ... tắt nhớ ảo Hình 2.1: 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ý