美文网首页数据结构与算法
用户进程陷入内核

用户进程陷入内核

作者: ITsCLG | 来源:发表于2019-08-21 14:38 被阅读0次

    我们的手机,电脑上都装有各色各样的应用程序,我们生活中经常把它们叫做软件。其实我们手机上的Andorid、IOS;电脑上的Linux、Windows等操作系统也是软件。在CPU看来,它并不知道执行的程序是操作系统还是一般应用程序。

    学过C win32编程的都知道,我们在编写程序时,很多时候要使用到操作系统提供的API函数,这个函数就是系统调用函数,属于操作系统内核提供的函数。应用程序加上操作系统提供的功能才是完整的程序。

    那编译器为啥知道系统调用接口呢?其实我们下载编译器时,会选择相应的系统版本,这里编译器就已经跟对应的操作系统绑定了起来,都是经过设计的。

    我们来看看Windows中提供了哪些系统级别的动态链接库(dll)。在电脑C盘的以下两个路径:C:\Windows\SysWOW64、C:\Windows\System32我们可以发现windows系统已经提供好的系统dll,其中也可以找到我们调试程序时经常会出现的kernel32.dll等。我们使用到的系统调用函数大多数都由这些系统dll提供。

    用户态与内核态是相对于CPU来讲的,指的是CPU运行在用户态(特权3级)还是内核态(特权0级)。所谓保护模式下的保护就体现在特权级上。

    操作系统位于最内环的0级特权,直接控制硬件,掌控各种核心数据。系统级别的程序位于1级特权和2级特权,运行在这两层的一般为虚拟机,驱动程序等系统服务。然后就是我们经常使用到的各种应用程序啦,它们的级别最低,没什么权力,就处于3级特权,要完成什么需求时,有时就要求助操作系统,给它们权力去做这件事。就好比你一个公司职员,想开老总的跑车去完成某件事,当然得老总同意你才能开嘛。我们的应用程序在这里把它当作这个小职员,你要成功运行你的代码,就要调用操作系统(这里就是公司老总)提供的系统函数(这里就是老总的车)。所以呢,系统调用函数是不属于这个应用程序的,你敢说老总的跑车是你这个小职员的吗?

    所以系统调用与库函数的区别如下:

    1、库函数是语言或应用程序的一部分,而系统调用是内核提供给应用程序的接口,属于系统的一部分。

    2、库函数在用户地址空间执行,系统调用是在内核地址空间执行,库函数运行时间属于用户时间,系统调用属于系统时间,库函数开销较小,系统调用开销较大

    3、库函数是有缓冲的,系统调用是无缓冲的

    4、系统调用依赖于平台,库函数并不依赖。

    所以呢,什么是用户进程陷入内核呢?

    用户进程在执行时,为了访问系统资源时(包括硬件中断或内核数据结构),它需要进行系统调用。当前的进程被暂时终止执行,其进程上下文也会被内核中断程序保存起来。然后开始执行一段需要的内核代码。这样CPU便进入了内核态,这就是陷入内核。

相关文章

  • 用户进程陷入内核

    我们的手机,电脑上都装有各色各样的应用程序,我们生活中经常把它们叫做软件。其实我们手机上的Andorid、IOS;...

  • Linux内核——用户堆栈和内核堆栈

    定义 每个进程都有用户堆栈和内核堆栈两个堆栈。进程在用户态时使用用户堆栈,陷入到内核态时便使用内核堆栈。 切换过程...

  • Binder(一)Linux进程通信

    用户空间、内核空间 Linux分为内核进程和用户进程:1、内核进程共享一块内存空间,称为内核空间。2、内核进程不能...

  • IPC之binder

    一、进程空间分配1、一个进程空间分为 用户空间 & 内核空间(Kernel),即把进程内 用户 & 内核 ...

  • 进程内存布局

    ARM64内核的内存布局 进程有用户态和内核态,同样进程的地址空间包括用户地址空间和内核地址空间,用户态访问用户地...

  • Binder跨进程通信机制

    一、相关概念 进程空间把进程空间分为用户空间和内核空间。进程间:用户空间不可共享,内核空间可以共享,所有进程共用一...

  • 用户态和内核态

    操作系统会将内存分配为内核空间和用户空间 内核空间是由所有进程共享,每个进程通过系统调用进入内核用户空间中各个进程...

  • Binder跨进程通信的原理

    1.进程空间划分 一个进程空间分为用户空间,内核空间,即把进程内用户和内核 隔离开来。二者区别:1.进程间,用户空...

  • Linux进程上下文切换概念

    在操作系统中空间分为内核空间和用户空间所以进程的运行状态分为:1.内核态:进程运行于内核空间2.用户态:进程运行于...

  • Linux内核-系统调用

    与内核通信 现在操作系统中, 内核提供了用户进程与内核进程交互的一组接口, 这些接口让用户程序受限的访问硬件设备 ...

网友评论

    本文标题:用户进程陷入内核

    本文链接:https://www.haomeiwen.com/subject/zagbsctx.html