[操作系统精髓与设计原理笔记] Chapter2 操作系统概述

Chapter2 操作系统概述


2.1 操作系统的目标和功能
2.1.1 作为用户/计算机接口的操作系统
  1. 操作系统是应用程序和计算机硬件间的接口,三个目标:方便、有效、扩展能力

  2. 计算机软硬件结构
    在这里插入图片描述
    ​ (1) 系统程序包括实用工具或库程序、操作系统等,操作系统是最重要的系统程序

    ​ (2) 计算机系统中的三种重要接口

    ​ 1) 指令系统体系结构(ISA):定义了机器语言指令系统,是软硬件的分界线,可分为用户级ISA和系统级ISA

    ​ 2) 应用程序二进制接口(ABI):定义了操作系统的系统调用接口

    ​ 3) 应用程序编程接口(API):允许应用程序访问系统的硬件资源和服务

  3. 操作系统提供的服务

    (1) 程序开发:提供应用程序开发工具

    (2) 程序运行:把指令和数据加载到内存、初始化I/O设备等

    (3) I/O设备访问:用户可使用简单的读写操作来访问I/O设备

    (4) 文件访问控制

    (5) 系统访问:控制对共享或公共系统的访问

    (6) 错误检测和响应:对内部和外部硬件错误、软件错误等,提供响应以清楚错误条件,响应可以是终止引起错误的程序、重试操作或给应用程序报告错误

    (7) 记账:收集对各种资源的利用率的统计数据

2.1.2 作为资源管理器的操作系统
  1. 计算机是一组资源,这些资源用于移动、存储和处理数据,操作系统管理这些资源

  2. 操作系统的控制机制

    (1) 操作系统与普通计算机软件一样,都是由处理器执行的一组程序

    (2) 操作系统会释放控制,且必须依赖处理器才能恢复控制

  3. 操作系统的一部分在内存中,包括内核程序(kernel/necleus)和当前使用的其他操作系统程序

2.1.3 操作系统的易扩展性

​ 操作系统具有易扩展性的需求来自于,硬件升级和新型硬件的出现、新的服务、纠正错误

2.2 操作系统的发展史
2.2.1 串行处理
  1. 主要问题

    (1) 调度:用户预订机器时间,若提前完成工作会导致计算机闲置,若未在分配时间内完成工作,则在解决问题前会被强制停止

    (2) 在程序运行前的准备工作需要花费大量的时间

2.2.2 简单批处理系统
  1. 简单批处理方案的中心思想:使用监控程序(monitor)软件。操作员将作业按顺序组织成批,再把批作业提供给监控程序, 每个程序完成作业后返回监控程序,监控程序自动加载下一个程序
    在这里插入图片描述

  2. 监控程序控制事件的顺序

    (1) 常驻监控程序(resident monitor),总是处于内存中并且可以执行

    (2) 其他部分如实用程序、公用函数等,只在用户程序调用时载入

    (3) 监控程序读取作业,放置在用户程序区域,控制权交给作业。作业完成后,控制权返回给监控程序,读取下一个作业

  3. 处理器角度

    控制权交给作业,意味着处理器当前取的和执行的都是用户程序中的指令;控制权返回给监控程序, 意味着处理器当前从监控程序中取指令并执行指令

  4. 简单批处理系统的优点

    (1) 监控程序完成了调度功能,完成作业后,处理器自动加载下一作业

    (2) 监控程序改善了作业的等待时间,每个作业中的指令均以作业控制语言(Job Control Language, JCL)的基本形式给出

  5. 监控程序(批处理操作系统)的其他硬件功能

    (1) 内存保护:用户程序运行时,不能改变包含监控程序的内存区域

    (2) 定时器:防止一个作业独占系统,定时器时间到则停止用户程序

    (3) 特权指令:特权指令只能由监控程序执行,如I/O指令

    (4) 中断

  6. 运行模式

    (1) 用户程序以用户模式(user mode)执行,受到内存保护和特权指令限制

    (2) 监控程序以内核模式(kernel mode)执行,可执行特权指令和访问内存保护区域

  7. 批处理操作系统的系统开销

    (1) 一部分内存交付给监控程序

    (2) 监控程序消耗了一部分机器时间

