操作系统的进程管理知识点

1.关于并发执行和顺序执行:顺序执行即在某一时间段只执行单个程序。并发执行即多个事件在同一时期发生。
顺序执行的3个特点:1.顺序性 2.封闭性 3.可再现性(输入初始条件相同,结果一定不变)
并发执行的3个特点:1.间断性(一个程序可能会运行→暂停→运行…) 2.开放/交互性(多个程序相互影响) 3.不可再现性(统一初始数据在不同条件下执行结果可能不同)

2.进程及其特性:
(1)结构性:进程包含程序及其相关数据结构。PCB、程序块、数据块、堆栈。
(2)动态性:具有生命周期,由创建产生,调度运行,结束消亡。程序则是静态的文件。
(3)独立性:进程是操作系统资源分配、保护和调度的基本单位。进程的运行环境不是封闭的。
(4)并发性:同一段时间内,多个进程可以共享同一个CPU。

3.系统进程与用户进程。系统进程优先级高于用户进程。

4进程上下文:进程试题和支持进程运行的环境合称为进程上下文。
(1)用户级上下文【代码区、数据区、用户栈区、共享存储区】
(2)系统级上下文【PCB、内存管理信息、进程环境块、系统栈】
(3)寄存器上下文【程序状态寄存器、各类控制寄存器、地址寄存器、用户栈指针】

5.进程状态及转换
状态模型包括三态模型、五态模型、七态模型。
三态:就绪态(具备执行条件,等待分配CPU)、运行态(占用CPU并在执行)、阻塞态(受到阻塞不能执行)。
五态:新建态(新建成功后转入就绪状态)、终止态(进程不在运行)
七态:挂起就绪(进程具备运行条件,目前不在内存中,需要被系统调入内存才能运行)、挂起阻塞(进程在等待某一一事件,切当前进程不在内存中)。

部分状态转换:
(1)进程在运行态也能被挂起,转为挂起就绪态。
(2)就绪状态被挂起,则进程状态转换成挂起就绪状态。
(3)阻塞状态被挂起,则转换为挂起阻塞状态。
(4)创建进程时,内存空间足够,进入就绪状态,不够,进入挂起就绪状态。

6 .进程控制块PCB
进程标识符:分为内部标识符和外部标识符。内部标识符是操作系统为其设置的唯一整数。外部标识符是进程创建者提供的进程名。
现场信息:指进程运行时CPU的即时状态——寄存器中的数值,栈指针等。
控制信息:操作系统控制进程需要的信息。

当系统创建有一个进程时,就为它建立了一个PCB,进程结束时回收其PCB,进程也随之消亡。PCB可以被操作系统中的多个功能模块读取或修改。由于PCB经常被访问,故PCB应常驻内存。进一步将处于相同状态的进程的PCB组织进一个队列,形成运行队列、就绪队列、阻塞队列。

7 .进程控制:操作系统对进程声明周期的各个环节进行控制

核心态(管态)和用户态(目态):操作系统的内河代码、设备驱动需要运行于和心态,获得无限制的指令执行特权,自有访问内存空间任何有效地址。一般用户的进程代码收到CPU保护模式的诸多安全限制,运行于用户态,只能执行部分普通指令,只能访问页表映射的虚拟地址空间,只能访问系统许可的映射端口。

CPU模式切换不同于进程切换,也不一定引起进程切换或进程状态的转换。
步骤:
(1)命名进程:为新进程设置进程标识符。
(2)从PCB集合中为新进程申请一个控PCB。
(3)确定新进程的优先级。
(4)为新进程分配内存空间,如果进程需要共享某个已在内存的程序段,则必须建立共享程序段的链接指针。
(5)为新景程分配除内存外的其他各种资源。
(6)初始化PCB,将新进程的初始化信息写入进程控制块。
(7)如果就绪队列能够接纳新创建的进程,则将新进程插入到就绪队列。
(8)通知操作系统的其他管理模块。

进程完成后,系统及时回收它占有的全部资源以便其他进程使用,这是通过撤销原语完成的。
进程阻塞是进程的一种自主行为,为等待某时间发生,自己调用系统原语使得自己放弃CPU进入阻塞队列中等待。
挂起原语可以由该进程自己调用,也可以由其他进程或系统调用,但激活原语只能由其他进程或系统调用

8 .并发运行的多个进程之间存在两种基本关系:竞争和协作
死锁:一组进程均只占有部分所需资源而无法运行,陷入阻塞,永远等待。(进程-资源图构成回路)
饥饿:进程被调度程序长期忽视而分配不到CPU。
互斥:进程相互竞争资源。
同步;为完成共同任务的并发进程,协调,协作制约。
互斥也是一种特殊的同步。

9 .与时间有关的错误
如:售票系统
设公共区有全局变量Q;

void T1(){
int x=Q;//A
if (x>0){
    x--;//B
    Q=x;//C
    打印机票;}
else 打印“售罄”;
}

10 .临界资源和临界区
临界资源:某段时间内只能允许一个进程使用的资源
临界区:访问临界资源的代码段

(1)用软件的方法管理临界区
Perterson算法:

boolean flag[2]={false , false};
int turn;
void P0(){
  while(true){
    flag[0]=true;
    turn=1;
    while(flag[1]&&turn==1);//空循环
    临界区;
    flag[0]=false;
    ...
    }
 }

(2)用硬件方式管理临界区
特殊指令法:
TS指令如下

bool TS(bool &x){
       if (x==true){
          x=false;
          return true;
        }
        else return false;
}

实现互斥:

  bool x = true;
  cobegin              	//并发段开始
  process pi(){
      while(!TS(x));    //等待
      临界区;
      x=true;
   }
  coend;

SWAP 指令:

bool lock=false;
cobegin
process pi(){
bool ki=true;
do{
     SWAP(ki,lock);
     }while(ki);           //上锁
     临界区;
     SWAP(ki,lock);   //开锁
  }
  coend
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值