操作系统-1——进程

2019-07-14 09:00发布

一.基本概念 

1.进程:数据集程序在一个数据集执行的过程。        #组成:程序代码,数据集栈,进程控制块(PCB)——是进程存在的唯一标识,OS根据PCB的属性控制进程。
2.上下文:进程运行时CPU的寄存器数据集合(现场)。包括了用户可见寄存器和控制/状态寄存器。3.分派器(即进程调度程序):调度时发生上下文切换:保存旧进程的上下文到它的PCB,从新进程的PCB恢复它的上下文到寄存器。即选择并调度一个进程,使之占用CPU运行。!#引入进程,由于实现了并发执行和资源共享,可提高资源利用率吞吐率的好处,但却增加了系统的时间空间开销。

二.进程的创建和终止

1.进程创建:OS为进程建立PCB,分配内存空间。    #导致进程创建的原因:
        ①新的批处理作业:作业提交后,开始运行时创建进程。
        ②交互登录:新用户登录和接受用户命令时创建进程。
        ③OS提供服务:如控制打印,网络通信等服务进程。
        ④父进程派送子进程:父进程请求创建子进程。
    #创建的步骤
        ①给新进程分配一个新PCB和唯一PID。
        ②给进程分配内存空间(代码,数据,栈)。
        ③初始化PCB:各属性取默认值或所请求的值。在UNIX中,子进程PCB基本复制自父进程PCB。
        ④将PCB放置就绪队列或就绪挂起队列。
        ⑤创建其他数据结构:如记账,日志等。
2.进程终止:回收内存,释放资源,销毁PCB。    #导致进程终止的原因:
        ①进程正常运行完毕
        ②用户或OS干预
        ③父进程请求或父进程已终止
        ④运行时发生的各种故障和错误
3.五状态模型   3.1进程状态
  • 新建new:进程正被创建。分配内存后将被设置为就绪态。
  • 就绪ready:进程已得到除CPU外的其它所需资源。
  • 运行running:进程指令正在被执行。
  • 阻塞(等待)blocked:进程正等待资源或某事件发生。
  • 退出exit:进程已经正常或异常结束。回收资源,善后。
3.2进程队列
  • 处于同一状态的进程PCB组成一个进程队列。
    ①就绪队列:所有就绪进程按FCFS或优先级顺序排队。    ②等待(阻塞)队列:每一种等待时间对应于一个队列。

  • OS中PCB的数量是固定或不固定的,但总是有限的。
3.3 被挂起的进程
  • 挂起的根本原因:内存不足,不得不把部分进程交换到磁盘。
  • 两种挂起态:就绪挂起态、阻塞挂起态:外存就绪,阻塞态。即由于内存有限,将原位于内存的就绪/阻塞进程(代码数据)换出到外存(磁盘)上。
  • 解除挂起:当挂起进程优先级高或内存空间足够时,把位于磁盘的挂起进程(代码数据)换入到内存。
!#PCB始终在内存中。

四.进程描述

4.1操作系统的控制结构    OS构造并维护所管理的每个实体的信息表,4类
  • 内存表:跟踪内存(实存)和外存(虚拟内存)。
  • I/O表:管理I/O设备和通道。
  • 文件表:文件属性
  • 进程表:PCB集合
4.2进程控制结构PCB
  • PCB:进程属性的集合。
  • OS进程表中包含了所有进程的PCB
  • 创建新进程时,分配进程表中的一个空闲PCB,读写属性。
PCB的索引(PID)唯一地标识该进程。PSW(程序状态字寄存器):指明CPU当前特权级别、终端屏蔽码,(中断优先级)等。

五.进程控制

5.1CPU有两种执行模式:    ①系统态:只能执行非特权指令。    ②用户态:可以执行所有指令,使用所有资源以及改变CPU状态。
  • 特权指令:在系统态下执行的指令(OS内核使用)。
  • 非特权指令:用户态下执行(用户程序)。
?#CPU何时从用户态到系统态?
  • 执行系统调用(即内核代码,由OS提供服务)时。
  • 发生终端或异常时,执行中断处理程序。
?#CPU何时从系统态到用户态?
  • 系统调用或终端处理完毕后,执行IRET(中断返回)指令,恢复原进程的PSW,回到用户态。
?#注意
5.2fork()在unix中,父进程通过系统调用fork()创建子进程。
  • 父、子有程并发执行,且父子共享父进程的所有资源。
  • 子进程复制父进程的地址空间,甚至有相同的正文段和程序计数器PC值。
  • 写时复制Copy_on_Write技术可减少不必要的复制:fork时父子共用父空间,当一方试图修改时才复制。
!!#fork()有两个返回值:向父进程返回子进程的PID,向子进程返回0