软考系统架构设计师考这样的题,大家可能觉得有问题?

我对这个题的看法,

1. 首先作为一个架构师,需要了解操作系统的基础知识吧,这个绝对是没争议的,作为程序员必须要熟悉的基础,要了一定的层次,如果还不懂操作系统的知识,那还算是合格的架构师?

2. 这个题同样考察了一定的思维逻辑在里面,属于比较综合的题型,包括对一维数组、二维数组的理解,操作系统缺页中断的理解,高级语言嵌套循环的写法,等等,涉及到的知识比较广,又比较基础,所以是对一个人IT的基础知识的考察。

如果基础都不懂?架构师? 别闹了,后面还有排队的,你先靠后...

某虚拟存储系统采用最近最少使用(LRU)页面淘汰算法,假定系统为每个作业分配4个页面的主存空间,其中一个页面用来存放程序。现有某作业的
程序如下:
Var A: Array[1..100,1..100] OF integer;
i,j: integer;
FOR i:=1 to 100 DO
FOR j:=1 to 100 DO
A[i,j]:=0;
设每个页面可存放200个整数变量,变量i、j存放在程序页中。初始时,程序及i、j均已在内存,其余3页为空。若矩阵A按行序存放,那么当程序执行完后共产
生( )次缺页中断;若矩阵A按列序存放,那么当程序执行完后共产生( )次缺页中断。
A.50
B.100
C.5000
D.10000

A.50
B.100
C.5000
D.10000

若矩阵A按行序存放,什么意思呢?

什么是行序、什么是列序?由题意中描述的每个页面存放200个遍历,行序的意思就是,2行(100*100矩阵)的数据由一个页面存储,同理列序意思就是2列的数据由一个页面存储。

一图胜千言,我们看下绘解的过程吧!!!

矩阵为 100*100,我这里更喜欢叫它二维数组,那么存放了10000个数据,每200个数据可以存放到内存的一个页面中。

按行序存放的二维数组,每2行就可以占用一个内存页面,初始状态内存中的3个页面都是空的,那么访问第0和1行时,发生一次却也中断,访问2和3、4和5行的时候也会发生缺页中断。

因为内存中只有3个页面空闲了,那么访问6和7行的时候,会按一定的算法淘汰掉之前用过的页面,也会发生缺页中断。

总结:对于二维数组,每2行发生一次缺页中断,总共100行,也就是总共发生了50次缺页中断。

按列序存储就不一样了, 二维数组中的第0列和第1列,存放在内存中的一个页面,第2和3列存放在内存中的一个页面,以此类推...

题目中的嵌套循环,是按行为单位遍历二维数组,所以访问Array[0,0]、Array[0,1]发生一次缺页中断,访问Array[0,2]、Array[0,3]时候又发生一次缺页中断,那么二维数组的一行就需要发生50次缺页中断,这就是所谓的系统“抖动现象”。一共需要访问100行数据,每行50次缺页中断,因此列序存储的缺页中断次数为5000次。

如何想深入了解操作系统存储管理、缺页中断问题,可以参考以下文章:

http://www.ylaihui.com/blog/article/9276?rootCategoryId=16

