第六章. 系统调度,COW Fork和IPC (lab4)

Slides:



Advertisements
Similar presentations
定 格 入 格 破 格 —— 新诗仿写复习训练 仿照下列句子,再把 “ 人生 ” 比喻成 “ 大海 ”“ 天空 ” , 造两个句子。 如果说人生是一首优美的乐曲,那么痛苦则 是其中一个不可或缺的音符。 参考答案: 1 、如果说人生是一望无际的大海,那么挫折则 是其中一个骤然翻起的浪花。 2 、如果说人生是一片湛蓝的天空,那么失意则.
Advertisements

達悟族報告 作者 : 林琪崴, 許原碩 座號 :13 號,14 號 原碩負責 : 簡介, 傳說, 圖驣, 達悟族飛魚季, 琪崴 : 地理位置, 土地利用方式, 飲食文化, 豐收祭.
主讲:张天明 影像艺术工程师. 声音的聆听 指出听到的是什么物体发出的声音,这一 声音是在什么样的空间环境中传播的。 一、 答案: 1 、打气筒打气的声音 2 、手打打气筒给足球打气的声音 3 、手打打气筒给自行车轮胎打气的声音 4 、七次(七声)打气筒打气的声音 5 、(气流)摩擦的声音 6 、猪在发急时的叫声.
概念導向命題技巧與試題分析 臺灣師大地理系 陳國川. 教學評量是一種『抽樣調查』 實施教學評量時,需具備二項條件: 其一,瞭解命題的理論及其實踐的方法; 其二,瞭解各種題型的功能與命題方式。 壹、前言.
高峰植物園行前解說 2005/12/07 By 羽明. 陽性先驅物種 陽性植物 --- 陽光需求量大 陰性 ( 或耐蔭性 ) 植物 --- 陽光需求量少, 或 日照太強反而無法生存 先驅植物 --- 森林大火或土石流地震後產生的 裸露空地, 先生長出來的植物.
報 告 人 : 胡 嘉 琪 ˙ˇ˙ 、 王 紫 庭 = ˇ = 台灣夜市文化 作者: 郭明澤‧私立明道高中‧綜二 4 班 馬炯修‧私立明道高中‧綜二 4 班.
5 ˙ 1 第五章 生物的協調作用 5 ‧ 1 神經系統. 5 ˙ 1 人體的神經系統 1. 協調動物生理反應的系統: 神經 系統、 內分 泌 系統。 2. 神經系統負責 統整 和 協調 。分為 中樞 神經 和 周圍 神經。 (1) 中樞神經包括 腦 和 脊髓 。 (2) 周圍 神經包括 腦神經 和.
从《西游》看大学生的成长 主讲人:颜廷学 时间: 地点:演艺大楼流行剧场.
教师队伍建设 组员:王英利 赵香媖 侯娟. 主讲内容 2. 中小学教师队伍建设 1. 职业教育师资队伍建设国际比较 3. 高校教师队伍建设与管理.
新员工培训 设计部 思安新能源股份有限公司 主讲人: 韩少华 时 间:
前言:河流的主要功能 1. 交通運輸 優點-運費低廉,維護費用低 缺點-速度慢,裝載費時,不能到達生產區或消費區 的末端,需要轉載。 尚受到河流網路,河口位置,水量變化,河床 狀況,冰封時期 2. 水資源系統.
幽夢影~張潮 小佑子工作室 關於《幽夢影》 作者張潮,記寫他個人對人生世事之體驗透悟的 書。 書中文字,全為「語錄」形式,屬於格言,也是 最精鍊的隨筆。 全書可分為九卷:論才子佳人、論人與人生、論 朋友知己、論讀書、論閒情逸趣、論立身處世、 談文論藝、論四時佳景、論花鳥蟲魚。
成人高考高起点 语文 冲刺班 主讲老师:邓君媚. 复习指导 高考语文含四大块内容: 语言知识和语言表达,古代诗文阅读,现 代文阅读,写作。 在全面复习的前提下,按照《考试大纲》 的要求,要做好思路整理,建立高考的整体框 架的工作。认真归纳整理基础知识、培养基本 能力,复习做到有的放矢。 复习指导.
© 2001 孟静制作 版权所有 第二章 CPU 管理和进程、线程管理 2.1 CPU 管理概述 2.2 进程管理 2.3 进程模型实例分析 :UNIX 早期版本的 CPU 管理 子系统 ( 进程模型 ) 2.4 处理机管理实例分析 (2):linux CPU 管理(进程 模型) 2.5 线程模型.
老师,我可以不 爱 吗? 山东省淄博市张店区实验中学 杜桂兰 星期一的早晨,我紧张而又兴奋,因为 我的赛教课就要开始了。 这是一次级别很 高 的竞赛。
财政部 国家税务总局 中国人民银行(央行) 银监会 证监会 保监会. 法定存款准备金率 利率 税率 政府投资 楼继伟,周小川,易纲.
油蔴菜籽 指導老師:陳瑜霞 學生: 商設一甲 謝旻璇 車輛三乙 許勝傑 工管四甲 彭凱雲. 作者介紹: 廖輝英( 1948 年生)臺大中文系畢業。 從初三開始寫作,早期作品多以散文為主,大四 畢業時才暫時封筆。畢業後進了廣告界,成為廣 告文案好手,後為企畫主管,在廣告界縱橫十餘 年,也曾任職於建設公司,辦過社區報高雄一周。
蘭嶼情人洞傳說 林庭羽製 林庭羽製. 台灣的蘭花特別多,台灣有個蘭 嶼島,島上面的蘭花更多.所以 叫蘭嶼.這裡留下了動人的傳說。
職業訪談報告. 成員 : 鐘怡君 劉沛君 謝明達 賴映辰.
南台科大幼保實習課程 見習幼兒園心得報告 夜四技幼保四甲 998i0021 黃欣婷.
第一章 生殖 1‧2 無性生殖.
高教三十条 — 科技创新能力提升 科技创新能力提升工程方案起草小组 2013年7月4日.
提 纲 三次考察与改革的回顾 1 学院三周来的新面貌 及下一步工作思路 2 凝心聚力、团结协作、狠抓落实 3.
你不可不知之 十二年國教二三事 教務主任:傅瑞琪.
——以通渭县图书馆青树小项目“携老上网游”为例
鞋 楦 的 材 質.
最古怪的15種動物.
走! 一起去拜訪筏子溪.
台灣文學館之旅.
單車環島之旅 組員: 495D0072 胡閎智 495D0074 何冠緯 495D0020 王怡雯 495D0047 葉亭君
 耕地分割 及 執 行 內政部地政司 視察:林玲女.
