1. Trang chủ
  2. » Công Nghệ Thông Tin

Bài giảng hệ điều hành chương 7 quản lý bộ nhớ

66 1,1K 0

Đ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

Thông tin cơ bản

Định dạng
Số trang 66
Dung lượng 2,16 MB

Nội dung

Nội DungTổng quan về Bộ nhớ và Tiến trình Hoán vị swapping Cấp phát bộ nhớ kề nhau Contigous allocation Phân trang Paging Các cấu trúc bảng trang Phân đoạn Segmentation Kết hợp phân tran

Trang 1

CT107 Hệ Điều Hành

Chương 4 Quản lý bộ nhớ

Giảng viên: Trần Công Án (tcan@cit.ctu.edu.vn)

Bộ môn Mạng máy tính & Truyền thông

Khoa Công Nghệ Thông Tin & Truyền Thông

Đại học Cần Thơ

2014

Trang 2

Mục Tiêu

I Mô tả chi tiết các phương pháp tổ chức bộ nhớ

I Giải thích các kỹ thuật quản lý bộ nhớ bao gồm phân trang và phânđoạn

I Một số ví dụ thực tế về quản lý bộ nhớ: quản lý phân đoạn trong bộ

xử lý Intel Pentium và quản lý địa chỉ bộ nhớ trong HĐH Linux

Trang 3

Nội Dung

Tổng quan về Bộ nhớ và Tiến trình

Hoán vị (swapping)

Cấp phát bộ nhớ kề nhau (Contigous allocation)

Phân trang (Paging)

Các cấu trúc bảng trang

Phân đoạn (Segmentation)

Kết hợp phân trang và phân đoạn

Phụ lục – Một Số Ví Dụ

Trang 4

Tổng quan về Bộ nhớ và Tiến trình

Tổng quan về bộ nhớ

Giới Thiệu Bộ Nhớ

I CPU chỉ có thể truy xuất trực tiếp thanh ghi và bộ nhớ chính

⇒ Để thực thi một chương trình, đoạn mã của chương trình phảiđược tải vào trong bộ nhớ chính và đặt trong một tiến trình

tối đa 1 chu kỳ CPU để truy xuất

tốc độ truy xuất nhanh, chỉ chậm hơn thanh ghi

tiến trình, đặc biệt trong môi trường đa nhiệm

Trang 5

Tổng quan về Bộ nhớ và Tiến trình

Thanh ghi nền và thanh ghi giới hạn

Thanh Ghi Nền & Thanh Ghi Giới Hạn

I Hỗ trợ việc phân chia vùng nhớ

256000

base 120900 limit 420940

880000 1024000

process

process

process

Figure 8.1 A base and a limit register define a logical address space.

300040 and the limit register is 120900, then the program can legally access all addresses from 300040 through 420939 (inclusive).

Protection of memory space is accomplished by having the CPU hardware compare every address generated in user mode with the registers Any attempt

by a program executing in user mode to access operating-system memory or other users’ memory results in a trap to the operating system, which treats the attempt as a fatal error (Figure 8.2) This scheme prevents a user program from (accidentally or deliberately) modifying the code or data structures of either the operating system or other users.

The base and limit registers can be loaded only by the operating system, which uses a special privileged instruction Since privileged instructions can

be executed only in kernel mode, and since only the operating system executes

in kernel mode, only the operating system can load the base and limit registers.

CPU

base ' limit

Figure 8.2 Hardware address protection with base and limit registers.

TS Trần Công Án (Khoa CNTT&TT) [CT107] Ch7 Quản lý bộ nhớ 5

Trang 6

[CT107] Ch7 Quản lý bộ nhớ

Tổng quan về Bộ nhớ và Tiến trình

Bảo vệ không gian nhớ

Bảo Vệ Không Gian Nhớ Bằng Phần Cứng

I Được thực thi bởi CPU, sử dụng t/ghi cơ sở và t/ghi giới hạn

