操作系统-第二章-进程与线程
操作系统-进程与线程
进程 的概念、组成、特征
概念:进程是进程实体的运行过程,是系统进行资源分配和调度的一个独立单位
组成
特征
进程的状态与状态转换
进程的组织——链接方式
进程的组织——索引方式
总结:
进程控制
什么是进程控制:主要功能是对系统中的所有进程实施有效的管理,它具有创建新进程、撤销已有进程、实现进程状态转换等功能。
如何实现进程控制?
- 用”原语“实现;原语的执行具有“原子性”,一气呵成
- 原语的原子性 如何实现?👉可以用 “关中断指令”和“开中断指令”这两个特权指令实现原子性
创建原语
撤销原语
进程的阻塞与唤醒
进程的切换
注意:
- 进程控制会导致进程状态的转换。无论哪个进程控制原语,要做的无非三类事情:
-
- 更新PCB中的信息:
a. 所有的进程控制原语一定都会修改进程状态标志
b. 剥夺当前运行进程的CPU使用权必然需要保存其运行环境
c. 某进程开始运行前必然要恢复期运行环境
- 更新PCB中的信息:
-
- 将PCB插入合适的队列
-
- 分配/回收资源
进程通信
概念:两个进程之间产生的数据交互
- 为了保证安全,一个进程不能直接访问另一个进程的地址空间
共享存储 :为避免出错,各个进程对共享空间的访问应该是互斥的
-
基于数据结构的共享
- 比如共享空间里只能放一个长度为10的数组。这种共享方式速度慢、限制多,是一种低级通信方式
-
基于存储区的共享
- 操作系统在内存中划出一块共享存储区,数据的形式、存放位置都由通信进程控制,而不是操作系统。这种共享方式速度很快,是一种高级通信方式。
消息传递:进程间的数据交换以格式化的消息(Message)为单位。进程通过操作系统提供的“发送消息/接收消息”两个原语进行数据交换。
-
直接通信
- 消息发送进程要指明接收进程的ID
-
间接通信
- 通过“信箱”间接地通信。因此又称“信箱通信方式”
管道通信:“管道”是一个特殊的共享文件,又名pipe文件。其实就是在内存中开辟一个大小固定的内存缓冲区
-
- 管道只能采用半双工通信,某一时间段内只能实现单向的传输。如果要实现双向同时通信,则需要设置两个管道。
-
- 各进程要互斥地访问管道(由操作系统实现)
-
- 当管道写满时,写进程将阻塞,直到读进程将管道中的数据取走,即可唤醒写进程。
-
- 当管道读空时,读进程将阻塞,直到写进程往管道中写入数据,即可唤醒读进程。
-
- 管道中的数据一旦被读出,就彻底消失。因此,当多个进程读同一个管道时,可能会错乱。对此,通常有两种解决方案:①一个管道允许多个写进程,一个读进程(2014年408真题高教社官方答案);②允 许有多个写进程,多个读进程,但系统会让各个读进程轮流从管道中读数据(Linux 的方案)。
- 管道中的数据一旦被读出,就彻底消失。因此,当多个进程读同一个管道时,可能会错乱。对此,通常有两种解决方案:①一个管道允许多个写进程,一个读进程(2014年408真题高教社官方答案);②允 许有多个写进程,多个读进程,但系统会让各个读进程轮流从管道中读数据(Linux 的方案)。
线程概念
什么是线程;为什么要引进线程?
-
-
引入线程机制后,有什么变化?
线程的属性
线程的实现方式、多线程模型
-
线程的实现方式
-
用户级线程
-
-
内核级线程
-
-
-
多线程模型
-
一对一:个用户级线程映射到一个内核级线程。每个用户进程有与用户级线程同数量的内核级线程。
-
-
一对多
-
多对多
-
总结
-
线程的状态与转换
-
线程的组织与控制
本文来自博客园,作者:taotooler,转载请注明原文链接:https://www.cnblogs.com/taolo/p/17225867.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律