操作系统笔记

一、操作系统的概念

操作系统是指控制和管理整个计算机系统的硬件和软件资源,并合理地组织调度计算机的工作和资源的分配;以提供给用户和其他软件方便的接口和环境;它是计算机系统中最基本的系统软件。

1、操作系统的特征

并发:指两个或多个事件在同一时间间隔内发生

共享:系统中的资源可供内存中多个并发执行的进程共同使用

虚拟:把物理上的实体变为若干个逻辑上的对应物(空分/时分复用技术)

异步:多道程序环境下,允许多个程序并发执行,但是由于资源有限,进程的执行不是一贯到底,而是走走停停,以不可预知的速度向前推进

2、操作系统的发展与分类

手工操作系统:人机速度矛盾

批处理阶段:单道批处理系统、多道批处理系统

分时操作系统 :提供人机交互功能

实时操作系统:能优先处理紧急任务

网络操作系统

分布式操作系统

个人计算机操作系统

3、操作系统的运行机制

应用程序:只能执行非特权指令

内核程序(内核Kernel):可以执行特权指令

CPU有两种状态,“内核态”和“用户态”,由程序状态字寄存器(PW)控制

内核态=核心态=管态

用户态=目态

内核态->用户态:执行一条特权指令,修改PW的标志位为“用户态”

用户态->内核态:由“中断”引发,硬件自动完成变态过程

4、中断和异常

中断的分类:

内中断(异常):应用程序通过“陷入指令/访管指令”(用户态)引发内部中断,将CPU控制权还给操作系统内核

外中断(中断):与当前执行的指令无关,中断信号来源于CPU外部

5、系统调用

按功能分类:

设备管理:完成设备的请求/释放/启动等

文件管理:完成文件的读/写/创建/删除等

进程控制:完成进程的创建/撤销/阻塞/唤醒等

进程通信:完成进程之间的消息传递/信号传递等

内存管理:完成内存的分配/回收

6、操作系统的体系结构

大内核:将操作系统的主要功能模块作为系统内核,运行在核心态

微内核:只把最基本的功能保存在内核

分层结构

模块化

外核

7、操作系统的引导

8、虚拟机

第一类VMM:之间运行在硬件之上,能之间控制和分配物理资源

第二类VMM:运行在Host OS之上,依赖于Host OS为其分配物理资源

二、进程

1、进程的概念

进程(Process):是动态的,是程序的一次执行过程

2、进程的组成

进程实体是由PCB、程序段、数据段组成的。

PCB(PCB是进程存在的唯一标志,当进程被创建时,操作系统为其创建PCB,当进程结束时,会回收PCB):

进程描述信息

进程控制和管理信息

资源分配清单

处理机相关信息

程序段:包含程序指令

数据段:包含运行过程中产生的各种数据

3、进程的特征

动态性

并发性

独立性

异步性

结构性

4、进程的状态

创建态(New)、就绪态(Ready)、运行态(Running)、阻塞态(Waiting/Blocked)、终止态(Terminated)

就绪态:其他资源分配完毕,只差CPU

进程的组织方式:

链接方式(队列)、索引方式(索引表)

5、进程控制

进程的转换由原语控制(原语的执行必须一气呵成,不可中断)

进程控制原语:

1、更新PCB中的信息

2、将PCB插入合适的队列

3、分配/回收资源

6、进程的通信

各进程拥有的内存地址空间相互独立

共享存储(存储区共享和数据结构共享)

消息传递(直接通信方式和间接通信方式)

管道通信(半双工通信)

7、线程

(1)概念

线程是一个基本的CPU执行单元,也是程序执行流的最小单位。

引入线程后,进程是资源分配的基本单位,线程是调度的基本单位

(2)组成

线程只由相关堆栈(系统栈或用户栈)寄存器和线程控制表TCB组成。

寄存器可被用来存储线程内的局部变量,但不能存储其他线程的相关变量。

(3)线程的实现方式

