BÀI TẬP LỚN NGUYÊN LÝ HỆ ĐIỀU HÀNH: NGHIÊN CỨU TÌM HIỂU VỀ QUẢN LÝ BỘ NHỚ TRONG TRONG HỆ ĐIỀU HÀNH LINUX

19 6.6K 7
BÀI TẬP LỚN NGUYÊN LÝ HỆ ĐIỀU HÀNH: NGHIÊN CỨU TÌM HIỂU VỀ QUẢN LÝ BỘ  NHỚ TRONG 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

Linux là tên gọi của một hệ điều hành máy tính mã nguồn mở và cũng là tên hạt nhân của hệ điều hành. Phiên bản linux đầu tiên do linus torvalds viết vào năm 1991, lúc ông còn là một sinh viên đại học Helsinki tại Phần Lan. Ông làm việc một cách hăng say trong vòng 3 năm liên tục và cho ra đời phiên bản Linux 1.0 vảo năm 1994. Bộ phận chủ yếu này được phát triển và tung ra trên thị trường dưới bản quyền GNU General Public License. Do đó mà bất cứ ai cũng có thể tải và xem mã nguồn của Linux. Vài năm 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 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, Mcrosoft và Novell. Không phải ngẫu nhiên mà ngành công nghê thông tin Việt Nam trong 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 đến 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à cac 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 đồ án này, chúng ta sẽ tìm hiểu một phần rất quan trọng trong hệ điều hành Linux đó là: quản lý bộ nhớ 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 đồ án và có kèm theo các chương trình minh họa. Trong quá trình tìm bài tuy có nhiều cố gắng nhưng không thể tránh được những sai sót, nhóm em hy vọng nhận được những nhận xét của thầy để đề tài được hoàn thành tốt hơn.

