Where is page table stored in Linux?
Clash Royale CLAN TAG#URR8PPP
up vote
0
down vote
favorite
I want know where Linux stores page tables. Is it in kernel virtual memory?
It seems like this has to do with virtual memory system. but I'm new to it, so if I'm in the wrong direction please let me know. And in order to answer the question myself I read some lines from a book says:
(23.2 page 8)
... Linux virtual address space consists of user portion and kernel portion...
... the kernel portion is the same across processes.
So the address space provided by kernel is in a sense a space for processes to share something? So if the page tables are put in kernel virtual memory would this mean processes can share their page tables?
The book I read: http://www.ostep.org
linux linux-kernel virtual-memory
add a comment |
up vote
0
down vote
favorite
I want know where Linux stores page tables. Is it in kernel virtual memory?
It seems like this has to do with virtual memory system. but I'm new to it, so if I'm in the wrong direction please let me know. And in order to answer the question myself I read some lines from a book says:
(23.2 page 8)
... Linux virtual address space consists of user portion and kernel portion...
... the kernel portion is the same across processes.
So the address space provided by kernel is in a sense a space for processes to share something? So if the page tables are put in kernel virtual memory would this mean processes can share their page tables?
The book I read: http://www.ostep.org
linux linux-kernel virtual-memory
add a comment |
up vote
0
down vote
favorite
up vote
0
down vote
favorite
I want know where Linux stores page tables. Is it in kernel virtual memory?
It seems like this has to do with virtual memory system. but I'm new to it, so if I'm in the wrong direction please let me know. And in order to answer the question myself I read some lines from a book says:
(23.2 page 8)
... Linux virtual address space consists of user portion and kernel portion...
... the kernel portion is the same across processes.
So the address space provided by kernel is in a sense a space for processes to share something? So if the page tables are put in kernel virtual memory would this mean processes can share their page tables?
The book I read: http://www.ostep.org
linux linux-kernel virtual-memory
I want know where Linux stores page tables. Is it in kernel virtual memory?
It seems like this has to do with virtual memory system. but I'm new to it, so if I'm in the wrong direction please let me know. And in order to answer the question myself I read some lines from a book says:
(23.2 page 8)
... Linux virtual address space consists of user portion and kernel portion...
... the kernel portion is the same across processes.
So the address space provided by kernel is in a sense a space for processes to share something? So if the page tables are put in kernel virtual memory would this mean processes can share their page tables?
The book I read: http://www.ostep.org
linux linux-kernel virtual-memory
linux linux-kernel virtual-memory
asked Dec 10 at 5:09
ptr_user7813604
1186
1186
add a comment |
add a comment |
1 Answer
1
active
oldest
votes
up vote
2
down vote
accepted
Yes, the page tables are stored in the kernel address space. Each process has its own page table structure, which is set up so that the kernel portion of the address space is shared between processes. The kernel address space is not accessible from user space, however. The user space code communicates with the kernel in a controlled manner using system calls. After a successful system call the processor enters a privileged state in which the kernel address space is available.
Can I say that: Each process has an address space, and its page table is stored in the kernel portion of this address space. And all kernel portion of each process are actually maps to the same address space in kernel, and sharing happens at there. Correct?
– ptr_user7813604
Dec 10 at 6:35
1
Yes, all processes share the kernel's address space, but only kernel code can access that part of memory. The kernel is free to do what it wants with it, but the memory is not shared between processes in the sense that user level code in one process could freely write to it and another read it. The kernel can set up memory pages to be shared between processes, but then non-kernel addresses are used, since kernel addresses are always off limit for non-kernel code.
– Johan Myréen
Dec 10 at 6:46
Thanks for your kindness and time, now I understand it! Since my question is ask about Linux, but can I take this as a general understand for other OS? (Or it's not recommend?)
– ptr_user7813604
Dec 10 at 7:18
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%2f487052%2fwhere-is-page-table-stored-in-linux%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
up vote
2
down vote
accepted
Yes, the page tables are stored in the kernel address space. Each process has its own page table structure, which is set up so that the kernel portion of the address space is shared between processes. The kernel address space is not accessible from user space, however. The user space code communicates with the kernel in a controlled manner using system calls. After a successful system call the processor enters a privileged state in which the kernel address space is available.
Can I say that: Each process has an address space, and its page table is stored in the kernel portion of this address space. And all kernel portion of each process are actually maps to the same address space in kernel, and sharing happens at there. Correct?
– ptr_user7813604
Dec 10 at 6:35
1
Yes, all processes share the kernel's address space, but only kernel code can access that part of memory. The kernel is free to do what it wants with it, but the memory is not shared between processes in the sense that user level code in one process could freely write to it and another read it. The kernel can set up memory pages to be shared between processes, but then non-kernel addresses are used, since kernel addresses are always off limit for non-kernel code.
– Johan Myréen
Dec 10 at 6:46
Thanks for your kindness and time, now I understand it! Since my question is ask about Linux, but can I take this as a general understand for other OS? (Or it's not recommend?)
– ptr_user7813604
Dec 10 at 7:18
add a comment |
up vote
2
down vote
accepted
Yes, the page tables are stored in the kernel address space. Each process has its own page table structure, which is set up so that the kernel portion of the address space is shared between processes. The kernel address space is not accessible from user space, however. The user space code communicates with the kernel in a controlled manner using system calls. After a successful system call the processor enters a privileged state in which the kernel address space is available.
Can I say that: Each process has an address space, and its page table is stored in the kernel portion of this address space. And all kernel portion of each process are actually maps to the same address space in kernel, and sharing happens at there. Correct?
– ptr_user7813604
Dec 10 at 6:35
1
Yes, all processes share the kernel's address space, but only kernel code can access that part of memory. The kernel is free to do what it wants with it, but the memory is not shared between processes in the sense that user level code in one process could freely write to it and another read it. The kernel can set up memory pages to be shared between processes, but then non-kernel addresses are used, since kernel addresses are always off limit for non-kernel code.
– Johan Myréen
Dec 10 at 6:46
Thanks for your kindness and time, now I understand it! Since my question is ask about Linux, but can I take this as a general understand for other OS? (Or it's not recommend?)
– ptr_user7813604
Dec 10 at 7:18
add a comment |
up vote
2
down vote
accepted
up vote
2
down vote
accepted
Yes, the page tables are stored in the kernel address space. Each process has its own page table structure, which is set up so that the kernel portion of the address space is shared between processes. The kernel address space is not accessible from user space, however. The user space code communicates with the kernel in a controlled manner using system calls. After a successful system call the processor enters a privileged state in which the kernel address space is available.
Yes, the page tables are stored in the kernel address space. Each process has its own page table structure, which is set up so that the kernel portion of the address space is shared between processes. The kernel address space is not accessible from user space, however. The user space code communicates with the kernel in a controlled manner using system calls. After a successful system call the processor enters a privileged state in which the kernel address space is available.
answered Dec 10 at 6:24
Johan Myréen
7,33611423
7,33611423
Can I say that: Each process has an address space, and its page table is stored in the kernel portion of this address space. And all kernel portion of each process are actually maps to the same address space in kernel, and sharing happens at there. Correct?
– ptr_user7813604
Dec 10 at 6:35
1
Yes, all processes share the kernel's address space, but only kernel code can access that part of memory. The kernel is free to do what it wants with it, but the memory is not shared between processes in the sense that user level code in one process could freely write to it and another read it. The kernel can set up memory pages to be shared between processes, but then non-kernel addresses are used, since kernel addresses are always off limit for non-kernel code.
– Johan Myréen
Dec 10 at 6:46
Thanks for your kindness and time, now I understand it! Since my question is ask about Linux, but can I take this as a general understand for other OS? (Or it's not recommend?)
– ptr_user7813604
Dec 10 at 7:18
add a comment |
Can I say that: Each process has an address space, and its page table is stored in the kernel portion of this address space. And all kernel portion of each process are actually maps to the same address space in kernel, and sharing happens at there. Correct?
– ptr_user7813604
Dec 10 at 6:35
1
Yes, all processes share the kernel's address space, but only kernel code can access that part of memory. The kernel is free to do what it wants with it, but the memory is not shared between processes in the sense that user level code in one process could freely write to it and another read it. The kernel can set up memory pages to be shared between processes, but then non-kernel addresses are used, since kernel addresses are always off limit for non-kernel code.
– Johan Myréen
Dec 10 at 6:46
Thanks for your kindness and time, now I understand it! Since my question is ask about Linux, but can I take this as a general understand for other OS? (Or it's not recommend?)
– ptr_user7813604
Dec 10 at 7:18
Can I say that: Each process has an address space, and its page table is stored in the kernel portion of this address space. And all kernel portion of each process are actually maps to the same address space in kernel, and sharing happens at there. Correct?
– ptr_user7813604
Dec 10 at 6:35
Can I say that: Each process has an address space, and its page table is stored in the kernel portion of this address space. And all kernel portion of each process are actually maps to the same address space in kernel, and sharing happens at there. Correct?
– ptr_user7813604
Dec 10 at 6:35
1
1
Yes, all processes share the kernel's address space, but only kernel code can access that part of memory. The kernel is free to do what it wants with it, but the memory is not shared between processes in the sense that user level code in one process could freely write to it and another read it. The kernel can set up memory pages to be shared between processes, but then non-kernel addresses are used, since kernel addresses are always off limit for non-kernel code.
– Johan Myréen
Dec 10 at 6:46
Yes, all processes share the kernel's address space, but only kernel code can access that part of memory. The kernel is free to do what it wants with it, but the memory is not shared between processes in the sense that user level code in one process could freely write to it and another read it. The kernel can set up memory pages to be shared between processes, but then non-kernel addresses are used, since kernel addresses are always off limit for non-kernel code.
– Johan Myréen
Dec 10 at 6:46
Thanks for your kindness and time, now I understand it! Since my question is ask about Linux, but can I take this as a general understand for other OS? (Or it's not recommend?)
– ptr_user7813604
Dec 10 at 7:18
Thanks for your kindness and time, now I understand it! Since my question is ask about Linux, but can I take this as a general understand for other OS? (Or it's not recommend?)
– ptr_user7813604
Dec 10 at 7:18
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.
Some of your past answers have not been well-received, and you're in danger of being blocked from answering.
Please pay close attention to the following guidance:
- 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%2f487052%2fwhere-is-page-table-stored-in-linux%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