用户级线程:“代码逻辑”的载体

内核型线程:“运行机会”的载体,内核级线程才是处理机分配的单位

多线程模型

(4)线程的状态和转换

创建/运行/就绪/阻塞/终止

(5)处理机的调度

调度:当有一堆任务要处理,但是由于资源有限,这些事情没法同时处理,这就需要某种规则来决定处理这些任务的顺序

用户向系统提交了一个作业:用户让操作系统启动的一个程序(来处理一个具体的任务)

高级调度(作业调度)

中级调度(内存调度)

低级调度(进程调度)

8、进程调度

临界资源:一个时间段内只允许一个进程使用的资源,各进程需要互斥地访问临界资源

临界区:访问临界资源的那段代码

进程调度的方式:

非剥夺调度方式(非抢占方式)

剥夺调度方式(抢占方式)

9、调度算法

CPU利用率=忙碌的时间/总时间

系统吞吐量=总共完成了多少道作业/总花费的时间

周转时间=作业完成的时间-作业被提交的时间

平均周转时间=各作业周转时间之和/作业数

带权周转时间=作业周转时间/作业实际运行的时间

平均带权周转时间=各作业带权周转时间之和/作业数

等待时间=周转时间-作业运行时间

先来先服务(FCFS)

短作业优先(SJF)

高响应比优先(HRRN) 响应比=(等待时间+要求服务时间)/要求服务时间

时间片轮转调度算法(RR)

优先级调度算法

多级反馈队列调度算法

10、进程的同步和互斥

空闲让进

忙则等待

有限等待

让权等待

进程互斥的软件实现方法

单标志法

双标志先检查法

双标志后检查法

Peterson算法

进程互斥的硬件实现方法

中断屏蔽方法

TestAndSet指令

Swap指令

11、锁

解决临界区最简单的工具就是互斥锁(mutex lock) acquire() 获得锁 release()释放锁

12、信号量机制

wait(S) 即 P(S)

signal(S) 即 V(S)

整型信号量

记录型信号量:有等待队列

同步:semaphore S=0

互斥:semaphore mutex=1

生产-消费者问题

多生产者-多消费者问题

 

 

吸烟者问题

 

读写问题

 

哲学家问题

 

13、管程

利用封装思想把同步互斥封装在类中,外部通过调用类中的方法实现

Java中用synchronized修饰

14、死锁

死锁:在并发环境下,各进程因竞争资源而造成的一种互相等待对方手里的资源,导致各进程都阻塞,都无法向前推进的现象。

饿死:由于长期得不到想要的资源,某进程无法向前推进的现象。

死循环:某进程执行过程中一直跳不出某个循环的现象。

死锁产生的必要条件:

互斥条件

不可剥夺条件

请求和保持条件

循环等待条件

死锁的处理策略:

预防死锁

避免死锁(银行家算法)

 

死锁的检测和解除

 

三、内存

程序执行前需要先放到内存中才能被CPU处理--缓和CPU与硬盘之间的速度矛盾

操作系统提供地址转化功能,负责程序的逻辑地址与物理地址的转换:

绝对装入:编译时产生绝对地址

可重定位装入:装入时将逻辑地址转换为物理地址

动态运行时装入:运行时将逻辑地址转换为物理地址,需要设置重定位寄存器

内存空间的分配与回收

覆盖与交换

交换(进程在内存与磁盘间动态调度)

连续分配管理方式

内部碎片:分配给某个进程的内存区域中,有些部分没有用上

外部碎片:内存中某些空闲分区太小难以利用

单一连续分配:无外部碎片,有内部碎片、存储器利用率极低

固定分区分配:实现简单,无外部碎片,会产生内部碎片,内存利用率低

动态分区分配:对分区的分配与回收,没有内部碎片,会产生外部碎片,外部碎片可以通过“紧凑”解决

动态分区算法

首次适应算法

最佳适应算法

最坏适应算法

邻近适应算法

分页存储管理

