Hai thanh ghi hổ trợ chuyển đổi địa chỉ Một ưu điểm của việc sử dụng thanh ghi nền là có thể di chuyển các chương trình trong bộ nhớ sau khi chúng bắt đầu xử lý, mỗi khi tiến trình được [r]
(1)TRƯỜNG CAO ĐẲNG NGHỀ ĐỒNG THÁP KHOA CÔNG NGHỆ THÔNG TIN BÀI BÀIBÁO BÁOCÁO CÁONHÓM NHÓM33 LỚP CAO ĐẲNG QUẢN TRỊ MẠNG MÁY TÍNH ĐỀ TÀI: QUẢN LÝ BỘ NHỚ SVTH: Năm 2010 - 2011 TRẦN TRUNG HIẾU LÊ PHI Á VĂN LƯƠNG NHƯ ĐẶNG HOÀNG ĐỨC TRẦN THÁI CHÂU (2) BÀI BÁO CÁO CỦA NHÓM 3: ĐỀ TÀI: QUẢN LÝ BỘ NHỚ I GIỚ THIỆU : Ở nội dung trước ta đã biết, hệ điều hành đa chương là hệ điều hành có thể thực nhiều tiến trình, chương trình cùng lúc và các tiến trình đó thực thi thì tiến trình đòi hỏi các tài nguyên CPU, nhớ chính và các thiết bị nhập/xuất….OS cấp phát CPU cho tiến trình dựa vào các thuật toán FIFO, theo chế độ ưu tiên và theo chiến lược công việc ngắn SJF, tài nguyên là nhớ chính thì OS cấp phát cho các tiến trình nào và các tiến trình nhận và sử dụng nhớ chính đó nào ? Bài 3: A/ Quản lý nhớ (trang 39 NL-HĐH) giúp chúng ta tìm hiểu và trả lời câu hỏi này Và đây chính là ĐỀ TÀI NHÓM III : “QUẢN LÝ BỘ NHỚ” II NỘI DUNG BÁO CÁO: Bộ nhớ là trung tâm để điều hành hệ thống máy tính Bộ nhớ chính là thiết bị lưu trữ mà thông qua đó CPU có thể trao đổi thông tin với môi trường ngoài Nếu HĐH không có nhớ chính thì CPU không có cách nào để trao đổi thông tin với môi trường ngoài, và người dùng không thực tiến trình nào hết, vì nhu cầu tổ chức, quản lý nhớ là nhiệm vụ trọng tâm hàng đầu HĐH (Operating System) Đơn vị sở nhớ là bit, bit có thể chứa số Bộ nhớ bao gồm các ô nhớ (cells; locations) có cùng kích thước (tức là cùng số bit), ô nhớ gán địa Các máy tính khác có thể sử dụng ô nhớ có kích thước khác nhau: Ví dụ: Tên máy Burroughs B1700 IBM PC IBM 1130 DEC PDP–8 DEC PDP–15 Kích thước ô nhớ (bit) 16 12 18 (3) Ngày nay, hầu hết các máy vi tính có kích thước ô nhớ là bit, còn gọi là byte, các byte lại nhóm lại thành word (từ), từ nhớ có địa riêng Việc trao đổi thông tin với môi trường ngoài thực thông qua các thao tác đọc ghi liệu vào địa cụ thể nào đó nhớ Hầu hết các hệ điều hành ngày cho phép chế độ đa nhiệm nhằm nâng cao hiệu suất sử dụng CPU Tuy nhiên kỹ thuật này lại làm nảy sinh nhu cầu chia sẻ nhớ các tiến trình khác Từ đó nảy sinh vấn đề “Bộ nhớ thì hữu hạn và các yêu cầu nhớ thì vô hạn” Tức là dung lượng nhớ thì có giới hạn và dung lượng mà các tiến trình yêu cầu nhớ thì vô hạn Hệ điều hành chịu trách nhiệm cấp phát vùng nhớ cho các tiến trình có yêu cầu Để thực tốt nhiệm vụ này, hệ điều hành cần phải xem xét nhiều khía cạnh : Sự tương ứng địa logic và địa vật lý (physic) : làm cách nào để chuyển đổi địa tương đối (symbolic) chương trình thành địa tuyệt đối nhớ chính? Quản lý nhớ vật lý: làm cách nào để mở rộng nhớ có sẵn nhằm lưu trữ nhiều tiến trình đồng thời? Chia sẻ thông tin: làm nào phép hai tiến trình có thể chia sẻ thông tin nhớ? Bảo vệ: làm nào để ngăn chặn các tiến trình xâm phạm đến vùng nhớ cấp phát cho tiến trình khác? Địa tương đối, địa tuyệt đối ??? Thông thường, chương trình lưu trữ trên đĩa tập tin nhị phân (0 &1) có thể xử lý Chương trình này mang vào nhớ và đặt quá trình để nó thực thi Tập hợp các quá trình trên đĩa chờ đem vào nhớ để thực thi hình thành hàng đợi nhập hệ thống (input queue) có hai loại hàng đợi và nhiều hàng đợi Các địa chương trình nguồn (source) là địa tương đối Vì thế, chương trình phải trải qua nhiều giai đoạn xử lý để chuyển đổi các địa này thành các địa tuyệt đối nhớ chính (4) Vậy nào thì chuyển đổi diễn ? Việc chuyển đổi có thể xảy vào các thời điểm sau : Thời điểm biên dịch (Compile time): Nếu thời điểm biên dịch có thể biết tiết trình nẳm đâu nhớ thì địa tuyệt đối phát sinh Ví dụ: Nếu biết trước tiến trình nẳm vị trí H nhớ thì mã biên dịch phát sinh bắt đầu vị trí đó Nếu thời điểm sau đó, vị trí bắt đầu thay đổi thì cần biên dịch lại Các chương trình định dạng (.com) MS-Dos là mã tuyệt đối giới hạn thời điểm biên dịch Thời điểm nạp (Load time) : Nếu thời điểm biên dịch, chưa thể biết vị trí mà tiến trình thường trú nhớ, trình biên dịch cần phát sinh mã tương đối (translatable) Sự liên kết địa trì hoãn đến thời điểm chương trình nạp vào nhớ, lúc này các địa tương đối chuyển thành địa tuyệt đối đã biết vị trí bắt đầu lưu trữ tiến trình Khi có thay đổi vị trí lưu trữ, cần nạp lại chương trình để tính toán lại các địa tuyệt đối, mà không cần biên dịch lại Thời điểm xử lý (Execution time): Nếu tiến trình di chuyển thời gian thực thi từ phân đoạn nhớ này tới phân đoạn nhớ khác thì việc liên kết phải trì hoãn đến cuối thời gian xử lý.Để thực kết buộc địa vào thời điểm xử lý, cần sử dụng chế phần cứng đặc biệt Liên kết địa là quá trình kết nối các lệnh, địa từ đĩa vào nhớ và đặt vào tiến trình để nó có thể chạy Không gian địa ? Địa logic ? Địa vật lý ? Không gian vật lý ? ?!?? (5) -Một hướng tiếp cận trung tâm nhằm tổ chức quản lý nhớ cách hiệu qủa là đưa khái niệm không gian địa xây dựng trên không gian nhớ vật lý, việc tách rời hai không gian này giúp OS dễ dàng xây dựng các chế và chiến lược quản lý nhớ hữu hiệu : - Một địa tạo CPU thường gọi là Địa logic (đ/c luận lý) còn gọi là địa ảo (Logical address) - Tập hợp tất các địa luận lý tạo tiến trình gọi là không gian địa luận lý - Một địa xem đơn vị nhớ nghĩa là địa nạp vào ghi địa nhớ gọi là địa vật lý (Physical address) - Tập hợp tất địa vật lý tương ứng với địa luận lý này gọi là không gian lý Địa ảo và địa vật lý là phương thức kết buộc địa vào thời điểm biên dịch vào thời điểm nạp Nhưng có khác biệt địa ảo và địa vật lý phương thức kết buộc vào thời điểm xử lý MMU (memory-management unit) là chế phần cứng sử dụng để thực chuyển đổi địa ảo thành địa vật lý vào thời điểm xử lý Chương trình người sử dụng thao tác trên các địa ảo, không nhìn thấy các địa vật lý Địa thật ứng với vị trí liệu bô nhớ xác định thực truy xuất đến liệu Phân biệt các chế liên kết địa chỉ: Compile time Sau biên dịch biết chính xác vị trí chương trình nhớ Loadtime Khi biên dịch cho địa tương đối Chỉ tiến trình nạp vị trí chính xác nó nhớ, tiến trình có vị trí không thay đổi nhớ Excutetime Một tiến trình thực hiện, tiến trình có nằm các bị trí khác nhớ Phân biệt địa Logic và địa vật lý Các chế liên kết địa nào có địa Logic và địa vật lý giống nhau; chế nào có địa Logic và địa vật lý khác ?!?? Phân biệt địa Logic và địa vật lý: Logical address – CPU phát ra, còn gọi là địa ảo (virtual address) Physical address – địa nhận biết đơn vị nhớ (memory unit) (địa thực nhớ) Các chế liên kết địa chỉ: (6) Các địa logic và vật lý là các chế liên kết địa thời điểm compile-time và load-time; chúng khác chế executiontime vì: Với Compile sau biên dịch xong biết chính xác vị trí chương trình nhớ => Địa Logic = Địa vật lý Với Loadtime tiến trình nạp vị trí chính xác nó nhớ thì tiến trình có vị trí không thay đổi => Địa Logic = Địa vật lý Với Excutetime thì tiến trình thực hiện, tiến trình có thể nằm các vị trí khác nhớ => Địa Logic khác địa vật lý CẤP PHÁT LIÊN TỤC + Các hệ đơn chương + Các hệ thống đa chương với phân vùng cố định - Một hàng đợi - Nhiều hàng đợi + Các hệ thống đa chương với phân vùng động + Các hệ thống đa chương với kỹ thuật Swapping - Nguyên tắc cấp phát liên tục là chương trình cấp phát vùng nhớ liền I./ Các hệ đơn chương Các hệ thống đơn chương : - Sử dụng ghi giới hạn : là địa cao vùng nhớ cấp cho OS - Tất các địa tiến trình người sử dụng truy xuất đến so sánh với nội dung ghi giới hạn (7) Xảy hai trường hợp: + Nếu lớn hơn: hợp lý + Ngược lại: ngắt phát sinh báo truy xuất bất hợp lý - Tại thời điểm chí có chương trình xửa lý Các hệ thống đơn chương: - Ví dụ: Trong OS MSDOS, lúc thực thi lệnh Khi người sử dụng gõ lệnh lệnh đó thực và sau hoàn tất, trỏ xuất sau dấu nhắc đợi lệnh chờ người sử dụng gõ lệnh II./ Các hệ thống đa chương với phân vùng cố định: - Bộ nhớ chia thành các phân vùng (kích thước khác hay nhau) - Khi các tiến trình có nhu cầu thì nhớ lưu trữ vào hàng đợi - Sử dụng nhiều hàng đợi - Sử dụng hàng đợi a/ Phân vùng cố định nhiều hàng đợi - Mỗi phân vùng có hàng đợi Mỗi tiến trình tạo lập, nạp (loading) đưa vào hàng đợi phân vùng có kích thước nhỏ đủ để thỏa mãn nhu cấu chứa nó Các hàng đợi phân vùng trống, đầy Các tiến trình phải chờ cấp phát nhớ b/ Phân vùng cố định hàng đợi (8) - - Tất các tiến trình đặt hàng đợi Khi có phân vùng tự do, tiến trình đầu tiên hàng đợi có kích thước phù hợp đặt vào phân vùng này cho xử lý Nếu kích thước tiến trình không đúng kích thước phân vùng tự thì xảy tượng phân mảnh nội vi Mức độ đa chương bị giới hạn số lượng phân vùng Sử dụng ghi đặc biệt: Phần cứng + Thanh ghi (Base Register) + Thanh ghi giới hạn (Limit Register) Khi tiến trình tạo lập, nạp (loading) vào ghi địa bắt đầu phân vùng nạp, nạp vào ghi giới hạn kích thước tiến trình Địa ảo đối chiếu với địa ghi giới hạn để đảm bảo tiến trình không truy xuất ngoại phạm vi phân vùng cấp cho nó Địa vật lý = địa ảo + địa ghi Sử dụng ghi là có thể di chuyển các chương trình nhớ sau chúng bắt đầu xử lý Chỉ cần nạp lại ghi (9) + Nhược điểm: Tính đa chương phụ thuộc vào số vùng chia Nếu kích thước tiến trình nhỏ kích thước phân vùng thì dẫn tới làm giảm hiệu làm việc nhớ II./ Các hệ thống đa chương với phân vùng động: Tiến trình nạp vào nhớ chiếm vùng chính nhớ nó Xảy tượng phân mảnh ngoại vi Kỹ thuật “dồn nhớ”: kết hợp các mảnh nhớ nhỏ rời rạc thành vùng nhớ liên tục Các tiến trình có thể bị di chuyển Kích thước tiến trình tăng trưởng quá trình xử lý mà không còn vùng trống gần kề (dời chổ tiến trình, cấp phát dư) MÔ HÌNH Linker_Loader (Trình liên kết – Trình nạp): Ý tưởng : Tiến trình nạp vào vùng nhớ liên tục đủ lớn để chứa toàn tiến trình Tại thời điểm biên dịch các địa bên tiến trình là địa (10) tương đối Tại thời điểm nạp, Hệ điều hành trả địa bắt đầu nạp tiến trình, và tính toán để chuyển các địa tương đối địa tuyệt đối nhớ vật lý theo công thức địa vật lý = địa bắt đầu + địa tương đối Nhận xét: Thời điểm kết buôc địa là thời điểm nạp, sau nạp không thể dời chuyển tiến trình nhớ Không có khả kiểm soát địa các tiến trình truy cập, không có bảo vệ MÔ HÌNH BASE & LIMIT (CƠ SỞ & HẠN CHẾ) Ý tưởng : Tiến trình nạp vào vùng nhớ liên tục đủ lớn để chứa toàn tiến trình Tại thời điểm biên dịch các địa bên tiến trình là địa (11) tương đối Tuy nhiên bổ túc vào cấu trúc phần cứng máy tính ghi (base register) và ghi giới hạn (bound register) Khi tiến trình cấp phát vùng nhớ, nạp vào ghi địa bắt đầu phân vùng cấp phát cho tiến trình, và nạp vào ghi giới hạn kích thước tiến trình Sau đó, địa nhớ phát sinh tự động cộng với địa chứa ghi địa tuyệt đối nhớ, các địa đối chiếu với ghi giới hạn để bảo đảm tiến trình không truy xuất ngoài phạm vi phân vùng cấp cho nó CPU Hai ghi hổ trợ chuyển đổi địa Một ưu điểm việc sử dụng ghi là có thể di chuyển các chương trình nhớ sau chúng bắt đầu xử lý, tiến trình di chuyển đến vị trí mới, cần nạp lại giá trị cho ghi nền, các địa tuyệt đối phát sinh lại mà không cần cập nhật các địa tương đối chương trình Chịu đựng tượng phân mảnh ngoài( external fragmentation ) : các tiến trình vào và khỏi hệ thống, xuất các khe hở các tiến trình Đây là các khe hở tạo kích thước tiến trình nạp nhỏ kích thước vùng nhớ giải phóng tiến trình đã kết thúc và khỏi hệ thống Hiện tượng này có thể dẫn đến tình tổng vùng nhớ trống đủ để thoả mãn yêu cầu, các vùng nhớ này lại không liên tục ! Người ta có thể áp dụng kỹ thuật « dồn nhớ » (memory compaction ) để kết hợp các mảnh nhớ nhỏ rời rạc thành vùng nhớ lớn liên tục Tuy nhiên, kỹ thuật này đòi hỏi nhiều thời gian xử lý, ngoài ra, kết buộc địa phải thực vào thời điểm xử lý, vì các tiến trình có thể bị di chuyển quá trình dồn nhớ (12) Phân mảnh ngoài: Vấn đề nảy sinh kích thước tiến trình tăng trưởng qúa trình xử lý mà không còn vùng nhớ trống gần kề để mở rộng vùng nhớ cho tiến trình Có hai cách giải quyết: - Dời chỗ tiến trình: di chuyển tiến trình đến vùng nhớ khác đủ lớn để thỏa mãn nhu cầu tăng trưởng tiến trình Cấp phát dư vùng nhớ cho tiến trình: cấp phát dự phòng cho tiến trình vùng nhớ lớn yêu cầu ban đầu tiến trình Một tiến trình cần nạp vào nhớ để xử lý Trong các phương thức tổ chức trên đây, tiến trình luôn lưu trữ nhớ suốt quá trình xử lý nó Tuy nhiên, trường hợp tiến trình bị khóa, tiến trình sử dụng hết thời gian CPU dành cho nó, nó có thể chuyển tạm thời nhớ phụ và sau này nạp trở lại vào nhớ chính để tiếp tục xử lý Các cách tổ chức nhớ trên đây phải chịu đựng tình trạng nhớ bị phân mảnh vì chúng tiếp cận theo kiểu cấp phát vùng nhớ liên tục cho tiến trình Như đã thảo luận, có thể sử dụng kỹ thuật dồn nhớ để loại bỏ phân mảnh ngoại vi, chi phí thực cao Một giải pháp khác hữu hiệu là cho phép không gian địa vật lý tiến trình không liên tục, nghĩa là có thể cấp phát cho tiến trình vùng nhớ tự bất kỳ, không cần liên tục III TỔNG KẾT BÁO CÁO: - Bài báo cáo nhóm III thực với đề tài “QL BỘ NHỚ” có tham khảo tài liệu sách giáo trình Nguyên lý – Hệ điều hành và tài liệu khác trên các website : www.scribd.com www.violet.com www.ebook.edu.vn và số website khác (13) SVTH : TRẦN TRUNG HIẾU LÊ PHI Á ĐẶNG HOÀNG ĐỨC TRẦN THÁI CHÂU VĂN LƯƠNG NHƯ -HẾT - (14) (15) (16) (17) (18) (19) (20) (21) (22) (23) (24) (25) (26) (27) (28) (29)