2.2.3 多道批处理系统
  1. I/O设备相对于处理器而言速度太慢,处理器仍经常处于空闲状态
  2. 多道程序设计(multiprogramming)或多任务处理(multitasking):扩展存储器以保存多个程序,处理器在它们之间切换,当一个作业需要等待I/O时,切换到另一个并不在等待I/O的作业
  3. 多道批处理系统的依赖硬件:支持I/O中断和直接存储器访问(DMA)的硬件
  4. 多道批处理系统还必须有内存管理(memory management)和调度算法
2.2.4 分时系统
  1. 分时(time sharing)技术:多个用户分享处理器时间,操作系统控制每个用户程序在很短时间内交替执行,通过设计使得系统响应时间接近于专用计算机的响应时间

  2. 时间片技术:在固定的时间间隔内,当前用户被抢占,另一用户被载入

  3. 第一个分时操作系统:CTSS兼容分时系统

    只有当新来的程序需要重写用户存储空间时,用户存储空间才被写出

  4. 分时和多道程序设计的问题

    (1) 内存中有多个作业时,保护其不互相干扰

    (2) 多个交互用户时,对文件系统进行保护

    (3) 处理资源竞争问题

2.3 主要成就
  1. 操作系统开发的4个重要领域:进程、内存管理、信息保护和安全、调度和资源管理
2.3.1 进程
  1. 计算机系统发展的三条主线:多道程序批处理操作、分时和实时事务系统

    (1) 多道程序批处理操作:处理器通过切换不同程序,使处理器和I/O设备同时保持忙状态

    (2) 分时:同时支持多个用户,且及时响应每个用户的要求

    (3) 实时事务处理系统:同时支持多个用户开始程序、执行作业及各种各样的应用程序,如多个用户同时对数据库进行查询和修改的航空公司预订系统

  2. 早期系统软件运行错误的常见原因

    (1) 不正确的同步:信号丢失或接收到重复信号

    (2) 失败的互斥

    (3) 不确定的程序操作:程序调度顺序可能对某个程序的输出结果造成影响

    (4) 死锁:多个程序相互挂起等待,等待对方释放自己想要的资源

  3. 进程的概念

    (1) 一段可执行的程序

    (2) 程序所需要的相关数据(变量、工作空间、缓冲区等)

    (3) 程序的执行上下文(execution context),又称为进程状态(process state),是操作系统管理进程及处理器正确执行进程所需的所有信息,包括各种处理器寄存器的内容(程序计数器、数据寄存器)、操作系统使用的信息(进程优先级、进程是否在等待特定I/O事件的完成),(大部分)执行上下文和进程是分开存储的

  4. 进程管理方法

    (1) 每个进程(程序、数据和部分上下文信息)分配一块存储器区域,并由操作系统维护的进程表记录

    (2) 进程表:每个进程的表项,包括指向包含进程的存储块地址的指针、该进程的部分或全部执行上下文
    在这里插入图片描述
    (3) 保存进程执行上下文的重要寄存器

    1) 进程索引寄存器(process index register):当前正在控制处理器的进程在进程表中的索引

    2) 程序计数器(program counter):指向该进程中下一条待执行的指令

    3) 基址寄存器(base register):保存进程所在的存储器区域的开始地址

    4) 界限寄存器(limit register):保存进程所在存储器区域的大小

  5. 一个分配了资源的进程可分解为多个并发的线程(thread)

