深入linux内核架构-学习笔记一
来源:互联网 发布:手机淘宝我要代理入口 编辑:程序博客网 时间:2024/05/16 23:47
1. linux内存管理中,将虚拟空间划分为两个部分:内核空间和用户空间,内核空间占用高地址空间(>TASK_SIZE),虚拟空间地址与具体的物理内存的大小无关。内核利用页表将虚拟空间与物理内存对应起来,不同的虚拟空间的页可以映射到同意物理内存当中,从而实现不同进程间的数据共享。用户空间中的每一个用户程序都看不到彼此的存在,因此每一个用户程序都可以利用整个用户空间。
2.内核空间和用户空间的访问:用户程序不能直接访问内核空间,只能以系统调用(陷入)的形式。当内核运行在中断上下文中的时候,是不能访问虚拟空间的用户空间部分,这是因为中断随时都可能发生,发生中断的时候,任何一个用户程序都可能正在运行,基本上与中断的原因无关,因此内核无权访问用户程序空间。
3.物理内存的分配:内核采用伙伴系统来分配物理页帧,内存中的空闲块总是两两分组,每组中的两个内存块成为伙伴。如下图所示。若要分配8个页帧,则现将16个页帧分成两个伙伴,其中的一个用于满足应用程序的需求,另一个则放回伙伴系统。若下一个请求需要2个页帧,则现将8个页帧分成两个4个页帧,其中一个放回伙伴系统,另一个在分成两个伙伴,每一个含两个页。其中一个回到伙伴系统,另一个则传递给应用程序。当有内存页帧回收的时候,先检查是否能与伙伴系统中的空闲的伙伴合并,如能则先合并在放回伙伴系统,否则直接放回伙伴系统。
当内核请求比页帧小的多的空间分配的时候,由于不能使用标准库的函数,因此内核定义了slab缓存。slab缓存每次申请若干页帧,然后在这些帧中为内核分配小的空间请求,并保持与伙伴系统的交互。
4.内核中链表的处理:内核提供的标准链表能连接任何数据结构的,其采用嵌入链表的方式实现,将标准的链表连接结构作为数据结构的成员。如下图所示
5.字节序:现代计算机采用大端序( big endian)和小端序( little endian)的格式存储字。大端序表示字中的高位存储在低字节,字中的地位存储在高字节;小端序则相反,即字中的高位存储在高字节,字中的低位存储在低字节。intel的x86_64的处理器都是采用小端序。
- 深入linux内核架构-学习笔记一
- 深入Linux内核架构第二章学习笔记
- 深入linux内核架构学习笔记-第7章 模块
- 3.5.8 内核映射------《深入Linux内核架构》笔记
- 《深入理解linux内核》笔记(一)
- linux内核学习笔记(一)
- Linux内核学习笔记一
- Linux内核学习笔记(一)
- Linux内核学习笔记一
- Linux内核学习笔记一
- 《深入理解Linux网络内幕》学习笔记三:第七章 组件初始化内核架构
- 《深入理解Linux内核》学习笔记-第一章
- 深入理解LINUX内核学习笔记01
- 深入理解LINUX内核---学习笔记02
- 深入了解LINUX内核--学习笔记02
- 深入理解LINUX内核--学习笔记
- 深入理解Linux内核学习笔记
- 深入Linux内核架构之进程篇一
- Oracle 11gOCP 053 v12.02 1--300题疑问答案更正
- Servlet的生命周期
- 守护进程
- C# 实现将一个文本文档按行数分成多个文档
- android Launcher那点事儿
- 深入linux内核架构-学习笔记一
- android 混淆文件project.properties和proguard-project.txt
- VivaldiSimulator仿真参数说明
- 关于win7下的ARM的程序烧录
- csdn英雄会(pongo)题解之回文数
- Spring mvc+hibernate+freemarker(开源项目)
- Java2D (WeatherWizard)
- ffmpeg简介
- 使用togglebutton切换背景颜色和字体颜色