嵌入式八股文 第一期
·
接下来开始做有关嵌入式就业方向的八股文
帮助大家顺利理清面试中可能出现的问题,同时也让我更好的夯实自己的基础
话不多说,开始吧
今天讲的是线程和进程的区别
进程
资源分配的基本单位
每个进程拥有独立的地址空间:内存空间、堆、全局变量、文件句柄、信号、外设权限
进程完全隔离,一个进程崩溃不会直接干掉其他进程
进程是一个独立的单位,需要恢复的上下文内容比较多消耗的资源也比较多
线程
进程中的执行单元,cpu执行和调度的基本单位
共享进程的地址空间
线程出现问题可能会导致整个程序崩溃从而影响其他的线程
线程消耗的资源比较少
进程的范围>线程
对比图
| 对比维度 | 进程 | 线程 |
|---|---|---|
| 定义 | 操作系统资源分配最小单位,独立程序运行实例 | CPU 调度最小执行单元,进程内部执行流 |
| 资源占用 | 独立完整内存、文件、端口资源;创建开销大;进程间无共享资源 | 共享进程全部全局资源;仅私有栈 / 寄存器;创建开销极小;线程间直接共享数据 |
| 容错性 | 强隔离,单个进程崩溃不影响其他进程 | 无隔离,一个线程崩溃,整个进程全部退出 |
| 调度 | 老式系统调度单元,调度粒度粗,现代内核不再以进程为最小调度单元 | 现代操作系统 CPU 最小调度单位,调度粒度细,支持多核并行 |
| 上下文切换 | 开销巨大,切换地址空间、刷新缓存、更换页表 | 开销很小,不切换地址空间,仅切换少量寄存器与栈 |
进程之间的通信有几种方式:(进程之间地址空间完全隔离,不能直接读写对方内存,必须依靠操作系统提供的 IPC 机制中转,这就是为什么需要专门的通信方式)
1、管道
2、命名管道
3、共享内存(mmap)
4、信号量
5、消息队列
6、套接字(socket)
7、信号
需要借助内核,不存在完全脱离内核的进程通信方式
openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构
更多推荐
所有评论(0)