HYZ-OS-2017-2-进程管理-4

* * 北京交通大学计算机学院何永忠 管程的引入 基于信号量的进程同步机制的弊端 各临界资源访问进程均须自备同步操作 大量同步操作分散不利于系统管理 同步操作使用不当可能导致系统死锁 对策 软硬件资源及操作抽象描述为管程 并发进程间的同步操作,分别集中于相应的管程中,由管程专职负责同步方案 * * 北京交通大学计算机学院何永忠 2.5 管程 2.5.1 管程的引入及定义 2.5.2 管程内在机制 2.5.2 利用管程解决同步互斥问题 * * 北京交通大学计算机学院何永忠 售票退票程序 process1: //售票 begin repeat N=N-1; until false; end Process2:// 退票 begin repeat N=N+1; until false; end 共享N=100; * * 北京交通大学计算机学院何永忠 记录型信号量实现互斥 process1: begin repeat wait(mutex); N=N-1; signal(mutex); until false; end Process2: begin repeat wait(mutex); N=N+1; signal(mutex); until false; end Var mutex: semaphore :=1; * * 北京交通大学计算机学院何永忠 管程实现互斥 TYPE Ticket = MONITOR; VAR N:=100; PROCEDURE Sale() Begin N=N-1; End PROCEDURE Ret() Begin N=N+1; End * * 北京交通大学计算机学院何永忠 管程实现互斥 process1: begin repeat Ticket.Sale(); until false; end Process2: begin repeat Ticket.Ret(); until false; end TYPE Ticket = MONITOR; * * 北京交通大学计算机学院何永忠 管程的语法 TYPE monitor_name = MONITOR; PROCEDURE entry P1(…); PROCEDURE entry P2(…); …… BEGIN END * * 北京交通大学计算机学院何永忠 管程实现进程同步互斥 不使用信号量! 管程monitor已经实现互斥 数据结构与操作代码的封装性 管程每次只准许一个进程占有管程以保证互斥 问题:如果资源的数目大于1,当资源用完了,一个进程需要等待如何实现? 管程实现了互斥信号量,没有实现资源信号量。 * * 北京交通大学计算机学院何永忠 基于管程PC的生产者子程序设计 producer: Var nextp: item; begin repeat produce an item in nextp; wait(empty); wait(mutex); buffer[in] ?? nextp; in ?? (in+1) mod n; signal(mutex); signal(full); until false; end PC.put(nextp); * * 北京交通大学计算机学院何永忠 基于管程PC的消费者子程序设计 consumer: Var nextc: item; begin repeat wait(full); wait(mutex); nextc??buffer[out]; out ?? (out+1) mod n; signal(mutex); signal(empty); consume the item in nextc; until false; end PC.get(nextc); 条件变量 目的:实现同步。 方法:阻塞与唤醒 管程的阻塞队列:cond 条件变量操作原语cond.wait与cond.signal cond.wait: 将进程插入管程的阻塞队列cond。本进程退出管程,其他进程可以进入管程。 cond.signal:从队列cond中唤醒第一个进程。 被唤醒的进程能马上进入管程吗?

