操作系统原理总结

  • 一.操作系统概述
  • 1.操作系统概念
  • 2.操作系统的基本功能
  • 二.处理机管理
  • 1.作业的概念
  • 2.作业的过程
  • 3.单道批处理系统的作业调度算法
  • 4.进程的概念
  • 5.进程和程序的区别和联系
  • 7.进程的结构组成
  • 8.PCB的组织方式
  • 9.进程控制原语
  • 10.线程的概念
  • 11.进程和线程的关系
  • 12.线程的类型
  • 13.内核支持线程和用户级线程的区别
  • 14.进程调度的方式
  • 15.进程调度算法
  • 16.经典的互斥/同步问题
  • 17.产生死锁的条件
  • 18.预防死锁的方法
  • 19.解除死锁的方法
  • 三.存储管理
  • 1.存储管理的功能
  • 2.存储管理方案
  • 3.实存管理
  • 4.固定分区存储管理
  • 5.可变式分区存储管理
  • 6.纯分页存储管理
  • 7.纯分段存储管理
  • 8.虚拟存储器管理
  • 9.虚拟存储器
  • 10.请求式分页存储管理
  • 11.请求式分段存储管理
  • 12.段页式存储管理
  • 四.设备管理
  • 1.设备管理的功能
  • 2.设备控制块(DCB)结构
  • 3.数据传送控制方式
  • 4.设备的访问方式
  • 5.I/O应用接口
  • 6.缓冲技术
  • 7.设备分配的方法
  • 五.文件管理
  • 1.文件的概念
  • 2.文件的逻辑结构
  • 3.文件逻辑结构的存取方法
  • 4.文件的物理结构
  • 5.文件目录的功能
  • 6.文件目录的概念
  • 7.文件控制块
  • 8.索引节点的分类
  • 六.Linux系统
  • 1.Linux文件系统(EXT2文件系统)
  • 2.超级块
  • 3.索引节点(inode)
  • 4.数据块(data block)
  • 5.EXT2中的目录
  • 6.Linux系统的内存管理技术
  • 7.Linux系统的I/O设备管理


一.操作系统概述

1.操作系统概念

操作系统是一个大型的程序系统,他负责计算机全部的软硬件资源的分配,调度工作,控制协调多个任务的活动,实现信息的存取保护,并提供用户接口,使用户获得良好的工作环境。

2.操作系统的基本功能

1).存储器管理功能
内存分配,内存保护,地址映射,内存扩充。
2).处理机管理的功能
进程控制,进程同步,进程通信,调度(作业调度和进程调度)
3).设备管理的功能
缓冲管理,设备分配,设备处理,设备独立性和虚拟设备
4).文件管理的功能
文件存储空间的管理,目录管理,文件的操作

二.处理机管理

1.作业的概念

作业是由程序,数据和作业说明书组成的,系统通过作业说明书控制以文件形式存在的程序和数据,并运行执行。

2.作业的过程

编辑,编译,链接,运行

3.单道批处理系统的作业调度算法

先来先服务算法,短作业优先调度算法,高相应比优先作业调度算法

4.进程的概念

进程是程序执行过程,是计算机系统中的基本活动单位,也是操作系统分配资源的基本单位。

5.进程和程序的区别和联系

1).进程是动态的,程序是静态的

2).结构上每个进程都是由程序段和数据段构成,与程序含义相近

3).一个进程可以涉及多个程序的执行,一个程序也可以对应多个进程

4).进程能真实的描述并发执行,而程序不能

5).进程具有创建其他进程的功能

6).操作系统中的每一个程序都是在一个进程现场中执行

6.进程的状态变化

1).三状态

整体系统应用架构 整体系统原理_总结


2).五状态

整体系统应用架构 整体系统原理_观后感_02


运行状态:进程获得了必要的资源,也获得了处理机,程序在处理机上运行

(活动)阻塞状态:进程等待某种事件的完成而暂时不能运行的状态

(活动)就绪状态:进程运行所需的一切条件都得到了满足,等待分配处理机

静止就绪状态:被挂起写入外存,不能竞争CPU,激活前不能被调度

静止阻塞状态:被挂起写入外存,不影响等待事件的发生

7.进程的结构组成

