操作系统

目录

操作系统概述

操作系统运行环境与运行机制

进程/线程模型

第四章 处理器调度(CPU调度)

第五章 同步互斥执行

第六章  同步互斥机制2-进程通信机制

管程

进程间通信

典型操作系统的IPC机制

第7章 存储模型

基本概念

物理内存管理

伙伴系统

基本内存管理方案1

基本内存管理方案2

交换技术

第8章 虚拟存储技术

虚拟存储技术

页表及页表项的设计

地址转换过程及TLB引入

软件相关策略

页面置换算法

其它相关技术

第12章 死锁

死锁的基本概念

资源分配图

死锁预防

死锁避免

死锁检测与解除

哲学家就餐问题


操作系统概述

五大基本功能:

  1. 进程/线程管理
  2. 存储管理
  3. 文件管理
  4. 设备管理
  5. 用户接口

操作系统的三个作用:

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

操作系统的特征:

  1. 并发:指处理多个同时性的活动
  2. 共享:操作系统与多个用户的程序共同使用计算机系统中的资源
  3. 虚拟:一个物理实体映射为若干个对应的逻辑实体-分时或分空间,可提高资源的利用率
  4. 随机:操作系统必须随时对以不可预测的次序发生的事件进行响应并处理

操作系统运行环境与运行机制

操作系统运行环境:CPU状态;中断/异常机制

操作系统的运行机制:系统调用

CPU状态

处理器由运算器、控制器、一系列的寄存器及高速缓存构成。

操作系统_第1张图片

操作系统_第2张图片

操作系统CPU的两种状态:

内核态:运行操作系统程序(特权指令)

用户态:运行用户程序(非特权指令)

特权指令:启动IO、内存清零、修改程序状态字(切换用户态内核态)、设置时钟、允许/禁止中断、停机

非特权指令:控制转移、算术运算、访管指令、取数指令

用户态->内核态   :中断/异常/陷入机制

内核态->用户态   :设置程序状态字

一条特殊的指令:陷入指令(又称访管指令):提供给用户程序的接口,用于调用操作系统的功能(服务)。例如:int,trap,syscall,sysenter/sysexit

中断/异常机制

CPU对系统发生的某个事件作出的一种反应,操作系统是由“中断驱动”或者“事件驱动”。

操作系统_第3张图片

 事件:

操作系统_第4张图片

中断:外部事件,正在运行的程序所不期望的

异常:由正在执行的指令引发

操作系统_第5张图片

 中断/异常机制的工作原理

操作系统_第6张图片

系统调用

用户在编程时可以调用的操作系统功能。系统调用是操作系统提供给编程人员的唯一接口,使CPU从用户态陷入内核态

每个操作系统都提供几百种系统调用:进程控制、进程通信、文件使用、目录操作、设备管理、信息维护)

系统调用/库函数/API函数/内核函数

操作系统_第7张图片

操作系统_第8张图片

操作系统_第9张图片

进程/线程模型

进程

进程是具有独立功能的程序关于某个数据集合上的一次运行活动,是系统进行资源分配和调度的独立单位。

  • 程序的一次执行过程
  • 是正在运行程序的抽象
  • 将一个CPU变换成多个虚拟CPU
  • 系统资源以进程为单位分配,如内存、文件。。。每个具有独立的地址空间
  • 操作系统将CPU调度给需要的进程

进程控制块PCB:操作系统用于管理控制进程的一个专门数据结构,记录进程的各种属性,描述进程的动态变化过程。PCB是系统感知进程存在的唯一标识。进程与PCB一一对应。

进程表:所有进程的PCB集合。

进程的三种基本状态

运行态:占有CPU,并在CPU上运行

就绪态:已经具备运行条件,但由于没有空闲CPU,而暂时不能运行

等待态:因等待某一事件而暂时不能运行(如:等待读盘结束)(阻塞态,封锁太,睡眠态)

就绪-》运行:调度程序选择一个新的程序运行(被选中获得时间片)

运行-》就绪:运行程序用完时间片;一个高优先级进程进入就绪态,抢占正在运行的进程

运行-》等待:当进程等待某个事件(请求os服务,等待IO,等待另一进程提供信息,对资源的访问尚不能进行)

等待-》就绪:所等待的事件发生了。

其它状态:

创建态:已完成创建一进程所必要的工作(PID,PCB),但尚未同一执行该进程(因为资源有限)

