操作系统理论——引论(1)

本文最后更新于:2024年4月22日 晚上

操作系统理论——引论(1)

该分类主要将ppt上的内容结合教材与补充资料进行总结复制

教材:任爱华等,操作系统实用教程(第三版),清华大学出版社, 2010

参考书:Andrew S. Tanenbaum. 现代操作系统 (第三版),机械工业出版社

从Hello World开始

我们可以先从计算机执行hello world程序开始看起,这个程序的源文件长这样:

1
2
3
4
#include <stdio.h>
main() {
printf("hello world\n");
}

计算机处理源文件并执行的流程如下:

  1. 编译成可执行文件

  2. 用户告诉shell执行该可执行程序

    由于安全、复杂、繁琐等原因,用户不能直接接触内核(也没有必要),需要另外再开发一个程序,让用户直接使用这个程序;该程序的作用就是接收用户的操作(点击图标、输入命令),并进行简单的处理,然后再传递给内核,这样用户就能间接地使用操作系统内核了。在用户和内核之间增加一层“代理”,既能简化用户的操作,又能保障内核的安全,何乐不为呢?用户界面和命令行就是这个另外开发的程序,就是这层“代理”。在Linux下,这个命令行程序叫做 Shell

    Shell 是一个应用程序,它连接了用户Linux 内核,让用户能够更加高效、安全、低成本地使用 Linux 内核,这就是 Shell 的本质。Shell 本身并不是内核的一部分,它只是站在内核的基础上编写的一个应用程序,它和 QQ迅雷Firefox 等其它软件没有什么区别。然而 Shell也有着它的特殊性,就是开机立马启动,并呈现在用户面前;用户通过 Shell来使用 Linux,不启动 Shell的话,用户就没办法使用 Linux。

  3. 创建一个新的子进程

    • 创建进程控制块
  4. 装入helloworld程序

    • 操作系统找到该程序,检查其类型
    • 检查程序首部,找出代码段和数据段的地址
    • 可执行文件映射到进程结构
    • 设置CPU上下文环境与程序开始处
    • 调度helloworld程序
  5. 执行程序的第一条命令

    • 执行失败,缺页中断发生
    • 分配一页内存,并将代码从磁盘读入,继续执行
    • 更多的缺页中断,读入更多的页面
  6. printf

    • 操作系统检查字符串位置是否正确
    • 操作系统找到字符串被送往的设备
    • 设备是一个伪终端,由一个进程控制
    • 操作系统将字符串送给该进程
    • 该进程告诉窗口系统他要显示字符串
    • 窗口系统确定操作合法,将字符串转换为像素
    • 窗口系统将像素写入存储映像区
  7. 视频硬件将像素表示转换成一组模拟信号控制显示器(重画屏幕)

  8. 显示器发射电子束,你在屏幕上看到hello world!

操作系统的工作

从上面的例子中,大概能了解到操作系统的工作有以下方面:

  • 程序的执行:负责启动每个程序及结束程序的工作
  • 完成与硬件有关的工作
  • 完成与应用无关的工作
    • 易于使用,基本服务,统一性
  • 计算机系统的效率与安全问题

假如没有操作系统,该如何操作硬件?

例子:软盘I/O操作

  • 控制芯片NEC PD765有16条命令

  • 每一条命令向一个设备寄存器装入长度从1到9字节的特定数据(读写数据、移动磁头臂、格式化磁道,及初始化、检测状态、复位、校准控制器及设备等)

  • 以READ为例:13个参数

  • 要读取的磁盘块地址、磁道的扇区数、物理介质的记录格式、扇区间隙、对已删除数据地址标识的处理方法

  • 操作结束时,控制器芯片在7个字节中返回23个状态及出错字段

  • 软盘程序员还要保持注意步进电机的开关状态

操作系统在这个例子中,起到了管理硬件、方便使用、提供保护的作用。

操作系统的概念

定义

操作系统是一组管理计算机硬件资源的软件集合,它向计算机程序提供共性的服务。

  • 对使用者而言,操作系统提供一个计算机用户与计算机硬件系统之间的接口,使得计算机系统更易于使用;
  • 对资源管理者而言,操作系统可以有效地控制和管理计算机系统中的各种硬件和软件资源,使之得到更有效的利用;
  • 合理地组织计算机系统的工作流程,以改善系统性能,如相应时间、系统吞吐量等。

