随笔分类 - 计算机基础
摘要:半原创, 原创的linux不知道是多少, 我自己学习用到的版本是 v5.19.17 前言 文章很多内容来自一步一图带你深入理解 Linux 物理内存管理 ,半原创,本文为个人学习总结 我们上一篇--操作系统-内存管理-NUMA1(半原创) 介绍了 NUMA 后, 知道了node 节点统筹这多个zon
阅读全文
摘要:注意 : 0. Linux , NUMA 结构管理一个NUMA 节点称之为 node 1. 在 NUMA 内存架构下,每个物理内存区域都是属于一个特定的 NUMA 节点,NUMA 节点中包含了一个或者多个 CPU,NUMA 节点中的每个内存区域会关联到一个特定的 CPU 上 2. NUMA 也可以访
阅读全文
摘要:文章大部分来自微信公众号 bin的技术小屋 ,非原创 ,小部分是自己的学习批注 前言 我认为的映射, 就是大的方向说有两部分 ,我们先看转化的是什么 : `文件 -- > (进程) --> 虚拟内存 --> 物理内存` , 所以 1. 映射1 : 文件 -- > (进程) --> 虚拟内存 , 这部
阅读全文
摘要:计算机存储单位之间的关系 位 bit (Binary Digits):存放一位二进制数,即 0 或 1,最小的存储单位。 字节 byte:8个二进制位为一个字节(B),即1B = 8bit,最常用的单位。 计算机存储单位一般用B,KB,MB,GB,TB,PB,EB,ZB,YB,BB来表示,它们之间的
阅读全文
摘要:文章大部分表述图片来自 : https://www.jeanleo.com/2021/07/06/linux%e5%86%85%e5%ad%98%e7%ae%a1%e7%90%86%e5%89%96%e6%9e%90/ 。 非原创 内存是如何给读取的 计算机上电启动的时候,BIOS会检测并计算物理内
阅读全文
摘要:概述 该篇介绍的是 IA-32/Linux中的地址转换 , 转化的动机是什么? 是如何转化的 ? 下文的 段描述符 和 描述符表 太难理解, 可以近似认为 段描述符 = 段表项 , 描述符表 = 段表 逻辑地址 线性地址 物理地址 逻辑地址和线性地址的的转化如下 : 逻辑地址 (分段) > 线性地址
阅读全文
摘要:前言 我们从前面的cache 高数缓存中知道了, CPU 的访问 cache 部分的过程 (也就是下图的青色部分的过程) , 这个章节我们将会学习访问快表和缺页部分的处理 . 下面这个分页的过程是逻辑地址到物理地址的过程. 再访问页表之前会先访问快表 . 可以看到我们首先利用逻辑地址找到对应的页表项
阅读全文
摘要:问题 在cache 中访问的内存地址为何会带有 cache 相关的信息 ,动机是什么? 前言 平时只知道cpu 到内存之间还有一层 cache , CPU 要去主存找一个数据 ,第一反应肯定是到先到 cache 中找 ,如果找不到再去主存中去找, 要是找到了,直接就返回了 . 上面的过程实际就是通过
阅读全文
摘要:共享库 共享库的动机是什么 ,我们从前面的静态链接的时候学习到了静态链接库 ,可以知道静态链接库的缺点如下 : 这里有个问题 ,就是每个进程都拥有虚拟空间地址 ,然后共享库又只会有一个 ,那么共享库如何做到给各个进程共享呢? 这个问题我们放在了其他这一个章节 动态链接和静态链接的一个区别 自定义一个
阅读全文
摘要:前言 链接这个操作分为两个部分 : 符号解析 重定位 简单点说就是找到符号(如何找呢??通过符号表找到) ,然后将正确的地址填上 文章先从符号到符号解 回顾链接过程 符号的类型及相关的段 链接符号的类型 包括三种类型 全局符号 ,里面还分强弱 外部定的全局符号 本模块的局部符号 可以看一下下面的例子
阅读全文
摘要:前言 elf 中很多东西都用类似于java中 hashtable的结构来存储 ,例如储存各个节的信息有节头表 ,存储字符串,有字符串表等等. 概述 ELF header + 各种 section + section header table + String table + symbol table
阅读全文
摘要:读 <<程序员的自我修改--链接,装载与库>> 和 <<深入理解java虚拟机>> 前阵子复习了一下 final , 然后发现 final 有一个知识点和 JMM 有关 ,然后又想起了 JVM 相关的知识有点模糊 ,然后我又想起了之前看过一部分的一本书 . <<程序员的自我修改>> 书 这两本书陷入
阅读全文
摘要:该篇文章为知识总结 , 大部分的内容来自 : https://www.cnblogs.com/whileskies/p/13427861.html , 非原创 题目 练习5:实现函数调用堆栈跟踪函数 (需要编程) 我们需要在lab1中完成kdebug.c中函数print_stackframe的实现,
阅读全文
摘要:前言 这篇文章是在看了很多前辈写的博客下完成的,一些表述和图来自参考资料,非原创 ,该篇先从ROM RAM 这些硬件介绍,然后从启动的过程最主要的主角:BIOS 开始,介绍整个过程。 前期知识 ROM 和 RAM 是什么, 有什么区别 参考: "什么是ROM 什么是RAM【详细介绍】" 和 http
阅读全文
摘要:为什么 32 位最大寻址内存空间为 4GB 呢 32 位代表有32最小是32个0,最大是32个1 ,这样可以表示的空间数量,那这个数量有多少呢? 有2的32次方,假如我们以字节(Byte)作为单位, 也就是说 32位用来寻址到2的32次方个字节 , 也就是 4GB 已知页的大小为 4KB , 计算一
阅读全文
摘要:前言 文章将介绍 DIE 的诞生过程,同时引入几个问题,多DIE与多core两个方案的对比 ,还介绍了DIE的良率影响因素 制造过程 制造过程主要让大家知道知道CPU 中 DIE 的过程,中间难免有部分略过的细节 , 有兴趣的同学参考参考资料章节。文中图片主要来自参考文章 ,非原创, 侵删 步骤一
阅读全文
摘要:CPU 架构 CPU 中央处理器中有两个模块很重要 : Processing Unit(运算处理单元),简称PU Architectual State(架构状态单元),简称AS PU一般就是执行运算,比如算数运算加减乘除。AS执行一些逻辑和调度方面的操作,比如控制内存访问等。 单核、多核CPU 单核
阅读全文
摘要:> 文章图片和描述来自参考资料非原创 概述文章主要讲 linux 下的关于 page cache 和 buffer cache 的关系和区别。在我们进行数据持久化,对文件内容进行落盘处理时,我们时常会使用fsync操作,该操作会将文件关联的脏页(dirty page)数据(实际文件内容及元数据信息)一同写回磁盘。这里提到的脏页(dirty page)即为页缓存(page cache)。块缓存(b...
阅读全文
摘要:问题 一个进程长什么样子的 操作系统缺页中断后是如何将磁盘的数据加载到内存中的,过程是怎么样的 程序和进程 程序是静态的概念,而process进程更像是运行任务,最后面一个例子可以好好理解,一个程序可以被多个进程加载。 进程的概念 进程与上下文切换 可以看到两个进程(shell 和 hello 程序
阅读全文