2.3.2 内存管理
  1. 操作系统的5项存储器管理职责:

    (1) 进程隔离:操作系统必须保护独立的进程,防止其互相干扰

    (2) 自动分配和管理

    (3) 支持模块化程序设计

    (4) 保护和访问控制:操作系统允许一部分内存可由各种用户以各种方式进行访问的同时,保护其完整性

    (5) 长期存储:在计算机关机后长时间地保存信息

  2. 文件系统

    (1) 信息保存在文件对象中,文件系统实现了长期存储

    (2) 对操作系统来说,文件是访问控制和保护的一个有用单元

  3. 虚存(virtual memory)机制
    在这里插入图片描述
    (1) 目的:为了满足有多个用户作业同时驻留在内存中的要求

    (2) 虚存机制允许程序以逻辑方式访问存储器,而不考虑物理内存上可用的空间数量

    (3) 分页系统

    1) 进程由许多固定大小的块,即页组成

    2) 程序通过虚地址访问字,虚地址包括页号和页中的偏移量

    3) 分页系统提供了程序中使用的虚地址(virtual address),和内存中的实地址(real address)或物理地址之间的动态映射

    (4) 一个进程的所有页保留在磁盘中,进程执行时一部分页调入内存中,存在内存的帧中(每帧的大小等于页大小)

    (5) 若需要访问的某页不在内存中,则在检测到后安排载入缺页(misssing pages)

  4. 给每个进程分配唯一的不重叠的虚存空间,可实现进程隔离;使两个虚存空间的一部分重叠可实现内存共享

  5. 虚存寻址
    在这里插入图片描述
    (1) 程序(处理器)通过向虚地址访问,内存管理单元(地址转换机制)将虚地址映射成真实的内存地址,若所访问的虚地址不在内存中则进行内存和辅存的数据交换

    (2) 目标:开发开销少的地址转换机制

    ​ 开发能减小各级存储器间通信量得存储分配策略

2.3.3 信息保护和安全
  1. 与操作系统相关的4类安全和保护问题

    (1) 可用性:保护系统不被中断

    (2) 保密性:保证用户不能读取未授权访问的数据

    (3) 数据完整性:保护数据不被未授权修改

    (4) 认证:涉及用户身份的正确认证和消息或数据的合法性

2.3.4 调度和资源管理
  1. 管理各种可用资源(内存空间、I/O设备、处理器),并调度各种活动进程来使用这些资源,是操作系统的关键任务

  2. 资源分配和调度策略考虑因素

    (1) 公平性:给竞争使用同一资源的所有进程提供几乎同等的访问机会

    (2) 有差别的响应性

    (3) 有效性:操作系统希望获得最大的吞吐量和最小的响应时间

  3. 多道程序设计中的进程调度和资源分配

    (1) 操作系统维护多个队列:短程队列、长程队列、I/O队列,每个队列代表等待某些资源的进程列表

    (2) 短程队列:在内存中等待处理器可用并随时准备运行的进程,处理器选择执行哪个进程的策略有两种

    1) 时间片轮转(round-robin)技术:依次给队列中的每个进程分配一定时间

    2) 给不同的进程分配不同的优先级,并据此进行调度

    (3) 长程队列:等待使用处理器的新作业列表,把长程队列中的作业转移倒短程队列后才能执行

    (4) I/O队列:每个I/O设备都有一个I/O队列

2.4 现代操作系统的特征
  1. 现代操作系统有了新的硬件发展、应用程序与安全威胁

    (1) 硬件发展:多处理器、高速增长的机器速度、高速网络连接、大容量存储设备

    (2) 安全威胁:互联网,病毒、蠕虫和黑客技术

  2. 新的操作系统组织方法

    微内核体系结构、多线程、对称多处理、分布式操作系统、面向对象设计

  3. 微内核体系结构(microkernel architecture)

    (1) 单体内核(monolithic kernel):操作系统的多数功能由一个大内核提供

    (2) 微内核体系结构:只给内核分配最基本的功能,其他操作系统服务由运行在用户模式且与应用程序类试的进程提供

  4. 多线程(multithreading)

    (1) 线程(threading):可派分的工作单元

    (2) 进程(process):一个或多个线程和相关系统资源的集合

    (3) 将执行一个应用程序的进程划分为多个线程,处理器在不同的线程间来回切换

  5. 对称对处理(Symmetric MulitiProcessing, SMP)

    (1) 硬件体系结构+操作系统行为

    硬件体系结构:对称多处理器

    操作系统行为:调度进程或线程到所有的处理器上运行

    (2) 优点

    1) 性能:若能让工作在不同的处理器上并行完成,则性能更加

    2) 可用性:单个处理器失效不会导致机器停止

    3) 增量增长:通过添加处理器可提高性能

    4) 可扩展性:厂家根据系统配置的处理器数量提供不同性能的产品

  6. 分布式操作系统(distributed operating system)

    一群实体(计算机),每个实体都有自己的内存、外存和其他I/O模块

  7. 面向对象设计(object-oriented design)