页框:将内存空间分为一个个大小相等的分区,每个分区就是一个“页框”(页框=页帧=内存块=物理块=物理页面),每个页框都有一个编号,即“页框号”,页框号从0开始

页面:将进程的逻辑地址空间也分为与页框大小相等的一个个部分,每个部分称为一个“页”或者“页面”,每个页面也有一个编号,即“页号”,页号也是从0开始

页表:操作系统为每一个进程创建一张页表

逻辑地址=(页号,页内偏移量)

物理地址=页面在内存中的起始地址+页内偏移量

基本地址变换机构

地址变换过程:

1、根据逻辑地址算出页号、业内偏移量

2、页号的合法性检查(与页表长度对比)

3、若页号合法,再根据页表起始地址、页号找到对应页表项

4、根据页表项中记录的内存块号、业内偏移量得到最终的物理地址

5、访问物理内存对应的内存单元

具有快表的地址变换机构

快表,又称联想寄存器(TLB,translation lookaside buffer),是一种访问速度比内存块很多的高速缓存(TLB不是内存!),用来存放最近访问的页表项的副本,可以加速地址变换的速度,与此对比,内存的页表常称为慢表。

TLB和普通Cache的区别:TLB只有页表项的副本,而普通Cache中可能会有其他各种数据的副本

两级页表

页目录表

基本分段存储管理

进程的地址空间:按照程序自身的逻辑关系划分为若干个段,每个段都有一个段名,每段从0开始编制

逻辑地址由段号和段内地址(段内偏移量)组成

地址变换:

1、由逻辑地址得到段号、段内地址

2、段号与段表寄存器中的段长度比较,检查是否越界

3、由段表始址、段号找到对应的段表项

4、根据段表中记录的段长,检查段内地址是否越界

5、由段表中的“基址+段内地址”得到最终的物理地址

6、访问目标单元

分段和分页的区别

分页对用户不可见,分段对用户可见

分页的地址空间是一维的,分段的地址空间是二维的

分段更容易实现信息的共享和保护(纯代码/可重入代码可以实现共享)

分页(单级页表)、分段访问一个逻辑地址都需要两次访存,分段存储中也可以引进快表机构

段页式管理方式

逻辑地址结构(段号,页号,页内偏移量)

虚拟内存

局部性原理:

时间局部性:如果执行了程序中某条指令,那么不久之后这条指令很有可能再次执行

空间局部性:一旦程序访问了某个存储单元,在不久后,其附近的存储单元也很有可能被访问

若内存空间不够,由操作系统负责将内存中暂时不用的信息换到外存中

虚拟内存技术的实现需要建立在离散分配的内存管理方式的基础上

请求分页存储管理方式

当访问的信息不在内存时,由操作系统负责将所需信息从外村调入内存

若内存空间不够,由操作系统负责将内存中暂时用不到的信息换出到外存中

页面置换算法

最佳置换算法(OPT):每次淘汰最长时间不再被访问的页面或者以后永不使用的页面

 

先进先出置换算法(FIFO):每次淘汰的页面是最早进入内存的页面

 

最近最久未使用置换算法(LRU):每次淘汰最近最久未使用的页面

 

时钟置换算法(CLOCK)或最近未用算法(NRU):为每个页面设置一个访问位,再将内存中的页面通过链接指针链接成一个循环队列,当某页被访问时,其访问位置为1,当需要淘汰页面时,只需检查页的访问位是否为0,是0换出,若是1,设置为0。

 

改进型时针置换算法:用(访问位,修改位)的形式表示各页面的状态

页面分配策略

固定分配局部置换

可变分配全局置换

可变分配局部置换

驻留集:指请求分页存储管理中给进程分配的内存块的集合

内存映射文件

内存映射文件--操作系统向上层程序员提供的功能(系统调用)

四、文件

文件——就是一组有意义的信息/数据集合

标识符:一个系统内各文件标识符唯一,对用户毫无可读性,因此标识符只是操作系统用于区分各个文件的一种内部类型