BÀI TẬP LỚ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Ớ TRONG TRONG HỆ ĐIỀU HÀNH LINUX GIÁO VIÊN HƯỚNG DẪN: NGUYỄN TUẤN TÚ LỚP: KHOA HỌC MÁY TÍNH – K9 NHÓM SỐ SINH VIÊN THỰC HIỆN: NGUYỄN THỊ DỊU ĐỖ TUẤN ANH TRẦN THỊ KIỀU HOA VI THÙY DƯƠNG LÊ THỊ CẨM LINH Hà Nội, ngày 21 tháng 03năm 2016 MỤC LỤC MỤC LỤC LỜI NÓI ĐẦU CHƯƠNG I: TỔNG QUAN VỀ BỘ NHỚ TRONG CỦA HỆ ĐIỀU HÀNH CỦA LINUX 1.1.GIỚI THIỆU VỀ HỆ ĐIỀU HÀNH LINUX 1.2.: TỔNG QUAN VỀ BỘ NHỚ TRONG LINUX CHƯƠNG II: CƠ CHẾ QUẢN LÝ BỘ NHỚ ẢO 2.1.: CÁC KHÁI NIỆM BỘ NHỚ ẢO, KHƠNG GIAN HỐN ĐỔI 2.2.: TẠO KHÔNG GIAN HOÁN ĐỔI ( CƠ CHẾ Swapping ) 2.3.: SỬ DỤNG KHÔNG GIAN HOÁN ĐỔI CHƯƠNG III: CƠ CHẾ PHÂN TRANG PHÂN ĐOẠN .10 3.1.: CƠ CHẾ PHÂN ĐOẠN .10 3.2.: CƠ CHẾ PHÂN TRANG .10 CHƯƠNG IV: CƠ CHẾ QUẢN LÝ BỘ NHỚ VẬT LÝ, ÁNH XẠ BỘ NHỚ 15 4.1.: BỘ ĐỊNH VÙNG .15 4.2.: CÁC VÙNG .15 LỜI NÓI ĐẦU 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 General Public License Do mà tải xem mã nguồn Linux Vài 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 chúng mang lại cho máy tính 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 Nó tương tác tốt với hệ điều hành:Apple, Mcrosoft Novell Không phải ngẫu nhiên mà ngành công nghê thông tin Việt Nam 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ở, sử dụng Linux an toàn ứng dụng Windows Linux đem đến cho lợi ích kinh tế với nhiều phần mềm miễn phí Mã nguồn mở hệ điều hành cac chương trình Linux tài liệu vơ giá để học hỏi kỹ thuật lập trình vốn tài liệu không công bố ứng dụng Windows Trong đồ án này, tìm hiểu phần quan trọng hệ điều hành Linux là: quản lý nhớ Linux Một hệ điều hành muốn chạy ổn định phải có chế quản lý nhớ hiệu Cơ chế trình bày cách chi tiết đồ án có kèm theo chương trình minh họa Trong trình tìm có nhiều cố gắng khơng thể tránh sai sót, nhóm em hy vọng nhận nhận xét thầy để đề tài hoàn thành tốt 13 CHƯƠNG I: TỔNG QUAN VỀ BỘ NHỚ TRONG CỦA HỆ ĐIỀU HÀNH CỦA LINUX 1.1.GIỚI THIỆU VỀ HỆ ĐIỀU HÀNH LINUX Linux hệ điều hành dạng Unix (Unix – Like Operating System) chạy máy PC với vi điều khiển trung tâm Intel 80386 trở lên hay vi xử lý trung tâm tương thích AMD, Cyric Phiên Linux Linus Torvalds viết vào năm 1991, phiên Linux 1.0 đời vào năm sau, năm 1994 Bộ phần chủ yếu phát triển tung thị trường quyền GNU General Public License Do mà tải xem mã nguồn Linux 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 vi xử lý, sử dụng nhiều ứng dụng khác nhau, từ máy tính cá nhân siêu máy tính, netbook thiết bị nhúng ví dụ như: máy điện thoại di động Hình 1.1: Các thuộc tính phân khúc Linux tập trung vào SHELL Hình 1.2: Các thành phần Linux UTILITIES APPLICATION PROGRAMS KERNEL ↓ HARDWARE 13 Hiện nay, Linux có hỗ trợ công ty lớn IBM, Hewlett – Packard, đồng thời bắt kịp phiên Unix độc quyền chí thách thức thống Microsoft, Windows số lĩnh vực Tuy nhiên, số lượng phần cứng hỗ trợ Linux khiêm tốn so với Windows trình điều khiển thiết bị tương thích với Windows nhiều Linux Nhưng tương lai số lượng phần cứng hỗ trợ cho Linux tăng lên 1.2.: TỔNG QUAN VỀ BỘ NHỚ TRONG LINUX Trong hệ thống máy tính, nhớ tái nguyên hữu hạn Do vậy, nhu cầu tổ chức, quản lý nhớ nhiệm vụ hệ điều hành Bộ nhớ tổ chức mảng chiều từ nhớ (word), từ nhớ có địa Hệ điều hành chịu trách nhiệm cấp phát khơng gian nhớ cho tiến trình có yêu cầu 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ị 1GB nhớ Các máy chủ server lên đến hàng GB nhớ Thế nhu cầu nhớ thỏa mãn Linux có cách tiếp cận vào 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ệ điều hành – 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 Hầu hết 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 Trong hầu hết hệ thống Linux Unix, trỏ sử dụng số 32 bit trở lên đến ô nhớ cụ thể Với 32 bit, hệ thống đánh địa lên đến 4GB 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, vậy, khơng gian địa mở rộng đến tearabyte Các sơ đồ quản lý nhớ là: sơ đồ phân hoạch cố định, sơ đồ phân hoạch động, sơ đồ hoán đổi (swapping), sơ đồ phân trang, sơ đồ phân đoạn, sơ đồ kết hợp phân trang phân đoạn Trong đó, Linux sử dụng sơ đồ hoán đổi (swapping), phân trang, phân đoạn nhớ ảo để quản lý nhớ Chúng ta tìm hiểu chế chương sau để hiểu rõ trình quản lý nhớ trong hệ điều hành Linux 13 CHƯƠNG II: CƠ CHẾ QUẢN LÝ BỘ NHỚ ẢO 2.1.: CÁC KHÁI NIỆM BỘ NHỚ ẢO, KHƠNG GIAN HỐN ĐỔI • Khái niệm nhớ ảo Trong hệ thống máy tính, nhớ ảo (virtual memory) kỹ thuật cho phép xử lý tiến trình nạp tồn vào nhớ vật lý Bộ nhớ ảo mô hình hóa nhớ bảng lưu trữ lớn đồng nhất, tách biệt hẳn khái niệm không gian địa không gian vật lý Người sử dụng nhìn thấy làm việc khơng gian địa ảo, việc chuyển đổi sang không gian vật lý hệ điều hành thực với trợ giúp chế phần cứng cụ thể 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 Việc đọc ghi đĩa chậm ( khoảng nghìn lần ) so với sử dụng nhớ thật, chương trình chạy khơng nhanh • Khơng gian hốn đổi Phần đĩa cứng sử dụng nhớ ảo gọi không gian hốn đổi Khi máy tính cần chạy chương trình lớn khả nhớ vật lý, hệ điều hành sử dụng thuật toán swapping Swapping dùng đến mảng nhớ tạm lưu đĩa cứng, phần liệu khác chuyển vào RAM để tăng hiệu sử dụng Linux chia nhớ vật lý thành pages, swapping tiến trình thực việc copy page nhớ đến không gian cấu hình trước đĩa để giải phóng page nhớ Có loại swap page: swap partition swap file 2.1: MƠ HÌNH BỘ NHỚ ẢO Để cho chuyển đổi dễ dàng nhớ ảo nhớ vật lý chia thành nhiều khúc gọi trang Linux hệ thống Alpha AXP sử dụng trang KB Mỗi trang cung cấp số gọi số phân trang ( PFN: Page Frame Number ) 13 Hình 2.2.1: 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 phần: địa offset số khung trang ảo Nếu kích thước trang 4KB (tương ứng địa offset từ 0→4095) từ bit 11 đến bit ả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 địa offset trang vật lý Để làm điều xử lý xử dụng bảng trang Bộ xử lý 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ệ điều hành để khắc phục lỗi 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 2.2.1 2.2.: TẠO KHƠNG GIAN HỐN ĐỔI ( CƠ CHẾ Swapping ) Khi máy tính cần chạy chương trình lớn nhớ vật lý (RAM) có sẵn, hầu hết hệ điều hành ngày sử dụng cơng nghệ hốn đổi có tên gọi swapping Đây cơng nghệ mà phần nhớ tạm thời lưu cứng (đĩa cứng) liệu khác chuyển vào không gian nhớ vật lý (RAM) Cơng nghệ giúp ta quản lý việc hốn đổi (swapping) tốt tăng hiệu sử dụng Linux chia nhớ vật lý (RAM) thành cac pages Swapping tiến trình thực việc copy page nhớ đến không gian cấu hình 13 trước đĩa cứng (gọi swap space), để giải phóng page nhớ Tổng dung lượng RAM khơng gian hốn đổi (swap space) nhớ ảo (virtual memory) Có lý quan trọng mà cần phải thực việc hoán đổi Trước tiên, hệ thống yêu cầu nhớ lớn nhớ vật lý có nhân hệ thống chuyển sang trang sử dụng nhường nhớ cho ứng dụng cần sử lý Thứ hai, số lượng trang quan trọng sử dụng ứng dụng suốt giai đoạn khởi động dùng để khởi tạo sau khơng dùng lại Hệ thống chuyển đổi trang giải phóng nhớ cho ứng dụng khác hay chí cho cache lưu trữ ổ 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(), phải thường trú đĩa cục Một phân swap đăc biệt Ta tạo giống phân vùng khác Sự 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 ta tạo phân vùng, ta 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ớ Tuy nhiên việc hốn đổi khơng hoàn toàn tốt So với nhớ, ổ chạy chậm Tốc độ nhớ đo nano giây (ns) tốc độ ổ mili giây (ms), truy cập chậm hàng chục nghìn lần truy cập vào nhớ vật lý (RAM) Càng thực hốn đổi nhiều hệ thống chậm Đơi hốn đổi q mức nhiều lần liên tiếp xảy trang chuyển lại chuyển vào lại chuyển tiếp tục Trong trường hợp hệ thống tìm vùng nhớ trống lúc đưa vào chạy ứng dụng Trường hợp cần thêm RAM Ta 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 Ta dễ dàng ghi đè lên file hay phân vùng quan trọng với hàm mkswap() Tốt hết ta nên sử dụng hàm cài đặt hệ thống bạn 13 2.3.: SỬ DỤNG KHÔNG GIAN HỐN ĐỔI Linux sử dụng hai loại khơng gian hoán đổi partition hoán đổi tập tin hoán đổi a : Partition hoán đổi Partition hoán đổi môt phần đọc lập ổ cứng sử dụng để hốn đổi khơng tập tin khác lưu trữ Để biết dung lượng khơng gian hốn đổi mà ta có, ta sử dụng lệnh swapon-s Ta thực kết sau: Filename /dev/sda5 Type Partition Size 859436 Used Priority -1 Mỗi dịng liệt kê khơng gian hốn đổi riêng sử dụng hệ thống đây, trường “Type” khơng gian hốn đổi Partition file, trường “ Filename” ta thấy hoán đổi xảy ổ đĩa sda5 “Size” hiển thị dạng kilobyte trường “Used” cho biết số lượng kilobyte khơng gian hốn đổi sử dụng (trường hợp 0) “Priority” cho Linux biết không gian hoán đổi sử dụng điều tiện lợi Linux hoán đổi hệ thống ta có hay nhiều khơng gian hốn đổi (trên hai thiết bị khác nhau) với độ ưu tiên, Linux xen kẽ hốn chuyển hoạt động chúng, nâng tốc độ thực thi Để thêm Partition hoán đổi vào hệ thống trước hết ta cần phải chuẩn bị: ∗ Đảm bảo Partition đánh dấu Partition hoán đổi ∗ Tạo hoán đổi tập tin hệ thông Để kiểm tra Partiton đánh dấu chưa ta cần chạy lệnh: Fdisk-l/dev/hdb Thay /dev/hdb thiết bị ổ cứng hệ thống ta với Partittion hốn đổi Kết sau: Device Boot Start End Blocks Id /dev/hdb1 2328 2434 859446 82 System Linux swap/Solaris Nếu Partition chưa đánh dấu ta phải sửa lại cách chay fdisk dùng tùy chọn ‘t’ Hãy cẩn thận làm việc với Partition Ta khơng muốn xóa Partittion quan trọng bị lỗi hay thay đổi ID Partition hệ thống mắc lỗi việc hoán đổi Tất liệu Partition hoán đổi bị kiểm tra lại thay đổi ta tạo Đồng thời ý Solaris sử dụng ID giống khơng gian hốn đổi Linux, phải cẩn thận để khơng xóa Partition Solaris 13 Ngay Partition đánh dấu hốn đổi, ta dùng lệnh mkswap (make swap) sau: Mkswap /dev/hdb1 Nếu khơng có lỗi xảy hốn đổi bạn sẵn sàng sử dụng Để kích hoạt nhập: Swapon /dev/hdb1 Ta kiểm tra lệnh swapon-s Để cài đặt khơng gian hốn đổi tự động khởi động ta cần thêm entry cho /etc/fstab file, nơi chứa danh sách tập tin hệt thống khơng gian hốn đổi cần cài đặt thời gian khởi động Mỗi dịng có định dạng sau: Khi khơng gian hốn đổi loại đặc biệt tập tin hệ thống nhiều tham số không tương đương Đối với không gian hệ thống, thêm: /dev/hdb1 Swap none sw 0 Trong dev/hdb ngăn hốn đổi Ngăn khơng có điểm lắp đặt cố định, ta có none Loại hốn đổi với tùy chọn sw hai tham số cuối không sử dụng nên chúng có giá trị Để kiểm tra xem khơng gian hốn đổi tự động cài đặt mà khơng cần phải khởi động lại bạn dùng lệnh: swapoff – a (tắt không gian hốn đổi) sau dùng lênh : swapon – a (cài đặt tất khơng gian hốn đổi liệt kê tập tin /etc/fstab) kiểm tra lại lệnh swapon – s 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 hoán đổi file swap tạm thời, ta 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/hda5 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 hố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 hoán đổi thêm 13 b : Tập tin hoán đổi Cũng giống Partition hoán đổi, Linux hỗ trợ cho bạn tạo tập tin hoán đổi, chuẩn bị lắp đặt kiểu với Partition hốn đổi Lợi ích tập tin hốn đổi ta khơng cần phải tìm kiếm Partititon trống hay phân chia lại ổ để thêm vào khơng gian hốn đổi Để tạo tập tin hoán đổi, trước tiên dùng lệnh dd để tạo tập tin rỗng Ví dụ, tạo tập tin 1GB, nhập: dd if=/dev/zero of=/swapfile bs=1024 count=1048576 /swapfile tên tập tin hoán đổi 1048576 kích cỡ tính kilobyte (ví dụ 1GB) Chuẩn bị tập tin hoán đổi ta dùng mkswap tạo Partition, dùng tên tập hoán đổi: mkswap/swapfile tương tự, cài đặt tập tin hoán đổi dùng lệnh swapon: swapon /swapfile Đầu vào /etc/fstab tập tin hốn đổi có dạng sau: /swapfile none swap sw 0 2.2: ĐỊNH VỊ KHÔNG GIAN HỐN ĐỔI Người ta thường nói ta nên định vị khơng gian hốn đổi gấp đơi nhớ vật lý, quy luật Ta xem cách làm sau đây: ∗ Dự đoán tổng nhớ mà ta cần Đây số lượng nhớ lớn mà ta cần thời điểm đó, tổng nhớ cần thiết cho tất chương trình mà ta muốn chạy lúc ∗ Cộng thêm vào dự đốn bước trên, dự đốn kích thước chương trình sai ta quên số chương trình mà ta muốn chạy để chắn ta nên chuẩn bị không gian phụ để cần ∗ Dựa theo tính tốn trên, ta biết cần tổng cộng nhớ Vì vậy, để định vị khơng gian hốn đổi, ta cần lấy tổng nhớ dùng trừ cho nhớ vật lý ∗ Nếu khơng gian hốn đổi mà ta tính lớn lần nhớ vật lý ta 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 ta khơng cần 13 CHƯƠNG III: CƠ CHẾ PHÂN TRANG PHÂN ĐOẠN 3.1.: CƠ CHẾ PHÂN ĐOẠN Quan niệm không gian địa tập phân đoạn (segments) Ở phân đoạn phần nhớ kích thước khác có liên quan logic với Mỗi phân đoạn có tên gọi (số hiệu phân đoạn) độ dài ∗ 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ừ 0→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 → 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 Hình 3.1.1: Kernel/Used Linear addresses 3.2.: CƠ CHẾ PHÂN TRANG • 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ý Để tiết kiệm nhớ vật lý load trang ảo mà sử dụng chương trình thực thi Việc mà load trang ảo vào nhớ chúng truy cập dẫn đến nhu cầu phân trang 13 • 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 hố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 ghicacs trang từ cache đĩa Đặc tính chung trang danh sách theo chuẩn LRU (Least Recently Used) là: ∗ Active_list: Là trang có page → age > 0, chứa khơng chứa liệu, ánh xạ mục trang tiến trình ∗ Inactive_dirty_list: Là trang có page → age == 0, chứa khơng chứa liệu, không ánh xạ mục bảng tiến trình ∗ Inactive_clean_list: Mỗi vùng có inactive_dirty_list riêng nó,chứa trang clean với page == 0, không ánh xạ mục trrong 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  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 mn 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 vầ bảng tên tiến trình Từ vòng đời trang bắt đầu active_list, nơi mà lưu trữ kể sử dụng  Trang P đọc suốt trình hoạt động đầu đọc hoán đổi lưu vào page Một loạt trang tiếp đĩa đọc mà không cần biết trang có cần hay khơng khơng cần quan tâm đến việc thơng báo cho trang chũng khơi phục cho dù khơng tham chiếu đến  Trang P đọc suốt trình hoạt động cluster ánh xạ nhớ  Trang P ghi tiến trình có chứa liệu (dirty) Lúc trang P active_list 13  Trang P không sử dụng thời gian Sự kích hoạt định kỳ hàm kswap() (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 kswaps() để 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 Nhờ vào page cache chế swap mà trang đảm bảo 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 chỉnh lỗi gọi hàm find_page_nolock() để xác định địa 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 cho nhớ trở lên chậm  Hàm page_launder() kích hoạt để làm trang dirty thực để tìm trang khơng sử dụng clean, đưa chúng đế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 để kích hoạt vài đoạn mã đặc biệt để thực ghi lên đĩa (không đồng bộ) với trang bị khóa  Hàm page_launder() gọi lại để tìm trang clean để đưa đến inactive_clean_list  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 pagecache (điều bảo đảm khơng có tiến trình 13 khác tham chiếu đến q trình quany lý lỗi trang), đưa cho lời gọi trang trống • BẢNG TRANG (PAGE TABLE) Hình 3.2.1: 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 3.2.1 cách mà địa 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 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 kiếm liệu trang • ĐỊNH VỊ VÀ GIẢI PHĨNG TRANG  Định vị trang Linux sử dụng thuật toán buddy để dinh vị giải phóng cách hiệu khối trang Đoạn đị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 13 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ứ ánh xạ đến khổi gồm trang trống định vị/ Hình 3.2.2: Cấu trúc liệu free-area Ví dụ, hình 3.2.2 , hình khối gồm trang yêu cầu khối trang thứ (bắt đầu khung trang số 4) chia thành khối trang Khối thứ (bắt đầu khung trang số 4) cung cấp cho lời gọi khối thứ (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  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 khác trang trống lớn dần 13 CHƯƠNG IV: CƠ CHẾ QUẢN LÝ BỘ NHỚ VẬT LÝ, ÁNH XẠ BỘ NHỚ 4.1.: 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 làm riê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, 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 canh đường bien tương ứng Chúng ta chuyển khối trang lại cho định vùng nhờ hàm free_pages() Số mũ n gọi thứ tự định vùng Các khối khơng cần phải giải phóng giống cách mà chúng xác định, phải giải phóng xác, khung trang khối phải có số tham chiếu khác Ví dụ, bạn yêu cầu khối trang, sau giải phóng khối trang khối trang đó, muốn làm điều trước hết ta phải tăng biến tham chiếu trang khối trang Lý ta định vị khối trang, có biến tham chiếu trang khối tăng, mặt khác đoạn mã giải phóng trang khơng giải phóng trang có biến chiếu 0, nên biến tham chiếu trang khác phải điều khiển tay Việc tăng tất biến tham chiếu trang khối khơng cần thiết đồng thời làm tăng kích thước đoạn mã giải định vị trang 4.2.: 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ý khơng thể truy cập trực tiếp đến kernel, 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ụ Zonelist_struct bao gồm mảng trỏ zone_struct gfp_mask chế định 13 vị sử dụng zone_list Zone_struct offset địa offset nơi bắt đầu vùng nhớ vật lý 13 ... TỔNG QUAN VỀ BỘ NHỚ TRONG CỦA HỆ ĐIỀU HÀNH CỦA LINUX 1.1.GIỚI THIỆU VỀ HỆ ĐIỀU HÀNH LINUX 1.2.: TỔNG QUAN VỀ BỘ NHỚ TRONG LINUX CHƯƠNG II: CƠ CHẾ QUẢN LÝ BỘ NHỚ ẢO ... khơng công bố ứng dụng Windows Trong đồ án này, tìm hiểu phần quan trọng hệ điều hành Linux là: quản lý nhớ Linux Một hệ điều hành muốn chạy ổn định phải có chế quản lý nhớ hiệu Cơ chế trình bày cách... TRONG LINUX Trong hệ thống máy tính, nhớ tái nguyên hữu hạn Do vậy, nhu cầu tổ chức, quản lý nhớ nhiệm vụ hệ điều hành Bộ nhớ tổ chức mảng chiều từ nhớ (word), từ nhớ có địa Hệ điều hành chịu trách

Ngày đăng: 30/03/2016, 18:20

Từ khóa liên quan

Mục lục

  • MỤC LỤC

  • LỜI NÓI ĐẦU

  • CHƯƠNG I: TỔNG QUAN VỀ BỘ NHỚ TRONG CỦA HỆ ĐIỀU HÀNH CỦA LINUX.

    • 1.1.GIỚI THIỆU VỀ HỆ ĐIỀU HÀNH LINUX

    • 1.2.: TỔNG QUAN VỀ BỘ NHỚ TRONG LINUX

    • CHƯƠNG II: CƠ CHẾ QUẢN LÝ BỘ NHỚ ẢO

      • 2.1.: CÁC KHÁI NIỆM BỘ NHỚ ẢO, KHÔNG GIAN HOÁN ĐỔI.

      • 2.2.: TẠO KHÔNG GIAN HOÁN ĐỔI ( CƠ CHẾ Swapping )

      • 2.3.: SỬ DỤNG KHÔNG GIAN HOÁN ĐỔI

      • CHƯƠNG III: CƠ CHẾ PHÂN TRANG PHÂN ĐOẠN

        • 3.1.: CƠ CHẾ PHÂN ĐOẠN

        • 3.2.: CƠ CHẾ PHÂN TRANG

        • CHƯƠNG IV: CƠ CHẾ QUẢN LÝ BỘ NHỚ VẬT LÝ, ÁNH XẠ BỘ NHỚ

          • 4.1.: BỘ ĐỊNH VÙNG

          • 4.2.: CÁC VÙNG.

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

Tài liệu liên quan