面试八股文攻略(五)—— 操作系统

这篇具有很好参考价值的文章主要介绍了面试八股文攻略(五)—— 操作系统。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、 操作系统的基本功能

  1. 进程管理:进程是计算机中最基本的资源,操作系统负责进程的创建、销毁、调度和同步。

  2. 内存管理:操作系统负责分配和管理内存资源,保证程序能够正常运行。

  3. 文件系统管理:操作系统负责文件的创建、管理和访问,提供文件的读写接口。

  4. 设备管理:操作系统负责管理设备的资源,包括设备驱动程序的加载、设备资源的分配和管理。

  5. 安全管理:操作系统对系统中的资源进行安全控制,包括用户身份认证、访问权限控制、进程隔离等。

  6. 网络管理:操作系统负责计算机的网络连接、数据传输和路由管理。

二、 内存管理

2.1 概念

1.负责内存空间的分配与回收
2.提供某种技术(虚拟存储或自动覆盖)从逻辑.上对内存空间进行扩充。
3.提供地址转换功能,负责程序的逻辑地址与物理地址的转换
4.提供内存保护功能。保证各进程在各自存储空间内运行,互不干扰

2.2 地址转换

概念:转换逻辑地址和物理地址
方法
  • 绝对装入
    编译时产生绝对地址
  • 可重定位装入
    装入时进行地址转换
  • 动态装入
    运行时进行地址转换

2.3 内存保护

在 CPU 设置上下线寄存器,管理地址上下界,防止越界。使用 重定位寄存器(存了最小的物理地址)和 界地址寄存器(存了最大的逻辑地址)防止地址越界。

三、 内存分配

3.1 连续分配存储

3.1.1 单一连续分配

** 基本思想: ** 内存只分系统与用户区
只能用于单用户,单任务的 OS 中
软件简单,硬件要求低

3.1.2 固定分区分配

基本思想:内存分成数个连续区域储存程序
建立分区使用表,按大小排序

3.1.3 动态分区分配

设立空闲分区表与空闲分区链,按照设定的算法进行分配和回收。回收时会自动和旁边的空闲分区合并地址,不相邻才会生成新的表项。

算法:

  • 首次适应算法
    按分区先后从头查找到合适的分区
  • 循环首次适应算法
    从上次分配的分区开始查找
  • 最佳适应算法
    找到大小和所需相差最小的分区
  • 最坏适应算法
    挑最大的分区
  • 快速适应算法
    根据容量设立空闲分区表,进行管理调用
3.1.4 伙伴系统

分区划分:大小均为 2 的 k 次幂

根据内存大小判断使用哪种分区。若不存在空闲分区,则在大一级的分区中寻找空闲分区,找到后将其分割,划定恰当分区存储。回收时将同等大小的分区合并成大一级的分区再回收。

3.1.5 哈希算法分配

根据空闲分区大小计算哈希函数转换成空闲分区链表

3.1.6 可重定位分区

将每个已分配分区中的空闲内存通过紧凑处理成一个大块空闲分区
优点:提高内存利用率
缺点:降低了程序的执行速度,增加了系统开销

3.2 离散分配

3.2.1 基本概念

通过地址变换实现。并且设置了多级页表进行缓存,这些查询能力是基于能并行查询的寄存器实现的。

3.2.2 分页存储
基本概念
  • 页面:将进程的逻辑地址分成数个大小相等的片
  • 物理块:内存分成和页面相等大小的存储块
  • 地址结构:页号 + 偏移量
  • 页表:实现逻辑页号向物理块号的转变
优点:
  • 页内碎片小,内存利用高
  • 实现了离散分配,消除了程序浮动
  • 便于存储访问,有利于代码共享
缺点:
  • 需要专门的硬件支持,尤其是快表
  • 内存访问效率下降
  • 不支持动态链接
3.2.3 分段存储

将地址空间分成若干段,每段都有自己的段号+段内地址。
易于实现信息(段)共享,若干个进程可共享一个分段。

3.2.4 分段和分页的区别
信息单位

分页:物理单位,满足系统管理需要
分段:逻辑单位,满足用户的需要

