两个月冲刺软考——概念+求已知内存按字节编址从(A)…到(B)…的存储容量+求采用单/双缓冲区需要花费的时间计算 类型题目讲解

本文主要是介绍两个月冲刺软考——概念+求已知内存按字节编址从(A)…到(B)…的存储容量+求采用单/双缓冲区需要花费的时间计算 类型题目讲解,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1.四个周期的区别与联系

时钟周期:也称为CPU周期机器周期是CPU操作的基本时间单位。

指令周期:是指CPU执行一条指令所需的全部时间。一个指令周期通常由多个时钟周期组成,因为执行一条指令可能需要多个步骤,如取指令、译码、执行、访存和写回等。

总线周期:总线周期是数据在计算机总线上传输所需的时间。 它涉及CPU与其他系统组件(如内存、输入/输出设备)之间的数据传输。一个总线周期可能包括多个时钟周期。

CPU是在一个总线周期结束时响应DMA(直接内存访问)请求的。

补充(DMA响应的过程):当外围设备准备好进行数据传输时,它会向DMA控制器发出一个DMA请求信号;DMA控制器接收到请求后,会根据设定的优先级和当前总线状态决定是否立即响应。如果总线空闲,DMA控制器会向CPU发出总线请求(HOLD信号),请求控制总线;CPU在完成当前的总线周期后,会释放总线控制权,DMA控制器获得总线控制权,开始进行数据传输;DMA控制器接管总线后,直接从内存或外设进行数据读写操作。这个过程不需要CPU的参与,数据可以直接在内存和外设之间传输;数据传输完成后,DMA控制器会释放总线控制权,并向CPU发送一个中断信号,告知数据传输已经完成;CPU响应中断,执行必要的后续处理,如检查传输状态、准备下一次数据传输等。

2.三种寻址方式

先补充一下:机器指令是一组有意义的二进制代码。其格式为:操作码字段+地址码字段,还有操作数、寄存器字段、立即数等等。

寄存器寻址:操作数直接存储在CPU内部的寄存器中。这种寻址方式的速度非常快,因为不需要访问内存,操作数已经在寄存器中了。

立即寻址:操作数直接包含在指令中,作为指令的一部分存储在代码段。通常用于将常数或立即数加载到寄存器中,或者用于算术运算和逻辑运算。

直接寻址:指令中包含了操作数在内存中的确切地址。这种寻址方式允许CPU直接访问内存中的特定位置,无需额外的地址计算。

间接寻址:它在指令中不直接给出操作数的地址或值,而是给出一个包含操作数地址的寄存器。

其速度排序为:寄存器寻址>立即寻址>直接寻址>间接寻址

3.求已知内存按字节编址从(A)…到(B)…的存储容量

题目中通常给出的十六进制,这里A取B3000H,B取DABFFH先求出它们中间有多大区域:A-B+1,即(DABFFH+1)-B3000H=27C00H,换成十进制为162816/1024=159K。

4.求采用单/双缓冲区需要花费的时间计算

这种类型的题目当中一般会有三个时间段:数据先从磁盘输入到缓冲区中,再从缓冲区传送到用户工作区,最后进行系统处理。时间取值分别设为A、B、C。

对于单缓冲区:当时间段B结束之后,缓冲区便处于空闲状态了,故工作区处理数据的同时,下一波数据便可以开始往缓冲区里传输了,所以总时间为:(15+5)*10+1=201.这里的1表示最后一个数据的处理时间。

  • 当A>C时,总时间=n*(A+B)+C;

  • 当A<C时,总时间=n*(C+B)+A;

对于双缓冲区:顾名思义有两个缓冲区来接受或传送数据,可以实现三个时间段并行工作。

  • 当A>C时,总时间=n*A+B+C;

  • 当A<C时,总时间=n*(C+B)+A;

题目中符合A>C的情况,故总时间为10*15+5+1=156

两个月冲刺中级软件设计师,欢迎大家一起讨论交流,同时也希望各位大佬们指出错误,我这边及时修改。

这篇关于两个月冲刺软考——概念+求已知内存按字节编址从(A)…到(B)…的存储容量+求采用单/双缓冲区需要花费的时间计算 类型题目讲解的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1131430

相关文章

go中的时间处理过程

《go中的时间处理过程》:本文主要介绍go中的时间处理过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1 获取当前时间2 获取当前时间戳3 获取当前时间的字符串格式4 相互转化4.1 时间戳转时间字符串 (int64 > string)4.2 时间字符串转时间

C# 比较两个list 之间元素差异的常用方法

《C#比较两个list之间元素差异的常用方法》:本文主要介绍C#比较两个list之间元素差异,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录1. 使用Except方法2. 使用Except的逆操作3. 使用LINQ的Join,GroupJoin

怎样通过分析GC日志来定位Java进程的内存问题

《怎样通过分析GC日志来定位Java进程的内存问题》:本文主要介绍怎样通过分析GC日志来定位Java进程的内存问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、GC 日志基础配置1. 启用详细 GC 日志2. 不同收集器的日志格式二、关键指标与分析维度1.

Java内存分配与JVM参数详解(推荐)

《Java内存分配与JVM参数详解(推荐)》本文详解JVM内存结构与参数调整,涵盖堆分代、元空间、GC选择及优化策略,帮助开发者提升性能、避免内存泄漏,本文给大家介绍Java内存分配与JVM参数详解,... 目录引言JVM内存结构JVM参数概述堆内存分配年轻代与老年代调整堆内存大小调整年轻代与老年代比例元空

嵌入式数据库SQLite 3配置使用讲解

《嵌入式数据库SQLite3配置使用讲解》本文强调嵌入式项目中SQLite3数据库的重要性,因其零配置、轻量级、跨平台及事务处理特性,可保障数据溯源与责任明确,详细讲解安装配置、基础语法及SQLit... 目录0、惨痛教训1、SQLite3环境配置(1)、下载安装SQLite库(2)、解压下载的文件(3)、

Golang如何对cron进行二次封装实现指定时间执行定时任务

《Golang如何对cron进行二次封装实现指定时间执行定时任务》:本文主要介绍Golang如何对cron进行二次封装实现指定时间执行定时任务问题,具有很好的参考价值,希望对大家有所帮助,如有错误... 目录背景cron库下载代码示例【1】结构体定义【2】定时任务开启【3】使用示例【4】控制台输出总结背景

C++高效内存池实现减少动态分配开销的解决方案

《C++高效内存池实现减少动态分配开销的解决方案》C++动态内存分配存在系统调用开销、碎片化和锁竞争等性能问题,内存池通过预分配、分块管理和缓存复用解决这些问题,下面就来了解一下... 目录一、C++内存分配的性能挑战二、内存池技术的核心原理三、主流内存池实现:TCMalloc与Jemalloc1. TCM

Python并行处理实战之如何使用ProcessPoolExecutor加速计算

《Python并行处理实战之如何使用ProcessPoolExecutor加速计算》Python提供了多种并行处理的方式,其中concurrent.futures模块的ProcessPoolExecu... 目录简介完整代码示例代码解释1. 导入必要的模块2. 定义处理函数3. 主函数4. 生成数字列表5.

C++ 函数 strftime 和时间格式示例详解

《C++函数strftime和时间格式示例详解》strftime是C/C++标准库中用于格式化日期和时间的函数,定义在ctime头文件中,它将tm结构体中的时间信息转换为指定格式的字符串,是处理... 目录C++ 函数 strftipythonme 详解一、函数原型二、功能描述三、格式字符串说明四、返回值五

从基础到进阶详解Pandas时间数据处理指南

《从基础到进阶详解Pandas时间数据处理指南》Pandas构建了完整的时间数据处理生态,核心由四个基础类构成,Timestamp,DatetimeIndex,Period和Timedelta,下面我... 目录1. 时间数据类型与基础操作1.1 核心时间对象体系1.2 时间数据生成技巧2. 时间索引与数据