I Hai thanh ghi chỉ có thể được thay đổi bởi HĐH, với quyền đặc biệt

8.1 Background 353

operating system 0

256000

base 120900 limit 420940

880000 1024000

process

process

process

Figure 8.1 A base and a limit register define a logical address space.

300040 and the limit register is 120900, then the program can legally access all

addresses from 300040 through 420939 (inclusive).

Protection of memory space is accomplished by having the CPU hardware

compare every address generated in user mode with the registers Any attempt

by a program executing in user mode to access operating-system memory or

other users’ memory results in a trap to the operating system, which treats the

attempt as a fatal error (Figure 8.2) This scheme prevents a user program from

(accidentally or deliberately) modifying the code or data structures of either

the operating system or other users.

The base and limit registers can be loaded only by the operating system,

which uses a special privileged instruction Since privileged instructions can

be executed only in kernel mode, and since only the operating system executes

in kernel mode, only the operating system can load the base and limit registers.

base

memory trap to operating system

monitor—addressing error

no no

Trang 7

Tổng quan về Bộ nhớ và Tiến trình

Gắn kết địa chỉ (Address binding)

Gắn Kết (Binding) Địa Chỉ

I Tập hợp các chương trình chờ đợi để được nạp vào bộ nhớ tạo thành

I Các tiến trình có thể được nạp vào bất kỳ vùng nào (sẵn sàng) trên

bộ nhớ, không nhất thiết từ địa chỉ 00000

I Một chương trình thường trãi qua 1 số bước trước khi được thực thi

⇒ Sự biểu diễn địa chỉ bộ nhớ trong từng g/đoạn có thể khác nhau:

I Các địa chỉ tượng trưng trong chương trình nguồn.

I Các địa chỉ có thể tái định vị khi biên dịch.

I Các địa chỉ tuyệt đối khi nạp (loading) hoặc kết nối (linking).

Trang 8

Tổng quan về Bộ nhớ và Tiến trình

Gắn kết chỉ thị và dữ liệu vào bộ nhớ

Gắn Kết Dữ Liệu & Chỉ Thị Vào Bộ Nhớ

I Có thể diễn ra tại 3 giai đoạn khác nhau:

I Thời điểm biên dịch : có thể sinh ra mã lệnh tuyệt đối (absolute code) nếu biết trước vị trí vùng nhớ Tuy nhiên, phải biên dịch lại nếu vị trí bắt đầu của vùng nhớ thay đổi.

I Thời điểm nạp : việc gắn kết xảy ra ở thời điểm nạp nếu trình biên dịch sinh ra mã lệnh có thể tái định vị (relocatable code) – khi nó không biết

vị trí vùng nhớ khi biên dịch.

I Thời điểm thực thi : việc gắn kết xảy ra ở thời điểm này nếu tiến trình

có thể bị di chuyển từ phân đoạn (segment) bộ nhớ này sang phân đoạn

bộ nhớ khác khi nó đang thực thi.

I Cần sự hỗ trợ của phần cứng (e.g t/ghi nền và t/ghi giới hạn)

I Được sử dụng bởi nhiều HĐH.

Trang 9

source program

object module

linkage editor

load module

loader

in-memory binary memory image

other object modules

compile time

load

execution time (run time)

compiler or assembler

system library

dynamically loaded system library

Figure 8.3 Multistep processing of a user program.

Execution time If the process can be moved during its execution from one memory segment to another, then binding must be delayed until run time Special hardware must be available for this scheme to work, as will this method.

A major portion of this chapter is devoted to showing how these various appropriate hardware support.

bind-8.1.3 Logical Versus Physical Address Space

An address generated by the CPU is commonly referred to as alogical address,

whereas an address seen by the memory unit—that is, the one loaded into thememory-address registerof the memory—is commonly referred to as a

physical address.

The compile-time and load-time address-binding methods generate

iden-TS Trần Công Án (Khoa CNTT&TT) [CT107] Ch7 Quản lý bộ nhớ 9

Trang 10

