一,进程
1.进程的概念:
1.1程序:是静态的,就是个存放在磁盘里面的可执行文件。
1.2进程:是动态的,是程序的一次执行过程(同一个程序执行会对应多个进程)
思考:对于这些同一个程序多个进程,操作系统是这样区分的呢?
答:有各自的PID(同时挂3个QQ,会对应三个QQ进程,他们的PCB和数据段均不相同,但程序段的内容是相同的,都运行着相同的QQ程序)
2.进程的组成——PCB
当进程被创建时,os会分配一个唯一,不重复的ID号——PID,记录PID,进程所属用户ID(UID)
还会记录分配资源(分配的内存大小,正在使用哪些I/O设备,哪些文件),运行情况(CPU使用时间,磁盘使用情况,网络流量使用情况)
上述信息都会保存在一个数据结构PCB(进程控制块)
3.进程的组成——程序段,数据段
思考:程序是如何运行的?
一个进程实体由PCB,程序段,数据段组成
进程是动态的,进程实体是静态的
所以引入进程实体这个概念就可以重新定义进程:进程是进程实体的运行过程,是系统进行资源分配和调度的一个独立单位
4.进程的特征
4.1动态性(进程最基本的特征)
4.2并发性:内存中有多个进程实体,各进程可并发执行
4.3独立性:进程能够独立运行,独立获得资源,独立接受调度的基本单位
4.4异步性:各个进程按各自独立的,不可预测的速度向前推进,os提供“进程同步机制”来解决异步问题
4.5结构性:每个进程都会配置一个PCB
5.进程的状态
5.1创建态,就绪态
5.2运行态
5.3阻塞态
5.4终止态
5.5进程状态的转换
5.6进程的组织
5.6.1链接方式(多数)
5.6.2索引方式
6.进程控制
6.1什么是进程控制?
简单理解:进程控制就是要实现进程状态转换
6.2如何实现进程控制?
用“原语”实现,原语的执行具有原子性,执行过程中只能一气呵成,期间不允许被中断。
6.2.1如何实现原语的“原子性”?
在关中断和开中断之间的指令不可被中断
6.3进程控制相关的原语
6.3.1进程的创建
6.3.2进程的终止
6.3.3进程的阻塞和唤醒
6.3.4进程的切换
7.进程通信
7.1什么是进程间通信?
进程间通信(IPC)就是两个进程之间产生数据交互,进程是分配系统资源的单位(包括内存地址空间),因此各进程拥有的内存地址空间相互独立,为保持安全,一个进程不能直接访问另一个进程的地址空间。
7.2进程通信的三个方式
7.2.1共享存储
为了避免出错,各个进程对共享空间的访问应该是互斥的,各个进程可使用os内核提供的同步互斥工具(如P,V操作)
7.2.2信息传递
7.2.2.1直接通信方式
进程P在进程P的地址空间生成一个msg,随后通过发送原语send(Q,msg)将msg发送给进程Q,在进程Q的PCB中有进程Q中的消息队列,将P发送的msg加载上去,之后进程Q接受原语receive(P,&msg)找到P发送的msg从消息队列里取出来放在进程Q的地址里面
7.2.2.2间接通信方式
7.2.3.管道通信