![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
计算机组成原理
赤电惊云
机器学习小白
展开
-
C++并发编程
第1章:C++的并发世界1.1 何谓并发最简单和最基本的并发,是指两个或更多独立的活动同时发生。并发在生活中随处可见,我们可以一边走路一边说话,也可以两只手同时作不同的动作,还有我们每个人都过着相互独立的生活——当我在游泳的时候,你可以看球赛,等等。1.1.1 计算机系统中的并发计算机领域的并发指的是在单个系统里同时执行多个独立的任务,而非顺序的进行一些活动。计算机领域里,并发不是一个新事物:很多年前,一台计算机就能通过多任务操作系统的切换功能,同时运行多个应用程序;高端多处理器服务原创 2022-04-01 22:55:10 · 5730 阅读 · 6 评论 -
面试---计算机基础
1.C/C++内存有哪几种类型?C中,内存分为5个区:堆(malloc)、栈(如局部变量、函数参数)、程序代码区(存放二进制代码)、全局/静态存储区(全局变量、static变量)和常量存储区(常量)。此外,C++中有自由存储区(new)一说。全局变量、static变量会初始化为缺省值,而堆和栈上的变量是随机的,不确定的。2.堆和栈的区别?1).堆存放动态分配的对象——即那些在程序运行时动态分配的对象,比如 new 出来的对象,其生存期由程序控制;2).栈用来保存定义在函数内的非static对象,转载 2022-03-01 14:17:51 · 298 阅读 · 0 评论 -
Linux虚拟内存系统
原创 2021-11-10 22:07:24 · 545 阅读 · 0 评论 -
虚拟内存详解
1. 物理和虚拟寻址2. 地址空间3. 虚拟内存作为缓存工具3.1 DRAM缓存地组织结构3.2 页表3.3 页命中3.4 缺页3.5 分配页面4. 虚拟内存作为内存管理地工具5.虚拟内存作为内存保护地工具6.地址翻译6.1 结合高速缓存和虚拟内存6.2 利用LTB加速地址翻译6.3 多级页表6.4 端到端地地址翻译7. 内存映射7.1 共享对象8. 动态内存分配8.1 malloc和free函数8.2 使用动态内存分配的原因..原创 2021-10-27 23:01:40 · 101 阅读 · 0 评论 -
链接相关内容详解
1. 静态链接为了构造可执行文件,链接器必须完成两个主要任务:(1)符号解析(symbol resolution)目标文件定义和引用符号,每个符号对应于一个函数,一个全局变量或一个静态变量符号解析的目的是将每个符号引用正好和一个符号定义关联起来;(2)重定位(relocation)编译器和汇编器生成从地址0开始的代码和数据节。链接器通过把每个符号定义与一个内存位置关联起来,从而重定位这些节,然后所有对这些符号的引用,使得它们指向这个内存位置。链接器使用汇编器产生的重定位条目(...原创 2021-10-25 23:06:42 · 348 阅读 · 0 评论 -
异常控制流详解
现代系统通过使控制流发生突变来对这些情况做出反应。一般而言,我们把这些突变称为异常控制流(Exceptional Control Flow,ECF)。异常控制流发生在计算机系统的各个层次。比如,在硬件层,硬件检测到的事件会触发控制突变转移到异常处理程序。在操作系统层,内核通过上下文切换将控制流从一个用户进程转移到另一个用户进程。在应用层,一个进程可以发送信号到另一个进程,而jie's1.异常...原创 2021-10-23 21:57:40 · 317 阅读 · 0 评论 -
程序性能优化
编写高效的程序需要做到一下几点:第一:选择一组适当的算法和数据结构;第二:编写出编译器能够有效优化以转换成高效可执行代码的源代码;第三:针对处理运算量特别大的计算,将一个任务分成多个部分,这些部分可以在多核和多处理器的某种组合上并行地计算。 程序优化地步骤:第一:消除不必要的工作,让代码尽可能有效地执行所期望地任务。这包括消除不必要的函数调用,条件测试,内存引用。这些优化不依赖于目标机器的任何具体属性。(编译器收到妨碍优化的因素的阻碍,妨碍优化的因素就是程序...原创 2021-10-21 22:35:43 · 566 阅读 · 0 评论 -
算术和逻辑操作
1.加载有效地址2.一元和二元操作3.移位操作原创 2021-10-19 23:09:49 · 93 阅读 · 0 评论 -
压入和弹出栈数据
原创 2021-10-19 23:02:12 · 189 阅读 · 0 评论 -
访问信息详解
1.数据传送指令源操作数指定的值是一个立即数,存储在寄存器中或者内存中。目的操作数指定一个位置,要么是一个寄存器,要么是一个内存地址。注释:x86-84加了一条限制,传送指令的两个操作数不能都指向内存位置。将一个值从一个内存位置复制到另一个内存位置需要两条指令-----第一条指令将源值加载到寄存器中,第二条将寄存器值写入目的位置。 这些指令的寄存器操作数可以是16个寄存器有标号部分中的任意一个,寄存器部分的大小必须与指令最后一个字符('b','w','l','...原创 2021-10-19 22:54:13 · 259 阅读 · 0 评论 -
程序编码流程详解
总结:1.C预处理器扩展源代码,插入所有用#include命令指定的文件,扩展所有用#define声明指定的宏;2.编译器产生源文件的汇编代码,文件名为filename.s;3.汇编器将汇编代码转为二进制目标代码文件,文件名为filename.o;4.链接器将目标代码文件与实现库函数的代码合并,产生最终的可执行代码文件。...原创 2021-10-18 22:41:25 · 1610 阅读 · 0 评论 -
几种整数运算
1.无符号加法2.补码加法3.补码的非4.无符号乘法5.补码乘法原创 2021-10-17 15:47:37 · 166 阅读 · 0 评论 -
扩展一个数字的位与截断数字
1.扩展一个数字的位表示2.截断数字原创 2021-10-16 21:41:02 · 235 阅读 · 0 评论 -
有符号数和无符号数之间的转化
原创 2021-10-16 20:56:06 · 180 阅读 · 0 评论 -
常见的几种编码原理
1.补码2.反码3.原码原创 2021-10-16 16:20:40 · 294 阅读 · 0 评论 -
C语言中的移位运算
注意:逻辑右移和算术右移的区别C语言标准并没有明确定义对于有符号数使用哪种类型的右移-----算术右移或者逻辑右移都可以。这就意味着任何假设一种或者另一种右移形式的代码都可能会遇到可移植性问题。然而,实际上,几乎所有的编译器和机器组合都对有符号数使用算术右移,且许多程序员也都假设机器会使用这种右移。另一方面,对于无符号数,右移必须是逻辑的。...原创 2021-10-16 19:47:19 · 220 阅读 · 0 评论 -
信息存储理解
1.字节大小----针对32位系统和64位系统注释:ISO C99引入了一类数据类型,其数据大小是固定的,不随编译器和机器设置而变化,其中就有数据类型int32_t和int64_t,分别表示4字节和8字节。2.寻址和字节顺序----大端法和小端法 对于跨越多字节的程序对象,我们必须建立两个规则:这个对象的地址是什么,以及在内存中如何排列这些字节。在几乎所有的机器上,多字节对象都被存储为连续的字节序列,对象的地址为使用字节中最小的地址。注意:在字0x0123456...原创 2021-10-16 15:24:42 · 111 阅读 · 0 评论 -
虚拟内存理解
虚拟内存概念 虚拟内存是一个抽象的概念,它为每个进程提供一个假象,即每个进程都在独立地使用主存。每个进程看到的内存都是一致的,成为虚拟内存地址空间。在linux中,地址空间最上面的区域是保留给操作系统中的代码和数据的,这对所有进程来说都是一样的。地址空间的底部区域存放用户进程定义的代码和数据。 每个进程看到的虚拟内存地址空间由大量准确定义的区构成,每个区都有专门的功能。1. 程序代码和数据 对所有的进程来说,代码是从同一固定...原创 2021-10-13 22:36:25 · 232 阅读 · 0 评论 -
进程与线程中涉及的相关概念的理解
1.进程进程是操作系统对一个正在运行的程序的一种抽象。在一个系统上可以同时运行多个进程,而每个进程看上去是独占地使用硬件。2.并发运行指一个进程的指令和另一个进程的指令是交错执行的。在多数系统中,需要运行的进程数是多余可以运行它们的CPU个数的。传统系统在一个时刻只能执行一个程序,而先进的多核处理器同时能够执行多个程序。无论是单核还是多核系统中,一个CPU看上去都像是在并发的执行多个进程,这是通过处理器在进程间切换来实现的。3.上下文切换 操...原创 2021-10-12 22:55:18 · 51 阅读 · 0 评论 -
主存中的数据组织
1.存储字长主存的一个存储单元所包含的二进制位数; 目前大多数计算机的主存按字节编址,存储字长也不断加大,如16位字长、 32位字长和64位字长;ISA设计时要考虑的两个问题:a)如何根据字节地址读取一个32位的字?- 字的存放问题b)一个字能否存放在主存的任何字节边界?- 字的边界对齐问题2.数据存储与边界关系1)按边界对齐的数据存储2)为按边界对齐的数据存储注释:虽节省了空间,但增加了访存次数!需要在性能与容量间权衡!3.边界.原创 2021-10-12 22:15:55 · 219 阅读 · 0 评论 -
原码一位乘法
注释:逻辑左移和算术左移操作是一样的,只是算术左移相当于乘2;逻辑右移和算术右移操作不一样,逻辑右移是数据整体右移,算术右移是数据位右移,但是最高位仍然被符号位占用(符号位保持不变);...原创 2021-10-11 22:49:57 · 1282 阅读 · 0 评论 -
定点数补码加、减运算器设计
原创 2021-10-11 22:41:30 · 455 阅读 · 0 评论 -
定点数运算及溢出检测
原创 2021-10-10 20:56:27 · 483 阅读 · 0 评论 -
海明校验及其实现
原创 2021-10-10 20:51:04 · 114 阅读 · 0 评论 -
CRC校验及其实现
原创 2021-09-30 20:19:16 · 88 阅读 · 0 评论 -
奇偶校验基本原理
原创 2021-09-28 23:06:57 · 715 阅读 · 0 评论 -
定点与浮点数据表示
http://www.cs.berkeley.edu/~wkahan/关于浮点异常,见Kahan教授的《Lecture Notes on IEEE 754》原创 2021-09-27 22:37:41 · 70 阅读 · 0 评论 -
机器数及其特点
1.机器内数据的表示1)真值:符号用“+”,“-”表示的数据表示方法;2)机器数:符号数值化的数据表示方法,用0,1表示符号;3)三种常见的机器数:设定点数的形式为X0 X1 X2 X3 … Xn答案:补码:111111 模:2^6 = 64...原创 2021-09-26 23:05:49 · 618 阅读 · 0 评论