Tổng quan về Bộ nhớ và Tiến trình

Không gian địa chỉ vật lý và luận lý

Không Gian Địa Chỉ Vật Lý & Luận Lý

I Việc gắn kết không gian bộ nhớ vật lý và luận lý là trọng tâm của cơchế quản lý bộ nhớ

I Địa chỉ luận lý (logical address): sinh ra bởi CPU, còn được gọi là địa chỉ ảo (vitual address).

I Địa chỉ vật lý (physical address): được nhìn thấy bởi bộ quản lý bộ nhớ.

I Địa chỉ luận lý và vật lý là giống nhau trong sơ đồ gắn kết địa chỉ tạithời điểm biên dịch và nạp chương trình; và sẽ khác nhau trong sơ đồgắn kết tại thời điểm thực thi

Trang 11

nó truy xuất bộ nhớ.

I Thanh ghi tái định vị chính là thanh ghi cơ sở.

I HĐH MS-DOS trên nền Intel 80x86 sử dụng 4 thanh ghi tái định vị.

I Tiến trình người dùng chỉ dựa trên địa chỉ luận lý, không cần biết đếnđịa chỉ vật lý – sự ánh xạ đến địa chỉ vật lý xảy ra trong thời gian thựcthi, khi tiến trình cần truy xuất bộ nhớ

Trang 12

relocation register

346

logical address physicaladdress

Figure 8.4 Dynamic relocation using a relocation register.

binding scheme results in differing logical and physical addresses In this

logical address and virtual address interchangeably in this text The set of all

and physical address spaces differ.

The run-time mapping from virtual to physical addresses is done by a

from many different methods to accomplish such mapping, as we discuss in Section 8.3 through Section 8.5 For the time being, we illustrate this mapping

described in Section 8.1.1 The base register is now called arelocation register The value in the relocation register is added to every address generated by a user process at the time the address is sent to memory (see Figure 8.4) For example, if the base is at 14000, then an attempt by the user to address location

0 is dynamically relocated to location 14000; an access to location 346 is mapped

to location 14346.

The user program never sees the real physical addresses The program can create a pointer to location 346, store it in memory, manipulate it, and compare it with other addresses—all as the number 346 Only when it is used as a memory address (in an indirect load or store, perhaps) is it relocated relative to the base register The user program deals with logical addresses The memory-mapping hardware converts logical addresses into physical addresses This form of execution-time binding was discussed in Section 8.1.2 The final location of

a referenced memory address is not determined until the reference is made.

We now have two different types of addresses: logical addresses (in the

range 0 to max) and physical addresses (in the range R + 0 to R + max for a base value R) The user program generates only logical addresses and thinks that the process runs in locations 0 to max However, these logical addresses must

TS Trần Công Án (Khoa CNTT&TT) [CT107] Ch7 Quản lý bộ nhớ 12

Trang 13

Tổng quan về Bộ nhớ và Tiến trình

Nạp động (Dynamic loading)

Nạp Động (Dynamic Loading)

được gọi (vs nạp tĩnh: toàn bộ chương trình sẽ được nạp trước khitiến trình bắt đầu thực thi)

I Các hàm-thư-viện sẽ được giữ trên đĩa theo định dạngnạp có thể tái

Trang 14

Tổng quan về Bộ nhớ và Tiến trình

Liên kết động (dynamic linking)

Liên Kết Động (Dynamic Linking)

hợp vào trong mã nhị phân của chương trình

được thực hiện khi thực thi

I Một đoạn mã (gọi là stub ) được sử dụng để định vị các hàm-thư-viện thường trú trong bộ nhớ (hoặc cách nạp nếu hàm-thư-viện chưa được nạp).

I Khi cần thực thi hàm-thư-viện, stub thay thế chính nó bằng địa chỉ của hàm-thư-viện và thực thi hàm-thư-viện.

I Stub có thể phải nạp hàm-thư-viện lên bộ nhớ nếu chưa có sẵn trên bộ nhớ.

