并发处理
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.用于进程控制的原语主要有哪几个?
19. UNIX系统中进程的主要状态:
运行状态、就绪状态、睡眠状态、创建状态、僵死状态。