시스템 2 개 과정 운영
기능 프로세스, 쓰레드, 프로세스, PCB, 프로세스 제어, 프로세스 상태 전환,이 장에서는 주로 여러 개념 도입 프로세스 동기화 및 프로세스 간 통신을.
디렉토리
(1) 프로그램 실행 기능
이전 과정에서 차트되는 과정의 구현.
선행 그래프 : 방향성 비순환 그래프 (directed acyclic graph)는, 전 공정의 실행을 설명 관계 후에,주기 존재할 수 없다 라고 DAG (방향성 비순환 그래프)
화성도 전에 구 개 노드를 갖는 주기가 화성도 전에 :
참고 : 전신 순환 수치는 존재하지 않아야합니다.
프로그램 구현 |
주문 실행 |
동시 실행 |
이행 |
단일 일괄 처리 시스템의 구현 |
다중 배치 시스템의 구현 |
특징 |
연속 : 실행 순서에 따라 설치 휴관일은 전체 시스템의 자원 프로그램이 실행되는 독점 : 재현성 : 동일한 결과를 얻기가 반복적으로 수행 |
비동기 성격 : 프로그램, 중간 정지 와서 자신의 타이밍 관계를 잃을 수 있습니다 폐쇄 분실 : 상기 메모리에 기록 된 프로그램 데이터가 다른 프로그램에 의해 변경 될 수 있고, 본래 그대로의 특성의 손실 재현성의 손실 : 다른 결과를 얻을 수 반복적 동시 프로그램 간의 우선 순위 관계를 실행하지 않는다. |
동시 트랜드의 실행 시간 전 :
(I 입력을 나타내고, C는 CPU 동작, P 출력을 나타낸다 나타낸다)
在上例中存在下述前趋关系:Ii→Ci,Ii→Ii+1, Ci→Pi, Ci→Ci+1,Pi→Pi+1
2、进程及其特性
进程的描述性定义:计算机中的所有程序(软件),按照某种顺序运行,这种运行的过程称之为进程。
进程的定义 |
系统中能独立运行并作为资源分配的基本单位,他是由一组机器指令,数据和堆栈等组成的,是一个能独立运行的活动实体,程序安装在电脑中是存储在内存中,运行程序时才会产生进程。 进程是程序的一次执行。 |
进程的特征 |
结构性:有程序段、数据段和PCB 动态性:随着创建和撤销而产生和消亡 并发性:多个进程实体同存于内存中,同时运行 独立性:各进程的地址空间相互独立, 异步性:各进程按各自独立的、不可预知的速度向前推进 |
进程三种基本状态 |
就绪状态:已获得除CPU外的所需资源,等待分配CPU 执行状态:占用CPU运行;此状态的进程的数目<=CPU的数目 阻塞状态:等待某种条件(如I/O操作或进程同步),在条件满足之前无法继续执行。该事件发生前即使把处理机分配给该进程,也无法运行
|
进程的创建 |
初始化PCB,向PCB中填写控制管理进程的信息 |
进程的终止 |
将PCB清零,归还PCB |
进程挂起 |
①执行的进程暂停 ②就绪的进程暂不调度(就绪挂起) ③阻塞的进程即使引起阻塞的事件消失也不调度(阻塞挂起) |
3、进程的同步
3.1、相关定义
目的:进程之间能有效的共享资源和相互合作,又能保证程序的执行具有可再现性。
临界资源:一次仅允许一个进程使用的资源,诸进程之间只能用互斥的方式进行访问
访问临界资源的过程:每个进程进入临界区之前应先对欲访问的临界资源进行检查,看是否正在被访问。如果此刻该临界资源未被访问,该进程可进入临界区,并设置它正在被访问的标志。
进入区:在临界区之前执行的这段代码称为进入区,设置它正在被访问的标志。
退出区:在临界区之后也要加上一段代码,用于将临界区被访问的标志恢复为未被访问的标志。
3.2、同步机制遵循的规则
空闲让进 |
当无进程处于临界区时,应允许一个进程进入临界区 |
忙则等待 |
当已有进程进入临界区时,其他进程必须等待 |
有限等待 |
对要求访问临界资源的进程,应保证在有限时间内进入自己的临界区,防止"死等" |
让权等待 |
当进程不能进入自己的临界区时,应立即释放处理机,防止"忙等" |
3.3、硬件同步机制(开锁进入,关锁等待)
为了防止多个进程同时测试到锁打开的情况,测试和关锁的操作必须是连接的,不允许分开进行。
3.3.1关中断
关闭中断—锁测试—完成测试—上锁—打开中断
缺点:滥用关中断权利导致严重后果;关中断时间过长影响系统效率,限制执行程序的能力;关中断方法不适用于多个CPU系统。
3.3.2Test andSet指令
Lock为false时表示资源空闲,lock为true时表资源被占用
3.3.3利用Swap指令实现进程互斥
3.3.4、信号量机制
(1)整型信号量——忙等
仅能通过两个标准的原子操作wait(S)和signal(S)来访问。这两个操作一直被分别称为P、V操作。wait(S)和signal(S)是原子操作,执行时是不可中断
(2)记录型信号量——让权等待
在记录型信号量机制中,除了需要一个用于代表资源数目的整型变量value外,还应增加一个进程链表L,用于链接上述的所有等待进程。
(3)AND型信号量
将进程在整个运行过程中需要的所有资源,一次性全部地分配给进程,待进程使用完后再一起释放。要么全部分配到进程,要么一个也不分配。 由死锁理论可知,这样就可避免上述死锁情况的发生。
(4)信号量集
一次性分配多个资源。
3.4信号量例题
利用信号量实现前趋关系:
4、进程之间的通信
进程的通信 |
|
定义 |
为协调完成某一任务,几个进程间应保持联系,即交换一定数量的信息。信号量机制就是一种进程通信方式。 |
类型 |
(1)共享存储器系统:对用户不透明,只适合传递少量数据,属于低级通信方式 (2)消息传递系统:高级通信方式 (3)管道(Pipe)通信:有一个两者共有的都可以进行读写的文件夹 |
缺点 |
(1)交换的信息量比较少;(2)效率低;(3)对用户不透明。 |
5、线程(threads)
1、进程的基本属性
(1)可拥有资源的独立单位:在内存中有独立的物理存储空间
(2)可独立调度和分派的基本单位,有唯一的PCB
2、为什么需要引入线程
进程能并发执行,需要创建,撤销,切换进程,消耗一定系统资源。线程的引入正是为了简化进程间的通信,以小的开销来提高进程内的并发程度从而提高系统吞吐量。
3、线程的属性
(1)传统的进程称为重型进程,线程称为轻型进程。
(2)线程是进程中的一个运行实体,线程是一个CPU调度单位,线程是能独立运行的基本单位,资源的拥有者还是进程或称任务,独立分配资源的基本单位还是进程。
(3)同一进程中的线程切换不会引起进程的切换,不同进程中的线程的切换会引起进程的切换。
(4)同一进程中的线程共享这个进程的内存地址和资源,但是不同的进程是有独有的唯一的内存地址,
(5)每个线程又有一个TCB(线程控制块),是每个线程的唯一标识符。