2.5 容错性
  1. 容错性指系统或部件在发生软/硬件错误时,能继续正常运行的能力
2.5.1 基本概念
  1. 与容错性相关的基本度量指标是可靠性、平均失效时间和可用性

  2. 可靠性 R ( t ) R(t)

    从时刻t=0开始系统正确运行,到时刻t时系统保持正确运行的概率

    正确运行指一系列程序正常运行,保护数据不被意外地修改

  3. 平均失效时间(MTTF)
    M T T F = 0 R ( t ) d t MTTF = \int_{0}^{\infty}R(t) dt

  4. 平均修复时间(MTTR):修复或替换错误部分所花费的平均时间
    在这里插入图片描述

  5. 可用性(availability):系统能够有效服务用户请求的时间段,定义为某个给定的时刻和条件下,实体正常运行的概率

    (1) 宕机时间(downtime):系统不可用的时间

    (2) 正常运行时间(uptime):系统可用的时间

    (3) 可用性A
    A = M T T F M T T F + M T T R A = \frac{MTTF}{MTTF+MTTR}

2.5.2 错误
  1. 错误定义(IEEE):不正确的硬件或软件状态,该状态由环境、设计错误、程序错误、数据结构错误所导致的组件错误、操作错误、物理干扰造成

  2. 故障表现

    (1) 硬件设备或组件缺陷,如短路或线路损坏

    (2) 计算机程序中不正确的步骤、过程或数据定义

  3. 错误分类

    (1) 永久性错误:在故障部分替换或修复前一直存在,如硬盘磁头损坏、软件错误、通信部件损坏

    (2) 临时性错误

    1. 瞬时性错误:仅发生一次,如冲激噪声造成的位传输错误等

    2. 间歇性错误:如连接松动导致的错误

  4. 增加冗余度的方法

    (1) 空间(物理)冗余:使用多个组件同时执行相同功能,或设置一个可用组件作为备份

    (2) 时间冗余:检测到错误时重复某一功能或操作,对临时性错误有效

    (3) 信息冗余:通过复制或编码数据的方式来检测和修复位数据

2.5.3 操作系统机制

操作系统软件提高容错性的技术

  1. 进程隔离:进程在内存、文件存取和执行过程中相互隔离

  2. 并发控制

  3. 虚拟机:提供更高程度的应用隔离和错误隔离

  4. 检测点和回滚机制

    (1) 检测点是应用程序状态的一个副本

    (2) 回滚是先前存储的检测点重新开始执行

    (3) 该技术可用于从瞬时错误、永久性硬件故障、某些类型的软件异常中恢复

2.6 多处理器和多核操作系统设计考虑因素
2.6.1 对称多处理器操作系统设计考虑因素
  1. SMP系统中,内核可在任一处理器上执行,典型情况为每个处理器分别从可用进程池获取任务并进行自调度。内核可由多个进程或多个线程构造而成,允许各部分并行执行

  2. SMP系统设计关键问题

    (1) 并发进程或线程:内核程序应可重入,以使多个处理器能同时执行同一段内核代码

    (2) 调度:任何一个处理器都可执行调度,增加了执行调度策略、保证调度相关数据结构不被损坏的复杂度

    (3) 同步:多个活跃进程访问共享地址空间或共享I/O自愿地情况

    (4) 内存管理:不同处理器上的分页机制,要实现多处理器共享页或段时的数据一致性,执行页面置换

    (5) 可靠性和容错性:出现处理器故障时,操作系统其他部分应识别出发生故障的处理器

2.6.2 多核操作系统设计考虑因素
  1. 主要挑战:如何有效利用多核计算能力,智能且有效地管理芯片上的资源

  2. 从三个层次开发多核系统潜在的并行能力

    (1) 指令级并行:每个核内部的硬件并行

    (2) 处理器层次上的潜在并行能力:在每个处理器上多道程序或多线程程序的执行能力

    (3) 多核层次:多核上一个应用程序以并发多进程或多线程形式执行的潜在并行能力

  • 常用策略
  1. 应用层并行

    应用程序开发者决定如何将应用分割为多个独立运行的子任务,使其以多线程或多进程形式并行执行

  2. 虚拟机方式

    (1) 为一个进程分配一个或更多的核,让处理器处理进程

    (2) 丢弃内核模式和用户模式的区别,让操作系统成为管理程序,应用程序自己负责资源管理,操作系统负责分配处理器和内存资源

