Linux Kernel Mode Vs User Mode












1















I'm trying to better understand the process of switching from user mode to kernel mode on linux systems.



When a process requires access to the low level HW/restricted memory spaces, does it issue a system call to the kernel and the kernel runs the code on its behalf and passes the information back to the process ? or does the kernel put the process in a privileged mode and now the process itself is running in kernel mode and has access to whatever resources it requested ?



Thanks !










share|improve this question













migrated from serverfault.com Jan 29 at 14:17


This question came from our site for system and network administrators.























    1















    I'm trying to better understand the process of switching from user mode to kernel mode on linux systems.



    When a process requires access to the low level HW/restricted memory spaces, does it issue a system call to the kernel and the kernel runs the code on its behalf and passes the information back to the process ? or does the kernel put the process in a privileged mode and now the process itself is running in kernel mode and has access to whatever resources it requested ?



    Thanks !










    share|improve this question













    migrated from serverfault.com Jan 29 at 14:17


    This question came from our site for system and network administrators.





















      1












      1








      1








      I'm trying to better understand the process of switching from user mode to kernel mode on linux systems.



      When a process requires access to the low level HW/restricted memory spaces, does it issue a system call to the kernel and the kernel runs the code on its behalf and passes the information back to the process ? or does the kernel put the process in a privileged mode and now the process itself is running in kernel mode and has access to whatever resources it requested ?



      Thanks !










      share|improve this question














      I'm trying to better understand the process of switching from user mode to kernel mode on linux systems.



      When a process requires access to the low level HW/restricted memory spaces, does it issue a system call to the kernel and the kernel runs the code on its behalf and passes the information back to the process ? or does the kernel put the process in a privileged mode and now the process itself is running in kernel mode and has access to whatever resources it requested ?



      Thanks !







      linux kernel process linux-kernel






      share|improve this question













      share|improve this question











      share|improve this question




      share|improve this question










      asked Jan 29 at 9:31









      John DoeJohn Doe

      1123




      1123




      migrated from serverfault.com Jan 29 at 14:17


      This question came from our site for system and network administrators.









      migrated from serverfault.com Jan 29 at 14:17


      This question came from our site for system and network administrators.
























          1 Answer
          1






          active

          oldest

          votes


















          1















          does it issue a system call to the kernel and the kernel runs the code
          on its behalf and passes the information back to the process ? or does
          the kernel put the process in a privileged mode and now the process
          itself is running in kernel mode and has access to whatever resources
          he requested ?




          Yes. Any of the above, depending on the system call.



          Sometimes a process transitions to kernel mode and does things. Sometimes kernel threads handle the work, especially I/O and file system related. For gettimeofday(), vDSO means it just reads the value without going to kernel space.



          Read articles introducing the system call interface, such as LWN's Anatomy of a system call. Architecture specific, so the details of Linux on x86 are not portable other operating systems or CPU types. But probably have similar concepts.



          Use profiling tools to see what the stacks look like for your workload. Get an idea of the % "system CPU" is typical for your workload.






          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%2f497464%2flinux-kernel-mode-vs-user-mode%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









            1















            does it issue a system call to the kernel and the kernel runs the code
            on its behalf and passes the information back to the process ? or does
            the kernel put the process in a privileged mode and now the process
            itself is running in kernel mode and has access to whatever resources
            he requested ?




            Yes. Any of the above, depending on the system call.



            Sometimes a process transitions to kernel mode and does things. Sometimes kernel threads handle the work, especially I/O and file system related. For gettimeofday(), vDSO means it just reads the value without going to kernel space.



            Read articles introducing the system call interface, such as LWN's Anatomy of a system call. Architecture specific, so the details of Linux on x86 are not portable other operating systems or CPU types. But probably have similar concepts.



            Use profiling tools to see what the stacks look like for your workload. Get an idea of the % "system CPU" is typical for your workload.






            share|improve this answer




























              1















              does it issue a system call to the kernel and the kernel runs the code
              on its behalf and passes the information back to the process ? or does
              the kernel put the process in a privileged mode and now the process
              itself is running in kernel mode and has access to whatever resources
              he requested ?




              Yes. Any of the above, depending on the system call.



              Sometimes a process transitions to kernel mode and does things. Sometimes kernel threads handle the work, especially I/O and file system related. For gettimeofday(), vDSO means it just reads the value without going to kernel space.



              Read articles introducing the system call interface, such as LWN's Anatomy of a system call. Architecture specific, so the details of Linux on x86 are not portable other operating systems or CPU types. But probably have similar concepts.



              Use profiling tools to see what the stacks look like for your workload. Get an idea of the % "system CPU" is typical for your workload.






              share|improve this answer


























                1












                1








                1








                does it issue a system call to the kernel and the kernel runs the code
                on its behalf and passes the information back to the process ? or does
                the kernel put the process in a privileged mode and now the process
                itself is running in kernel mode and has access to whatever resources
                he requested ?




                Yes. Any of the above, depending on the system call.



                Sometimes a process transitions to kernel mode and does things. Sometimes kernel threads handle the work, especially I/O and file system related. For gettimeofday(), vDSO means it just reads the value without going to kernel space.



                Read articles introducing the system call interface, such as LWN's Anatomy of a system call. Architecture specific, so the details of Linux on x86 are not portable other operating systems or CPU types. But probably have similar concepts.



                Use profiling tools to see what the stacks look like for your workload. Get an idea of the % "system CPU" is typical for your workload.






                share|improve this answer














                does it issue a system call to the kernel and the kernel runs the code
                on its behalf and passes the information back to the process ? or does
                the kernel put the process in a privileged mode and now the process
                itself is running in kernel mode and has access to whatever resources
                he requested ?




                Yes. Any of the above, depending on the system call.



                Sometimes a process transitions to kernel mode and does things. Sometimes kernel threads handle the work, especially I/O and file system related. For gettimeofday(), vDSO means it just reads the value without going to kernel space.



                Read articles introducing the system call interface, such as LWN's Anatomy of a system call. Architecture specific, so the details of Linux on x86 are not portable other operating systems or CPU types. But probably have similar concepts.



                Use profiling tools to see what the stacks look like for your workload. Get an idea of the % "system CPU" is typical for your workload.







                share|improve this answer












                share|improve this answer



                share|improve this answer










                answered Jan 29 at 12:28









                John MahowaldJohn Mahowald

                1112




                1112






























                    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%2f497464%2flinux-kernel-mode-vs-user-mode%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

                    How to reconfigure Docker Trusted Registry 2.x.x to use CEPH FS mount instead of NFS and other traditional...

                    is 'sed' thread safe

                    How to make a Squid Proxy server?