计算机基础-操作系统-文件存储空间管理
文件管理,由于系统的内存有限并且不能长期保存,故平时总是把它们以文件的形式存放在外存中,需要时再将它们调入内存。如何高效的对文件进行管理是操作系统实现的目标。
1. 存储空间的初始化与划分1.1. 存储空间的划分将物理磁盘划分为一个个文件卷(逻辑卷、逻辑盘),有的系统支持超大型文件,可支持由多个物理磁盘组成一个文件卷。
1.2. 存储空间的初始化将各个文件卷划分为目录区、文件区。目录区主要存放文件目录信息(FCB)、用于磁盘存储空间管理的信息。文件区用于存放文件数据。
2. 管理方法2.1. 空闲表法(适用于”连续分配方式”)空闲表由第一个空闲盘块号和空闲盘块数构成,适用于连续分配方式
2.1.1. 如何分配磁盘块?与内存管理中的动态分区分配很类似,为一个文件分配连续的存储空间。同样可采用首次适应、最佳适应、最坏适应等算法来决定要为文件分配哪个分区
2.1.2. 如何回收磁盘块?与内存管理中的动态分区分配很类似,当回收某个存储区是需要有四种情况:
回收区的前后都没有相邻空闲区。
回收区的前后都是空闲区。
回收区前面是空闲区。
回收区后面是空闲区。
假设此时删除 ...
计算机基础-操作系统-文件的逻辑结构
“逻辑结构”,是指在用户看来,文件内部的数据应该是如何组织起来的。而“物理结构”指的是在操作系统看来,文件的数据是如何存放在外存中的。
类似于数据结构的 “逻辑结构” 和 “物理结构”,如 “线性表” 就是一种逻辑结构,在用户角度看来,线性表就是一组有先后关系的元素序列,如: a,b,c,d,e
“线性表” 这种 “逻辑结构” 可以用不同的物理结构实现,如: 顺序表/链表。顺序表的各个元素在逻辑上相邻,在物理上也相邻,链表的各个元素在物理上可以是不相邻的。因此,顺序表可以实现“随机访问”,而“链表”无法实现随机访问。算法的具体实现与逻辑结构、物理结构都有关,文件也一样,文件操作的具体实现与文件的逻辑结构、物理结构都有关
按文件是否有结构分类,可以分为无结构文件、有结构文件两种。
1. 无结构文件文件内部的数据就是一系列二进制流或者字符流组成,又称为”流式文件”
Windows 中的 txt 文件
2. 有结构文件由一组相似的记录组成,又称 “记录式文件”。每条记录又若干个数据项组成。
如数据库表文件。
一般来说每条记录有一个数据项可作为关键字。
根据各条记录的长度( ...
计算机基础-操作系统-文件的物理结构
文件的物理结构是指文件在外存上的存储组织形式,与存储介质的存储性能有关。常用的物理结构有连续文件结构、串联文件结构、索引文件结构三种。
1. 文件块类似于内存分页,磁盘中的存储的单元也会被分为一个个的”块/磁盘块/物理块”很多操作系统中磁盘块的大小与内存块、页面的大小相同。
内存与磁盘间的数据交互(即读/写操作、磁盘IO) 都是以 “块” 为单位进行的。
在内存管理中,进程的逻辑地址空间被分为一个一个的页面,同样的,在外存管理中,为了方便对文件数据的管理文件的逻辑地址空间也被分为一个一个的文件块
于是文件的逻辑地址也可以表示为(逻辑块号,块内地址)的形式
2. 文件分配方式2.1. 连续分配连续分配方式要求每个文件在磁盘上占有一组连续的块。
用户通过逻辑地址来操作自己的文件,操作系统如何实现从逻辑地址到物理地址的映射?
(逻辑块号,块内地址)→(物理块号,块内地址)。只需转换块号,块内地址保持不变
文件目录中记录存放的起始块号和长度(总共占用几个块)
用户给出要访问的逻辑块号,操作系统找到该文件对应的目录项(FCB).
物理块号=起始块号 +逻辑块号
当然, ...
计算机基础-操作系统-文件目录
文件管理,由于系统的内存有限并且不能长期保存,故平时总是把它们以文件的形式存放在外存中,需要时再将它们调入内存。如何高效的对文件进行管理是操作系统实现的目标。
1. 文件控制块为了能对一个文件进行正确的存取,操作系统必须为文件设置用于描述和控制文件的数据结构,称之为”文件控制块(FCB)”。文件控制块是操作系统为管理文件而设置的一组具有固定格式的数据结构,存放了为管理文件所需的所有有属性信息(文件属性或元数据)
FCB 的有序集合称为”文件目录”,一个 FCB 就是一个文件目录项,FCB 中包含了文件的基本信息(文件名、物理地址,逻辑结构、物理结构等),存取控制信息(是否可读/可写、禁止访问的用户名单等),使用信息(如文件的建立时间、修改时间等),最重要,最基本的还是文件名、文件存放的物理地址。
FCB 实现了文件名和文件之间的映射。使用户(用户程序)可以实现“按名存取”
2. 目录结构2.1. 单级目录结构早期操作系统并不支持多级目录,整个系统中只建立一张目录表,每个文件占一个目录项。
单级目录实现了“按名存取”,但是不允许文件重名。
在创建一个文件时,需要先检查 ...
计算机基础-操作系统-操作系统-内存管理
操作系统作为系统资源的管理者,也需要对内存进行管理
1. 内存空间的分配与回收
操作系统如何记录哪些内存区域已经被分配出去哪些还空闲?
很多位置可以存放,应该存放在哪里?
进程运行结束之后,如何将进程占用的内存空间回收?
2. 内存空间的扩展操作系统需要提供某种技术从逻辑上对内存空间进行扩充
3. 地址转换为了使编程方便,程序员写程序时应该只需要关注指令、数据的逻辑地址。而逻辑地址到物理地址的转换应该由操作系统负责(这个过程称为重定位),这样就保证了程序员写程序时不需要关注物理内存的实际情况。
操作系统需要提供地址转换功能,负责程序的逻辑地址与物理地址的转换
4. 内存保护操作系统需要提供內存保护功能。保证各进程在各自存储空间内运行,互不干扰
内存保护可采取两种方法:
4.1. 上、下限寄存器在 CPU 中设置一对上、下限寄存器,存放进程的上、下限地址。进程的指令要访问某个地址时,CPU 检查是否越界。
4.2. 重定位寄存器和界地址寄存器采用重定位寄存器(又称基址寄存器)和界地址寄存器(又称限长寄存器)进行越界检查。重定位寄存器中存放的是进程的起始物理地址。 ...
计算机基础-操作系统-内存空间扩充_覆盖&交换技术
早期的计算机内存很小,比如 IBM 推出的第一台 PC 机最大只支持 1MB 大小的内存。因此经常出现内存大小不够的情况。后来人们引入了覆盖技术,用来解决“程序大小超过物理内存总和”的问题。
1. 覆盖技术将程序分为多个段(多个模块),常用的段常驻内存,不常用的段在需要时调入内存。内存中分为一个“固定区”和若干个“覆盖区”。需要常驻内存的段放在“固定区”中,调入后就不再调出(除非运行结束)。不常用的段放在“覆盖区”,需要用到时调入内存,用不到时调出内存。
覆盖技术必须由程序员声明覆盖结构,操作系统完成自动覆盖。缺点是对用户不透明,增加了用户编程负担。所以覆盖技术只用于早期的操作系统中,现在已成为历史。
2. 交换技术内存空间紧张时,系统将内存中的某些进程暂时换出到外存,把外存中某些已具备运行条件的进程换入到内存(进程在内存和外存动态调度)。暂时换出到外存等待的进程状态为挂起状态(挂起态,suspend)。挂起态又可以进一步细分为就绪挂起、阻塞挂起两种状态。
2.1. 应该在外存的什么位置保存被换出的进程?具有交换换功能的操作系统中,通常把磁盘空间分为文件区和对换区两部分 ...
计算机基础-操作系统-操作系统-内存的分配
在单一连续分配方式中,内存被分为系统区和用户区。
1. 内存空间的分配1.1. 连续分配管理1.1.1. 单一连续分配系统区通常位于内存的低地址部分,用于存放操作系统相关数据;用户区用于存放用户进程相关数据。内存中只能有一道用户程序,用户程序独占整个用户区空间。
优点
实现简单
无外部碎片
可以采用覆盖技术扩充内存
不一定需要采取内存保护
缺点
只能用于单用户、单任务的操作系统中
有内部碎片
存储器利用率极低。
1.1.2. 固定分区分配20世纪60年代出现了支持多道程序的系统,为了能在内存中装入多道程序,且这些程序之间又不会相互干扰,于是将整个用户空间划分为若干个固定大小的分区,在每个分区中只装入一道作业,这样就形成了最早的、最简单的一种可运行多道程序的内存管理方式。
分区大小相等缺乏灵活性,但是很适合用于用一台计算机控制多个相同对象的场合
分区大小不相等增加了灵活性,可以满足不同大小的进程需求。根据常在系统中运行的作业大小情况进行划分(比如:划分多个小分区、适量中等分区、少量大分区)
固定分区分配中操作系统需要建立一个数据结构一一分区说 ...
计算机基础-操作系统-页面分配策略
请求分页存储管理中给进程分配的物理块的集合。在采用了虚拟存储技术的系统中,驻留集大小一般小于进程的总大小。若驻留集太小,会导致缺页频繁,系统要花大量的时间来处理缺页,实际用于进程推进的时间很少。驻留集太大,又会导致多道程序并发度下降,资源利用率降低。所以应该选择一个合适的驻留集大小。
1. 页面分配、置换策略1.1. 相关概念1.1.1. 驻留集请求分页存储管理中给进程分配的物理块的集合。在采用了虚拟存储技术的系统中,驻留集大小一般小于进程的总大小。
若驻留集太小,会导致缺页频繁,系统要花大量的时间来处理缺页,实际用于进程推进的时间很少。
驻留集太大,又会导致多道程序并发度下降,资源利用率降低。
所以应该选择一个合适的驻留集大小。
1.1.2. 固定分配&可变分配固定分配
操作系统为每个进程分配一组固定数目的物理块,在进程运行期间不再改变。即,驻留集大小不变
可变分配
先为每个进程分配一定数目的物理块,在进程运行期间,可根据情况做适当的增加或减少。即,驻留集大小可变
1.1.3. 局部置换&全局置换局部置换
发生缺页时只能选进程自己的物理块进行置换。
...
计算机基础-操作系统-操作系统-进程概述
引入多道程序技术之后为了方便操作系统管理,完成各程序并发执行,引入了进程、进程实体(PCB、程序段、数据段三部分构成了进程实体(进程映像))的概念
1. 进程的定义程序段、数据段、PCB 三部分组成了进程实体(进程映像)。一般情况下,把进程实体就简称为进程,创建进程,实质上是创建进程实体中的 PCB;而撤销进程,实质上是撤销进程实体中的 PCB。注意: PCB 是进程存在的唯一标志!
从不同的角度, 进程可以有不同的定义, 比较传统典型的定义有
进程是程序的一次执行过程
进程是一个程序及其数据在处理机上顺序执行时所发生的活动。
进程是具有独立功能的程序在数据集合上运行的过程(强调动态性!),它是系统进行资源分配和调度的一个独立单位
引入进程实体的概念后,可把进程定义为: 进程是进程实体的运行过程,是系统进行资源分配和调度的一个独立单位。
注: 严格来说,进程实体和进程并不一样,进程实体是静态的,进程则是动态的。
2. 进程的组成3. 进程的组织在一个系统中,通常有数十、数百乃至数千个PCB。为了能对他们加以有效的管理,应该用适当的方式把这些 PCB 组织起来
进程的组成讨论的 ...
计算机基础-操作系统-磁盘调度算法
磁盘一次读或写操作总的存取时间=寻道时间+延迟时间+传输时间,但是由于延迟时间和传输时间都与硬盘的转速有关,转速越大,时间越短,因此系统需要优化的是寻道时间,以下所讲的磁盘调度算法都是服务于寻道时间
1. 一次磁盘读/写操作需要的时间
寻道时间
在读写前,将磁头移动到指定磁道所花的时间。其实启动磁头臂也是需要时间的,这里把它记为 s.移动磁头时,每跨越一个磁道耗时m,总共假设跨越n个磁道。所以寻道时间 T=mn+s;
延迟时间
通过旋转磁盘,是磁头到达目标扇区所需要的时间。转速设为r.所以平均所需的延迟时间 Tr=(1/2)*(1/r)=1/2r
传输时间
从磁盘读出或向磁盘写入数据所经历的时间,假设磁盘转速是r,读写字节为b,每个磁道上的字节数是N,则:Tt=(1/r)*(b/N)=b/(rN)
2.1. 先来先服务算法根据进程请求访问磁盘的先后顺序进行调度
假设磁头的初始位置是 100 号磁道,有多个进程先后陆续的请求访问 55, 58, 39, 18, 90, 160, 150, 38, 184
磁头总共移动了 45 + 3 + 19 + 21 + 72 + ...