Trang 15

Tổng quan về Bộ nhớ và Tiến trình

Liên kết động (dynamic linking)

Liên Kết Động (Dynamic Linking)

I Liên kết động thường đòi hỏi sự hỗ trợ từ HĐH:

I HĐH là thực thể duy nhất có thể kiểm tra một hàm-thư-viện có ở trong cùng không gian nhớ với chương trình gọi không.

I Thực hiện phân quyền truy cập cho hàm-thư-viện khi cần thiết.

I Liên kết động đặc biệt hữu ích cho phép tạo các thư viện hàm chia sẻ(shared libraries)

Trang 16

Hoán vị (swapping)

Hoán Đổi (Swapping)

I Là một kỹ thuật cho phép tổng không gian bộ nhớ của các tiến trìnhlớn hơn tổng không gian nhớ vật lý:

I Một (hay một phần) tiến trình có thể được di chuyển tạm thời từ bộ nhớ chính ra các thiết bị lưu trữ phụ ( cuộn ra – roll/swap out ) rồi sau

đó di chuyển ngược vào bộ nhớ chính để tiếp tục thực thi ( cuộn vào – roll/swap in ).

I Cho phép tăng độ đa nhiệmcủa các hệ thống đa chương

bộ nhớ (memory image) của các tiến trình và cho phép truy cập trựctiếp các dữ liệu này

Trang 17

[CT107] Ch7 Quản lý bộ nhớ

Hoán vị (swapping)

Roll in, Roll out

Swap Out, Swap In

358 Chapter 8 Main Memory

programs would need to be relinked to gain access to the new library So that programs will not accidentally execute new, incompatible versions of libraries, version information is included in both the program and the library More than one version of a library may be loaded into memory, and each program uses its version information to decide which copy of the library to use Versions with minor changes retain the same version number, whereas versions with major changes increment the number Thus, only programs that are compiled with the new library version are affected by any incompatible changes incorporated

in it Other programs linked before the new library was installed will continue using the older library This system is also known asshared libraries.

Unlike dynamic loading, dynamic linking and shared libraries generally require help from the operating system If the processes in memory are protected from one another, then the operating system is the only entity that can check to see whether the needed routine is in another process’s memory space

or that can allow multiple processes to access the same memory addresses We elaborate on this concept when we discuss paging in Section 8.5.4.

8.2 Swapping

A process must be in memory to be executed A process, however, can be

swappedtemporarily out of memory to abacking storeand then brought back into memory for continued execution (Figure 8.5) Swapping makes it possible for the total physical address space of all processes to exceed the real physical memory of the system, thus increasing the degree of multiprogramming in a system.

8.2.1 Standard Swapping

Standard swapping involves moving processes between main memory and

a backing store The backing store is commonly a fast disk It must be large

operating system

swap out

swap in

user space main memory

Trang 18

Hoán vị (swapping)

Cài Đặt Hoán Đổi

Cài Đặt Hoán Đổi

I Phần chính của thời gian hoán đổi là thời gian chuyển dữ liệu(transfertime), thường tỷ lệ với kích thước bộ nhớ hoán đổi

I Hệ thống duy trì một hàng đợi sẵn sàngđể lưu trữ danh sách các tiếntrình sẵn sàng thực thi và đang được hoán đổi ra vùng lưu trữ phụ

I Thời gian chuyển ngữ cảnh trong cách tiếp cận này tương đối cao ⇒thường không khả thi trong thực tế

I Các phiên bản được sửa đổi của swapping được sử dụng trong các hệđiều hành hiện tại:

I Swapping bình thường bị vô hiệu hóa.

I Nó chỉ được kích hoạt khi nhu cầu bộ nhớ đạt đến 1 ngưỡng nào đó.

Trang 19

Cấp phát bộ nhớ kề nhau (Contigous allocation)

Giới thiệu

Cấp Phát Bộ Nhớ Kề Nhau

I Là một trong các p/pháp cấp phát bộ nhớ được sử dụng đầu tiên

