进程操作.

Slides:



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

Linux 环境及 Shell 程序 操作系统实验 1. 二、 Shell 编程与进程通信 常用 shell 命令 文件及文件属性操作 ls 、 cp 、 mv 、 rm ln 、 ln –s 、 chmod 、 groupadd 、 useradd 输入输出操作 echo 、 cat >> 、
© 2001 孟静制作 版权所有 第二章 CPU 管理和进程、线程管理 2.1 CPU 管理概述 2.2 进程管理 2.3 进程模型实例分析 :UNIX 早期版本的 CPU 管理 子系统 ( 进程模型 ) 2.4 处理机管理实例分析 (2):linux CPU 管理(进程 模型) 2.5 线程模型.
While 迴圈 - 不知重複執行次數
河內塔(Hanoi)問題.
第一章 十六世紀中葉以前的臺灣與原住民 第一節 考古發掘與史前文化.
量化vs質性研究分析 量化vs質性研究分析 報告人:王秀民.
親愛的老師您好 感謝您選用本書作為授課教材,博碩文化準備本書精選簡報檔,特別摘錄重點提供給您授課專用。 說明: 博碩文化:
第7章 樹與二元樹 (Trees and Binary Trees)
唐宋傳奇、筆記小品和史書、論著中的寓言 中碩二 吳佳樺.
兒童期 7 青春期 兩性圓舞曲 乘客:七年級同學 司機:張立杰老師.
第6章 二叉树和树 前面的章节主要讨论的是线性结构,二叉树和树属于非线性的结构。遍历非线性结构比线性结构要麻烦。
星星知我心 談古話今….. ……..觀星望斗 主講人: 陽光青春美少男.
反垃圾掩埋場相關報告 組長:文煊 組員:鄭侃文 李浩暐 胡育睿 李瑞耘 朱祐賢 林承宇.
2013 澎湖自助旅行講座 澎湖,其實就是一片海洋 主辦:沿著菊島旅行 協辦: 台北澎湖同鄉會、台中澎湖同鄉會、高雄澎湖同鄉會
"性"不"性"由你 性別平等之探討 北屯國小 張文陵.
組員: 洪暐翔、 賴峻毅 侯家豪、 賴琦穎 指導老師: 王惠鈴 老師
数据结构——树和二叉树 1/96.
第五章 树 东南大学计算机学院 方效林 本课件借鉴了清华大学殷人昆老师 和哈尔滨工业大学张岩老师的课件.
性別透視鏡 鳳鳴電台 高宜君老師.
专题研讨课二: 数组在解决复杂问题中的作用
操作系统 (并发进程) 徐锋 南京大学计算机科学与技术系 2018年9月18日3时52分.
Tree(樹) 什麼是「樹」? 「樹」的範例 「樹」的定義 「樹」的表示法.
台中市不動產經紀人職業工會 不動產經紀營業員 複訓班
Operating System Concepts 作業系統原理 Chapter 3 行程觀念 (Process Concept)
MPI并行程序设计简介 曙光信息产业(北京)有限公司 2018年11月.
複習 struct score_Type{ int chinese,english; }; struct my_Type{
Linked List Operations
單向鏈結串列 Singly Linked Lists.
chapter 1-Introduction
佇列 (Queue).
补充内容 结构体 概述 定义结构体类型和定义结构体变量 结构体变量的引用 结构体变量的初始化 指针与结构体 用typedef定义类型的别名.
If … else 選擇結構 P27.
经典同步问题.
作業系統 第六章 同步與死結.
Chapter 3 行程觀念 (Process Concept)
第3章 栈和队列(二) 1/.
实践演练 广州创龙电子科技有限公司 01 广州创龙电子科技有限公司
第三章 进程互斥与同步 进程通信 Communication.
第5章 堆疊(Stacks) 5-1 堆疊的基礎 5-2 堆疊的表示法 5-3 堆疊的應用 - 運算式的計算與轉換
第5章 堆疊(Stacks) 5-1 堆疊的基礎 5-2 堆疊的表示法 5-3 堆疊的應用 - 運算式的計算與轉換
线程(Thread).
Process management(程序管理)
第三章 栈与队列 £3.1 栈 £3.3 队列 £3.2 栈的应用举例 £3.1.1 栈的定义 £3.1.2 栈的顺序存储结构
第3章 栈和队列(一).
第三章 栈和队列.
操作系统原理 Operating System Principles
Linux操作系统分析 中国科学技术大学计算机系 陈香兰(0512- )
李元金 计算机与信息工程学院 第 4 讲 进程管理(2) 李元金 计算机与信息工程学院 1/
THE C PROGRAMMING LANGUAGE
第二部分 分布式算法 汪炀 第二次课 中国科学技术大学计算机系 国家高性能计算中心(合肥)
計數式重複敘述 for 迴圈 P
实验一、进程控制 一、实验目的 1、加深对进程的理解,进一步认识并发执行的实质; 2、分析进程争用资源现象,学习解决进程互斥的方法;
陈海明 副教授 信息学院 计算机系 电子信息类非计算机专业选修课 程序设计实践 陈海明 副教授 信息学院 计算机系
第2章 进程管理 2.1 进程概念 2.2 线程 2.3 进程管理 2.4 进程间通信 2.5 经典进程同步问题 2.6 管程
第2章 进程和线程 内容提要: 2.1 进 程 概 念 2.2 进程的状态和组成 2.3 进 程 管 理 2.4 线 程.
常宝宝 北京大学计算机科学与技术系 数据结构(三) 常宝宝 北京大学计算机科学与技术系
程式結構&語法.
作業系統 第四章 行程.
第7章 樹與二元樹(Trees and Binary Trees)
Ch.9 查找 §9.1 基本概念 查找和排序是两个重要的运算
<编程达人入门课程> 本节内容 为什么要使用变量? 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ:
第 六 讲 栈和队列(一).
第二部分 分布式算法 汪炀 第二次课 中国科学技术大学计算机系 国家高性能计算中心(合肥)
Computer Science & Information Management
第1章 数据结构基础概论 本章主要介绍以下内容 数据结构研究的主要内容 数据结构中涉及的基本概念 算法的概念、描述方法以及评价标准.
实验二:添加Linux系统调用及熟悉常见系统调用
2017 Operating Systems 作業系統實習 助教:陳主恩、林欣穎 實驗室:720A Lab4.
第三章 流程控制 程序的运行流程 选择结构语句 循环结构语句 主讲:李祥 时间:2015年10月.
《操作系统设计与实现》 Linux系统编程.
Presentation transcript:

进程操作

进程创建 父进程创建若干子进程;后者再创建其子进程;与此类推,构成了反映“传承”关系的一棵进程树 子进程的资源 子进程共享父进程的所有资源 子进程共享父进程的部分资源 子进程不从父进程共享资源,重新独立申请 执行代码的执行顺序 父进程和子进程并发执行 父进程在子进程执行期间等待,待子进程执行完毕后才恢复执行余下代码

进程创建 (Cont.) 地址空间中的image 子进程复制了(duplicate,不是copy)父进程的image 举例:UNIX的进程创建 fork系统调用创建一个新(子)进程 fork之后,exec系统调用装入一个新程序

Unix环境里创建子进程

Unix环境fork一个进程 int main() { Pid_t pid; /* fork another process */ if (pid < 0) { /* error occurred */ fprintf(stderr, "Fork Failed"); exit(-1); } else if (pid == 0) { /* child process */ execlp("/bin/ls", "ls", NULL); else { /* parent process */ /* parent will wait for the child to complete */ wait (NULL); printf ("Child Complete"); exit(0);

Solaris系统中常见的一棵进程树

进程终止 “进程终止”语义之一:子进程执行完最后一条指令后,要求操作系统将自己杀出 (exit)。语义动作含: 子进程传递数据给父进程 (通过父进程的wait操作) 子进程的资源被操作系统收回 “进程终止”语义之二:父进程终止子进程的执行(abort)。终止原因可能是: 子进程超额使用系统资源 早前交给子进程执行的任务,过期无效了 如果父进程终止了,它的子进程怎么办? 有些操作系统把这些子进程也全部终止 All children terminated - cascading termination

进程间合作 独立进程不会影响其它进程的执行,也不被影响 合作进程影响其它进程,或者受其影响 进程间合作是必须的,带来的好处: 共享信息 加速(计算)执行任务 模块化 方便调用,等等……

经典案例:生产者-消费者问题 生产者进程“生产”出信息,存储在缓冲区,供消费者进程“消费” unbounded-buffer 缓冲区的容量无限 bounded-buffer 缓冲区的容量有限 out P0 in P1

Bounded-Buffer – “共享内存”解决方案 数据结构 #define BUFFER_SIZE 10 Typedef struct { . . . } item; item buffer[BUFFER_SIZE]; int in = 0; int out = 0; 解决方案可行 但是只能用足BUFFER_SIZE-1个缓冲单元

Bounded-Buffer – 生产者进程的“存” while (true) { /* Produce an item */ while (((in = (in + 1) % BUFFER SIZE count) == out) ; /* do nothing -- no free buffers */ buffer[in] = item; in = (in + 1) % BUFFER SIZE; {

Bounded Buffer – 消费者进程的“取” while (true) { while (in == out) ; // do nothing -- nothing to consume // remove an item from the buffer item = buffer[out]; out = (out + 1) % BUFFER SIZE; return item; {

Interprocess Communication (IPC) 消息系统 – 进程间相互通信的途径,不需要有共享变量的介入 IPC机制有2个最基本的进程操作: send(message) receive(message) 变种:Direct Communication send (P, message) – 直接发消息给进程P receive(Q, message) – 直接接收来自进程Q的消息 变种:Indirect Communication send(A, message) – 发送消息给邮件服务器A receive(A, message) – 从邮件服务器A接收消息

同步通信 vs 异步通信 同步通信 发送操作send:发送进程等待,直至接收进程确认收到消息 接收操作receive:接收进程等待,直至有个消息到达 异步通信 发送操作send:发送进程发出消息后即返回,该干什么干什么,不理会消息是否送达 接收操作receive:接收进程执行一次接收动作,要么收到一条有效消息,要么收到空消息

End