计算机组成原理
文章平均质量分 91
程序员面试那点事儿
互联网大厂校招、社招面试官,多年互联网大厂工作经验,分享校招、社招面试题、职场相关内容,互相交流经验
展开
-
内存泄漏了,该如何定位
文章目录基本概念内存的分配与回收案例小结基本概念普通进程能看到的是内核提供的虚拟内存,虚拟内存通过页表,将虚拟内存映射为物理内存进程通过malloc() 申请虚拟内存后,并不会立即为其分配物理内存,首次访问时,才通过缺页异常陷入中断中分配内存为了协调CPU与磁盘间的性能差异,Linux还会使用Cache和Buffer,分别把文件和磁盘读写的数据缓存到内存中对应用程序来说,动态内存的分配和回收,是既核心又复杂的一个逻辑功能模块,管理内存的过程中,也容易发生各种各样的事故没正确回收分配的内存,导原创 2021-02-09 08:51:00 · 1153 阅读 · 0 评论 -
系统中出现大量不可中断进程和僵尸进程怎么办?
文章目录进程状态案例分析总结进程状态案例分析总结通过ps或者top可以查看进程的状态,这些进程的状态包括运行®、空闲(I)、不可中断睡眠(D)、可中断睡眠状态(S)、僵尸(Z)、以及暂停(T)。不可中断状态:表示正在跟硬件交互,为了保持一致性,系统不允许其他进程或中断打断这个进程,进程长时间处于不可中断状态,通常表示系统有IO问题僵尸进程:表示进程已经退出,但它的父进程还没有回收子进程占用的资源,短暂的僵尸状态不必理会,如果长时间处于僵尸状态,有可能应用程序没有正常处理子进程的退出。..原创 2021-02-08 09:43:22 · 549 阅读 · 0 评论 -
Linux内存管理基本介绍
内存映射内存容量8GB,指的是物理内存。物理内存也称为主存,大多数计算机用的主存都是动态随机访问内存(DRAM)。只有内核才可以直接访问物理内存。那么,进程要访问内存时,该怎么办呢?Linux 内核给每个进程都提供了一个独立的且连续的虚拟地址空间,这样,进程就可以很方便地访问虚拟内存。虚拟地址空间的内部又被分为内核空间和用户空间,不同字长(也就是单个 CPU 指令可以处理数据的最大长度)的处理器,地址空间的范围也不同。32 位和 64 位系统它们的虚拟地址空间,如下所示:32 位系统的内核空原创 2021-02-04 09:01:59 · 228 阅读 · 0 评论 -
穿越功耗墙,从哪些方面提升性能?
文章目录功耗:CPU的人体极限并行优化,阿姆达尔定律总结CPU性能中,程序的CPU执行时间公式如下程序的 CPU 执行时间 = 指令数 × CPI × Clock Cycle Time提升计算机的性能,从指令数、CPI以及CPU主频入手。功耗:CPU的人体极限奔腾 4 的 CPU 主频从来没有达到过 10GHz,最终它的主频上限定格在 3.8GHz,是因为它的功耗问题一个 3.8GHz 的奔腾 4 处理器,满载功率是 130 瓦,CPU 安在手机里面,不考虑屏幕内存之类的耗电,这个 CPU 满原创 2021-02-02 08:42:25 · 444 阅读 · 0 评论 -
理解CPU Cache
文章目录为什么需要高速缓存Cache的数据结构和读取过程直接映射Cache示例代码int[] arr = new int[64 * 1024 * 1024]; // 循环 1for (int i = 0; i < arr.length; i++) arr[i] *= 3; // 循环 2for (int i = 0; i < arr.length; i += 16) arr[i] *= 3循环1执行了50ms,循环2执行了46ms,两个循环差值在15%之内。这是因为C原创 2021-01-27 09:00:35 · 609 阅读 · 0 评论 -
局部性原理
平常在服务端软件开发中,通常会把数据存储在数据库里,服务端遇到的性能瓶颈往往发生在访问数据库的时候,在数据库前通过Redis加数据缓存是常见的性能优化方式。如何判定添加缓存的策略一定是有效的呢?理解局部性原理不同的存储器之间,访问速度、价格和容量都有几十乃至上千倍的差异。如何有效利用局部性原理总结计算机存储器层次结构中最重要的一个优化思路,就是局部性原理。对于数据的访问会存在两个局部性时间局限性:最近访问过的数据还会被反复访问空间局部性:最近访问过的数据附近的数据很快会被访问到局部原创 2021-01-25 09:08:39 · 559 阅读 · 0 评论 -
机械硬盘
文章目录拆解机械硬盘盘面磁头悬臂拆解机械硬盘硬盘的构造里有接口、对应的控制电路板、以及实际的IO设备(机械硬盘)。机械硬盘由盘面、磁头、和悬臂三个部分组成。盘面盘面是我们实际存储数据的盘片,盘面本身通常是铝、玻璃、陶瓷这样的材质做的光滑盘片,盘面上有一层磁性的涂层,我们的数据就存储在这个磁性的涂层上。盘面中间有一个受电机控制的转轴,这个转轴会控制我们的盘面去旋转。硬盘的转速:指的是盘面中间电机控制的转轴的旋转次数,英文单位交RPM(每分钟的转圈数Rotations Per Minute)。我们原创 2021-01-20 09:02:03 · 1841 阅读 · 0 评论 -
理解IO_WAIT:IO性能到底是怎么回事
文章目录IO性能、顺序访问和随机访问数据传输率响应时间随机读写如何定位IO_WAITIO瓶颈与指标模拟IO操作总结用内存当缓存,存储空间是不够用的,大部分时间,请求还是要打到硬盘上,所以来看看IO性能的事情。IO性能、顺序访问和随机访问硬盘的两个重要指标:响应时间和数据传输率。数据传输率硬盘分类HDD硬盘,即机械硬盘,用的是SATA 3.0的接口。SSD硬盘,即固态硬盘,有SATA3.0、PCI Express两种接口SATA 3.0 的接口,带宽是6Gb/s,b是比特,相当于768MB原创 2021-01-19 09:03:47 · 1644 阅读 · 0 评论 -
输入输出设备
接口和设备:经典的适配器模式CPU是如何控制IO设备的以打印机为例,分析CPU如何控制IO设备数据寄存器(Data Register):CPU向IO设备写入需要传输的数据,比如要打印”wangkai“,我们先要发送一个”w“给到对应的IO设备命令寄存器(Command Register ): CPU发送一个命令,告诉打印机,要进行打印工作,打印机里的控制电路会做两件事情设置我们状态寄存器里的状态,设置为not-ready。实际操作打印机进行打印。状态寄存器(Status Regist原创 2021-01-18 09:03:25 · 979 阅读 · 0 评论 -
内核态内存映射:如何找到正确的会议室
文章目录内核页表vmalloc和kmap_auomic原理内核态缺页异常总结内核态的内存映射机制,主要包含以下几个部分:内核态内存映射函数vmalloc、kmap_atomic是如何工作的内核态页面是放在哪里的,如何工作的?swapper_pg_dir是怎么回事出现了内核态缺页异常应该怎么办内核页表和用户态页表不同,在系统初始化的时候,就要创建内核页表了。从内核页表的根swapper_pg_dir开始找线索,在arch/x86/include/asm/pgtable_64.h 中就能找到它原创 2021-01-16 16:34:56 · 266 阅读 · 0 评论 -
DMA:为什么Kafka这么快
文章目录理解DMA,一个协处理器Kafka的实现原理总结计算机产业中一直在不断的提升IO设备的速度。HDD硬盘->SATA接口的SSD硬盘->PCI Express接口的SSD硬盘->傲腾IO速度的提升相比CPU总是太慢SSD的磁盘IOPS可以到2万、4万CPU的主频有2GHZ以上,意味着每秒会有20亿次的操作。如果对于IO的操作,都是由CPU发出指令,等待IO设备完成操作之后返回,那CPU有大量的时间其实都是在等待IO设备完成操作。这个CPU的等待很多时候是无意义的原创 2021-01-16 15:29:31 · 610 阅读 · 0 评论 -
总线:计算机内部的高速公路
文章目录降低复杂性:设计思路来源总线是什么事件总线模式理解总线:三种线路和多总线架构总结CPU中的控制器、运算器要和存储器(主内存),以及输入输出设备进行通信。那CPU从键盘、鼠标接收输入信号,向显示器输出信号,这之间是如何通信的呢?这个问题就是我们的主题:总线。降低复杂性:设计思路来源总线是什么计算机里有很多不同的硬件设备,除了CPU和内存之外,还有大量的输入输出设备。计算机上的每一个接口、键盘、鼠标、显示器、硬盘,乃至通过USB接口连接的各种外部设备,都对应一个设备或者模块。如果各个设备原创 2021-01-16 09:48:19 · 696 阅读 · 0 评论 -
物理内存管理,会议室管理员如何分配会议室
文章目录物理内存的组织方式平坦内存模型SMP模式NUMA模式节点区域页页的分配页总结物理内存的组织方式平坦内存模型之前说虚拟内存映射物理内存的时候,总把内存想象成连续的一页一页的块组成,从0开始编号,由于物理地址是连续的,页也是连续的,每个页大小也是一样的。对于任何一个地址,只要直接除以每页的大小,就很容易直接算出在哪一页。每个页有一个结构struct page表示,这个结构也是在数组里放着,根据页号,很容易通过下标找到相应的struct page结构。整个物理内存布局非常简单易管理,是一个原创 2021-01-14 09:00:08 · 121 阅读 · 0 评论 -
异常和中断:程序出错了怎么办
文章目录异常:硬件、系统和应用的组合拳异常的分类:中断、陷阱、故障和中止中断陷阱故障中止异常的处理:上下文切换总结自动运行且正常运行的程序自动运行:程序和指令都是一条条顺序执行,没有键盘和网络的任何输入正常运行:我们的程序都是能够正常执行下去的,没有遇到计算溢出之类的程序错误异常:硬件、系统和应用的组合拳这里说的异常和C++或者Java里的Exception不一样。硬件和系统相关的异常既有来自于硬件的,也有来自于软件的。硬件层面:算术相加溢出和玩游戏的时候按下键盘发送一个信号给CPU,也原创 2021-01-14 08:29:17 · 1083 阅读 · 0 评论 -
存储器层次结构全景:数据存储的大金字塔长什么样
文章目录理解存储器的层次结构SRAMDRAM存储器的层次结构如何权衡存储器的价格和性能存储器是计算的重要组成部分,内存和硬盘都是存储设备,硬盘这种持久化存储设备也是一个IO设备。软件开发中,当遇到服务端的请求响应时间长,吞吐率不够的情况下,在分析对应问题的时候,很多时候发现主要瓶颈不在CPU,而在IO。理解存储器的层次结构通常我们把信息和数据存储在书、文件这样的物理介质里面,有了计算机之后,通常把数据存储在计算机的存储器里面。存储器系统是一个通过各种不同的方法和设备,一层一层集合起来的系统。C原创 2021-01-10 10:50:43 · 556 阅读 · 0 评论 -
通过CPU主频来看性能
文章目录什么是性能?时间的倒数什么是性能?时间的倒数计算机性能类似与干体力劳动搬东西。衡量计算机性能的标准响应时间:或叫执行时间,想要提升响应时间这个性能指标,可以理解为让计算机跑的更快。指的是执行一个程序,需要花多少时间,花的时间越少,自然性能就越好。吞吐率:或带宽,想要提升这个指标,让给你计算机搬的更多。指一定的时间范围内,到底能处理多少事情,事情指的就是处理的数据和执行的程序指令。响应时间短,跑的快,这样可以多跑几趟多搬几趟,所以,缩短程序的响应时间,会提升吞吐率。可以多原创 2021-01-04 23:05:30 · 672 阅读 · 0 评论 -
计算机组成原理知识地图
文章目录计算机基本硬件组成CPU内存主板显卡鼠标、键盘、硬盘冯诺依曼体系结构组成原理知识图计算机基本硬件组成CPU是计算机最重要的核心配件,中央处理器(Central Processing Unit),CPU 是一个超级精细的印刷电路版内存程序读取的数据、计算得到的结果,都要放在内存里。内存越大,能加载的东西自然也就越多。主板存放在内存里的程序和数据,需要被 CPU 读取,CPU 计算完之后,还要把数据写回到内存。然而 CPU 不能直接插到内存上,反之亦然。主板是一个有着各种各原创 2021-01-04 22:39:10 · 395 阅读 · 0 评论 -
CPU缓存让CPU执行代码更快
文章目录CPU多级缓存任何代码的执行都依赖CPU,CPU缓存由更快的SRAM构成(内存是DRAM),离CPU核心更近,运算时需要的数据从CPU缓存读取而不是内存,运算速度会更快。我们可以通过提升CPU缓存的命中率来优化程序的性能。越是深入底层的优化,适用范围越广。CPU多级缓存...原创 2020-12-31 09:26:48 · 215 阅读 · 0 评论 -
漫谈计算机组成原理和编程语言
23分原创 2018-04-08 23:54:55 · 848 阅读 · 0 评论