Tải bản đầy đủ (.pptx) (30 trang)

Bài tiểu luận về bộ nhớ ảo

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (718.19 KB, 30 trang )

COMPUTER ORGANISATION
(TỔ CHỨC MÁY TÍNH)

Virtual memory

Sinh viên: Thái Trung Tín
Mã sinh viên: 51503315
Lớp : 15050301
Khóa: 19


Mục Lục

1.

Bộ nhớ ảo

2.

Bảng trang

3.

Translation Lookaside Buffer – Bộ đệm chuyển đổi

4.

Bảo vệ bộ nhớ

5.


Vấn đề đặt ra


Ký hiệu viết tắt



TLB : Translation Lookaside Buffer



PTE : Page Table Entry



MMU : Memory Management Unit



LRU: Least-recently using



OS: Operating System


Virtual Memory

Virtual memory


1.Định nghĩa
Bộ nhớ ảo (Virtual Memory) là bộ nhớ hệ thống được tạo ra từ hệ điều hành và nằm trong ổ cứng. Nó sẽ liên kết địa chỉ ô nhớ được dùng bởi phần
mềm, gọi là địa chỉ ảo, tới địa chỉ vật lý trong bộ nhớ máy tính.

Hình 1.1: Bộ nhớ ảo


Virtual Memory

2. Đặc điểm



“Sử dụng bộ nhớ chính như “cache” (bộ đệm) cho bộ nhớ thứ cấp: ”

– Trích: Mr Aaron Tan Tuck Choy, Slides School of Computing, National University of Singapore.









An toàn trong việc chia sẻ thông tin và đạt hiệu quả cao giữa bộ nhớ và các chương trình.
Giúp máy tính chạy nhanh giống bộ đệm.
Cho phép chạy các chương trình có kích thước lớn hơn bộ nhớ vật lý nhờ sự tách biệt bộ nhớ ảo và bộ nhớ vật lý.
Đơn giản hóa việc nạp chương trình.


Trong thời gian chạy địa chỉ ảo được dịch thành địa chỉ vật lý.
Mỗi chương trình sử dụng một không gian địa chỉ riêng biệt – Không gian địa chỉ ảo.
Không gian địa chỉ ảo của chương trình được chia thành các trang (kích thước cố định) hoặc các đoạn (kích thước thay đổi).


Virtual Memory

3. Phân loại



Bộ nhớ ảo phân trang



Bộ nhớ ảo phân đoạn



Bộ nhớ ảo phân đoạn có phân trang

4. Mục tiêu thiết lập bộ nhớ ảo



Không cần quan tâm đến bộ nhớ vật lý



“Mở rộng” bộ nhớ vật lý




Tận dụng bộ nhớ phụ trong việc xử lý tiến trình


Virtual Memory

5. Cơ chế bộ nhớ ảo
Không gian bộ nhớ riêng sẽ chia nhỏ thành các trang nhớ có kích thước là 4KB (tương ứng địa chỉ offset từ 0 -> 4095), mỗi trang
nhớ sẽ được ánh xạ nhưng không nhất thiết toàn bộ chúng phải nằm trên bộ nhớ.
Khi truy xuất nếu trang nhớ đã nằm trong bộ nhớ chính thì địa chỉ ảo sẽ được ánh xạ lên bộ nhớ chính còn nếu không thì sẽ sinh ra
hiện tượng lỗi trang ,khối MMU sẽ báo cho hệ diều hành tiến hành nạp trang từ bộ nhớ ngoài và thực hiện lại lệnh trước đó.

Hình 1.2: Cơ chế bộ nhớ ảo

Video về dịch địa chỉ


Virtual Memory

6.Công thức chuyển đổi địa chỉ ảo sang địa chỉ vật lý:

Địa chỉ vật lý = địa chỉ ảo + địa chỉ cơ sở của khung trang

Hình 1.4: TLB và Cache trong cơ chế dịch địa chỉ

Truy cập bộ nhớ (bộ đệm) rất tốn kém (mỗi lần truy cập thực chất là hai lần
Hình 1.3: Dịch địa chỉ
Nguồn : Mr.Aaron Tan Tuck Choy, slides School of

Computing, National University of Singapore

truy cập).


Virtual Memory

Lỗi trang (Fault Page)

Truy xuất đến một trang bất hợp lệ sẽ làm phát sinh một lỗi trang. Khi dò tìm trong bảng trang để lấy các thông tin cần thiết cho việc chuyển đổi địa
chỉ , nếu nhận thấy trang được yêu cầu đề xuất là bất hợp lệ, cơ chế phần cứng sẽ phát sinh một ngắt để báo cho hệ điều hành. Hệ điều hành sẽ xử lý lỗi
trang như sau:
B1:Kiểm duyệt truy xuất trang:



Nếu không hợp lệ -> sinh ra lỗi trang



Nếu hợp lệ, thực hiện bước 2