终止态:终止执行后,进程进入改状态;可完成一些数据统计工作;资源回收

挂起:用于调节负载;进程不占内存空间,其进程映像交换到磁盘上。

操作系统_第10张图片

进程队列:

操作系统_第11张图片

操作系统_第12张图片

进程控制:进程控制操作完成各进程状态之间的转换,由具有特定功能的原语完成。(原语:原子操作)

  1. 进程创建
  2. 进程的撤销
  3. 进程阻塞

UNIX的几个进程控制操作:(系统调用的形式呈现给用户程序,由用户程序来进行调用)

  1. fork():通过复制调用进程来建立新的进程,是最基本的进程建立过程
  2. exec():用一段新的程序代码覆盖原来的地址空间,实现进程执行代码的转换
  3. wait():提供初级进程同步操作,能使一个进程等待另外一个进程的结束
  4. exit():用来终止一个进程的运行

操作系统_第13张图片linux,不再复制到子进程,而是将子进程的指针指向父进程,需要修改的时候分配资源,写时复制。

深入探讨进程:

进程的分类:1)系统进程|用户进程;2)前台进程|后台进程;3)CPU密集型进程|I/O密集型进程

操作系统_第14张图片

线程

操作系统_第15张图片

进程的两个基本属性:资源的拥有者,CPU调度单位

线程:进程种的一个运行实体,是CPU的调度单位,有时将线程称为轻量级进程。

线程属性:1):有标识符ID;2)有状态及状态转换-》需要提供一些操作;3)不运行时需要保存的上下文。有上下文环境:程序计数器等寄存器;4)有自己的栈和栈指针;5)共享所在进程的地址空间和其它资源;6)可以创建、撤销另一个线程

线程的实现:1)用户级线程;2)核心级线程;3)混合-两者结合方法

第四章 处理器调度(CPU调度)

CPU调度:其任务是控制、协调进程对CPU的竞争。即按一定的调度算法从就绪队列种选择一个进程,把CPU的使用权交给被选中的进程。如果没有就绪进程,CPI会安排一个系统空闲进程或idle进程。 

CPU调度要解决的三个问题:

  1. 调度算法
  2. 调度时机
  3. 调度过程

CPU调度时机

  1. 进程正常终止 或 由某种错误而终止
  2. 新进程创建 或 一个等待进程变成就绪
  3. 当一个进程从运行态进入等待态
  4. 当一个进程从运行态变为就绪态

内核对中断/异常/系统调用处理后返回到用户态时

调度过程

进程调度程序从就绪队列选择了要运行的程序:这个程序可能是刚刚被暂停执行的进程,也可能是另一个新的进程。(如果是新进程,要发生进程切换)

进程切换:是指一个进程让出处理器,由另一个进程占用处理器的过程

操作系统_第16张图片

上下文切换开销:

  1. 直接开销:内核完成上下文切换所用的CPU时间(保存和恢复寄存器;切换地址空间(相关指令比较昂贵))
  2. 间接开销:高速缓存、缓冲区缓存和TLB失效

CPU调度算法

调度算法衡量指标:

  1. 吞吐量:每单位时间完成的进程数目
  2. 周转时间:每个进程从提出请求到运行完成的时间
  3. 响应时间:从提出强求到第一次回应的时间
  4. CPU利用率:CPU有效工作的时间
  5. 等待时间:每个进程在就绪队列种等待的时间

几个要点:

  1. PCB需要记录哪些与CPU调度相关的信息
  2. 进程优先级及就绪队列的组织
  3. I/O密集型与CPU密集型进程
  4. 时间片

批处理系统追求:吞吐量;周转时间;CPU利用率;公平;平衡

先来先服务(FCFS):按照进程就绪的先后顺序使用CPU

最短作业优先(SJF):具有最短完成时间的进程优先执行

最短剩余时间优先(SRTN):SJF抢占式版本,当一个新就绪的进程比当前进程具有更短的完成时间时,系统抢占当前进程,选择就绪的进程执行。

最高响应比优先(HRRN):调度时,首先计算每个进程的响应比R,之后总是选择R最高的进程执行。

操作系统_第17张图片

交互式系统:追求响应时间;公平;平衡

轮转调度(Round Robin):时间片轮转的调度算法。

目标:为短任务改善平均响应时间。

解决问题的思路:周期性切换;每个进程分配一个时间片;时钟中断(轮换)

