kernel address space mappings with respect to virtual address space - a question based on text by Robert Love
In Linux Kernel Development (LKD) 3rd edition, chapter 12 under Zones, Robert Love says:
In particular, Linux has to deal with two shortcomings of hardware with respect to memory addressing:
Some hardware devices can perform DMA (direct memory access) to only certain
memory addresses.
Some architectures can physically addressing larger amounts of memory than they
can virtually address. Consequently, some memory is not permanently mapped into
the kernel address space.
My Questions:
- First is okay, what does he mean by 2?
- Does he mean to say: Some architectures can address larger amounts of physical memory than they can address virtual addresses?
- How's that possible? I thought virtual address space is larger than physical memory or at least (if any) equal to physical memory.
- Also, isn't it because VAS (virtual address space) is larger than physical memory, some memory is not permanently mapped into KAS (kernel address space).
But I'm guessing that only physical memory is mapped into KAS. Let me know what he means by point #2 above and what wrong assumption(s) I'm making here.
virtual-memory
add a comment |
In Linux Kernel Development (LKD) 3rd edition, chapter 12 under Zones, Robert Love says:
In particular, Linux has to deal with two shortcomings of hardware with respect to memory addressing:
Some hardware devices can perform DMA (direct memory access) to only certain
memory addresses.
Some architectures can physically addressing larger amounts of memory than they
can virtually address. Consequently, some memory is not permanently mapped into
the kernel address space.
My Questions:
- First is okay, what does he mean by 2?
- Does he mean to say: Some architectures can address larger amounts of physical memory than they can address virtual addresses?
- How's that possible? I thought virtual address space is larger than physical memory or at least (if any) equal to physical memory.
- Also, isn't it because VAS (virtual address space) is larger than physical memory, some memory is not permanently mapped into KAS (kernel address space).
But I'm guessing that only physical memory is mapped into KAS. Let me know what he means by point #2 above and what wrong assumption(s) I'm making here.
virtual-memory
add a comment |
In Linux Kernel Development (LKD) 3rd edition, chapter 12 under Zones, Robert Love says:
In particular, Linux has to deal with two shortcomings of hardware with respect to memory addressing:
Some hardware devices can perform DMA (direct memory access) to only certain
memory addresses.
Some architectures can physically addressing larger amounts of memory than they
can virtually address. Consequently, some memory is not permanently mapped into
the kernel address space.
My Questions:
- First is okay, what does he mean by 2?
- Does he mean to say: Some architectures can address larger amounts of physical memory than they can address virtual addresses?
- How's that possible? I thought virtual address space is larger than physical memory or at least (if any) equal to physical memory.
- Also, isn't it because VAS (virtual address space) is larger than physical memory, some memory is not permanently mapped into KAS (kernel address space).
But I'm guessing that only physical memory is mapped into KAS. Let me know what he means by point #2 above and what wrong assumption(s) I'm making here.
virtual-memory
In Linux Kernel Development (LKD) 3rd edition, chapter 12 under Zones, Robert Love says:
In particular, Linux has to deal with two shortcomings of hardware with respect to memory addressing:
Some hardware devices can perform DMA (direct memory access) to only certain
memory addresses.
Some architectures can physically addressing larger amounts of memory than they
can virtually address. Consequently, some memory is not permanently mapped into
the kernel address space.
My Questions:
- First is okay, what does he mean by 2?
- Does he mean to say: Some architectures can address larger amounts of physical memory than they can address virtual addresses?
- How's that possible? I thought virtual address space is larger than physical memory or at least (if any) equal to physical memory.
- Also, isn't it because VAS (virtual address space) is larger than physical memory, some memory is not permanently mapped into KAS (kernel address space).
But I'm guessing that only physical memory is mapped into KAS. Let me know what he means by point #2 above and what wrong assumption(s) I'm making here.
virtual-memory
virtual-memory
edited 39 mins ago
Christophe Strobbe
177112
177112
asked Oct 30 '13 at 17:39
AnubhavAnubhav
1407
1407
add a comment |
add a comment |
1 Answer
1
active
oldest
votes
Physical Address Extension (PAE) sounds exactly like what he's referring to.
A 32-bit CPU can only map ~4gb of memory, even if the system has more. But with PAE, you can use >4gb, though only 4gb of it is mapped at any one time (a single process will never be able to use >4gb).
So basically when the kernel changes the actively running process, it re-maps the virtual memory to the physical memory which that process is currently using.
add a comment |
Your Answer
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "106"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: false,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: null,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2funix.stackexchange.com%2fquestions%2f98225%2fkernel-address-space-mappings-with-respect-to-virtual-address-space-a-question%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
Physical Address Extension (PAE) sounds exactly like what he's referring to.
A 32-bit CPU can only map ~4gb of memory, even if the system has more. But with PAE, you can use >4gb, though only 4gb of it is mapped at any one time (a single process will never be able to use >4gb).
So basically when the kernel changes the actively running process, it re-maps the virtual memory to the physical memory which that process is currently using.
add a comment |
Physical Address Extension (PAE) sounds exactly like what he's referring to.
A 32-bit CPU can only map ~4gb of memory, even if the system has more. But with PAE, you can use >4gb, though only 4gb of it is mapped at any one time (a single process will never be able to use >4gb).
So basically when the kernel changes the actively running process, it re-maps the virtual memory to the physical memory which that process is currently using.
add a comment |
Physical Address Extension (PAE) sounds exactly like what he's referring to.
A 32-bit CPU can only map ~4gb of memory, even if the system has more. But with PAE, you can use >4gb, though only 4gb of it is mapped at any one time (a single process will never be able to use >4gb).
So basically when the kernel changes the actively running process, it re-maps the virtual memory to the physical memory which that process is currently using.
Physical Address Extension (PAE) sounds exactly like what he's referring to.
A 32-bit CPU can only map ~4gb of memory, even if the system has more. But with PAE, you can use >4gb, though only 4gb of it is mapped at any one time (a single process will never be able to use >4gb).
So basically when the kernel changes the actively running process, it re-maps the virtual memory to the physical memory which that process is currently using.
answered Oct 30 '13 at 17:48
PatrickPatrick
50.3k11127179
50.3k11127179
add a comment |
add a comment |
Thanks for contributing an answer to Unix & Linux Stack Exchange!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2funix.stackexchange.com%2fquestions%2f98225%2fkernel-address-space-mappings-with-respect-to-virtual-address-space-a-question%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown