操作系统笔记 – 操作系统概念

1.1 操作系统的概念

通常,一个完整的操作系统是由硬件和软件两大部分组成的。
硬件是指计算机物理装置本身,它是计算机软件运行的基础。
软件是与数据处理系统的操作有关的计算机程序、过程、规则以及相关文档资料的总称。

在所有软件中,操作系统(Operating System)占有特殊的重要地位,它是配置在计算机硬件之上的第一层软件,用于控制硬件的工作,管理计算机系统的各种资源,并为系统中各个程序的运行提供服务。

1.1.1 计算机硬件结构

现代计算机体系结构基本上沿用冯诺依曼(Von Neumann)体系结构,采用存储程序工作原理,即:把计算过程描述为由许多条命令按一定顺序组成的程序,然后把程序和所需的数据一起输入计算机存储器中保存起来,工作时控制器执行程序,控制计算机自动连续地进行运算

从功能上讲,计算机系统由五大功能部件组成,即运算器控制器存储器输入设备输出设备。其中,运算器和控制器集成在一片或者几片超大规模集成电路中,即CPU

指令是控制计算机执行某种操作的命令。一台计算机所能执行的全部指令的集合称作指令系统指令集。在指令集中,有一类指令具有特殊权限,称为特权指令。只用于操作系统或者其他系统软件,普通用户不能直接使用。它主要用于系统资源的分配和管理,包括改变系统工作方式,检测用户的访问权限,控制I/O设备动作等。

多数CPU提供两种运行模式:内核态用户态。这是为了保护操作系统程序免受用户程序的干扰和损害。当用户程序在机器上运行时,CPU处于用户态,其权限较低,只能执行非特权指令。当发生中断或系统调用时,CPU状态就转为内核态,这样就可以执行操作系统的程序。

1.1.2 系统初启一般过程

  1. 硬件检测
  2. 加载引导程序
  3. 初始化内核
  4. 实现用户登录

1.1.3 什么是操作系统

操作系统是一类软件的总称,但至今仍没有一个统一的定义。

  1. 操作系统作为扩展机器。
    • 裸机(仅有硬件的计算机)提供的机器语言难记、难用又难懂。在裸机上安装操作系统之后,就把硬件细节和程序员隔离开了。经过操作系统的加工,呈现在用户面前的计算机功能更强,使用更方便。这种功能扩展可以重叠,在裸机上覆盖一层软件后,获得第一层拓展;在此基础上再加一层软件,得到第二层拓展,以此类推
  2. 操作系统作为资源管理器
    • 操作系统的功能是管理系统中的硬件资源和数据、程序等软件资源,控制、协调各个程序对这些资源的利用,尽可能地发挥各种资源的作用。
    • 监视各种资源,随时记录它们的状态
    • 实施某种策略以决定谁获得资源,何时获得,获得多少
    • 分配资源供需求者使用
    • 回收资源,以便再分配
  3. 操作系统的用户观点和系统观点
    • 从用户角度看,操作系统处于用户和计算机之间,为用户提供使用计算机系统的接口和各种资源管理服务,因此,操作系统应当使用方便、功能强、效率高、安全可靠、易于安装和维护等,当然价格应该便宜
    • 从系统角度看,操作系统是硬件之上的第一层软件,它要管理计算机系统中的硬件资源和软件资源分配的问题。从这个意义来讲,操作系统就是资源分配者。

1.1.4 操作系统的特征和服务

1.1.4.1 特征

  1. 并发性
  2. 共享性
  3. 异步性
  4. 抽象性

1.1.4.2 服务

  1. 服务项目
    1. 程序执行
    2. I/O操作
    3. 文件系统管理
    4. 出错检测
    5. 通信
    6. 资源分配
    7. 统计
    8. 保护
  2. 服务方式
    1. 系统调用
    2. 系统程序

1.2 操作系统的主要功能

1.2.1 储存管理

