0%

操作系统原理-操作系统概述

阅读更多

1 操作系统做了什么

我们以一个简单的hello world程序为例,简单阐述一下运行该程序时,操作系统做了哪些事情

1
2
3
4
5
6
#include <stdio.h>

int main(int argc, char * argv[]) {
puts("hello world");
return 0;
}

运行该程序的步骤如下

  1. 用户告诉操作系统执行helloworld程序(如何告知?
  2. 操作系统:找到helloworld程序的相关信息,检查其类型是否是可执行文件;并通过程序首部信息,确定代码和数据在可执行文件中的位置并计算出对应的磁盘块地址(文件格式?
  3. 操作系统:创建一个新的进程,并将helloworld可执行文件映射到该进程结构,表示由该进程执行helloworld程序
  4. 操作系统:为helloworld程序设置CPU上下文环境,并跳到程序开始处(假设调度程序选中hello程序
  5. 执行helloworld程序的第一条指令,发生缺页异常
  6. 操作系统:分配一页物理内存,并将代码从磁盘读入内存,然后继续执行helloworld程序
  7. helloworld程序执行puts函数(系统调用),在显示器上写一字符串
  8. 操作系统:找到要将字符串送往的显示设备,通常设备是由一个进程控制的,所以,操作系统将要写的字符串送给该进程
  9. 操作系统:控制设备的进程告诉设备的窗口系统它要显示字符串,窗口系统确定这是一个合法的操作,然后将字符串转换成像素,将像素写入设备的存储映像区
  10. 视频硬件将像素转换成显示器可接收的一组控制/数据信号
  11. 显示器解释信号,激发液晶屏
  12. OK!!!我们在屏幕上看到了“hello world”

从用户进程角度看程序的执行过程,如下图

fig1

从操作系统角度看程序的执行过程,如下图

fig2

2 操作系统的定义与作用

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

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

操作系统的三个作用

  1. 资源的管理者 → 有效
  2. 向用户提供各种服务 → 方便使用
  3. 对硬件机器的扩展 → 扩展能力

2.1 资源的管理者

操作系统是资源的管理者

  1. 硬件资源:CPU、内存、设备(I/O设备、磁盘、时钟、网络卡等)
  2. 软件资源:磁盘上的文件、各类管理信息等

管理资源,要考虑以下几个方面

  1. 跟踪记录资源的使用状况。如:哪些资源空闲,分配给谁使用,允许使用多长时间等
  2. 确定资源分配策略——算法
    • 静态分配策略
    • 动态分配策略
  3. 实施资源的分配和回收
  4. 提高资源利用率
  5. 保护资源的使用
  6. 协调多个进程对资源请求的冲突

操作系统五大基本功能

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

2.2 向用户提供各种服务

OS是各种系统服务的提供者。在操作系统之上,从用户角度来看:操作系统为用户提供了一组功能强大、方便易用的命令系统调用,包括

  • 进程的创建、执行
  • 文件和目录的操作
  • I/O设备的使用
  • 各类统计信息

2.3 对硬件机器的扩展

操作系统在应用程序与硬件之间建立了一个等价的扩展机器(虚拟机)。对硬件抽象,提高可移植性;比底层硬件更容易编程

3 操作系统的主要特征

操作系统的主要特征有以下四个

  1. 并发
  2. 共享
  3. 虚拟
  4. 随机

3.1 并发

两个容易混淆的名词

  • 并发(concurrency):指处理多个同时性活动的能力
  • 并行(parallel):与并发相似,但多指不同程序同时在多个硬件部件上执行

并发将会引发很多的问题

  1. 活动切换、保护、相互依赖的活动间的同步
  2. 在计算机系统中同时存在多个程序运行,单CPU上
  3. 宏观上:这些程序同时在执行
  4. 微观上:任何时刻只有一个程序真正在执行,即这些程序在CPU上是轮流执行的

3.2 共享

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

  • 操作系统要对系统资源进行合理分配和使用
  • 资源在一个时间段内交替被多个进程所用

共享可细分为两种

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

问题:资源分配难以达到最优化,如何保护资源

3.3 虚拟

虚拟(Virtual):

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

可细分为

  • CPU--每个进程的"虚处理机"
  • 存储器--每个进程都有独立的虚拟地址空间(代码+数据+堆栈)
  • 显示设备--多窗口或虚拟终端

3.4 随机

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

  1. 进程的运行速度不可预知:多个进程并发执行,“走走停停”,无法预知每个进程的运行推进的快慢
  2. 难以重现系统在某个时刻的状态(包括重现运行中的错误)

4 典型操作系统的架构

4.1 Windows

fig3

fig4

4.2 Unix

fig5

4.3 Linux

fig6

4.4 Android

fig7

5 操作系统的分类

操作系统发展是随着计算机硬件技术、应用需求的发展、软件新技术的出现而发展的。其目标是

  • 充分利用硬件
  • 提供更好的服务

传统操作系统的分类

  1. 批处理操作系统
  2. 分时系统
  3. 实时操作系统
  4. 个人计算机操作系统
  5. 网络操作系统
  6. 分布式操作系统
  7. 嵌入式操作系统

5.1 批处理操作系统

工作方式

  1. 用户将作业交给系统操作员
  2. 系统操作员将许多用户的作业组成一批作业,输入到计算机系统中,在系统中形成一个自动转接的连续的作业流
  3. 启动操作系统
  4. 系统自动、依次执行每个作业
  5. 由操作员将作业结果交给用户

追求目标

  1. 提高资源利用率,增加作业处理吞吐量

批处理系统中的作业包括:

  1. 用户程序
  2. 数据
  3. 作业说明书(用作业控制语言编写)

成批:通常由若干个作业组成,用户提交作业后只能等待处理结果,不能干预自己作业的执行

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

问题:慢速的输入输出处理直接由主机来完成,输入输出时,CPU处于等待状态

5.2 SPOOLING系统(技术)

SPOOLING技术的核心思想是:利用磁盘作缓冲,将输入、计算、输出分别组织成独立的任务流,使I/O和计算真正并行

SPOOLING系统工作原理

  • 用户作业加载到磁盘上的输入井
  • 按某种调度策略选择几个搭配得当的作业,调入内存
  • 作业运行的结果输出到磁盘上的输出井
  • 运行结果从磁盘上的输出井送到打印机

fig8

现代计算机系统的打印过程通常采用的是SPOOLing技术,如下图所示

fig9

5.3 分时操作系统(TIME-SHARING SYSTEM)

分时操作系统中最重要的概念就是时间片:操作系统将CPU的时间划分成若干个片段,称为时间片

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

分时操作系统追求的目标是:及时响应,依据的是响应时间

  • 响应时间:从终端发出命令到系统给予回答所经历的时间

5.4 通用操作系统

通用操作系统是分时系统与批处理系统的结合

原则:分时优先,批处理在后

  • 前台:需要频繁交互的作业
  • 后台:时间性要求不强的作业

5.5 实时操作系统

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

可细分为两类

  1. 第一类:实时过程控制
    • 工业控制、航空、军事控制…
  2. 第二类:实时通信(信息)处理
    • 电讯(自动交换机)、银行、飞机订票、股市行情…

实时操作系统追求的目标有

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

5.6 个人计算机操作系统

个人计算机在某一时间内为单用户服务

个人计算机追求的目标:

  1. 界面友好,使用方便
  2. 丰富的应用软件

5.7 网络操作系统

网络操作系统基于计算机网络

  • 在各种计算机操作系统上
  • 按网络体系结构协议标准开发的软件

网络操作系统的功能:网络管理,通信,安全,资源共享和各种网络应用

网络操作系统追求目标:相互通信,资源共享

5.8 分布式操作系统

分布式系统:或以计算机网络为基础,或以多处理机为基础,基本特征是处理分布在不同计算机上

分布式操作系统:是一个统一的操作系统,允许若干个计算机可相互协作共同完成一项任务。操作系统可将各种系统任务在分布式系统中任何处理机上运行,自动实现全系统范围内的任务分配、自动调度、均衡各处理机的工作负载

分布式操作系统处理能力增强、速度更快、可靠性增强、具有透明性

5.9 嵌入式操作系统

嵌入式系统

  • 在各种设备、装置或系统中,完成特定功能的软硬件系统。例如汽车、手机、电视机、MP3播放器
  • 它们是一个大设备、装置或系统中的一部分,这个大设备、装置或系统可以不是“计算机”
  • 通常工作在反应式或对处理时间有较严格要求环境中

嵌入式操作系统(Embedded Operating System)

  • 运行在嵌入式系统环境中,对整个嵌入式系统以及它所操作、控制的各种部件装置等等资源进行统一协调、调度、指挥和控制的系统软件

6 参考

  • 《MOOC-操作系统原理-陈向群》