首页 > 技术文章 > 用户空间和内核空间

lvjingying 2021-01-21 14:18 原文

用户空间和内核空间

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

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

​ 虚拟的内存被操作系统划分成两块:内核空间和用户空间,内核空间是内核代码运行的地方,用户空间是用户程序代码运行的地方。当进行运行在内核空间的时就处于内核状态,大概进程运行在用户空间时就处于用户态。

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

​ 通过系统接口,进程可以从用户空间切换到内核空间。

str = "m" //用户空间
x = x + 2;
file.write(str) //切换到内核空间
y = x + 4;//切换回用户空间

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

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

​ 其中第一项3.2us 就是cpu消耗在User space 的时间百分比。第二项 3.2sy是消耗在Kernel space的时间百分比

​ 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时间之中,被同一台物理机上的其它虚拟机偷走的时间

推荐阅读