Operating System



1&2 Introduction & Operating System Structures

Definition

Operating system: a program that acts an intermediary between a user of a computer and the computer hardware.

OS is a resource allocator: manages all resources, decides between confilicting requests for efficient and fair resource use

OS is a control program: controls execution of programs to prevent errors and improper use of the computer

Operating System Goals

Components of a Computer System

Interrupt Handling

Storage Structure

Storage Hierarchy

Caching

Operating System Structure

Multiprogramming (多道程序)

Timesharing (Multitasking, 多任务)

Dual Mode

Operating System Components

3 Process

Process Concept

Process (进程): A program in execution

Process Structure

Program vs. Process

Program is passive entity, process is active

One program can be several process

Process Life Cycle

Process Control Block (PCB)

Process Scheduling

Figure: Ready Queue and Various I/O Device Queues

Figure: Representation of Process Scheduling

Long-term Scheduler vs. Short-term Scheduler

InterProcess Communication (IPC)

5 CPU 调度

Scheduling Criteria

先来先服务(First-Come, First-Served, FCFS)

缺点:周转时间与响应时间无法保证;对短作业不利

最短作业优先(Shortest Job First, SJF)

分配 CPU 给下个 CPU 区间最短的进程

SJF 能最小化平均等待时间

问题:需要事先知道,或至少需要估计每个进程所需要的处理时间;长作业可能长期得不到运行而“饿死”

剩余时间最短者优先(Shortest-Remaining-Time-First, SRTF)
抢占,总是选择预期剩余时间最短的进程

从周转时间看,SRT比SJF有更好的性能

优先级调度(Priority Scheduling)

轮转法(Round Robin)

CPU 时间划分为时间片,进程轮流执行

时间片长度的选择

多级队列(Multilevel Queue)

多级反馈队列(Multillevel Feedback Queue):

多处理器调度

6 进程同步

临界区三大要求

互斥问题的软件解法

两个进程

flag[i] = true;
turn = j;
while (flag[j] && turn == j)
  ;
// 临界区
flag[i] = false;

多个进程:面包店算法

choosing[i] = 1;
number[i] = max(number[0], ...,number[n-1]) + 1;
choosing[i]=0;

for(j=0; j < n; j++){
  while(choosing[j])
    ;
  while((number[j]!=0) && (number[j] < number[i] || (number[j] == number[i] && j < i)))
    ;
}
// 临界区
number[i]=0;

互斥问题的硬件解法

互斥锁

TestAndSet 指令

boolean TestAndSet(boolean *target) {
	boolean rv = *target;
	*target = true;
	return rv;
}

使用 TestAndSet 指令的互斥实现

waiting[i] = true;
key = true;
while (waiting[i] && true) {
  key = TestAndLock(lock);
}
waiting[j] = false;
// 临界区
j = (i+1) % n;
while (j != i && !waiting[j]) {
  j = (j+1) % n;
}
if (j == i) {
  lock = false;
}
else {
  waiting[j] = false;
}

信号量

生产者消费者问题

缓冲区大小 n;生产者 m;消费者 k

生产者:

empty = n;
full = 0;
i = 0;
while (true) {
  // 生产产品
  P(empty);
  P(mutex1);
  // 往 buffer[i] 放产品
  i = (i + 1) % n;
  V(mutex1);
  V(full);
}

消费者:

empty = n;
full = 0;
j = 0;
while (true) {
  P(full);
  P(mutex2);
  // 从 buffer[j] 取产品
  j = (j + 1) % n;
  V(mutex2);
  V(empty);
}

7 死锁(Deadlock)

死锁的四个必要条件

资源分配图(Resource-Allocation Graph )

进程结点

资源结点

请求边

分配边

Methods for Handling Deadlocks

Ignore the problem and pretend that deadlocks never occur in the system; used by most operating systems, including UNIX.(好多系统不采取任何措施)

死锁预防

死锁避免

避免系统进入可能产生死锁的不安全状态

系统安全指存在一个执行序列,所有进程都能完成

单资源实例:资源分配图

多资源实例:银行家算法

数据结构
资源请求算法
  1. 如果 request > need,出错
  2. 如果 request > available,等待
  3. 预分配资源
    1. available -= request
    2. allocation += request
    3. need -= request
  4. 如果 safe,分配资源;否则等待,并恢复原状
安全检测算法
  1. work = available
    finish[1,2,...,n] = false
  2. 找到满足下面两个条件的 i,如果不存在满足条件的 i,到步骤 4
    1. finish[i] = false
    2. need[i] < work
  3. work += allocation[i]
    finish[i] = true
    到步骤 2
  4. 如果对所有的 i,finish[i] == true,则系统安全,否则不安全
不足

死锁检测

单资源实例:进程等待图

多资源实例

  1. work = available
    for i=1,2,...,n, finish[i] = (false if allocation[i] != 0; true otherwise)
  2. 找到满足下面两个条件的 i,如果不存在满足条件的 i,到步骤 4
    1. finish[i] = false
    2. request[i] < work
  3. work += allocation[i]
    finish[i] = true
    到步骤 2
  4. finish[j] = false <=> 进程 j 死锁

死锁恢复

8 内存管理

内存管理基本概念

地址绑定

将各种类型的地址形式最终对应到物理内存中的绝对地址

地址绑定时机

地址重定位

内存分配

9 虚拟内存

页错误(Page Fault)

访问无效页时,产生 Page Fault,陷入 OS:

  1. 检查内部页表:
  1. 找到一个空闲帧
  1. 换入页到该帧中
  2. 修改表
  3. 修改 validation 位
  4. 重新开始因陷阱而中断的指令

页置换算法

FIFO

可能发生 Belady 现象,即分配的页面数增多,缺页次数反而增加

Optimal (OPT) Algorithm

当需要淘汰某一页时,算法选择在访问串中将来再也不出现的或者是在离当前最远的位置上出现的页

Least Recently Used (LRU) Algorithm

选择离当前时间最近的一段时间内最久没有使用过的页先淘汰。

10 文件系统接口

目录结构

单层结构

双层结构

树状结构

无环图结构

11 文件系统实现

文件系统分层结构

自下而上:

虚拟文件系统

空间分配方法

连续空间分配

缺点:

链式分配

缺点:不支持随机访问

索引分配

缺点:

空闲块管理方法

空闲空间表

空闲块链

位示图法

12 大容量存储器的结构

磁盘调度

FCFS

SSTF

SCAN 电梯算法

C-SCAN

LOOK/C-LOOK

旋转优化

为了减少旋转延迟,对同一磁道上的连续读写信息进行合理分布称为旋转优化。

13 I/O 输入系统

数据传送控制方式

程序直接控制方式

一种循环 I/O 测试方式,通过执行 I/O 测试指令测试设备忙/闲标志以确定是否进行数据传输。高速 CPU 和慢速 I/O 设备矛盾突出,CPU 浪费严重,一般出现在早期计算机或者现在微机系统中。

中断控制方式

当 I/O 操作正常或异常结束时中断 CPU,从而实现了 I/O 设备和 CPU 间一定程度的并行操作,改善了 CPU 的利用率,适用于字符设备的 I/O。

DMA 方式

在外围设备和内存之间开辟直接的数据交换通道进行数据传输,适用于块设备的 I/O。

通道方式

使用通道来控制内存或 CPU 和外围设备之间的数据传输。大大提高了 CPU 和外设之间的并行能力,可把种类繁多,物理特性各异的外设以标准的接口方式连接到系统中。

缓冲技术

缓冲技术是利用空间来换取时间

© 2019 倪可塑 保留所有权利。