大小

分页:大小固定,系统决定,由硬件实现
分段:段长不固定,程序决定,由编译程序划分

地址空间

分页:一维,线性地址空间
分段:二维,地址由段名和段内地址决定

共享和动态链接

分页:不易实现
分段:很易

3.2.5 最终解决方案:段页式存储

先将程序分成若干个段,再将段分成若干个页。
地址 = 段号 + 段内页号 + 页内地址。

物理块的分配策略
  • 固定分配局部置换:分配完成则整个运行不再改变
  • 可变分配全局置换:分配部分物理块,并保持一个空闲物理块队列用于置换
  • 可变分配局部置换:发现缺页时,只允许从该进程中调出一页。且进程分配的物理块数随缺页频数增减
页面置换算法
  • 最佳置换算法(OPR)
    • 淘汰策略
      以后永不使用的页面
      最长时间内不被访问的页面
  • 先进先出(FIFO)
    • 淘汰策略:淘汰最先进入的页面
    • 特点:
      实现简单
      进程实际运行的规律不相适应
  • 最近最久未使用(LRU)
    需要寄存器寄存访问情况
    要消耗硬件资源
  • 最少使用(LFU)
  • 页面缓冲算法(PBA)
    淘汰的页被换入
    空闲页面链表:物理块挂载到链表末尾
    已修改页面链表:当链表中页面到达一定数量后集中写回磁盘
内存颠簸
  1. 概念
    缺页中断更换掉的页面是很快又要访问的页面,导致缺页中断迅速的再次发生,急剧的降低效率。
  2. 解决方案
    替换策略不当则修改替换算法
    运行程序过多则设法减少程序数量
段页式分配取一次数据要访问几次内存

三次以上
第一次是从段表地址寄存器中得到段表的初始地址后再访问段表,从而得到内存中相应段的页表地址
第二次是访问页表以获取要访问的物理地址
第三次我们才能访问我们真正需要访问的物理单元。

四、虚拟寄存器

4.1概念

在磁盘中划出一个区域,用于存放正在运行的程序中当做内存使用。运行不到的部分,需要运行时再调入。
具有调入和置换功能的逻辑存储器系统,逻辑容量为内存与外存容量和。运行速度接近内存,存储成本接近于外存

4.2 作用

  • 虚拟内存:将主存视为一个在磁盘上的高速缓存使用。缓解物理内存不足的压力。
  • 内存管理:给每个进程提供了一致的地址空间
  • 内存保护:保护每个进程的地址空间不被其他进程破坏

4.3 生效的原因

程序执行时局限于某个部分,访问的存储空间也在某个区域中。程序中存在大量循环操作,地址访问不断重复在某个范围。所以,可以将这部分重复执行的程序放在指定位置,作为外置内存的存在。

4.4 特点

  • 多次性:程序分多次调入内存运行
  • 对换性:运行中进行调入调出,有效的提高了内存的利用率
  • 虚拟性:逻辑上扩充了内存的容量(最重要的特征与目标)

4.5 实现方法

  • 分页请求系统:
    在分页基础上增加请求调页和页面置换功能
    装入部分页面便会启动运行
  • 分段请求系统:
    在分段基础上增加请求调段和分段置换功能

五、作业调度

5.1 调度的种类

  • 高级调度:作业调度
    判断哪个后备作业能被调入内存运行。为其创建进程,分配资源,再插入就绪队列
  • 中级调度:在虚拟存储器中引入,于内,外存对换区进行进程对换
  • 低级调度:进程调度
    决定就绪队列中哪个进程获得 CPU
    主要功能:
    保存处理机现场信息
    按算法选取进程
    分配处理机给进程

5.2 调度算法

  • 先来先服务(FCFS)
    较有利于长作业。有利于 CPU 繁忙的作业,不利于 I/O 繁忙的作业
  • 短作业优先(SJF / SPF)
    不利于长作业。没有考虑紧迫度。难以估计运行时间
  • 优先权优先
    照顾紧迫度高的作业

六、磁盘存储器

