操作系统
进程管理
进程与线程
进程
进程是正在进行中的程序,进程由程序控制块(PCB)、程序段和数据段组成,进程控制块存放操作系统对进程管理所需的各种信息,程序段存放程序,数据段存放程序运行时使用和产生的数据。进程是资源调度的最小单位。
线程
线程是CPU调度的最小单位,一个进程有一个或多个线程,它们共享进程资源。
进程和线程的区别
- 进程是资源调度的最小单位,线程不拥有资源,但是线程共享进程资源。
- 线程的CPU调度的最小单位,而进程是资源分享的最小单位。
- 创建或撤销进程所需的资源大于线程。
- 进程通讯需要借助IPC,而线程间可以通过直接读写同一进程中的数据进行通信。
进程的状态
进程至少有三种状态:就绪状态、运行状态和等待状态。
就绪状态: 进程已经获取除CPU外的所有资源,一旦获得CPU控制权,就可以立即执行。
运行状态: 进程获得CPU控制权,正在处理机上运行。
等待状态: 进程正在等待某一事件完成(例如I/O事件)而暂停,只有等到事件完成后才能继续执行。
进程控制块
进程可以看做正在进行的程序,操作系统要管理进程,就必须要知道进程的各种信息,这就是进程控制块的作用,进程控制块存放操作系统管理进程所需的各种信息,以便操作系统能够能好的管理进程。
进程控制块一般包括以下内容:
- 进程标识符。进程的唯一标识符,由创建者给出进程的标识符。另外,为了便于系统管理,进程还有一个内部标识符(id号)
- 进程的状态。指明进程当前的状态
- 当前队列的指针next。该项登记了处于同一状态的下一个PCB的地址,以此将处于同一状态的所有进程勾链起来。
- 进程优先级。进程将依据其优先级的高低去争夺使用CPU的权利。
- CPU现场保护区。当进程由于某种原因释放处理机时,CPU现场信息被保存在PCB的该区域中,以便在该进程重新获得处理机后能继续执行。
- 通讯信息。保存了进程在运行过程中与其他进程进行通信时所记录的有关信息。
- 家族联系。指明本进程与家族进程的联系
- 占有资源清单
进程控制
进程控制负责控制进程状态的变化。操作系统的核心具有创建进程、撤销进程、进程等待和唤醒等功能。这些功能是由具有特定功能的程序组成的,而且通过原语操作来实现控制和管理的目。
- 创建进程。用户不能直接创建进程,只能以系统请求的方式向操作系统申请创建新的进程。
- 进程撤销。进程撤销可以撤销一个进程,也可以撤销一组子进程。
- 进程等待。将进程变为等待状态。
- 进程唤醒。将进程从等待状态转变为运行状态。等待中的进程只能被其他进程唤醒,无法自己唤醒。
进程的同步与互斥
进程因为协同实现用户任务或者要共享计算机资源,在进程之间存在着相互制约的关系。这些制约关系可以分为以下两类:
① 同步关系(或称直接制约关系)。指为完成用户任务的伙伴进程间,因为需要在某些位置上协调它们的工作次序而等待、传递信息所产生的制约关系。
② 互斥关系(或称间接制约关系)。即进程间因相互竞争使用独占型资源(互斥资源)所产生的制约关系,如进程间因争夺打印机设备而导致一方须待另一方使用结束后方可使用。
临界段
临界资源(Critical Resource,CR):一次仅允许一个进程使用(必须互斥使用)的资源。如独占型硬件资源,可以由多进程访问的变量、表格、队列、栈、文件等软件资源。
临界段(Critical Section,CS):是指各进程必须互斥执行的那种程序段,该程序段实施对临界资源的操作。
若n个进程(P1,P2,…,Pn)共享同一临界资源,则每个进程所执行的程序中均存在关于该临界资源的临界段{CS1,CS2,…,CSn},这些临界段必须互斥执行。通常称这组进程间存在临界段问题。
让任一个进程在它需要进入的时候进入相应的临界段,而其间排斥另一个进程也进入相应的临界段,这样就可以避免临界段问题。
解决临界段的硬件实现方法
1.屏蔽中断方法
在一个多道程序的单处理机系统中,中断会引起多进程并发执行,因为中断处理结束会引起调度程序运行。如果某进程在临界段中发生中断,随着上下文切换,会保存被中断进程寄存器状态,然后调度另外的进程运行,另一个进程如果再进入相关临界段,会修改它们的共享数据,如果再次进行进程切换,原先进程重新执行时,使用了原来保存的寄存器中的不一致的数据,导致错误。如果程序员意识到中断引起的并发能够导致错误的结果,可考虑在程序执行临界段部分的处理时,屏蔽中断。
中断屏蔽只能用于单处理机系统,在多处理机共享主存的系统中,需要硬件提供某些特殊指令。例如,在一个存储周期内同时完成对某一主存单元的内容测试和修改;或者一条硬件指令能完成对寄存器和主存单元的内容交换等。利用这些特殊指令可以实现临界段的互斥执行。它们是硬件指令,硬件指令是不会被中断打断执行的。
2. 信号量
1965年,Dijkstra提出了一种称为信号量(Semaphore)的同步互斥工具,通常称为信号量机制。信号量机制是一种功能较强的机制,可用来解决互斥与同步问题。下面首先给出信号量机制的抽象描述。信号量机制由“信号量”和“P操作、V操作”两部分组成。信号量(s)为一个整型变量,只能被两个标准的原语所访问,分别记为P操作和V操作。注意,P,V操作是两条原语。
- P : 对信号量执行 -1 操作。
- V :对信号量执行 +1 操作
具体描述:
若资源信号量大于0,则信号量值就表示资源数量,进程使用该资源时信号量减1;当s.value<0时,表示资源已分配完毕,进程进入阻塞,等待资源被释放。
进程通讯
实现进程通讯有三种方法:
- 共享存储
- 消息传递
- 管道通信
共享存储
相互通信的进程共享某些数据结构或共享存储区,进程之间能够通过它们进行通信。
消息传递
在消息传递系统中,进程间的数据交换以消息为单位。程序员直接利用系统提供的一组通信命令(原语)来实现通信。操作系统隐藏了通信的实现细节,大大简化了通信程序编制的复杂性,因而获得广泛的应用。消息传递系统的通信方式属于高级通信方式。因其实现方式的不同,消息传递系统又可分为以下两种方式:
- 直接通信方式。发送进程直接将消息发送给接收进程并将它挂在接收进程的消息缓冲队列上,接收进程从消息缓冲队列中取得消息。
- 间接通信方式。发送进程将消息发送到某种中间实体中,接收进程从中取得消息。这种中间实体一般称为信箱,故这种通信方式又称信箱通信方式。
管道
管道是指用于连接一个读进程和一个写进程以实现它们之间通信的共享文件,又称pipe文件。向管道(共享文件)提供输入的发送进程(写进程)以字符流形式将大量的数据送入管道;而接收管道输出的进程(读进程)可从管道中接收数据。由于发送进程和接收进程是利用管道进行通信的,故又称管道通信。为了协调双方的通信,管道通信机制必须提供以下3方面的协调能力:
- 互斥。
- 同步。
- 判断对方是否存在。
内存管理
设备管理
- 缓冲技术
- 设备分配
- I/O控制
缓冲技术
缓冲的概念
缓冲的目的是为了让两种不同速度的设备之间进行平稳的传输。缓冲可以用缓冲器和软件缓冲实现。
缓冲的工作原理是在进程请求I/O传输的时候,利用缓冲区来临时存放数据,以缓解源设备与目标设备速度不匹配的问题。
缓冲的作用
缓冲的作用有
- 缓解两设备传输数据不匹配的问题
- 临时存放数据,例如将数据暂时存放到缓冲区中以便进行重组。
缓冲技术
- 双缓冲
- 缓冲池
- 环形缓冲
双缓冲:在双缓冲方案下,为输入或输出分配两个缓冲区。这两个缓冲区可以用于输入数据,也可用于输出数据;还可既用于输入,又用于输出数据。当一个缓冲区被提取数据时,另外一个缓冲区填充输入数据,当缓冲区填充满后又可以交换缓冲区进行提取和填充。这两个缓冲区如此交替使用,使CPU和输入设备并行操作程度进一步提高。只有当两个缓冲区都空,进程还要提取数据时,该进程才被迫等待。
缓冲池:缓冲池(Buffer Pool)由主存中的一组缓冲区组成,其中每个缓冲区的大小一般等于物理记录的大小。在缓冲池中各个缓冲区作为系统公共资源为进程所共享,并由系统进行统一分配和管理。缓冲池中的缓冲区既可用于输出,也可用于输入。使用缓冲池的主要原因是避免在消费者多次访问相同数据时会重复产生相同数据的问题。例如,当用户程序(消费者)要多次读相同的文件块时,I/O系统(生产者)不必从磁盘反复读取磁盘块,而是可以采用缓冲池作为高速缓存保留最近访问过的块,准备为将来所用。
设备分配
设备分配的目的是让进程合理地分配设备,避免进程对设备资源的争夺。设备分配方式有静态分配和动态分配,分配算法有先请求先服务和优先级最高者优先两种分配算法。
静态分配和动态分配
从设备分配的角度看,外部设备可以分为独占设备和共享设备两类:对独占设备一般采用静态分配,一旦分配给一个应用程序,由其独占使用;而共享设备则采用动态分配方法,并在进程一级实施,进程在运行过程中,需要使用某台设备进行I/O传输时向系统提出要求,系统根据设备情况和分配策略实施分配,一旦I/O传输完成,就释放该设备,这样使一台设备可以为多个进程服务,从而提高设备的利用率。
设备分配算法
先请求先服务算法中的设备请求队列按进程发出此I/O请求的先后次序排序,在该设备的设备控制块中有一个设备请求队列指针,指向该队列的第一个设备请求块,先请求的先获得设备的使用权。
优先级最高者优先算法中的设备请求队列按进程发出此I/O请求的优先级高低排序,优先级高的先获取设备使用权。
I/O控制
I/O设备硬件
- 端口(port)计算机端口是设备与计算机通信的一个连接点,其中硬件的端口又称为接口。
- 总线(bus)总线是一组线和一组严格定义的可以描述在线上传输信息的协议,这一组线用来连接一个或多个设备,这种连接称为总线。
- 控制器是用于操作端口、总线或设备的一组电子器件。串口控制器是简单的设备控制器,它是计算机上的一块芯片或部分芯片,用以控制串口线上的信号。
输入/输出控制方式
- 循环测试I/O。早期计算机的一种输入输出控制方式,CPU循环测试I/O传输是否完成。
- I/O中断。当设备完成I/O操作后向CPU发送中断请求信号,通知CPU进行相应处理,中断处理程序会保护中断进程现场。
- 通道方式。在大、中型和超级小型机中,一般采用I/O通道控制I/O设备的各种操作。I/O通道是用来控制外部设备与主存之间进行成批数据传输的部件,又称为I/O处理机。每个通道可以连接多台外部设备并控制它们的I/O操作。通道有自己的一套简单的指令系统和通道程序,它接收CPU的命令,而又独立于CPU工作。
- DMA方式。DMA直接在I/O设备和内存之间开辟数据交换通路。DMA允许不同速度的硬件装置来沟通,而不需要依赖于 CPU 的大量中断负载。否则,CPU 需要从来源把每一片段的资料复制到暂存器,然后把它们再次写回到新的地方。在这个时间中,CPU 对于其他的工作来说就无法使用。