如何选择合适的时间片:太长-大于典型的交互时间(降低为先来先服务算法;延长某些进程的响应时间);太短-小于典型的交互时间(进程切换浪费CPU时间)。典型10ms-100ms之间。

优点:有利于交互式计算,响应时间块

缺点:由于进程切换,时间片轮转算法要花费较高的开销

对大小不同的进程有利

虚拟轮转法:IO型从等待进入就绪进入辅助队列,优先从辅助队列种选进程

最高优先级调度(HPF):选择优先级最高的进程投入运行

系统进程优先级高于用户进程

前台进程优先级高于后台进程

操作系统更偏好IO型进程

优先级可以是静态不变的,也可以动态调整。

就绪队列按照优先级来组织

优先级低产生饥饿现象

多级反馈队列(MFQ):

设置多个就绪队列,第一级队列优先级最高

给不同就绪队列中的进程分配长度不同的时间片,第一级就绪队列时间片最小;随着队列优先级别的降低,时间片增大

当第一级队列为空时,在第二级队列调度,以此类推

各级队列按照时间片轮转方式进行调度。

当一个新创建进程就绪后,放入第一级队列

进程用完时间片而放弃CPU,进入下一级就绪队列

由于阻塞而放弃CPU的进程进入响应的等待队列,一旦等待的时间发生,该进程回到原来一级就绪队列。

若允许抢占:高优先级抢占,原来的回到就绪队列队尾。

最短进程优先(SPN):和最短作业优先差不多

操作系统_第18张图片

多处理器调度算法需要考虑的问题

  1. 决定选择哪一个进程执行,还要决定进程在哪一个CPU上执行
  2. 要考虑进程在多个CPU之间迁移时的效率(高速缓存失效、TLB失效;尽可能使进程总是在同一个CPU上执行)
  3. 考虑负载均衡问题

典型操作系统的调度算法

操作系统_第19张图片

Linux抢占式调度

CFS完全公平调度算法

Windows基于优先级的抢占式多任务调度

调度单位是线程。

采用基于动态优先级、抢占式调度、结合时间配额的调整

操作系统_第20张图片

 第五章 同步互斥执行

 进程互斥

临界资源:系统中某些资源一次只允许一个进程使用,称这样的资源为临界资源或互斥资源或共享变量。

临界区:各个进程对某个临界资源实施操作的程序片段

实现进程互斥的方案

软件方案:Dekker解法、Peterson解法

硬件方案:屏蔽中断、TSL(SCHG)指令

软件方案1

操作系统_第21张图片加锁解锁设计成原语

软件方案2

操作系统_第22张图片

软件解法3

操作系统_第23张图片

Dekker算法

在3基础上引入turn变量

Peterson算法

操作系统_第24张图片

硬件方案1-中断屏蔽方法

操作系统_第25张图片

硬件方案2-TSL(SCHG)指令(测试并加锁)

TSL指令:TEST AND SET LOCK

操作系统_第26张图片

硬件方案3-交换指令

XCHG指令:EXCHANGE

操作系统_第27张图片

进程同步

指系统中多个进程中发生的事件存在某种时序关系,需要相互合作,共同完成一项任务。

具体地说,一个进程运行到某一点时,要求另一伙伴进程为它提供信息,在未获得消息之前,该进程进入阻塞状态,获得消息后被唤醒进入就绪状态。

一种经典的进程同步机制-信号量及P、V操作

操作系统_第28张图片

操作系统_第29张图片

操作系统_第30张图片

操作系统_第31张图片

第六章  同步互斥机制2-进程通信机制

管程

操作系统_第32张图片

进程与管程:进程只能通过调用管程中的过程来间接的访问管程中的数据结构

作为一种同步机制,管程要解决两个问题

操作系统_第33张图片

HOARE管程

操作系统_第34张图片

MESA管程

PTHREAD(线程库)中的同步机制

进程间通信

信号量和管程的不足;不适用于多处理器情况

进程通信机制:消息传递-》send&receive原语

操作系统_第35张图片

操作系统_第36张图片

消息传递

共享内存

管道

套接字

远程过程调用

典型操作系统的IPC机制

操作系统_第37张图片

第7章 存储模型

基本概念

进程地址空间装载到内存中

进程中的地址不是最终的物理地址

在进程运行前无法计算出物理地址