自顶向下看

操作系统通过隐藏硬件的细节来屏蔽复杂性,呈现给程序良好,清晰,一致,优雅(?)的抽象(创建、实现和管理抽象)。

操作系统将丑陋的硬件转化成美丽的抽象

自底向上看

  • 向上层用户提供服务

    • 支持多个用户、多个程序
    • 资源竞争
  • 资源的复用(共享)

    • 时间维度

      当一个资源在时间上复用时,不同的程序或用户轮流使用它,第一个程序获取该资源使用结束后,在轮到第二个,第三个。

      例如:只有一个cpu,多个程序需要在该cpu上运行,操作系统先把cpu分给第一个程序,在这个程序运行的足够长的时间(时间长短由操作系统的算法说了算)或者遇到了I/O阻塞,操作系统则把cpu分配给下一个程序,以此类推,直到第一个程序重新被分配到了cpu然后再次运行,由于cpu的切换速度很快,给用户的感觉就是这些程序是同时运行的,或者说是并发的,或者说是伪并行的。至于资源如何实现时间复用,或者说谁应该是下一个要运行的程序,以及一个任务需要运行多长时间,这些都是操作系统的工作。

    • 空间维度

      每个客户都获取了一个大的资源中的一小部分资源,从而减少了排队等待资源的时间。

      例如:多个运行的程序同时进入内存,硬件层面提供保护机制来确保各自的内存是分割开的,且由操作系统控制,这比一个程序独占内存一个一个排队进入内存效率要高的多。

      有关空间复用的其他资源还有磁盘,在许多系统中,一个磁盘同时为许多用户保存文件。分配磁盘空间并且记录谁正在使用哪个磁盘块是操作系统资源管理的典型任务。

操作系统简史

第一代:真空管和穿孔卡片

第一台数字计算机ENIAC,未采用二进制操作和存储程序控制,未具备现代电子计算机的主要特征。

所有的程序设计均用纯粹的硬件语言编写,需要手动修改逻辑单元的连接来运行软件,控制机器的基本功能。甚至没有操作系统的概念。

第二代:晶体管和批处理系统

计算机变得更加可靠,可长时间运行。随着计算机速度的提高,速度层面上的人机矛盾已不可容忍。

同时,当时的计算机非常昂贵,因此很自然的想办法较少机时的浪费。为了实现作业的自动过度,出现了成批处理。

典型的操作系统:FMS(the Fortran Monitor System),批处理系统。

批处理技术:计算机系统对一批作业进行处理的系统,可分为联机批处理和脱机批处理。

脱机批处理系统由主机和卫星机构成。卫星机又称外围计算机,不与主机直接连接,而只与外部设备连接,专门控制外设。这样,主机摆脱了慢速的I/O给你工作,可以充分发挥主机的高速计算能力。

第三代:小规模集成电路和多道程序设计

20世纪60年代初期,大多数计算机厂商都有两条完全不兼容的生产线。一条是面向字的大型的科学计算机,如IBM 7094,主要用于科学计算和工程计算;另外一条是面向字符的商用计算机,如IBM 1401,主要用于银行和保险公司从事磁带归档和打印服务。

开发和维护完全不同的产品是昂贵的,同时不同的用户对计算机的用途不同。IBM公司试图通过引入system/360系列来同时满足科学计算和商业计算,360系列低档机与1401相当,高档机比7094功能强很多,不同的性能卖不同的价格。

360是第一个采用了(小规模)芯片(集成电路)的主流机型,与采用晶体管的第二代计算机相比,性价比有了很大的提高。这些计算机的后代仍在大型的计算机中心里使用,此乃现在服务器的前身,这些服务器每秒处理不小于千次的请求。

多道批处理技术

在前述的批处理系统中,引入多道程序设计技术后形成多道批处理系统,简称批处理系统。

  • 多道:系统内可以同时容纳多个作业。这些作业放在外存中组成后备队列,系统按照一定的调度原则每次从后备作业队列选取一个/多个作业进入内存运行,运行作业结束、退出运行和后被作业进入运行均由系统自动实现,从而在系统中形成一个自动转接的、连续的的作业流。
  • 成批:在系统运行过程中,不允许用户与其作业发生交互作用。作业一旦进入系统,用户就不能直接干预其作业的运行。
  • 优点:系统吞吐量大,资源利用率高
  • 缺点:平均周转时间长,不能提供交互作用能力。

