Unix|Linux系列知识(1)——用户态与内核态

- 前言

很长时间一直不清楚操作系统的用户态和内核态到底是什么?记得以前每次考这个知识点都是靠猜,直到看了《Unix环境高级编程》这本书,才有点感触。

- Unix体系架构

从上面这张图体系架构图,我们可以很清楚的将操作系统分为三部分:内核态用户态系统调用

  1. 内核态(或内核空间):可以理解为存放内核的地方。内核从本质上看是一种软件——控制计算机的硬件资源(包括CPU资源、存储资源、I/O资源等),并提供上层应用程序运行的环境。
  2. 用户态(或用户空间):可以理解为存放应用程序、底层函数库、shell脚本的地方。这里要说明一点底层函数库,他不是系统调用,我们可以理解为他是对系统调用的一层封装,更好的方便程序猿来开发。
  3. 系统调用:那么用户态内核态的数据是如何传递的呢?那就是通过系统调用。其实系统调用就是用户态内核态定义好的接口。就好比RPC框架中一个服务调用另一个服务,我们先要定义好两边接口才能调通。常见的系统调用,比如操作文件的read、write操作;操作进程的fork操作;分配内存的sbrk操作。
-总结

读到这,相信我们已了解操作系统的用户态与内核态。理解这几个名词,对以后Unix|Linux的学习还是很有帮助的。

-参考

[1] Unix环境高级编程
[2] Linux探秘之用户态与内核态 http://www.cnblogs.com/bakari/p/5520860.html

相关文章

用的openwrt路由器,家里宽带申请了动态公网ip,为了方便把2...
#!/bin/bashcommand1&command2&wait从Shell脚本并行...
1.先查出MAMP下面集成的PHP版本cd/Applications/MAMP/bin/ph...
1、先输入locale-a,查看一下现在已安装的语言2、若不存在如...
BashPerlTclsyntaxdiff1.进制数表示Languagebinaryoctalhexa...
正常安装了k8s后,使用kubect工具后接的命令不能直接tab补全...