第一章 操作系统概述(一)

第一章 操作系统概述

本章将介绍学习操作系统应该建立的一些基本概念和常识性内容,划定研究对象的范围并补充一些必要的硬件知识;说明对操作系统内核需要实现的主要功能;简要介绍操作系统的发展历程和分类以帮助读者了解自己实际接触的操作系统的定位;为了知识的完整性,介绍一点构造操作系统时应该了解的知识;重点说明操作系统内核载入内存和执行时机的基本机制;最后对操作系统相关但本书不准备展开的一些新概念和新技术进行简单说明。

1.1 操作系统是什么

对每一位读者而言,操作系统都不会完全陌生,日常使用计算机会使用Windows或者MacOS系统,少部分人可能还用过Linux或其他Unix类系统;使用智能手机目前最常见的是Android、iOS或者Windows Phone系统。从用户使用的角度看,不同操作系统的区别更多表现在界面风格、操作方式的差异上,但是这些都只是外部的特征,操作系统课程主要研究的是操作系统产品中最核心的部分——内核,而内核恰恰是普通用户无法通过操作而感知到的部分,日常使用经验并不能直接帮助理解操作系统内核,而学习内核的工作原理也不会立即提高使用计算机的熟练程度。但是,内核作为计算机系统资源的管理者会间接支撑用户的所有操作,用户使用过程中出现的大量的难解问题与内核处理有关,所以了解内核的原理有助于解决实际问题,也有助于提高编写应用程序的质量,因此无论是否准备从事系统底层的研发,学习操作系统内核知识都对提高专业水平有很大帮助。

1.1.1 操作系统内核

何为操作系统内核?最简单直接的界定就是:内核是运行在核心态的程序以及只有这些程序可以访问的数据集合。要真正理解这句话,就需要了解核心态和用户态的含义,所谓核心态和用户态的区分,实际是CPU运行中的两种不同的“态”,在这两种不同态下执行同样的指令,可能会得到不同的结果。核心态和用户态是笼统的提法,早期文献中还可见到“管态”和“目态”的提法,两种术语的含义是完全一样的;核心态还有很多同义的术语:内核态、系统态、特权态等等。实际的每种CPU实际上都会有自己的特有术语来描述不同的执行态,例如x86系列CPU中叫做特权等级(privilege level),但是最终都能对应到两种状态:一种是操作系统内核代码运行时的特权状态,一种是应用程序执行时的普通状态,本书中统一把前者称为核心态,后者称为用户态。

核心态与用户态的区别主要包括两个方面:(1)特权指令,CPU指令集中存在一组只能在核心态下运行的指令,被称为特权指令,如果在用户态下执行这些指令,CPU将引发异常。特权指令一般是会影响到计算机系统全局的控制指令,典型的例子包括(但不限于):停机指令、关闭中断、IO指令、修改CPU状态的指令(例如进入核心态),很容易理解这些指令被归入特权指令,如果应用程序可以执行这些指令,任何人都可以编写非常简单的程序让系统死机。(2)访问内存的能力,除了特权指令之外的其他指令在核心态和用户态的执行是没有区别的,但是如果指令要从读写内存操作数,就会有一个额外的检查:每一块内存地址空间都会有访问控制标记,如果用户态执行的指令访问了标记为核心态的内存区,CPU也将引发异常。对内存访问的保护是为了避免应用程序有机会修改操作系统内核的代码和数据。通过这两个方面的限制,操作系统内核就牢牢掌控系统资源,应用程序访问计算机的底层资源时除了通过内核别无他途。

本书中出现的概念一般都会尽可能举出实际的例子,核心态和用户态的区分属于最为基础的概念之一,所以用使用最广泛的x86系列的CPU作为例子进行一个简单的说明。从80386以后,Intel的CPU引入了虚地址保护模式,现代操作系统都会在此模式下工作。虚地址保护模式的很多细节与内存管理密切相关,考虑到大多数读者对CPU访问内存的理解可能还在8086层次,所以有很多硬件知识需要补充,主要的补充内容会放在内存管理章节中,此处仅简单介绍一些跟执行态有关的基础知识。

8086没有划分执行态,所以在8086计算机上不可能有现代意义的操作系统(可能你听说过DOS,没错,DOS根本不能算现代意义的操作系统,不存在受保护的内核);80386引入了三种运行模式:实地址模式、虚地址保护模式和虚拟8086模式。实地址模式下的80386及其后续芯片(不引起误解情况下,统称x86芯片)只是相当于一个跑得飞快的8086,而只有在虚地址保护模式才有完整的执行态概念。如前所述,Intel的术语是特权等级,供分为4个等级,用数字表示为0~3级,其中0级是最高特权等级,3级为最低特权等级,1、2级依次介于其间;由于特权级别的层次式关系,这四个层次经常被图示为一个多层环形,相应的级别也被称为Ring0~Ring3。CPU执行代码的当前特权级别靠一个寄存器中的两个bit表示,而这个寄存器对大部分人来说应该很熟悉:CS寄存器,但是在虚地址保护模式下CS中不是简单的段地址,具体的特权级别计算和表示与地址映射方式有关,在这里就不能深入解释了。

(可以参考:http://www.mouseos.com/arch/segmentation.htmlhttp://blog.chinaunix.net/uid-20382721-id-1955824.html





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值