kernel address space mappings with respect to virtual address space - a question based on text by Robert Love












7















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:




  1. Some hardware devices can perform DMA (direct memory access) to only certain
    memory addresses.


  2. 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:




  1. First is okay, what does he mean by 2?

  2. Does he mean to say: Some architectures can address larger amounts of physical memory than they can address virtual addresses?

  3. How's that possible? I thought virtual address space is larger than physical memory or at least (if any) equal to physical memory.

  4. 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.










share|improve this question





























    7















    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:




    1. Some hardware devices can perform DMA (direct memory access) to only certain
      memory addresses.


    2. 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:




    1. First is okay, what does he mean by 2?

    2. Does he mean to say: Some architectures can address larger amounts of physical memory than they can address virtual addresses?

    3. How's that possible? I thought virtual address space is larger than physical memory or at least (if any) equal to physical memory.

    4. 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.










    share|improve this question



























      7












      7








      7


      1






      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:




      1. Some hardware devices can perform DMA (direct memory access) to only certain
        memory addresses.


      2. 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:




      1. First is okay, what does he mean by 2?

      2. Does he mean to say: Some architectures can address larger amounts of physical memory than they can address virtual addresses?

      3. How's that possible? I thought virtual address space is larger than physical memory or at least (if any) equal to physical memory.

      4. 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.










      share|improve this question
















      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:




      1. Some hardware devices can perform DMA (direct memory access) to only certain
        memory addresses.


      2. 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:




      1. First is okay, what does he mean by 2?

      2. Does he mean to say: Some architectures can address larger amounts of physical memory than they can address virtual addresses?

      3. How's that possible? I thought virtual address space is larger than physical memory or at least (if any) equal to physical memory.

      4. 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






      share|improve this question















      share|improve this question













      share|improve this question




      share|improve this question








      edited 39 mins ago









      Christophe Strobbe

      177112




      177112










      asked Oct 30 '13 at 17:39









      AnubhavAnubhav

      1407




      1407






















          1 Answer
          1






          active

          oldest

          votes


















          4














          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.






          share|improve this answer























            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
            });


            }
            });














            draft saved

            draft discarded


















            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









            4














            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.






            share|improve this answer




























              4














              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.






              share|improve this answer


























                4












                4








                4







                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.






                share|improve this answer













                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.







                share|improve this answer












                share|improve this answer



                share|improve this answer










                answered Oct 30 '13 at 17:48









                PatrickPatrick

                50.3k11127179




                50.3k11127179






























                    draft saved

                    draft discarded




















































                    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.




                    draft saved


                    draft discarded














                    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





















































                    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







                    Popular posts from this blog

                    Histoire des bourses de valeurs

                    Why is there Russian traffic in my log files?

                    Rename multiple files to decrement number in file name?