从0开始回顾操作系统---系列五

简介: 文件管理1、虚拟文件系统?● 文件系统的种类众多,而操作系统希望对用户提供一个统一的接口,于是在用户层与文件系统层引入了中间层,这个中间层就称为虚拟文件系统(Virtual File System,VFS)。● VFS 定义了一组所有文件系统都支持的数据结构和标准接口,这样程序员不需要了解文件系统的工作原理,只需要了解 VFS 提供的统一接口即可。2、硬链接和软链接有什么区别?● 硬链接就是在目录下创建一个条目,记录着文件名与 inode 编号,这个 inode 就是源文件的 inode。删除任意一个条目,文件还是存在,只要引用数量不为 0。但是硬链接有限制,它不能跨越文件系统,也不

文件管理

1、虚拟文件系统?

  • 文件系统的种类众多,而操作系统希望对用户提供一个统一的接口,于是在用户层与文件系统层引入了中间层,这个中间层就称为虚拟文件系统(Virtual File System,VFS)
  • VFS 定义了一组所有文件系统都支持的数据结构和标准接口,这样程序员不需要了解文件系统的工作原理,只需要了解 VFS 提供的统一接口即可。

2、硬链接和软链接有什么区别?

  • 硬链接就是在目录下创建一个条目,记录着文件名与 inode 编号,这个 inode 就是源文件的 inode。删除任意一个条目,文件还是存在,只要引用数量不为 0。但是硬链接有限制,它不能跨越文件系统,也不能对目录 进行链接

  • 软链接相当于重新创建一个文件,这个文件有独立的 inode,但是这个文件的内容是另外一个文件的路径,所以访问软链接的时候,实际上相当于访问到了另外一个文件,所以软链接是可以跨文件系统的,甚至目标文件被删除了,链接文件还是在的,只不过打不开指向的文件了而已

