引论

引论

1 操作系统的定义和作用 #

1.1 操作系统定义 #

操作系统是计算机中的一个系统软件,是一系列程序模块的集合。

  • 它们能尽可能以有效合理的方式组织和管理计算机的软硬件资源;
  • 合理地组织计算机的工作流程,控制程序的执行并向用户提供各种服务功能;
  • 使得用户更加灵活、方便的使用计算机,使整个计算机系统高效运行;

有效:指系统效率,资源利用率。如cpu利用率是否充足,I/O设备是否忙碌等。

合理:软硬件资源的管理是否公平合理。

1.2 操作系统的作用 #

  1. 资源的管理者
  2. 向用户提供各种服务
  3. 对硬件机器的拓展

1.2.1 OS是资源的管理者 #

自底向上,操作系统是资源的管理者。

资源:

  • 硬件(CPU,内存,设备(I/O设备,磁盘,时钟,网卡等))
  • 软件(磁盘上的文件,各类管理信息)

1.2.2 OS如何管理资源 #

  1. 跟踪资源的使用情况 (数据结构)
    • 哪些资源空闲,分配给谁,允许使用多长时间等
  2. 资源分配策略 (算法)
    1. 静态分配策略
    2. 动态分配策略(被采纳)
  3. 实施资源的分配和回收
  4. 提高资源的利用率
  5. 保护资源的使用
  6. 协调多个进程对资源请求的冲突

1.2.3 OS的5大功能——从资源管理的角度 #

  1. 进程/线程管理(CPU管理)
    • 进程线程状态、控制、同步互斥、通信、调度…
  2. 存储管理
    • 分配/回收、地址转换、存储保护、内存扩充…
  3. 文件管理
    • 文件目录、文件操作、磁盘空间、文件存取控制…
  4. 设备管理
    • 设备驱动、分配回收、缓冲技术…
  5. 用户接口
    • 系统命令、编程接口

1.2.4 OS是系统各种系统服务的提供者 #

  • 从用户的角度,操作系统提供了一组功能强大、方便易用的命令或系统调用。
  • 操作系统提供的典型服务,如进程的创建、执行,文件和目录的操作,I/O设备的使用,各类统计信息等等。

1.2.5 OS是硬件之上的第一层软件 #

  1. 操作系统在应用程序和硬件之间建立了一个等价的扩展机器
  2. 对硬件抽象,提高可移植性,相比对底层硬件更容易编程

2 操作系统的主要特征 #

  • 并发(concurrency)
  • 共享(sharing)
  • 虚拟(virtual)
  • 随机(random)

2.1 并发 #

并发(concurrency):处理多个同时性活动的能力。

并发引发的问题: 活动切换、保护、相互依赖的活动间的同步。

计算机系统中同时存在多个程序运行,单CPU上,

  1. 宏观上,这些程序在同时运行
  2. 微观上,任何时刻都只有一个程序在执行(时间片)

并行(parallel):与并行相似,但指不同程序同时在多个硬件部件上执行。

2.2 共享 #

操作系统与多个用户的程序共同使用计算机系统的资源(共享有限的系统资源)。

操作系统要对系统资源进行合理分配和使用。

资源在同一时间段内交替被多个进程所用。

根据资源被使用的特性,共享可以分为

  • 互斥共享(如打印机)
  • 同时共享(如可重入代码、磁盘文件)

问题:资源分配难以达到最优化,以及如何保护资源完整性…

2.3 虚拟 #

  • 一个物理实体映射为若干个对应的逻辑实体——分时或者分空间
  • 虚拟是操作系统管理系统资源的重要手段,可以提高资源利用率

CPU——每个进程的”虚处理机“;

存储器——每个进程都有独立的虚拟地址空间(代码+数据+堆栈);

显示设备——多窗口或虚拟终端

2.4 随机 #

操作系统必须随时对以不可预测的次序发生的事件作出响应并处理。

进程运行的速度不可预知:多个进程并发运行,无法预知每个进程的运行推进的快慢。

难以重现系统在某个时刻的状态(包括重现运行中的错误)。

3 典型操作系统的架构 #

3.1 Windows #

win_os_structure

Reference: Windows操作系统的体系结构

核心概念-自底向上:

  1. 硬件接口
  2. 内核态
    1. HAL 硬件抽象层
    2. kernel 内核
    3. 设备/文件驱动
    4. 图形设备
    5. I/O管理
  3. 用户态
    1. 系统支持服务
    2. 应用程序
    3. 环境子系统
    4. Ntdll.dll

3.2 Unix/Linux #

unix_1

Reference: Unix/Linux的体系架构-简书

4 操作系统分类 #

