进程与线程

来源:互联网 发布:淘宝搜索词查询软件 编辑:程序博客网 时间:2024/06/09 17:27

一、操作系统的主要工作是:

1、管理计算机软硬件资源:程序的执行、管理CPU、内存、磁盘、其他I/O设备;

2、提供人机接口:对程序员:API(通过系统调用)、对普通用户:Shell、GUI;


二、CPU、进程、线程:

1、CPU的构成:运算器、控制器、寄存器、Cache;

     控制器包括:PC、IR、PSW;

     寄存器包括:数据、地址、条件码寄存器(用户可见);

                        PC、IR、PSW(用户不可见)

2、指令的执行过程

    先从存储器中每次取出一条指令,执行这条指令;一个单条指令处理过程称为一个指令周期,程序的执行是由不断取指和执行指令周期组成;                             

    (1)每个指令周期开始时,依据在程序计数器中的指令地址从存储器中取一条指令
    (2)在取指完成后根据指令类别自动将程序计数器的值变成下条指令的地址,自增1
    (3)取到的指令放在指令寄存器中
    (4)处理器解释并执行所要求的动作

3、特权指令和非特权指令: 

        特权指令:只能由OS使用的指令、一般引起处理器PSW状态的切换;处理器通过特殊的机制将处理器状态切换到OS运行的特权状态(管态),然后将处理权移交给OS中的一段特殊代码,这一过程称为陷入;

        处理器的状态:多数OS系统将处理器工作状态划分为管态和目态;管态是OS管理程序运行的状态,较高的特权级别,又称特权态、内核态、系统态;目态是用户程序运行时的状态,较低的特权级别,又称普通态、用户态;CPU中设置了PSW来区分管态和目态,它们之间切换的具体方式为:目态→管态,唯一途径是 中断、异常、陷入机制;而管态→目态,设置PSW可实现;


4、中断与异常机制:

        中断:外部事件引起(正在运行的程序不期望发生)一般由IO、硬件造成

        异常:内部事件引起(程序自身引发造成)               CPU执行处错等情况

       中断响应:系统运行时,若响应中断,中断硬件部件将CPU控制权转给中断处理程序;一,保存相关寄存器信息;二、分析中断原因;三、执行对应处理程序;四、恢复程序,返回被打断的程序;中断过程为:发生事件→保护现场→查表→调用中断处理程序→返回以前正在执行的程序;


