操作系统存储器管理实验报告_献上膝盖!华为工程师抛出一份堪称“举世无双”操作系统笔记...

写在前面

操作系统在计算机行业中是一门最基础的技术,无论是在开发项目还是在算法岗,我们都是基于计算机上进行的,我们对操作系统的了解体现我们从事计算机相关岗位的资深素质,因此,接下来,这篇文章给大家介绍在面试中常见的操作系统的知识点。当然,开发和算法岗对计算机网络的要求程度不同,相对而言,开发对操作系统的要求其实更高一些。但是一些基础、核心、常见的问题要求我们要掌握。

面试的过程中,为了考察面试者的基础功力,除了算法以外,操作系统将会占比很大的权重,本文就给大家全部分享吧

目录大纲

339875eeaf48883fd6600565ce22457a.png

9d23ff68c567c395f0f0afc3972d2b34.png

2664c5457c0a9bef57bcd62126e35e17.png

(由于知识点太多,Σ( ° △ °|||)︴,此处省略.............................................................)

bb3de66fa71694578e6e675fb8bef388.png

第一章、认识操作系统

  • 计算机硬件简介
  • 操作系统博物馆
  • 操作系统概念
  • 系统调用
  • 操作系统结构

现代计算机系统由一个或多个处理器、主存、打印机、键盘、鼠标、显示器、网络接口以及各种输入/输出设备构成。

5e28f5c19e9425419465acb697c1cee5.png

CPU

CPU是计算机的大脑,它主要和内存进行交互,从内存中提取指令并执行它。一个CPU的执行周期是从内存中提取第一条指令、解码并决定它的类型和操作数,执行,然后再提取、解码执行后续的指令。重复该循环直到程序运行完毕。

d06d389c6bb9f0c2e7a340adbe5fff2d.png

多线程和多核芯片

对于操作系统来讲,多线程是有意义的,因为每个线程对操作系统来说都像是一个单个的CPU。比如一个有两个CPU的操作系统,并且每个CPU运行两个线程,那么这对于操作系统来说就可能是4个CPU。

8524f240d1123af19234e19881036506.png

内存

计算机中第二个主要的组件就是内存。理想情况下,内存应该非常快速(比执行一条指令要快,从而不会拖慢CPU执行效率),而且足够大且便宜,但是目前的技术手段无法满足三者的需求。于是采用了不同的处理方式,存储器系统采用一种分层次的结构

902e0ca5b9a53fc56530544e807037b7.png

b7eefdc1510d01fe5fbd69b7e903814b.png

2ccb5a3e267bcbf2c9927897ea9c85fe.png

总线

上面的结构(简单个人计算机的组件图)在小型计算机已经使用了多年,并用在早期的IBM PC中。然而,随着处理器核内存变得越来越快,单个总线处理所有请求的能力也达到了上线,其中也包括IBMPC总线。必须放弃使用这种模式。其结果导致了其他总线的出现,它们处理I/0设备以及CPU到存储器的速度都更快。这种演变的结果导致了下面这种结构的出现。

1500ad68c4fd6f300b2b49d1e57d8399.png

第二章、进程和线程

  • 进程
  • 线程
  • 进程间通信
  • 调度

进程模型

8fa8baf7281289b72e067db2928b0509.png

多线程解决方案

6924fdbc3b38523e1ed3009a07e236fd.png

经典的线程模型

0c973a6aa8b8dda56ae4ef643aeeb2fa.png

竞态条件

15b5a636085795929cbe3de1bd35cf13.png

互斥量

338614fad735e4949b0e144fce5b5879.png

消息传递

6d6b8c723f7475fa03fae2af07dda14a.png

屏障

bc72410a1129d9d851d3cc8f21b400af.png

批处理中的调度

fafa8d93a0e5f6723ef9f1472556c42a.png

第三章、内存管理

  • 无存储器抽象
  • 一种存储器抽象:地址空间
  • 虚拟内存
  • 页面置换算法

32c3bff65e65356cc7a7b5cc5cf66948.png

运行多个程序

b56f51d477e49227cdcf901ff222b54b.png

基址寄存器和变址寄存器

5d63f1834540620b357fec1cf79c0c5c.png

交换过程

da0332dedda32f6cabeac1f723e13d67.png

95f05caa3171488c72c251781477bfe7.png

内存针对自动增长的区域,会有三种处理方式

f368a46d65acba951229866459e981cf.png

b44e528dbac09d0f7b8a350c2c031792.png

使用位图的存储管理

e2b6f0d509a1f52cf6d3266f36a8c4be.png

cb7d0c055ab80dd718d7abdaca2b9895.png

页表

f4a99a54d60b40d5eb587ad6cd1b8ad3.png

先进先出页面置换算法

6555841682782319727d1c3c24085cf4.png

工作集时钟页面置换算法

125ace1dc1c78c8001cf73cbb882511b.png

第四章、文件系统

  • 文件
  • 目录
  • 文件系统的实现
  • 文件系统的管理和优化

799f60409f27312ed762b8040d5245e7.png

文件结构

a6a2fc626e13d284cae2643cb92fb828.png

文件类型

c94166046e0f0cca35e384132f8e5166.png

层次目录系统

b853ba75a44737a2ca0788ba29df7d3d.png

链表分配

2b7b44c6fadb71a6902848883e8091c1.png

a2824a9abb32d88cb778c50cd95678f1.png

日志文件系统