2.7 微软Windows系统简介
2.7.1 背景
  1. MS-DOS —> Windows/MS-DOS —> Windows NT —> Windows 8
  2. Windows NT包含了内核和执行体,以及一系列面向对象的特征
  3. Windows 8从根本上改变了操作系统的内核结构,尤其是线程管理和虚拟内存管理
2.7.2 体系结构
  1. 简介

    (1) Windows操作系统将面向应用的软件(运行在用户模式)和操作系统核心软件(运行在内核模式)分开

    (2) 操作系统核心软件包括在内核模式下运行的执行体、内核、设备驱动器和硬件抽象层

    (3) 内核模式下运行的软件可以访问系统数据和硬件,用户模式下运行的软件则不可访问
    在这里插入图片描述

  2. 操作系统组织结构

    (1) Windows的体系结构是高度模块化

    (2) 每个系统函数由一个操作系统部件管理,操作系统的其余部分和所有应用程序通过相应的部件使用标准接口访问该函数

  3. WIndows内核模式组件

    (1) 执行体(Executive):操作系统核心服务,如内存管理、进程和线程管理、安全、I/O和进程间通信

    (2) 内核(Kernel):控制处理器的执行,包括线程调度、线程切换、异常和中断处理、多处理器同步,内核本身的代码不在线程内执行

    (3) 硬件抽象层(Hardware Abstraction Layer, HAL):在通用的硬件命令和响应与某一特定平台专用的硬件命令和相应之间进行映射,将操作系统从与平台相关的硬件差异中隔离出来

    (4) 设备驱动(Device drivers):用于扩展执行体的动态库,包括硬件设备驱动程序,及实现文件系统、网络协议等系统扩展功能的软件构件

    (5) 窗口和图形系统(Windowing and graphics system):实现GUI函数,如处理窗口、用户界面控制和绘图

  4. Windows执行体模块

    (1) I/O管理器:提供应用程序访问I/O设备的一个框架,负责为进一步的处理分发合适的设备驱动程序

    (2) 高速缓存管理器

    1) 读:使最近访问过的磁盘数据驻留在内存中,以实现快速访问

    2) 写:更新后的数据发送的磁盘前在内存中保留一段时间,延迟磁盘写操作,以提高基于文件的I/O性能

    (3) 对象管理器:创建、管理和删除Windows执行体对象和用于表示诸如进程、线程和同步对象等资源的抽象数据类型

    (4) 即插即用管理器:决定并加载特定设备的驱动

    (5) 电源管理器:调整各种设备间的电源管理

    (6) 安全访问监控程序:强制执行访问确认和审核产生规则

    (7) 虚存管理器:管理虚拟地址、物理地址和磁盘上的页面文件

    (8) 进程/线程管理器:创建、管理和删除进程和线程对象,跟踪进程和线程对象

    (9) 配置管理器:负责执行和管理系统注册表。系统注册表是保存系统和用户参数设置的数据仓库

    (10) 本地过程调用(Local Procedure Call, LPC)机制:针对本地进程,在服务和子系统间进行通信的一套跨进程的高效过程调用机制

  5. 用户模式进程(Windows支持4种基本的用户模式进程)

    (1) 特殊系统进程:管理系统所需的用户模式服务,如会话管理程序、服务管理程序和登陆进程等

    (2) 服务进程:打印机后台管理程序等,服务进程实在Windows系统中后台运行用户模式活动的唯一方法

    (3) 环境子系统:提供不同的操作系统个性化设置(环境)

    (4) 用户应用程序:为充分利用系统功能而为用户提供的可执行程序(EXE)和动态链接库(DLL)