某虚拟存储系统采用最近最少使用(LRU)页面淘汰算法,假定系统为每个作业分配4个页面的主存空间--软考系统架构设计师--不会做题?“猿”来绘个图解决吧相关推荐

  1. 在一个请求分页系统中,分别采用 FIFO、LRU和 OPT页面置换算法时,假如一个作业的页面走向为 4、3、2、1、4、3、5、4、3、2、1、5,当分配给该作业的物理块数M分别为 3、4时,

    页面置换算法 题目: 在一个请求分页系统中,分别采用 FIFO.LRU和 OPT页面置换算法时,假如一个作业的页面走向为 4.3.2.1.4.3.5.4.3.2.1.5,当分配给该作业的物理块数M分别 ...

  2. 【软考学习13】图解页面淘汰算法,先进先出算法、最近最少使用算法

    本文讲解了操作系统中进程读内存时,维护高速缓存的页面淘汰算法,其中重点讲解了先进先出算法和最近最少使用算法,学习高速缓存 Cache 提高程序执行效率的原理. 一.为什么要用页面淘汰算法 在计算机的存 ...

  3. 看动画轻松理解「链表」实现「LRU缓存淘汰算法」

    作者 | 程序员小吴,哈工大学渣,目前正在学算法,开源项目 「 LeetCodeAnimation 」5500star,GitHub Trending 榜连续一月第一. 本文为 AI科技大本营投稿文章 ...

  4. 算法必知 --- LRU缓存淘汰算法

    作者:_code_x 链接:https://www.jianshu.com/p/b7fed77324b9 写在前 就是一种缓存淘汰策略. 计算机的缓存容量有限,如果缓存满了就要删除一些内容,给新内容腾 ...

  5. 数据结构与算法 / LRU 缓存淘汰算法

    一.诞生原因 缓存是一种提供数据读取性能的技术,在硬件设计.软件开发中有广泛的应用,比如常见的 CPU 缓存,DB 缓存和浏览器缓存等.但是缓存的大小是有限的,需要一定的机制判断哪些数据需要淘汰,即: ...

  6. 06 | 链表(上):如何实现LRU缓存淘汰算法?

    缓存 作用 缓存是一种提高数据读取性能的技术,在硬件设计.软件开发中都有着非常广泛的应用,比如常见的 CPU 缓存.数据库缓存.浏览器缓存等等. 淘汰策略 常见的策略有三种:先进先出策略 FIFO(F ...

  7. 看动画轻松理解「链表」实现「 LRU 缓存淘汰算法」

    作者 | 吴至波 责编 | 胡巍巍 快速挑战Python全栈工程师: https://edu.csdn.net/topic/python115?utm_source=csdn_bw 前几节学习了「链表 ...

  8. 看动画理解「链表」实现LRU缓存淘汰算法

    前几节学习了「链表」.「时间与空间复杂度」的概念,本节将结合「循环链表」.「双向链表」与 「用空间换时间的设计思想」来设计一个很有意思的缓存淘汰策略:LRU缓存淘汰算法. 循环链表的概念 如上图所示: ...

  9. 操作系统——页面淘汰算法

    地址映射过程中,若在页面中发现所要访问的页面不在内存中,则产生缺页中断.当发生缺页中断时,如果操作系统内存中没有空闲页面,则操作系统必须在内存选择一个页面将其移出内存,以便为即将调入的页面让出空间.而 ...

  10. leetcode刷题:LRU缓存淘汰算法

    题目: 分析: 计算机的缓存容量有限,如果缓存满了就要删除一些内容,给新内容腾位置.但问题是,删除哪些内容呢?我们肯定希望删掉哪些没什么用的缓存,而把有用的数据继续留在缓存里,方便之后继续使用.那么, ...

最新文章

  1. Cmake软件编译opencv报错,CMake Warning at cmake/OpenCVDownload.cmake:193 (message): FFMPEG: Download...
  2. 【Python】20个小技巧,让数据可视化图表更专业!
  3. 20165230 2017-2018-2 《Java程序设计》第9周学习总结
  4. 我在美国与“狼”共舞的日子(7)
  5. r语言编程基础_这项免费的统计编程课程仅需2个小时即可学习R编程语言基础知识
  6. 【总结】C++逻辑与或
  7. 手机连接WIFI后无法上网,是怎么回事?
  8. 双向链表中基本函数的实现
  9. linux在当前目录下打开终端,linux - 终端:在窗口中打开当前路径? - Ubuntu问答...
  10. fedora yum无法正常运行问题的解决
  11. Hadoop - 任务调度系统比较
  12. Java并发编程之ReentrantReadWriteLock详解
  13. 谭浩强版本C语言课后习题第二章
  14. OA 系统中的流程管理
  15. 在ourdev上看的一个帖子
  16. 他称向导师下跪,仍被强制退学,5年博士白读,双方各执一词,同门师兄也有回应!...
  17. 思维导图带你了解22个职场学习网站!亲测好用
  18. Comparable
  19. EditPlus格式化xml文档
  20. FPGA数字时钟(可暂停调数,含代码)

热门文章

  1. performSelector延时调用导致的内存泄露
  2. 才发现Nero8出现了问题
  3. 招商银行笔试题之糖果分配
  4. Siebel 数学运算
  5. 关于智能名片小程序CRM系统,大家认为这种如何?
  6. allure如何定制Pytest自动化测试报告样式
  7. QQ向陌生人聊天的autoit脚本
  8. 嵌入式操作系统介绍之 NuttX
  9. spring boot中mybatisPlus代码生成器源码
  10. k3cloud怎样使金额字段显示金额符号