2017年8月6日
摘要: 早期的Inter芯片只支持1MB内存,采用实模式,采用16bit地址。后来随着技术进步,出现可以访问更多内存的 保护模式芯片,采用32bit地址。为了保持对前面芯片的兼容,Inter支持这两种模式。当芯片启动时,默认处于实模式, 然后OS控制进入保护模式。 实模式和保护模式的最大区别: 实模式下,程 阅读全文
posted @ 2017-08-06 22:56 生活的艺术 阅读(1125) 评论(0) 推荐(1)
摘要: 1.虚拟地址到物理地址 X86芯片访问内存,需要使用MMU功能,实现虚拟地址到线性地址,再到物理地址的访问。 X86的分段机制是强制的,分页机制是可选的。 2.分段机制 X86的虚拟地址,由选择符:偏移值决定。段选择符由CS,SS,DS等组成。CS为代码段选择符,SS为堆栈段选择符, DS为数据段选 阅读全文
posted @ 2017-08-06 19:18 生活的艺术 阅读(542) 评论(0) 推荐(0)
摘要: Linux每个可执行程序都具有相同的虚拟地址分配,当OS启动进程时,是如何加载程序呢? 1. 进程结构体 每个进程都具有task_struct结构体,该结构体的mm字段负责对程序内存的虚拟地址映射。 mm中每个vm_area_struct对应可执行程序的段虚拟地址空间,例如.text等。当程序被执行 阅读全文
posted @ 2017-08-06 17:31 生活的艺术 阅读(1073) 评论(0) 推荐(0)
摘要: 1.进程虚拟内存分配 在Linux系统中,每个进程都具体自己独立的4GB虚拟内存空间,包括3GB的用户空间和1GB内核空间。每个程序被编译后,成为可执行程序, 变量和函数的地址都被分配完成。可执行程序内部被划分为多个区域,包括.text,.data,.bss等区域。 (1).text为代码段,可执行 阅读全文
posted @ 2017-08-06 16:22 生活的艺术 阅读(282) 评论(0) 推荐(0)