2.7.3 客户-服务器模型
  1. Windows操作系统服务、受保护子系统和应用程序都采用客户-服务器计算模型构建

  2. 简介

    (1) Windows为在用户模式进行中实现某些功能提供了丰富的服务,环境子系统和Windows用户模式服务都以通过RPC与客户端进行通信的进程来实现

    (2) 每个服务器进程都等待客户的一个服务请求(如存储服务、进程创建服务或处理器调度服务)

    (3) 客户可以是应用程序或另一个操作系统模块,它通过发送消息来请求服务

    (4) 过程:消息从执行体发送到适当的服务器,服务器执行所请求的操作,并通过另一条消息返回结果或状态信息,再由执行体发送回客户

  3. 客户-服务器体系结构的优点

    (1) 简化了执行体,可在用户模式服务器中构造各种各样的API

    (2) 提高了可靠性,每个新服务运行在内核之外且有自己的存储空间,免受其他服务的干扰

    (3) 为应用程序与服务间通过RPC调用进行通信提供了一致的方法

    (4) 为分布式计算提供了适当的基础

2.7.4 线程和SMP
  1. Windows的两个重要特征:支持线程和对称多处理(SMP)

    (1) 操作系统例程可在任何可用的处理器上,不同例程可在不同处理器上同时执行

    (2) Windows支持在单个进程中执行多个线程,同一进程中的多个线程可在不同处理器上同时执行

    (3) 服务器进程可以使用多个线程来处理多个用户同时发出的请求

    (4) Windows提供在进程间共享数据和资源的机制及灵活的进程间通信能力

2.7.5 Windows对象
  1. Windows使用的面向对象的重要概念

    (1) 封装:一个对象由称为属性的数据项组成,在数据上可以执行称为服务的过程。访问对象中数据的唯一方法是引用对象的一个服务,使对象中的数据易于保护

    (2) 对象类和实例:一个对象类是一个模板,列出了对象的属性和服务。操作系统可在需要时创建对象的特定实例

    (3) 继承

    1) 执行体可使用继承来添加新的特性,以扩展对象类

    2) 每个执行体类都基于一个基类

    (4) 多态性:Windows内部使用通用API函数集操作任何类型的对象,但部分API是特定对象类型所特有的

  2. 在用户模式下访问数据时,都要使用对象,对象表示的实体有文件、进程、线程、信号、计时器和窗口

  3. 执行体中的对象称为内核对象(与用户级对象区分),只能被内核访问

    (1) 应用程序不能直接操作内核对象,而是通过一组执行体支持的对象操作函数来间接操作对象的

    (2) 创建对象后,请求这一创建的应用程序会得到该对象的句柄,句柄实际上是指向被引用对象的指针

  4. Windows中的对象可以有名称或无名称

    (1) 无名称:进程创建无名对象后,对象管理程序程序返回该对象的句柄

    (2) 有名称:其他进程可以用该名称获得这个对象的句柄

    (3) 进程只希望在其内部使用对象时,一般创建无名对象。若希望两个进程同步,则可创建有名对象,并把名称传递给另一进程

  5. Windows同步使用处理器时所用的两类对象

    (1) 分派器对象:执行体对象的子集,线程可以在该类对象上等待,以控制基于线程的系统操作的分发与同步

    (2) 控制对象:内核组件用来管理不受普通线程调度控制的处理器操作在这里插入图片描述

2.8 传统的UNIX系统
2.8.1 历史
  1. UNIX由贝尔实验室开发,运行在PDP-7上

  2. 第一个里程碑式的成果:把UNIX系统从PDP-7移植到了PDP-11上,预示着UNIX可成为所有计算机上的操作系统

  3. 第二个里程碑式的成果:用C语言重写了UNIX

  4. 此前认为操作系统必须完全用汇编语言编写,因为

    (1) 内存容量小且价格贵,必须高效使用内存

    (2) 业界对编译器生成代码的质量有顾虑

    (3) 处理器和总线速度相对较慢,应节省时钟周期