1).程序段:描述进程本身所要完成的功能
2).私有数据块:接受程序规定操作的一组存储单元的内容
3).进程控制块(PCB):记录了系统所需的全部信息,用于描述进程的全部信息和控制进程运行所需的全部信息

8.PCB的组织方式

线性表,索引表,链表

9.进程控制原语

1).创建原语:父进程创建一个新的子进程
2).撤销原语:进程完成任务,撤离系统而消亡,系统回收它占有的全部资源
3).阻塞原语:运行的进程因未满足所需求的资源而放弃处理机等待事件的发生
4).唤醒原语:把除了处理机之外的一切资源都满足的进程设置为就绪状态
5).挂起原语:将处于阻塞状态或就绪状态的进程调入外存一般父进程挂起紫禁城,少数自我挂起
6).激活原语:当故障解除或资源不紧张或进程请求激活指定进程时,将进程调入内存,将静止就绪改为活动就绪,静止阻塞改为活动阻塞

10.线程的概念

线程是进程的一个实体,是被系统独立调用和分派的基本单位

11.进程和线程的关系

1).线程是调度和分派的基本单位,进程是资源分配的基本单位
2).进程之间可以并发执行,一个进程中多个线程也可以并发执行
3).线程基本不拥有系统资源,只拥有一点在运行中必不可少的资源,如程序计数器,一组寄存器,栈。一个进程的所有线程可以共享进程拥的资源。
4).系统创建或撤销进程的开销大于创建或撤销线程的开销。
5).一个进程可以创建或撤销另一个进程,一个线程可以创建或撤销另一个线程。

12.线程的类型

1).内核支持线程:依赖于内核。创建,撤销和切换都由内核实现。在内核中保留了一个线程控制块,内核根据该控制块而感知该线程的存在并对线程进行控制。
2).用户级线程:仅存在于用户级中。创建,撤销和切换都不利用系统功能调用来实现。内核不知道用户级的线程存在。

13.内核支持线程和用户级线程的区别

1).内核支持线程的调度和切换与进程的调度和切换相似,但是开销比进程小。用户级线程的切换无需进入操作系统的内核,切换速度快。
2).当进程进行系统调用时,要由用户态进入内核态,此时进程将被阻塞。当内核完成系统调用返回时,将阻塞线程唤醒。当用户级线程进行系统调用时,内核不知道该线程的存在,因此整个进程阻塞。当内核支持线程进行系统调用时,只阻塞该线程,线程所在进程不会阻塞。

14.进程调度的方式

1).非剥夺式:进程一旦占有了CPU,除非自身放弃,否则一直运行到结束
2).剥夺式:当系统发现比当前进程更合适的进程时,将剥夺当前进程的CPU使用权

15.进程调度算法

1).先来先服务调度算法

2).高优先权优先调度算法

a).非抢占式优先权算法:执行时不可中断,直到执行结束

b).抢占式优先权调度算法:执行时可被优先级更高的进程抢占

i).引起的问题

优先级倒置:高优先级进程执行等待低优先级进程的资源,低优先级进程资源不可剥夺,等待执行。

ii).解决

ii1).设置优先级上限,给临界区一个高优先级,进入临界区的进程都将获得这个高优先级。

Ii2).优先级继承,当一个高优先级进程等待一个低优先级进程持有的资源时,低优先级进程将暂时获得高优先级进程的优先级别,在释放共享资源后,低优先级进程回到原来的优先级别。

3).高响应比优先调度算法

公式:

整体系统应用架构 整体系统原理_操作系统_03


4).时间片轮转法

5).多级反馈队列调度算法

a).设置多个就绪队列,并为各个队列赋予不同的优先级。第一个队列的优先级最高,第二个队列次之,其余各队列的优先权逐个降低。优先级越高,执行时间片越少。

b).当一个新进程进入内存后,首先将它放入第一队列的末尾,按FCFS原则排队等待调度。当轮到该进程执行时,如它能在该时间片内完成,便可准备撤离系统;如果它在一个时间片结束时尚未完成,调度程序便将该进程转入第二队列的末尾,再同样地按FCFS原则等待调度执行;以此类推。

c).当第一队列空闲时,调度程序才调度第二队列中的进程运行;以此类推。如果处理机正在低优先级队列为某进程服务时,有新进程进入优先权较高的队列,则此时新进程将抢占正在运行进程的处理机。

