第五章,抢占式调度(lab3).

Slides:



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

第 3 章操作系统基础 3.1 操作系统概述 3.2 操作系统的功能模块 3.3 典型操作系统概述.
1 I/O 设备访问方式和类型. 2 Overview n The two main jobs of a computer: l I/O (Input/Output) l processing n The control of devices connneted to the computer is.
性教育教學模組設計 主題:身體自主權 台中市忠明國小 巫偉鈴.
大洋洲.
第八章 给产品定价 学习目标: 理解三种定价的基本方法,重点掌握损益平衡法; 掌握定价策略; 了解价格调整。
整体销售方案 中山市美好物业代理有限公司
当代 国 际 关 系(案例6) 冷战时期美苏关系的演变.
精品开放课程的 建设与应用 谢幼如 教授 广东省高校教育技术中心 华南师范大学教育信息技术学院
Foundations of Computer Science
“炝虾”食用安全性的 初步研究 上海市吴淞中学生物与环境社团 责任者:李 胤 吴蓓莉 指导老师:张 治 许 沁.
恒泰期货研究所2016年 期债暴跌告一段落,短期波动降低 国债期货周报
第2章 微处理器 2.1 概述 /8086微处理器 微处理器 X86/Pentium微处理器
第七章 操作系统接口 7.1 联机用户接口 7.2 Shell命令语言 7.3 系统调用 7.4 UNIX系统调用 7.5 图形用户接口.
第二章 项目一:企业厂区与车间平面设计 1.
班級:行流四甲 組員:497D0004何筱瑩 497D0016鄧宜欣 497D0044呂亭儀 497D0056黃 琪 497D0063賴依淩
香港普通話研習社科技創意小學 周順強老師.
中央广播电视大学开放教育试点课程 计算机操作系统.
第2章:企業組織 張緯良 世新大學資訊管理系.
操作系统结构.
战 后 国 际 关 系 专题五:冷战时期美苏关系的演变 政治学与行政管理系.
CHAP 2 Computer-System Structures 计算机系统结构
Chapter 2: Computer-System Structures计算机系统结构
第8章 机床操作 主讲:臧红彬 博士.
第七章 异常控制流 CPU控制流的概念 进程上下文切换 异常和中断的基本概念 异常和中断的响应和处理
网络信息资源的开发与设计 主讲教师 罗双兰 广西师范大学教育科学学院.
“服务器服务于Internet”报告会 倪光南 1999年7月6日
Chapter 13 輸入/輸出系統 (I/O Systems)
Xen基础架构安全性分析 云朋
第6章 電腦軟體 應用軟體 多元程式處理 系統軟體 記憶體配置 作業系統簡介 虛擬記憶體 作業系統的演進與發展 行程管理
Core Switch 設定 Port的開啟與關閉 Virtual LAN建立 將Port指定到Virtual LAN
第8章 现代微型计算机 x86系列微处理器 8.2 微型计算机体系结构 8.3 存储管理技术 8.4 多任务管理与I/O管理
第一章 概述.
Operating System Concepts 作業系統原理 Chapter 3 行程觀念 (Process Concept)
Windows Vista 操作系统最新安全特性
第7章 中断与异常.
作 業 系 統 第三組 楊育翰 顏瑞霖.
基于硬件辅助的内核漏洞挖掘框架 闫广禄.
虛擬化基本概念.
第七章. 文件系统 (lab5).
Operating System Internals and Design principles
第三章 系统的启动和初始化 (include lab1)
Chapter 3 行程觀念 (Process Concept)
Ch 9: Input/Output System 输入/输出系统
第 5 章、連結與載入 作者:陳鍾誠 旗標出版社.
操作系统实验 lab1-系统引导
作業系統 (Operating System)
第六章. 系统调度,COW Fork和IPC (lab4)
作業系統實習課(三) -建造新的System Call-
Operating System Principles 作業系統原理
第3章 認識處理元.
第五章 中断与异常 中断的基本知识 中断描述符表的初始化 中断处理 中断的下半部处理机制 中断的应用-时钟中断.
微机原理与接口技术 微机原理与接口技术 朱华贵 2015年11月19日.
7.1.1 设备管理的功能(P95) 分配设备:按设备的不同类型和操作系统选用的算法分配。包括分配相应的通道、设备控制器以及对未分配到的任务或怍业进行排队等; 控制和实现真正的输入输出操作。包括通道程序控制、启动设备、及时响应及处理中断讯号等; 对输入输出缓冲区进行管理。例如逻辑名的管理,多个缓冲区的分时以及串并行操作,同类多个外部设备的均衡工作,避免“忙的忙”和“闲的闲”;
(第2版).
第9章 虛擬記憶體 (virtual memory)
第一章.
操作系统的结构和硬件支持 第2章 操作系统的结构和硬件支持.
Chapter 7 掌控記憶體.
第 3 章、組合語言 作者:陳鍾誠 旗標出版社.
K60入门课程 06 首都师范大学物理系 靳熙芃.
本节内容 代码跨段 本质就是修改CS段寄存器 视频提供:昆山滴水信息技术有限公司 官网地址: 论坛地址: QQ交流 :
微型计算机原理与接口技术 (第2版) 赵宏伟 于秀峰 黄永平 秦贵和 北京:科学出版社 出版 吉林大学计算机科学与技术学院 制作.
Chapter 7 掌控記憶體.
第12章 中断 罗文坚 中国科大 计算机学院
售后培训系列之V9系统中心安装 SecManage 网安事业部 广州售后-王长绪.
作業系統 第十六章 系統服務常式.
朱中華 2011/12/14 建立關聯式報表.
本节内容 任务段 视频提供:昆山滴水信息技术有限公司 官网地址: 论坛地址: QQ交流 :
Presentation transcript:

第五章,抢占式调度(lab3)

提纲 用户环境的建立 中断、系统调用

用户环境的建立 用户执行环境数据结构的分配 装载并执行用户环境

用户环境的建立(续) 用户环境(Environments)数据结构的分配 envs是指向一个包含1024个(1<<NENV(10))struct Env结构的指针,与pages指针非常类似,连建立链表的一些宏定义都和在页面管理中的一模一样 可以在分配完pages结构后,分配envs结构,并在env_init()函数中 在i386_vm_init()函数中,将envs结构映射到UENVS逻辑地址处

用户环境的建立(续) 装载并执行用户环境 相关的函数调用 i386_init->ENV_CREATE(user_hello)->env_create->env_alloc->load_icode i386_init->env_run 需要解决以下问题: 用户环境页表的配置与空间分配 装载用户执行代码 切换到用户执行代码

用户环境的建立(续) 用户环境页表的配置与空间分配 页表的配置 在env_create->env_alloc->env_setup_vm 按照JOS的规划,用户执行的逻辑地址空间实际上是与内核共享4GB,内核代码在lab2中已经映射到KERNBASE(0xf0000000)以上的空间,而剩下的低地址空间则留给了用户执行代码 构建用户环境的页表,为了保持内核部分的逻辑地址到物理内存的映射关系,实际上可以将内核的地址映射关系拷贝到用户环境的页表中来。 思考:通过拷贝,可以让用户环境顺利寻址到所有内核端的代码,可是用户代码装载到的低地址空间,还没有实际的物理内存页面与之进行映射,应该采用什么样的办法呢?是通过分配页面的办法将用户环境的空间填满,还是以后根据需要动态分配页面?为什么?

用户环境的建立(续) 装载用户程序到内存(load_icode) 函数原型load_icode(struct Env *e, uint8_t *binary, size_t size) 其中binary指向用户程序在内存中的镜像(如何指向的?) Size是用户程序在内存中镜像的大小 ELF文件的装载过程 ELF文件的格式(见第3章) 将ELF文件中的代码段、数据段、bss段拷贝到Env *e指向的用户环境中(用哪一个CR3会比较方便?) 找到用户程序的入口地址,并将该入口地址赋值到e->env_tf. tf_eip中

用户环境的建立(续) 将用户环境投入执行 env_run(struct Env *e)函数 载入用户环境的页目录 将e->env_tf中包含的寄存器值赋值到物理的寄存器,使得用户环境中的程序开始执行

用户环境的建立(续) 完成用户环境加载 跟踪其运行过程,直到int $0x30 思考 1. 如何赋值e->env_tf才能使装载进来的用户程序投入真正的执行? 2. JOS系统在env_pop_tf之前都对e->env_tf中的值做了哪些初始化的工作? 3. 用户环境的堆栈段从什么地方开始?JOS是如何实现堆栈段的定位的? 4. env_pop_tf是如何工作的?为什么首先执行popal来设置通用寄存器,而不是先pop env_tf结构中后面的tf_ss和tf_esp?