B2: Tìm trên đĩa vị trí trang muốn xuất
B3: Tìm khung trang trống



Nếu tìm thấy, sang bước 4, ngược lại chọn một khung trang
nạn nhân và chuyển khung trang nạn nhân ra bộ nhớ phụ,
câp nhật bảng trang rồi sang bước 4.


B4 :Cập nhật bảng trang khi trang muốn xuất đã được đưa vào bộ nhớ chính
B5: Lặp lại quá trình.

Hình 1.5: Sơ đồ truy xuất khi gặp trang lỗi


Bảng trang

Bảng trang (page tales)

Không gian địa chỉ ảo chia thành nhiều trang nhớ. Bảng trang là nơi lưu trữ các trang , địa chỉ thông tin, cũng là nơi biên dịch địa chỉ ảo, sự biên dịch nào
được quản lý bằng phần cứng gọi là “đơn vị quản lý vùng nhớ” (Memory Managent Unit - MMU).

Hình 1.6: MMU trong bộ nhớ ảo


Bảng trang

Khi lập trình, các lệnh truy xuất dùng lượng không gian lớn. Không gian này
được gọi là luận lý (ảo). Nếu ít truy xuất trong không gian này thì dù RAM nhỏ hơn
nhưng hệ điều hành vẫn chạy tốt. Để quản lý việc nạp và ghi ra bộ nhớ ảo, hệ điều hành
chia bộ nhớ ảo thành các trang ảo có kích thước bằng 2i (256, 512, 1K, 2K, 4K, 8K, ...).
Bộ nhớ RAM cũng được chia thành nhiều trang thật có kích thước thật bằng kích thước
ảo.
Nếu trang đã hiện diện sẵn thì cổng vào của “bảng trang” sẽ chứa địa chỉ của
vùng nhớ thật
Còn nếu trang không hiện diện sẵn thì sẽ sinh ra hiện tượng giám sát trang

Hình 1.7: Bảng trang với một số trang không nằm trong bộ nhớ



Bảng trang

Giám sát trang


Nếu hiện tượng trang lỗi xuất hiện từ phần cứng, hệ thống giám sát trang sẽ truy cập vào ổ lưu trữ phụ, trả về
một trang có lưu địa chỉ ảo nơi trang lỗi xuất hiện, sau đó cập nhật các trang để phản chiếu vị trí địa lí của bộ
nhớ ảo và báo bộ biên dịch thực hiện lại yêu cầu.
(Trích: Wikipedia-Bộ nhớ ảo)



Nếu tràn bộ nhớ, “giám sát trang” bắt buộc phải giải phóng một trang trong bộ nhớ chính để lưu giữ một trang
thay thế. Least-recently using (LRU - ít sử dụng nhất”) để loại bỏ trang ít sử dụng.


Bảng trang

Trang ghim

Các tên gọi khác : trang khóa, trang cố định hay trang kết nối.
Hệ điều hành có các khu vực bộ nhớ được ghim (không bao giờ trao đổi để lưu trữ thứ cấp).
(Trích: Wikipedia-Bộ nhớ ảo)


Bảng trang

Thrashing





Thrashing làm lãng phí thời gian khi chuyển trang đến và đi đến nơi sao lưu  làm chậm công việc có ích.
Nguyên nhân: Do tiến trình không có đủ trang, hệ điều hành tăng mức độ đa chương trình.
Thời điểm: Tỷ lệ lỗi trang cao hoặc tràn bộ nhớ

Hình 1.9: Thrashing


Cách khắc phục thrashing
1.
2.
3.
4.

