You Are Here : Home » , , » Virtual Memory 2: Ba vấn đề của Memory

Virtual Memory 2: Ba vấn đề của Memory

Ba vấn đề của Memory (RAM) khiến chúng ta nghĩ đến việc sử dụng Virtual Memory

1. Chúng ta không có đủ RAM


Với hệ điều hành 32 bit, mỗi process chạy sẽ được cấp cho một vùng nhớ 32 bit địa chỉ. Tức là chương trình do chúng ta tạo ra có thể truy cập bất cứ địa chỉ nào từ 0x00000000 tới 0xFFFFFFFF (4GB)

Nhưng nếu máy của chúng ta không có đủ RAM (< 4GB) thì sao nhỉ?

Giờ thì hầu hết các máy tính để bàn hay laptop đều có đủ 4 GB bộ nhớ RAM, thậm chí nhiều hơn. Nhưng thử nghĩ khoảng 5 năm về trước con số này chỉ là 1 GB hay thậm chí 512MB.

Ngay cả bây giờ các thiết bị nhúng (embedded system) cũng không phải lúc nào cũng đủ 4GB RAM.

Nếu các process truy cập trực tiếp tới memory (RAM) thì khả năng cao sẽ có những vùng nhớ không có để mà truy cập. Máy tính sẽ bị crash nếu bạn không chạy ra cửa hàng mua thêm RAM cho đủ 4GB

2. Sử dụng memory không hiệu quả

Giả sử chúng ta có 3 chương trình: A, B, C chạy trên một máy tính có 4GB RAM.
Chương trình A cần 1 GB RAM để thực thi
Chương trình B cần 2 GB RAM
Chương trình C cũng cần 2 GB RAM
 
Hệ thống chạy và chương trình A, B được thực thi trước và chiếm 3GB RAM bộ nhớ, RAM chỉ còn dư 1 GB. Vậy là chương trình C không thể nào được cấp phát đủ 2GB bộ nhớ cần thiết để thực thi. Chúng ta lãng phí 1 GB RAM

Chúng ta sẽ free vùng nhớ của chương trình A. Vậy RAM đang free tổng cộng là 2 GB nhưng 1 GB ở trên và 1 GB ở dưới. 2GB vùng nhớ không liên tiếp nên chương trình C vẫn không thể được thực thi.

Hiện tượng này được gọi là "phân mảnh bộ nhớ" (memory fragmentation)


3. Làm thế nào để bảo vệ dữ liệu giữa các process

Mỗi process có thể truy cập được tối đa là toàn bộ 4GB bộ nhớ
Nếu hai process muốn truy cập vào cùng một địa chỉ thì sẽ như thế nào?

Ví dụ:
  • Process A muốn ghi giá trị 1111 vào vùng nhớ  số 1024
  • Process B khi thực thi cũng muốn ghi vào vùng nhớ số 1024 nhưng giá trị 2222
  • Vậy là 2 process đã phá hoại dữ liệu lẫn nhau, dữ liệu ghi trên memory đã không được bảo vệ

Vậy làm thế nào để giải quyết được 3 vấn đề trên?
  • Chúng ta cần một khái niệm mới là virtual memory
  • Hệ điều hành sẽ quản lý việc map giữa virtual memory với physical memory (RAM, DISK)
  • Mỗi process sẽ có một vùng virtual memory riêng biệt, được map tới physical memory riêng biệt.
  • Việc mapping giữa virtual memory và physical memory sẽ mang đến cho chúng ta một cách sử dụng memory một cách hiệu quả

Không có nhận xét nào:

Leave a Reply

Welcome to SpicyTweaks.

Copyright © Embedded System Study. Designed by Momizat Team. Powered to Blogger by SpicyTweaks.

Scroll to top