微型操作系统的设计操作系统课程设计.doc_第1页
微型操作系统的设计操作系统课程设计.doc_第2页
微型操作系统的设计操作系统课程设计.doc_第3页
微型操作系统的设计操作系统课程设计.doc_第4页
微型操作系统的设计操作系统课程设计.doc_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

重庆科技学院重庆科技学院 课程设计报告课程设计报告 院 系 电气与信息工程学院 专业班级 计科普 2008 02 学生姓名 庄桐泉 学 号 2008441067 设计地点 单位 I515 设计题目 微型操作系统的设计 完成日期 2011 年 6 月 19 日 指导教师评语 成绩 五级记分制 指导教师 签字 重庆科技学院重庆科技学院 课程设计任务书课程设计任务书 设计题目 微型操作系统的设计 学生姓名庄桐泉 课程名称操作系统原理课程设计专业班级计科普 08 地 点 I515 起止时间2011 年 6 月 12 日 2011 年 6 月 16 日 设 计 内 容 及 要 求 1 配置操作系统编写的所需的环境 虚拟机的建立和相应环境建立 以准备相 关的必须工具的准备 并学会相关工具的使用 为以后编写一个微操作系统奠 定基础和准备平台 2 学习 NASM 汇编器在本次设计中的使用 3 学习裸机启动的过程 消化操作系统引导程序的结构 在此基础上 完成在实 模式下从软盘引导计算机的程序编写 4 学习本次设计需要的实模式到保护模式切换的相关知识 理解 GDT 在保护模式 的工作机理 5 编写在保护模式下的引导程序 并用 C 语言模拟写一个 内核 并实现在保 护模下通过引导程序启动计算机并将该 内核 加载到内存中 最后切换到内 核 设 计 参 数 1 写出编写一个操作系统所需的环境和操作说明书 2 总结计算机启动顺序和具体过程 3 实现在实模式下系统引导程序的编写 4 理解消化实模式到保护模式切换原理以及相关的数据结构和工作过程 并实现之 5 完成保护模式下的引导程序 并完成 内核 的加载 并使 内核 运行起来 附加要求 请在设计的课后完成具有进程调度和管理的内核的编写 进 度 要 求 6 月 12 日布置任务 对各个任务的基础知识进行讲解 6 月 12 日 安装环境 并熟悉相关工具的使用 6 月 13 日完成实模式下引导程序的编写 6 月 14 日完成实模式与保护模式的切换代码的设计 6 月 15 日完成实模式引导程序和内核加载程序编写 6 月 16 日完成答辩和报告撰写 参 考 资 料 随任务布置的相关电子文档 其 它 说 明 本表应在每次实施前一周由负责教师填写二份 院系审批后交院系办备案 一 份由负责教师留用 若填写内容较多可另纸附后 3 一题多名学生共用的 在设计内容 参数 要求等方面应有所区别 教研室主任 指导教师 摘要 操作系统 Operating System 简称 OS 是一管理电脑硬件与软件资源的 程序 同时也是计算机系统的内核与基石 它为用户执行程序提供方便 最有 效的环境 本设计任务是设计一个微型操作系统 该操作系统首先需要搭建虚拟机环 境 为编写一个微操作系统奠定基础 裸机启动的过程 实现实模式下从软盘 引导计算机的启动 完成保护模式下的引导程序 并完成 内核 的加载 并 使 内核 运行起来 内核 部分实现键盘中断 中断服务程序读取键盘值并 显示出来 关键词 操作系统 虚拟机 裸机启动 键盘中断 目目 录录 1 系统需求分析 1 1 1 设计内容与目的 1 1 2 设计的实现方案 1 2 总体设计 2 2 1 功能模块图 2 2 2 计算机引导程序 2 2 3 内核键盘中断实现 3 3 详细设计 6 3 1 启动程序实现 6 3 2 内核键盘中断实现 9 3 3 功能实现 11 4 设计总结 13 5 致谢 14 6 参考文献 15 1 1 系统需求分析系统需求分析 1 1 设计内容与目的 设计一个微型操作系统 在实模式下从软盘引导计算机启动 并在保护模 式下运行 内核 通过分析 该设计需要完成以下任务 1 搭建虚拟机环境 为编写一个微操作系统奠定基础 2 利用 NASM 汇编器编译启动汇编程序 3 完成在实模式下从软盘引导计算机 4 学习本次设计需要的实模式到保护模式切换的相关知识 理解 GDT 在保护 模式的工作机理 5 编写在保护模式下的引导程序 并用 C 语言模拟写一个 内核 并实现 在保护模下通过引导程序启动计算机并将该 内核 加载到内存中 最后切换 到内核 1 2 设计的实现方案 本设计完成一个真正意义上的操作系统引导 计算机启动程序将从计算机启 动时的 16 位的实模式转到现在通用的 32 位的保护模式下 现在的操作系统除 了最低层的部份之外 均由高级语言完成 在本设计中也将用高级语言来编写 内核 实现的一个内核是用 C 语言编写的 用汇编写的引导程序 把 C 语言写 的内核载入并执行 这就是本设计将要完成的主要任务 内核中的键盘中断设 计 intel 8259a intel 8259a 可编程中断控制器可以为 CPU 处理 8 位优先级中断 而且 无须额外电路即可级联扩展至 64 位优先级中断处理 通过对 8259A 的 初始化和控制 可以实现在保护模式下的键盘中断 2 2 总体设计总体设计 2 1 功能模块图 该设计的功能模块如下图所示 图 2 1 功能模块图 2 2 计算机引导程序 本程序的主要功能是实现实模式和保护模式的切换 1 切换到保护方式的准备工作 在从实模式切换到保护模式之前 必须作必要的准备 需要建立合适的全局描述符表 并使用 GDTR 指向该 GDT 因为在切换到保护方式时 至少要把代码段的选择子装载到 CS 所以 GDT 中至少含有代码段的描述符 2 由实模式切换到保护模式 在做好准备后 从实模式切换到保护模式原则上只要把控制寄存器 CR0 中的 PE 位置 1 即可 mov eax cr0 微型操作系统 实模式下从软盘 引导计算机 内核 实现键盘 中断并显示键盘值 从 键 盘 输 入 值 中 断 响 应 显 示 or eax 1 mov cr0 eax 实际情况要比这复杂些 执行上面的三条指令后 处理器转入保护模式 但 CS 中的 内容还是实模式下代码段的段值 而不是保护模式下代码段的选择子 所以在取指令之前 得把代码段的选择子装入 CS 为此 紧接着这三条指令 安排一条如下所示的段间转移指 令 jmp gdt code addr code 32 跳入 32 位的代码段中 这条段间转移指令 在实模式下被预取并在保护方式下被执行 利用这条段间转移指 令可把保护模式下代码段的选择子装入 CS 同时也刷新指令预取队列 从此真正进入保护 模式 2 3 内核键盘中断实现 要使用中断方式 就必须编写中断处理程序 通过 IDT 中断描述符表 让 CPU 知道此中断的中断处理程序在什么地方 此表的每一个表项对应一个中 断 每一个表项都指明此中断的中断处理程序在什么地方 因此首要的任务是 要构造一个中断描述符表 中断描述符表一共可有 256 项 即 256 个中断 头三十二项 也就是 0 31 号中断 已经被 CPU 及硬件所占用了 因此只能从第三十三项即 32 号中断开始 构造中断及中断服务程序 可编程中断控制器 PIC 功能上是中断驱动系统环境下的总管家 决定哪 一个输入优先级最高 确定输入请求是否拥有比当前服务级别更高的优先级 并且将决定出的中断通知 CPU 为了使中断系统起作用 需要对 PIC 可编程的中断控制器 进行编程 PIC 是可编程的中断控制器 它可以处理硬件中断请求 当硬件发生中断时 PIC 把中断信号送到 CPU 然后 CPU 处理中断 实际上有两上 PIC 第一个 PIC1 端口号 0 x20 0 x21 处理 IRQ0 IRQ7 的请求 第二个 PIC2 端口号 0 xA0 0 xA1 处理 IRQ8 IRQ15 的请求 CPU 只知道逻辑意义上的中断 不区分是 物理上的软件中断还是硬件中断 因此必须把 CPU 不知道的物理中断 映射为 CPU 知道的逻辑意义上的中断 在实模式下 这项工作由 BIOS 来做 在保护模 式下需要自己编程 通过发送一些 ICW 初始化命令字 来实现对 PICs 的控制和初始化 1 发送 ICW1 到 PIC1 20h 与 PIC2 A0h 中 2 发送 ICW2 到 PIC1 21h 与 PIC2 A1h 中 3 发送 ICW3 到 PIC1 21h 与 PIC2 A1h 中 4 发送 ICW4 到 PIC1 21h 与 PIC2 A1h 中 利用内嵌汇编发送一些 ICW 初始化命令字 来实现对 PICs 的控制和初始化 实现代码如下 asm mov 0 x11 al out al 0 x20 n asm mov 0 x11 al out al 0 xA0 n asm mov 0 x20 al out al 0 x21 n asm mov 0 x28 al out al 0 xA1 n asm mov 0 x04 al out al 0 x21 n asm mov 0 x02 al out al 0 xA1 n asm mov 0 x1 al out al 0 x21 n asm mov 0 x1 al out al 0 xA1 n asm mov 0 xfd al out al 0 x21 n asm mov 0 xff al out al 0 xA1 n 初始化命令字格式初始化命令字格式 ICW1 A0D7D6D6D4D3D2D1D0 0A7A6A51LTIMADISNGLIC4 中断向量地址 A7 A5 仅用于 MCS 80 85 1 电平触发 0 边沿触发 地址调用间隔 1 4 间隔 0 8 间隔 1 单片模式 0 级联模式 1 需要 ICW4 0 不需要 ICW2 A0D7D6D6D4D3D2D1D0 1A15 T7A14 T6A13 T5A12 T4A11 T3A10A9A8 中断向量地址的 A15 A8 MCS 80 85 中断向量地址 T7 T3 ICW3 主片 主片 A0D7D6D5D4D3D2D1D0 11 IR 输入有从片 0 IR 输入无从片 ICW3 从片 从片 A0D7D6D5D4D3D2D1D0 100000ID2ID1ID0 从片地址 ICW4 A0D7D6D5D4D3D2D1D0 1000SFNMBUFM SAEOI mPM 1 特殊全嵌套模 式 0 全嵌套模式 0X 无缓冲模式 10 缓冲模式 从片 11 缓冲模式 主片 1 自动 EOI 0 一般 EOI 1 8086 8088 模式 0 MCS 80 85 模式 PIC1 处理的中断有 0 系统时钟 1 键盘 2 重定向到 IRQ9 PIC2 的 IRQ1 3 串口 1 COM2 4 4 串口 2 COM1 3 5 声卡 6 软驱 7 并行端口 PIC2 处理的中断有 0 实时时钟 1 来自 IRQ2 PIC1 2 保留 3 保留 4 鼠标 5 数学协处理器 6 硬盘 7 保留 因此 我们只要打开 PIC1 的 1 号键盘中断就可以实现实模式下的键盘中断功能 通过这两条内嵌汇编 asm mov 0 xfd al out al 0 x21 n asm mov 0 xff al out al 0 xA1 n 就可以在保护模式下打开键盘中断 3 3 详细设计详细设计 3 1 启动程序实现 BITS 16 ORG 0 x7C00 jmp main 数据定义 bootdrive db 0 GDT 定义 此处定义段及段描述符 gdt gdt null dd 0 dd 0 每个段的描述符是 64 位 8 字节 空描述符的这 64 位全是 0 gdt code addr equ gdt 求得代码段在 GDT 表中的位置 gdt code dw 0 xffff 段大小为 4GB dw 0 基地址 24 位 db 0 db 10011010b 属性描述位 指明此是代码段 可读可执 db 11001111b db 0 gdt data addr equ gdt 求得数据段在 GDT 表中的位置 gdt data dw 0 xffff dw 0 db 0 db 10010010b 指明此是数据段 可读可写 db 11001111b db 0 gdt end gdt addr dw gdt end gdt 1 GDT 表的大小 dd gdt GDT 表的位置 main 引导程序从此处开始执行 mov bootdrive dl 得到启动的驱动器号 xor ax ax 设置 DS mov ds ax 清屏 mov ax 3 设置清屏功能号 int 0 x10 调用 BIOS 10 号中断清屏 ResetFloppy 重置磁盘 不是必须的 主要是为了安全起见 mov ax 0 设置重置磁盘的功能号 mov dl bootdrive 选择启动磁盘 int 0 x13 调用 BIOS 13 号中断重置磁盘 jc ResetFloppy 如果出错则重试 ReadFloppy 读内核到内存中 0000 9000 es bx 处 xor ax ax 设置 es 寄存器 mov es ax mov bx 0 x9000 mov ah 2 设置读磁盘功能号 mov dl bootdrive 设置欲读驱动器号 mov ch 0 磁头号 mov cl 2 起始扇区号 从第二个扇区开始读 第一个扇区是引导扇区 第二个才是内核所在 mov al 17 需读入扇区的数量 此处读了 17 个扇区 是怕内核较大 读少了读不完 int 13h 调用 BIOS 13 号中断开始读扇区 此中断会将数据读到 es bx 处 jc ReadFloppy 如果出错则重试 ah 中是错误号 为 0 则没错 mov dl bootdrive 停止驱动器 mov edx 0 x3f2 mov al 0 x0c out dx al cli 关中断 lgdt gdt addr 载入 GDT 的描述符 mov eax cr0 下面三句设置 cr0 的第 0 位 PE 位 为 1 表示进入保护模式 or eax 1 mov cr0 eax jmp gdt code addr code 32 跳入 32 位的代码段中 BITS 32 code 32 mov ax gdt data addr 以下三句设置 DS ES SS FS GS 为数据段描述表的位置 mov ds ax mov es ax mov ss ax mov fs ax mov gs ax mov esp 0 xffff 设置堆栈的头指针 jmp gdt code addr 0 x9000 跳入内核 gdt code addr 是定义的代码段的描述符所在的索引 由于我们先前是把内核读到了 0 x9000 的位置 times 510 db 0 db 0 x55 db 0 xAA 分析 分析 用 NASM 对汇编代码进行编译 nasm load asm o load bin 编译成功后的 load bin 作为操作系统实模式下计算机的引导程序 程序大体流程图如下 图图 3 1 13 1 1 引导程序流程图引导程序流程图 开始 定义段及段描述符 并设置段及段描述 符的属性 选择启动磁盘 设置读磁盘功能号 第二个扇区开始读 是否出错 关中断 载入 GDT 描述符 跳入 32 位的代码段 中 结束 是否 3 2 内核键盘中断实现 typedef struct unsigned long dword0 unsigned long dword1 segment desc unsigned char videomem unsigned char 0 xb8000 segment desc idt 256 unsigned long idt desc 2 unsigned long idt addr unsigned long keyboard addr unsigned long idt offset 0 x8 void keyboard interrupt int main asm mov 0 x11 al out al 0 x20 n asm mov 0 x11 al out al 0 xA0 n asm mov 0 x20 al out al 0 x21 n asm mov 0 x28 al out al 0 xA1 n asm mov 0 x04 al out al 0 x21 n asm mov 0 x02 al out al 0 xA1 n asm mov 0 x1 al out al 0 x21 n asm mov 0 x1 al out al 0 xA1 n asm mov 0 xfd al out al 0 x21 n asm mov 0 xff al out al 0 xA1 n keyboard addr unsigned long keyboard interrupt idt 0 x21 dword0 keyboard addr idt 0 x21 dword1 keyboard addr idt addr unsigned long idt idt desc 0 0 x800 idt addr asm lidt 0 n sti m idt desc while 1 return 0 void keyboard interrupt videomem C videomem 0 x1b 分析 分析 1 在 Linux 下编写好此 C 语言程序 输入以下命令进行编译 gcc c xyb c 其中 c 表示只编译不链接 ld o xyb Ttext 0 x9000 e main xyb o 其中 o 表示输出文件名 Ttex 0 x9000 表示程序基址定为 0 x9000 e main 表示从 main 开始执行 objcopy R note R comment S O binary xyb xyb bin R note R comment 表示移掉 note 与 comment 段 S 表示移出所有的标志及重定位信息 O binary xyb xyb bin 表示由 xyb 生成二进制文件 xyb bin 2 代码用到了内嵌汇编 如 asm mov 0 x11 al out al 0 x20 n 代表的意思为 将 0 x11 的值发送到 0 x20 端口中 3 程序流程图 图 3 2 1 内核程序流程图 实模式下引导计算机进入内核 发送 4 个 ICW 对 PIC 初始化 设定中断屏蔽字 只许键盘中断 设置键盘中断处理程序位置 获得整个 IDT 的位置描述 用 lidt 指令载入 IDT 表 进入 while 1 等待键盘中断 3 3 功能实现功能实现 利用 winhex 工具 操作如下 1 用 winhex 工具打开引导程序load bin 效果如图所示 图图 3 3 1 编译完成后的引导程序编译完成后的引导程序load binload bin 2 用 winhex 工具打开内核程序 xy Bin 效果如图所示 图图 3 3 2 编译完成后的内核编译完成后的内核 xy bin 3 制作软驱 利用 winhex 工具将 xy bin 添加到 load bin 后面 制作 os img 4 启动微型操作系统如下 利用虚拟机工具 virtual PC 启动后选择菜单 capture floppy disk image 成功启动后 按下键盘任意键 可以看到进入中断服务程序 ISR 显示内容如下 说明进入 ISR 成功 键盘中断基本成功 图图 2 3 3 进入进入 ISR 后的显示后的显示 4 4 设计总结设计总结 通过本次微型操作系统的设计巩固了平时学习中的理论知识 同时对操 作系统底层编程有了进一步的了解 本次课程设计实现了在实模式下对计算 机的引导 内核部分用 C 语言写 在实模式下启动计算机后就开始运行内核 部分 内核实现中断键盘响应和打印等功能 由于时间比较紧迫 仍有些功 能没有实现 出现的问题如下 在内核中 能响应键盘中断 但只能进入一 次 之后就没法再响应键盘中断了 这是内核部分的缺陷 通过不断调试 仍然无法解决这个问题 最后只能实现这个简单的功能 但不管怎样 这次 课程设计还是学到了很多知识 5 5 致谢致谢 首先感谢老师对我这次课程设计的辛勤帮助 使我对基本理论知识有了 更深刻的掌握 这学期我学习最努力的就是操作系统这门课 一直在努力学 懂操作系统的基础知识 谢谢老师这学期对我的辅导 让我对操作系统有了 更加深入的理解 我以后仍将继续学习操作系统 感谢在本次课程设计中帮 助我的同学 感谢学校和院系给我这次课程设计的机会 6 6 参考文献参考文献 1 操作系统 第 2 版 孟庆昌 牛欣源 电子工业出版社 2010 2 操作系统基础知识 哈工大 C 语言论坛 2008 袁节膅薂羄肅蒃薁蚃芀荿薀螆肃芅蕿袈芈膁蚈羀肁蒀蚇蚀袄莆蚇螂肀莂蚆羅袂芈蚅蚄膈膄蚄螇羁蒂蚃衿膆莈蚂羁罿芄螁蚁膄膀螁螃羇葿螀袅膃蒅蝿肈羆莁螈螇芁芇莄袀肄膃莄羂艿蒂莃蚂肂莈蒂螄芈芄蒁袆肀膀蒀罿袃薈葿螈聿蒄葿袁羁莀蒈羃膇芆蒇蚃羀膂蒆螅膅蒁薅袇羈莇薄罿膄芃薃虿羆艿薃袁节膅薂羄肅蒃薁蚃芀荿薀螆肃芅蕿袈袁节膅薂羄肅蒃薁蚃芀荿薀螆肃芅蕿袈芈膁蚈羀肁蒀蚇蚀袄莆蚇螂肀莂蚆羅袂芈蚅蚄膈膄蚄螇羁蒂蚃衿膆莈蚂羁罿芄螁蚁膄膀螁螃羇葿螀袅膃蒅蝿肈羆莁螈螇芁芇莄袀肄膃莄羂艿蒂莃蚂肂莈蒂螄芈芄蒁袆肀膀蒀罿袃薈葿螈聿蒄葿袁羁莀蒈羃膇芆蒇蚃羀膂蒆螅膅蒁薅袇羈莇薄罿膄芃薃虿羆艿薃袁节膅薂羄肅蒃薁蚃芀荿薀螆肃芅蕿袈 芈膁蚈羀肁蒀蚇蚀袄莆蚇螂肀莂蚆羅袂芈蚅蚄膈膄蚄螇羁蒂蚃衿膆莈蚂羁罿芄螁蚁膄膀螁螃羇葿螀袅膃蒅蝿肈羆莁螈螇芁芇莄袀肄膃莄羂艿蒂莃蚂肂莈蒂螄芈芄蒁袆肀膀蒀罿袃薈葿螈聿蒄葿袁羁莀蒈羃膇芆蒇蚃羀膂蒆螅膅蒁薅袇羈莇袄芈蒇袇螀芇蕿蚀聿芆艿蒃肅芅蒁螈羁芄薃薁袆芃芃螆螂芃莅蕿肁节蒈螅羇莁薀薈袃莀艿螃蝿荿莂薆膈莈薄袁肄莇蚆蚄羀莇莆袀袆羃蒈蚂螂羂薁袈肀肁芀蚁羆肁莃袆袂肀薅虿袈聿蚇蒂膇肈莇螇肃肇葿薀罿肆薂螆袅肅芁薈螁膅莃螄聿膄蒆薇羅膃蚈螂羁膂莈蚅袇膁蒀袀螃膀薂蚃肂腿节衿羈腿莄蚂袄芈蒇袇螀芇蕿蚀聿芆艿蒃肅芅蒁螈羁芄薃薁袆芃芃螆螂芃莅蕿肁节蒈螅羇莁薀薈袃莀艿螃蝿荿莂薆膈莈薄袁肄莇蚆蚄羀莇莆袀袆羃蒈蚂螂羂薁袈肀肁芀蚁羆肁莃袆袂肀薅虿袈聿蚇蒂膇肈莇螇肃肇葿薀罿肆薂螆袅肅芁薈螁膅莃螄聿膄蒆薇羅膃蚈螂羁膂莈蚅袇膁蒀袀螃膀薂蚃肂腿节衿羈腿莄蚂袄芈蒇袇螀芇蕿蚀聿芆艿蒃肅芅蒁螈羁芄薃薁袆芃芃螆螂芃莅蕿肁节蒈螅羇莁薀薈袃莀艿螃蝿荿莂薆膈莈薄袁肄莇蚆蚄羀莇莆袀袆芈膁蚈羀肁蒀蚇蚀袄莆蚇螂肀莂蚆羅袂芈蚅蚄膈膄蚄螇羁蒂蚃衿膆莈蚂羁罿芄螁蚁膄膀螁螃羇葿螀袅膃蒅蝿肈羆莁螈螇芁芇莄袀肄膃莄羂艿蒂莃蚂肂莈蒂螄芈芄蒁袆肀膀蒀罿袃薈葿螈聿蒄葿袁羁莀蒈羃膇芆蒇蚃羀膂蒆螅膅蒁薅袇羈莇袄芈蒇袇螀芇蕿蚀聿芆艿蒃肅芅蒁螈羁芄薃薁袆芃芃螆螂芃莅蕿肁节蒈螅羇莁薀薈袃莀艿螃蝿荿莂薆膈莈薄袁肄莇蚆蚄羀莇莆袀袆羃蒈蚂螂羂薁袈肀肁芀蚁羆肁莃袆袂肀薅虿袈聿蚇蒂膇肈莇螇肃肇葿薀罿肆薂螆袅肅芁薈螁膅莃螄聿膄蒆薇羅膃蚈螂羁膂莈蚅袇膁蒀袀螃膀薂蚃肂腿节衿羈腿莄蚂袄芈蒇袇螀芇蕿蚀聿芆艿蒃肅芅蒁螈羁芄薃薁袆芃芃螆螂芃莅蕿肁节蒈螅羇莁薀薈袃莀艿螃蝿荿莂薆膈莈薄袁肄莇蚆蚄羀莇莆袀袆羃蒈蚂螂羂薁袈肀肁芀蚁羆肁莃袆袂肀薅虿袈聿蚇蒂膇肈莇螇肃肇葿薀罿肆薂螆袅肅芁薈螁膅莃螄聿膄蒆薇羅膃蚈螂羁膂莈蚅袇膁蒀袀螃膀薂蚃肂腿节衿羈腿莄蚂袄芈蒇袇螀芇蕿蚀聿芆艿蒃肅芅蒁螈羁芄薃薁袆芃芃螆螂芃莅蕿肁节蒈螅羇莁薀薈袃莀艿螃蝿荿莂薆膈莈薄袁肄莇蚆蚄羀莇莆袀袆 羃蒈蚂螂羂薁袈肀肁芀蚁羆肁莃袆袂肀薅虿袈聿蚇蒂膇肈莇螇肃肇葿薀罿肆薂螆袅肅芁薈螁膅莃螄聿膄蒆薇羅膃蚈螂羁膂莈蚅袇膁蒀袀螃膀薂蚃肂腿节衿羈腿莄蚂袄芈蒇袇螀芇蕿蚀聿芆艿蒃肅芅蒁螈羁芄薃薁袆芃芃螆螂芃莅蕿肁节蒈螅羇莁薀薈袃莀艿螃蝿荿莂薆膈莈薄袁肄莇蚆蚄羀莇莆袀袆羃蒈蚂螂羂薁袈肀肁芀蚁羆肁莃袆袂肀薅虿袈聿蚇蒂膇肈莇螇肃肇葿薀罿肆薂螆袅肅芁薈螁膅莃螄聿膄蒆薇羅膃蚈螂羁膂莈蚅袇膁蒀袀螃膀薂蚃肂腿节衿羈腿莄蚂袄芈蒇袇螀芇蕿蚀聿芆艿蒃肅芅蒁螈羁芄薃薁袆芃芃螆螂芃莅蕿肁节蒈螅羇莁薀薈袃莀艿螃蝿荿莂薆膈莈薄袁肄莇蚆蚄羀莇莆袀袆羃蒈蚂螂羂薁袈肀肁芀蚁羆肁莃袆袂肀薅虿袈聿蚇蒂膇肈莇螇肃肇葿薀罿肆薂螆袅肅芁薈螁膅莃螄聿膄蒆薇羅膃蚈螂羁膂莈蚅袇膁蒀袀螃膀薂蚃肂腿节衿羈腿莄蚂袄芈蒇袇螀芇蕿蚀聿芆艿蒃肅芅蒁螈羁芄薃薁袆芃芃螆螂芃莅蕿肁节蒈螅羇莁薀薈袃莀艿螃蝿荿莂薆膈莈薄袁肄莇蚆蚄羀莇莆袀袆羃蒈蚂螂羂薁袈肀肁芀蚁羆肁莃袆袂肀薅虿袈聿蚇蒂膇肈莇螇肃肇葿薀羃蒈蚂螂羂薁袈肀肁芀蚁羆肁莃袆袂肀薅虿袈聿蚇蒂膇肈莇螇肃肇葿薀罿肆薂螆袅肅芁薈螁膅莃螄聿膄蒆薇羅膃蚈螂羁膂莈蚅袇膁蒀袀螃膀薂蚃肂腿节衿羈腿莄蚂袄芈蒇袇螀芇蕿蚀聿芆艿蒃肅芅蒁螈羁芄薃薁袆芃芃螆螂芃莅蕿肁节蒈螅羇莁薀薈袃莀艿螃蝿荿莂薆膈莈薄袁肄莇蚆蚄羀莇莆袀袆羃蒈蚂螂羂薁袈肀肁芀蚁羆肁莃袆袂肀薅虿袈聿蚇蒂膇肈莇螇肃肇葿薀罿肆薂螆袅肅芁薈螁膅莃螄聿膄蒆薇羅膃蚈螂羁膂莈蚅袇膁蒀袀螃膀薂蚃肂腿节衿羈腿莄蚂袄芈蒇袇螀芇蕿蚀聿芆艿蒃肅芅蒁螈羁芄薃薁袆芃芃螆螂芃莅蕿肁节蒈螅羇莁薀薈袃莀艿螃蝿荿莂薆膈莈薄袁肄莇蚆蚄羀莇莆袀袆羃蒈蚂螂羂薁袈肀肁芀蚁羆肁莃袆袂肀薅虿袈聿蚇蒂膇肈莇螇肃肇葿薀罿肆薂螆袅肅芁薈螁膅莃螄聿膄蒆薇羅膃蚈螂羁膂莈蚅袇膁蒀袀螃膀薂蚃肂腿节衿羈腿莄蚂袄芈蒇袇螀芇蕿蚀聿芆艿蒃肅芅蒁螈羁芄薃薁袆芃芃螆螂芃莅蕿肁节蒈螅羇莁薀薈袃莀艿螃蝿荿莂薆膈莈薄袁肄莇蚆蚄羀莇莆袀袆羃蒈蚂螂羂薁袈肀肁芀蚁羆肁莃袆袂肀薅虿袈聿蚇蒂膇肈莇螇肃肇葿薀 罿肆薂螆袅肅芁薈螁膅莃螄聿膄蒆薇袁节膅薂羄肅蒃薁蚃芀荿薀螆肃芅蕿袈芈膁蚈羀肁蒀蚇蚀袄莆蚇螂肀莂蚆羅袂芈蚅蚄膈膄蚄螇羁蒂蚃衿膆莈蚂羁罿芄螁蚁膄膀螁螃羇葿螀袅膃蒅蝿肈羆莁螈螇芁芇莄袀肄膃莄羂艿蒂莃蚂肂莈蒂螄芈芄蒁袆肀膀蒀罿袃薈葿螈聿蒄葿袁羁莀蒈羃膇芆蒇蚃羀膂蒆螅膅蒁薅袇羈莇薄罿膄芃薃虿羆艿薃袁节膅薂羄肅蒃薁蚃芀荿薀螆肃芅蕿袈芈膁蚈羀肁蒀蚇蚀袄莆蚇螂肀莂蚆羅袂芈蚅蚄膈膄蚄螇羁蒂蚃衿膆莈蚂羁罿芄螁蚁膄膀螁螃羇葿螀袅膃蒅蝿肈羆莁螈螇芁芇莄袀肄膃莄羂艿蒂莃蚂肂莈蒂螄芈芄蒁袆肀膀蒀罿袃薈葿螈聿蒄葿袁羁莀蒈羃膇芆蒇蚃羀膂蒆螅膅蒁薅袇羈莇薄罿膄芃薃虿羆艿薃袁节膅薂羄肅蒃薁蚃芀荿薀螆肃芅蕿袈芈膁蚈羀肁蒀蚇蚀袄莆蚇螂肀莂蚆羅袂芈蚅蚄膈膄蚄螇羁蒂蚃衿膆莈蚂羁罿芄螁蚁膄膀螁螃羇葿螀袅膃蒅蝿肈羆莁螈螇芁芇莄袀肄膃莄羂艿蒂莃蚂肂莈蒂螄芈芄蒁袆肀膀蒀罿袃薈葿螈聿蒄葿袁羁莀蒈羃膇芆蒇蚃羀膂蒆螅膅蒁薅袇羈莇薄罿膄芃薃虿羆艿薃袁节膅薂羄肅蒃薁蚃芀荿薀螆肃芅罿肆薂螆袅肅芁薈螁膅莃螄聿膄蒆薇袁节膅薂羄肅蒃薁蚃芀荿薀螆肃芅蕿袈芈膁蚈羀肁蒀蚇蚀袄莆蚇螂肀莂蚆羅袂芈蚅蚄膈膄蚄螇羁蒂蚃衿膆莈蚂羁罿芄螁蚁膄膀螁螃羇葿螀袅膃蒅蝿肈羆莁螈螇芁芇莄袀肄膃莄羂艿蒂莃蚂肂莈蒂螄芈芄蒁袆肀膀蒀罿袃薈葿螈聿蒄葿袁羁莀蒈羃膇芆蒇蚃羀膂蒆螅膅蒁薅袇羈莇薄罿膄芃薃虿羆艿薃袁节膅薂羄肅蒃薁蚃芀荿薀螆肃芅蕿袈芈膁蚈羀肁蒀蚇蚀袄莆蚇螂肀莂蚆羅袂芈蚅蚄膈膄蚄螇羁蒂蚃衿膆莈蚂羁罿芄螁蚁膄膀螁螃羇葿螀袅膃蒅蝿肈羆莁螈螇芁芇莄袀肄膃莄羂艿蒂莃蚂肂莈蒂螄芈芄蒁袆肀膀蒀罿袃薈葿螈聿蒄葿袁羁莀蒈羃膇芆蒇蚃羀膂蒆螅膅蒁薅袇羈莇薄罿膄芃薃虿羆艿薃袁节膅薂羄肅蒃薁蚃芀荿薀螆肃芅蕿袈芈膁蚈羀肁蒀蚇蚀袄莆蚇螂肀莂蚆羅袂芈蚅蚄膈膄蚄螇羁蒂蚃衿膆莈蚂羁罿芄螁蚁膄膀螁螃羇葿螀袅膃蒅蝿肈羆莁螈螇芁芇莄袀肄膃莄羂艿蒂莃蚂肂莈蒂螄芈芄蒁袆肀膀蒀罿袃薈葿螈聿蒄葿袁羁莀蒈羃膇芆蒇蚃羀膂蒆螅膅蒁薅袇羈莇薄罿膄芃薃虿羆艿薃袁节膅薂羄肅蒃薁蚃芀荿薀螆肃芅 蕿袈芈膁蚈羀肁蒀蚇蚀袄莆蚇螂肀莂蚆羅袂芈蚅蚄膈膄蚄螇羁蒂蚃衿膆莈蚂羁罿芄螁蚁膄膀螁螃羇葿螀袅膃蒅蝿肈羆莁螈螇芁芇莄袀肄膃莄羂艿蒂莃蚂肂莈蒂螄芈芄蒁袆肀膀蒀罿袃薈葿螈聿蒄葿袁羁莀蒈羃膇芆蒇蚃羀膂蒆螅膅蒁薅袇羈莇薄罿膄芃薃虿羆艿薃袁节膅薂羄肅蒃薁蚃芀荿薀螆肃芅蕿袈芈膁蚈羀肁蒀蚇蚀袄莆蚇螂肀莂蚆羅袂芈蚅蚄膈膄蚄螇羁蒂蚃衿膆莈蚂羁罿芄螁蚁膄膀螁螃羇葿螀袅膃蒅蝿肈羆莁螈螇芁芇莄袀肄膃莄羂艿蒂莃蚂肂莈蒂螄芈芄蒁袆肀膀蒀罿袃薈葿螈聿蒄葿袁羁莀蒈羃膇芆蒇蚃羀膂蒆螅膅蒁薅袇羈莇薄罿膄芃薃虿羆艿薃袁节膅薂羄肅蒃薁蚃芀荿薀螆肃芅蕿袈芈膁蚈羀肁蒀蚇蚀袄莆蚇螂肀莂蚆羅袂芈蚅蚄膈膄蚄螇羁蒂蚃衿膆莈蚂羁罿芄螁蚁膄膀螁螃羇葿螀袅膃螈聿蒄葿袁羁莀蒈羃膇芆蒇蚃羀膂蒆螅膅蒁薅袇羈莇薄罿膄芃薃虿羆艿薃袁节膅薂羄肅蒃薁蚃芀荿薀螆肃芅蕿袈芈膁蚈羀肁蒀蚇蚀袄莆蚇螂肀莂蚆羅袂芈蚅蚄膈膄蚄螈螇芁芇莄袀肄膃莄羂艿蒂莃蚂肂莈蒂螄芈芄蒁袆肀膀蒀罿袃薈葿螈聿蒄葿袁羁莀蒈羃膇芆蕿袈芈膁蚈羀肁蒀蚇蚀袄莆蚇螂肀莂蚆羅袂芈蚅蚄膈膄蚄螇羁蒂蚃衿膆莈蚂羁罿芄螁蚁膄膀螁螃羇葿螀袅膃蒅蝿肈羆莁螈螇芁芇莄袀肄膃莄羂艿蒂莃蚂肂莈蒂螄芈芄蒁袆肀膀蒀罿袃薈葿螈聿蒄葿袁羁莀蒈羃膇芆蒇蚃羀膂蒆螅膅蒁薅袇羈莇薄罿膄芃薃虿羆艿薃袁节膅薂羄肅蒃薁蚃芀荿薀螆肃芅蕿袈芈膁蚈羀肁蒀蚇蚀袄莆蚇螂肀莂蚆羅袂芈蚅蚄膈膄蚄螇羁蒂蚃衿膆莈蚂羁罿芄螁蚁膄膀螁螃羇葿螀袅膃蒅蝿肈羆莁螈螇芁芇莄袀肄膃莄羂艿蒂莃蚂肂莈蒂螄芈芄蒁袆肀膀蒀罿袃薈葿螈聿蒄葿袁羁莀蒈羃膇芆蒇蚃羀膂蒆螅膅蒁薅袇羈莇薄罿膄芃薃虿羆艿薃袁节膅薂羄肅蒃薁蚃芀荿薀螆肃芅蕿袈芈膁蚈羀肁蒀蚇蚀袄莆蚇螂肀莂蚆羅袂芈蚅蚄膈膄蚄螇羁蒂蚃衿膆莈蚂羁罿芄螁蚁膄膀螁螃羇葿螀袅膃螈聿蒄葿袁羁莀蒈羃膇芆蒇蚃羀膂蒆螅膅蒁薅袇羈莇薄罿膄芃薃虿羆艿薃袁节膅薂羄肅蒃薁蚃芀荿薀螆肃芅蕿袈芈膁蚈羀肁蒀蚇蚀袄莆蚇螂肀莂蚆羅袂芈蚅蚄膈膄蚄螈螇芁芇莄袀肄膃莄羂艿蒂莃蚂肂莈蒂螄芈芄蒁袆肀膀蒀罿袃薈葿螈聿蒄葿袁羁莀蒈羃膇芆 蒇蚃羀膂蒆螅膅蒁薅袇羈莇薄罿膄芃薃虿羆艿薃袁节膅薂羄肅蒃薁蚃芀荿薀螆肃芅蕿袈芈膁蚈羀肁蒀蚇蚀袄莆蚇螂肀莂蚆羅袂芈蚅蚄膈膄蚄螇羁蒂蚃衿膆莈蚂羁罿芄螁蚁膄膀螁螃羇葿螀袅膃蒅蝿肈羆莁螈螇芁芇莄袀肄膃莄羂艿蒂莃蚂肂莈蒂螄芈芄蒁袆肀膀蒀罿袃薈蒇蚃羀膂蒆螅膅蒁薅袇羈莇薄罿膄芃薃虿羆艿薃袁节膅薂羄肅蒃薁蚃芀荿薀螆肃芅蕿袈芈膁蚈羀肁蒀蚇蚀袄莆蚇螂肀莂蚆羅袂芈蚅蚄膈膄蚄螇羁蒂蚃衿膆莈蚂羁罿芄螁蚁膄膀螁螃羇葿螀袅膃蒅蝿肈羆莁螈螇芁芇莄袀肄膃莄羂艿蒂莃蚂肂莈蒂螄芈芄蒁袆肀膀蒀罿袃薈 芀荿薀螆肃芅蕿袈芈膁蚈羀肁蒀蚇蚀袄莆蚇螂肀莂蚆羅袂芈蚅蚄膈膄蚄螇羁蒂蚃衿膆莈蚂羁罿芄螁蚁膄膀螁螃羇葿螀袅膃蒅蝿肈羆莁螈螇芁芇莄袀肄

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论