一:Linux虚拟地址空间布局 (转自:Linux虚拟地址空间布局) 在多任务操作系统中,每个进程都运行在属于自己的内存沙盘中。这个沙盘就是虚拟地址空间(Virtual Address Space),在32位模式下它是一个4GB的内存地址块。在Linux系统中, 内核进程和用户进程所占的虚拟内存比例 ...
分类:
编程语言 时间:
2018-07-22 20:50:36
阅读次数:
225
前提:本文是基于Linux系统下的学习 补充:Linux系统下,一切皆文件 段错误的原因: 访问了没有物理地址映射的虚拟地址或者是对改地址没有访问权限 #include <sys/mman.h>void *mmap(void *addr, size_t length, int prot, int f ...
分类:
其他好文 时间:
2018-07-22 15:23:34
阅读次数:
184
LVS负载均衡项目,是Linux开源项目中专门用于负载均衡的,主要应用在client访问server时,通过LVS来分配对应的server来响应client的请求。client访问时,都是访问的LVS的VIP虚拟地址,LVS有三种工作模式: LVS负载均衡器,有多种负载均衡算法,不同的场景使用不同的 ...
分类:
系统相关 时间:
2018-07-08 18:02:00
阅读次数:
193
1. 静态映射: 不同版本内核中静态映射表位置,文件名可能不同 不同SoC的静态映射表位置,文件名可能不同 所谓映射表其实就是头文件的宏定义 2. 三星版本内核中的静态映射表 主映射表:F:\winshare\kernel\jiuding_kernel\arch\arm\plat s5p\inclu ...
分类:
其他好文 时间:
2018-07-01 16:20:53
阅读次数:
171
1. 不变: 硬件原理不变 硬件操作接口(寄存器)不变 硬件操作代码不变 寄存器地址不变:裸机直接用物理地址,现在用虚拟地址。 编程习惯不变:裸机用函数指针操作寄存器,现在用封装好的IO读写函数来操作寄存器。 2. 内核的虚拟地址映射方法(MMU) 两种方法: 静态映射: 在内核移植时就以代码方式硬 ...
分类:
其他好文 时间:
2018-07-01 16:20:23
阅读次数:
109
一、进程与线程概述: 进程拥有一个完整的虚拟地址空间,不依赖于线程而独立存在; 线程是进程的一部分,没有自己的地址空间,与进程内的其他线程一起共享分配给该进程的所有资源。 进程拥有一个完整的虚拟地址空间,不依赖于线程而独立存在; 线程是进程的一部分,没有自己的地址空间,与进程内的其他线程一起共享分配 ...
分类:
编程语言 时间:
2018-07-01 13:01:49
阅读次数:
133
本节开始分析head.S文件,主要分析了内核运行的虚拟地址与物理地址,内核真正入口以及启动条件等。 2.16.2.1、内核运行的物理地址与虚拟地址 (1)KERNEL_RAM_VADDR(VADDR就是virtual address),这个宏定义了内核运行时的虚拟地址。值为0xC0008000 (2 ...
分类:
其他好文 时间:
2018-06-27 22:29:30
阅读次数:
186
?在上一节我们讨论了用户态向内核申请内存的接口(系统调用), 发现内核仅仅是判断进程的虚拟地址空间是否足够划分出新的区间, 实际并未分配物理内存. 这是因为内核分配内存的机制是仅当进程实际使用该地址后才为其分配物理内存, 借此提升物理内存使用率. 本节我们就来看看内核究竟是如何分配物理内存的.?以3 ...
分类:
其他好文 时间:
2018-06-27 21:05:06
阅读次数:
227
缺页中断(英语:Page fault,又名硬错误、硬中断、分页错误、寻页缺失、缺页中断、页故障等)指的是当软件试图访问已映射在虚拟地址空间中,但是目前并未被加载在物理内存中的一个分页时,由中央处理器的内存管理单元所发出的中断。 通常情况下,用于处理此中断的程序是操作系统的一部分。如果操作系统判断此次 ...
分类:
编程语言 时间:
2018-06-22 17:43:16
阅读次数:
536
在多任务操作系统中,每个进程都运行在属于自己的内存沙盘中。这个沙盘就是虚拟地址空间(Virtual Address Space),在32位模式下它是一个4GB的内存地址块。在Linux系统中, 内核进程和用户进程所占的虚拟内存比例是1:3,而Windows系统为2:2(通过设置Large-Addre ...
分类:
系统相关 时间:
2018-06-10 18:59:09
阅读次数:
255