整体系统应用架构 整体系统原理_观后感_04

16.经典的互斥/同步问题

生产者消费者问题,读写问题,哲学家就餐问题

17.产生死锁的条件

1).互斥条件:每个资源每次只能被一个进程使用
2).不可剥夺条件:正在使用的资源不可剥夺,除非占有者自己释放
3).请求和保持条件:进程因分配资源阻塞时,对已有的资源保持不放
4).环路等待条件:前一进程持有的资源是后一进程等待的资源,形成循环等待链

18.预防死锁的方法

1).破坏“请求与保持条件“——静态资源分配法
进程在运行前,必须向操作系统提出要使用的全部资源,当所需资源不满足时,进程不投入运行。
2).破坏“环路条件“——资源顺序分配法
所有进程按一定顺序去请求资源,释放资源的顺序与请求的顺序相反。
3).资源受控动态分配法
进程在运行前向系统提出对每类资源的最大申请值,在分配一种资源前,判断在所有用户均按最大需求量提出申请时,是否有产生死锁的可能性,如果不可能产生,则分配资源,否则拒绝分配。

19.解除死锁的方法

1).资源剥夺法
2).撤销进程法

三.存储管理

1.存储管理的功能

1).内存的分配和回收
a).静态存储分配:作业一次性全部装入内存,在作业运行过程中,不允许再申请其他内存。
b).动态存储分配:作业要求的基本内存空间开装入内存时分配,在作业运行的过程中,允许作业申请附加的内存空间,或在内存中移动。
2).地址重定位:由逻辑空间转换到内存空间
a).内存空间(物理空间):由若干个存储单元组成,每个存储单元有一个编号0,1,2……
b).逻辑空间:源程序编译后形成目标程序,每个目标程序都以0为基址顺序进行编址。生成的目标程序占有一定的地址空间,称为逻辑空间。
c).分类
i).静态地址重定位:在程序执行前,将其所有涉及的逻辑地址转换为内存地址。静态地址重定位只适用于静态内存分配
ii).动态地址重定位:在程序执行期间,将遇到的逻辑地址转换为内存地址。动态地址重定位允许静态和动态两种存储分配
3).存储保护:防止程序越界访问
a).上、下界存储保护:存放作业在内存空间上下边界地址
b).基址-限长存储保护:存放作业的在内存空间的首地址和作业的长度
4).虚拟存储器:将内存和外存统一管理,构成一个远大于实际内存的虚拟的存储器

2.存储管理方案

实存管理,虚拟存储器管理

3.实存管理

固定分区存储管理,可变式分区存储管理,纯分页存储管理,纯分段存储管理

4.固定分区存储管理

1).概念:作业未进入内存前,操作系统将内存的可用空间划分成多个固定大小的存储区,操作系统占用一个区域,其余区域为用户共享。在系统运行期间,分区大小和数目不变。
2).优点:实现简单,硬件支持少,算法简单
3).缺点:产生分区内存碎片,主存利用率低
4).地址重定位方式:静态地址重定位
5).存储保护方式:上、下界寄存器保护

5.可变式分区存储管理

作业装入时,根据其对内存空间的实际需求来划分主存的分区,每个分区尺寸与进入它的作业大小相同。在系统运行期间,分区数目和大小可变。
1).空闲分区的组织形式
a).空闲区表:记录空闲分区的起始位置和大小
b).空闲区链表:在每个空闲分区的其实部分开辟一个单元,存放一个指针和该分区的大小,指针指向下一个空闲分区。
2).空闲分区内存的分配和回收
当作业要求分配X大小的存储空间时,系统从链表头部指针开始依次检索空闲区,找到第一个大于等于X的空闲区Y。若Y=X,则修改链表指针,取消空闲区。若Y>X,则将空闲区一分为二,修改链表指针指向的区域和空闲区的大小。若找不到Y≥X,则无法分配。当作业完成释放所占区时,系统检查回收区和内存中前后空闲区是否相邻。若相邻,则合并,修改链表指针。若不相邻,则将空闲区插入链表中的适当位置。
3).空闲分区内存的分配算法
a).首次适应算法
把空闲分区按其在存储空间中地址递增的顺序链接在一起。
i).优点:分配和回收算法简单,查找速度快,大作业到来时容易满足。
b).最佳适应算法
把空闲分区链表按分区大小由小到大进行组织。
i).优点:大作业要求分配内存时容易满足
ii).缺点:分区产生外部碎片,降低查找速度,回收分区时比较费时。
c).最差适应算法
把空闲分区按大小递减的顺序组织成空闲区链表。
i).优点:查询简单
ii).缺点:大作业到来时可能得不到满足
4).地址重定位方式:既可采用静态重定位,也可采用动态重定位
5).内部碎片的解决方法
采用紧凑技术:把内存小碎片集中起来形成一个大分区,必须采用动态重定位。
6).存储保护方式:基址-限长存储保护
7).优点:解决了固定式分区的内部碎片问题。
8).缺点:容易产生外部碎片问题,虽然可以通过紧凑技术解决,但增加了计算机硬件成本,额外花费处理机时间。

