美文网首页
Section 2 - 进程的描述与控制 - PART - 2

Section 2 - 进程的描述与控制 - PART - 2

作者: 孙梦翔 | 来源:发表于2017-01-13 16:07 被阅读0次

进程的描述与控制

  • 6.进程的通信-高级通信
    • 进程通信是指进程之间的信息交换,根据交换信息量的多少分为:
      • 低级进程通信:交换信息量较少,特点为
        • 效率低
        • 通信对用户不透明
      • 高级进程通信:交换信息量较多,效率高,又分为
        • 共享存储器系统:互相通信的进程通过共享某些数据结构或者存储区读写来交换数据,前者是低级通信(基于共享数据结构的通信方式),只适用于少量数据的交换,后者是高级通信(基于共享存储区的通信方式),通过在内存中划分一块共享存储区,诸进程通过这个共享存储区来进行读写数据实现进程通信
        • 消息传递系统:指进程之间以消息为单位,程序员通过通信原语,在进程间实现数据交换,按照实现方式的不同分为
          • 直接通信方式:发送进程利用OS提供的发送原语,直接将消息发送给接受进程
            • 要求:发送进程和接受进程都以显示方式提供对方的标识符
            • OS提供的通信原语
              • Send(Receiver,message)
              • Receiver(Sender,message)
          • 间接通信方式:发送进程和接受进程通过共享一个中间实体(信箱)来实现进程通信。系统提供的若干条原语:
            • 信箱创建和撤销原语
            • 两条通信原语:①Send(Mailbox,message) 将消息发送给指定邮箱②Receive(mailbox,message)从指定邮箱接受消息
            • 信箱的分类:①私用邮箱(进程是自己创建)②公用邮箱(OS创建)③共享邮箱(某进程创建,但指定为共享的)
            • 发送进程和接受进程之间,存在四种相对关系:①一对一关系:发送进程和接受进程之间建立一条专用的通信链路②多对一关系:允许提供服务的进程与多个用户进程进行交互,也称为客户/服务器交互(C/S interaction)③一对多关系:允许一个发送进程与多个接受进程进行交互,使发送进程可用广播方式,发送消息④多对多关系:允许建立一个公用邮箱,让多个进程都能向邮箱中投递消息,也能取走自己的消息
          • 消息传递系统实现中的若干问题
            • 通信链路:为了在发送进程和接受进程间实现通信,需建立一条通信链路在两个进程间,建立链路有两种方式:
              • 显示建立链路(发送进程需要在通信前用显示"建立连接"原语命令请求OS为之建立一条通信链路,用完后就拆掉链路)
              • 隐式建立链路(发送进程只需要利用OS提供的发送原语,OS会自动为之创建一条链路)
              • 通信链路的链接方式:①点-点②多点
              • 通信方式:①单向通信链路:只允许发送进程向接受进程发送消息,或者相反②双向通信链路:允许进程A和进程B同时互发消息
              • 通信链路的容量:①无容量②有容量
            • 消息格式
              • 消息头
              • 消息正文
            • 进程的同步方式
              • 发送进程和接受进程均堵塞:紧密同步,无缓冲
              • 发送进程不堵塞,接受进程堵塞:应用广
              • 发送和接受进程均不堵塞:较常见,即发送和接受进程都在忙自己事情,仅当发生某事件使他无法继续进程,才会堵塞
          • 直接消息传递系统实例
            • 消息缓存队列通信机制中的数据结构
              • 消息缓存区

                typedef struct message_buffer{
                    int sender; // 发送消息的进程名称或标识符
                    int size;  // 发送消息的长度
                    char *text; // 发送消息的正文
                    struct message_buffer *next; // 指向下一个消息缓存区的指针
                }
                
              • 在进程PCB中设计通信的数据结构

                typedef struct processcontrol_block {
                    struct message_buffer *mq; //消息队列队里的首指针
                    semaphore mutex; // 消息队列互斥信号量,初值为1
                    semaphore sm; // 消息队列资源信号量
                }
                
            • 发送原语send
              • 申请一个消息缓存区,将发送区内容(发送消息正文,进程标识符等)复制到这个缓存区;找到接受区的PCB,执行互斥操作P(mutex),把缓存区挂到接受进程消息队列的尾部,执行V(mutex),然后执行V(sm),即消息数加1
            • 接受原语receive
            • 执行P(sm),查看是否有信件,执行互斥操作P(mutex),从消息队列中摘下第一个消息,执行V(mutex),把消息缓存区内容复制到接收区,释放消息缓存区