Linux创建4个线程P1 P2,HYZ-OS-2017-2-进程管理-4.ppt相关推荐

  1. 嵌入式成长轨迹27 【Linux应用编程强化】【中嵌第二阶段】【进程管理】

    补充 成长轨迹19 进程操作 成长轨迹21 多线程编程 中的一些概念 不同之处:进程概念.进程基本状态(这里是最起码的状态).信号量机制 一 进程的基本概念 1  程序的顺序执行和并发执行 1).程序 ...

  2. 《Linux内核设计与实现》读书笔记 第三章 进程管理

    第三章进程管理 进程是Unix操作系统抽象概念中最基本的一种.我们拥有操作系统就是为了运行用户程序,因此,进程管理就是所有操作系统的心脏所在. 3.1进程 概念: 进程:处于执行期的程序.但不仅局限于 ...

  3. Linux下怎么使用任务管理器和真人接口源码出售进程管理

    大家都知道在Windows下怎么使用任务管理器来管理进程,真人接口源码出售[企鹅21717-93408]那么在linux下呢? 今天简单介绍一下怎么在linux使用任务管理器管理进程,让我们的linu ...

  4. Linux创建多个子线程并回收

    创建子线程的逻辑相比子进程要更容易理解一些,因为线程没有像进程那样复制很多东西另起炉灶,子线程从传入的开始函数开始运行,但是难点在于传入参数和回收时获取退出状态,因为这两个原本都是void *类型的, ...

  5. Linux C 中的 线程

    文章目录 1. 概念 1.1 为什么要用线程 1.2 线程与进程的关系 1.3 主控线程 1.4 编译 含有线程的程序 2. 线程相关函数 2.1 pthread_create() 创建一个子线程 2 ...

  6. java线程三种创建方式与线程池的应用

    前言:多线程下程序运行的结果是随机的,以下案例代码的运行结果仅供参考 一 通过继承Thread线程创建的方法与执行的步骤 /* 1 继承Thread 2重写run方法 3创建线程继承类的子类 4 调用 ...

  7. 【Linux 内核】进程管理 ( 内核线程概念 | 内核线程、普通进程、用户线程 | 内核线程与普通进程区别 | 内核线程主要用途 | 内核线程创建函数 kernel_thread 源码 )

    文章目录 一.内核线程概念 二.内核线程.普通进程.用户线程 三.内核线程.普通进程区别 四.内核线程主要用途 五.内核线程创建函数 kernel_thread 源码 一.内核线程概念 直接 由 Li ...

  8. linux clone线程,如何在Linux上使用clone()创建真正的线程?

    我正在尝试使用clone()创建一个新线程.使用以下代码(-): #include #include #include #define _SCHED_H 1 #define __USE_GNU 1 # ...

  9. Linux系统编程---13(线程控制函数,创建线程,循环创建多个线程,线程间共享全局变量)

    线程控制 操作系统并没有提供创建线程的系统调用接口,因此大佬们封装了一个线程的接口库实现线程控制.意为着用户创建线程都使用的是库函数(所以有时候我们说创建的线程是一个用户态线程,但是在内核中对应有一个 ...

最新文章

  1. RESTful之自动生成接口文档
  2. java支持泛型_Java自学-泛型 支持泛型的类
  3. Java集合篇:Hashtable原理详解(JDK1.8)
  4. 机器学习(二)——广义线性模型、生成学习算法
  5. Failed to capture snapshot of output files for task ':UserAppModule:packagePreDebug' property 'outpu
  6. Vue 团队公开快如闪电的全新脚手架工具,未来将替代 Vue-CLI,才300余行代码,学它!...
  7. Oracle从小白到大牛的刷题之路(建议收藏学习)
  8. 企业效益真的向好么?
  9. [Linux]文件的atime ctime mtime
  10. intel无线网卡日志服务器,不定期找不到Intel N 2230无线网卡
  11. 三星或将80%手机生产转至越南
  12. 计算机excel表格教程高级筛选6,Excel高级筛选
  13. 报税反写服务器返回为空,【原创】报税后反写是怎么回事?
  14. Axis2 报错 Faulty Services
  15. 房贷收入证明是月供的几倍?
  16. R语言︱函数使用技巧(循环、if族/for、switch、repeat、ifelse、stopifnot)
  17. scala spark sql 获得分组后的分位点
  18. DIY多快充协议太阳能充电器!----快充协议实现原理
  19. 计算个人所得税(老版)​​​​​​​
  20. URL定义、格式、常见协议

热门文章

  1. 虚拟机安装Ubuntu18.04
  2. eclipse+birt报表开发
  3. 每个架构师都应该培养业务思维
  4. GarageBand mac怎么剪切音频片段? GarageBand mac使用教程
  5. 安装ubuntu并切换到Gnome经典桌面
  6. weak_ptr和shared_ptr使用小记“free(): invalid pointer” error
  7. java中fork什么意思_java 中的fork join框架
  8. 中央处理器(CPU)的组成
  9. strongswan ipsec 向内核下发SA和Policy部分
  10. 一个人的旅行------Dijkstra