6.纯分页存储管理

把一个作业的所有页面一次全部装入到内存块中。
1).分页存储管理
把内存空间分成大小相等、位置固定的若干个小分区,每个小分区称为存储块,简称块。当作业提出存储分配请求时,系统根据存储块的大小把用户的逻辑地址空间分成与存储块大小相等的若干页。建立程序的逻辑页和内存的存储块之间的对应关系,借助动态地址变换,使分散在不连续的存储块中的作业正常运行。
2).存储块的分配和回收方法
a).位图法
b).链表法:分配时根据链表头指针顺序分配,回收时插入表头
3).地址重定位方式
动态地址重定位。在内存中为每个作业开辟一块特定区域,建立作业的逻辑页和存储块的对应关系表格,称为页面映像表,简称页表。包含页号和块号。逻辑地址的高六位为页号p,根据页号p查找页表得到块号b,与逻辑地址的低十位即页内地址w合成,形成物理地址。
a).联想存储器(快表)
用于存放当前作业最常用的页号和与之对应的块号的寄存器组。用来提高查表速度,一般以8到16个单元组成。
4).存储保护方式
a).在进行地址变换时,产生的页号应小于页表长度,否则视为越界访问。
b).在页表中增加存取控制和存储保护的信息
5).优点:有效解决碎片问题,提高主存利用率,内存分配回收算法简单。
6).缺点:采用动态地址变换增加了硬件成本,降低了处理机速度。

7.纯分段存储管理

把一个作业的所有段一次全部装入到内存块中。
1).分段存储管理
作业的地址空间由若干个逻辑分段组成,每一分段是一组逻辑意义完整的信息集合,并有自己的名字(段名)。
2).地址重定位方式
动态地址重定位。
a).段表包含段号,段长,内存起始地址,存取控制。逻辑地址由段号s和段内位移w组成
3).分段和分页的区别
a).页是信息的物理单位,段是信息的逻辑单位。
b).分页存储管理的作业地址空间是一维的。分段存储管理的作业地址空间是二维的。
c).页的大小固定且由系统确定,是等长的。段的长度不定,由具有相对完整意义的信息长度确定。
d).分页的优点体现在内存空间的管理上。分段的优点体现在内存空间的管理上。

8.虚拟存储器管理

请求式分页存储管理,请求式分段存储管理

9.虚拟存储器

作业运行时,只把一部分必需的信息调入内存,其余部分仍放在辅存,当需要时,系统自动将其从辅存调入内存。

10.请求式分页存储管理