~完備、周密、迅速 ~ 行政院農業部畜產試驗所
建筑设计基础讲义 (02-1) 建筑水彩渲染.
現代文學導讀 (中國現代散文發展的歷史軌道)
谨以此文—— 送给所有的人.
方 孝 孺 指喻.
保護地球人人有責:我能做的事 若想讓地球、人類社會明天會更好的話,可以考慮日常生活中採取什麼綠色行動,逐步恢復按上天設計大自然規定的方式做人,從而減少個人的「生態足印」,爭取可以延續的未來。 
小 王 子 <第六組> 組長: 謝汶芳 組員: 劉佳蓉 曹展愛 陳建妏
據說: 烏鴉有四種--- 巨烏 祥烏 鳳烏 慈烏~ 知恩 感恩 報恩.
桃園傅小弟遭刺青施虐事件 指導老師:高家斌 班級:幼保四甲 姓名與學號: 496I0004 程千芸、496I0010 林昀嫻
北科大學士學位 冷凍空調 甲、乙、丙 級技術士 三年工作經驗 大一階段 專精訓練 大三階段 回流訓練.
9.2.2 会计基本法律制度 一、会计机构和会计人员制度 二、会计核算制度
明清文人集中的寓言 pg359-371 韓佩思 中碩一
2013浙江省行测专题 密卷解析及备考冲刺 罗 姮.
说课课件 感悟工业革命力量,闪耀科技创新光辉 ----《走向整体的世界》教学设计及反思 爱迪生 西门子 卡尔·本茨 诺贝尔 学军中学 颜先辉.
恒泰期货研究所2016年 期债暴跌告一段落,短期波动降低 国债期货周报
《女性消费行为与研究方法》 广东外语外贸大学 杨晓燕教授.
美国史 美利坚合众国创造了一个人类建国史的奇迹,在短短230年的时间从一个被英帝国奴役的殖民地到成为驾驭全世界的“超级大国”、“世界警察”,美国的探索为人类的发展提供了很宝贵的经验。
第三章 心理安全 广西师范大学 罗蕾.
5-3 激素與協調 激素的定義 激素的分泌與協調作用.
时间管理 -----高一团体辅导.
生理学实验模块系统五 体格检查机能模块.
马克思主义基本原理概论 第三章 人类社会及其发展规律.
Operating System Concepts 作業系統原理 Chapter 3 行程觀念 (Process Concept)
第二章 行程管理 朱肇明 資管系 講師 大華技術學院.
第七章. 文件系统 (lab5).
第三章 系统的启动和初始化 (include lab1)
Chapter 3 行程觀念 (Process Concept)
多进程编程.
进程操作.
第五章,抢占式调度(lab3).
第2章 进程和线程 内容提要: 2.1 进 程 概 念 2.2 进程的状态和组成 2.3 进 程 管 理 2.4 线 程.
作業系統 第四章 行程.
第二章 类型、对象、运算符和表达式.
单片机原理及应用 实践部分 主讲人:刘 强 四川工商学院单片机教学团队 单片机原理及应用 实践部分 主讲人:刘 强
实验二:添加Linux系统调用及熟悉常见系统调用
2017 Operating Systems 作業系統實習 助教:陳主恩、林欣穎 實驗室:720A Lab4.
本节内容 计算机不会做加法 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
第十二章 位运算.
Presentation transcript:

第六章. 系统调度,COW Fork和IPC (lab4)

提纲 多用户环境调度 COW Fork (写时拷贝环境创建) 用户环境间通讯(IPC)

