美文网首页
第一章 、介绍

第一章 、介绍

作者: Jorunk | 来源:发表于2018-08-05 10:58 被阅读26次
    内容摘要.png

    课程概述

    预备知识

    • 计算机结构原理(Intel 80386+)
    • C与汇编程序设计
    • 数据结构

    参考教材

    操作系统概念(第七版);Silberschatz、 Galvin和Gagne著
    操作系统——精髓与设计原理(第七版); William Stallings著

    课程内容

    ■ 操作系统结构
    ■ 中断及系统调用
    ■ 内存管理
    ■ 进程及线程
    ■ 处理机调度
    ■ 同步互斥
    ■ 文件系统
    ■ I/O子系统

    操作系统实验

    ■ 实验0: 实验环境准备
    ■ 实验1: 系统启动及中断
    ■ 实验2: 物理内存管理
    ■ 实验3: 虚拟内存管理
    ■ 实验4: 内核线程管理
    ■ 实验5: 用户进程管理
    ■ 实验6: CPU调度
    ■ 实验6: CPU调度
    ■ 实验7: 同步与互斥
    ■ 实验8: 文件系统

    课程设计

    ■ ucore+模块化改进

    • 多种平台上的内核可加载模块完善
    • 多种平台上的动态链接库完善
    • 内核功能的模块化改进
      • 文件系统、处理机调度算法、内存置换算法、设备驱动

    ■ 在真实系统上运行ucore+

    • 树莓派(Raspberry PI)
    • Intel Edison

    什么是操作系统?

    操作系统定义

    ■ 没有公认的精确定义
    ■ 操作系统是一个控制程序

    • 一个系统软件
    • 控制程序执行过程,防止错误和计算机的不当使用
    • 方便用户程序,给用户程序提供各种服务
    • 方便用户使用计算机系统
    • 解决资源访问冲突,确保资源公平使用
      ■ 操作系统是一个资源管理器
    • 管理各种计算机软硬件资源
    • 提供访问计算机软硬件资源的高效手段
    • 应用程序与硬件之间的中间层

    操作系统地位


    操作系统软件的分类

    操作系统软件的组成

    ■ Shell -- 命令行接口

    • 通过键盘操纵
    • 方便用户进行命令输入
      ■ GUI -- 图形用户接口
    • WIMP
      (视窗(Window)、图标(icon)、选单(Menu))
    • 直接操作和所见即所得
      ■ Kernel -- 操作系统内部
    • 执行各种资源管理等功能


    ucore教学操作系统内部

    操作系统内核特征

    ■ 并发

    • 计算机系统中同时存在多个运行的程序,需要OS管理和调度
      ■ 共享
    • “同时”访问
    • 互斥共享
      ■ 虚拟
    • 利用多道程序设计技术,让每个用户都觉得有一个计算机专门为他服务
      ■ 异步
    • 程序的执行不是一贯到底,而是走走停停,向前推进的速度不可预知
    • 只要运行环境相同,OS需要保证程序运行结果也要相同

    为什么要学习操作系统

    操作系统是多门课程的综合

    ■ 综合课程-结合许多不同的课程

    • 程序设计语言
    • 数据结构
    • 算法
    • 计算机体系结构
      ■ 材料
    • 操作系统概念和原理、源代码
      ■ 技能
    • 操作系统的设计和实现

    学习操作系统的目的

    ■ 已有操作系统很好,我将来的工作不会写操作系统

    • Windows,Linux
      ■ 已有操作系统是否解决了所有的事?
      ■ 为什么我要学习它


    操作系统软件的地位

    ■ 操作系统:计算机科学研究的基石z之一

    • 计算机系统的基本组成部分
    • 由硬件的发展和应用需求所驱动
    • 学术和工业的持续推进

    哪里在做操作系统研究?

    ■ 顶尖大学的计算机科学部门
    ■ 计算机产业

    • 旧时:Xerox(PARC),IBM,DEC(SRC),Bell
      Labs
    • 现代:Microsoft,Google,Yahoo,IBM,HP,Sun,Intel,VMware,Amazon,...
    • 国内:阿里巴巴、百度、华为
      ■ 研究协会
    • ACM SIGOPS
    • USENIX

    操作系统研究的顶级会议

    ■ ACM操作系统原理研讨会(SOSP)

    • ACM SIGOPS
    • 每两年(奇数:1967 - )
    • ~20篇
      ■ USENIX操作系统设计和实现研讨会(OSDI)
    • USENIX
    • 每两年(偶数:1994 - )
    • ~20篇论文

    最具影响力的操作系统论文

    ■ SIGOPS Hall-of-Fame Awards

    • 论文必须发表在同行评议的文献中至少十年
    • 到目前为止有说三十多篇论文获奖
      ■ 假如你想做操作系统研究
    • 需要阅读和理解这些论文
      http://www.sigops.org/award-hof.html

    操作系统具有挑战性

    ■ 操作系统很大

    • Windows XP有4500万行
      ■ 操作系统管理并发
    • 并发导致有趣的编程挑战
      ■ 操作系统代码管理原始硬件
    • 时间依赖行为,非法行为,硬件故障
      ■ 操作系统代码必须是高效的,低耗CPU、内存、 磁盘的
      ■ 操作系统有错,就意味着机器出错
    • 错做系统必须比用户程序拥有更高的稳定性
      ■ 操作系统是系统安全的基础
      ■ 操作系统并不仅仅关于并发性和琐碎的调度算法
      ■ 并发性是一小部分
    • 内核里不存在管程和哲学家问题
    • 内核中的锁问题需要太多的知识背景
      ■ 磁盘调度大多是不相干的(SCSI已经做了这些)
      ■ 进程调度室个比较小的话题

    ■ 操作系统是关于
    ■ 权衡

    • 时间与空间
    • 性能和可预见性
    • 公平与性能
      ■ 硬件
    • 如何让中断、异常、上下文切换真正的有效?
    • TLB是如何工作的?这对页表又意味着什么?
    • 如果你不展示任何汇编代码,那么你就是不是教操作系统的。

    如何学习操作系统

    ■ "不闻不若闻之,闻之不若见之,见之不若知之,知之不若行之;学至于行之而止矣。"
    --荀子《儒效篇》
    ■ “天才是1%的灵感加上99%的汗水"
    -- Thomas Edison


    操作系统实例


    KenThompson、Dennis Ritchie

    Linux家族


    Windows家族

    操作系统的演变

    操作系统为什么改变

    ■ 只要功能:硬件抽象和协调管理
    ■ 原则:设计随着各种相关技术的改变而做出一定的改变
    ■ 在过去二十年底层技术有极大的改变

    • 在1981年到2012计算机系统的对比


    操作系统的演变

    ■ 单用户系统
    ■ 批处理系统
    ■ 多道程序系统
    ■ 分时
    ■ 个人计算机:每个用户一个系统
    ■ 分布式计算:每个用户多个系统

    单用户系统(‘45 - ’55)

    ■ 操作系统 = 装载器 + 通用子程序库
    ■ 问题:昂贵的组件的低利用率


    批处理(‘55 - ’65)

    ■ 顺序执行与批处理


    多道程序(‘65 - ’80)

    ■ 保证多个工作在内存中并且在个工作间复用CPU


    分时(‘70 - )

    ■ 定时中断用于工作对CPU的复用


    个人端脑操作系统

    ■ 个人电脑系统

    • 单用户
    • 利用率已不再是关注点
    • 重点是用户界面和福媒体功能不存在
    • 很多老的服务和功能不存在
      ■ 演变
    • 最初:操作系统作为一个简单的服务提供者(简单库)
    • 现在:支持协调和沟通的多应用系统
      越来越多的安全问题(如,电子商务、医疗记录)

    分布式操作系统

    ■ 网络支持成为一个重要的功能
    ■ 通常支持分布式服务

    • 跨多系统的数据共享和协调
      ■ 可能使用多个处理器
    • 松、紧耦合系统
      ■ 高可用性与可靠的要求


    操作系统演变中的计算机系统

    操作系统结构

    简单结构

    ■ MS-DOS - 在最小空间,设计用于提供大部分功能(1981 ~ 1994)

    • 没有拆分为模块
    • 虽然MS-DOS在接口和功能水平没有很好地分离,主要用汇编编写


    分层结构

    ■ 将操作系统分为多层(levels)

    • 每层建立在低层之上
    • 最底层(layer 0)是硬件
    • 最高层(layer N)是用户界面

    ■ 每一层仅使用更低一层的功能(操作)和服务

    UNIX操作系统与C语言

    ■ 1972由Kenneth Thompson和Dennis Ritchie在贝尔实验室设计。
    ■ 设计用于UNIX操作系统的编程例程
    ■ “高级”系统编程语言创建可移植操作系统概念


    K. Thompson and D. Ritchie

    uCore操作系统结构

    微内核接口(Microkernel)

    ■ 尽可能把内核功能移到用户空间
    ■ 用户模块间的通信使用消息传递
    ■ 好处:灵活、安全
    ■ 缺点:性能


    外核结构(Exokernel)

    ■ 让内核分配机器的物理资源给多个应用程序,并让每个程序决定如何处理这些资源
    ■ 程序能链接到操作系统库(libOS)实现操作系统抽象
    ■ 保护与控制分离


    VMM(虚拟机管理器)


    ■ 虚拟机管理器将单独的机器接口转换成很多的虚拟机,每个虚拟机都是一个原始计算机系统的有效副本,并能完成所有的处理器指令。


    小结

    ■ 操作系统很有趣,可以管理和控制整个计算机!
    但...
    ■ 它是不完备的

    • bug、性能异常、功能缺失,有很多的挑战和机遇
      ■ 它是庞大的
    • 有很多概念、原理和代码需要了解。
      ■ 我们能做到!
    • ...至少靠你自己的恒心和投入,完全可以在一个学期理解OS原理和uCore OS的实现

    相关文章

      网友评论

          本文标题:第一章 、介绍

          本文链接:https://www.haomeiwen.com/subject/qwxbvftx.html