在进程执行前,先从外存将进程的一部分装入内存执行,执行中发现要访问的数据或指令不再内存时,由硬件产生页中断信息,动态的装入相应页面。当内存无空闲块或分配给该进程的物理块用完且又需要装入新页时,则根据算法淘汰某个已存在的页面,装入新页面,继续运行。
1).地址重定位方式
动态地址重定位
a).如何发现缺页?从外存调入页面无空闲块怎么办?
解决:对页表内容进行扩展
页表:页号,内存块号,状态位,改版位,引用位,辅存地址,存取控制。
2).缺页中断的处理:缺页中断处理,页面的调入,进程的重新启动
注意
a).缺页中断的发生和处理在指令执行周期进行。
b).一条指令在执行期间可能产生多次缺页中断。
c).发生缺页中断时应保存指令执行的中间结果。
d).对新分配的物理快上锁,防止同一物理块分配给多个进程。
3).页面分配策略
a).固定分配:在进程生命周期中,保持页框数固定不变
i).缺点:缺少灵活性
b).可变分配:在进程生命周期中,分得的页框数可变
i).优点:灵活性好
ii).缺点:系统需监视进程的行为和缺页中断率情况,增加了系统的开销。
4).页面替换策略
a).局部替换:页面替换的范围仅限于本进程
b).全局替换:页面替换的范围作用于整个系统
c).搭配
i).固定分配和局部替换
难点:应给每个进程分配多少个页框
ii).可变分配和全局替换
难点:选择哪个页面进行替换
缺点:容易导致进程工作集减少而影响其执行
解决:采用页缓冲
iii).可变分配和局部替换
优点:克服可变分配和全局替换的缺点
5).页面置换算法(局部替换)
a).最优算法(OPT算法)
从内存中移除以后不再使用的页面,若这样的页面不存在,则移除以后最长时间内不使用的页面。
评价:理想算法,非实际,难以使用。
b).先进先出算法(FIFO算法)
总是淘汰驻留内存时间最长的页面即先进入内存的页面先被置换掉。
评价:在程序按线性顺序访问逻辑地址时较为理想,否则效率不高。不单独使用,常作为一种辅助策略。
c).最久未使用页面置换算法(LRU算法)
当需要置换页面时,选择在最近一段时间最久未使用的页面予以淘汰。
评价:实现起来较为困难,若由软件完成,系统开销大。若由硬件完成,增加硬件成本
d).时钟置换算法(Clock算法)
把所有的页面保存在一个类似钟表表盘的环形链表中,用一个指针指向循环队列中下一个将被替换的页面,并为每个页面设置一个“引用位”。
i).一个页面首次装入内存时,其“引用位”置1。
ii).在主页中的任何一个页面被访问时,其“引用位”置1。
iii).淘汰页面时,存储管理从指针当前指向的页面开始扫描循环队列,把遇到“引用位”为1的页面清0,并跳过这个页面,把遇到“引用位”为0的页面淘汰,指针前进一步。
iv).扫描循环队列时,若所有页面“引用位”都为1,则把所有页面清0,淘汰起始页,指针前
进一步。

e).时钟算法的改进:加入修改位
一个页面必为以下四种状态:
最近没被引用,没被修改。r=0,m=0.
最近被引用,没被修改。r=1,m=0.
最近没被引用,但被修改。r=0,m=1.
最近被引用,也被修改。r=1,m=1.
i).指针从当前位置,扫描循环队列,扫描中不改变“引用位”,把遇到的第一个r=0,m=0的页
面淘汰。
ii).若a步骤失败,则从原位置开始,查找r=0,m=1的页面,把遇到的第一个这样的页面淘
汰,扫描过程中“引用位”置0。
iii).若b步骤失败,指针回到原位置,此时所有页面的“引用位”均为0,转向a步骤,必要时
再进行b步骤,选出可以淘汰的页面。
iv).优点:节省时间
v).缺点:算法实现开销较大

11.请求式分段存储管理

作业按其本身的逻辑关系划分成若干个页,每个段都有段名,经编译和连接后,段名转换为段号。每段都是一个首地址为零且连续存放的地址空间,可按需动态增长。运行时首先调入一个或若干个程序段运行,在运行中调用哪段时,就根据段长在内存分配一个连续的分区供使用。若内存中无足够大的空闲分区,则进行段紧凑或淘汰某些段。
1).逻辑地址结构
a).段号s:高字节的低8位
b).段内偏移量d:低字节的16位
2).段表:段号,段长,状态位,引用位,改变位,存取权限,起始地址
3).地址重定位方式:动态地址重定位
4).优点
a).可提供大容量的虚存
b).允许动态增加段的长度
c).便于段的动态链接
d).便于实现程序段的共享
e).便于实现存储保护
5).缺点
a).进行地址变换和实现紧凑操作要花费处理机时间
b).需提供额外空间存储段表
c).易出现系统抖动现象(刚换出的页面因程序需求需要换入)

12.段页式存储管理

