0x06 操作系统的进程知识

进程(Process)

它是操作系统的CPU调度和资源分配的单位。

操作系统执行各种程序:

  • 批处理系统-作业(Job)
  • 分时系统-用户程序或任务(Task)

作业:被组装成一个整体运行的一组计算步骤
任务:进程或线程
作业和进程在这本书中基本可互换

进程

  • 执行中的程序
  • 进程的执行必须以顺序方式进行
  • 另一个说法:一个程序在一个数据集上的一次运行

例子:Windows XP
在这里插入图片描述

内存中的进程

进程包括:
(1)代码(text);
(2)当前活动:

  • 程序计数器(PC)-指向当前要执行的指令(地址)
  • 堆栈(Stack):存放函数参数、临时变量等临时数据
  • 数据(Data):全局变量,处理的文件
  • 堆(Heap):动态内存分配
    在这里插入图片描述

进程和程序

  • 进程是程序的一个实例,是程序的一次执行
  • 一个程序可对应一个或多个进程
  • 一个进程可对应一个或多个程序
  • 程序是进程的代码部分
  • 进程是活动实体,程序静止(被动)实体
  • 进程在内存,程序在外存

进程状态

进程执行时,改变状态

  • 就绪:进程等待分配处理器
  • 新建:在创建进程
  • 运行:指令在执行
  • 等待:进程等待某些事件发生
  • 终止:进程执行完毕

五状态变化图
从进程新建开始,一旦新建成功,就会处于就绪状态,处于就绪态的进程,如果被调度程序选中,获得处理机,则转为运行态。处于运行态的进程,有三种变化可能,一是被中断程序打断,或时间片运行完毕,变为就绪态;二是运行一段时间后,等待事件的发生,如I/O操作,变为等待态;三是进程运行结束,变为终止态。
处于等待态的进程,如果等待的事件或I/O完成了,则变为就绪态。等待态不能直接转为运行态。

进程控制块(PCB)

为了管理进程,系统为每个进程设计了一个数据结构,进程控制块(PCB)。
PCB包含同进程有关的信心,包括:

  • 进程状态
  • 程序计数器
  • CPU寄存器
  • CPU调度信息
  • 内存管理信息
  • 记账信息
  • I/O状态信息

在这里插入图片描述
不同系统的进程控制块的设计是不同的,
如Linux系统中的PCB是C结构:task_struct,保存了与进程有关的信息。为了便于管理,系统中所有进程的PCB用一个双向链表串起来,并有指针指示当前正在运行的进程。
在这里插入图片描述

Windows系统的PCB较复杂,每个Win32进程都由一个执行体进程块(executive process block)EPROCESS:PID,PCB,Access Token,Base Priority,句柄表,指向进程环境块PEB指针,默认和处理器集合等;
Windows的PCB称为内核进程对象KPROCESS;
执行体进程对象EPOCESS和KPROCESS位于内核空间;
进程环境块PEB(Process Environment Block),PEB位于用户空间。
在这里插入图片描述

进程上下文切换

进程的并发执行需要PCB保存和恢复现场。
在这里插入图片描述
这张图说明了两个进程之间的具体切换过程,即上下文切换。
图中P0进程正在CPU中运行,当有中断或系统调用到来时,需要切换到进程P1至CPU中运行。切换时,先将P0的现场信息保存至PCB0中,再将PCB1中的信息恢复至现场,然后运行进程P1
如果系统继续推进,P0切换P1过程类似,先保存现场至PCB1,再从P0中恢复现场,这里的现场主要是指CPU寄存器的内容、程序计数器的值、进程状态等。
上下文切换的时间开销较重,在切换时系统没有做有用的工作,而

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值