《操作系统的设计与实现.ppt》由会员分享,可在线阅读,更多相关《操作系统的设计与实现.ppt(37页珍藏版)》请在课桌文档上搜索。
1、操作系统设计与实现操作系统的实现,2,内容提要,代码结构组织与数据结构定义专题1操作系统的启动过程专题2操作系统的进程管理专题3操作系统的设备管理专题4操作系统的内存管理专题5操作系统的文件管理,内容提要,3,代码结构组织,代码结构与数据结构,Minix系统代码结构,头文件:usr/include,源代码:usr/src,无法归类的公共头文件,Posix标准头文件:sys/,操作系统头文件:minix/,IBM PC头文件:ibm/,系统核心代码:kernel/,内存管理器代码:mm/,文件系统代码:fs/,库例程代码:lib/,init源代码:tools/,命令代码:commands/,网络
2、源代码:inet/,测试工具源代码:test/,4,代码结构组织,代码结构与数据结构,系统核心代码kernel/,独立代码模块mm、fs.,源代码,头文件,5,头文件的定义与组织,头文件有哪些功能?功能1:定义数据结构、定义函数接口功能2:宏定义,例如常量、错误代码功能3:设定编译开关,控制运行过程功能4:设定硬件开关,适应硬件环境功能5:设定配置开关,限定功能范围头文件的用法举例,代码结构与数据结构,6,软件的体系结构观点,代码结构与数据结构,硬件底层环境,编译器环境,操作系统环境,现实应用环境,程序内部控制流程,完整的软件系统设计必须涵盖从底层至顶层的完整流程,以体系结构的思想面对软件研发
3、,适应CPU、堆栈、寄存器、I/O设备等硬件差别,适应不同编译器的函数声明与变量定义规范,适应不同OS的实现差别,控制运行环境,依据不同的条件选择不同的运行流程,依据不同的需求控制系统的功能和性能,7,Minix的公共头文件组织,适应底层硬件环境如何区别CPU的差别?适应编译环境如何遵循ANSI、POSIX等标准,适应不同编译环境?控制运行流程如何设定内部开关,控制有效范围和运行流程?适应应用环境如何实现可移植性,同时提供用户配置接口?实现基本功能为保持系统运行稳定和性能卓越而进行的定义与实现,代码结构与数据结构,8,与硬件环境相关的头文件,针对CPU和设备驱动的宏定义include/mini
4、x/config.h(2600行)针对键盘布局、硬盘分区的头文件include/minix/keymap.h、partition.h针对IBM硬件平台的专有头文件include/ibm/diskparm.h,partition.h,代码结构与数据结构,9,与编译环境相关的头文件,遵循ANSI规范的头文件include/ansi.h、stdlib.h遵循POSIX规范的头文件include/unistd.h、string.h、signal.h、fcntl.h、termios.hinclude/sys/types.h、ioctl.h、sigcontext.h、ptrace.h、stat.h、dir
5、.h、wait.h,代码结构与数据结构,10,与OS系统实现相关的头文件,基本数据类型与系统限制include/limits.h,errno.h系统实现所需头文件include/a.out.h可执行文件格式系统相关的数据类型和内部调用include/minix/const.h、type.h、syslib.h、callnr.h、com.h、boot.h,代码结构与数据结构,11,头文件的组织方法,分类保存头文件include/:最基本的公共头文件(不依赖软硬件环境)include/sys:遵循系统规范的头文件(Posix规范)include/minix:实现系统内部功能的头文件include/i
6、bm:针对特定硬件平台的头文件头文件分类组织思想的讨论与反思分目录保存头文件,保持系统结构清晰,便于引用分类别定义头文件,便于代码维护和扩展对复杂系统而言,头文件的组织和定义是第一个难题,代码结构与数据结构,12,头文件中的玄机探密,预编译选项的应用实现自定义的系统配置(分析与举例)与编译器相互结合,实现外部环境侦测(分析与举例)实现功能的扩展与限制(分析与举例,termios.h)组合形成的复杂应用(Minix中的Error code定义举例)头文件的实现规范防止重复引用的错误(分析与举例,const.h分析)支持不同语言的结合(分析与举例)头文件的包含次序(分析与举例)全局变量的定义与实现
7、(Table.c分析),代码结构与数据结构,13,内容提要,代码结构组织与数据结构定义专题1操作系统的启动过程专题2操作系统的进程管理专题3操作系统的设备管理专题4操作系统的内存管理专题5操作系统的文件管理,内容提要,14,Minix的启动过程,操作系统的启动过程,ROM,将引导扇区内容写入硬盘,确定活动分区的引导扇区,将Minix映象保存至内存,引导结束,读磁盘分区表,读引导扇区内容,执行boot程序,16位启动模式(mpx88.s),32位启动模式(mpx386.s),GDT与IDT初始化(cstart),Minix系统初始化(main),Restart启动任务,系统运行,1,2,系统引导
8、过程,系统启动过程,15,Minix的系统引导过程,硬件启动的引导过程BIOS规范设定了对磁盘分区的要求,第一扇区为引导扇区操作系统遵循BIOS规范,在引导扇区内保存系统引导程序BIOS程序自动寻找磁盘引导扇区,执行系统引导程序系统引导程序读取引导选项,开始正常启动操作系统引导过程分析活跃分区、引导扇区、磁盘分区表的组织和使用操作系统的安装过程:Minix中的Installboot程序操作系统的启动过程:Minix中的Boot程序引导过程的参数设置与管理(举例:多系统引导是如何实现的?)Minix:引导块为1K,第二扇区保存引导选项Windows:Ntldr寻找Boot.ini(遵循ARC规范
9、),再确定引导内容,操作系统的启动过程,16,磁盘分区的组织与管理,操作系统的启动过程,未分区的磁盘第一扇区为引导扇区由引导程序直接载入即可已分区磁盘必须存在主分区,主分区的第一扇区保存MBRMBR中包含分区表,各个分区第一扇区为引导扇区从主分区一直读取到系统所在分区的引导扇区Windows中的引导卷和系统卷区别,17,Minix的系统初始化过程,操作系统与CPU的兼容16位/32位模式是CPU(微处理)的硬件规范操作系统必须与CPU的硬件规范兼容,因此针对16位/32位存在不同的初始化过程,执行初始化过程的程序被称为引导监控程序初始化过程基本都是使用汇编语言,在适当的时候控制权转移高层程序M
10、inix中的初始化代码:mpx.s(5800行)初始化过程都是首先按照16位模式运行,在适当时候切换至32位模式Minix的系统初始化过程16位模式运行切换至32位(6051行)建立堆栈框架运行C程序定义存储器段(拷贝CPU内表格)CStart(初始化GDT和IDT)填充寻址寄存器的初值(6115行)激活GDT和IDT执行高层系统初始化(6131行)Restart启动系统任务系统任务阻塞MM和FS初始化getty进程用户登陆初始化过程的控制流程mpx88.smpx386.s(汇编CStart汇编Main汇编MM/FS用户),操作系统的启动过程,18,Minix的启动过程(Init进程),操作系
11、统的启动过程,16位启动模式(mpx88.s),32位模式入口(6051行),建立堆栈、定义存储器段和处理器寄存器,执行CStart,初始化寻址寄存器,并激活(6115行),执行系统初始化(Main函数,6131行),执行restart,开始系统任务(6822行),进程表中所有系统任务完成,初始化MM和FS,进程表中所有系统任务完成,初始化MM和FS,创建getty进程等待用户登陆,控制转移,控制转移,控制转移,控制转移,控制转移,控制转移,控制转移,19,Minix系统初始化(Main),操作系统的启动过程,MAIN,系统内存初始化mem_init,中断控制器初始化intr_init(1),
12、进程表初始化6745行,restart运行,系统任务初始化6762行,了解Main函数需要哪些知识进程表、内存管理的数据结构中断控制管理的结构与机制系统任务的类型、内容进程表初始化的细节操作系统任务启动的处理过程如何获取以上相关知识阅读头文件了解各类数据结构阅读被调用函数代码了解处理机制阅读处理代码了解初始化细节操作总结分析,理解系统初始化过程,20,进程、内存、系统任务结构定义,Minix中的进程结构kernelProc.h中定义,注意各个数据成员的含义。Proc与Proc结构的重复定义Minix中的内存结构minixtype.h中定义,mem_map结构Minix中的系统任务结构kerne
13、ltable.c中定义,注意Extern的用法,操作系统的启动过程,21,内容提要,代码结构组织与数据结构定义专题1操作系统的启动过程专题2操作系统的进程管理专题3操作系统的设备管理专题4操作系统的内存管理专题5操作系统的文件管理,内容提要,22,进程管理的基本原理回顾,进程的基本概念进程与程序的差别、进程状态进程调度基本原理调度策略的评价标准:公平、有效、响应时间、周转时间、吞吐量调度模型:时间片轮转、优先级、多重队列、最短作业优先、彩票调度、实时调度、两级调度进程调度的设计思考:调度策略与调度机制分开进程通信基本原理进程通信的三面内涵:信息传送、互斥、同步进程通信基本概念:竞争条件、临界区
14、、互斥解决方案的四个条件进程互斥的解决方法:忙等待、睡眠/唤醒、信号量、消息机制、管程进程同步的解决方法:信号量、消息机制,操作系统的进程管理,23,Minix中的进程调度,基本数据结构三级进程队列:rdy_headNQ、rdy_tailNQ(kernelproc.h)proc_ptr:全局变量,指向当前应该运行的进程调度相关函数(kernelproc.c)选择合适的进程运行:pick_proc函数(7176行)进程状态转化:变为就绪态和被阻塞,ready函数和unready函数(7207行)用户进程的时间片轮转:sched函数(7308行)关于进程调度机制实现过程的思考如何启动进程调度机制呢
15、?如何实现进程状态的自动转化呢?如何保证OS运行的稳定呢?(关中断的锁变量),操作系统的进程管理,24,Minix中的进程通信,进程通信的基本知识操作系统对中断(硬件中断和软件中断)的响应机制消息传递的运行机制(还记得消息机制的实现方法吗)Minix中断处理机制对8259芯片的操作(注意保护模式与实模式的差别)对中断号、中断向量、中断描述表的操作对硬件中断、软件中断(系统调用)的操作Minix进程通信机制对中断的响应(将中断转化为消息进行处理)进程间通信的处理(系统任务和服务器进程、用户进程与其他进程)通信机制的实现(控制流程),操作系统的进程管理,25,Minix中的进程通信,Minix进程
16、通信原理基于会合机制的消息传递,Senc与Recv的同步核心函数:mini_send和mini_rec函数(7045行,仔细阅读)最困难的理解:如何完成硬中断和软中断的消息传递Minix硬件中断处理机制8259芯片工作原理(图2-33)硬件中断信号8259响应中断信号处理硬件底层历程Interrupt调用系统任务结合8259中断控制器、CPU保护模式、进程消息通信机制的复杂过程Minix软件中断处理机制系统调用函数构造消息int SYS386_VECTOR指令_s_call调用sys_call调用系统任务结合库函数、进程消息通信、CPU保护模式的复杂过程对硬件中断和软件中断的理解和学习OS中进
17、程通信的最底层操作就是对硬件中断和软件中断的响应与处理。复杂的中断嵌套情况真实体现了多进程并发的核心本质。,操作系统的进程管理,26,Minix中的进程通信,中断处理硬件的基本工作原理主从中断控制器中断捕获、发送、处理基本流程中断门描述符(8字节结构)说明了处理该中断所需的核心例程中断处理软件的入口中断处理的基本过程CStart中建立中断表Main中对中断控制器进行初始化捕获中断后执行相关历程,操作系统的进程管理,27,Minix中的中断处理,操作系统的进程管理,28,Minix中的中断处理,操作系统的进程管理,中断控制器捕获中断信号,当前进程堆栈结尾创建新堆栈,关键寄存器的值压栈(注意位置)
18、,中断处理例程,填充被中断进程的堆栈内容,切换至核心栈,开始中断服务,运行_restart,如有中断嵌套,则继续处理中断,中断嵌套处理完成,运行当前进程(_proc_ptr),继续运行当前就绪进程,CPU自动,控制转移,控制转移,控制转移,控制转移,控制转移,控制转移,CPU自动,29,Minix中的中断处理,中断处理所使用的数据空间进程堆栈、TSS(任务状态段,核心栈)中断处理例程使用进程堆栈(保存上下文、记录返回地址和信息)中断服务例程将使用核心栈(完成中断服务,调用Interrupt,引起进程调度)中断结束时发生的各种情况在中断服务期间,可能引起进程调度,改变_proc_ptr的值中断服
19、务结束后,将首先检查是否存在中断嵌套情况(_k_reenter)标识处理完所有中断后,将从核心栈跳回至进程堆栈,然后调用_restart多进程并发的理解中断服务期间,可能引起进程调度,改变_proc_ptr的值中断服务结束后,_restart将选择_proc_ptr作为下一个运行的进程被中断的进程有可能继续存在于就绪队列中,但未必会立刻运行,操作系统的进程管理,30,Minix多进程并发的核心思想,操作系统的进程管理,某进程正在运行,使用进程堆栈开始中断处理,跳至核心堆栈开始中断服务,处理中断嵌套所有中断被处理,返回被中断进程,调用_Restart,运行被调度进程,捕获中断,在使用进程堆栈进行
20、中断处理时,将暂时关中断以保证原子操作,进入核心栈后,将重新开中断,以响应中断嵌套的情况。中断服务程序可能引起进程调度,从而影响中断处理完成后的进程运行顺序,如有中断嵌套情况,则保持在核心栈内运行,直至处理完成所有中断,如果发生了进程调度,那么中断处理结束后即将运行的将是另外一个进程,31,内容提要,代码结构组织与数据结构定义专题1操作系统的启动过程专题2操作系统的进程管理专题3操作系统的设备管理专题4操作系统的内存管理专题5操作系统的文件管理,内容提要,32,Minix中的时钟设备管理,时钟设备的服务目标维护日期时间基于时间片轮转对用户进程进行调度对CPU的使用进行记帐定时器服务闹钟(用户进
21、程)、监视定时(系统任务)直方图检视和统计信息搜集Minix时钟任务的设计原理两个系统任务:Clock_Task和Syn_Alarm_Task所涉及的各种方法:时间统计、定时器处理、时间片调度所使用的机制:基于消息的进程通信、硬件中断和软件中断处理时钟中断的处理硬件中断:8259捕获底层驱动历程发送消息系统任务软件中断:CPU指令sys_call调用发送消息系统任务对时钟设备管理的原理掌握和实现过程理解具备完整的中断、消息知识体系针对各种目标,了解处理过程和实现机制,操作系统的设备管理,33,Minix时钟设备基本原理,时钟硬件设置可编程时钟,方波模式(60HZ)时间片设定:100微秒时钟服务
22、实现方法系统时间维护:启动时间消耗滴答定时器实现:虚拟时钟链表时钟服务的重要函数硬件中断处理:clock_handler软件中断处理:do_*和syn_alarm_task函数层次的理解和掌握最底层:clock_handler(硬件中断)中间层:clock_task和syn_alarm_task(系统任务)最高层:do_*和其他功能函数(实现代码),操作系统的设备管理,34,Minix中的时钟驱动实现,核心函数:kernelclock.c(11000行)clock_task:循环等待消息的处理过程syn_clock_task:自阻塞机制的处理过程各种功能函数的实现基于中断原理和进程通信原理的系
23、统调用实现用户进程发出系统调用指令软件中断机制时钟滴答到达时间片数目硬件中断机制定时器与同步闹钟的使用信号传送机制(MM中转),操作系统的设备管理,35,内容提要,代码结构组织与数据结构定义专题1操作系统的启动过程专题2操作系统的进程管理专题3操作系统的设备管理专题4操作系统的内存管理专题5操作系统的文件管理,内容提要,36,Minix中的内存服务器管理,内存服务器的启动和初始化Boot引导程序将内存服务器的可执行文件放入正确的位置TaskTab中定义与内存服务器相关的表项Main函数中初始化进程表项,填充服务器进程队列restart所有系统任务和服务器进程,轮转到MM进程时进行初始化内存服务器的主要任务负责处理涉及到内存的重要系统调用负责管理用户内存空间(分配与回收)负责与内核(sys_task)通信,实现“决策机构”的分离内存服务器的具体实现独立的主程序运行在非核心空间处理多个系统调用(图4-34)管理进程表和空洞表对 内存服务器实现机制的了解清晰掌握内存空洞表的管理机制结合进程表概念、进程通信、进程调度的基本知识,了解各种系统调用的操作细节,操作系统的设备管理,37,Thanks for your time!Questions&Answers,全文结束,