1).作业地址空间进行段式管理。
2).每段内再分成若干个大小固定的页,每段都是从零开始为各页编写页号。
3).对内存空间的管理同分页存储管理,对内存空间的分配以物理快为单位。
4).逻辑地址包括段号s和段内位移w,段内位移w包括段内页号p和页内位移d
5).为实现地址变换,系统建立了段表和页表,每个段表包括段号,页表起始地址,页表长度,每个页表包括页号和块号

四.设备管理

1.设备管理的功能

1).监视系统中所有设备的状态,
2).设备分配,
3).设备控制

2.设备控制块(DCB)结构

1).设备名
2).设备属性
3).设备状态
4).设备在I/O总线上的地址
5).等待队列指针:存放要使用该设备的队列的首指针

3.数据传送控制方式

1).程序直接控制方式
a).优点:简单,不需要太多硬件支持
b).缺点:CPU利用率低,外设利用率低
2).中断控制方式
a).优点:CPU利用率提高,支持外设间的并行操作
b).缺点:CPU中断次数过多时会导致CPU的有效计算时间大大减少
3).直接存储器访问方式(DMA方式)
在外设和主存之间开辟直接的数据交换通路。DMA控制器可代替CPU在内存和外设间进行成批的数据交换
a).特点
i).数据传输的基本单位是数据块
ii).传送数据的方向为设备到内存或内存到设备
iii).仅在传输一个或多个数据块的开始和结束时,才需CPU中断干预
b).优点:减少了CPU对I/O控制的干预,提高CPU利用率,提高CPU与I/O设备的并行操作程度
c).缺点:对外设的管理和某些操作仍需CPU控制,多个DMA控制器可能导致内存地址冲突
4).通道控制方式
通道是一个独立于CPU的专门负责输入输出控制的处理机,与设备控制器一起控制设备与内存直接进行数据交换。
a).与DMA方式的区别
i).数据传送方向存放数据的内存基址和传送的数据块长度由专门负责输入输出的硬件——通道负责。
ii).一个通道可控制多台设备与内存进行数据交换。
b).优点:使CPU基本上摆脱了对I/O的控制,提高了CPU的工作效率及与外设间的并行工作程度

4.设备的访问方式

块I/O,字符流I/O,内存映射访问,网络套接字

5.I/O应用接口

1).块设备接口
规定了访问磁盘驱动器和基于其他块设备所需的各个方面。操作系统将块设备当作一个简单的线性块数组来访问,一般设备应知道read,write的含义,随机访问设备还应知道seek的含义。
2).字符流接口
字符流接口的基本系统调用使应用系统可以get或put字符。
3).内存映射接口
内存映射访问是块设备驱动程序之上的。内存映射接口不提供read和write命令,而提供了通过内存中的字节数组访问磁盘存储。
4).网络套接字接口
使用套接字监听远程应用程序创建套接字,通过连接两个套接字发送和接收数据。套接字接口提供select方法,使用select不需轮询或忙等待来处理网络I/O。

6.缓冲技术

1).单缓冲
a).缺点:不能解决外设间的并行问题(输入输出)。
2).双缓冲
a).优点:提高CPU和外设的并行程度,使输入输出设备并行工作
b).缺点:实际中很难匹配设备和CPU的处理速度
3).环形缓冲
在主存中分配一组大小相等的存储区,将其首尾依次连接,形成环形链表。
a).优点:解决设备和CPU处理速度的匹配问题
d).缺点:系统较大时,消耗大量内存空间,利用率不高
4).缓冲池
主存中分配的一组缓冲区
a).组成
i).三个队列
空闲缓冲区队列emq
输入缓冲区队列inq:装输入数据
输出缓冲区队列outq:装输出数据
ii).四种工作缓冲区
用于收容输入数据的缓冲区hin
用于提取输入数据的缓冲区sin
用于收容输出数据的缓冲区hout
用于提取输出数据的缓冲区sout
b).工作方式
i).收容输入:当输入进程需要输入数据时,从emq队首获取空缓冲区作为hin,装入数据,
加入inq队尾。
ii).提取输入:当计算进程需要对输入数据计算时,从inq队首获取一个缓冲区作为sin,当
从sin中提取数据完成后,加入emq队尾。
iii).收容输出:当计算进程需要输出数据时,从emq队首获取空缓冲区作为hout,hout输出数据后,加入outq末尾。
iv).提取输出:当需要输出操作时,从outq队首获取一个缓冲区作为sout,当数据提取完毕
后,加入emq队尾。