I Bộ nhớ chính thường được chia thành 2 phần:

I Phần thường trú của HĐH: tổ chức trong vùng nhớ thấp (các vector ngắt).

I Tiến trình người dùng: được tổ chức trong vùng nhớ cao.

I Mỗi tiến trình được cấp phát một vùng nhớ đơn, liên tục

I Bộ quản lý bộ nhớ thực hiện ánh xạ địa chỉ luận lý sang vật lý vàothời gian thực thi (động):

I địa chỉ vật lý = địa chỉ luận lý + giá trị thanh ghi tái định vị.

Trang 20

Cấp phát bộ nhớ kề nhau (Contigous allocation)

Bảo vệ vùng nhớ

Bảo vệ vùng nhớ

I Thanh ghi tái định vị được sử dụng để bảo vệ vùng nhớ của các tiếntrình người dùng và HĐH (mã lệnh và dữ liệu)

I Thanh ghi tái định vị: chứa địa chỉ vật lý thấp nhất của tiến trình.

I Thanh ghi giới hạn: chứa phạm vi địa chỉ luận lý của tiến trình.

logical address

trap: addressing error no yes physicaladdress

relocation register

' (

limit register

Trang 21

Cấp phát bộ nhớ kề nhau (Contigous allocation)

Cấp phát đa phân khu động

Cấp Phát Đa Phân Khu Động

I Dùng cho hệ thống đa chương: mỗi t/trình được cấp phát 1 phân khu

I Cấp độ đa chương được xác định bởi số lượng phân khu

I K/thước mỗi phân khu có thể thay đổi tùy vào nhu cầu của t/trình

I Có thể nằm rãi rác trong bộ nhớ (do sự cấp phát, thu hồi bộ nhớ).

I Khi 1 t/trình xuất hiện, nó được phân 1 lỗ trống đủ chứa nó.

I Khi 1 t/trình kết thúc, vùng nhớ dành cho nó sẽ được thu hồi thành lỗ trống và kết hợp với lỗ trống liền kề nếu có.

I Hệ thống sẽ duy trì thông tin về các phân khu đã cấp phát và lỗ trống

Trang 22

Cấp phát bộ nhớ kề nhau (Contigous allocation)

Cấp phát đa phân khu động

Chiến Lược Cấp Phát

I Làm thế nào để đáp ứng một yêu cầu bộ nhớ kích thước n?

I First-fit : Cấp phát lỗ trống đủ lớn đầu tiên.

Trang 23

Cấp phát bộ nhớ kề nhau (Contigous allocation)

Cấp phát đa phân khu động

Sự Phân Mảnh

hợp tổng kích các lỗ trống lớn hơn như cầu nhưng chúng không nằmliên tục nên không thể cấp phát

I Khử phân mảnh ngoài: cô đặc lại bộ nhớ – sắp xếp lại bộ nhớ để gomcác lỗ trống lại

I chỉ thực hiện được khi việc tái định vị là động (thực hiện lúc thực thi).

I Một phương pháp khử phân mảnh ngoài là cấp phát không liên tục

Trang 24

Phân trang (Paging)

Cơ Chế Phân Trang (Paging)

I Cho phép không gian địa chỉ vật lý cấp phát cho 1 tiến trình có thể

I Bộ nhớ vật lý được chia thành các khối có kích thước cố định(2nbytes, thường từ 512K – 16MB), gọi là các khung(frame)

I Vùng nhớ luận lý của tiến trình cũng được chia thành các khối có kíchthước cố định (bằng kích thước frame), gọi là trang nhớ(page)

I Một chương trình cần n trang sẽ được cấp phát n khung.

I Có thể phát sinh phân mảnh trong.

I Hệ thống sẽ theo dõi các khung trống và thiết đặt một bảng trang

(table page) để ánh xạ địa chỉ luận lý sang địa chỉ vật lý

Trang 25

Phân trang (Paging)

Định địa chỉ trong phân trang