sử dụng thuật toán thay thế trang cục bộ hoặc thay thế trang ưu tiên để hạn chế thrashing
Sử dụng mô hình cục bộ: mô hình working-set ( />Thêm bộ nhớ thực là cách đơn giản nhất
Giảm số lượng hoạt động trên hệ thống


Bảng trang

Truyền dịch địa chỉ trong page table : thay thế và ghi

1.Thay thế
Khi xảy ra một lỗi trang, nếu không có một khung trang nào trống, hệ điều hành cần thực hiện
công việc thay thế trang – chọn một trang đang nằm trong bộ nhớ mà không được sử dụng tại thời
điểm hiện tại và chuyển nó ra không gian trên đĩa để giải phóng một khung trang dành chỗ nạp trang

cần truy xuất vào bộ nhớ.


Bảng trang

- Nếu có lỗi trang thì phải thực hiện chuyển một trang ra bộ nhớ phụ và nạp một trang khác vào bộ
nhớ chính. Bit cập nhật (dirty bit) dung để giảm bớt số lần chuyển trang.
- Bit này nằm ở valid để kiểm tra trang có được cập nhật hay không :

Hình 1.10: Truyền dịch trong bảng trang
Nguồn : Mr.Aaron Tan Tuck Choy, slides School of Computing, National
University of Singapore



Giá trị 1: trang đã được cập nhật và lưu trên đĩa



Giá trị 0: trang không bị thay đổi


Bảng trang

2.Ghi

-

Ghi xuyên : Thông tin sẽ được ghi ở hai mức bộ kế liền nhau
Ghi sau: Thông tin chỉ được ghi ở mức bộ nhớ hiện tại





Ưu điểm

Ghi xuyên: đơn giản, dễ triển khai.
Ghi sau: ghi được cùng tốc độ của bộ đệm


Translation Lookaside Buffer

Translation lookaside Buffer (TLB)
1.

Định nghĩa
- Do bảng trang nằm trên bộ nhớ chính nên khi truy xuất bảng trang thì cần một khoảng

thời gian nhất định để truy xuất đến bộ nhớ chính.
-TLB – bộ đệm chuyển đổi làm nhiệm vụ tăng tốc quá trình tìm kiếm bảng trang trong bộ nhớ
chính.
-TLB thực chất là một cache, làm tăng tốc độ truy cập bộ nhớ chính.
- TLB biên dịch địa chỉ ảo sang địa chỉ thật, TLB lưu trữ song song các cặp địa chỉ
ảo/thực, xử lý các trang lỗi trên đĩa thay vì bộ nhớ chính

Một số điều về TLB


Translation Lookaside Buffer


Cơ chế của translation lookaside buffer

Khi quá trình truyền tải dữ liệu từ địa chỉ ảo đến địa chỉ vật lý được yêu cầu, TLB sẽ thực hiện:
-Tìm trang có offset (chữ d trên hình) từ địa chỉ ảo
-Tìm trang ảo trên TLB
-Nếu thấy thì điền offset vào khung trang vật lý và truy xuất vùng nhớ
-Nếu không thấy thì qua bảng trang tìm kiếm trên bộ nhớ chính, nếu trang không tồn tại trên bộ nhớ chính thì tạo
trang lỗi và khởi động lại khi trang đó được tìm thấy.

Hình 1.11: Sự hoạt động của TLB


Translation Lookaside Buffer

Lỗi TLB



o
o

o
o

Trang có trên bộ nhớ
Nạp PTE và thử lại
Có thể xử lý bằng cả phần cứng lẫn phần mềm:
Nếu xử lý bằng phần cứng: gây phức tạp cho các cấu trúc bảng trang.
Nếu xử lý bằng phần mềm: đưa ra một ngoại lệ với một các xử lý tích cực.
Trang không có trên bộ nhớ

Cập nhật bảng trang
Khởi tạo lại các hướng dẫn bị đứt gãy.

Trích : Mr.Aaron Tan Tuck Choy, slides School of Computing, National University of Singapore


Translation Lookaside Buffer

Xử lý lỗi TLB



Lỗi TLB sẽ hiển thị khi trang hiện diện nhưng PTE không có trong TLB hoặc
trang không hiện diện



Phải xác nhận lỗi TLB trước khi ghi đè địa chỉ



Xử lý bằng cách sao chép PTE từ bộ nhớ sang TLB



Sau đó khởi tạo lại đường dẫn



Nếu trang không có thì lỗi trang sẽ xảy ra (xử lý lỗi trang)


Trích : Mr.Aaron Tan Tuck Choy, slides School of Computing, National University
of Singapore

Hình 1.12: Using the TLB
Nguồn: Computer Organisation and Design


Translation Lookaside Buffer

Xử lý lỗi trang








Sử dụng địa chỉ ảo để tìm PTE
Định vị trang trên đĩa
Chọn trang để thay thế
Đọc trang vào bộ nhớ và cập nhật bảng trang
Tạo nên quá trình khả thi lần nữa
Khởi tạo lại từ lỗi đường dẫn

Trích : Mr.Aaron Tan Tuck Choy, slides School of Computing, National University of Singapore

Hình 1.13: Xử lý lỗi trang



Translation Lookaside Buffer

SỰ tương tác giữa cache và TLB



Dữ liệu sẽ không thể có mặt ở cache nếu như không có mặt trong bộ nhớ chính .



Khi OS (Operating System) cho rằng việc lưu trữ một trang trong bộ nhớ chính không còn cần thiết, OS sẽ tiến hành di
chuyển bộ dữ liệu của trang đó lên ổ đĩa sau đó cập nhật bảng trang và TLB để sao cho mỗi khi có sự truy xuất vào các
trang đó, thì sẽ sinh ra một sự kiện lỗi trang.

Hình 1.14: TLB và Cache
Nguồn : Mr.Aaron Tan Tuck Choy, slides School of
Computing, National University of Singapore


Translation Lookaside Buffer

-

Bước 1: lấy so sánh thông tin tag

-

Bước 2: tìm ra địa chỉ trang vật lý


-

Bước 3, 4: kết hợp địa chỉ trang vật lý và địa chỉ offset của byte cần

quan tâm sẽ cho ra địa chỉ vật lý hoàn chỉnh.


×