中断、系统调用 i386的异常与中断 i386的异常或中断处理过程 TSS的作用与发生中断后堆栈的构成 JOS中的异常处理 缺页错误、系统调用的实现

中断、系统调用(续) i386的异常与中断 Exceptions and interrupts are both "protected control transfers," which cause the processor to switch from user to kernel mode (CPL=0) without giving the user-mode code any opportunity to interfere with the functioning of the kernel or other environments. In Intel's terminology, an interrupt is a protected control transfer that is caused by an asynchronous event usually external to the processor, such as notification of external device I/O activity. An exception, in contrast, is a protected control transfer caused synchronously by the currently running code, for example due to a divide by zero or an invalid memory access. Exception在i386中与trap是一个意思,但中文翻译的时候往往翻译成异常或陷阱,其实也是一个意思 中断是一些异步事件(如I/O或程序的系统调用)

中断、系统调用(续) i386的异常或中断处理过程 异常或中断的设计是为了实现从用户态到核态的转换,同时实现对特权级代码的保护 i386采用两个机制来实现这一目标:IDT和TSS IDT(Interrupt Descriptor Table)制定了256个中断入口,其中前32个用于异常(traps或exceptions),后面的(中断号>31)用于异步中断(interrupts)的处理。 用户程序在运行过程中产生异常或者中断后,需要将产生中断的地方存储起来,以便在处理完中断后返回,可是存在什么地方呢?这里就要用到TSS(Task State Segment)

中断、系统调用(续) TSS的作用与发生中断后堆栈的构成 本来Intel设计TSS的初衷是想通过这个段,来实现操作系统中多任务的切换 但使用这个切换任务,会占用很多CPU的时间,并且打破CPU的流水。因而,Linux和Windows都没有采用TSS用作切换任务 TSS记录着“I/O权限位图”。另外TSS中还记录着0-2环的esp和ss寄存器。当外环(如ring3)进入内环(如ring0)时,会自动加载TSS中内环的esp和ss。那为什么tss没有记录ring3的esp和ss呢?这是因为,外环进入内环时,会将这些压入堆栈。当从内环返回外环时,从堆栈中恢复就可以了

中断、系统调用(续) TSS的结构 其中最重要的是esp和ss 当从ring 3到ring 0的过程中,会将断点通过压栈存储到ss和esp指向的堆栈空间

中断、系统调用(续) 通过TSS进行特权级转换并压栈后的内核堆栈结构 注:这些压栈动作都由CPU自动完成,不需要写代码来实现 完成这些动作后,CPU会根据发生中断的中断号到IDT中寻找对应的中断处理函数,跳转过去执行 压入信息之后的内核堆栈结构 带error code的内核堆栈结构

中断、系统调用(续) JOS系统中断过程的控制流

中断、系统调用(续) 中断函数的建立 在kern/trapentry.S中建立各个中断处理函数的原型 调用TRAPHANDLER和TRAPHANDLER_NOEC宏,并将创建的函数原型extern到trap.c 在idt_init函数中初始化IDT 注意SETGATE宏的使用

中断、系统调用(续) _alltrap 首先注意调用_alltrap的方式是jmp _alltraps而不是call _alltraps!这意味着调用_alltraps之前不需要将_alltraps之后的指令cs:eip压栈 在进入_alltraps后,(系统)堆栈的组成: 接下来的工作,是要将堆栈组织成一个Trapframe结构,并将栈顶指针esp压栈,做为参数传递给trap(struct Trapframe *tf)函数 这里要注意struct Trapframe的构成,应该压栈哪些才能组成一个Trapframe结构?

中断、系统调用(续) 思考 1. 系统采用i386提供的TSS机制顺利地从ring3转换到ring0,但是如何在处理完中断后从ring0回到ring3呢? 2. 系统如何保证从ring0回到ring3后,仍然能够继续用户环境的执行?

中断、系统调用(续) 缺页错误和断点中断 系统调用 改变中断处理流程,根据中断产生时的中断号进行相应的处理流程 修改trap_dispatch 系统调用 相应中断号:T_SYSCALL(0x30, 48) 从lib/syscall.c 到kern/syscall.c的调用路径 注意参数的传递

本章结束