文件的逻辑结构

无结构文件

有结构文件:顺序文件、索引文件、索引顺序文件

文件目录

文件控制块(FCB):一个FCB就是一个文件目录项,FCB包含文件的基本信息,存取控制信息,使用信息

目录结构:单级目录结构,两级目录结构,多级(树形)目录结构(不利于文件共享),无环图目录结构(实现文件共享)

索引节点:除了文件名之外的所有信息放到索引节点中,每个文件对应一个索引节点

文件的物理结构

文件的分配方式:

连续分配

链接分配

索引分配

文件存储空间管理

文件卷、目录区

空闲表法:

首次适应、最佳适应、最坏适应算法来决定为文件分配哪个区间

空闲链表法

位示图法:

0表示盘块空闲,1表示盘块已分配

成组链接法

文件的基本操作

创建文件

删除文件

打开文件

关闭文件

读文件

写文件

文件共享

基于索引节点的共享方式(硬链接)

基于符号链的共享方式(软链接) 快捷方式

文件保护

口令保护

加密保护

访问控制

文件系统的层次结构

 

文件系统的全局结构

物理格式化

逻辑格式化

虚拟文件系统(VFS)

文件系统挂载(mounting)

五、I/O设备

I/O设备中的I/O控制器

功能:

接收和识别CPU发出的命令

向CPU报告设备的状态

数据交换

地址识别

组成:

CPU与控制器之间的接口

I/O逻辑

控制器与设备之间的接口

I/O控制方式

程序直接控制方式:CPU和I/O设备利用率低

中断驱动方式:CPU和I/O设备可以并行工作,频繁的中断处理会消耗较多的CPU时间

DMA方式(Direct Memory Access直接存储器存取):数据传输以“块”为单位,数据传输不需要经过CPU,CPU和I/O设备的并行性得到提升,CPU每发出一条I/O指令,只能读/写一个或多个连续的数据块

通道控制方式:实现复杂,需要专门的通道硬件支持,CPU、通道、I/O设备可以并行工作,资源利用率高

I/O软件层次结构

用户层软件(SPOOLing技术)

设备独立性软件(I/O调度、设备保护、设备分配与回收、缓冲区管理)

设备驱动程序

中断处理程序

硬件

输入/输出应用程序接口和设备驱动程序接口

I/O核心子系统

假脱机技术(SPOOLing技术)

输入井、输出井

用软件技术模拟脱机技术

SPOOLing技术可以把一个物理设备虚拟成逻辑上的多台设备,可以将独占式设备改造成共享设备

设备的分配与回收

静态分配:进程运行之前为其分配全部所需资源,运行结束之后归还资源

动态分配:进程运行过程中动态申请设备资源

缓冲区管理

提高CPU和I/O设备之间的并行性

一般利用内存作为缓冲区

磁盘的结构

磁盘:磁盘的表面由一些磁性物质组成,可以利用这些磁性物质记录二进制数据

磁道/柱面:磁盘的盘面被划分成一个个磁道,一个圈就是一个磁道

扇区:一个磁道又被划分为一个个扇区,每个扇区就是一个磁盘块

用(磁道号/柱面号,盘面号,扇区号)定义一个磁盘块

磁盘调度算法

先来先服务(FCFS)

最短寻找时间优先(SSTF)

扫描算法(SCAN)也叫电梯算法 优化(LOOK算法)

循环扫描算法(C-SCAN) 优化(C-LOOK算法)

减少磁盘延迟的时间的方法

交替编号

错位命名

磁盘的管理

磁盘初始化

引导块

坏块的管理

固态硬盘(SSD)

原理:基于闪存技术Flash Memory,属于电可擦除ROM,即EEPROM

组成:

闪存翻译层:逻辑地址映射为物理地址

存储介质

以页为单位读/写——相当于磁盘的“扇区”

以块为单位“擦除”

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

西柚Pi

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值