用户程序在运行之前都要装入内存。内存是所有运行程序共享的资源。
储存管理的主要功能包括:

  1. 内存分配
    • 内存分配的主要任务是为每道程序分配一定的内存空间。为此,操作系统必须记录整个内存的使用情况,处理用户提出的请求,按照某种策略实施分配,接收系统或用户释放的内存空间。
  2. 地址映射
    • 源程序经过编译之后,会形成若干个目标程序,各自的起始地址都是“0”,但它其实不是实际内存的起始地址,各程序中用到的其他地址都分别相对起始地址计算。这样,在多程序环境下,用户程序中所涉及的相对地址和装入内存后实际占用的物理地址就不一样。CPU执行用户程序时,要从内存中取出指令或数据,为此就必须把所用的相对地址转换成内存的物理地址,这就是地址映射。
  3. 内存保护
    • 不同用户的程序都放在一个内存中,就必须保证他们在各自的内存空间中活动,不能互相干扰,更不能侵犯操作系统的空间。当程序运行时,对所产生的每个访问内存的地址都要进行合法性检查。如果地址不在程序合法使用范围内,则属于地址越界,系统会产生中断并进行相应处理。
  4. 内存扩充
    • 物理内存容量是有限的,但是用户程序对内存的需求越来越大,内存很难完全满足用户的需求。虚拟存储技术能够解决这一问题。简单来说,就是把一个程序当前正在使用的部分放在内存,将其他部分放在硬盘上,以后根据程序执行时的要求和内存当前的使用情况,将所需的部分调入内存,必要时把已分出去的内存空间回收,供其他程序使用。

1.2.2 进程和处理机管理

  1. 作业和进程调度
    • 简单来说,用户的计算任务称为作业。程序的执行过程称为进程,它是分配和运行处理机的基本单位。一个作业通常要经过两级调度才能在CPU上执行。首先是作业调度,然后是进程调度。
  2. 进程控制
    • 进程是系统中活动的实体。进程控制包括
      1. 创建进程
      2. 撤销进程
      3. 封锁进程
      4. 唤醒进程
  3. 进程通信
    • 多个进程在活动过程中彼此间会发生相互依赖或者相互制约的关系。为保证系统中所有进程都能正常活动,就必须设置进程同步机制,分为同步方式和互斥方式。

1.2.3 文件管理

  1. 文件储存空间的管理
    • 系统文件和用户文件都在硬盘上,为此,需要由文件系统对所有文件以及文件的存储空间进行统一管理:为新文件分配必要空间,回收释放的文件空间,提高外存的利用率。
  2. 文件操作的一般管理
    1. 创建
    2. 删除
    3. 打开
    4. 关闭
  3. 目录管理
    • 目录管理包括目录文件的组织、实现用户对文件的“按名存取”,以及目录的快速查询和文件共享。
  4. 文件的读写管理和存取控制
    • 根据用户的请求,从外存中读取数据或者将数据写入外存中。为保证文件信息的安全性,防止未授权用户存取或破坏,要对各文件(包括目录)进行存取控制

1.2.4 设备管理

  1. 缓冲区管理
    • 缓冲区管理的目的是解决CPU和外设速度不匹配的矛盾,从而使它们能够充分并行工作,提高各自的利用率。
    • 例如,在音频中常见的buffer size
  2. 设备分配
    • 根据用户的I/O请求和相应的分配策略,为用户分配尾部设备、通道、控制器等
  3. 设备驱动
    • 实现CPU与通道和外设之间的通信。
  4. 设备无关性(设备独立性)
    • 用户编写的程序与实际使用的物理设备无关。由操作系统将用户程序中使用的逻辑设备映射到物理设备。

1.2.5 用户接口

  1. 程序接口(系统调用接口)
    • 系统调用是操作系统内核与用户程序、应用程序之间的接口。它位于操作系统内核的最高层,并且只能在内核态下执行。
  2. 命令行接口
    • 命令行接口是操作系统与用户的交互界面。
    • UNIX/Linux系统中,称其为Shell(终端)
    • Window系统中的命令行接口有CMD和PowerShell
  3. 图形用户接口(GUI)
    • 用户图形接口通常称作图形用户界面(简称图形界面)。用户利用鼠标、窗口、菜单、图标等图形界面工具,可以直观、方便、有效地使用系统服务和各种应用程序及实用工具。