Snip20170113_1.png
        - 管道通信系统
            - 发送进程(写进程)通过一个管道(*管道:连接一个读进程和一个写进程之间实现通信的共享文件*)以字符流形式将大量的数据送入管道,接受进程(读进程)从管道接受数据
  • 7.线程的基本概念
    • 引入线程的目的
      • 使多个程序能并发执行
      • 改善资源利用率,提高系统吞吐量
      • 减少程序并发执行时,所付出的时空开销
      • 使OS具有更好的并发性
    • 线程的定义
      • 线程是进程中的一个实体,是被系统独立调度和分派的基本单位。线程基本上自己不拥有系统资源,只拥有少部分在运行中必不可少的资源,但他可与同属一个进程中的其他线程共享进程所拥有的全部资源
      • 一个线程可以创建和撤销另一个线程
      • 同一个进程中的多个线程可以并发执行
      • 当一个线程改变了存储器中的一个数据项时,当其他线程访问这一项时,能够看到修改后的结果
      • 若一个线程为读操作打开一个文件时,同一个进程中其他线程也能从该文件中读
    • 线程的属性
      • 线程是轻型实体。基本上不拥有系统资源,只有一点必不可少的、能保证独立运行的资源
      • 线程是独立调度和分配的基本单位
      • 可并发执行。一个进程中的多个线程可并发执行;不同进程中的线程也能并发执行
      • 共享进程资源。同一个进程中的多个线程,都可以共享该进程所拥有的资源
Snip20170113_2.png
- 多线程
    - 指OS支持在一个进程中执行多个线程的能力
    - 传统的进程中只有一个线程在执行
        - MS-DOS 是支持单用户进程和单线程的OS
        - UNIX支持多用户进程,但只支持每个进程一个线程(即多进程单线程)
    - 单进程多线程的例子:JAVA运行环境
    - 多进程多线程的例子:Windows 2000
- 多线程OS中*进程*的属性
    -   作为系统资源分配的单位
    -   可包括多个线程。至少包括一个线程,这些线程可并发执行。OS中所有线程都只能属于某一个特定的进程
    -   进程并不是一个可执行的实体了,线程是独立运行的基本单位
- 线程间的同步
    -    互斥锁
        -    比较简单的、用于实现线程间对资源互斥访问的机制
    -    条件变量
        -    为避免互斥锁造成的死锁问题,在创建互斥锁时就联系着一个条件变量
        -    单纯的互斥锁用于短期锁定,用来保证互斥进入CS
        -    条件变量用于线程的长期等待,知道所等资源的可用  
    -    信号量机制
        -    私用信号量
        -    公用信号量
    -    多读、单写锁
-   线程的实现方式
    -  内核支持线程KST(kernel Supported Threads)的实现:如Apple的MAC OS
    -  用户级线程ULT(User Level Threads):一些数据库管理系统
    -  组合方式:把ULT和KST两种方式进行组合,提供了组合方式ULT/KST线程
Snip20170113_4.png Snip20170113_5.png

相关文章

  • Section 2 - 进程的描述与控制 - PART - 2

    进程的描述与控制 6.进程的通信-高级通信进程通信是指进程之间的信息交换,根据交换信息量的多少分为:低级进程通信:...

  • Section 2 - 进程的描述与控制 - PART - 1

    进程的描述与控制 1.前趋图与程序执行1.1 前趋图介绍:描述程序先后执行顺序,又称为有向无循环图,可记为DAG(...

  • Chapter2-进程的描述与控制

    资源分配和独立运行的基本单位 前趋图Pi->Pj 直接前趋,直接后继初始结点,终止结点结点的重量->执行时间 程序...

  • 第二章 进程的描述与控制2

    2.2进程控制与同步 一、进程控制 1、进程控制的基本过程: 1)进程的创建 2)进程的终止 3)进程的阻塞与唤醒...

  • 进程的描述与控制

    进程的定义和特征 进程的特征 进程的基本状态及转换 进程的三种基本状态 三种基本状态的转换 创建状态和终止状态 挂...

  • 进程的描述与控制

    请解释一下,LINUX下的线程,GDI类 考察点:线程参考回答: LINUX实现的就是基于核心轻量级进程的”一对一...

  • 进程的描述与控制

    从今天开始我们复习一下操作系统面试相关的内容,也就是对大二下学期的重点知识进行以下回顾.面试常问的就是进程和线程这...

  • Section 2 - Part 2 -~~1| Helping

    【赏析者】(姓名) 7. Is there any way to help a child who’s upset...

  • Section 2 - Part 2 -~~1| Helping

    【赏析者】弼马温 7. Is there any way to help a child who’s upset ...

  • 进程描述与控制(二)

    先引入问题:OS如何感知进程,控制进程及其所用的系统资源?OS内核如何提供这些功能,操作系统也是进程吗?进程创建过...

网友评论

      本文标题:Section 2 - 进程的描述与控制 - PART - 2

      本文链接:https://www.haomeiwen.com/subject/passbttx.html