目录
什么是进程
进程的状态和转换
进程控制
进程通信
什么是进程
在电脑的任务管理器中,能看到电脑当前运行着的所有进程
那到底什么是进程呢?和我们所看所写的那些程序有什么区别?
操作系统是如何区分这些进程的呢?
那就需要首先认识进程的组成
PCB
再加上程序段和数据段,共同组成进程实体
进程的执行过程
进程的特征
总结:
注意,在引入线程之后,进程就不再是接受调度的基本单位了。
进程的状态和转换
进程有5种状态
创建态、就绪态
运行态
如果在运行过程中,需要等待某种资源,那么就会进入阻塞态
当CPU空闲时,又会选择另一个就绪态的进程上CPU执行。
当阻塞态的进程所需要的资源条件满足时,就会进入就绪态,等待被执行
终止态
当回收完成后,这个进程就彻底消失了。
进程状态的转换
总结
进程的组织(了解即可)
链接方式
索引方式
进程控制
用原语实现进程控制
如何保证原语的原子性
进程控制相关的原语
进程的创建
进程的终止
进程的阻塞和唤醒
进程的切换
注意,进程切换之前需要保护好运行环境,将上一个进程存储在CPU寄存器中的一些中间运算结果等存入内存中,防止被下一个进程的数据覆盖。
总结:
进程通信
进程通信,IPC,Inter-Process Communication,就是指两个进程之间产生数据交互。
比如:
图中微博和微信这两个进程就产生了数据的交互。
要想实现进程通信,必须要有操作系统的介入,各进程自己无法实现直接通信。
如果一个进程可以直接访问另一个进程的地址空间,那随便一个病毒程序就能攻击任何其他的进程,这样显然是极不安全的。
实现进程通信有三种方式。
共享存储
注意,共享存储区会被映射到各通信进程自己的地址空间。且数据的形式和存放位置都由通信进程自己控制,具有很高的灵活性。
消息传递
直接通信方式
间接通信方式
管道通信
注意,管道通信虽然和共享存储类似,但是,共享存储的那片地址是可以供进程随意操作的,不管存在哪个地址,或者从哪个地址取,都是可行的。但是管道是一个队列,只能通过FIFO的方式来读取。而且共享存储的互斥访问需要进程自己实现,而管道通信的互斥访问是由操作系统来管理实现的。
总结:
补充注意: