操作系统存储器相关习题
1 为什么要配置层次式存储器?
设置多个存储器可以使存储器两端的硬件能并行工作;
采用多级存储系统特别是Cache技术,是减轻存储器带宽对系统性能影响的最佳结构方案;
在微处理机内部设置各种缓冲存储器,减轻对存储器存取的压力。
增加CPU中寄存器数量大大缓解对存储器压力
2 可采用哪几种方式将程序装入内存?它们分别适用于何种场合?
- 绝对装入方式,只适用于单道程序环境
- 可重定位装入方式,适用于多道程序环境
- 动态运行时装入方式,用于多道程序环境;不允许程序运行时在内存中移位置
3 何谓静态链接?何谓装入时动态链接和运行时的动态链接?
静态链接是指在程序运行前,先将各目标模块及它们所需的库函数,链接成一个完整的装配模块,以后不再拆开的链接方式
装入时动态链接是指将用户源程序编译后得到的一组目标模块,在装入内存时采用边装入边链接的链接方式
运行时动态链接是指对某些目标模块的链接,是在程序执行中需要该目标模块时,才对它进行的链接
4 在进行程序链接时,应完成哪些工作?
由链接程序Linker将编译后形成的一组目标模块,以及它们需要的库函数链接在一起
形成一个完整的装入模块Load Module。主要工作是修改程序内的相对地址和修改目标程序中的外部调用标号
5 在动态分区分配方式中,应如何将各空闲分区链接成空闲分区链?
在每个分区的起始部分,设置一些控制分区分配的信息,以及用于链接各分区所用的前向指针;在分区尾部设置一个后向指针,
通过前后向链接指针,将所有空闲分区链成一个双向链。当分区分配出去后,把状态位由“0”改为“1”
6 为什么要引入动态重定位?如何实现?
在程序执行过程中,每当访问指令或数据时,将要访问的程序或数据的逻辑地址转换成物理地址,引入了动态重定位
具体实现方法是在系统中增加一个重定位寄存器,用来装入程序在内存中的起始地址,程序执行时,真正访问的内存地址是相对地址与重定位寄存器中的地址相加之和,从而实现动态重定位。
7 在采用首次适应算法回收内存时,可能出现哪几种情况?应怎样处理这些情况?
在采用首次适应算法回收内存时可能出现4种情况
- 回收区前邻空闲区。将回收区与前邻空闲区合并,将前邻空闲区大小修改为两者之和
- 回收区后邻空闲区。将两区合并,改后邻空闲区始址为回收区始址,大小为两者之和
- 回收区前后均邻空闲区。将三个分区合并,修改前邻空闲区大小为三者之和
- 回收区前后均不邻空闲区。回收区设置为空闲区表项,填入回收区始址和大小并插入空闲区队列
8 分区存储管理中常用那些分配策略?比较它们的优缺点。
分区存储管理中的常用分配策略:首次适应算法、循环首次适应算法、最佳适应算法、最坏适应算法。
- 首次适应算法优缺点:
保留了高址部分的大空闲区,有利于后来的大型作业分配;
低址部分不断被划分,留下许多难以利用的小空闲区,每次查找都从低址开始增加了系统开销。 - 循环首次适应算法优缺点:
内存空闲分区分布均匀,减少了查找系统开销;
缺乏大空闲分区,导致不能装入大型作业。 - 最佳适应算法优缺点:
每次分配给文件的都是最适合该文件大小的分区,内存中留下许多难以利用的小空闲区 - 最坏适应算法优缺点:
剩下空闲区不太小,产生碎片几率小,对中小型文件分配分区操作有利;
存储器中缺乏大空闲区,对大型文件分区分配不利。
9 在系统中引入对换后可带来哪些好处?
交换技术将暂不需要的作业移到外存,让出内存空间以调入其它作业,交换到外存的作业也可以被再次调入。
目的是解决内存紧张问题,带来的好处是进一步提高了内存利用率和系统吞吐量。
10 为实现对换,系统应具备哪几方面的功能?
系统应具备三方面功能:对换空间管理,进程换出,进程换入
11 在以进程为单位进行对换时,每次是否都将整个进程换出?为什么?
在以进程为单位进行对换时,并非每次都将整个进程换出。这是因为:
- 从结构上讲,进程由程序段、数据段和进程控制块组成的,其中进程控制块总有部分或全部常驻内存,不被换出。
- 程序段和数据段可能正被若干进程共享,此时它们也不能换出
12 为实现分页存储管理,需要哪些硬件的支持?
动态重定位技术、虚拟存储技术、多道程序设计技术
13 较详细的说明引入分段存储管理是为了满足用户哪几方面的需要。
- 方便编程。
用户通常把自己的作业按照逻辑关系划分为若干段,每段都从0编址,并有自己名字和长度。因此,希望要访问的逻辑地址是由段名和段内偏移量决定 - 信息共享。
在实现对程序和数据的共享时,是以信息逻辑单位为基础。分页系统中的页是存放信息的物理单位,无完整意义,不便于共享;段是信息的逻辑单位。为了实现段的共享,希望存储管理能与用户程序分段的组织方式相适应 - 信息保护。
对信息的逻辑单位进行保护,分段能更有效方便地实现信息保护功能 - 动态增长。
在实际应用中,有些段特别是数据段,在使用过程中会不断增长,事先又无法确切知道增长多少。分段存储管理方式能较好解决这个问题 - 动态链接。
运行时先将主程序对应的目标程序装入内存并启动运行,运行过程中又需要调用某段时,才将该段调入内存链接。所以动态链接也要求以段作为管理单位。
14 在具有快表的段页式存储管理方式中,如何实现地址变换?
在CPU给出有效地址后,由地址变换机构自动将页号P送入高速缓冲寄存器,并将此页号与高速缓存中的所有页号比较,若找到匹配页号,表示要访问的页表项在快表中。可直接从快表读出该页对应物理块号,送到物理地址寄存器中。如快表中没有对应页表项,则再访问内存页表,找到后,把从页表项中读出物理块号送地址寄存器;同时修改快表,将此页表项存入快表。但若寄存器已满,则OS必须找到合适的页表项换出
15 为什么说分段系统比分页系统更易于实现信息的共享和保护
分页系统的每个页面是分散存储的,为了实现信息共享和保护,页面之间需要一一对应,为此需要建立大量的页表项;
而分段系统的每个段都从0编址并采用一段连续的地址空间,在实现共享和保护时,只需为要共享和保护的程序设置一个段表项,将其中的基址与内存地址一一对应就能够实现
16 分段和分页存储管理有何区别?
- 页是信息的物理单位,分页是为了实现离散分配方式,以消减内存的外部零头,提高内存利用率;段则是信息的逻辑单位,它含有一组相对完整的信息
- 页的大小固定且由系统决定,由系统把逻辑地址划分为页号和页内地址两部分,是由机械硬件实现的,因而在系统中只能有一种大小的的页面;而段的长度却不固定,决定于用户所编写的程序,通常由编译程序在对原程序进行编译时,根据信息的性质来划分
- 分页的作业地址空间是一维的,而分段作业地址空间则是二维的
17 虚拟存储器有哪些特征?其中最本质的特征是什么?
虚拟存储器有多次性、对换性、虚拟性三大特征。最本质的特征是虚拟性
18 实现虚拟存储器需要哪些硬件支持?
- 请求分页(段)的页(段)表机制
- 缺页(段)中断机构
- 地址变换机构
19 实现虚拟存储器需要哪几个关键技术?
在分页请求系统中是在分页的基础上,增加了请求调页功能和页面置换功能所形成的页式虚拟存储系统。允许只装入少数页面的程序(及数据),便启动运行。
在请求分段系统中是在分段系统的基础上,增加了请求调段及分段置换功能后形成的段式虚拟存储系统。允许只装入少数段(而非所有段)的用户程序和数据,即可启动运行
20 在请求分页系统中,页表应包括哪些数据项?每项的作用是什么?
页表应包括:页号、物理块号、状态位P、访问字段 A、修改位 M 和外存地址
状态位P指示该页是否调入内存,供程序访问时参考
访问字段A用记录本页在一段时间内被访问的次数,或最近已有多长时间未被访问,提供给置换算法选择换出页面时参考
修改位M表示该页在调入内存后是否被修改过
外存地址用于指出该页在外存上的地址,通常是物理块号,供调入该页时使用。
21 在请求分页系统中,应从何处将所需页面调入内存?
请求分页系统中的缺页从何处调入内存分三种情况:
- 系统拥有足够对换区空间时,可以全部从对换区调入所需页面,提高调页速度。在进程运行前将与该进程有关的文件从文件区拷贝到对换区
- 系统缺少足够对换区空间时,不被修改的文件直接从文件区调入;当换出这些页面时,未被修改的不必换出,再调入时,仍从文件区直接调入。对于可能修改的,在换出时便调到对换区,以后需要时再从对换区调入
- UNIX 方式。未运行页面从文件区调入。曾经运行过但被换出页面,下次从对换区调入。UNIX系统允许页面共享,某进程请求的页面有可能已调入内存,直接使用不再调入。
22 在请求分页系统中,常采用哪几种页面置换算法?
采用的页面置换算法有:
最佳置换算法和先进先出置换算法,最近最久未使用(LRU)置换算法,Clock 置换算法,最少使用置换算法,页面缓冲算法等。
23 在请求分页系统中,通常采用哪种页面分配方式?为什么?
固定分配方式是基于进程的类型(交互型)或根据程序员、系统管理员的建议,为每个进程分配固定页数的内存空间,整个运行期间不再改变;采用可变分配方式有全局置换和局部置换两种,前者易于实现,后者效率高
24 实现 LRU 算法所需的硬件支持是什么?
需要寄存器和栈等硬件支持、寄存器用于记录某进程在内存中各页的使用情况,栈用于保存当前使用的各个页面的页面号。
25 试说明改进型 Clock 置换算法的基本原理
因为修改过的页面在换出时付出的开销比未被修改过的页面大,在改进型Clock算法中,既考虑页面的使用情况,还要增加置换代价的因素;在选择页面作为淘汰页面时,把同时满足未使用过和未被修改作为首选淘汰页面
26 说明请求分段系统中的缺页中断处理过程
请求分段系统中的缺页中断处理过程描述如下:
- 根据当前执行指令中的逻辑地址查页表,判断该页是否在主存储器中
- 该页标志为“0"形成缺页中断,中断装置通过交换PSW让操作系统的中断处理程序占用处理器
- 操作系统处理缺页中断处理的办法是查主存分配表找一个空闲的主存块,查页表找出该页在磁盘上位置,启动磁盘读出该页信息。
- 把从磁盘上读出的信息装入找到的主存块中。
- 当页面住处被装入主存后,应修改页表中对应的表目,填上该页所占用的主存块把标志置为“1”,表示该页已在主存储器中
- 由于产生缺页中断时的那条指令并没执行完,所以在把页面装入之后应重新执行被中断指令
27 如何实现分段共享 ?
在每个进程的段表中,用相应的表项指向共享段在内存中起始地址;配置相应的数据结构作为共享段表,在段表项中设置共享进程计数Count,每调用一次该共享段Count值增1,每当进程释放一个共享段时,Count减1,若减为0,则系统回收该共享段的物理内存,取消在共享段表中该段对应的表项;共享段应给不同的进程以不同的存取权限;不同的进程可以使用不同的段号去共享该段。
相关文章:
操作系统存储器相关习题
1 为什么要配置层次式存储器? 设置多个存储器可以使存储器两端的硬件能并行工作; 采用多级存储系统特别是Cache技术,是减轻存储器带宽对系统性能影响的最佳结构方案; 在微处理机内部设置各种缓冲存储器,减轻对存储器存取的压力。…...
QUICK 调试camera-xml解析
本文主要介绍如何在QUICK QCS6490使能相机模组。QCS6490的相机基于CameraX的框架,只需通过配置XML文件,设置相机模组的相关参数,就可以点亮相机。本文主要介绍Camera Sensor Module XML和Camera Sensor XML配置的解析,这中间需要c…...
【linux】shell脚本编写基础
shell 脚本关键字: 1、变量定义:前后不能空格 输入: zhao"Joe" echo ${zhao} echo "I am ${zhao}" 输出: yuxin I am Joe2、echo 输出 输入: echo "123" 输出: 1233、readonly 定义变…...
STM32 外设简介
STM32 外设简介 STM32 是由意法半导体 (STMicroelectronics) 开发的一系列基于 ARM Cortex 内核的微控制器,广泛应用于嵌入式系统中。STM32 系列的一个重要特点是其丰富而强大的外设模块,支持多种接口和功能,能满足工业控制、物联网、消费电…...
Django-Vue3-Admin - 现代化的前后端分离权限管理系统
项目介绍 Django-Vue3-Admin是一个基于RBAC(Role-Based Access Control)模型的综合性基础开发平台,专注于权限控制,支持列级别的细粒度权限管理。该项目采用前后端分离架构,技术栈包括: 后端: Django Django REST …...
Cesium K-means自动聚合点的原理
Cesium K-means自动聚合点的原理 Cesium 是一个开源的 JavaScript 库,用于在 Web 环境中创建 3D 地球和地图应用。它能够处理地理空间数据,并允许开发者对大规模的地理数据进行可视化展示。在一些应用中,尤其是当处理大量地理坐标点时&#…...
Vue 项目中如何解决组件之间的循环依赖
前言 在大型 Vue 项目中,组件之间的关系可能会变得非常复杂,甚至会出现循环依赖的问题。循环依赖是指两个或多个模块互相依赖,形成一个闭环。这类问题会导致项目无法正常编译或运行,甚至可能引发意想不到的错误。本文将通过通俗易…...
交通流量预测:基于交通流量数据建立模型
✅作者简介:2022年博客新星 第八。热爱国学的Java后端开发者,修心和技术同步精进。 🍎个人主页:Java Fans的博客 🍊个人信条:不迁怒,不贰过。小知识,大智慧。 💞当前专栏…...
Hot100 - 搜索二维矩阵II
Hot100 - 搜索二维矩阵II 最佳思路: 利用矩阵的特性,针对搜索操作可以从右上角或者左下角开始。通过判断当前位置的元素与目标值的关系,逐步缩小搜索范围,从而达到较高的效率。 从右上角开始:假设矩阵是升序排列的&a…...
uart_pl011.c驱动API的zephyr测试
API概述 本次测试针对uart的uart_poll_in和uart_poll_outAPI进行测试, uart_poll_in static int pl011_poll_in(const struct device *dev, unsigned char *c)这是一个轮询方式的接收函数: 功能:检查 UART 是否有新数据到达,如…...
RPA:电商订单处理自动化
哈喽,大家好,我是若木,最近闲暇时间较多,于是便跟着教程做了一个及RPA,谈到这个,可能很多人并不是很了解,但是实际上,这玩意却遍布文末生活的边边角角。话不多说,我直接上…...
小程序 - 个人简历
为了让招聘人员快速地认识自己,可以做一个“个人简历”微信小程序, 展示自己的个人信息。 下面将对“个人简历”微信小程序进行详细讲解。 目录 个人简历 创建图片目录 页面开发 index.wxml index.wxss 功能实现截图 总结 个人简历 创建图片目录…...
MySQL自启动失败(MySQL不能开机自启)解决方案_MySQL开机自启疑难杂症解决,适用Win11/Win10
问题描述(MySQL 开机自启失败) 本文解决方法,在 windows10 、 windows11 系统中均可使用。 win11 安装 MySQL 后,不能开机自启。 在服务中,手动启动服务后,可正常使用,一点异常都没有。 或者…...
储存水..
问题描述: 给定m个非负整数表示每个宽度为1的柱子的高度图,计算按此排列的柱子下雨之后能储存多少水. 思路解析: 思考一下,什么样的位置能盛水?只有在当前柱子的左边和右边都比它高的情况下才能储存住水,而储水量和左侧最高柱及右侧最高柱有关.具体来说就是和左右两侧最矮的…...
Cmake 常用操作总结
CMakeLists.txt结构 总结该文件的主要结构 cmake_minimum_required(VERSION <version>) 指定CMake的最低版本,一般都是根据项目需要设定 cmake_minimum_required(VERSION 3.10) project(<name>) 定义项目的名称,放在CMake的开头 project(…...
Kylin Server V10 下 RocketMQ 主备自动切换模式部署
一、NameServer简介 NameServer 是一个注册中心,提供服务注册和服务发现的功能。NameServer 可以集群部署,集群中每个节点都是对等的关系,节点之间互不通信。 服务注册 Broker 启动的时候会向所有的 NameServer 节点进行注册,注意这里是向集群中所有的 NameServer 节点注册…...
DevOps工程技术价值流:GitLab源码管理与提交流水线实践
在当今快速迭代的软件开发环境中,DevOps(开发运维一体化)已经成为提升软件交付效率和质量的关键。而GitLab,作为一个全面的开源DevOps平台,不仅提供了强大的版本控制功能,还集成了持续集成/持续交付(CI/CD)…...
Vue 3 中实现页面特定功能控制
在开发 Vue 应用时,我们经常会遇到需要在特定页面启用或禁用某些功能的情况。本文将以 A父.vue 页面为例,探讨如何在点击汇总菜单时仅在该页面生效,而在其他页面不生效的问题。 1. 利用 Vue 3 的 provide 和 inject 实现状态传递 Vue 3 提供…...
VLC 播放的音视频数据处理流水线搭建
VLC 用 input_thread_t 对象直接或间接管理音视频播放有关的各种资源,包括 Access,Demux,Decode,Output,Filter 等,这个类型定义 (位于 vlc-3.0.16/include/vlc_input.h) 如下: struct input_thread_t {VLC_COMMON_MEMBERS };input_thread_t 是个抽象类型,VLC 中这个类…...
何时在 SQL 中使用 CHAR、VARCHAR 和 VARCHAR(MAX)
在管理数据库表时,考虑 CHAR、VARCHAR 和 VARCHAR(MAX) 是必不可少的。此外,使用正确的工具(例如dbForge Studio for SQL Server) ,与数据库相关的任务都会变得更加容易。它是针对 SQL Server 专业人员的强大的一体化解…...
idea大量爆红问题解决
问题描述 在学习和工作中,idea是程序员不可缺少的一个工具,但是突然在有些时候就会出现大量爆红的问题,发现无法跳转,无论是关机重启或者是替换root都无法解决 就是如上所展示的问题,但是程序依然可以启动。 问题解决…...
51c自动驾驶~合集58
我自己的原文哦~ https://blog.51cto.com/whaosoft/13967107 #CCA-Attention 全局池化局部保留,CCA-Attention为LLM长文本建模带来突破性进展 琶洲实验室、华南理工大学联合推出关键上下文感知注意力机制(CCA-Attention),…...
条件运算符
C中的三目运算符(也称条件运算符,英文:ternary operator)是一种简洁的条件选择语句,语法如下: 条件表达式 ? 表达式1 : 表达式2• 如果“条件表达式”为true,则整个表达式的结果为“表达式1”…...
python爬虫:Newspaper3k 的详细使用(好用的新闻网站文章抓取和解析的Python库)
更多内容请见: 爬虫和逆向教程-专栏介绍和目录 文章目录 一、Newspaper3k 概述1.1 Newspaper3k 介绍1.2 主要功能1.3 典型应用场景1.4 安装二、基本用法2.2 提取单篇文章的内容2.2 处理多篇文档三、高级选项3.1 自定义配置3.2 分析文章情感四、实战案例4.1 构建新闻摘要聚合器…...
在Ubuntu中设置开机自动运行(sudo)指令的指南
在Ubuntu系统中,有时需要在系统启动时自动执行某些命令,特别是需要 sudo权限的指令。为了实现这一功能,可以使用多种方法,包括编写Systemd服务、配置 rc.local文件或使用 cron任务计划。本文将详细介绍这些方法,并提供…...
selenium学习实战【Python爬虫】
selenium学习实战【Python爬虫】 文章目录 selenium学习实战【Python爬虫】一、声明二、学习目标三、安装依赖3.1 安装selenium库3.2 安装浏览器驱动3.2.1 查看Edge版本3.2.2 驱动安装 四、代码讲解4.1 配置浏览器4.2 加载更多4.3 寻找内容4.4 完整代码 五、报告文件爬取5.1 提…...
【Oracle】分区表
个人主页:Guiat 归属专栏:Oracle 文章目录 1. 分区表基础概述1.1 分区表的概念与优势1.2 分区类型概览1.3 分区表的工作原理 2. 范围分区 (RANGE Partitioning)2.1 基础范围分区2.1.1 按日期范围分区2.1.2 按数值范围分区 2.2 间隔分区 (INTERVAL Partit…...
安卓基础(aar)
重新设置java21的环境,临时设置 $env:JAVA_HOME "D:\Android Studio\jbr" 查看当前环境变量 JAVA_HOME 的值 echo $env:JAVA_HOME 构建ARR文件 ./gradlew :private-lib:assembleRelease 目录是这样的: MyApp/ ├── app/ …...
视频行为标注工具BehaviLabel(源码+使用介绍+Windows.Exe版本)
前言: 最近在做行为检测相关的模型,用的是时空图卷积网络(STGCN),但原有kinetic-400数据集数据质量较低,需要进行细粒度的标注,同时粗略搜了下已有开源工具基本都集中于图像分割这块,…...
20个超级好用的 CSS 动画库
分享 20 个最佳 CSS 动画库。 它们中的大多数将生成纯 CSS 代码,而不需要任何外部库。 1.Animate.css 一个开箱即用型的跨浏览器动画库,可供你在项目中使用。 2.Magic Animations CSS3 一组简单的动画,可以包含在你的网页或应用项目中。 3.An…...
