首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Linux内核书籍

Linux设备驱动》   --  也就是我们所说LDD3了; 适合一定基础的人阅读,深入学习Linux不可或缺知识; 《UNIX环境高级编程》 这本书并不是面对linux内核书,但是我是从最基础看这本书逐步入门...; 《Linux内核完全剖析》 本书对早期Linux内核(v0.12)全部代码文件进行了详细、全面的注释和说明,旨在帮助读者用较短时间对Linux工作机理获得全面而深刻理解,为进一步学习和研究Linux...虽然选择版本较低,但该内核已能够正常编译运行,并且其中已包括了Linux工作原理精髓。...《Linux那些事》 由复旦一群大神所写,团队为fudan_adc,主要写了我是xxx系列,本人比较喜欢对USB 部分描述,不得不说大神就是大神。...《Linux设备驱动开发详解》 由华清远见出身大神所写,宋宝华大神所写,华清远见出来技术杠杠。 《深入理解计算机操作系统》 当然啦,不得不说大学学过操作系统啊!!!!

3.7K60
您找到你想要的搜索结果了吗?
是的
没有找到

Linux内存描述之高端内存--Linux内存管理(五)

但是,当Linux物理内存超过1G时,线性访问机制就不够用了,因为只能有1G内存可以被映射,剩余物理内存无法被内核管理,所以,为了解决这一问题,Linux把内核地址分为线性区和非线性区两部分,线性区规定最大为...DMA Zone通常很小,只有几十M,低端内存区与高端内存划分来源于Linux内核空间大小限制。...Linux内核高端内存由来 2.1 为什么需要高端内存? 高端内存是指物理地址大于 896M 内存。对于这样内存,无法在“内核直接映射空间”进行映射。...1G) 2.3 Linux内核高端内存理解 前 面我们解释了高端内存由来。...4 页框管理 4.1 页框管理 Linux采用4KB页框大小作为标准内存分配单元。

12.2K22

Linux - Linux内存管理

移除交换空间 ---- 概念 内存管理是Linux系统重要组成部分。...为了解决内存紧缺问题,Linux引入了虚拟内存概念。为了解决快速存取,引入了缓存机制、交换机制等。...当需要用到原始内容时,这些信息会被重新从交换空间读入物理内存Linux内存管理采取是分页存取机制。...要深入了解Linux内存运行机制,需要知道下面提到几个方面。 首先,Linux系统会不时地进行页面交换操作,以保持尽可能多空闲物理内存。...其次,Linux进行页面交换是有条件,不是所有页面在不用时都交换到虚拟内存中,Linux内核根据“最近最经常使用”算法,仅仅将一些不经常使用页面文件交换到虚拟内存中。

52.1K41

聊聊 Linux 内存统计

点击上方“小强进阶之路”,选择“星标”公众号 优质文章,及时送达 预计阅读时间: 18分钟 写在前面 本文主要分析 Linux 系统内存统计一些指标以及进程角度内存使用监控一些方法。...所以下文直接就找一台 Intel x86_64 架构下安装了 64bit Linux 系统服务器作为例进行相关实验和结果分析。...Linux 内存管理从物理内存管理到虚拟内存管理涉及概念和统计项实在太多,本文从实用和系统运维角度出发,只列举一些最实用统计。...内存页、SHM_LOCK共享内存页(也统计在Mlocked中)、和Ramfs等 Mlocked — mlock() 系统调用锁定内存大小 共享内存Linux 中细分的话可以分为以下几种: SystemV...共享内存、可执行程序文件、动态库、mmap文件等都统计在这里 Shmem — 共享内存大小,包括Shared Memory、tmpfs和devtmpfs 注意 Linux 内存是真正使用时才分配

5.9K40

Linux吃掉我内存

而当我们使用free命令查看Linux系统内存使用情况时,会 发现内存使用一直处于较高水平,即使此时系统并没有运行多少软件。...这正是Windows和Linux内存管理上区别,乍一看,Linux系统吃掉我们内存Linux ate my ram),但其实这也正是其内存管理特点。 ?...而Linux会充分利用这些空闲内存,设计思想是内存空闲还不如拿来多缓存一些数据,等下次程序再次访问这些数据速度就快了,而如果程序要使用内存而系统中内存又不足时,这时不是使用交换分区,而是快速回收部分缓存...因此,可以看出,buffers/cached真是百益而无一害,真正坏处可能让用户产生一种错觉——Linux内存!...其实不然,Linux并没有吃掉你内存,只要还未使用到交换分区,你内存所剩无几时,你应该感到庆幸,因为Linux缓存了大量数据,也许下一次你就从中受益!

95950

Linux 内存分页管理

