zoukankan      html  css  js  c++  java
  • 操作系统 庞丽萍 第四章

    并发处理

    1.程序的执行有两种方式:顺序执行和并发执行。

    程序的顺序执行是指:一个计算由若干个操作组成,而这些操作必须按照某种先后次序来执行,以保证操作的结果是正确的。程序的顺序执行具有顺序性、封闭性、可再现性;

    程序的并发执行是指:若干个程序段同时在系统中运行,这些程序段的执行在时间上是重叠的,一个程序段执行尚未结束,另一个程序段的执行已经开始。即使这种重叠是很小的一部分时间,也称这几个程序是并发执行的。程序并发执行特点:失去了程序的封闭性与可再现性,程序与计算不再一一对应,程序并发执行时存在相互制约。

    顺序执行是单道批处理系统的执行方式,也用于简单的单片机系统;现代操作系统多为并发执行,并发执行的目的是为了提高资源的利用率。

     注意:区分并发concurrency和并行parallel的区别

    2.与时间有关的错误

        程序并发执行时,若共享了公共变量,其执行结果将与并发执行程序的相对速度有关,此时即便给定相同的初始条件,也可能会得到不同的结果。

       封闭性:若一个程序的变量与其他程序执行时是不可接触的,则这个程序执行后的输出结果一定是其输入的一个与时间无关的函数。

    3.进程:是指一个具有独立功能的程序关于某个数据集合的一次运行活动,进程是程序在处理机上的执行过程和分配资源的基本单位。

     进程和程序的区别:(1)程序是指令的有序集合,其本身没有任何运行的含义,是一个静态的概念,而进程是程序在处理机上的一次执行过程,是一个动态概念;(2)进程是一个能独立运行的单位,能与其他进程并行地活动,而程序没有并行特征;(3)各个进程在并发执行过程中会产生相互制约关系,进程是竞争计算机系统有限资源的基本单位,也是进行处理机调度的基本单位。

    进程和程序的联系:进程一定包含一个程序,因为程序是进程完成功能的逻辑描述;而一个程序可以对应多个进程,即:如果一个程序同时运行于若干不同的数据集合上时,它将属于若干个不同的进程。

      

      

     4. 读者-写者问题

      

    5. 哲学家进餐问题

      

       

    6. 进程有哪几种基本的状态?

     对于一个实际操作系统,进程活动期间至少要区分三个基本状态:运行、就绪、等待(又称阻塞、睡眠、挂起)。做如此区分的原因是:如果系统能够为每一个进程提供一台处理机,则系统中所有的进程都可以同时执行,但实际上处理机的数目总是少于进程数,则系统中往往只有少数几个进程(单处理机系统中只有一个进程)可以真正获得处理机的控制权。把获得处理机控制权的进程的状态称为运行状态,把希望获得处理机控制权但是暂时还没得到的进程的状态称为就绪状态,把因为某种原因暂时不能运行的进程的状态称为等待状态。

     

    8. 进程控制块:为了描述一个进程与其他进程以及系统资源的关系,为了刻画一个进程在各个不同时期所处的状态,人们采用了一个与进程相联系的数据块,称为进程控制块PCB或者进程描述器 process descriptor。当系统创建一个进程时,必须为它设置一个PCB,然后根据PCB的信息对进程实施控制和管理。进程任务完成时,系统撤销它的PCB,进程也就随之消亡。

    13. 进程的互斥:操作系统中,当一个进程进入临界区使用临界资源时,另一个进程必须等待,当占用临界资源的进程退出临界区后,另一进程才被允许去访问此临界资源。我们称进程之间的这种相互制约关系为互斥。

    进程同步是指多个相关进程在执行次序上的协调。这些进程相互合作,在一些关键点上可能需要互相等待或互通消息。

     

    14. 进程与线程的比较

    线程有时也称为轻量级进程,它是比进程更小的活动单位,它是进程中的一个执行路径。一个进程可以有多个执行路径即线程。 线程和进程的主要区别如下:

    (1)线程是进程的一个组成部分。一个进程可以有多个线程,而且至少有一个可执行的线程。

    (2)进程是资源分配的基本单位,它拥有自己的地址空间和各种资源。线程是处理机调度的基本单位,它只能和其他线程共享进程的资源,而本身并不具有任何资源

    (3)进程的多个线程都在进程的地址空间内活动。这样,在以线程为单位进行处理机调度和切换时,由于不发生资源变化特别是地址空间的变化,因此切换时间较短。而以进程为单位进行处理机调度和切换时,由于涉及到资源转移及现场保护等问题,将导致切换时间变长和资源利用率降低。

    (4)线程和进程一样,都有自己的状态和相应的同步机制。但是,由于线程没有自己单独的程序和数据空间,因而不能像进程的程序和数据那样交换到外存去

    (5)进程的调度和控制大多由操作系统的内核完成,而线程的控制既可以由操作系统内核完成,也可以由用户控制完成

        

     

     17. 进程创建的主要过程及其功能:主要功能就是创建一个新的进程,当操作系统执行进程创建原语时,首先从进程控制块池中申请一个PCB结构,然后把相应的表项填入,这样就形成了一个进程实体。具体包括:

    (1)申请空白PCB(进程控制块);

    (2)为新进程分派资源;

    (3)初始化PCB;

    (4)将新进程插入就绪队列。

     18.用于进程控制的原语主要有哪几个?

    在操作系统中,用于进程控制的原语主要有创建原语、撤消原语、阻塞原语、唤醒原语。在UNIX系统中,分别对应fork,exit,sleep,wakeup原语。
    创建原语
        在实际系统中创建一个进程有两种方法:一是由操作系统建立,0#进程就是由操作系统建立的;二是由其他进程创建一个新的进程。基本操作都是一样的。创建进程原语总是先为新建进程申请一空白PCB,并为之分配唯一的数字表示符,使之获得PCB的内部名称,若该进程所对应的程序不在内存中,则应将它从外存储器调入内存,并将该进程有关信息填入PCB中,然后置该进程为就绪状态,并将它排入就绪队列和进程家族队列中。
    撤消原语
        撤消进程的实质是撤消进程存在标志——进程控制块PCB。一旦PCB被撤消,进程就消亡了。撤消原语的操作过程大致如下:以调用者提供的标志符n为索引,从该进程所在的队列,将它从该队列中消去,并撤消属于该进程的一切“子孙进程”,若有父进程则从父进程PCB中删除指向该进程的指针,并释放撤消进程所占用的全部资源,或则将其归还给其父进程,或则归还给系统。若被撤消的进程处于执行状态,应立即中断该进程的执行,并设置调度标志为真,以指示该进程被撤消后系统应重新调度。
    阻塞原语
       阻塞原语的大致工作过程如下:开始时,进程正处于执行状态,因此首先应中断CPU执行,并保存该进程的CPU现场,然后把阻塞状态赋予该进程,并将它插入到具有相同实体的阻塞队列中。
    唤醒原语
       一进程因为等待事件的发生而处于阻塞状态,当等待的事件完成后,进程又具有了继续执行的条件,这时就要把该进程从阻塞状态转变为就绪状态。这个工作由唤醒原语来完成。
       唤醒原语执行的操作有:先把被唤醒进程从阻塞队列中移出,设置该进程当前状态为就绪状态,然后再将该进程插入到就绪队列中。

    19. UNIX系统中进程的主要状态:

         运行状态、就绪状态、睡眠状态、创建状态、僵死状态。

  • 相关阅读:
    C#内建接口:IComparable
    C#内建接口:IEnumerable
    WPF中使用资源
    WPF中的触发器(Trigger)
    一文详解 | 开放搜索兼容Elasticsearch做召回引擎
    阿里云李飞飞:中国数据库的时与势
    如何构建流量无损的在线应用架构 | 专题开篇
    如何构建一个流量无损的在线应用架构 | 专题中篇
    多任务学习模型之ESMM介绍与实现
    云原生时代的运维体系进化
  • 原文地址:https://www.cnblogs.com/jiayouwyhit/p/3588518.html
Copyright © 2011-2022 走看看