6.1 类型:

  • 固定头磁盘:每条磁道都有一个磁头读写。可访问所有磁道,并行读写。
  • 移动头磁盘:一个盘面只有一个磁头,只能串行读写,结构简单

6.2 访问策略

先来先服务FCFS

优点:公平,简单
缺点:未对寻道时间进行优化,搜索时间较长

最短寻道优先SSTF

优点:寻道时间最短
缺点:平均时间不一定最短,可能导致IO请求被处理太快

扫描算法SCAN

磁头单方向移动,到边缘后反向移动
又称电梯调度算法
消除了饥饿现象

循环扫描算法CSCAN

不再反向移动,而是回到起点重新移动

七、 中断

7.1 种类

外中断

CPU 指令以外的时间发生
如 IO 中断结束

内中断

即异常,CPU 内部事件引起的中断。如非法指令,地址越界。
内外区别则在于 CPU 内外事件引起

系统调用

用户在程序中调用操作系统提供的一些子功能

硬中断

硬件通过中断控制器触发

软中断

代码调用 INT 指令触发

7.2 处理方案

  • 屏蔽中断:处理机处理中断时屏蔽其他中断请求
  • 嵌套中断:处理有优先级,优先处理某些中断,处理完后再处理低级中断

八、 CPU

8.1状态种类

  • 内核态:运行操作系统程序,操作硬件
  • 用户态:运行用户程序

8.2 转化方法

  • 用户到内核:中断,异常
  • 内核到用户:设置程序状态字 PSW

8.3 区别

  • 运行级别不同,用户态的运行特权级别最低,内核态的运行特权级别最高
  • 用户态的程序不能直接访问操作系统的内核数据结构和程序。内核态可以,并有一些独特的指令。
  • 用户态的内存空间和对象受限,所使用的处理器可被抢占。内核态可以访问所有的内存空间和对象,且使用的处理器不可抢占

九、 零拷贝

9.1 概念

零拷贝技术是一个思想,指的是指计算机执行操作时,CPU 不需要先将数据从某处内存复制到另一个特定区域。
3次数据拷贝、4次上下文切换。

9.2 实现方法

mmap

  1. DMA引擎传输数据到内核缓冲区(用户态->内核态)
  2. 此时内核缓冲区与用户缓冲区共享数据(内核态->用户态)
  3. 调用write方法,将用户缓冲区(共享)的数据拷贝到Socket缓冲区(用户态->内核态)
  4. 数据异步的从Socket缓冲区使用DMA引擎拷贝到网络协议引擎
  5. write方法返回(内核态->用户态)

优点:即使频繁调用,使用小块文件传输,效率也很高
缺点:不能很好的利用DMA方式,会比sendfile多消耗CPU,内存安全性控制复杂,需要避免JVM Crash问题。

sendFile

1. Linux2.1版本

拷贝数据时不经过用户态,直接将数据从内核缓冲区拷贝到Socket缓冲区。

涉及3次数据拷贝、3次上下文切换
流程:

  1. DMA引擎传输数据到内核缓冲区(用户态->内核态)
  2. 调动wirte方法直接从内核缓冲区进入socket(内核态)
  3. socket->网络协议栈
  4. wirte方法返回(内核态->用户态)
2.Linux2.4版本

直接从内核缓冲区拷贝到网络协议栈从而再一次减少了一次拷贝.
涉及2次数据拷贝、3次上下文切换
流程:
1.使用 DMA 引擎从文件拷贝到内核缓冲区
2. 从内核缓冲区将数据拷贝到网络协议栈;内核缓存区只会拷贝一些 offset 和 length 信息到 SocketBuffer,基本无消耗。
3. socket->网络协议栈

优点:可以利用DMA方式,消耗CPU较少,大块文件传输效率高,无内存安全新问题。
缺点:小块文件效率低于mmap方式,只能是BIO方式传输,不能使用NIO。RocketMQ选择了第一种方式,mmap+write方式,因为有小块数据传输的需求,效果会比sendfile更好。文章来源地址https://www.toymoban.com/news/detail-437253.html