27f5d4dddba45d99a497f651debed4ab.png

虚拟文件系统

facc71c44568872aba0866aa3de30aa7.png

磁盘空间管理

aacc14699e3209fc6f9a194b0cf4e202.png

物理转储和逻辑转储

70545b49fc9b68de149ec9d1ed9e2e2c.png

第五章、I/O

  • I/O设备
  • IO软件原理
  • I/O层次结构
  • 时钟

779f92093ed523fabbd53ba698f8673a.png

设备控制器

设备控制器是处理CPU传入和传出信号的系统。

c35c1b387486f724c6673e5ed3801d79.png

内存映射I/0

每个控制器都会有几个寄存器用来和CPU进行通信。通过写入这些寄存器,操作系统可以命令设备发送数据,接收数据、开启或者关闭设备等。通过从这些寄存器中读取信息,操作系统能够知道设备的状态,是否准备接受一个新命令等。

954a1911c41523a5e4c7b79c12c467b0.png

直接内存访问

f84ab4d770a7fc6ead6f659f63383bed.png

精确中断和不精确中断

4c18ebb6795fff1b831cf5517ac4641f.png

中断处理程序

14453d1b1b14292d76a99bb4e077c59c.png

磁盘

为了组织和检索数据,会将磁盘组织成特定的结构,这些特定的结构就是磁道、扇区和柱面

4bd3460f239933e328da360f0203676f.png

磁盘臂调度算法

03ee4fdd0d4fd720e87625892d3ae73d.png

第六章、死锁

  • 鸵鸟算法
  • 死锁检测和恢复
  • 死锁避免
  • 破坏死锁

f165c8d0b27e65508bf2a963d57bd7f5.png

计算机系统中有很多独占性的资源,在同一时刻只能每个资源只能由一个进程使用,我们之前经常提到过打印机,这就是一个独占性的资源,同一时刻能有两个打印机同时输出结果,否则会引起文件系统的瘫痪。所以,操作系统具有授权-个进程单独访问资源的能力。

死锁模型

Holt在1972年提出对死锁进行建模,建模的标准如下:

●圆形表示进程

●方形表示资源

878f67979cac41fb6cf31f118d05c477.png

92867daaa8fe46d34aa4975c9f1f4524.png

通信死锁

50bbd42088507d5cdc3988c9050f8bdf.png

死锁是一类通用问题,任何操作系统都会产生死锁。当每一-组进程 中的每个进程都因等待由该组的其他进程所占有的资源而导致阻塞,死锁就发生了。这种情况会使所有的进程都处于无限等待的状态。死锁的检测和避免可以通过安全和不安全状态来判断,其中一个检测方式就是银行家算法;当然你也可以使用鸵鸟算法对死锁置之不理,但是你肯定会遭其反噬。也可以在设计时通过系统结构的角度来避免死锁,这样能够预防死锁;也可以破坏死锁的四个条件来破坏死锁。资源死锁并不是唯一性的死锁,还有通信间死锁,可以设置适当的超时时间来完成。活锁和死锁的问题有些相似,它们都是-种进程无法继续向下执行的状态。 由于进程调度策略导 致尝试获取进程的一方永远无法获得资源后,进程会导致饥饿的出现。

第七章、操作系统面试题

解释一下什么是操作系统

2035a324142a6496698cc2076ed388ac.png

微内核

9a6c9a05566ce3957f057971d1013ff7.png

多处理系统的优势

6f3d2730065e98ff7cf159ed63de0b14.png

cbe5bc546a78029ec90c1d319aca02d4.png

(由于内容太多了,就不一一展示了Σ( ° △ °|||)︴)

这份【操作系统笔记】文档共有300+页,需要完整版的朋友,可以转发此文关注小编,【见下图】来获取!!

f685ef021211b0a061a16ab6d8c71b97.png
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
【实验目的】 1. 通过编写和调试存储管理的模拟程序以加深对存储管理方案的理解; 2. 熟悉虚存管理的各种页面淘汰算法; 3. 通过编写和调试地址转换过程的模拟程序以加强对地址转换过程的了解。 【实验准备】 1.虚拟存储器的管理方式  段式管理  页式管理  段页式管理 2.页面置换算法  先进先出置换算法  最近最久未使用置换算法  Clock置换算法  其他置换算法 【实验内容】 1. 实验题目 设计一个请求页式存储管理方案。并编写模拟程序实现之。产生一个需要访问的指令地址流。它是一系列需要访问的指令的地址。为不失一般性,你可以适当地(用人工指定地方法或用随机数产生器)生成这个序列,使得 50%的指令是顺序执行的。25%的指令均匀地散布在前地址部分,25%的地址是均匀地散布在后地址部分。为简单起见。页面淘汰算法采用 FIFO页面淘汰算法,并且在淘汰一页时,只将该页在页表中抹去。而不再判断它是否被改写过,也不将它写回到辅存。 2. 具体做法 产生一个需要访问的指令地址流;指令合适的页面尺寸(例如以 1K或2K为1页);指定内存页表的最大长度,并对页表进行初始化;每访问一个地址时,首先要计算该地址所在的页的页号,然后查页表,判断该页是否在主存——如果该页已在主存,则打印页表情况;如果该页不在主存且页表未满,则调入一页并打印页表情况;如果该页不足主存且页表已满,则按 FIFO页面淘汰算法淘汰一页后调入所需的页,打印页表情况;逐个地址访问,直到所有地址访问完毕。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值