进程

2进程

现代操作系统追求的一个主要目标就是计算机的整体工作效率和利用率,为了达到这个目标,就必须让程序尽可能多的并发执行(同时执行),最大化的共享计算机的的所有资源。在硬件设计上,通过多CPU和多核CPU增加了程序的执行单元,在软件设计上,操作系统通过进程和线程来提高程序的并发度。程序的并行执行提高了计算机的效率,但也带来了许多复杂的问题。

2.1进程

1、程序:指令的有序集合,由它规定计算机完成某一任务时所需做的各种操作及操作顺序。

早期的计算机每次只能运行一个程序(如运行QQ,就不能运行word,看视频等其他操作),这样会极大浪费资源,如CPU工作的时候,外部设备可能空闲着,而当外部设备忙碌的时候,可能CPU空闲。

2、进程:一个可并发执行的具有独立功能的程序关于某个数据集合的一次执行过程。

3、进程和程序的区别:

1)进程是动态的,程序是静态的。程序是一组指令的集合,而进程是一段程序的一次动态执行。

2)进程是暂时的,程序时永久的。进程是一个状态变化的过程,动态的创建,执行后消亡。程序可长久保存。

3)进程和程序的组成不同。进程的组成包括程序、数据和进程控制块。程序时指令的有序集合。

4)进程和程序之间不是一一对应关系,一个程序可以有多个进程,一个进程至少要对应一个程序或多个程序,多个进程也可以对应相同的程序。

5)进程具有并发特征。进程是一个独立调度并能和其他进程并行运行的单位,而程序不能作为独立调度运行的单位。

如果把程序比作菜谱,则进程比作按照菜谱烹饪的过程,才就相当于数据集合。

4、进程的状态:

三状态:运行态,就绪态,阻塞态。

五状态:运行态,就绪态,阻塞态,创建态,终止态。

七状态:运行态,就绪太,阻塞态,创建态,终止态,挂起就绪态,挂起阻塞态。

5、进程控制块(PCB

操作系统为了管理进程设置的一个专门的数据机构,用它来记录进程的外部特征,描述进程的运动变化过程。系统利用PCB来控制管理进程,一个进程只有一个PCBPCB是进程存在与否的唯一标记,因为操作系统只有依据PCB才能感知进程、管理进程与控制进程,所以PCB是系统感知进程存在的唯一标志。进程与PCB是一一对应的。

PCB的组织方式:线性,链表,索引方式。

6、进程的映像

当一个程序进入计算机的内存就构成了进程,操作系统中把进程物理实体和支持进程运行的环境合称为进程上下文,因此进程的运行被认为是在进程的上下文中执行的。进程的上下文包括三个组成部分。

1)用户级上下文。

2)系统级上下文。

3)寄存器上下文。

一个进程映像(也称为进程的实体)包括:

1)程序块。(2)数据块。3)系统/用户堆栈。4)进程控制块

7进程创建的时机

系统初始化时,系统调用时,用户进程创建,批处理系统初始化

8进程的创建

申请空白PCB,为新进程分配资源,初始化进程控制块,将新进程加入到管理队列。

9有关进程的原语

创建,撤销,阻塞,唤醒,挂起,解挂

2.2线程

1、线程:是进程的一个实体,它是比进程更小的能独立运行的基本单位。在操作系统中引入进程的目的是为了使多个程序并发执行,以提高资源的利用率和系统的吞吐量,而在操作系统引入线程的目的是为了减少程序并发执行时所付出的时空开销。

如进程间切换需要一定的时间开销,假如进程之间频繁的切换,则进程切换开销会占据很大一部分时间,因此引入线程,即在同一进程中不同线程之间切换,切换代价会很小。但是在不同进程之间的不同线程中切换,切换代价还是很大的。

2、线程和进程的关系:

1)线程是进程的一部分,它是进程内的一个执行单元,通常,一个进程含有若干个线程,至少有一个线程。一个进程的多个线程都进程的地址空间里活动。

2)引入线程的操作系统中,资源分配的对象是进程,而不是线程。进程仍然是拥有资源的一个独立单位,它拥有自己的资源,一般的说,线程除有一点必不可少的资源外不拥有系统资源。线程使用的资源是进程分到的资源。

3)引入线程的操作系统,调度的基本单位是线程而不是进程。即CPU是分给线程的,真正在CPU上执行的是线程。

4)进程之间可以并发执行,而一个进程中的这些线程之间也可并发执行,而且在并发执行过程中,也需要协作同步。