3、文件系统的层次结构?

  1. 用户接口文件系统需要向上层的用户提供一些简单易用的功能接口。这层就是用于处理用户发出的系统调用请求(Read、Write、Open、 Close 等系统调用。
  2. 文件目录系统户是通过文件路径来访问文件的, 因此这一层需要根据用户给出的文件路径找到相应的FCB或索引结点。所有和目录、目录项相关的管理工作都在本层完成,如:管理活跃的文件目录表、管理打开文件表等。
  3. 存取控制模块:为了保证文件数据的安全,还需要验证用户是否有访问权限。这一层主要完成了文件保护相关功能。
  4. 逻辑文件系统与文件信息缓冲区户指明想要访问文件记录号, 这一层需要将记录号转换为对应的逻辑地址。
  5. 物理文件系统:这一层需要把上一层提供的文件逻辑地址转换为实际的物理地址。
  6. 辅助分配模块:负责文件存储空间的管理, 即负责分配和回收存储空间。
  7. 设备管理模块:直接与硬件交互,负责和硬件直接相关的一些管理工作。如:分配设备、分配设备缓冲区、磁盘调度、启动设备、释放设备等。

用一个例子来辅助记忆文件系统的层次结构:

假设某用户请求删除文件 “D:/工作目录/学生信息.xlsx” 的最后100条记录。

  1. 用户需要通过操作系统提供的接口发出上述请求——用户接口
  2. 由于用户提供的是文件的存放路径,因此需要操作系统一层一层地查找目录,找到对应的目录项——文件目录系统
  3. 不同的用户对文件有不同的操作权限,因此为了保证安全,需要检查用户是否有访问权限—— 存取控制模块(存取控制验证层)
  4. 验证了用户的访问权限之后,需要把用户提供的“记录号”转变为对应的逻辑地址——逻辑文件系统与文件信息缓冲区
  5. 知道了目标记录对应的逻辑地址后,还需要转换成实际的物理地址——物理文件系统
  6. 要删除这条记录,必定要对磁盘设备发出请求——设备管理程序模块
  7. 删除这些记录后,会有一些盘块空闲,因此要将这些空闲盘块回收——辅助分配模块


4、磁盘调度算法?

  1. 先来先服务算法(FCFS)
  • 根据进程请求访问磁盘的先后顺序进行调度
  • 假设磁头的初始位置是100号磁道,有多个进程先后陆续地请求访问 55、58、39、18、90、160、 150、38、184 号磁道。
  • 按照 FCFS 的规则,按照请求到达的顺序,磁头需要依次移动到 55、58、39、18、90、160、150、 38、184 号磁道。

  1. 最短寻找时间优先(SSTF)
  • SSTF 算法会优先处理的磁道是与当前磁头最近的磁道。可以保证每次的寻道时间最短,但是并不能保证总的寻道时间最短。(其实就是贪心算法的思想,只是选择眼前最优,但是总体未必最优)
  • 假设磁头的初始位置是100号磁道,有多个进程先后陆续地请求访问 55、58、39、18、90、160、150、38、184 号磁道。

  1. 扫描算法(SCAN)
  • SSTF 算法会产生饥饿的原因在于:磁头有可能在一个小区域内来回来去地移动。为了防止这个问题, 可以规定,只有磁头移动到最外侧磁道的时候才能往内移动,移动到最内侧磁道的时候才能往外移动。这就是扫描算法(SCAN)的思想。由于磁头移动的方式很像电梯,因此也叫电梯算法
  • 假设某磁盘的磁道为 0~200号,磁头的初始位置是100号磁道,且此时磁头正在往磁道号增大的方向 移动,有多个进程先后陆续地请求访问 55、58、39、18、90、160、150、38、184 号磁道。

  1. 循环扫描算法(C-SCAN)
  • SCAN算法对于各个位置磁道的响应频率不平均,而 C-SCAN 算法就是为了解决这个问题。规定只有 磁头朝某个特定方向移动时才处理磁道访问请求,而返回时直接快速移动至起始端而不处理任何请 求
  • 假设某磁盘的磁道为 0~200号,磁头的初始位置是100号磁道,且此时磁头正在往磁道号增大的方向 移动,有多个进程先后陆续地请求访问 55、58、39、18、90、160、150、38、184 号磁道。


相关文章
|
3月前
|
Java 关系型数据库 Linux
在Linux中,操作系统的主要组成部分有哪些?
在Linux中,操作系统的主要组成部分有哪些?
|
4月前
|
Linux 调度
部署03---Linux操作系统的诞生,Linux操作系统由系统的内核和系统的操作系统所组成
部署03---Linux操作系统的诞生,Linux操作系统由系统的内核和系统的操作系统所组成
|
6月前
操作系统----操作系统的特征
操作系统----操作系统的特征
86 0
|
6月前
|
算法
从0回顾操作系统---系列三
死锁与活锁 1、什么是死锁?死锁产生的条件? 什么是死锁: ● 在两个或者多个并发进程中,如果每个进程持有某种资源而又等待其它进程释放它或它们现在保持着的资源,在未改变这种状态之前都不能向前推进,称这一组进程产生了死锁。 ● 通俗的讲就是两个或多个进程无限期的阻塞、相互等待的一种状态。 死锁产生的四个必要条件:(有一个条件不成立,则不会产生死锁) ● 互斥条件:一个资源一次只能被一个进程使用; ● 请求与保持条件:一个进程因请求资源而阻塞时,对已获得资源保持不放; ● 不剥夺条件:进程获得的资源,在未完全使用完之前,不能强行剥夺; ● 循环等待条件:若干进程之间形成一种头尾相接的环形等待资源关
|
6月前
|
调度 数据安全/隐私保护 数据格式
从0开始回顾操作系统---系列一
概述 1、什么是操作系统 ● 操作系统简称OS,负责管理协调计算机硬件与软件资源工作的系统软件。 ● 屏蔽了硬件层的复杂性,为上层应用软件与用户提供易用的服务。 2、操作系统主要有哪些功能? 操作系统最主要的功能: ● 处理器(CPU)管理:CPU的管理和分配,主要指的是进程管理。 ● 内存管理:内存的分配和管理,主要利用了虚拟内存的方式。 ● 外存管理:外存(磁盘等)的分配和管理,将外存以文件的形式提供出去。 ● I/O管理:对输入/输出设备的统一管理。 除此之外,还有保证自身正常运行的健壮性管理,防止非法操作和入侵的安全性管理。 3、什么是系统调用?有哪几类? 根据进程访问资源的特点,
|
6月前
|
消息中间件 缓存 算法
从0开始回顾操作系统---系列二
进程管理 1、进程和线程的区别? 进程:一个正在运行中的程序就是一个进程,进程包括程序段、数据段、PCB三部分。 ● 程序段就是程序的代码; ● 数据段就是程序运行时产生的数据(比如全局变量、局部变量等); ● PCB中包含操作系统对其进行管理的各种信息(如进程标识符PID,进程当前状态,进程优先级) 线程:线程是属于进程的,是一个基本的 CPU 执行单元,是程序执行流的最小单元。 主要区别如下: ● 调度:进程是资源分配的基本单位,线程是程序执行的基本单位。 ● 开销:线程上下文切换开销小,进程线程间切换开销大。 ● 切换: 同一进程间线程切换不会引起进程切换,不同进程间线程切换会引
|
6月前
|
存储 Java
从0开始回顾操作系统---系列六
IO多路复用 1、讲一讲IO多路复用? IO多路复用模型指的是:使用单个进程/线程同时处理多个网络连接IO,他的原理就是select、poll、epoll 不断轮询所负责的所有 socket,当某个socket有数据到达了,就通知用户进程。该模型的优势并不是对于单个连接能处理得更快,而是在于能处理更多的连接。 2、select、poll 和 epoll 之间的区别 1. select:时间复杂度 O(n) ● select 仅仅知道有 I/O 事件发生,但并不知道是哪几个流,所以只能无差别轮询所有流,找出能读出数据或者写入数据的流,并对其进行操作。所以 select 具有 O(n) 的无差
|
6月前
|
存储 算法 C语言
从0开始回顾操作系统---系列四
内存管理 1、什么是内存管理 操作系统对内存的划分和动态分配就是内存管理,主要可以分为: ● 内存空间的扩充(实现虚拟性) ● 内存空间的分配与回收 ● 地址转换:操作系统负责实现逻辑地址到物理地址的转换 ● 存贮保护:保证各进程在自己的内存空间内运行,不会越界访问 2、内存管理机制和内存管理方式有哪些? 1. 分块管理 ● 是连续管理的一种,把内存分为几个大小相等且固定的块,每个进程占用其中一个,如果进程很小的话,会浪费大量的空间。已经淘汰。 2. 分页管理 ● 把内存分为若干个很小的页面,相对比分块的划分力度更大一些。提高内存利用率。减少碎片,页式管理通过页表对应逻辑地址和物理地址。
|
Linux 编译器 C语言
【Linux:程序地址空间--原来操作系统也喜欢画大饼】
【Linux:程序地址空间--原来操作系统也喜欢画大饼】
88 0
|
存储 缓存 安全
【Linux】操作系统&&进程概念
冯诺依曼体系结构、操作系统的概念、进程的概念、创建和杀死进程、创建子进程。
下一篇
无影云桌面