随笔分类 -  深挖计算机基础

上一页 1 ··· 5 6 7 8 9 10 11 下一页
摘要:一、浮点数的不精确性 1、引子 我们开发一个电商App商品的价格常常会是 9 块 9; 现在流行的深度学习算法,对应的机器学习里的模型里的各个权重也都是 1.23 这样的数。 可以说,在实际的应用过程中,这些有零有整的实数,是和整数同样常用的数据类型,我们也需要考虑到。 2、不是0.9而是 0.89 阅读全文
posted @ 2019-05-29 15:36 活的潇洒80 阅读(772) 评论(0) 推荐(0)
摘要:一、分段机制 1、分段机制的原理图 2、段选择子 3、段偏移量 例如,我们将上面的虚拟空间分成以下 4 个段,用 0~3 来编号。每个段在段表中有一个项,在物理空间中,段的排列如下图的右边所示。 4、段表 一个段表项由段基地址 base、段界限 limit,还有一些标识符组成 5、分析 分页机制本质 阅读全文
posted @ 2019-05-29 15:33 活的潇洒80 阅读(1039) 评论(0) 推荐(0)
摘要:一、mmap原理 在虚拟内存空间那一节,我们知道,每一个进程都有一个列表vm_area_struct,指向虚拟地址空间的不同内存块,这个变量名字叫mmap 其实内存映射不仅仅是物理内存和虚拟内存之间的映射,还包括将文件中的内容映射到虚拟内存空间,这个时候访问内存空间就能够访问到文件里面的数据。 而仅 阅读全文
posted @ 2019-05-28 17:55 活的潇洒80 阅读(4061) 评论(1) 推荐(1)
摘要:一、怎么查看系统上下文切换情况 通过前面学习我么你知道,过多的上下文切换,会把CPU时间消耗在寄存器、内核栈以及虚拟内存等数据的保存和回复上,缩短进程真正运行的时间,成了系统性能大幅下降的一个元凶 既然上下文切换对系统性能影响那么大,你肯定迫不及待想知道,道题怎么查看上下文切换 1、系统总的上下文切 阅读全文
posted @ 2019-05-28 17:54 活的潇洒80 阅读(1713) 评论(2) 推荐(0)
摘要:一、数组的基本概念 数组是一种线性数据结构,它用连续的内存空间,来存储一组具有相同类型的数据 1、线性表 第一线性表:顾名思义,线性表就是数据排成像一条线一样的结构,每个线性上的数据最多只有前后两个方向,其实除了数组、链表、队列、栈等也是线性结构 而与它相对立的概念是非线性表,比如二叉树、堆、图等, 阅读全文
posted @ 2019-05-28 17:51 活的潇洒80 阅读(481) 评论(0) 推荐(0)
摘要:一、顺序乘法的实现规程 1、十进制中13乘以9,转换成二进制整个计算的过程 乘法口诀表了,因为单个位置上,乘数只能是0或者1,所以实际的乘法,就退化成了位移和加法 2、我们可以用一个开关来决定,下面的输出是完全复制输入,还是讲输出全部设置为0 3、把对应的线路错位连接,就可以起到位移的作用 4、乘法 阅读全文
posted @ 2019-05-27 16:59 活的潇洒80 阅读(1250) 评论(0) 推荐(0)
摘要:一、内核页表 和用户态页表不同,在系统初始化的时候,我们就要创建内核页表了 我们从内核页表的根swapper_pg_dir开始找线索,在linux-5.1.3/arch/x86/include/asm/pgtable_64.h中就能找到它的定义 1、swapper_pg_dir指向内核最顶级的目录p 阅读全文
posted @ 2019-05-27 16:59 活的潇洒80 阅读(2132) 评论(0) 推荐(0)
摘要:一、引子 1、计算两方面的原因 2、内存管理机制 二、独享内存空间的原理 1、会议室和物理内存的关系 和会议室一样,内存都被分成一块块儿的,都编号了号,例如3F-10就是三楼十号会议室、内存页有这样一个地址。这个地址是实实在在的地址,通过这个地址我们就能够定位到物理内存地址 2、会产生什么问题呢? 阅读全文
posted @ 2019-05-24 17:28 活的潇洒80 阅读(2015) 评论(0) 推荐(0)
摘要:一、上节回顾 上一讲,我们看到了如何通过电路,在计算机硬件层面设计最基本的单元,门电脑,我给你看的门电路非常简单,只能做简单的“与(AND)”“或(OR)”“NOT(非)”和“异或(XOR)”, 这样最基本的单比特逻辑运算。下面这些门电路的标你需要非常熟悉,后续的电路都是由这些门电路组合起来的。 这 阅读全文
posted @ 2019-05-24 09:20 活的潇洒80 阅读(1400) 评论(0) 推荐(1)
摘要:一、从信使发展史 1、 公元前490年是如何传信 2、中国古代的军队是如何传信 3、灯塔烽火台是如何传信的? 4、以上都存在的问题 二、电报 1、电报机的两种信号 一个莫尔斯电码的电报机 2、电报机的优势 3、电报机如何工作 4、蜂鸣器+长长的电线+按钮开关 三、继电器给跑不动的信号续一秒 1、电阻 阅读全文
posted @ 2019-05-22 19:59 活的潇洒80 阅读(1707) 评论(0) 推荐(0)
摘要:一、小内存的分配基础 1、kmem_cache_alloc_node的作用 通过这段代码可以看出,它调用了kmem_cache_alloc_node函数,在task_struct的缓存区域task_struct分配了一块内存 1、在系统初始化的时候,task_struct_cachep 会被 kme 阅读全文
posted @ 2019-05-22 19:42 活的潇洒80 阅读(4319) 评论(1) 推荐(1)
摘要:一、理解二进制的“逢二进一 1、什么是二进制? 十进制计数使用10作为基础、二进制使用2作为基数、二进制的数位就是2^n的形式 2、计算机为什么使用二进制? 二进制的数据表达具有抗干扰能力强、可靠性高的优点;二进制非常适合逻辑运算 3、13这个十进制转化成二进制,需要经历一下几个步骤: 因此,对应的 阅读全文
posted @ 2019-05-20 12:02 活的潇洒80 阅读(1059) 评论(0) 推荐(0)
摘要:一、案例环境描述 1、环境准备 2CPU,4GB内存 预先安装docker sysstat工具 2、温馨提示 案例中 Python 应用的核心逻辑比较简单,你可能一眼就能看出问题,但实际生产环境中的源码就复杂多了。所以,我依旧建议,操作之前别看源码,避免先入为主,要把它当成一个黑盒来分析。这样 你可 阅读全文
posted @ 2019-05-18 18:29 活的潇洒80 阅读(1099) 评论(0) 推荐(0)
摘要:一、磁盘性能指标 1、使用率 2、饱和度 3、IOPS 4、吞吐量 5、响应时间 6、性能测试工具 二、磁盘I/O观测 1、每块磁盘的使用率(指标实际上来自/proc/diskstats) 2、iowat指标图解 3、需要特别注意指标 三、进程I/O观测 1、pidstat 查看进程I/O情况 2、 阅读全文
posted @ 2019-05-18 10:49 活的潇洒80 阅读(1194) 评论(0) 推荐(0)
摘要:一、磁盘 1、机械磁盘 2、固态磁盘 3、相同磁盘随机I/O比连续I/O慢很多 4、最小单位 5、接口 6、RAID陈列卡 7、网路存储 二、通用块层 1、概念 2、第一功能 3、第二功能 4、I/O调度算法 三、I/O栈 1、Linux存储系统I/O栈全景图 2、全景图详解 1、文件系统层 2、通 阅读全文
posted @ 2019-05-18 07:10 活的潇洒80 阅读(871) 评论(0) 推荐(0)
摘要:一、为什么需要动态链接库 1、链接在生活中的应用 链接 其实有点像我们日常生活中的标准化、模块化生产、我们有一个可以生产标准螺帽的生产线,就可以生产很多个不同的螺帽,只有需要螺帽,我们就可以通过链接的方式、去复制一个出来,放到需要的点,大道汽车、小到信箱 2、静态链接的缺点 但是、如我们有很多个程序 阅读全文
posted @ 2019-05-17 20:29 活的潇洒80 阅读(2157) 评论(0) 推荐(1)
摘要:一、索引节点和目录 1、索引节点 2、目录项 3、关系 为了帮助你理解目录项、索引节点以及文件数据的关系,我画了一张示意图,你可以对照这张图,来回忆刚刚讲过的内容,把只知识和细节串联起来 4、Slabs 5、系统格式化 二、虚拟文件系统 1、Linux文件系统的架构图 这里、我画了一张Linux文件 阅读全文
posted @ 2019-05-17 20:29 活的潇洒80 阅读(1446) 评论(0) 推荐(0)
摘要:一、为什么我们需要程序栈? stack overflow 就是栈溢出 函数间的互相调用,在计算机指令层面是怎么实现的,以及生命情况下会产生栈溢出这个错误 1、测试用例 和前面几讲一样,我们还是从一个非常简单的C程序function_example.c 看起。 1、这个程序定义了一个简单的函数 add 阅读全文
posted @ 2019-05-17 20:29 活的潇洒80 阅读(1358) 评论(0) 推荐(0)
摘要:一、为什么会Permission denied 1、测试用例 不知道你注意到没,在过去的几节,我们通过gcc生成的文件和objdump获取到的汇编指令都有些小小的问题,我们先把前面的函数示例,拆分成两个文件add_lib.c 和 link_example.c。 1、创建示例文件 1、add_lib. 阅读全文
posted @ 2019-05-16 19:00 活的潇洒80 阅读(1416) 评论(0) 推荐(0)
摘要:一、CPU 是如何执行指令的? 1、软件程序员的理解 写好的代码变成了指令之后、是一条条顺序执行的就可以了 2、CPU的逻辑组成 3、寄存器 N 个触发器或者锁存器,就可以组成一个 N 位(Bit)的寄存器,能够保存 N 位的数据。比方说,我们用的 64 位 Intel 服务器,寄存器就是 64 位 阅读全文
posted @ 2019-05-16 09:55 活的潇洒80 阅读(2175) 评论(0) 推荐(2)

上一页 1 ··· 5 6 7 8 9 10 11 下一页