地址重定位:进程地址-》物理地址的转换

操作系统_第38张图片

物理内存管理

操作系统_第39张图片

内存分配算法

操作系统_第40张图片

内存回收

操作系统_第41张图片

伙伴系统

linux底层内存管理采用

操作系统_第42张图片

基本内存管理方案1

整个进程进入内存中一片连续区域

单一连续区域;固定分区;可变分区

操作系统_第43张图片

基本内存管理方案2

一个进程进入内存中若干不连续的区域

页式;段式;段页式

页式存储管理方案

操作系统_第44张图片

逻辑地址:页号|页内地址

页表记录逻辑地址到物理地址的映射

操作系统_第45张图片

产生内碎片

段式存储管理方案

操作系统_第46张图片

操作系统_第47张图片

段页式存储管理方式

操作系统_第48张图片

操作系统_第49张图片

交换技术

如何解决在较小的内存空间运行较大的进程呢?

内存“扩充”技术

操作系统_第50张图片

覆盖技术

操作系统_第51张图片

交换技术

操作系统_第52张图片

操作系统_第53张图片

第8章 虚拟存储技术

虚拟存储技术

操作系统_第54张图片

操作系统_第55张图片

操作系统_第56张图片

操作系统_第57张图片

操作系统_第58张图片

以CPU时间和磁盘空间换取昂贵的内存空间,这是操作系统中的资源转换技术。

页表及页表项的设计

操作系统_第59张图片

通常,页表项是硬件设计的。

操作系统_第60张图片

操作系统_第61张图片

地址转换过程及TLB引入

MMU:内存管理单元

操作系统_第62张图片

操作系统_第63张图片

TLB-Translation Look-aside Buffers

操作系统_第64张图片

页错误

地址转换过程中硬件产生异常

具体原因:

  1. 所访问的虚拟页面没有调入物理内存(缺页异常)
  2. 页面访问违反权限
  3. 错误的访问地址

软件相关策略

驻留集

操作系统_第65张图片

置换问题

操作系统_第66张图片

操作系统_第67张图片

操作系统_第68张图片

操作系统_第69张图片

清除策略

页面置换算法

操作系统_第70张图片

最佳页面置换算法

操作系统_第71张图片

先进先出算法

操作系统_第72张图片

第二次机会算法

操作系统_第73张图片

时钟算法

操作系统_第74张图片

没有第二次机会算法摘链挂链操作,效率更高

最近未使用算法

操作系统_第75张图片

操作系统_第76张图片

最近最少使用算法(LRU)

操作系统_第77张图片

操作系统_第78张图片

开销大

最不经常使用算法(NFU)

操作系统_第79张图片

老化算法

操作系统_第80张图片

工作集算法

操作系统_第81张图片

操作系统_第82张图片

操作系统_第83张图片

操作系统_第84张图片

操作系统_第85张图片

操作系统_第86张图片

其它相关技术

操作系统_第87张图片

第12章 死锁

死锁的基本概念

资源分配图

操作系统_第88张图片

操作系统_第89张图片

操作系统_第90张图片

操作系统_第91张图片

死锁预防

操作系统_第92张图片

  • 破坏“互斥使用/资源独占”条件

资源转换技术:把独占资源变为共享资源

操作系统_第93张图片

  • 破坏“占有且等待”条件

操作系统_第94张图片

  • 破坏“不可抢占”条件

操作系统_第95张图片

  • 破坏”循环等待“条件

操作系统_第96张图片

死锁避免

操作系统_第97张图片

操作系统_第98张图片

操作系统_第99张图片

操作系统_第100张图片

银行家算法

操作系统_第101张图片

操作系统_第102张图片

操作系统_第103张图片

操作系统_第104张图片

操作系统_第105张图片

死锁检测与解除

操作系统_第106张图片

操作系统_第107张图片

操作系统_第108张图片

哲学家就餐问题

操作系统_第109张图片

  • 第一种用信号量实现
  • 第二种用管程实现

操作系统_第110张图片

  • 每个哲学家都拿到了右边的筷子,都在等待左边的筷子
  • 某个哲学家放下一只筷子
  • 根据银行家算法,最后一支筷子只能分配给已经拿到筷子的哲学家
  • 只能同时拿到两只筷子的时候才去拿;资源有序分配法(先申请编号小的再申请编号大的资源)

你可能感兴趣的:(面试题,知识点)