导图社区 进程与线程
这是一篇关于进程与线程的思维导图,主要内容包括:线程的状态与转换,线程,进程通信,进程控制,进程的状态与转换,进程。
这是一篇关于互斥和同步的思维导图,主要内容包括:信号量机制,互斥的硬件实现方法,互斥的软件实现方法,jin。
这是一篇关于调度的思维导图,主要内容包括:调度算法,处理机调度。介绍详细,描述全面,希望对感兴趣的小伙伴有所帮助!
社区模板帮助中心,点此进入>>
互联网9大思维
组织架构-单商户商城webAPP 思维导图。
域控上线
python思维导图
css
CSS
计算机操作系统思维导图
计算机组成原理
IMX6UL(A7)
考试学情分析系统
进程与线程
进程
概念
程序:静态的,一系列的指令集合
进程:动态的,进程实体的运行过程
进程被创建时,会被分配唯一的PID
是系统进行资源分配的一个独立单位
进程实体:静态的,反应进程在某一时刻的状态
进程实体(进程映像)组成
PCB
服务操作系统
操作系统对进程进行管理工作所需的信息都在PCB中
进程存在的唯一标志
程序段
包含程序指令
数据段
包含运行过程中产生的各种数据
进程的特征
动态性
进程的最基本特性
并发性
内存中存在多个进程实体,并发执行
独立性
进程是能独立运行,独立获得资源,独立接收调度的基本单位
异步性
各进程按各自独立的、不可预知的速度向前推进
操作系统要提供进程同步机制来解决异步问题
结构性
每个进程都会配置一个PCB,进程组成结构相同
进程的状态与转换
进程的状态
创建态
分配系统资源、初始化PCB
就绪态
已经具备运行条件,CPU忙,等待
运行态
在CPU上运行
某些情况下,在分配给进程的时间片用完后,进程由运行态转回就绪态
单CPU同一时间只有一个进程处于运行态
阻塞态
进程在等待某个事件的发生,无法继续执行,主动申请系统调用下CPU
主动
当等待的事件发生后,阻塞态回到就绪态
被动
三种基本状态
终止态
进程结束时,执行exit系统调用下CPU,系统回收内存空间和PCB
进程的组织方式
链式方式
指针指向编好的队列
执行指针——指向运行态进程
就绪队列指针——指向就绪态进程
阻塞队列指针——指向阻塞态进程(不同阻塞原因不同队列)
索引方式
给不同状态进程建立索引表
索引表指向PCB
进程控制
基本概念
进程控制就是要实现进程状态的转换
进程控制用原语实现
原语用开/关中断实现
原语是一种特殊的程序
原语的执行不可中断
相关原语
创建原语
终止原语
阻塞原语
唤醒原语
阻塞和唤醒成对出现
切换原语
线程的状态与转换
状态与转换
运行->阻塞
等待某事件发生
阻塞->就绪
事件发生完毕
就绪->运行
被调度程序选中
运行->就绪
时间片用完
组织与控制
多个TCB组织成线程表
线程
线程是基本的CPU执行单元,是程序执行流的最小单位
传统进程只能串行执行一系列程序,为此引入线程,增加并发度,同时允许进程内并发执行程序
进程现在只作为除CPU之外的系统资源的分配单元
引入进程后,并发所导致的系统开销减小
线程的属性
线程是处理机调度的单位
在多核CPU中,各个线程可以占据不同的CPU
每个线程都有一个线程ID、线程控制块TCB
就绪
阻塞
运行
线程基本不拥有系统资源
同一进程中的不同线程共享系统资源
线程的实现方式
用户级线程
早期操作系统使用,此时“线程”由线程库实现
如while循环中的三段并发代码
内核级线程
线程由操作系统实现
多线程模型
一对一
一个用户级线程映射到一个内核级线程
优点
各个线程可以分配到多核处理机并行执行,并发度高
缺点
线程管理需要操作系统支持,开销大
多对一
多个用户级线程映射到一个内核级线程,且一个进程只分配一个内核级线程
线程管理开销小,效率高
一个用户级线程阻塞会导致进程阻塞,并发度低
多对多
折中方法
进程通信
共享存储
设置一个共享内存区域,并映射到进程的虚拟地址空间
各个进程互斥地访问共享区域(通信进程自己负责实现互斥)
两种方式
基于数据结构(低级)
基于存储区的共享(高级)
消息传递
传递结构化的消息(消息头&消息体)
系统提供发送原语、接收原语
直接通信方式
消息直接挂到接收进程的消息队列里
信箱通信方式
消息被存入中间体
管道通信
设置特殊共享文件“管道”(内存缓冲区)
管道只能实现半双工通信
实现双向同时通信需要两个管道
各进程互斥地访问管道(操作系统实现互斥)
写满时write进程阻塞,读空时read进程阻塞