【计算机操作系统】第二篇:进程的描述和控制,进程状态,PCB,进程同步,临界资源,临界区,信号量解决进程同步

目录

进程的描述:

进程的定义:

PCB:进程控制块:

进程控制块中信息:

进程的基本状态和转换:

进程的三种基本状态:

创建状态和终止状态:

五种状态的转换:

 进程同步:

基本概念:

两种形式制约关系:

临界资源:

生产者--消费者问题:

同步机制规则:

信号量机制:

 


进程的描述:

进程的定义:

  1. 多道程序的环境下,程序的执行属于并发执行,此时他们讲失去封闭性,并具有间断性以及其运行结果的不可再现性特征;
  2. 因此,程序通常是不能参与并发执行的,否则程序的运行就失去了意义;
  3. 为了使程序并发执行,并且可以对并发执行的程序进行描述和控制,引入了"进程"的概念;
  4. 进程是程序的一次性执行;
  5. 进程是一个程序及其数据在处理机上顺序执行时所发生的活动;
  6. 进程是具有独立功能的程序在一个数据集合上运行的过程;
  7. OS中的进程定义:进程是进程实体的运行过程,是系统进行资源分配和调度的一个独立单位;

PCB:进程控制块:

  1. 为了使参与并发执行的每个程序都能独立运行,在操作系统中为之配置了一个专门的数据结构,称为进程控制块(Process Control Block);
  2. 系统利用PCB来描述进程的基本情况和活动过程,进而控制和管理进程;
  3. 程序段,相关数据段,和PCB三部分组成进程实体;
  4. 创建进程,实际上就是创建进程实体中的PCB,撤销进程,实际上就是撤销进程的PCB;

进程控制块中信息:

  1. 进程标识符: 用于唯一的标识一个进程;
  2. 处理机状态: 
  3. 进程调度信息:  进程状态,进程优先级, 进程调度所需信息 ,  事件;
  4. 进程控制信息:  程序数据地址,  进程同步和通信机制,  资源清单,  链接指针;

进程的基本状态和转换:

  • 进程的三种基本状态:

  • 就绪状态:    
  1.  进程已经准备好运行的状态,已经分配到处CPU之外的所有必要资源;
  2. 系统中有多个处于就绪状态的进程,通常按照一定的策略(如优先级策略)排成一个队列,称为就绪队列;
  • 执行状态:
  1. 指进程已经获得CPU,程序正在执行的状态;
  2. 单处理机系统,只有一个进程处于执行状态;
  • 阻塞状态:
  1. 正在执行的进程由于发生某些事件,(如I/O请求,中断缓冲区失败等,)暂时无法继续执行的状态;
  2. 进程运行收到阻塞;
  3. 此时引起进程调度,OS把处理机分配给就绪状态的进程,受阻进程处于暂停状态,这种暂停状态成为阻塞状态;
  4. 处于阻塞状态的进程也会排成阻塞队列;

创建状态和终止状态:

  1. 创建过程:   进程申请空白PCB--------->向PCB中填写控制管理进程的信息----------->为进程分配资源----------->初始化进程控制块---------->将进程转入就绪状态进入就绪队列;
  2. 创建状态:   系统内存不够,创建工作未完成,进程不能调度运行,此时de 状态为创建状态;
  3. 终止过程:    调用进程终止原语---------->将PCB清零---------->将PCB空间返还系统
  4. 终止状态:    进程到达了自然结束点,出现了无法克服的错误,或者被操作系统终结,

五种状态的转换:

 

 进程同步:

基本概念:

  1. 为保证多个进程有条不紊的执行,多道程序系统中,引入了进程同步机制;
  2. 单处理机中的进程同步机制:  硬件同步机制,  信号量机制,管程机制;

两种形式制约关系:

  1. 间接相互制约: 由于共享资源,只是并发执行的程序之间相互制约;
  2. 直接相互制约:  多个进程之间的相互合作;

临界资源:

  1. 诸进程间采取互斥方式,实现某些资源的共享;
  2. l临界区:  每个进程中,访问临界资源的那段代码成为临界区;
  3. 访问临界资源的循环进程描述:
  4. while(ture){
          进入区;        
          临界区;
          推出区;
          剩余区;
    }

     

生产者--消费者问题:

  1. 描述:   一群生产者进行生产产品,将产品供给消费者进程去消费,为了使生产者进程和消费者进程可以并发执行,两者之间设置了一个具有n个缓冲区的缓冲池;
  2. 生产者进程将所有生产的产品放入一个缓冲区中,消费者进程可以从一个缓冲区中取走产品消费;
  3. 所有生产者进程和消费者进程以异步方式进行,但它们之间必须同步;
  4. 利用数组buffer表示具有n个缓冲区的缓冲池;
  5. 每投入/取出一个产品时,缓冲池中暂存产品(已去追产品) 数组单元指针in(out)加一;
  6. in = (in+1)%n       或者 out =(out+1)%n        当  (in+1)%n  =out,  表示缓冲池满;     in=out  ,表示缓冲池空;
  7. int in =0,out =  0,  count =0 ;       item  buffer[];
  8. 局部变量nextp,   生产者进程里:     用来暂存每次刚刚生产出来的产品;   局部变量nextc,消费者进程里:    存放每次要消费的产品;
void  producer(){

     while(1){

         produce an item in nextp;
          ......

              while(count==n)
                    ......
                  buffer[in]=nextp;

                  in = (in+1)%n;

                  counter++;

               }

} 



void  consumer(){

     while(1){
         
              while(count==0)
                    ......
               nextc=buffer[out];

               out = (out+1)%n;

               counter--;

               consumer an item in nextc;



               }

} 

同步机制规则:

  1. 空闲让进:  无进程处于临界区时,临界资源空闲,则允许一个进程进入临界区,有效利用临界资源;
  2. 忙则等待:   已有进程进入临界区,临界资源正在被访问,其他试图进入临界区的进程需要等待;
  3. 有限等待:    对要求访问临界资源的进程,保证有限时间内进入,防止陷入"死等";
  4. 让权等待:     进程不能进入自己的临界区,立即释放处理机,以免进入"忙等";

信号量机制:

  • 整型信号量:
  1. 用于表示资源数目的整形量S,除了初始化,仅通过两个标准的原子操作wait(S),和signal(S)来访问;
  2. 这两个分别是P.V操作;
P操作:  wait(S){

       while(S<=0);      //阻断资源

       S--;
}

V操作:   signal(S){
       
         S++;    //求释放资源

}
  • 记录型信号量:
  1. 整型信号量机制中wait操作,只要信号量S<=0,就不断测试;
  2. 因此该机制未遵循"让权等待"的准则.而是使进程处于"忙等"的状态;

 

 

 

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值