两个月冲刺软考——概念+求已知内存按字节编址从(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

相关文章

在Spring Boot中浅尝内存泄漏的实战记录

《在SpringBoot中浅尝内存泄漏的实战记录》本文给大家分享在SpringBoot中浅尝内存泄漏的实战记录,结合实例代码给大家介绍的非常详细,感兴趣的朋友一起看看吧... 目录使用静态集合持有对象引用,阻止GC回收关键点:可执行代码:验证:1,运行程序(启动时添加JVM参数限制堆大小):2,访问 htt

MySQL 中查询 VARCHAR 类型 JSON 数据的问题记录

《MySQL中查询VARCHAR类型JSON数据的问题记录》在数据库设计中,有时我们会将JSON数据存储在VARCHAR或TEXT类型字段中,本文将详细介绍如何在MySQL中有效查询存储为V... 目录一、问题背景二、mysql jsON 函数2.1 常用 JSON 函数三、查询示例3.1 基本查询3.2

Java中Date、LocalDate、LocalDateTime、LocalTime、时间戳之间的相互转换代码

《Java中Date、LocalDate、LocalDateTime、LocalTime、时间戳之间的相互转换代码》:本文主要介绍Java中日期时间转换的多种方法,包括将Date转换为LocalD... 目录一、Date转LocalDateTime二、Date转LocalDate三、LocalDateTim

C++ vector的常见用法超详细讲解

《C++vector的常见用法超详细讲解》:本文主要介绍C++vector的常见用法,包括C++中vector容器的定义、初始化方法、访问元素、常用函数及其时间复杂度,通过代码介绍的非常详细,... 目录1、vector的定义2、vector常用初始化方法1、使编程用花括号直接赋值2、使用圆括号赋值3、ve

Python 迭代器和生成器概念及场景分析

《Python迭代器和生成器概念及场景分析》yield是Python中实现惰性计算和协程的核心工具,结合send()、throw()、close()等方法,能够构建高效、灵活的数据流和控制流模型,这... 目录迭代器的介绍自定义迭代器省略的迭代器生产器的介绍yield的普通用法yield的高级用法yidle

Pyserial设置缓冲区大小失败的问题解决

《Pyserial设置缓冲区大小失败的问题解决》本文主要介绍了Pyserial设置缓冲区大小失败的问题解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面... 目录问题描述原因分析解决方案问题描述使用set_buffer_size()设置缓冲区大小后,buf

golang获取当前时间、时间戳和时间字符串及它们之间的相互转换方法

《golang获取当前时间、时间戳和时间字符串及它们之间的相互转换方法》:本文主要介绍golang获取当前时间、时间戳和时间字符串及它们之间的相互转换,本文通过实例代码给大家介绍的非常详细,感兴趣... 目录1、获取当前时间2、获取当前时间戳3、获取当前时间的字符串格式4、它们之间的相互转化上篇文章给大家介

Pydantic中Optional 和Union类型的使用

《Pydantic中Optional和Union类型的使用》本文主要介绍了Pydantic中Optional和Union类型的使用,这两者在处理可选字段和多类型字段时尤为重要,文中通过示例代码介绍的... 目录简介Optional 类型Union 类型Optional 和 Union 的组合总结简介Pyd

Java调用C++动态库超详细步骤讲解(附源码)

《Java调用C++动态库超详细步骤讲解(附源码)》C语言因其高效和接近硬件的特性,时常会被用在性能要求较高或者需要直接操作硬件的场合,:本文主要介绍Java调用C++动态库的相关资料,文中通过代... 目录一、直接调用C++库第一步:动态库生成(vs2017+qt5.12.10)第二步:Java调用C++

Feign Client超时时间设置不生效的解决方法

《FeignClient超时时间设置不生效的解决方法》这篇文章主要为大家详细介绍了FeignClient超时时间设置不生效的原因与解决方法,具有一定的的参考价值,希望对大家有一定的帮助... 在使用Feign Client时,可以通过两种方式来设置超时时间:1.针对整个Feign Client设置超时时间