操作系统引论

一、为什么需要操作系统?

现代操作系统由一个或多个处理器、主存、磁盘、打印机、键盘、鼠标、网络接口以及各种其他的输入/输出设备组成。一般而言,现代计算机系统是一个复杂的系统。为了管理所有的这些部件并加以优化使用,计算机安装了一层软件,称为操作系统。

二、计算机的两种运行模式

  • 内核态
  • 用户态

三、操作系统的位置

软件中最基础的部分就是操作系统,它运行再内核态(称为管态、核心态)。在这个模式中,操作系统具有对硬件的完全访问权,可以执行机器能够运行的任何指令。
在用户态下,只使用了机器指令中的一个子集。那些会影响机器控制或可进行I/O(输入输出)操作的指令,在用户态中的程序里是禁止的。
在这里插入图片描述

四、操作系统和普通软件的区别

如果用户不喜欢某个特定的电子邮件阅读器,他可以自由选择另一个,或者自己写一个,但是他不能自行写一个属于操作系统一部分的时钟中断处理程序。这个程序由硬件保护,防止用户试图对其进行修改。

五、什么是操作系统?

操作系统是运在内核态的软件,操作系统执行两个基本上独立的任务,为应用程序员(实际上是应用程序)提供一个资源集的清晰抽象,并管理这些硬件资源,而不是一堆硬件。

  • 作为扩展机器的操作系统(自顶向下)
    • 操作系统的任务是创建好的抽象并实现和管理它所创建的抽象对象
    • 操作系统的实际客户是应用程序
    • 最终用户与用户接口所提供的抽象打交道,或者是命令行shell或者是图形接口
  • 作为资源管理者的操作系统(自底向上)
    • 时间复用:当一种资源在时间上复用,不同的应用程序或用户轮流使用它。例如,若在系统中只有一个CPU,而多个程序需要在该CPU上运行,操作系统则首先将CPU分给某一个程序,在它运行了足够长的时间之后,另一个程序得到CPU,然后是下一个,如此进行。至于资源是如何实现时间复用的——谁应该是下一个以及运行多长时间等——则是操作系统的任务。
    • 空间复用:每个客户都得到资源的一部分,从而取代了客户排队。例如,通常在若干运行程序之间分割内存,这样每一个运行程序都可以同时入住内存(例如,为了轮流使用CPU)。假设有足够的内存可以存放多个程序,那么在内存中同时存放若干个程序的效率,比把所有内存都分给一个程序的效率要高得多。

六、操作系统的历史

  • 第一代(1945-1955):真空管和穿孔卡片
  • 第二代(1955-1965):晶体管和批处理系统
  • 第三代(1965-1980):集成电路芯片和多道程序设计
  • 第四代(1980-现今):个人计算机

七、计算机硬件介绍

一台简单的计算机可以抽象为:CPU、内存以及I/O设备都是由一条系统总线连接起来并且通过总线与其他设备通信。
在这里插入图片描述

处理器

计算机的“大脑”是CPU,它从内存中取出指令并执行之。在每个CPU基本周期中,首先从后内存中取出指令,解码以及确定其类型和操作数,接着继续执行,重复此操作。

  • 每个CPU都有其一套可执行的专门指令集
  • 所有的CPU都有一些用来保存关键变量和临时数据的寄存器
  • 多数计算机还有一些对程序员可见的专门寄存器,其中之一就是程序计数器,它保存了将要取出的下一条指令的内存地址
  • 堆栈指针,执行内存中当前栈的顶端
  • 程序状态字寄存器:包含了条件码位、CPU级别、模式(用户态或内核态),以及各种其他控制位。
    操作系统必须知晓所有的寄存器。

存储器

存储器的顶层是CPU中的寄存器。下一层是告诉缓存,它多数由硬件控制。每一级的缓存比前一级慢并且容量更大。
在这里插入图片描述

磁盘

磁盘唯一的问题就是随机访问数据时间约慢了三个数量级,低速的原因是因为磁盘是一种机械装置。

磁带

在存储体系中的最后一层是磁带。这种介质经常用于磁盘的备份,并且可以保存非常大量的数据集。磁带的最大特点就是成本及其便宜而且是可移动的。

I/O设备

CPU和存储器不是操作系统唯一需要管理的资源。I/O设备也与操作系统有密切的项目影响。I/O设备一般包含两个部分:

  • 设备控制器:设备控制器是插在电路板上的一块芯片或一组芯片,这块电路板物理地控制设备。
    在许多情形下,对这些设备的控制是非常复杂和具体的,所以控制器的任务是为操作系统提供一个简单的接口(不过还是很复杂)。
  • 设备本身:实际设备本身,有个相对简单的接口。由于实际的设备接口隐藏在控制器中,所以操作系统看到的是对控制器的接口,这个接口可能和设备接有很大的差别。

每类设备控制器是不同的,所以需要不同的软件进行控制。专门与控制器对话,发出命令并接受响应的软件,称为设备驱动程序。为了使用设备驱动程序,必须把设备驱动程序装入到操作系统中,这样它可以在核心态中运行。理论上。设备驱动程序也可以在内核外运行,但是几乎没有系统支持这种可能的方式,因为它要求允许在用户空间的设备驱动程序能够以控制的方式访问设备,这是一种极少得支持的功能。