7.设备分配的方法

先来先服务,优先级高者优先

五.文件管理

1.文件的概念

具有标识符的一组相关信息的集合

2.文件的逻辑结构

1).无结构文件(流式文件):由若干个相关记录构成
a).等长记录文件:文件中所有记录长度相等
b).变长记录文件:文件中各记录长度不等
2).有结构文件(记录式文件):由字节构成,长度为文件中包含字节的数目。整个文件不可再
划分。

3.文件逻辑结构的存取方法

1).顺序存取:严格按照信息排列顺序依次存取,后又一次存取总是在前一次的基础上进行。
2).随机存取(直接存取):存取时必须先确定起始位置。

4.文件的物理结构

1).顺序结构
一个逻辑文件的信息依次存放在外存的若干连续的物理块中,顺序文件可采用顺序存取或随机存取
a).优点:知道文件的起始地址和长度后能快速存取
b).缺点:文件长度一旦确定不易改变,文件某些部分删除后产生无法使用的零头空间
2).链接结构
用非连续的物理块存放信息,物理块间无物理块号的顺序,每个物理块有一个指针,指向下一个物理块
a)优点:不需指明文件长度,只需指明文件的第一个块号。能较好的利用外存空间。易于对文件进行扩充或修改。
b).缺点:只能按指针顺序搜索,效率低。只能顺序存取,不宜随机存取
3).索引结构
a).索引表
将逻辑文件顺序地划分成长度与物理存储块长度相同的逻辑块,并为每个文件分别建立逻辑块号与物理块号的对照表。
b).优点:可满足文件的动态增长,快速实现随机存取
c).缺点:增加了存储空间的开销,降低了存取速度

5.文件目录的功能

1).实现按名存取
2).提高对目录的的检索速度
3).允许文件重名
4).允许文件共享

6.文件目录的概念

文件控制块的有序集合

7.文件控制块

用于描述和控制文件的数据结构
1).内容
文件名,用户名,文件的逻辑结构,文件在辅存上的物理地址,文件建立修改日期和时间,文件的类型,存取控制信息

8.索引节点的分类

1).导入索引节点
a).i节点(inode):将文件名和文件描述信息分开,将文件描述信息单独形成一个索引节点的数据结构。文件目录中的每个目录项,仅由文件名和指向该文件所对应的i节点的指针构成,加快了查找速度。
2).磁盘索引节点
存放在磁盘上的索引节点
a).内容
i).文件类型
ii).文件主标识符:拥有该文件的个人或小组的标识符
iii).文件存取权限
iv).文件物理地址
v).文件大小
vi).文件连接计数:文件系统中所有指向该文件的文件名的计数
vii).文件存取时间
3).内存索引节点
存放在内存的索引节点
a).内容
i).索引节点编号
ii).索引节点状态:指明该节点是否被修改或被上锁
iii).连接指针:指向空闲链表和散列队列的指针
iv).访问计数:当一个进程访问该节点,计数加一,访问结束后计数减一。
v).逻辑设备名:含有该文件的文件系统逻辑名

六.Linux系统

1.Linux文件系统(EXT2文件系统)

数据以数据块的形式存储载文件中。数据块的大小相同,其大小在EXT2创建时设定。每个文件的长度都要补足到块大小的整数倍。使用索引节点inode数据结构来描述文件。每个文件有且仅有一个索引节点,每个索引节点有且仅有一个唯一的标识符。

1).EXT2文件系统结构

整体系统应用架构 整体系统原理_整体系统应用架构_05


2).每个组块的结构

整体系统应用架构 整体系统原理_操作系统_06


a).超级块

存储描述文件系统的大小和形状的基本信息

b).组描述符

数据块组描述符表的副本

c).块位图

记录系统中已分配和未分配的数据块数,在数据块的分配和撤销中使用

d).索引节点表

保存每个数组块组中所有索引节点

e).索引节点位图

记录系统中已分配和未分配的索引节点数,在索引节点地址分配和撤销中使用

2.超级块