2.8.2 描述
  1. UNIX体系结构
    在这里插入图片描述
    (1) 底层硬件

    (2) 操作系统通常称为系统内核,简称内核

    (3) 用户服务和接口,包括命令解释器、其他接口软件和C编译器部分(编译器、汇编器、加载器)

    (4) 用户应用程序和到C编译器的用户接口

  2. 内核

    (1) 用户程序可以直接调用操作系统服务,也可通过库程序调用操作系统服务

    (2) 系统调用接口是内核和用户的边界;操作系统通过原子例程直接与硬件交互

    (3) 在这两个接口之间,系统主要划分为两部分,一个关心进程控制,一个关心文件管理和I/O

  3. 传统UNIX系统总结S

    (1) 设计在单一处理器上运行

    (2) 内核不通用,只支持一种文件系统、进程调度策略和可执行文件格式

    (3) 内核不可扩展,不是模块化的,不能重用代码

2.9 现代UNIX系统
  1. 现代UNIX系统具有现代操作系统特征和模块化结构
    在这里插入图片描述

    中心为一个以模块化编写的小核心软件,外部为多种功能及接口

  • 现代UNIX系统实例
  1. System V Release4 (SVR4)

  2. BSD (Berkeley Software Distribution)

  3. Solaris 10

2.10 Linux操作系统
2.10.1 历史
  1. 最初由Linus Torvalds编写,后由多个开发者联合开发
  2. Linux特点:高度模块化且易于配置、跨平台、开源
2.10.2 模块结构
  1. 大多UNIX系统使用单体内核,而非微内核结构

  2. Linux结构

    (1) 未使用微内核的方法,但采用了多模块结构

    (2) 模块可由命令自动加载和卸载,称为可加载模块(loadable module)

    (3) 模块本质上是内核在运行时可以链接或断开链接的对象文件

  3. Linux可加载模块的两个重要特征

    (1) 动态链接:当内核在内存中运行时,内核模块可被加载和链接到内核,也可断开链接并移出内存

    (2) 可堆叠模块:模块按层次结构排列。被高层客户模块访问时作为库,被低层模块访问时作为客户

    (3) 动态链接的优点:简化了配置任务,节省了内核所占的内存空间

    (4) 可堆叠模块的优点

    1. 多个模块的相同代码移入单个模块,降低了重复性

    2. 内核可确保所需模块的存在,避免卸载其他运行模块所依赖的模块,并在加载新模块时加载其依赖模块

  4. 模块

    (1) 每个模块由模块表符号表共同定义

    (2) 符号表列出了在此模块定义并在其他地方用到的符号

    (3) 模块表包含元素:

    1) *next:指向下一个模块的指针

    2) *name:只想模块名的指针

    3) size:模块大小,以内存页计

    4) usecount:模块使用计数器

    5) flags:模块标志

    6) nsyms:输出的符号数

    7) ndeps:引用的模块数

    8) *syms:指向模块的符号表的指针

    9) *deps:指向被模块引用的模块清单的指针

    10) *refs:指向使用此模块的模块清单的指针
    在这里插入图片描述

2.10.3 内核组件在这里插入图片描述
  1. 信号(Signals):内核使用信号向进程提供信息
  2. 系统调用(System calls):进程通过系统调用来请求系统服务。系统调用大致分为6类:文件系统、进程、调度、进程间通信、套接字和其他
  3. 进程和调度器(Processes and Scheduler):创建、管理、调度进程
  4. 虚存(Virtual memory):为进程分配和管理虚存
  5. 文件系统(File System):为文件、目录等提供全局的分层命名空间
  6. 网络协议(Network Protocols):为用户的TCP/IP协议套件提供套接字接口
  7. 字符设备驱动(Character device drivers):管理向内核一次发送/接收1字节数据的设备,如终端、调制解调器和打印机
  8. 块设备驱动(Block device drivers):管理以块为单位向内核发送/接收数据的设备,如外存(磁盘)
  9. 网络设备驱动(Network device drivers):管理网卡和通信端口
  10. 陷阱和错误(Traps and faults):处理CPU产生的陷阱和错误
  11. 物理内存(Physical memory):管理实际内存中的内存页池
  12. 中断(Interrupts):处理来自外设的中断
2.11 Android

​ Android操作系统:为触屏移动设备设计的基于Linux的操作系统