5)进程调度,系统要进行进程上下文的切换,需要系统大量的开销。

6)线程调度,由于同一进程的线程共享进程的资源,其切换是把线程仅有的一小部分资源变换即可,从而提高了系统的效率。线程切换比进程切换快得多。因此有些人把线程又称为轻型进程。

7)从一个进程的线程向另一个进程的线程切换,将引起进程的上下文切换。

8)同一进程的多线程共享进程的所有资源,一个线程可以改变另一个线程的额数据,而多进程机制则不会产生这个问题。从安全角度看,线程不如进程安全。

3、线程控制块(TCB

操作系统引入线程后,通常在一个进程中包含多个线程,每个线程作为利用CPUdejibe的基本单位,是具有最小开销的实体。线程控制块包含以下内容

1)线程标识信息:系统内唯一的标识符。

2)线程状态和调度信息。

3)现场消息:主要是CPU内各个寄存器的内容。

4)线程私有存储区:系统栈和用户栈的指针。

5)指向PCB的指针:该线程归属哪个进程,使用哪个进程的资源。

由于线程不包含系统资源,所以TCBPCB要小得多。因此线程的创建、切换、撤销所需要的系统的时空开销小,速度块。

4、线程的级别

用户级线程(ULT):在进程中控制各个线程,由用户来表示。

内核级线程(KLT):系统内核来控制各个线程。系统的各个线程是并行的。

混合级

用户级线程转换时开销少,但是在传统的进程操作系统中,大多数系统调用将阻塞进程,因此,当线程执行一个系统调用时,不仅该线程被阻塞,而且,进程内的所有线程会被阻塞。而在内核级线程中,可以去选择另一个线程运行。

2.3进程间通信

进程间的两种关系:同步关系和互斥关系

进程间主要是资源的竞争和同步两个问题

1、临界区:访问共享资源的程序段,也就是对共享资源进行读写的那段程序片。临界区中被读写的共享资源被称为临界资源,即同时只能被一个进程访问的资源称为临界资源。

2、互斥,在某一时刻,资源只能让一个进程访问,如何实现互斥呢?

通过临界区和下面4个必要条件来保证对共享资源的互斥使用

1)任何两个进程都不能同时处于临界区

2)不对CPU的速度和数量做任何的假设

3)临界区外的额进程不得阻塞其他进程

4)不得是进程在临界区无休止的等待。

具体实现方法:

1)关中断。(2)锁变量。(3)严格轮转法。(4peterson算法。(5TSL指令。(6)对换指令

3、用信号量和PV操作来解决同步和互斥

信号量是个结构变量,由两部分组成,整数部分表示资源的个数,指针部分标识阻塞队列的头指针。信号量的操作只能通过PV原语来操作,P表示申请资源,V表示释放资源。

使用信号量,PV操作实现互斥应注意两点:

1)在每个程序中用于实现互斥的P(mutex)V(mutex)必须成对出现,即先做P操作,进入临界区;后做V操作,退出临界区。

2)互斥信号量mutex的初值是资源的个数,一般为1

使用信号量,来进行同步应注意两点:

1)信号量的初值一般设置为0

2)同步信号量的PV操作要成对出现,但是,它们分别出现在不同的进程嗲吗中,应注意PV操作在程序代码中出现的位置。

4、管程

管程实际上就是将系统的中所有信号量封装到一个公共函数中,供用户进程进行系统调用,这样用户就不用涉及到具体信号量的操作,也不用顾忌系统中的物理资源的增加和减少。管程是管理进程间同步的机制,它可以保证进程互斥地访问共享变量,并且提供了一个使用方便的阻塞和唤醒进程的原语。

可以这样认为,把系统中的共享资源用数据抽象的形式表示出来,对共享资源的管理就可用数据及在其上实施操作的若干过程来表示。而代表共享资源的数据及在其上实施操作的额一组过程就构成了管程。管程是被请求和释放资源的进程所调用。

5、三级调度

高级调度是选择哪些作业由外村调入内存,低级调度是选择内存中的就绪队列中的那个进程占有CPU,中级调度是选择内存中的进程与外存互换。

6、批处理系统的调度算法

先来先服务,最短作业优先,最短剩余时间优先,高响应比。

7、交互式系统的调度算法

时间片轮转,优先级算法,最短进程优先,多级反馈对垒,彩票算法,保证算法,公平算法

你可能感兴趣的:(线程,进程)