Linux内存模型
摘要:最新的Linux内存分为三种。传统的Flat Memory模型,这是最经典的内存模型,物理内存线性增长,页框用mem_map数组表示。后来因为需要对NUMA和内存热插拔技术的支持,Linux引入了两个新的内存模型:Discontiguous memory和Sparse memory。具体的介绍稍后添加,目前先做一个笔记,Sparse memory内存模型将物理内存统一映射到了vmemmap数组中,个人感觉就相当于在真正的物理内存(可能不是连续的)之上又加了一层虚拟的物理内存,而这个虚拟的物理内存在地址上是连续的,因此就不会出现因为热插拔内存而造成的内存空洞。先写这么多,日后再仔细研究每个内存模
阅读全文
Linux操作系统是如何工作的
摘要:《实验五——Linux操作系统是如何工作的?破解操作系统的奥秘》姓名:方超学号:SA12**6201Linux操作系统工作的基础 存储程序计算机、堆栈(函数调用堆栈)机制和中断机制是Linux操作系统工作的三大基础。 存储程序计算机是目前通用计算机的工作模型,程序指令保存在存储器中,处理器与存储器通过总线相连,处理器从存储器中获取指令和数据并执行,执行方向是逐条执行。存储器中存储的数据可以随机的读取,处理器的程序指针寄存器(x86中是EIP)标志着当前或者即将执行的指令在存储器中的存储位置。Linux默认工作在这种存储程序计算机模型之上。 堆栈机制是C语言函数调用的基础,而Linux内核...
阅读全文
进程的创建与可执行程序的加载
摘要:学号:SA*****201姓名:方超一、进程控制块与地址空间的联系 进程的地址空间也叫线性空间,由进程可寻址的虚拟内存组成。系统允许进程使用这种虚拟内存中的地址。在32位操作系统中,进程的地址空间有32位,即4GB的寻址范围,在64位系统中会更大。 可执行程序分为若干的功能段,如代码段,数据段,堆栈段等等。相应的,系统会将进程的这些段放置在进程线性空间的一段内存区域上。进程只能访问有效内存区域内的内存地址。每个内存区域也具有相关权限,如对相关进程有可读,可写,可执行属性。若一个进程访问了不在有效范围内的内存区域,系统就会产生错误,如Linux中常见的段错误。 Linux内核中用内存描述符...
阅读全文
初探机器的工作原理
摘要:《实验一:机器是怎样工作的?——实验报告》姓名:方超学号:SA*****201试验目标:请使用Example的c代码分别生成.cpp,.s,.o和ELF可执行文件,并加载运行,分析.s汇编代码在CPU上的执行过程。并通过实验解释单任务计算机是怎样工作的,并在此基础上讨论分析多任务计算机是怎样工作的。试验环境:Ubuntu 13.04, GCC 4.7.3, GDB 7.5.91.20130417, GDB图形前端: DDD试验内容:1.编写example.c代码 1 int g(int x) 2 { 3 return x + 3; 4 } 5 6 int f(int x) 7 { 8...
阅读全文