分时系统

将CPU处理时间分割成多个时间片,将时间片分给不同程序,达到多个程序“同时”运行的效果。

Why?

  • 批处理系统一次执行一个程序,I/O过程CPU空转
  • 进一步提高CPU利用率,支持多用户,多进程

第四代:PC机 & 微机操作系统

MSDOS、WINDOWS 95、WINDOWS NT、WINDOWS 2000

类UNIX(Linux, Freebsd等)

第五代:分布式与嵌入式系统

Cluster of Workstation, Network of Workstation, Grid, Cloud

实时操作系统:Psos, VRTX, RTLinux, VxWorks

智能操作系统:智能车载、无人机载、智能家庭

思考题

1. 假如没有操作系统,怎样控制硬件?

如果没有操作系统,需要手动根据硬件各自不同的接口输入控制指令,分别控制不同的硬件。

以软盘IO为例,控制芯片NEC PD765有16条命令,每一条命令向一个设备寄存器装入长度从1到9字节的特定数据(读写数据、移动磁头臂、格式化磁道,及初始化、检测状态、复位、校准控制器及设备等)。以READ为例,读数据需要13个参数,要读取的磁盘块地址、磁道的扇区数、物理介质的记录格式、扇区间隙、对已删除数据地址标识的处理方法,操作结束时,控制器芯片在7个字节中返回23个状态及出错字段。

不同的硬件,其接口是有差异的,并且常常是“丑陋”的,如果有操作系统,操作系统可以完成统一管理“丑陋”的底层接口,向上提供整齐的软件接口的工作。

2. 什么是多道程序设计?多道程序设计与分时系统的区别是什么?

多道程序设计(Multiprogramming)是一种计算机操作系统的运行方式,它允许同时运行多个程序。

在多道程序设计中,操作系统将CPU时间分割成很短的时间片(时间段),并在每个时间片中将CPU分配给不同的程序。这样,多个程序可以并发地执行,从而提高了系统的吞吐量和利用率。

相同之处:

  1. 都可以同时处理和执行多个作业。

  2. 都充分利用发挥了计算机系统部件的并行性。

  3. 都提高了CPU的利用率。

  4. 都需要在内存中同时保存多个作业。

  5. 分时技术本身就是多道程序设计技术的延伸。

不同之处:

  1. 分时操作系统是给不同用户提供程序的使用,而多道程序系统则是不同程序间的穿插运行。

  2. 分时操作系统主要是针对于多用户来说的,而多道程序系统主要是针对于多程序来说的。

  3. 分时系统要求计算机系统是可交互的,而多道程序系统没有提供用户与计算机系统的交互。

  4. 分时系统中CPU的使用权变更比多道系统中频繁得多,因为分时系统需要保证多个用户同时的使用体验,CPU的切换必须非常快;而多道系统只强调效率,单个程序持续占用CPU的时间会长得多。

3. 什么原因推动了操作系统从批处理发展到多道程序,进而发展到分时系统?

批处理系统的主要推动力是提高系统资源利用率和系统吞吐量。这主要体现在两个方面:一是脱机输入/输出技术的应用和作业的自动过渡,这大大提高了I/O的速度,增加了I/O设备与CPU并行工作的程度,从而减少了主机CPU的空闲时间;二是多道程序设计技术的应用,它更进一步提高了CPU、内存和I/O设备的利用率以及系统的吞吐量。

分时系统的形成和发展主要是为了更好地满足用户的需要。这主要体现在三个方面:一是CPU的分时使用,这缩短了作业的平均周转时间;二是人机交互能力的提供,使用户能方便地直接控制自己的作业;三是主机的共享,这使得多个用户(包括远程用户)能同时使用同一台计算机,独立地、互不干扰地处理自己的作业。

因此,操作系统的这种发展路径是由提高系统效率和满足用户需求这两个主要驱动力共同推动的。


操作系统理论——引论(1)
https://galaxy-jewxw.github.io/2024/03/01/OS1/
作者
Traumtänzer aka 'Jew1!5!'
发布于
2024年3月1日
许可协议