Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
ld_4215105
review
提交
57f849b1
R
review
项目概览
ld_4215105
/
review
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
R
review
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
57f849b1
编写于
9月 11, 2020
作者:
ld_4215105
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
更新files/用户态与内核态.md
上级
8031b2fc
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
140 addition
and
0 deletion
+140
-0
files/用户态与内核态.md
files/用户态与内核态.md
+140
-0
未找到文件。
files/用户态与内核态.md
0 → 100644
浏览文件 @
57f849b1
<center><h1>
内核与用户态
</h1></center>
------
> 此博客仅代表博主工作3年来对Linux内核操作系统的认知,如有偏差请见谅。
### 内核态
------
`计算机管理硬件的软件`
主要职责:
1.
获取硬件资源
2.
硬件的初始化
3.
接受用户态程序调用请求
4.
合理分配硬件资源给用户态程序
### 用户态
------
`向内核申请硬件资源`
主要功能:
1.
完成用户特定命令
2.
向内核申请资源
### 关系
------
```
mermaid
sequenceDiagram
participant 用户程序
participant 操作系统
participant 内核
participant 摄像头
用户程序->操作系统:我要自拍
操作系统->>用户程序: 稍等
Note over 内核: 我是内核
loop 处理请求
操作系统->操作系统: 努力处理中
end
Note over 摄像头: 我是摄像头
操作系统->内核: 我要摄像头图片
loop 处理请求
内核->内核: 努力处理中
end
内核->摄像头:我要给我来一张照片
用户程序-->>操作系统: 还没有好?
操作系统->>用户程序: 不要慌,还在拍
loop 处理请求
摄像头->摄像头: 努力采集中
end
Note over 操作系统: 我是操作系统
摄像头->>内核: 拿去
内核->>操作系统: 喏,给你了
loop 处理照片响应
操作系统->操作系统: 努力处理中
end
Note over 用户程序: 我是图片处理程序
用户程序-->>操作系统: 还没有好?
操作系统->>用户程序: 好了,给你
```
### 说明
------
#### 1.上述例子各个角色都干了啥
1.
<code>
应用程序
</code>
:获取了一张来自摄像头的自拍照片
2.
`操作系统`
:叫内核拍了一张照片给应用程序
3.
`内核`
:我从摄像头拿取了一张图片
4.
`摄像头`
:我捕捉了一张图给内核
<p>
    在操作系统中的一个图片处理程序向操作系统提交了一个
<i>
拍照
</i>
的请求。操作系统收到命令后做了各种判断,确定这个程序是有拍照的许可。随后向内核提出申请。内核收到申请后,进行摄像头的各种判断,确认摄像头可以进行拍摄过后,向摄像头发出指令。此时内核捕获摄像头上的瞬间数据,进行判断,确认拍照成功。逐层进行图片优化后,提交到用户程序进行P图处理。
#### 2.用户态与内核态切换
<p>
    程序的运行均是以CPU来执行的一系列指令。当应用程序和操作系统工作时,本质是CPU在运行这两种程序的代码,此时CPU运行的状态即为
<code>
用户态
</code>
。当应用程序需要访问计算机内的物理资源,比如打印机、摄像头、磁盘等时,需要经过内核,此时CPU从运行用户态指令转而运行内核程序的指令。这个转换动作我们称之为
<code
style=
"color: red;"
>
用户态与内核态切换
</code>
。
</p>
#### 3.系统调用
<p>
CPU从用户态转向内核态需要一个触发条件,而这个条件包含如下类:
</p>
1.
系统调用:操作系统、shell、库函数等触发
2.
异常事件:如缺页异常等触发
3.
中断:如网卡有可读数据时触发的中断
> <p>
> 设备引起的中断称为<code style="color: red;">硬中断</code>
> 系统调用的本质也为中断,称之为<code style="color: red;">软中断</code>
> </p>
------
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录