![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
计算机底层技术
文章平均质量分 90
计算机底层技术
夜光小兔纸
每天进步一点点
展开
-
漫画 | 硬盘装满电影后会变重吗?
硬盘在装满电影后会变重吗?这个问题有点无厘头......但是深究以后还是挺有意思的。现在主要有两种硬盘:先有请机械硬盘上场讲一下:接下来有请固态硬盘:所以,机械硬盘上装满电影以后,并不会变重,固态硬盘理论上会变重,实际上是感受不到的。就这么结束了?有点简单啊!来个彩蛋吧:漫画说的是硬盘中信息的质量,那么整个互联网中信息有多重?2006年,YouTube视频网站下的一个频道Vsauce给我们的答案是:互联网的质量约为一颗50克的大草莓。全球在线的服务器有7500万至1亿台,.转载 2021-12-20 19:26:03 · 309 阅读 · 0 评论 -
特斯拉遇上 CPU:程序员的心思你别猜
18世纪流水线的诞生带来了制造技术的变革,人类当今拥有琳琅满目物美价廉的商品和流水线技术的发明密不可分,因此当你喝着可乐、吹着空调、坐在特斯拉里拿着智能手机刷这篇文章时需要感谢流水线技术。一段有趣的代码有这样一段代码:for (int k = 0; k < 10000; k++){ for (int i = 0; i < arr.size(); i++) { if (arr[i] > 256) sum += arr[i]; }}这段代码非常简单,给转载 2021-10-18 19:13:23 · 184 阅读 · 0 评论 -
硬盘分类详解
一、按原理分类机械硬盘(HDD)、固态硬盘(SSD)以及混合硬盘(SSHD)1、机械硬盘(HDD)机械硬盘(HDD)是传统硬盘,为电脑主要的存储媒介之一。由一个或者多个铝制或者玻璃制成的磁性碟片,磁头,转轴,控制电机,磁头控制器,数据转换器,接口和缓存等几个部分组成。工作时,磁头悬浮在高速旋转的碟片上进行读写数据。机械硬盘是集精密机械、微电子电路、电磁转换为一体的电脑存储设备。2、固态硬盘(SSD)固态硬盘(SSD)是由多个闪存芯片加主控以及缓存组成的阵列式存储,属于以固态电子存储芯片阵列制成的转载 2021-06-29 23:19:18 · 3517 阅读 · 0 评论 -
CPU详解
一、CPU简介现在电脑早已成为人们生活中不可或缺的一部分了,而熟悉电脑的人都知道电脑里面有个CPU,但是要问起来CPU到底是什么,恐怕很多人都是说不上来一个道道的,而今天就来给大家讲解一下CPU到底是什么和一些CPU重要的参数。就像我们每个人都有自己的大脑一样,其实CPU就是计算机的大脑,它又叫中央处理器,是一块超大规模的集成电路,同时还是计算机中不可或缺最重要的部件之一。而CPU的作用就是解释计算机的指令,并且处理计算机中各种各样的数据,它与内部存储器(也就是我们常说的内存)、输入/输出(I/O)原创 2021-06-29 20:12:05 · 2336 阅读 · 0 评论 -
CPU有个禁区,内核权限也无法进入!
神秘项目我是CPU一号车间的阿Q,是的,我又来了。最近一段时间,我几次下班约隔壁二号车间虎子,他都推脱没有时间,不过也没看见他在忙个啥。前几天,我又去找他,还是没看到他人,却意外地在他桌上发现了一份文件,打开一看是一个代号为SGX的神秘项目,还是厂里领导亲自带头攻坚。仔细看了看,原来,自从上次的攻击事件(详情:完了!CPU一味求快出事儿了!)发生以来,领导一直忧心忡忡,虽然当时依靠操作系统提供的办法暂解了燃眉之急,不过治标不治本,我们自身的缺陷一直存在,保不准哪天还要翻车。这个代号为SGX的神秘转载 2021-03-27 11:26:22 · 234 阅读 · 0 评论 -
可怕!CPU竟成了黑客的帮凶!
本故事根据CPU真实漏洞改编前情回顾还记得我吗,我是阿Q,就是那个CPU一号车间的阿Q啊。如果你忘记了我,记得看看这里回忆一下哦:完了!CPU一味求快出事儿了! 自从我们车间用上了 乱序执行 和 分支预测 后,生产效率那是大大提升,领导不仅在全厂的员工大会表扬了我们,还把这两项技术向全厂推广,在我们8个CPU核心车间都铺开了,性能甩开竞争对手CPU几条街。 可是,就在我们还沉醉在取得的成绩时,不知不觉我们竟埋下了灾难的种子······事情还得从不久前的一个晚上说.转载 2021-03-27 00:04:03 · 146 阅读 · 0 评论 -
完了!CPU一味求快出事儿了!
自我介绍我叫阿Q,是CPU一号车间里的员工,我所在的这个CPU足足有8个核,就有8个车间,干起活来杠杠滴。我所在的一号车间里,除了负责执行指令的我,还有负责取指令的小A,负责分析指令的小胖和负责结果回写的老K。CPU的每个车间都有一堆箱子,人们把这些箱子叫做寄存器,我所在的一号车间也不例外,我们每天的工作就是不断执行指令,然后折腾这些箱子,往里面存东西取东西。由于我们四个人的出色工作,一号车间业绩突出,在年会上还多次获得了最佳CPU核心奖呢。 缓存我们每天都需要跟内存打交道,不过由转载 2021-03-26 22:12:28 · 186 阅读 · 0 评论 -
终于明白了,一文彻底理解I/O多路复用
本篇是高性能、高并发系列的第三篇,承接上文《读取文件时,程序经历了什么?》,在讲解了进程、线程以及I/O后,我们来到了高并发中又一关键技术,即I/O多路复用。在讲解该技术之前,我们需要预习一下文件以及文件描述符。 什么是文件程序员使用I/O最终都逃不过文件这个概念。在Linux世界中文件是一个很简单的概念,作为程序员我们只需要将其理解为一个N byte的序列就可以了:b1, b2, b3, b4, … bN实际上所有的I/O设备都被抽象为了文件这个概念,一切皆文件,Everythin转载 2021-03-24 23:10:06 · 436 阅读 · 0 评论 -
读取文件时,程序经历了什么?
承接上文《一文彻底理解高性能高并发中的线程与线程池》,这是高性能、高并发系列的第二篇文章,在这里我们来到了I/O这一话题。你有没有想过当我们执行I/O操作时计算机底层都发生了些什么?在回答这个问题之前,我们先来看下为什么对于计算机来说I/O是极其重要的。不能执行I/O的计算机是什么?相信对于程序员来说I/O操作是最为熟悉不过的了:当我们使用C语言中的printf、C++中的"<<",Python中的print,Java中的System.out.println等时,这是I/O;当我们转载 2021-03-24 22:36:04 · 207 阅读 · 0 评论 -
一文彻底理解高性能高并发中的线程与线程池
从这篇开始将会开启高性能、高并发系列,本篇是该系列的开篇,主要关注多线程以及线程池。一切要从CPU说起你可能会有疑问,讲多线程为什么要从CPU说起呢?原因很简单,在这里没有那些时髦的概念,你可以更加清晰的看清问题的本质。CPU并不知道线程、进程之类的概念。CPU只知道两件事:从内存中取出指令执行指令,然后回到1你看,在这里CPU确实是不知道什么进程、线程之类的概念。接下来的问题就是CPU从哪里取出指令呢?答案是来自一个被称为Program Counter(简称PC)的寄存器,也转载 2021-03-24 22:22:27 · 423 阅读 · 1 评论 -
大厂面试爱问的「调度算法」,20 张图一举拿下
前言最近,我偷偷潜伏在各大技术群,因为秋招在即,看到不少小伙伴分享的大厂面经。然后发现,操作系统的知识点考察还是比较多的,大厂就是大厂就爱问基础知识。其中,关于操作系统的「调度算法」考察也算比较频繁。所以,我这边总结了操作系统的三大调度机制,分别是「进程调度/页面置换/磁盘调度算法」,供大家复习,希望大家在秋招能斩获自己心意的 offer。正文进程调度算法进程调度算法也称 CPU 调度算法,毕竟进程是由 CPU 调度的。当 CPU 空闲时,操作系统就选择内存中的某个「就绪状态」的进程,并给转载 2021-03-23 22:39:41 · 180 阅读 · 0 评论 -
进程、线程基础知识全家桶,30 张图一套带走
前言先来看看一则小故事我们写好的一行行代码,为了让其工作起来,我们还得把它送进城(进程)里,那既然进了城里,那肯定不能胡作非为了。城里人有城里人的规矩,城中有个专门管辖你们的城管(操作系统),人家让你休息就休息,让你工作就工作,毕竟摊位不多,每个人都要占这个摊位来工作,城里要工作的人多着去了。所以城管为了公平起见,它使用一种策略(调度)方式,给每个人一个固定的工作时间(时间片),时间到了就会通知你去休息而换另外一个人上场工作。另外,在休息时候你也不能偷懒,要记住工作到哪了,不然下次到你工作了,转载 2021-03-23 21:59:31 · 206 阅读 · 0 评论 -
我是一个线程
第一回 初生牛犊我是一个线程,我一出生就被编了个号:0x3704,然后被领到一个昏暗的屋子里,在这里我发现了很多和我一模一样的同伴。我身边的同伴0x6900 待的时间比较长,他带着沧桑的口气对我说:“我们线程的宿命就是处理包裹。把包裹处理完以后还得马上回到这里,否则可能永远回不来了。”我一脸懵懂,“包裹,什么包裹?”“不要着急,马上你就会明白了,我们这里是不养闲人的。”果然,没多久,屋子的门开了, 一个面貌凶恶的家伙吼道:“0x3704 ,出来!”我一出来就被塞了一个沉甸甸的包裹,上面还附带着一转载 2021-03-22 22:22:33 · 105 阅读 · 0 评论 -
CPU:网卡老哥,你到底怎么工作的?
阿Q造访我是一个网卡,居住在一个机箱内的主板上,负责整台计算机的网络通信,要是没有我,这里就成了一个信息孤岛了,那也太无聊了~上个周末,服务器断电维护了,这是我难得的休息时间,我准备打个盹儿眯一会儿。这才刚合上眼,CPU一号车间的阿Q跑过来串门了。“怎么是你小子,听说你背后说了我很多坏话啊!今天怎么想起找我来了”“网卡老哥,你这都听谁造的谣,我想来拜访你很久了,这不平时工作太忙抽不开身,今天停电了一有空就找你来了嘛!”,阿Q笑着说到。“你可是大忙人,无事不登三宝殿,说吧,找我什么事儿”阿Q露转载 2021-03-22 21:59:25 · 128 阅读 · 0 评论 -
20 张图揭开「内存管理」的迷雾,瞬间豁然开朗
前言之前有不少读者跟我反馈,能不能写图解操作系统?既然那么多读者想看,我最近就在疯狂的复习操作系统的知识。操作系统确实是比较难啃的一门课,至少我认为比计算机网络难太多了,但它的重要性就不用我多说了。学操作系统的时候,主要痛苦的地方,有太多的抽象难以理解的词语或概念,非常容易被劝退。即使怀着满腔热血的心情开始学操作系统,不过 3 分钟睡意就突然袭来。。。该啃的还是得啃的,该图解的还是得图解的,万众期待的「图解操作系统」的系列来了。本篇跟大家说说内存管理,内存管理还是比较重要的一个环节,理解了..转载 2021-03-18 22:13:22 · 107 阅读 · 0 评论 -
Linux 内核 vs Windows 内核
Windows 和 Linux 可以说是我们比较常见的两款操作系统的。Windows 基本占领了电脑时代的市场,商业上取得了很大成功,但是它并不开源,所以要想接触源码得加入 Windows 的开发团队中。对于服务器使用的操作系统基本上都是 Linux,而且内核源码也是开源的,任何人都可以下载,并增加自己的改动或功能,Linux 最大的魅力在于,全世界有非常多的技术大佬为它贡献代码。这两个操作系统各有千秋,不分伯仲。操作系统核心的东西就是内核,这次我们就来看看,Linux 内核和 Windows 内核转载 2021-03-18 19:24:57 · 149 阅读 · 0 评论 -
原来 8 张图,就可以搞懂「零拷贝」了
前言磁盘可以说是计算机系统最慢的硬件之一,读写速度相差内存 10 倍以上,所以针对优化磁盘的技术非常的多,比如零拷贝、直接 I/O、异步 I/O 等等,这些优化的目的就是为了提高系统的吞吐量,另外操作系统内核中的磁盘高速缓存区,可以有效的减少磁盘的访问次数。这次,我们就以「文件传输」作为切入点,来分析 I/O 工作方式,以及如何优化传输文件的性能。正文为什么要有 DMA 技术?在没有 DMA 技术前,I/O 的过程是这样的:CPU 发出对应的指令给磁盘控制器,然后返回;磁盘控制器收到..转载 2021-03-17 21:27:13 · 104 阅读 · 0 评论 -
一个故事看懂内存条工作原理
我是内存条我是一个内存条,刚刚从深圳的一个工厂里被生产出来,跟我一起的还有一批小伙伴,长得跟我一模一样,下了流水线后我们就被扔进了一处黑暗的角落。“这是哪里啊,黑漆漆的”,一个小伙伴说到。“这里是内存条仓库”,黑暗中有人在说话,声音中略有一丝沧桑,像是一个老头。“谁?谁在那里”“别怕,我也是一个内存条,比你们早几个月被生产出来”,那老头说到。“啥,你都被关在这里几个月了,完了完了”,小伙伴急了。“不是的,我出去过,后来被发现是残次品,又被回收了关在了这里,你们跟我不一样,刚刚生产出来,应该很转载 2021-03-17 20:50:09 · 247 阅读 · 0 评论 -
CPU 空闲时在干嘛?
人空闲时会发呆会无聊,计算机呢?假设你正在用计算机浏览网页,当网页加载完成后你开始阅读,此时你没有移动鼠标,没有敲击键盘,也没有网络通信,那么你的计算机此时在干嘛?有的同学可能会觉得这个问题很简单,但实际上,这个问题涉及从硬件到软件、从 CPU 到操作系统等一系列环节,理解了这个问题你就能明白操作系统是如何工作的了。你的计算机 CPU 使用率是多少?如果此时你正在计算机旁,并且安装有 Windows 或者 Linux ,你可以立刻看到自己的计算机 CPU 使用率是多少。这是博主的一台安装有 Win转载 2021-03-16 18:38:11 · 130 阅读 · 0 评论 -
看我稳住「多线程」翻车的现场!
本文将用 30+张图,带大家走进操作系统中避免多线程资源竞争的互斥、同步的方法。正文竞争与协作在单核 CPU 系统里,为了实现多个程序同时运行的假象,操作系统通常以时间片调度的方式,让每个进程执行每次执行一个时间片,时间片用完了,就切换下一个进程运行,由于这个时间片的时间很短,于是就造成了「并发」的现象。另外,操作系统也为每个进程创建巨大、私有的虚拟内存的假象,这种地址空间的抽象让每个程序好像拥有自己的内存,而实际上操作系统在背后秘密地让多个地址空间「复用」物理内存或者磁盘。如果一个程序只有转载 2021-03-03 17:34:00 · 105 阅读 · 1 评论 -
CPU阿甘
前言上帝为你关闭了一扇门,就一定会为你打开一扇窗这句话来形容我最合适不过了。我是CPU, 他们都叫我阿甘, 因为我和《阿甘正传》里的阿甘一样, 有点傻里傻气的。上帝把我制造出来, 给我了一个很小的脑容量, 为数不多的寄存器能临时的记一点东西, 但是上帝给我打开了一扇特别的窗户, 那就是像阿甘一样,跑的飞快。到底有多快呢? 我这么比喻一下吧, 我的工作都是以纳秒为单位的, 你们人间的一秒, 我可能已经做了1000,000,000 (10亿)次动作了。相比而言, 内存比我慢100倍, 硬盘比.转载 2021-03-12 11:27:44 · 248 阅读 · 0 评论 -
我是一个explorer的线程
伴随着一记电流响声,天逐渐亮了,不到一会儿太阳就升起来了,熟悉的蓝天白云和草地再次出现,今天又是繁忙的一天。我是explorer公司的一个工作人员:一个普通的线程。我们公司就是人类看到的explorer.exe进程,公司的业务主要是提供可视化的图形界面,让人类来操作电脑,我负责的事情是桌面窗口的消息处理,隔壁工位小薇妹子负责的是任务栏窗口消息处理。我们国家是一个Windows体制的国家,有很多公司,像notepad公司是做文字编辑业务的,calc公司是做计算器业务的,还有iexplore公司是做网页浏览转载 2021-03-13 19:50:39 · 160 阅读 · 0 评论 -
我是一个杀毒软件线程
前情回顾:我是一个explorer的线程夜深了,我的工作忙完了,准备去sleep一会儿。路过安全分析实验室的门口,看到实验室大牛老周还在埋头研究。“老周,挺晚了,还忙啥呢”“哦,是小谢啊,今天从explorer公司揪了一个木马,取了一个很容易掩人耳目的名字:kernerl32.dll”,老周说到。“哦,这木马很难分析吗”“这倒不难分析,我疑惑的是它是怎么进来的,我们公司守护的严严实实的”“休息一会儿吧,说不定就有思路了,要不我陪您走走?”“也好,眼睛都看痛了,走”。我俩边走边聊。“对.转载 2021-03-13 20:12:57 · 156 阅读 · 0 评论 -
我是一个IE浏览器线程
前情回顾:我是一个explorer的线程我是一个杀毒软件线程我叫小张,是一个浏览器公司的线程,我们公司的名字叫Internet Explorer,大家都简称我们叫IE,公司负责的业务是向人类提供网页浏览服务。可能你们也听说了,自从那个Firefox公司和Chrome公司成立以来,抢走了我们不少市场份额。不过呢,瘦死的骆驼比马大,我们凭借和政府特殊的关系,还是能搞到不少业务单子的,再说了,我们是老字号浏览器,很多老的网站必须要咱们才能打开,所以日子是比以前是紧了一些,但还是能勉强维持下去。网.转载 2021-03-13 21:00:03 · 114 阅读 · 0 评论 -
我是一个流氓软件线程
前情回顾:我是一个explorer的线程我是一个杀毒软件线程我是一个IE浏览器线程Hello, World!我是一个流氓软件线程,我不像那些病毒和木马,我只是通过人类的电脑赚一点小钱,并不会偷信息破坏电脑,但即便如此,那些安全软件还是不肯放过我。我是第一次来到这片土地,这是一个实行Windows体制的国家。我的目标是篡改IE浏览器的主页,变成一个导航网站:hao235.com。只要IE访问它一次,回头我就能去hao235公司领到一分钱。只要我后面慢慢发展更多地盘,加起来也是一笔不少的费用了.转载 2021-03-13 21:28:06 · 161 阅读 · 0 评论 -
内核地址空间大冒险:系统调用
开启冒险之旅我是一个线程,出生在这个Linux帝国,今天我的任务是去执行一段人类用C语言编写的代码。一阵忙活过后,一个fopen函数调用的指令出现在我面前,跟随指令指向的方向,我来到了libc.so的地盘,进入了一个名为open的房间,房间里的桌上放了一张纸,上面写了一个编号和几句指令。根据指令,我需要把编号放到eax寄存器,把open函数的参数放到ebx、ecx、edx三个寄存器中。忙完上面的操作,我环顾四周,发现这房间里还有一道门,门上写着sysenter。我小心翼翼的走了进去,突然,眼前.转载 2021-03-14 10:57:50 · 127 阅读 · 0 评论 -
内核地址空间大冒险2:中断与异常
前情回顾: 通过系统调用进入内核空间的这个虫洞我终于弄清楚了,可我的冒险还要继续······ 详情参见:内核地址空间大冒险:系统调用除0错误我是一个线程,出生在Linux帝国,今天我的任务是去执行一段人类用C语言编写的代码。开始的工作很顺利,一共执行了18次系统调用,对于来往于用户空间与内核空间的那个虫洞我已经轻车熟路,再也不是萌新一枚。后来,我拿到了一段数学运算的代码,来来往往地奔波于内存与寄存器之间,把我累得够呛,热的满头大汗,电脑风扇都转的飞快给我降温。..转载 2021-03-14 11:11:57 · 217 阅读 · 0 评论 -
内核地址空间大冒险3:权限管理
前情回顾: 我通过open这个系统调用虫洞来到了内核空间,又在老爷爷的指点下来到了sys_open的地盘,即将开始打开文件的工作。 详情参见:内核地址空间大冒险:系统调用open系统调用链我是一个线程,出生在这个Linux帝国。在老爷爷的指点下,通过系统调用表来到了这个叫sys_open的地方。这里很简陋,简单比划了几下就直接来到了do_sys_open的地盘。一个负责接待的美女给我简单办理了手续,就让我去里面一个do_filp_open的房间。进去之后,这个..转载 2021-03-14 11:28:21 · 110 阅读 · 0 评论 -
内核地址空间大冒险4:线程切换
sleep系统调用我是一个线程,生活在Linux帝国。一直以来辛勤工作,日子过得平平淡淡,可今天早上发生了一件事让我回想起来都后怕。早上,我还是如往常一样执行着人类编写的代码指令,不多时走到了一个冷门的分支,一个sleep()函数调用摆在了我的面前。终于可以去休息了!听老一辈的线程们说,执行了这个函数就可以休息休息了。我瞄了一眼参数,足足有5秒钟的休息时间,我简直乐坏了,没有犹豫,赶紧执行了这个调用。进入sleep()函数后,又来到了nano_sleep()函数,接着看到了一个syscall系统调转载 2021-03-15 22:07:37 · 190 阅读 · 0 评论