学习 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 项统计指标。

其中,第一项0.0 us(user 的缩写)就是 CPU 消耗在 User space 的时间百分比,第二项0.2 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 执行的时间

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

转载:用户空间和内核空间是什么?_space (sohu.com)

Linux用户空间和内核空间是什么?相关推荐

  1. linux 物理内存用完了_Linux用户空间与内核空间(理解高端内存)

    Linux内核地址映射模型 x86 CPU采用了段页式地址映射模型.进程代码中的地址为逻辑地址,经过段页式地址映射后,才真正访问物理内存. 段页式机制如下图. Linux内核地址空间划分 通常32位L ...

  2. Linux Malloc分析-从用户空间到内核空间

    Linux Malloc分析-从用户空间到内核空间 本文介绍malloc的实现及其malloc在进行堆扩展操作,并分析了虚拟地址到物理地址是如何实现映射关系. ordeder原创,原文链接: http ...

  3. Linux 用户空间和内核空间指的是什么?

    Linux 操作系统和驱动程序运行在内核空间,应用程序运行在用户空间.两者不能简单地使用指针传递数据,因为Linux使用的虚拟内存机制,用户空间的数据可能被换出,当内核空间使用用户空间指针时,对应的数 ...

  4. Linux 用户空间和内核空间

    最近在微信群里看到有人提这个问题,然后查了下资料,觉得这篇文章是写得最能让人看懂的,分享给大家. 欢迎大家评论说出自己的见解,让更多的人更容易理解这部分知识. 之前的相关文章 Linux内存,先看这篇 ...

  5. Linux用户空间与内核空间(理解高端内存)

    目录 Linux内核地址映射模型 Linux内核地址空间划分 Linux内核高端内存的由来 Linux内核高端内存的理解 Linux内核高端内存的划分 常见问题 小结 1.虚拟内核空间到物理空间的映射 ...

  6. linux 各用户内存_Linux用户空间与内核空间(理解高端内存)

    Linux 操作系统和驱动程序运行在内核空间,应用程序运行在用户空间,两者不能简单地使用指针传递数据,因为Linux使用的虚拟内存机制,用户空间的数据可能被换出,当内核空间使用用户空间指针时,对应的数 ...

  7. 人间还是仙界?聊一聊linux系统的用户空间和内核空间

    我们生活在人间,但<西游记>里提到,在天上还有一个仙界. 人间不知道仙界的存在:而仙界知道人间的存在,神仙也可以从仙界下凡到人间,但是被严格管控的. 软件设计的灵感其实都来自于生活:用户空 ...

  8. 嵌入式之linux用户空间与内核空间,进程上下文与中断上下文

    文章目录 前言 用户空间与内核空间 内核态与用户态 进程上下文和中断上下文 上下文 原子 进程上下文 中断上下文 进程上下文VS中断上下文 原子上下文 前言 之前在学习嵌入式linux系统的时候,一直 ...

  9. Linux用户空间与内核空间

    Linux 操作系统和驱动程序运行在内核空间,应用程序运行在用户空间,两者不能简单地使用指针传递数据,因为Linux使用的虚拟内存机制,用户空间的数据可能被换出,当内核空间使用用户空间指针时,对应的数 ...

最新文章

  1. mysql子查询存到另一张表_MySQL数据库(11)----使用子查询实现多表查询
  2. 最短路径之--floyd算法--多源最短路径
  3. linux下sqlmap安装教程,(转)Sqlmap官网下载与安装教程[windows/linux版本]
  4. oracle--第一天PLSQL--bai
  5. 统计学习方法笔记(李航)———第二章(感知机)
  6. Spark源码走读10——Spark On Yarn
  7. excel php 数字科学计数_excel单元格设置技巧:这些自定义格式,你用过哪些?
  8. 为什么很多公司不允许使用C++ STL?
  9. HDU 5643 约瑟夫环的应用
  10. 线性规划中的单纯形法与内点法(原理、步骤以及matlab实现)(二)
  11. 在Linux下轻松搭建自己的DNS服务器
  12. 【bzoj2219-数论之神】求解x^a==b(%n)-crt推论-原根-指标-BSGS
  13. 算法:罗马数字转换为整数13. Roman to Integer
  14. 470.用Rand7()实现Rand10()
  15. C# DLL资源文件打包(图片、JS、CSS)[WebResource]
  16. 英语日常短语积累(1)
  17. python symbols函数_有限元平面四边形等差单元python编程
  18. ImportError: No module named datetime全局python解决time显示问题
  19. Baumer profinet 接口编码器的简单调试
  20. Aspose.Words实用教程:如何处理文档分段——Aspose.Words中的分段

热门文章

  1. 【数学】凸函数与詹森不等式(琴生不等式)解析
  2. 【JAVA枚举类型】
  3. 比较 Java 枚举成员:== 或 equals()?
  4. 第三周实验题目2——robots协议
  5. AndroidStudio开发笔记1--第一个app
  6. 算术的逻辑运算与指令详解
  7. 4412开发板UT-Exynos4412三星ARM四核旗舰开发平台android4.0GPS功能
  8. 致创业新人,我网络创业的一些心得。
  9. 用好锚定效应可以事半功倍,避免锚定也可以减少成本。
  10. C/C++动态数组delete时卡死或报错解决