process
进程
概念
进程是现代分时系统的工作单元,是进程实体的运行过程,是系统进行资源分配和调度的一个独立单位
运行中的程序叫做进程,程序是被动的实体,程序本身并不是进程,进程不只是单纯的代码段,还包括堆栈段、数据段等
状态
三态 :就绪态,运行态,阻塞态
五态 :新的,运行,等待,就绪,终止
进程控制块(PCB)
进程在操作系统中用PCB表示,它包含许多与该进程相关的信息,如:进程状态,进程编号,程序计数器,寄存器等等
线程
线程是操作系统中能够运算调度的最小单位,包含在进程中,是进程中单一顺序的控制流
调度队列
进程进入系统后会被加入到作业队列中,该队列包含了系统中的所有进程,该队列通常使用链表来实现,头节点指向第一个和最后一个PCB指针
调度程序
操作系统通过调度程序来从调度队列中选择进程
- 长期调度程序从内存池中选择进程并装入内存中
- 短期调度程序从内存中选择程序并为之分配CPU运行
这两个调度程序要相互平衡,使CPU的利用率最大化
- 短期调度程序的执行频率快
- 长期调度程序控制多道程序设计的程度,即内存中进程的数量
有的系统会有中期调度程序,中期调度程序将进程从内存移出,降低多道程度
上下文切换
操作系统在进程间频繁切换,所以要保存当前进程的信息,然后中断到其它程序
执行 状态保存 保存上下文,执行 状态恢复 重新开始运行
进程操作
进程创建
进程在执行过程中,可以通过 进程创建系统调用 创建多个子进程
当进程创建新进程时,会有两种可能
- 父进程和子进程并发执行
- 父进程等待子进程执行
进程终止
进程完成后会调用 exit() 来请求操作系统删除自身,终止进程,进程可以返回状态值到父进程;如果父进程终止,那么子进程会以init()作为父进程
通信
- 独立进程:不能影响其它进程或被其它进程影响;反之为协作进程
进程间的通信机制IPC
- 共享内存
- 消息传递
消息传递系统
进程间要有通信线路,根据逻辑线路的如何实现,可以划分成如下几种
- 直接或间接通信
- 同步或异步通信
- 自动或显示
直接通信:进程双方直接交换消息
间接通信:进程双方通过邮箱或端口来通信
同步或异步:消息传递可以使阻塞或非阻塞的
自动或显示:交换的消息都驻留在临时队列上,根据,临时队列的容量不同划分
客户机-服务器系统间的通信
socket:只能交换无结构的字节流,程序要负责加上数据结构,属于低级的分布式进程通信
RPC(远程过程调用):RPC语义允许客户机调用位于远程主机的过程,就如同在本地调用一样;在客户机提供存根,RPC隐藏了通信发生的必要细节
RMI(远程方法调用):是一个类似于RPC的Java特性,允许线程调用远程对象的方法;如果对象位于不同的JVM上,就认为是远程的
RMI和RPC的根本性不同:
RPC只能调用远程的子程序或函数;RMI可以调用远程对象的方法
RPC调用时只能传递的参数只是普通的数据结构;RMI可以传递对象