5、进程和线程:

        程序的顺序执行:在计算机系统中只有一个程序在运行,这个程序独占系统中所有资源,其执行不受外界影响。一道程序执行完后另一道才能开始。

        程序的并发执行:若干个程序同时在系统中执行,这些程序的执行在时间上是重叠的,一个程序的执行尚未结束,另一个程序的执行已经开始。 

        进程的定义:程序在处理机上执行时所发生的活动称为进程;一个具有一定独立功能的程序关于某个数据集合的一次运行活动。

        进程与程序的区别:进程是动态的概念,而程序是静态的概念;执行中的程序可称之为进程;程序可以作为一种软件资料长期存在,而进程是有一定生命期的。程序是永久的,进程是暂时的。

        进程的类型:按任务性质分:用户进程,系统进程; 按活动特点分:CPU限制进程,IO限制进程;

        进程的状态及转换:进程有三种基本状态,进程在生命消亡前处于且仅处于三种基本状态之一。

                       就绪状态(Ready):存在于处理机调度队列中的那些进程,它们已经准备就绪,一旦得到CPU,就立即可以运行。这些进程所处的状态为就绪状态。
                       运行状态(Running):正在运行的进程所处的状态为运行状态。拥有CPU。
                       等待状态(Wait / Blocked ):若一进程正在等待某一事件发生(如等待输入输出工作完成),这时,即使给它CPU,它也无法运行,称该进程处于等待状态、阻塞、 睡眠、封锁状态。

                   

        进程挂起:概念:处于非运行状态的进程:内存-----外存;由于I/O操作比CPU计算慢得多,故常会出现内存中所有进程都等待I/O的现象。即使运行多个程序,处理器在大多数时间仍处于空闲状态。为此可采用交换方法,将内存中的一部分进程转移到磁盘中。在进程行为模式中需增加一个新的挂起状态,当内存所有进程阻塞时,操作系统可将一进程置为挂起状态并交换到磁盘,再调入另一进程执行。

                       

        进程控制块(PCB):为了描述一个进程和其它进程以及系统资源的关系,为了刻画一个进程在各个不同时期所处的状态,人们采用了一个与进程相联系的数据块,称为进程控制块(PCB)。系统利用PCB来控制和管理进程,所以PCB是系统感知进程存在的唯一标志;进程与PCB是一一对应的;PCB包括了:进程标识、处理器状态信息、进程调度信息、进程控制信息;不同状态进程分别组成队列:运行队列、就绪队列、等待队列;

        进程控制的实现:进程控制就是对系统中的所有进程实施管理,进程控制一般由原语来实现。原语是一种特殊的系统功能调用,它可以完成一个特定的功能,其特点是原语执行时不可被中断(原子操作)。常见进程的控制原语有四个基本的操作:创建原语、撤销原语、阻塞原语、唤醒原语;

                      进程创建:一,申请空白的PCB(进程控制块);二、为新的进程分配资源,如内存;三、初始化PCB;四、将新进程插入就绪队列;四个步骤必须一次性完成;

                      进程撤销:检索PCB中进程的标识符,从PCB中释放;

                      进程阻塞:当进程期待的某一事件出现(如从键盘接收字符),自己将自己阻塞;

                      进程唤醒:处于阻塞的进程不可能自己唤醒自己,由其他进程唤醒;

        线程的引入:引入进程的目的是为了使多个程序并发执行,以改善资源利用率、提高系统吞吐量。引入线程则是为了减少程序并发执行时所付出的时空开销。进程是一个可拥有资源的基本单位。进程同时又是一个可独立调度和分派的基本单位。人们想到将进程的上述两个属性分开,即对作为调度和分派的基本单位,不同时作为独立分配资源的单位;对拥有资源的单位,不对之进行频繁切换。线程因而产生。

        线程的定义:线程是进程内的一个相对独立的、可独立调度和指派的执行单元。线程也有一个从创建到消亡的生命过程,虽然在不同的操作系统,线程的状态设计不完全相同,但就绪、运行、阻塞3个关键的状态是共有的。线程中不具有进程中的挂起状态。

         线程的实现:用户级线程(APP),由用户的应用程序完成所有线程的管理;切换不需要核心态,线程库提供线程管理系统;

                                核心级线程(在OS内核):由OS内核里面的线程来完成

                                混合线程:是上面两种线程的结合(多个用户线程对应一个核心级线程)

         进程和线程的比较:进程拥有独立资源,线程独立调度和分配;它们都能并发执行,线程的时空开销小;


6、进程的同步:

       进程同步的含义:进程同步是指对多个相关进程在执行次序上进行协调,它的目的是使系统中诸进程之间能有效地共享资源和相互合作,从而使程序的执行具有可再现性;或系统中诸进程之间在逻辑上的相互制约的关系(直接的-同步;间接的—互斥)。

        同步的两种形式:直接制约(同步):进程之间都知道对方存在的作用,等待对方执行,协同合作;间接制约(互斥):进程之间独占自己的资源;

        临界资源:一次只允许一个进程使用的资源(数据共享);采用互斥的方式实现对临界资源的共享;

        临界区:访问临界资源的那段代码称为临界区;所以访问临界资源的过程是:进入区(检查是否能进入)------临界区-------退出区(用完资源释放);

       想要进入临界资源必须:1)一次只允许一个进程进入临界区;2)任何时候,处于临界区的进程不得多于一个;3)进入临界区的进程要在有限的时间内退出;4)若不能进入自己的临界区,则应让出处理机资源。

        实现互斥方式的几种方法:(1)软件方法(2)硬件方法(3)P-V操作(加锁机制)

        (1)软件方法的算法:Repeat
                                                       flag[i]:=true;
                                                       turn:=j;
                                                       While (flag[ j] and turn=j) do no_op;


                                                       Critical section

                                                        flag[i]:=false;


                                                       Other code
                                                   Until false

        (2)硬件方法实现互斥:利用Test-and-Set指令实现互斥;利用swap指令实现进程互斥;

                                                  Repeat
                                                        while TS(lock) do skip;
                                                        critical section
                                                        lock:=false;
                                                        Other code
                                                  Until false;

          (3)信号量控制(P-V操作:进程管理中的难点)

                   分类发展过程:整型信号量-------记录型信号量-------信号量集;

        

0 0
原创粉丝点击