第一章:操作系统概论

第一章:操作系统概论

本章结构
基本概念
操作系统引导
操作系统功能
操作系统的发展
程序运行环境
操作系统结构

Part1:基本概念

1、操作系统的发展

  • 无操作系统:纯手工操作

  • 批处理系统:

    • 单道批处理系统:内存中仅保留一道作业
    • 多道批处理系统:在单道批处理系统的基础上引入多道程序设计技术1
  • 分时操作系统

    CPU采用时分复用,将时间片轮流分配给各个作业,实际上是一种虚拟技术,使得各个用户共享一台主机

2、程序运行环境

2.1 CPU运行模式2

  • 用户态:CPU运行应用程序,调试程序/设置断点
  • 内核态:CPU执行操作系统内核程序,可执行特权指令

请添加图片描述

2.2 程序的编译、链接、装入

  • 编译

    编译器将源代码编译为CPU可执行代码,通常为几个程序段,这些程序段被称为目标模块(object module)这些程序段中的地址均为以本段首地址为0,进行基址寻址(即相对于该模块而言),这些程序段所在的空间为作业的逻辑空间

  • 链接

    链接器将目标模块和一些库函数链接起来,形成装入模块(load module),此时形成程序完整的逻辑地址。按照链接的时间,可将连接划分为下面两类

    • 静态链接:程序运行前,就已经链接完成
    • 动态链接:
      • 装入时:装入内存时链接
      • 运行时:运行程序时链接
  • 装入

    装入器将装入模块装入物理内存,此时需要将逻辑地址装换为物理地址,该过程称为地址重定位。装入的分类

    • 绝对装入:逻辑地址即为物理地址(单道批处理环境)
    • 地址重定位
      • 静态:程序运行前重定位完成
      • 动态:程序运行时重定位完成

2.3内存映像

程序的内存映像即为内存中装载程序的区域,一般分为三个部分

  • Code Segement:防止程序指令
  • Static Memory:存放永久数据
  • Dynamic Memory:存放临时数据

3、操作系统体系结构

3.1 操作系统分层与模块化

  • 分层

    请添加图片描述

  • 模块化

    将操作系统按照功能划分为多个模块,每个模块实现一个特定功能,比如说进程管理模块,存储器管理模块等。并且仔细规定模块之间的接口,使得模块之间能通过接口实现交互

3.2 内核与外核

  1. 内核

    对硬件做抽象,把硬件资源和设备驱动程序隐藏在硬件抽象层之下

    • 微内核:只把最基本的功能保留到内核中——易维护、性能低(用户态与核心态之间频繁切换)
    • 宏内核:将主要的模块都作为系统的内核——高性能,难维护
  2. 外核

    不提供任何的硬件抽象,直接让应用程序请求一块特定的物理空间(比如说磁盘空间)

3.3 虚拟机

通过软件模拟一台具有完整硬件的计算机

Part2:操作系统引导

1、2个重要寄存器

  • CS寄存器:Code Segement Register
  • IP寄存器: Instrcution Pointer Register

Intel 8086 CPU将两者拼在一起(CS:IP)即为下一条指令的地址,非intel的商家则用PC来指代下一条指令地址

2、操作系统引导

2.1 初始化CPU

Intel 8086 CPU通电稳定之后会初始化内部寄存器,其中会重置CS和IP寄存器为

  • CS:0xFFFF
  • IP: 0x0000

此时下一条指令地址为[CS<<4:IP]=0xFFF0

于是CPU便去访问0xFFF0处的地址,但是该地址实际上并不是内存地址,它会被地址控制器(南桥/北桥)映射到BIOS ROM中,而在该ROM中的这个地址处存放着一条跳转指令

2.2 初始化程序

存放于0xFFF0跳转指令会使得下一条地址跳转到BIOS ROM中的某个地址处,这个地址则为一段初始化程序,CPU便把这段程序复制到内存中执行,这段程序的作用为

  • 初始化硬件(内存、显卡)
  • 从硬盘中找到引导程序(标志:55AA),找到之后复制到内存中(0x07C00~0x07dff)
  • 然后CPU跳转到0x07C00出开始执行引导程序

2.3 引导程序执行

引导程序将操作系统读入内存,并且跳转到操作系统地址处开始执行操作系统

2.4 开始执行操作系统

Part3:操作系统功能

1、管理CPU

在多道程序环境中,CPU的分配以进程为基本单位,所以管理CPU即为管理进程

2、管理内存

3、管理文件系统

计算机中的信息均为文件的形式存在,操作系统管理文件的部分称为文件系统

4、管理IO

完成用户的IO请求

Part end:参考文献和一些说明


  1. 多道程序设计技术:将多个程序同时调入内存,当一道程序因为某种原因暂停执行时,CPU转而执行下一道程序 ↩︎

  2. 区分用户态和内核态的原因:在冯诺依曼计算机结构中最重要的就是这5个部件:输入/输出设备,运算器,存储器,控制器。其中输入/输出设别只有接受指令之后才能动作;控制器配合一部分寄存器,寄存器数量不多而且非常容易被修改;运算器是无状态的;由此可见,整个计算机完全有存储器和几个关键寄存器所控制。如果有一个程序可以完成控制物理内存,那么他就能任意改变计算机的状态,这显然是不被允许的,为了限制应用程序的行为,必须在操作系统和应用程序执行时划分2个不同的状态。详见知乎这个问题下的回答:https://www.zhihu.com/question/306127044/answer/555327651灵剑大佬的回答 ↩︎

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值