4.1 传统操作系统分类 #

  • 批处理操作系统
  • 实时操作系统
  • 网络操作系统
  • 嵌入式操作系统
  • 分时系统
  • 个人计算机操作系统
  • 分布式操作系统

4.1.1 批处理操作系统 #

基本概念 #

  1. 工作方式:

    1. 用户将作业交给系统操作员;
    2. 系统操作员将许多用户的作业组成一个作业,输入到计算机系统中,在系统中形成一个自动转接的连续的作业流;
    3. 启动操作系统;
    4. 系统自动、依次执行每个作业;
    5. 操作员将作业结果交给用户。
  2. 追求目标: 提供系统资源利用率,增加作业处理吞吐量。

  3. 作业的内含

    1. 用户程序
    2. 数据
    3. 作业说明书(用作业控制语言编写-类脚本)
  4. 成批: 通常由多个作业组成,用户提交作业后,只能等待处理结果,不能干预自己作业的执行。

  5. 批处理作业:
    对一批作业中的每个作业进行相同的处理:从磁带读取用户作业和编译链接程序,编译链接用户作业以生成可执行程序;启动执行;执行并输出结果。

不足:慢速的输入输出直接由主机完成,此过程中CPU出于等待状态,造成资源浪费。

解决方案:使用卫星机,仅仅完成输入输出的工作,处理结果暂存在磁带或磁盘上。

SPOOLING技术 #

  • 批处理系统的实现通常采用的技术
  • 1961年,🇬🇧曼切斯特大学,Atalas机(原型)
  • Simultaneous Peripheral Operation On-Line (同时的外围设备联机操作,又称假脱机技术)
  • 思想:利用磁盘作为缓冲,将输入、计算、输出分别组成独立的任务流,使I/O和计算真正并行

工作原理:

spooling.jpg

现今打印机的打印队列使用了Spooling技术。

4.1.2 分时操作系统 #

时间片(time slice)

操作系统将CPU的时间划分为若干个片段,称为时间片

  • 操作系统以时间片为单位,轮流为每个终端用户服务,每次服务一个时间片;
  • 其特点是利用人的错觉(?),使用户感觉不到计算机在服务多人。

分时操作系统追求即时响应。

通用型操作系统:

  • 分时系统与批处理系统的结合;
  • 原则:分时优先,批处理在后
    • ”前台”:需要频繁交互的作业 - 分时处理
    • “后台”:时间性要求不严的作业- 批处理

4.1.3 实时操作系统 #

计算机能够及时响应外部事件的请求,在规定的严格时间内完成对该事件的处理,并控制所有实时设备和实时任务协调一致地工作。

分类:

  • 第一类:实时过程控制

    工业控制,航空,军事控制…

  • 第二类:实时通信(信息)处理

    电讯(自动交换机),银行,飞机订票,股市行情…

要求(目标):

  • 对外部请求在严格时间范围内作出响应
  • 高可靠性

4.1.4 个人计算机操作系统 #

某一时间内为单一用户服务。界面友好,使用方便,丰富的应用软件支持。

4.1.5 网络操作系统 #

基于计算机网络,在计算机网络系统上,按网络体系结构协议标准开发的软件。

功能:

网络管理,通信,安全,资源共享,以及各种网络应用。

目标:

互相通信,资源共享。

4.1.6 分布式操作系统 #

  • 分布式系统:或以计算机网络为基础,或以多处理机为基础,基本特征是处理分布在不同计算机上。
  • 分布式操作系统:是一个统一的操作系统,允许若干计算机可相互协作共同完成一项任务。操作系统可以将各种系统任务在分布式系统中的任何处理机上运行,自动实现全系统范围内的任务分配、自动调度、均衡各处理机的工作负载。
  • 处理能力更强,速度更快,可靠性增强,

4.1.7 嵌入式操作系统 #

  • 嵌入式系统:
    • 在各种设备(汽车、手机、电视、mp3…)、装置或系统中,完成特定功能的软硬件系统。
    • 它们是一个大设备、装置或者系统中的一部分,这个大设备,可以不是计算机。
  • 通常工作在反应式或对处理时间有较严格要求的环境中。
  • 嵌入式操作系统: 运行在嵌入式系统环境中,对整个嵌入式系统及其操作、控制的各种部件装置等资源进行统一协调、调度、指挥和控制的系统软件。

4.1.8 智能卡操作系统(补充) #

智能卡: 一种包含一块CPU芯片的卡片

特点:

  1. 非常严格的运行能耗和存储空间的限制,有些智能卡只有单项功能,如电子支付
  2. 有专用的操作系统

有些智能卡是面向Java的,即智能卡的ROM中有一个Java虚拟机解释器。

5 本章重点 #