Định Địa Chỉ Trong Phân Trang

I Một địa chỉ luận lý bao gồm:

trang để tìm ra chỉ số khung tương ứng (địa chỉ nền) trong bộ nhớ vật lý.

I Độ dời trang (page offset – d ): được kết hợp với địa chỉ nền để định vị địa chỉ vật lý bộ nhớ.

I Nếu kích thước của vùng nhớ luận lý là 2m bytes và kích thước trang

là 2n bytes thì m-n bits cao được dùng để đánh số trang và n bits thấpđược dùng để gán độ dời trang

Trang 26

Phân trang (Paging)

Cấu trúc hệ thống dịch địa chỉ

Cấu Trúc Hệ Thống Dịch Địa Chỉ

physical memory

f

logical address

page table

physical address

p f

Trang 27

[CT107] Ch7 Quản lý bộ nhớ

Phân trang (Paging)

Mô hình phân trang

Mô Hình Phân Trang

page 0 page 1 page 2 page 3 logical

page table

frame number

1 4 3 7

0 1 2 3

0 1 2 3 4 5 6 7

Trang 28

a c e f g

a c e f g i k l m n p

0 2 4 6 8 10 12 14

5 6 1 2

Trang 29

Phân trang (Paging)

Ví dụ về phân trang

Ví Dụ Về Phân Trang - Quản Lý Khung Trống

free-frame list

14 13 18 20 15

13 14 15 16 17 18 19 20 21

page 0 page 1 page 2 page 3 new process

new-process page table

14 0 1 2 3

13 18 20

Trang 30

Phân trang (Paging)

Phân mảnh trong trong phân trang

Phân Mảnh Trong Trong Phân Trang

I Trang cuối cùng được cấp phát có thể không được sử dụng hết ⇒

I Ví dụ:

I Kích thước trang: 2.048 bytes.

I Kích thước tiến trình: 72.766 bytes.

I 35 trang + 1.086 bytes

I Cấp phát: 36 trang.

I Phân mảnh trong: 2.048 - 1.086 = 962 bytes

I Trường hợp phân mảnh xấu nhất = kích thước 1 trang - 1 bytes

Trang 31

Phân trang (Paging)

Cài đặt bảng trang

Cài Đặt Bảng Trang

I Mỗi tiến trình có một bảng trang.

I Thanh ghi bảng trang nền: trỏ đến bảng trang.

I Thanh ghi chiều dài bảng trang: chỉ định kích thước của bảng trang.

I Mỗi tác vụ truy cập bộ nhớcần 2 thao tác truy cập vùng nhớ:

I 1 thao tác truy xuất bảng trang, sử dụng p để lấy số khung.

I 1 thao tác truy xuất bộ nhớ vật lý, sử dụng d để tính đ/chỉ vật lý.

I Thường sử dụng cache phần cứng để tăng tốc độ các thao tác này như thanh ghi kết hợp (associative register) hoặc bộ đệm tìm kiếm phụ cho việc dịch địa chỉ (Translation Look-aside Buffer – TLBs ).

Trang 32

Phân trang (Paging)

Bộ nhớ kết hợp

Bộ Nhớ Kết Hợp – TLBs

I Là thanh ghi cực nhanh, chứa ánh xạgiữa trang và khung

I Có kích thước nhỏ: 64 – 1024 mục

I Được xem như là bộ đệm của bảng trang

I Cơ chế làm việc (ánh xạ hp, d i vào bộ nhớ vật lý):

I Nếu p nằm trong TLBs: lấy ngay được số frame.

I Ngược lại: truy xuất bảng trang để lấy số khung trang như bình thường Đồng thời, đưa ánh xạ trang–khung mới sử dụng vào TLBs.

Trang 33

Phân trang (Paging)

Phân trang với TLB

Phân Trang Với TLB

page table f

CPU

logical address

physical address

physical memory

p TLB miss

page number numberframe

TLB hit

TLB

Ngày đăng: 27/04/2016, 20:00

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w