进程相关

  • 试说明进程在三个基本状态之间转换的典型原因

    • 就绪状态->执行状态:进程分配到CPU资源
    • 执行状态->就绪状态:时间片用完
    • 执行状态->阻塞状态: I/O请求;
    • 阻塞状态->就绪状态: I/O完成。
  • PV操作

    • 概念:PV操作与信号量的处理相关,P表示通过的意思,V表示释放的意思。
    • 所谓信号灯,实际上就是用来控制进程状态的一个代表某一资源的存储单元。例如,p1和p2是分别将数据送入缓冲B和从缓冲B读出数据的两个进程,为了防止这两个进程并发时产生错误,Dijkstra设计了一种同步机制叫“PV操作”,P操作和V操作是执行时不被打断的两个操作系统原语。
    • PV原语:PV操作是典型的同步机制之一。用一个信号量与一个消息联系起来,当信号量的值为0时,表示期望的消息尚未产生
  • 经典进程同步问题

    • 生产者-消费者问题
      • 概念:假设有两个共享固定大小缓冲区的线程–即所谓的”生产者”和”消费者”—在实际运行时会发生问题。
      • 问题:生产者的主要作用是生成一定量的数据放到缓冲区中,然后重复此过程。与此同时,消费者也在缓冲区消耗这些数据。该问题的关键就是要保证生产者不会在缓冲区满时加入数据,消费者也不会在缓冲区中空时消耗数据。
      • 解决方法:令生产者在缓冲区满时休眠,等到下次消费者消耗缓冲区中的数据的时候,生产者才能被唤醒,开始往缓冲区添加数据。 同样,也可以让消费者在缓冲区空时进入休眠,等到生产者往缓冲区添加数据之后,再唤醒消费者。
      • 信号量实现:
        1
        2
        3
        4
        5
        6
        7
        8
        9
        10
        11
        12
        13
        14
        15
        16
        17
        18
        19
        20
        21
        多生产者-多消费者问题
        Process Pi(1...m);//生产者
        .....
        Repeat
        //生产一个产品
        wait(buffer);
        wait(S);
        //送产品到Buffer(in)
        in=(int+1)mod n;
        singal(s);
        singal(prod);
        Process Pi(1...m);//消费者
        .....
        Repeat
        //生产一个产品
        wait(prod);
        wait(S);
        //送产品到Buffer(in)
        out=(out+1)mod N;
        singal(s);
        singal(buf);

进程控制块

  • 作用
    使一个在多道程序环境下不能独立运行的程序,称为一个能独立运行的基本单位,一个能与其它进程并发执行的进程。
  • 结构

    • 进程标识符

      1
      2
      3
      进程标识符用于唯一地标识一个进程。
      (1)内部标识符。(方便系统)
      (2) 外部标识符。(方便用户)
    • 处理机状态

    • 进程调度信息
      1
      2
      3
      4
      (1)进程状态
      (2)进程优先级
      (3)进程调度所需的其它信息
      (4)事件
+ 进程控制信息

    
1
2
3
4
(1)程序和数据的地址
(2)进程同步和通信 机制
(3)资源清单
(4)链接指针
  • 组织方式
    • 链接方式
    • 索引方式

进程同步

两种制约关系

  • 间接相互制约关系(共享资源)
  • 直接相互制约关系(合作)

同步机制应遵循的规则

  • 空闲让进
  • 忙则等待
  • 有限等待
  • 让权等待

进程同步机制

  • 信号量机制

    • 整型信号量
    • 记录型信号量
    • AND型信号量
    • 信号量集
  • 管程机制
    一个管程定义了一个数据结构和能为并发进程所执行的一组操作,这组操作能同步进程和改变管程中的数据。

    • 管程的名称
    • 局部于管程内部的共享数据结构说明
    • 对该数据结构进行操作的一组过程
    • 对局部于管程内部的共享数据设置初始值的语句

进程通信

  • 共享存储器系统
  • 消息传递系统
  • 管道通信

线程

  • 属性
    • 轻型实体
      不拥有系统资源,独立tcb,用于指示被执行指令序列的程序计数器,保留局部变量、少数状态参数和返回地址等的一组寄存器和堆栈
    • 可独立调度和分派的基本单位
    • 可并发执行
    • 共享进程资源
  • 实现方式
    1.内核支持线程
    2.用户级线程