随笔分类 - 操作系统
内存管理、中断管理、进程管理、设备管理、网络管理。
任重而道远——
摘要:《Linux内核修炼之道》 之 高效学习Linux内核-CSDN博客 Linux内存管理 内存的访问路径 虚拟内存与物理内存(内存分段分页机制) 内存分配方式(buddy、slab) 内存换页机制 malloc与kmalloc、vmalloc Cache Memory 底层拓展:内存基础知识 内存相
阅读全文
摘要:缓存一致性问题 问题1:多核CPU与cache的缓存一致性问题 多核CPU在访问内存时,每个核都有自己的cache,由于cache的写回机制,部分数据没有及时更新到内存,那么在不同线程访问同一个变量的时候就会出现不一致的情况 比如核心A访问address1,把address1的数据加载到A的cach
阅读全文
摘要:在4G主存机器申请8G内存会发生什么 在 32 位操作系统,因为进程最大只能申请 3 GB 大小的虚拟内存,所以直接申请 8G 内存,会申请失败。 在 64 位操作系统,因为进程最大可以申请 128 TB 大小的虚拟内存,即使物理内存只有 4GB,申请 8G 内存也是没问题,因为申请的内存是虚拟内存
阅读全文
摘要:内存回收的方式 前文提到malloc的内存分配方式,malloc申请的是虚拟内存,只有在程序去访问时,才会触发缺页异常进入内核态,在缺页中断函数中建立物理内存映射。 如果物理内存充足,则直接建立页框与页的映射。当物理内存不足时,内核会进行物理内存回收,内存回收的方式主要有: 后台内存回收(kswap
阅读全文
摘要:内核的内存分区 32位机中的虚拟内存大小为4GB,其中0~3GB用于用户空间,3~4GB用于内核空间。 内核的内存空间只有1G,这一部分内存在进程中共享,与用户空间隔离,用户空间不能访问。 内核空间在虚拟内存上分为三个区间:从低到高分别是: ZONE_DMA(16M) ZONE_NORMAL(16~
阅读全文
摘要:malloc分配内存的方式 学C语言时我们知道,malloc是动态内存分配,也就是在程序运行执行到malloc函数时才会从堆上分配指定的内存大小。 首先要知道Linux的把内存分为6个区:栈区、文件映射区、堆区、BSS区、数据区、代码区。 分区只在虚拟内存上进行逻辑划分,物理内存上不存在逻辑分区的概
阅读全文
摘要:分段与分页的区别 分段: 分页: 分段和分页的工作方式相似,都是非连续存储。 分段的逻辑地址=段号+段内偏移。段表存放段描述符。段描述符=段基址+段界限。物理地址=段基址+段内偏移。 分页的虚拟地址=页号+页内偏移。页表存放页面映射。页面映射=虚拟页号+物理页号。物理地址=物理页号+页内偏移。 但是
阅读全文
摘要:虚拟内存 为什么要有虚拟内存? 让每个进程都有独立的内存空间,每个进程都有自己的私有页表,提供一个可以执行多进程的环境。 利用程序运行局部性原理,允许进程的内存空间超过物理内存大小。 页表中维护着页的权限属性,使内存访问更安全。 假如没有虚拟内存,则会有进程空间不隔离的问题,比如进程A会改写进程B的
阅读全文

浙公网安备 33010602011771号