Monday, April 25, 2011

Bạn có chắc đã hiểu đúng về bộ nhớ?

Trước khi bắt đầu, tôi muốn bạn hiểu rõ về hai khái niệm Bộ nhớ vật lý (Physical memory) và Bộ nhớ ảo (Virtual memory).

Những thiết bị vật lý có khả năng lưu trữ giữ liệu giống như USB, DVD hay ổ cứng HDD, SSD của máy tính cá nhân đều được gọi là bộ nhớ vật lý[1] .
Bộ nhớ ảo là cách mà hệ điều hành nhìn nhận bộ nhớ vật lý, ví dụ máy tính của bạn chỉ có một ổ cứng HDD nhưng hệ điều hành lại hiển thị có 2 ổ cứng là ổ C và ổ D, C và D ở đây chính là bộ nhớ ảo.

Trong lập trình, khi nhắc đến bộ nhớ có nghĩa là ta đang muốn nói tới bộ nhớ ảo, nó bộ nhớ đơn giản là một danh sách liệt kê, mỗi phần tử trong danh sách này được gọi là một ô nhớ. Việc truy xuất giá trị của nó được thực hiện thông qua địa chỉ của chính ô nhớ đó.

Một ô nhớ đại diện cho một nhóm[2] các bít nhớ liên tiếp nhau trong bộ nhớ vật lý. Giá trị của ô nhớ chính là dãy số nhị phân do các bít nhớ xếp nối tiếp với nhau tạo thành. Để phân biệt các ô nhớ với nhau, hệ điều hành cấp cho mỗi ô nhớ một Địa chỉ, để thông qua đó có thể truy xuất để ghi và đọc dữ liệu của ô nhớ đó.

Bộ nhớ ảo sẽ hỗ trợ lập trình viên để sử dụng bộ nhớ vật lý. Việc quản lý các ô nhớ và truy xuất chúng bằng một địa chỉ cụ thể sẽ dễ dàng hơn rất nhiều so với quản lý từng bít nhớ và phải truy xuất bằng cặp địa chỉ hàng và cột.
Hình 1: Quản lý bộ nhớ
Lập trình viên sẽ không cần quan tâm đến cấu trúc phức tạp của các thiết bị nhớ vật lý, họ chỉ quản lý chúng qua một danh sách các ô nhớ và địa chỉ như Hình 2.

Chú ý: khi một ô nhớ chưa được gán giá trị thì không có nghĩa là giá trị hiện hành của ô nhớ là 0 mà nó sẽ có một giá trị bất kỳ phụ thuộc vào trạng thái của mỗi bít nhớ trong ô nhớ đó.

--------------------------------------------------------------------------------------------------------------------------
[1]:Ngày nay, một bộ nhớ vật lý được tạo ra từ rất rấy nhiều công tắc điện tử (Transistor), và tất nhiên mỗi ông tác thì chỉ có hai trọng thái là ON và OFF.
Các bít nhớ được sắp xếp theo cấu trúc ma trận hàng[3]8 cột như Hình 2 (a), để phân biệt các bit nhớ với nhau người ta dựa vào tọa độ hàng và cột của bít nhớ đó, tọa độ đó được gọi là địa chỉ của bít nhớ.
Hình 2: (a) Cấu trúc bộ nhớ vật lý 8 bit, (b) Hình ảnh của bộ nhớ vật lý hiện đại
[2]: Giá trị của n tùy thuộc vào dung lượng của bộ nhớ vật lý, dung lượng càng lớn thì n càng lớn.
mỗi hàng sẽ có 8 cột ứng với một byte nhớ.
[3]: Độ lớn của nhóm bít phục thuộc vào độ rộng dữ liệu của hệ thống.
VD1: Máy tính cá nhân sử dụng hệ điều hành 32 bít thì nhóm đó sẽ gồm 4 hàng liên tiếp nhau trong bộ nhớ vậy lý (Hình 1 a).
VD2: Nếu hệ thống vi điều khiển 8 bít thì mỗi nhóm sẽ là 1 hàng trong bộ nhớ vật lý (Hình 2 a).

No comments:

Post a Comment