User space 与 Kernel space

标签: 图解原理
1人阅读 评论(0) 收藏 举报
分类:

学习 Linux 时,经常可以看到两个词:User space(用户空间)和 Kernel space(内核空间)。

简单说,Kernel space 是 Linux 内核的运行空间,User space 是用户程序的运行空间。为了安全,它们是隔离的,即使用户的程序崩溃了,内核也不受影响。

Kernel space 可以执行任意命令,调用系统的一切资源;User space 只能执行简单的运算,不能直接调用系统资源,必须通过系统接口(又称 system call),才能向内核发出指令。


str = "my string" // 用户空间
x = x + 2
file.write(str) // 切换到内核空间

y = x + 4 // 切换回用户空间

上面代码中,第一行和第二行都是简单的赋值运算,在 User space 执行。第三行需要写入文件,就要切换到 Kernel space,因为用户不能直接写文件,必须通过内核安排。第四行又是赋值运算,就切换回 User space。

查看 CPU 时间在 User space 与 Kernel Space 之间的分配情况,可以使用top命令。它的第三行输出就是 CPU 时间分配统计。

这一行有 8 项统计指标。

其中,第一项24.8 us(user 的缩写)就是 CPU 消耗在 User space 的时间百分比,第二项0.5 sy(system 的缩写)是消耗在 Kernel space 的时间百分比。

随便也说一下其他 6 个指标的含义。

  • ni:niceness 的缩写,CPU 消耗在 nice 进程(低优先级)的时间百分比
  • id:idle 的缩写,CPU 消耗在闲置进程的时间百分比,这个值越低,表示 CPU 越忙
  • wa:wait 的缩写,CPU 等待外部 I/O 的时间百分比,这段时间 CPU 不能干其他事,但是也没有执行运算,这个值太高就说明外部设备有问题
  • hi:hardware interrupt 的缩写,CPU 响应硬件中断请求的时间百分比
  • si:software interrupt 的缩写,CPU 响应软件中断请求的时间百分比
  • st:stole time 的缩写,该项指标只对虚拟机有效,表示分配给当前虚拟机的 CPU 时间之中,被同一台物理机上的其他虚拟机偷走的时间百分比

如果想查看单个程序的耗时,一般使用time命令。

程序名之前加上time命令,会在程序执行完毕以后,默认显示三行统计。

  • real:程序从开始运行到结束的全部时间,这是用户能感知到的时间,包括 CPU 切换去执行其他任务的时间。
  • user:程序在 User space 执行的时间
  • sys:程序在 Kernel space 执行的时间

usersys之和,一般情况下,应该小于real。但如果是多核 CPU,这两个指标反映的是所有 CPU 的总耗时,所以它们之和可能大于real

[参考链接]

查看评论

内核空间(kernel-space) VS 用户空间(user-space)

作为一个Linux开发者,首先应该清楚内核空间和用户空间的区别。 现代的计算机体系结构中存储管理通常都包含保护机制。 提供保护的目的,是要避免系统中的一个任务访问属于另外的或属于操作系统的存储区域...
  • yezi_zhi
  • yezi_zhi
  • 2016-08-26 14:32:37
  • 2937

记录一下 User Space 传递参数到 Kernel Space 的所有方法

1. virtual  char dev driver 2. system call interface 3. netlink 4. seq_file 5. procfs 6. sysfs 7.deb...
  • yunccll
  • yunccll
  • 2013-06-12 10:38:16
  • 800

kernel space vs user space

康华:计算机硕士,主要从事Linux操作系统内核、Linux技术标准、计算机安全、软件测试等领域的研究与开发工作,现就职于信息产业部软件与集成电路促进中心所属的MII-HP Linux软件实验室。...
  • pi9nc
  • pi9nc
  • 2013-03-12 16:50:58
  • 5740

为什么要在kernel space 和 user space, 提供一套相同接口的驱动函数

应用背景:    数字电视芯片,linux平台  问题1:为什么要在kernel space 和 user space, 提供一套相同接口的驱动函数解答: 由于设计理念的差异,一些客户需要在kerne...
  • bluesky_sunshine
  • bluesky_sunshine
  • 2011-07-25 16:02:51
  • 727

genetlink_master例子代码

  • 2016年09月02日 16:59
  • 5KB
  • 下载

Kernel space DMA and User space DMA

Author: Joseph(Honggang Yang) Contents: Kernel space DMA and User space DMA Date: 11-02-2011 Las...
  • force_eagle
  • force_eagle
  • 2013-12-07 22:36:57
  • 2510

User space和Kernel space

这篇文章转载自阮一峰老师的博客。为了加深记忆,自己再敲一遍。学习Linux时,经常可以看到两个词:User space(用户空间)和Kernel space(内核空间)。 Kernel space是...
  • maxine_du
  • maxine_du
  • 2016-12-02 10:11:32
  • 235

kernel space and user space

1.What's the difference between kernel stack and user stack ? In short, nothing - apart from usin...
  • lianliange85
  • lianliange85
  • 2016-10-10 15:59:32
  • 164

user space to kernel space

===============================================================================================  一年...
  • ema655
  • ema655
  • 2011-10-05 22:52:43
  • 277

用户空间内核空间与ring的概念

2.3. User Space and Kernel Space Processes run normally in an unprivileged operation mode, that mea...
  • sinapme
  • sinapme
  • 2014-02-08 10:42:58
  • 435
    个人资料
    等级:
    访问量: 1297
    积分: 690
    排名: 7万+
    文章存档