有趣是,尽管进程和内存关系如此紧密,但进程并不能直接访问内存。在Linux下,进程不能直接读写内存中地址为0x1位置数据。...因此,Linux采用了分页(paging)方式来记录对应关系。所谓分页,就是以更大尺寸单位页(page)来管理内存。在Linux中,通常每页大小为4KB。...Linux把物理内存和进程空间都分割成页。 内存分页,可以极大地减少所要记录内存对应关系。我们已经看到,以字节为单位对应记录实在太多。...因此,Linux分页表,采用了多层数据结构。多层分页表能够减少所需空间。 我们来看一个简化分页设计,用以说明Linux多层分页表。...最新Linux系统中分页表多达3层,管理内存地址也比本章介绍长很多。不过,多层分页表基本原理都是相同。 综上,我们了解了内存以页为单位管理方式。

1.1K30

Linux内存描述之内存节点node--Linux内存管理(二)

CPU访问本地内存速度比访问远程内存速度要快 Linux适用于各种不同体系结构, 而不同体系结构在内存管理方面的差别很大....因此linux内核需要用一种体系结构无关方式来表示内存....因此linux内核把物理内存按照CPU节点划分为不同node, 每个node作为某个cpu结点本地内存, 而作为其他CPU节点远程内存, 而UMA结构下, 则任务系统中只存在一个内存node, 这样对于...系统中NUMA结点都是从0开始编号 3.1 linux-2.4中实现 pgdat_next指针域和pgdat_list内存结点链表 而对于NUMA结构系统中, 在linux-2.4.x之前内核中所有的节点...-3.x~4.x实现 node_data内存节点数组 在新linux3.x~linux4.x内核中,内核移除了pg_data_tpgdat_next之指针域, 同时也删除了pgdat_list链表

7.6K20

Linux 内核 内存管理】Linux 内核内存布局 ③ ( Linux 内核 动态分配内存 系统接口函数 | 统计输出 vmalloc 分配内存 )

文章目录 一、Linux 内核 动态分配内存 系统接口函数 二、统计输出 vmalloc 分配内存 一、Linux 内核 动态分配内存 系统接口函数 ---- Linux 内核 " 动态分配内存 "...是通过 " 系统接口 " 实现 , 下面介绍几个重要 接口函数 ; ① 以 " 页 " 为单位分配内存 : alloc_pages , __get_free_page ; ② 以 " 字节 " 为单位分配..." 虚拟地址连续内存块 " : vmalloc ; ③ 以 " 字节 " 为单位分配 " 物理地址连续内存块 " : kmalloc ; 注意 该 " 物理地址连续内存块 " 是以 Slab 为中心...; 二、统计输出 vmalloc 分配内存 ---- 执行 grep vmalloc /proc/vmallocinfo 命令 , 可以统计输出 通过 vmalloc 函数分配 " 虚拟地址连续内存

5.1K30

Linux内存分页管理

有趣是,尽管进程和内存关系如此紧密,但进程并不能直接访问内存。在Linux下,进程不能直接读写内存中地址为0x1位置数据。...因此,Linux采用了分页(paging)方式来记录对应关系。所谓分页,就是以更大尺寸单位页(page)来管理内存。在Linux中,通常每页大小为4KB。...Linux把物理内存和进程空间都分割成页。 内存分页,可以极大地减少所要记录内存对应关系。我们已经看到,以字节为单位对应记录实在太多。...因此,Linux分页表,采用了多层数据结构。多层分页表能够减少所需空间。 我们来看一个简化分页设计,用以说明Linux多层分页表。...最新Linux系统中分页表多达3层,管理内存地址也比本章介绍长很多。不过,多层分页表基本原理都是相同。 综上,我们了解了内存以页为单位管理方式。

1.4K10

Linux内存分页管理

有趣是,尽管进程和内存关系如此紧密,但进程并不能直接访问内存。在Linux下,进程不能直接读写内存中地址为0x1位置数据。...因此,Linux采用了分页(paging)方式来记录对应关系。所谓分页,就是以更大尺寸单位页(page)来管理内存。在Linux中,通常每页大小为4KB。...Linux把物理内存和进程空间都分割成页。 内存分页,可以极大地减少所要记录内存对应关系。我们已经看到,以字节为单位对应记录实在太多。...因此,Linux分页表,采用了多层数据结构。多层分页表能够减少所需空间。 我们来看一个简化分页设计,用以说明Linux多层分页表。...最新Linux系统中分页表多达3层,管理内存地址也比本章介绍长很多。不过,多层分页表基本原理都是相同。 综上,我们了解了内存以页为单位管理方式。

1.3K20

Linux内存描述之内存页面page--Linux内存管理(四)

