1.进程的概念
1.进程的概念:执行的程序。同一段程序可以同时在内存中执行两次,产生两个进程。
2.进程的状态(pcb就是进程存在的唯一标志)
新的:进程正在创建,分配资源初始化pcb
等待:进程在等待发生某个事件(I/O完成)
就绪:进程等待分配cpu处理器,但是其他资源是已经分配好了的
终止:进程已经完成执行,需要回收分配给进程的资源
3.进程的组成
PCB:可以理解为保存进程的元数据信息
数据段:执行程序需要的数据
程序段:执行的程序
4.进程的控制
1.进程的控制是由原语实现的,所谓原语就是执行过程不可中断,是由开中断和关中断结合来实现的。
进程的每个状态的切换都是由原语控制的,也就是说进程的创建、就绪、运行、阻塞、终止都由不同的原语对其进行控制。
5.进程间的通信
操作系统为运行在内存中的进程都分别分配了一块独立的内存空间,不同进程之间是只能访问自己的内存空间中的数据段,不能访问其他进程的数据段。但是进程之间又不可避免需要有信息交换,所以需要进程通信。
进程通信的方式
共享存储
基于数据结构的共享
比如存储区中只能存放指定长度的数组供对方共享
基于存储区的共享
提供存储区,共享的存放形式不约束。
消息传递
直接通信方式
每个进程头部有接收消息的缓冲区,其他进程可以将消息挂到目标进程的消息缓冲区,等待目标进程的读取。
间接通信方式
进程和进程之间共享一个“信箱”,消息体内有目标进程的pid和消息内容,其他进程到“信箱”中进行取用即可。
管道通信
管道通信
在内存中建立缓冲区,大小相当于操作系统的页大小(linux是4KB),管道只能半双工通信。如果要实现全双工通信,需要开两个管道。
特点
各进程之间的通信是互斥的。
管道没写满不允许读,没读空不允许写。
管道中的数据被读出之后就会被抛弃,所以读取的进程只能有一个。