到了这里,关于面试八股文攻略(五)—— 操作系统的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【送书福利-第三十期】《Java面试八股文:高频面试题与求职攻略一本通》

    本书将碎片化的Java面试八股文知识点系统化、结构化,精选了近200道经典高频的八股文面试题,整理了近20个经典高频的实战场景解决方案,准备了10多个面试简历实操技巧。每道面试题都标注了难度指数、考查频率、开发年限和匹配岗位等,并配置了二维码,扫码即可同步

    2024年02月03日
    浏览(40)
  • C++面试八股文:了解sizeof操作符吗?

    某日二师兄参加XXX科技公司的C++工程师开发岗位第10面: 面试官:了解 sizeof 操作符吗? 二师兄:略微了解(不就是求大小的嘛。。) 面试官:请讲以下如何使用 sizeof ? 二师兄: sizeof 主要是求变量或者类型的大小。直接使用 sizeof(type) 或 sizeof(var) 即可。 面试官:嗯。 s

    2024年02月08日
    浏览(36)
  • 【面试八股文之Linux系统编程】

            ls:列出当前目录下的文件和目录。 ·       cd [目录]:切换到指定的目录。         pwd:现实当前工作目录的路径。         touch[文件名]:如果文件不存在,新建文件。         mkdir[目录名]:创建新的目录;         rm[文件名]:删除指定的文件或目录。   cp [源文

    2024年04月17日
    浏览(39)
  • 【面试】前端面试八股文

    前端思维导图 优点 大可爱html+css+js+node 全面可下载 千峰html+css 简洁漂亮 千峰js 简洁漂亮 (1)标签引用 (2)文件引用 解释型语言:JS不需要被编译为机器码而是直接执行,开发轻松 动态型语言:JS变量与任何值类型都不关联,都可以重新分配类型值 弱类型语言:变量数据

    2024年02月02日
    浏览(53)
  • 前端面试八股文汇总

    在HTML页面中的所有元素都可以看成是一个盒子 盒子的组成:内容content、内边距padding、边框border、外边距margin 盒模型的类型: 标准盒模型 margin + border + padding + content IE盒模型 margin + content(border + padding) 控制盒模型的模式:box-sizing:content-box(默认值,标准盒模型)、border-b

    2024年02月04日
    浏览(45)
  • 前端常见面试八股文

    1、H5新增标签有哪些? 一、语义化标签 header、footer、nav、aside、section、article 语义化的意义? 1、更适合搜索引擎的爬虫爬取有效的信息,利于SEO。 2、对开发团队很友好,增加了标签的可读性,结构更加的清晰,便于团队的开发和维护。 二、多媒体标签 视频标签:video 属性

    2023年04月08日
    浏览(82)
  • elasticsearch面试八股文

    es的存储和更新机制 Elasticsearch(ES)是一个开源的分布式搜索和分析引擎,其存储架构和更新机制如下: 存储架构: 索引(Index) :ES的数据组织单元是索引,每个索引可以包含多个类型(Types),类似于数据库中的表。索引是由一个或多个分片(Shard)组成的,用于将数据

    2024年02月16日
    浏览(44)
  • 前端面试八股文

    1.1、http和https的基本概念 http: 是一个客户端和服务器端请求和应答的标准(TCP),用于从 WWW 服务器传输超文本到本地浏览器的超文本传输协议。 https: 是以安全为目标的 HTTP 通道,即 HTTP 下 加入 SSL 层进行加密。其作 用是:建立一个信息安全通道,来确保数据的传输,确保

    2024年02月02日
    浏览(50)
  • Java 面试八股文

    参考: 2023年 Java 面试八股文(20w字)_json解析失败_leader_song的博客-CSDN博客

    2024年02月13日
    浏览(53)
  • Java面试必备八股文

    1.1)Java有哪几种数据类型 基本数据类型:byte(1字节) short(2字节) int(4字节) long(8字节) float(4字节) double(8字节) char(2字节) boolean(1字节) 引用数据类型:String 类 接口 抽象类 枚举 数组 1.2)JVM、JRE和JDK的关系 JVM指的是Java的虚拟机,Java程序需要运行在虚拟机上

    2023年04月08日
    浏览(50)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包