设备驱动程序装入操作系统的三个途径

  • 将内核与设备驱动程序重新链接,然后重启系统。(Unix系统以这种方式工作)
  • 在操作系统文件中设置一个入口,并通知该文件需要一个设备驱动程序,然后重启系统。
  • 操作系统能够运行时接受新的设备驱动程序并且立即将其安装好,无序重启系统。(这种话方式采用较少,但是正在普及)

每一个设备控制器都有少量的用于通信的寄存器。要想激活控制器,设备驱动程序从操作系统获得一条命令,然后翻译成对应的值,并写进设备寄存器中。所有的设备寄存器的结合构成了I/O端口空间。

实现输入输出的方式

  • 用户程序发出一个系统调用,内核将其翻译成一个对应设备驱动程序的过程调用。然后设备驱动程序启动I/O并且再一个连续不断的循环中检查该设备,看该设备是否完成了工作。当I/O结束后,设备驱动程序把数据送到指定的地方,并返回,。然后操作系统把控制返回给调用者。这种方式较忙等待,其缺点是要占据CPU,CPU一直轮询设备直到对应的I/O操作完成
  • 设备驱动程序启动设备并且让该设备在操作完成时发出一个中断。设备驱动程序在这个时刻返回。操作系统接着在需要时阻塞调用者并安排其他工作进行。当设备驱动程序检测到该设备操作完成时,它发出一个中断通知操作完成
  • 为I/O提供一种特殊的直接存储器访问芯片,它可以控制在内存和某些控制器之间的位流,而无需持续的CPU干预

总线

总线处理I/O设备以及CPU到存储器的速度都更快。
系统中有三个专门的总线

  • IDEA:将诸如磁盘和CD-ROM这一类的外部设备和系统相连接
  • USB:是将所有慢速I/O设备,诸如键盘和鼠标,与计算机相连
  • SCSI:是一种高速总线。用在高速磁盘、扫描仪和其他需要较大带宽的设备上

IEEE:火线,与USB一样,适合将数码相机和类似多媒体设备连接到计算机上。

八、启动计算机

  1. BIOS运行
  2. BIOS检查所安装的RAM数量、键盘和其他设备是否已安装并正常响应
  3. BIOS扫描ISA和PCI总线并找出连在上面的所有设备
  4. BIOS通过尝试存储在CMOS存储器中的设备清单决定启动设备。(如果存在软盘,系统则试图从软盘启动,如果失败则试用CD-ROM,看看是否有可启动CD-ROM存在。如果软盘和CD-ROM都没有,系统从硬盘启动)
  5. 操作系统询问BIOS,以获得配置信息

九、操作系统大观园

  • 大型操作系统
  • 服务器操作系统
  • 多处理操作系统
  • 个人计算机操作系统
  • 掌上计算机操作系统
  • 嵌入式操作系统
  • 传感器节点操作系统
  • 实时操作系统
  • 智能卡操作系统

十、操作系统的概念

进程

  • 进程本质上是正在执行的一个程序
  • 进程基本上是容纳运行一个程序所需要所有信息的容器
  • 系统管理器授权每个进程使用一个给定的UID标识
  • 每个被启动的进程都有一个启动该进程的用户UID
  • 子进程与父进程这样的UID
  • 在Unix中,有一个UID称为超级用户,具有特殊的权利,可以违背一些保护规则

地址空间

通常,每个进程有一些可以使用的地址集合,典型值从0开始直到某个最大值。在最简单的情形下, 一个进程可拥有的最大地址空间小于主存。在这种方式下,进程可以满其地址空间,而且内存中也有足够的空间容纳该进程。
如果一个进程有比计算机拥有的主存还大的地址空间,而且该进程希望使用全部的内存怎么办?虚拟内存技术,操作系统可以把部分地址空间装入主存,部分留在磁盘上,并且在需要时穿梭交换它们。

文件

进程和文件层次都可以组织成树状结构。不同的是

  • 一般进程的树状结构层次不深(很少超过三层)
  • 文件树状解雇层次尝尝多达四层、五层或者更多层
  • 进程树层次结构是暂时的,通常最多存在几分钟
  • 目录层次则可能存在数年之久

输入/输出

每个操作系统都有管理其I/O设备的I/O子系统。

十一、操作系统的结构

单体系统

在这里插入图片描述

层次式系统

在这里插入图片描述

微内核系统

为了实现高可靠性,将操作系统划分成小的、良好定义的模块,只有其中一个模块——微内核——运行在内核态上,其余的模块,由于功能性相对弱些,则作为普通用户进程运行。
MINIX 3系统结构
在这里插入图片描述

客户机-服务器系统

一个微内核思想的略微变体就是将进程分为两类:服务器,每个服务器提供某种服务;客户端,使用这些服务。
这个模式的本质是存在客户端进程和服务器进程

虚拟机

外核系统

在底层,一种称为外核的程序在内核态运行,它的任务是为虚拟机分配资源,并检查试图使用这些资源的企图,以确保没有机器会使用他人的资源。

十二、依靠C的世界

操作系统通常是由许多程序员写成的,包括很多部分的大型C(有时候是C++)程序。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值