多用户环境调度 Idle 环境及yield RR (Round-Robin) Scheduling 子进程的创建(Dumb Fork)

多用户环境调度(续) Idle 用户环境 #include <inc/x86.h> #include <inc/lib.h> void umain(void) { binaryname = "idle"; while (1) { sys_yield(); breakpoint(); }

多用户环境调度(续) sys_yield的执行路线

多用户环境调度(续) yield 放弃本用户环境的执行 选择“适当”的用户环境投入运行 “适当”应该根据具体的调度算法进行

多用户环境调度(续) RR (Round-Robin) Scheduling 循环轮转算法 应该寻找除了释放CPU的当前用户环境(curenv)和idle用户环境之外的“下一个”用户环境投入运行(采用env_run),在找不到的情况下将idle用户环境投入运行(breakpoint)。 由于idle用户环境占据了envs[0],应该在envs[1]到envs[NENV-1]之间寻找“下一个”用户环境。 完成sched_yield(void)函数

多用户环境调度(续) 子进程的创建(Dumb Fork) 完成sys_exofork(void)函数 分配用户环境管理数据结构 将创建的子环境的上下文设置为当前用户环境的上下文 设置创建的子环境的状态为ENV_NOT_RUNNABLE 完成空间分配和映射等辅助函数 sys_env_set_status (设置状态) sys_page_alloc (为用户态环境分配页面) sys_page_map (建立页面的映射关系) sys_page_unmap (取消页面的映射关系)

多用户环境调度(续) Dumb Fork (user/dumbfork.c) 思考: 如何让父环境在调用sys_exofork( ) 后返回子环境的envid,而子环境返回0? 如何通过页面分配和拷贝实现子用户环境的运行? UTEMP的作用是什么?这里能不能用UTOP? 修改kern/init.c运行dumbfork.c

COW Fork COW的概念 User Trap Frame的设置 用户态页面失效处理 Fork

COW Fork(续) COW的概念 在dumb fork中,JOS采用的是全拷贝的方法(从UTEXT到end)来运行子环境 然而通过复制父环境的方法来提供子环境的运行上下文会是相当重负载的 特别是当子环境创建后,需要加载不同于父环境的代码和数据开始运行的情况(如通过Shell的exec创建的子环境) 考虑三种类型的段:代码段、数据段(包括附加数据段)、堆栈段。其中代码段是完全不需要拷贝的,只需要映射即可。 采用写时复制技术(即当有数据更新的时候才复制整个被写的页面)来完成子环境的创建

COW Fork(续) COW的概念(续) 因为写时复用技术的采用,就需要对子环境对页面的写操作进行截获 完成这项工作,最简单的办法就是利用缺页中断 JOS中采用的是用户级缺页中断处理的方法 在子环境的管理数据结构中定义回调函数env_pgfault_upcall,用户环境通过调用sys_env_set_pgfault_upcall系统调用来设置自己的缺页中断处理函数,并让内核态的中断处理过程调用被登记的中断处理函数。 思考:JOS采用这种用户级的缺页处理方法的优缺点是什么?

COW Fork(续) User Trap Frame的设置 思考: 完成: 1. 为什么要设置User Trap Frame? 3. 如何判断是不是nested page fault 4. 当从内核态回到用户态的时候,如何跳到用户态的页面失效处理函数入口? 完成: lib/pgfault.c的set_pgfault_handler( void (*handler)(struct UTrapframe *utf)) kern/syscall.c的 sys_env_set_pgfault_upcall (envid_t envid, void *func) kern/trap.c的page_fault_handler (struct Trapframe *tf)

COW Fork(续) 用户态页面失效处理 注意:用户态页面失效处理过程的入口是lib/pfentry.S中的_pgfault_upcall,而不是用户环境注册的处理handler。 这样做的原因,是对用户注册的处理handler进行包装,确保在handler处理完成后,系统回到“正确的位置”继续执行。 完成: _pgfault_upcall函数 faultread、faultdie、faultalloc三个测试。注意faultalloc所导致的嵌套页面失效以及处理 思考:这里“正确的位置”指的是哪些位置?

COW Fork(续) Fork 完成: 思考: lib/fork.c中的fork(void) lib/fork.c中的duppage(envid_t envid, unsigned pn) lib/fork.c中的pgfault(struct UTrapframe *utf) user/forktree测试 思考: 1. 在创建子环境,并“复制”父环境的上下文的过程中,为什么需要将父环境的页面属性也设置为PTE_COW?这样做有没有例外?

用户环境间通讯(IPC) 完成: lib/ipc.c中的ipc_send(envid_t to_env, uint32_t val, void *pg, int perm)函数 lib/ipc.c中的ipc_recv(envid_t *from_env_store, void *pg, int *perm_store)函数 kern/syscall.c中的sys_ipc_try_send(envid_t envid, uint32_t value, void *srcva, unsigned perm) kern/syscall.c中的sys_ipc_recv(void *dstva) 思考: Send和Receive这两个动作,哪个是block的?JOS系统如何实现这种blocking?

本章结束