1 Linux如何描述物理内存 Linux把物理内存划分为三个层次来管理 层次 描述 存储节点(Node) CPU被划分为多个节点(node), 内存则被分簇, 每个CPU对应一个本地物理内存, 即一个...内存每个节点都是由pg_data_t描述,而pg_data_t由struct pglist_data定义而来, 该数据结构定义在include/linux/mmzone.h, line 615, 每个结点关联到系统中一个处理器...简单来说, 页是一个数据块, 可以存放在任何页框(内存中)或者磁盘(被交换至交换分区)中 我们今天就来详细讲解一下linux下物理页帧描述 2 页帧 内核把物理页作为内存管理基本单位....,每一位代表一种状态,所以至少可以同时表示出32中不同状态,这些状态定义在linux/page-flags.h中 virtual 对于如果物理内存可以直接映射内核系统, 我们可以之间映射出虚拟地址与物理地址管理...因此在后来linux-2.4.x更新中, 删除了这个字段, 取而代之是page->flags最高ZONE_SHIFT位和NODE_SHIFT位, 存储了其所在zone和node在内存区域表zone_table

8K11

Linux内存描述之概述--Linux内存管理(一)

2 (N)UMA模型中linux内存机构 Linux适用于各种不同体系结构, 而不同体系结构在内存管理方面的差别很大. 因此linux内核需要用一种体系结构无关方式来表示内存....Linux内核通过插入一些兼容层, 使得不同体系结构差异很好被隐藏起来, 内核对一致和非一致内存访问使用相同数据结构 2.1 (N)UMA模型中linux内存机构 非一致存储器访问(NUMA)模式下...而内存管理其他地方则认为他们就是在处理一个(伪)NUMA系统. 2.2 Linux物理内存组织形式 Linux把物理内存划分为三个层次来管理 层次 描述 存储节点(Node) CPU被划分为多个节点..., 我们会在后面典型架构(x86)上内存区域划分详细讲解x86_32上内存区域划分 因此Linux内核对不同区域内存需要采用不同管理方式和映射方式, 为了解决这些制约条件,Linux使用了三种区:...2.6 高端内存 由于能够被Linux内核直接访问ZONE_NORMAL区域内存空间也是有限,所以LINUX提出了高端内存(High memory)概念,并且允许对高端内存访问

6.8K30

Linux中进程内存与cgroup内存统计

Linux内核,对于进程内存使用与Cgroup内存使用统计有一些相同和不同地方。...进程内存统计 一般来说,进程使用内存主要有以下几种情况: (1)用户空间匿名映射页(Anonymous pages in User Mode address spaces),比如调用malloc分配内存...,以及使用MAP_ANONYMOUSmmap;当系统内存不够时,内核可以将这部分内存交换出去; (2)用户空间文件映射页(Mapped pages in User Mode address spaces...实际上,进程使用共享内存,也是算到file_rss,因为共享内存基于tmpfs。...小结 (1)进程rss与cgroup rss区别 进程RSS为进程使用所有物理内存(file_rss+anon_rss),即Anonymous pages+Mapped apges(包含共享内存

2.4K30

Linux内存描述之内存区域zone--Linux内存管理(三)

因此相对于任何一个CPU访问本地内存速度比访问远程内存速度要快, 而Linux为了兼容NUMAJ结构, 把物理内存相依照CPU不同node分成簇, 一个CPU-node对应一个本地内存pgdata_t..., 我们会在后面典型架构(x86)上内存区域划分详细讲解x86_32上内存区域划分 因此Linux内核对不同区域内存需要采用不同管理方式和映射方式, 因此内核将物理地址或者成用zone_t表示不同地址区域...Linux使用enum zone_type来标记内核所支持所有内存区域 3.1 内存区域类型zone_type zone_type结构定义在include/linux/mmzone.h, 其基本信息如下所示...位系统中, Linux内核虚拟地址空间只有1G, 而0~895M这个986MB被用于DMA和直接映射, 剩余物理内存被成为高端内存....Linux必须处理如下两种硬件存在缺陷而引起内存寻址问题: 一些硬件只能用某些特定内存地址来执行DMA 一些体系结构其内存物理寻址范围比虚拟寻址范围大多。

9K31

Linux内存管理

本篇介绍 本篇介绍下Linux内存管理,用系统角度看内存寻址和分配机制。 内容介绍 内存管理应该是系统中最难模块之一了,而且历史也悠久,就先来简单回顾下。...计算机刚出现时候,并没有这些,刚开始是直接使用物理地址,也就是代码中操作地址是可以直接和物理地址对应上,可是后来随着多进程调度需求,以及有限物理内存,于是人们就开始做规定,比如对于一块内存,...分页机制可以完全避免内存碎片问题么? 公布下答案: 的确有分页机制就可以完全不需要分段机制,目前linux是在分段基础上实现了分页,这个也有考虑到是兼容性问题。...分页机制只是将内存管理粒度变小了,不过还是不能完全避免内存碎片问题,只是目前内存碎片一定会小于页框大小,比起之前方案已经改进很多了。...mmap流程如下: image.png 缺页异常 linux 是在不得不使用物理内存时候才会分配物理内存。这句话该怎么理解呢?

13.6K51
领券