230 likes | 357 Views
计算机操作系统. 第一章 操作系统引论 第二章 作业界面管理 第三章 文件管理 第四章 存储管理 第五章 设备管理 第六章 进程及处理机管理 第七章 操作系统结构和程序实现. 第七章 操作系统结构和程序实现. 操作系统研制过程: 总体设计:制订设计原则和要求、功能设计和结构设计等方案论证 具体设计:程序框图、库程序和程访设计 调试:分块和分阶段实现 维护:建立或选用专门的维护程序. 操作系统的程序概念. 程序 = “ 算法 ” + 数据 程序是 “ 函数 ” 的集合 软件是程序的集合:程序模块的有机组合
E N D
计算机操作系统 • 第一章 操作系统引论 • 第二章 作业界面管理 • 第三章 文件管理 • 第四章 存储管理 • 第五章 设备管理 • 第六章 进程及处理机管理 • 第七章 操作系统结构和程序实现
第七章 操作系统结构和程序实现 • 操作系统研制过程: • 总体设计:制订设计原则和要求、功能设计和结构设计等方案论证 • 具体设计:程序框图、库程序和程访设计 • 调试:分块和分阶段实现 • 维护:建立或选用专门的维护程序
操作系统的程序概念 • 程序 = “算法”+ 数据 • 程序是“函数”的集合 • 软件是程序的集合:程序模块的有机组合 • 操作系统是最大型的系统软件 • 众多的应用软件是需要在操作系统基础上运行 • 现代软件需要优良的“包装” • 学习“操作系统”的“顶峰”是会编写操作系统
系统结构设计原则 • 性能完善,系统效率高 • 系统可靠性高 • 易于掌握:面对一般用户、系统管理员和程序开发人员 • 适应性要强:具有可扩充性和可移植性
结构方案 • 模块结构 • 层次结构 • 内核扩充结构 • 层次化核扩充结构 • 微内核层次化核扩充结构
模块接口法 • 一般用每一块实现一个简单的功能 • 实现各模块内部的简单功能比较容易 • 模块间相互依赖和“链接”很复杂 • 实现整个系统的总功能不太容易 • 调试和修改,牵动面很大
模块1 模块6 模块2 模块4 • 模块接口图 模块7 模块5 模块3 模块8
模块1 模块2 模块4 模块3 • 第五层 • 第四层 • 第三层 • 第二层 • 第一层 • (全序)层次结构图 模块7 模块5 模块6 模块9 模块8 模块10
模块1 • 第三层 • 第二层 • 第一层 • (半序)层次结构的“局部循环” 模块2 模块3 模块4 模块5
层次结构的设计方法: 自底向上法和自顶向下法 自底向上法 自顶向下法 操作命令 功能模块 功能模块 操作系统功能模块 机器硬件
用户 核扩充法 应用软件(第2层) 其他系统软件(第1层) 裸机 操作系统核心(第0层)
结构方式 系统效率 可靠性 适应性 易懂性 实现难度 • 模块结构 一般 低 差 易 容易 • 层次结构 较高 较好 一般 易 较难 • 内核 • 扩充结构 较高 较好 易扩充 较难 较难 • 微内核 • 扩充结构 高 好 强 难 较难
UNIX版本7+(V6,III)内核源代码举例 • 1.进程初始化(main.c) • 2.陷井(trap指令)、中断、系统调用(sys)及进程管理 • 3.程序交换、基本I/O设备管理 • 4.文件、文件目录、文件系统(sys)及管道 • 5.面向字符的特殊文件 • 6.数据结构(*.h文件) • 7.附录 • 43个模块、源程序17650行程序代码(其中940行汇编指令)
UNIX核心的进程初始化过程 • 0号块:(父进程)main.c、包含系统引导及其它 • 1号块:管理文件系统 • 2、3号块:i节点表,管理文件目录及其文件 • init • getty • login • /etc/passwd (用户登录名:口令域:用户号:用户组号:用户全名:目录:默认Shell) • Shell • 命令 执行 生成子进程执行,父进程sleep 执行完 唤醒
DOS系统初始化过程 • 冷启动:系统加电,进入ROM BIOS 热启动:系统复位操作 • 对硬设备自检 • 显示出错或仃机 • INT 系统自举 • 读盘、检测系统 • DOS引导记录 • IBMBIO.COM初始化 • IBMDOS.COM初始化 • 显示DOS版本信息 • 执行SYSINT • 打开CONFIG.SYS安装 • COMMAND.COM • AUTOEXEC.BAT • 显示日期和时间,出命令提示符,等候用户输入命令 成功
操作系统的分层原则: • 1. 按程序的嵌套情况排成有序的层次; • 2. 把活动频繁的模块和为很多模块所公用的模块放在最低软件层,存储器管理模块设置在较低软件层; • 3. 为获得可移殖性和可适应性而设置的软件层,应分别放在较低的层次和最外层。 • 4. 在严格的层次结构中,只允许高层调用低层中的软件,决不允许低层调用高层的软件。在高层调用低层的软件时的方法: • (1) 高层仅能调用它下一层中的软件; • (2) 高层能调用所有低层的软件; • (3) 高层能部分地调用低层中的软件。
数据词典(按字母顺序) • 1. 系统过程(主程序,子程序等) • 2. 系统文件和过程(命令及系统调用) • 3. 符号及参量定义, • 例如 #define ………. • 4. 源代码交叉参考表 • 5. 压缩及补丁工具
可移植性编程技巧(1) • 1. *.h头文件(模块) • 2. 条件编译 • #define UNIX 1 • #define TOPS_20 0 • #define VAX_VMS 0 • #define IBM_UTS 0 • ………………………. • #if UNIX • case ‘b’ : if (argc) speed = ….. • case ‘c’ : image = TRUE; break • #endif /* UNIX */ • ………………………….
3. UNIX中工具软件 makemakefile(编译时间监控软件) • /usr/include/*.h • /usr/sys/makefile, conf.h, conf.h.all, conf.modul, confinfo, name.c, name.c.all, c.c, l.s, CURversion.c, version.ed, linesw.c, *.lib, unix.sym…………. • /unix,/nunix,/ounix,/vunix
nunix: nlib1 nlib2 nlib3 nlib4 l.o c.no linesw.no name.no • ed CURversion.c < version.ed >/dev/null • cc -c CURversion.c • rm -f ../../nunix • ld -Y 4000 -pbxo ../../nunix CURversion.o l.o c.no linesw.no name.no • #touch nunix • #sync
4. 内核模块的增减(尤其是显示模块) • 5. 高级语言库函数、操作系统系统调用 • 6. BBS上交流 • 7. ………...