严格来说,上述三种接口,只有程序接口属于操作系统的组成部分,另外两种接口都是核外的用户接口程序。

1.3 操作系统的形成和发展

1.4 操作系统的主要结构

1.4.1 单块结构

早期的操作系统多采用这种结构,其实就是没有结构
操作系统中有大量的模块,各个模块之间直接调用,不分层次。

优点:模块之间可以任意调用,实现效率高
缺点:1. 系统的结构关系不清晰,难以修改,2. 系统可靠性降低,3. 模块间会出现循环调用,危险性较高。

1.4.2 层次结构

层次结构的设计思想是:按照操作系统的各模块的功能和相互依存关系,把系统中的模块分为若干层,其中任一层(除底层模块)都建立在他下面一层模块的基础上。因此,任意一层的模块只能调用比他低的层的模块,而不能调用比他高的层的模块。

处在下层的程序模块也称作操作系统的内核,包括中断处理程序、各种常用设备的驱动程序以及运行频率较高的模块等。

但是,这在实际设计上有很多困难,所以实际使用的操作系统的内部结构并非都符合这种层次模型。

1.4.3 虚拟机结构

虚拟机结构的核心部分是虚拟机监控程序,它运行在裸机上,并形成多道程序环境——它为上一层提供多台虚拟机。这些虚拟机仅仅是裸机硬件的复制品,包括内核态/用户态、I/O机构、终端以及实际机器所应具有的全部内容。

由于每台虚拟机在功能上等同于一台实际的裸机,因此不同的虚拟机上就可以运行不同的操作系统,有的运行批处理或者事务处理系统,有的运行单用户、交互式系统等。

Linux操作系统就采用了虚拟机结构。

1.4.4 客户-服务器结构

虽然虚拟机结构简化了系统,但它本身非常复杂,因为要模拟许多机器实体并不是一件简单的工作。

现代操作系统有一个发展趋势,就是把实现扩展机器功能的这部分代码向上移入更高层次中,从而尽可能使操作系统保持最小核心,因而被称为微内核(如Mach、QNX、MINIX3等操作系统)。用户进程为了请求一个服务(如读取一个文件块),要向服务器进程发送请求,后者接受该请求,进行工作,然后发回结果。

微内核运行在内核态下。微内核实现所有操作系统都应具备的最基本功能,包括中断处理、进程管理、处理机调度和进程间通信等。

客户-服务器结构的另一个优点是适用于分布式系统。

1.5 UNIX和Linux系统的核心结构

1.5.1 UNIX系统

UNIX是现今最著名的多用户、多进程、多任务分时操作系统,它的前身是MULTICS操作系统。

1970年,Ken Thompson用汇编语言设计了一个小型操作系统,取名为UNIX。1971年,Dennis Ritchie开发了C语言,并在1973年用C语言重写了UNIX。

UNIX的主要特点有:

  1. 可移植性高
  2. 有良好的用户界面
  3. 树型分级结构的文件系统
  4. 字符流式文件
  5. 丰富的核外系统程序
  6. 设计思想先进,核心精干
  7. 提供管道机制
  8. 提供电子邮件和对网络通信的有力支持
  9. 系统安全,可靠性高

UNIX系统可以分为三层,靠近硬件的底层是内核层,核心层外的中间层是Shell层,最高层是应用层。

1.5.2 Linux系统

20世纪80年代,Andrew S. Tanenbaum教授为满足教学需求,自行设计了一个微型UNIX系统-MINIX。
1991年,Linus Torvalds在此基础上开发了Linux核心,并利用Internet发布了源代码,从而创建了Linux操作系统。之后,许多系统软件设计专家共同对它进行改进和提高。

Linux系统有以下显著特征:

  1. 与UNIX兼容
  2. 自由软件,源码公开
  3. 性能高,安全性高
  4. 便于定制和再开发
  5. 互操作性高
  6. 全面的多任务和真正的32位操作系统

常见的Linux发行版本:

  1. Ubuntu(Debian系)
  2. CentOS(Red Hat系)
  3. Deepin(国产)
  4. Kali
  5. 等等

You may also like...

发表回复

您的电子邮箱地址不会被公开。