2.1进程与线程
2.1.1进程的定义、组成、组织、特征(PCB、程序段、数据段)
注意点:进程和程序的区别:
简单理解就是程序是一段代码,他不运行。
进程就是实打实的在跑了。
理解:解决两个问题:谁去或者说怎么存储进程?进程又由什么组成?为什么需要这样设计?
1、谁去或者说怎么存储进程?
链接方式和索引方式
索引方式就像目录,查找进程通过目录来查找
链接方式就像数据结构的链式存储一样,进程排着队。
2、进程又由什么组成?为什么需要这样设计?
1、编号,即PCB PCB就像我们的任务清单+购物清单一样,ta即保存我们的的进程进度页保存,程序要运行需要什么
2、程序段 TA保存我们的代码
3、数据段 存中间数据的
2.1.2进程状态的转换:
理解:创建态和终止态:程序的开始和结尾
然后去思考计算机在运行时其实是去抢cpu的使用权。这一个核心点
模拟赛车比赛。
1、就绪态:就像赛车已经在跑道上准备踩下油门就冲出去,(没有分配cpu)
2、运行态:就像赛车已经在跑的途中了(分配了cpu)
3、阻塞态:就像赛车跑一半零件飞出去了,我要修车区从新申请新零件(不止没cpu、还有有其他需要的)
ps:过程自己看着下面的图,很容易理解的。
2.1.3进程控制(原语实现、关中断和开中断)
理解
1、进程控制干啥的?
答:切换上一个小节中提到的进程状态。
2、为什么需要原语?
做善后工作的,如:把运行的保存
存的时候防止数据丢失故有开中断和关中断
ps:开/关中断指令是特权指令。
具体需要做什么参考下面的图:
2.1.4进程访问:进程之间实现数据通信
共享存储:多个进程之间有独立的区域,也有公共区域,公共区域每次只允许一个进行读写操作。
管道存储:一个特殊的文件共享区域,半双工通信
消息发送:顾名思义通过发送/接受原语实现消息通讯。
包括直接(不需要中间体传输)和间接(需要中间体传输)通信方式
2.1.5:线程
线程的属性:
优点:
线程的实现方式:
其他的多是这两个模型的套娃。