2.11.1 Android 软件体系结构在这里插入图片描述
  1. Android是一个包含操作系统内核、中间件和关键应用的软件栈

  2. 应用:应用层由与用户直接进行交互的所有应用组成,包括一套通用的应用程序,如电子邮件客户端、短信系统、日历、地图、浏览器、联系人等

  3. 应用框架:应用框架层提供高级构建块,为程序员开发程序提供标准化的访问接口

    关键的应用框架组件包括:活动管理器、窗口管理器、包管理器、电话管理器、内容接口、资源管理器、师徒系统、位置管理器、通知管理器、XMPP

  4. 系统库:应用框架下面的一层由两部分组成:系统库和运行库。系统库组件是用C或C++编写的实用系统函数集,可被Android系统各个组件使用

    关键系统库包括:界面管理器、OpenGL、媒体框架、SQL数据库、浏览器引擎、仿生LibC

  5. Android Runtime:每个Android应用都通过自己的Dvalvik虚拟机实例,以自己的进程运行

  6. Linux内核:Android系统内核与Linux内核非常相似

2.11.2 Android系统体系结构在这里插入图片描述
  1. 应用和框架:包括应用及其访问低层服务的API
  2. Binder IPC:Binder进程间通信机制,允许高层框架API与Android的系统服务交互
  3. Android系统服务:分为媒体服务(处理播放和录制媒体文件)、系统服务(处理应用所需的系统功能)
  4. 硬件抽象层(HAL):HAL提供调用核心层设备驱动的标准接口
  5. Linux内核
2.11.3 活动

​ 活动是单个可视用户界面组件,包括菜单选项、图标和复选框等

2.11.4 电源管理
  1. Android在Linux内核中增加了两个提升电源管理能力的新功能:报警和唤醒锁

  2. 报警功能:通过运行库中的报警管理器请求服务,让应用在系统休眠时也能触发警告提醒

  3. 唤醒锁:阻止Android系统进入休眠模式

复习题
  1. 操作系统设计的三个目标是什么?

    方便、有效、易扩展性

  2. 什么是操作系统的内核

  3. 什么是多道程序设计

    处理器通过在多个进程切换的方式,达到同时处理多个程序的目的

  4. 什么是进程

    可执行的程序,程序执行所需的数据,及执行上下文共同组成了一个进程

  5. 操作系统是怎样使用进程上下文的

    (1) 内存中的进程表,存放着指向程序所在存储器区域地址的指针,以及执行上下文

    (2) 进程执行时,程序计数器存放指向下一条将要执行指令的地址,进程索引寄存器存放当前执行进程在进程表中的索引,基址寄存器存放当前执行进程在存储器中的起始地址,界限寄存器存放当前进程站用的存储器大小

  6. 列出并简要介绍操作系统的5种典型存储管理职责

    (1) 进程隔离

    (2) 自动分配和管理

    (3) 程序模块化设计

    (4) 访问控制和包含

    (5) 长期存储

  7. 实地址和虚地址的区别是什么

    虚存机制允许处理器利用虚地址访问,其为一种逻辑地址,同一进程的虚地址是连续的;实地址是进程在内存中的物理地址,进程以页的形式存储在内存中,同一进程的实地址不一定连续

  8. 描述时间片轮转调度技术

    (1) 操作系统维护多个队列,短程队列、长程队列与I/O设备一一对应的I/O队列,短程队列为随时准备执行的进程

    (2) 采用时间片轮转调度技术,处理器在短程队列的进程中不断切换执行。其中一种策略是,队列中的每个进程平均分配执行时间;另一种策略是,给不同的进程分配优先级,优先级高的进程分配得到的时间更多

  9. 解释单体内核和微内核的区别

    (1) 单体内核:操作系统的多数服务由一个大内核提供

    (2) 微内核:操作系统只将必要的服务放在内核中,各个应用程序各自负责资源管理,操作系统仅负责完成资源的调度分配

  10. 什么是多线程

    将一个进程划分为多个线程,每个线程为相对独立的子任务,在多核系统中,多个线程可以并发执行,从而提高性能

  11. 列出对称多处理操作系统设计时要考虑的关键问题

    (1) 并行进程/线程

    (2) 调度

    (3) 同步

    (4) 内存管理

    (5) 可靠性和容错性

发布了27 篇原创文章 · 获赞 0 · 访问量 392

猜你喜欢

转载自blog.csdn.net/young_cr7/article/details/104890806