2013-03-26 37 views
11

Tôi đang học các loại quản lý bộ nhớ khác nhau. Tôi không hiểu điểm có một bit bù đắp trong một địa chỉ ảo. Và tại sao kích thước trang được tạo thành từ 2?Số trang và bù đắp

Sự nhầm lẫn chính của tôi là: cho tôi ví dụ về khoản bù được sử dụng trong hướng dẫn truy cập vào một chương trình bổ trợ ảo nào đó?

Sự nhầm lẫn thứ hai của tôi là: Câu lệnh thông thường là nếu kích thước của địa chỉ logic là 2^m và kích thước trang là 2^n, thì các bit m-n bậc cao của địa chỉ logic chỉ định số trang.

Cảm ơn trước

Trả lời

22

Tôi nghĩ nhầm lẫn tiểu học và trung của bạn là do nhầm lẫn chung về đề tài này :)

Hãy để tôi nói chuyện xung quanh này một chút và hy vọng tôi có thể giúp đỡ một số. Đầu tiên, một sự tương tự - hãy tưởng tượng rằng bạn đang cố gắng tìm một ngôi nhà trong một thành phố. Hãy tưởng tượng rằng mỗi ngôi nhà được đưa ra một số duy nhất - bạn có thể tưởng tượng rằng số lượng nhà sẽ sớm trở nên rất lớn và khó hiểu. Bây giờ hãy tưởng tượng rằng bạn giới thiệu khái niệm đường phố - số nhà bây giờ trở nên dễ quản lý hơn một chút khi bạn nhóm chúng lại thành những đoạn đẹp. Vì vậy: Đường phố = Số trang, số nhà = địa chỉ bù đắp.

Toàn bộ các điểm có các trang bộ nhớ ảo là cho phép máy tính lưu trữ bộ nhớ thành các phần có thể quản lý được và không lãng phí quá nhiều. Khắc nó thành các khối (trang) cho phép kiểm soát chi tiết quyền truy cập, phân trang và những điều tốt đẹp khác như thế. Các trang nhỏ hơn của bạn, bộ nhớ ít hơn bạn sẽ lãng phí (nếu quá trình A đòi hỏi 32k bộ nhớ, và kích thước trang của bạn là 64k, bạn sẽ kết thúc với một số không được sử dụng), nhưng cao hơn trên hệ thống.

Vì lý do kích thước trang là quyền hạn của 2, đây không phải là không lãng phí dung lượng trong địa chỉ. Khi máy tính dựa trên nhị phân (tại thời điểm này), mọi thứ có xu hướng sôi xuống đến 2. Hãy tưởng tượng nếu bạn có thứ dựa trên các yếu tố của 10. 10 trong nhị phân là 1010 - bạn phải sử dụng 4 bit để giữ nó , vậy tại sao không đi cho đầy đủ các giá trị bạn có thể nhận được trong số 4 bit: 0000 - 1111 (0 đến 15 = 16 giá trị).

Xin lỗi tôi đã suy nghĩ một chút - tôi hy vọng điều này sẽ giúp bạn đi đúng hướng!

+0

Cảm ơn GHC, nhưng những gì tôi muốn xem là làm thế nào để một hướng dẫn lắp ráp nhìn vào bù đắp. do đó, ld r2,0x0005. Cho rằng mỗi địa chỉ là kích thước từ, và mỗi kích thước trang là 4 byte. Vì vậy, bù đắp sẽ là 1 byte trong trường hợp này? . – user1493786

+2

Ngoài ra tôi đã làm một chút nghiên cứu trước khi trả lời ur, lý do tại sao chúng tôi sử dụng sức mạnh của 2, đó là khi chúng tôi chia địa chỉ ảo theo kích thước trang, u sẽ nhận được số pagennumber và offset, như chỉ các bit m hàng đầu của địa chỉ sẽ là số trang, và sau đó n bit sẽ là offset.Whileas nếu nó không phải là một sức mạnh của hai, chia địa chỉ ảo để xác định vị trí số trang và bù đắp cần% và/chức năng, mà thêm một chi phí cho hệ thống. – user1493786

+0

Virtual to physical address translation thông qua các bảng trang có một lợi ích khác: nó giảm bớt lãng phí bộ nhớ vật lý do phân mảnh không gian địa chỉ ảo. –

-1

Tôi có cùng một sự nhầm lẫn nhưng nếu tôi đã hiểu nó ngay sau đó nó giống như sau: sức mạnh của 2 trường hợp là hơi bên cạnh sự hiểu biết chung về chủ đề. Nó giống như một quy ước, vì chúng ta đang xử lý các giá trị nhị phân và cần sự phân chia thích hợp giữa các bit mà sức mạnh của 2 phù hợp một cách thích hợp.

Ví dụ: nếu một PGE có 64k từ và có 4 từ mỗi khung sau đó 2^x = 64 -> x = 6

Có nghĩa là mỗi frame có thể có một địa chỉ vật lý cấu thành 6 giá trị nhị phân Tức là 0 hoặc 1 trong đó 4 sẽ đại diện cho số khung. Và cuối cùng biểu thị vị trí chính xác của từ trong số 4.

Lưu ý rằng ở đây mỗi khung không thể có 5 hoặc bất kỳ giá trị nào khác hoặc quy ước được gọi là không thành công.

+0

Bạn được yêu cầu viết tiếng Anh thích hợp trên SO. –

Các vấn đề liên quan