李元金 计算机与信息工程学院 E-mail: liyuanjin10@126.com 第 6 讲 进程管理(4) 李元金 计算机与信息工程学院 E-mail: liyuanjin10@126.com 1/

Slides:



Advertisements
Similar presentations
作者 : 陳鍾誠 單位 : 金門技術學院資管系 URL : 日期 : 2016/7/21 行程的同步 註:本章學術性較重,但考試常考。
Advertisements

高级服务器设计和实现 1 —— 基础与进阶 余锋
阻塞操作. 在 linux 里,一个等待队列由一个 wait_queue_head_t 类型的结构来描述 等待队列的初始化: static wait_queue_head_t testqueue; init_waitqueue_head(&testqueue);
PKUOS 第四章习题讲解 陈子文  1. 以 Linux 为例,列举出进程状态转换的典型原因 和引起进程调度的因素。  Linux 进程状态有五种( running/interruptible/uninteruptible/zombie/stoppe.
Linux 系统. 操作系统发展需求 1 没有操作系统 2 简单批处理操作系统 3 多道程序设计的批处理 4 多道程序设计的分时操作系统 5 多处理机并行系统 6 网络操作系统 7 分布式操作系统.
Threads 线程  为什么要引入线程 – WEB 服务器 同时处理多个客户请求 – 创建多个进程降低响应时间 – 进程开销较大 ( 上下文切换 )  线程 ( 轻量级进程 ) – 是 CPU 调度的一个基本单位.
计算机网络课程总结 一、计算机网络基础 计算机网络定义和功能、基本组成 OSI/RM参考模型(各层的功能,相关概念, 模型中数据传输 等)
2.7 线程 2.7.1线程的其本概念.
第二章 进程管理 2.1 进程的基本概念 2.2 进程控制 2.3 进程同步 2.4 经典进程的同步问题 2.5 管程机制 2.6 进程通信
第二章 进程的描述与控制管理.
作業系統 第六章 同步與死結.
淄博信息工程学校 ZIBOIT&ENGINEERING VOCATONAL SHCOOL 03 交换机干道技术 计算机网络技术专业.
1 发送进程和接收进程的同步问题 利用信号量可以解决合作进程之间的同步。 例:设进程Pa,Pb通过缓冲区队列传送数据
(四)进程互斥 一、进程互斥的概念 1. 临界资源 例1:两个进程A、B共享一台打印机
实用操作系统概念 张惠娟 副教授 1.
PURSUING EXCELLENCE / TOWARD SUCCESS WUCHANG UNIVERSITY OF TECHNOLOGY
Oracle数据库 Oracle 子程序.
操作系统 (并发进程) 徐锋 南京大学计算机科学与技术系 2018年9月18日3时52分.
中国科学技术大学计算机系 陈香兰 2013Fall 第五讲 进程同步 中国科学技术大学计算机系 陈香兰 2013Fall.
Operating System Concepts 作業系統原理 Chapter 3 行程觀念 (Process Concept)
Kvm异步缺页中断 浙江大学计算机体系结构实验室 徐浩.
Hadoop I/O By ShiChaojie.
Synchronization Background Critical Section Problem (临界区问题) 经典同步问题.
经典同步问题.
作業系統 第六章 同步與死結.
第二章 进程管理 2.1 进程的基本概念 2.2 进程控制 2.3 进程同步.
Chapter 3 行程觀念 (Process Concept)
李元金 计算机与信息工程学院 第 5 讲 进程管理(3) 李元金 计算机与信息工程学院 1/
存储系统.
第三章 进程管理 本章重点: 进程的定义、特征、进程控制的基本概念。 进程PCB基本结构,作用及进程的状态及转换。
第三章 进程互斥与同步.
管理信息结构SMI.
实践演练 广州创龙电子科技有限公司 01 广州创龙电子科技有限公司
第三章 进程互斥与同步 进程通信 Communication.
网络常用常用命令 课件制作人:谢希仁.
第二章 进程管理.
临界区软件互斥软件实现算法.
第一单元 初识C程序与C程序开发平台搭建 ---观其大略
操作系统原理 Operating System Principles
李元金 计算机与信息工程学院 第 4 讲 进程管理(2) 李元金 计算机与信息工程学院 1/
Online job scheduling in Distributed Machine Learning Clusters
本节内容 模拟线程切换 视频提供:昆山滴水信息技术有限公司 官网地址: 论坛地址: QQ交流 :
逆向工程-汇编语言
临界区软件互斥软件实现算法 主讲教师:夏莹杰
用event class 从input的root文件中,由DmpDataBuffer::ReadObject读取数据的问题
第2章 进程管理 2.1 进程概念 2.2 线程 2.3 进程管理 2.4 进程间通信 2.5 经典进程同步问题 2.6 管程
第2章 进程和线程 内容提要: 2.1 进 程 概 念 2.2 进程的状态和组成 2.3 进 程 管 理 2.4 线 程.
Unit 11.Operating System 11.1 What’s OS 11.2 Related Courses
第二章 进程管理 2.1 进程的基本概念 2.2 进程控制 2.3 进程同步 2.4 经典进程的同步问题 2.5 管程机制 2.6 进程通信
内容摘要 ■ 课程概述 ■ 教学安排 ■ 什么是操作系统? ■ 为什么学习操作系统? ■ 如何学习操作系统? ■ 操作系统实例
简单介绍 用C++实现简单的模板数据结构 ArrayList(数组, 类似std::vector)
第四章 进程管理 多道程序设计 进程 进程间的相互作用 进程间的通信 进程调度(CPU调度) 线程.
作業系統 第四章 行程.
进程概念.
计算机网络与网页制作 Chapter 07:Dreamweaver CS5入门
信号量(Semaphore).
本节内容 文件系统 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
李元金 计算机与信息工程学院 第 14 讲 存储器管理(3) 李元金 计算机与信息工程学院 1/
临界区问题的硬件指令解决方案 (Synchronization Hardware)
本节内容 Windows线程切换_时钟中断切换 视频提供:昆山滴水信息技术有限公司 官网地址: 论坛地址: QQ交流 :
WSAAsyncSelect 模型 本节内容 视频提供:昆山爱达人信息技术有限公司 视频录制:yang
李元金 计算机与信息工程学院 第 12 讲 存储器管理(1) 李元金 计算机与信息工程学院 1/
Google的云计算 分布式锁服务Chubby.
阻塞式模型 本节内容 视频提供:昆山爱达人信息技术有限公司 视频录制:yang 官网地址:
基于列存储的RDF数据管理 朱敏
C++语言程序设计 C++语言程序设计 第一章 C++语言概述 第十一组 C++语言程序设计.
本节内容 动态链接库 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
本节内容 进程 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
本节内容 SEMAPHORE 视频提供:昆山滴水信息技术有限公司 官网地址: 论坛地址: QQ交流 :
第二章 进 程 管 理 2.1 前趋图和程序执行 2.2 进程的描述 2.3 进程控制 2.4 进程同步 2.5 经典进程的同步问题
Presentation transcript:

李元金 计算机与信息工程学院 E-mail: liyuanjin10@126.com 第 6 讲 进程管理(4) 李元金 计算机与信息工程学院 E-mail: liyuanjin10@126.com 1/

进程管理 教学目标 教学内容 掌握P、V操作的实现。 了解进程通信的类型; 理解消息传递系统中的发送和接收原语; 理解线程的概念、线程间的同步、通信以及线程的实现 教学内容 P、V操作的实现 进程通信 线程 2/

复习 生产者---消费问题中wait(empty)与wait(mutex)能互换吗? 生产者---消费问题中wait(full)与wait(mutex)能互换吗? 生产者---消费问题中signal(mutex)与signal(full)能互换吗? 生产者---消费问题中signal(mutex)与signal(empty)能互换吗? 3/

思考题 某银行的人民币存取业务由 n 个柜台工作人员负责。每个顾客进入银行后先从抽号机中取一个号,并且等着叫号。当一个柜台工作人员空闲下来,就叫下一个号。 试用P,V 操作编写柜台工作人员进程和顾客进程的程序。 4/

分析 可把“顾客号数”看成是一个单缓冲区,顾客和柜员必须互斥访问; CUSTOMER_NUM --单缓冲区 semaphore counter; //柜台人员数;初值为n semaphore customer; //当前等待的顾客数;初值为0; semaphore mutex; //互斥对顾客号数的访问;初值为1 5/

顾客进程: { int num; //取号码 P(mutex); num = CUSTOMER_NUM++; V(mutex); //等待叫号 V(customer); //请求服务 P(counter); //等待号接受服务; 离开; COSTOMER_NUM--; } semaphore counter; //柜台人员数,初 值为n semaphore customer ; //当前等待的顾客 数;初值为0; semaphore mutex; //互斥对顾客号数 的访问。初值为1

P(customer); //等待顾客请求服务叫号为顾客服务; V(counter); //服务完成 UNTIL false; } 柜台人员进程: { int num; REPEAT //叫号 P(customer); //等待顾客请求服务叫号为顾客服务; V(counter); //服务完成 UNTIL false; } 7/

思考题 理发店理有一位理发师、一把理发椅和n把供等候理发的顾客坐的椅子 如果没有顾客,理发师便在理发椅上睡觉。 一个顾客到来时,它必须叫醒理发师 如果理发师正在理发时又有顾客来到,则如果有空椅子可坐,就坐下来等待,否则就离开。 8/

P、V操作实现 顾客进程 Customer() 理发师进程 Barber() 特定义两个信号量customers和barbers实现进程的同步, 并定义信号量S实现进程的互斥。代码如下: 9/

P、V操作实现 Begin int CHAIRS:=n; //为等候的顾客准备的椅子数 semaphore: customers=barbers=0; semaphore: cut=0; semaphore: finish=0; semaphore: mutex=1; // 用于互斥的信号量 int waiting= 0; 10/

P、V操作实现 Cobegin Process Procedure Customer() { P(mutex); if (waiting>=CHAIRS) then V(mutex) //没有空椅子离开 else waiting=waiting+1; V(mutex); V(customers); SIT_ON_CHAIR(); //坐在椅子上等候 P(barbers); //等待理发召唤 Stand_up(); // 从椅子上起身 11/

P、V操作实现 P(mutex); } waiting=waiting-1; V(mutex); SIT_ON_CUT_CHAIR(); //坐在理发椅上 V(cut); //告诉理发师可以开始理发 P(finish); //等待理发完成 } 12/

P、V操作实现 Process Procedure Barber() { while(1) P(customers); // 等待顾客到来 Clear_cut_chair(); //整理一下理发椅 V(barbers); //召唤下一个顾客,理发师空闲 P(cut); //等待顾客就座,可以理发否 CUT_CHAIR(); // 理发 V(finish); // 告诉顾客已结束 } Coend End 13/

进程通信 概念:进程间的信息交换。 实例: 缺点:效率低;通信对用户不透明 信号量机制(一种低级通信) 高级通信 效率高,通信实现细节对用户透明 14/

进程通信的类型 共享存储器系统 在共享存储系统中,互相通信的进程共享某些数据结构或共享存储区,进程之间能够通过这些空间进行通信。故其可分成以下两种类型。 基于共享数据结构的通信方式(低级通信) 要求诸进程公用某些数据结构,借以实现诸进程的信息交换。在生产者-消费者问题中,就是用有界缓冲区这种数据结构来实现通信的。 producer-consumer中的缓冲区,低效,不透明。 系统只提供了一个共享存储器,适于少量通信。 15/

进程通信的类型 基于共享存储区的通信方式(高级通信) 为了传输大量数据,在存储器中划出了一块共享存储区,进程可通过对共享存储区中数据的读或写来实现通信。 系统提供:共享存储区 通信过程: 向系统申请一个或多个分区 获得分区后即可读/写 特点:高效,速度快。 16/

进程通信的类型 消息传递系统(用于单机,多机,网络) 管道通信 数据交换以格式化的消息(报文)为单位 实现:一组通信命令(原语)。 是目前的主要通信方式,分为直接通信方式、间接通信方式 管道通信 管道:用于连接一个读进程和一个写进程以实现他们之间通信的一个共享文件。又名pipe文件。写进程以字符流的形式向管道送入大量数据;读进程则从管道中接收数据,故又称为管道通信。其能有效传输大量数据. 管道机制提供以下协调能力 互斥、同步、对方是否存在 17/

消息传递通信的实现方式 直接通信方式 例:解决生产—消费问题。 send(Receiver, message); 发送一个消息给接收进程 receive(Sender, message);接收sennder发来的消息 例:解决生产—消费问题。 repeat … produce an item in nextp; send(consumer, nextp); until false; receive( producer, nextc); consumer the item in nextc; 18/

消息传递通信的实现方式 间接通信方式(可以实现非实时通信) 指进程之间的通信,需要通过作为共享数据结构的实体,这种实体称为信箱。 接收进程 发送进程 接收进程 信箱 消息在信箱中可以安全地保存,只允许核准的目标用户随时读取。这样既可实现实时通信,又可实现非实时通信。 19/

消息传递通信的实现方式 原语 消息的发送和接收 send (mailbox, message) 信箱的创建与撤消: 信箱名 属性(公用、私用、共享)(共享者名字),不需要时可撤销之 消息的发送和接收 send (mailbox, message) receive (mailbox, message) 20/

消息传递通信的实现方式 信箱类型 发送—接收进程之间的关系: 私用:拥有者有读/写数,其它只有写权,(单向通信链路实现)存在期=进程存在期。 公用:系统创建,核准进程可以发送,也可读取发送给自己的消息。双向通信链路实现,存在期=系统存在期。 共享信箱:一般进程创建,并指明其共享者。拥有者和共享者都可取走发送给自己的消息。 发送—接收进程之间的关系: 一对一关系; 多对一关系; 一对多关系; 多对多关系:公用信箱。 21/

消息传递系统实现中的若干问题 通信链路 建立通信链路 通信链路的分类 发送进程建立 系统自动建立 根据连接方法分为 点-点连接通信链路 多点连接链路 22/

消息传递系统实现中的若干问题 根据通信方式分为 单向链路 双向链路 根据通向链路的容量分为 无容量通信链路 有容量通信链路 23/

消息传递系统实现中的若干问题 消息格式 进程同步方式 定长格式 变长格式 发送进程阻塞,接收进程阻塞(汇合)。 发送进程不阻塞,接收进程阻塞。(应用最广) 发送进程和接收进程均不阻塞。 24/

消息缓冲队列通信机制 数据结构 消息缓冲区 PCB中有关通信的数据项: type message buffer =record sender: size: text: next:指向下一指针 end PCB中有关通信的数据项: type pcb=record mq 消息队列首指针 mutex 消息队列互斥信息量 sm 消息队列资源信息量(表资源消息数) … 25/

消息缓冲队列通信机制 发送原语 procedure send(receiver, a) begin getbuf(a.size, i); i.sender:=a.sender; i.size:=a.size; i.text:=a.text; i.next:=0; getid(PCB set, receiver.j); wait(j.mutex); insert(j.mq, i); signal(j.mutex); signal(j.sm); end 26/

消息缓冲队列通信机制 接收原语 procedure receive(b) begin j:=internal name; wait(j.sm); wait(j.mutex); remove(j.mq, i); signal(j.mutex); b.sender:=i.sender; b.size:=i.size; b.text:=i.text; end 27/

mq mutex sender :A sm size :5 text:hello next:0 PCB(B) 进程B 进程A send(B,a) receive(b) sender :A size :5 text:hello next:0 a b sender:A 发送区a sender:A size:5 size:5 接收区B text:Hello text:Hello 28/

线程 线程的基本概念 线程的引入 减少并发执行时的时空开销,进程的创建、撤消、切换较费时空,因它既是调度单位,又是资源拥有者。 创建进程 系统在创建一个进程时,必须为它分配其所必需的、除处理机以外的所有资源,如内存空间、I/O 设备,以及建立相应的PCB。 撤销进程 系统在撤销进程时,必须先对其所占有的资源执行回收操作,然后再撤销PCB。 进程切换 对进程切换时,由于要保留当前进程的CPU 环境和设置新选中进程的CPU环境,因而花费不少的处理机时间。 29/

线程 如何能使多个程序更好地并发执行同时又尽量减少系统的开销,已成为近年来操作系统设计时的重要目标。若能将进程的两个属性分开,即对作为调度和分派的基本单位,不同时作为拥有资源的单位,以做到轻装上阵;而对于拥有资源的基本单位,又不对之进行频繁的切换。 30/

线程 线程与进程的比较 调度性 并发性 拥有资源 系统开销 31/

线程 线程是系统独立调度和分派的基本单位,其基本上不拥有系统资源,只有少量资源(寄存器,栈等),但共享其所属进程所拥有的全部资源。 32/

线程 线程的属性 线程的状态 轻型实体(只包含TCB,PC,寄存器,堆栈) 独立调度和分派的基本单位 可并发实体 共享进程资源 状态参数 寄存器状态、堆栈、运行状态、优先级、线程专有存储器、 信号屏蔽 线程的运行状态:执行,就绪,阻塞 33/

线程 线程的创建和终止 多线程OS中的进程 创建线程时,需要利用一个线程创建函数(或系统调用),并提供相应的参数 终止线程方式 作为系统资源分配的的单位。在多线程操作系统中,仍是将进程作为系统资源分配的基本单位。 可包含多个线程。通常一个进程都包含有多个相对独立的线程(至少包含一个),由进程为这些线程提供资源及运行环境,使这些线程可并发执行. 进程不是一个可执行的实体。在多线程OS系统中,线程是独立运行的基本单位。 34/

线程的同步和通信 互斥锁 阻塞方式 lock(mutex) 访问 unlock(mutex) 非阻塞方式 if(trylock) then else 35/

线程的同步和通信 条件变量 lock(mutex1) 访问临界区C unlock(mutex1) lock(mutex2) 访问临界区R //线程i访问临界区C,又要访问临界资源R // unlock(mutex1) lock(mutex2) 访问临界区R //线程j正在访问临界资源R// unlock(mutex2) 线程i在对mutex2执行关锁操作后必将被阻塞,这样mutex1一直保持关锁状态。若线程j要进入临界区C,由于mutex1一直保持关闭而无法进入,便形成了死锁。 36/

线程的同步和通信 在创建互斥一个锁时便联系着一个条件变量。单纯的互斥锁用于短期锁定,主要是用来保证对临界区的互斥访问。而条件变量则用于线程的长期等待,直至所等待的资源成为可用的。 线程首先对mutex执行关锁操作,若成功进入临界区,然后查找用于描述资源状态的数据结构,以了解资源的情况只要发现所需资源R正处于忙状态,并对mutex 执行开锁操作后,等待该资源被释放;若资源处于空闲状态,表明线程可以使用该资源,于是将该资源设置为忙碌状态,再对mutex 执行开锁操作。 37/

线程的同步和通信 Lock mutex lock mutex check data structures; mark resource as free While (resource busy); unlock mutex wait (condition variable) ; wakeup (condition Mark resource as busy; Unlock mutex 38/

线程的同步和通信 信号量机制 私用信号量---是为了同一进程的不同线程间的同步. 私用信号量属于特定的进程所有,其存放于应用程序的地址空间中,而操作系统并不知道该私用信号量的存在. 公用信号量(系统信号量)---是为了实现不同进程间或不同进程的线程之间的同步. 其有一个公开的名字供所有的进程使用.其数据结构是存放在受保护的系统存储区中,由OS为其分配空间并进行管理, 39/

线程的实现方式 内核支持线程(KST) 用户级线程 (ULT) 组合方式 40/

小结 进程通信 线程 41/

作业 P84 17-22 实验二: 进程创建 42/