一般情况下,当文件系统挂接时,系统只读取组块0中的超级块,但每个块组中都包含一个超级块,以备系统崩溃时使用
1).主要内容
a).幻数:Magic Number 使挂接程序识别EXT2文件系统,目前值为0xEF53。
b).修订级别:Revision Level 文件系统的主版本号和从版本号
c).挂接数:Mount Count 文件系统每挂接一次,挂接数加1。
d).最大挂接数:Maximum Mount Count 当挂接数等于最大挂接数时,系统提示用户进行文件系统的检查
e).组块号:Block Group Number 包含此超级块的数据块组号。
f).块大小:Block Size 文件系统中数据块大小
g).每组块数:Blocks per Group 数据块组中数据块的数目
h).空闲块:Free Blocks 文件系统中空闲的数据块数目
i).空闲索引节点:Free Inodes 文件系统中空闲的索引节点的数目
g).第一个索引节点:First Inode 文件系统中第一个索引节点号,是根目录的入口

3.索引节点(inode)

1).特点:每个inode大小均固定为128B,inode记录一个数据区块使用4B

2).内容

整体系统应用架构 整体系统原理_操作系统_07


a).文件类型和访问权限:Mode

b).用户信息:Owner info 描述文件或目录所有者的用户和组标识符

c).文件大小:Size 描述文件的字节大小

d).时间信息:Timestamps 保存索引节点建立的时间和索引节点最后修改的时间

e).直接块指针数组:Direct Blocks 指向存储数据的物理数据块的指针,直接指针,12个

f).一次间接块指针:一级指针,1个

g).二次间接块指针:二级指针,1个

h).三次间接块指针:三级指针,1个

4.数据块(data block)

实际存放数据的区域
1).特点
a).在格式化时,每个数据区块都已经固定大小了,且每个区块都有编号,方便inode记录
b).在ext2文件系统中所支持的区块大小有1K、2K、4K三种。不同的区块大小决定了文件系统能够支持的最大磁盘容量与最大单一文件容量。
数据区块大小              1KB        2KB        4KB
最大单一文件限制      16GB      256GB   2TB
最大文件系统总容量   2TB        8TB        16TB
c). 每个区块内最多只能放置一个文件的数据,如果文件大小大于区块大小,则一个文件会占用多个区块,如果文件大小小于区块大小,则该区块的剩余容量就不能够再被使用。

5.EXT2中的目录

目录是一种特殊的文件,用来创建和保存系统中文件的存取路径

1).内容

整体系统应用架构 整体系统原理_整体系统应用架构_08


a).索引节点:inode 目录入口的索引节点

b).目录长度

c).文件名长度

d).文件类型

e).文件名

f).填充:可有可无,保证目录项的长度总是4的倍数

6.Linux系统的内存管理技术

1).Linux系统采用段页式虚拟存储技术。
2).Linux系统采用需要时装入技术将可执行代码装入到进程的虚拟内存。
3).Linux系统采用LRU算法进行页面置换。
4).Linux系统采用系统页面表的内存管理技术。Linux系统有三级页面表,一个虚拟地址被分成三个字段,每个字段提供一个页面表位移值。处理器读取字段值,将字段值转换成对应物理页的位移量,取出物理页中指向下一个页面表的页框号(PFN),重复三次,得到包含物理页面号的虚拟内存地址,完成内存映射过程。
5).Linux系统的内存管理程序通过内核中的交换守护进程来释放物理内存页,解决物理内存变少的问题。交换守护进程是一个内核线程,不使用虚拟内存,在物理内存中中运行于内核方式下,保障系统有足够的空闲内存

7.Linux系统的I/O设备管理

使用主设备号和系统中的一些表将系统调用中使用的设备文件映射到设备驱动文件中。
1).Linux系统支持三种类型的硬件设备
a).字符设备
直接读取,不需要缓冲区
b).块设备
每次读取一定大小的块的倍数,块大小一般为512或1024字节,通过缓冲区读写,可以随机读写。
c).网络设备:通过BSD套接字存取
2).Linux系统设备驱动程序的特点
a).都是内核代码
b).必须为系统内核或其子系统提供一个标准接口
c).都利用一些标准的内核服务
d).一般情况下,在需要时装入内核,不需要时卸载
e).动态性:当系统启动且各个设备驱动程序初始化之后,驱动程序将维护其控制的设备。
3).Linux系统和设备驱动程序之间使用标准的交互接口