操作系统
一颗哈士奇
这个作者很懒,什么都没留下…
展开
-
内存对齐原因和规则
为什么要内存对齐?尽管内存是以字节为单位,但是大部分处理器并不是按字节块来存取内存的.它一般会以双字节,四字节,8字节,16字节甚至32字节为单位来存取内存,我们将上述这些存取单位称为内存存取粒度.现在考虑4字节存取粒度的处理器取int类型变量(32位系统),该处理器只能从地址为4的倍数的内存开始读取数据。假如没有内存对齐机制,数据可以任意存放,现在一个int变量存放在从地址1开始的联系四个字节地址中,该处理器去取数据时,要先从0地址开始读取第一个4字节块,剔除不想要的字节(0地址),然后从地址4开始原创 2020-11-05 23:28:33 · 456 阅读 · 0 评论 -
进程地址模型
在前面的章节中,我们已经了解到可执行文件是如何映射到计算机内存里的,本节将再深化一下对这方面的理解,顺便结合上一章中关于动态链接的内容,看看加上动态链接之后进程的地址空间是如何分布的。现代的应用程序都运行在一个内存空间里,在32位的系统里,这个内存空间拥有4GB(2的32次方)的寻址能力。相对于16位时代i386的段地址加段内偏移的寻址模式,如今的应用程序可以直接使用32位的地址进行寻址,这被称为平坦(flat)的内存模型。在平坦的内存模型中,整个内存是一个统一的地址空间,用户可以使用一个32位的指针访问原创 2020-09-16 18:51:11 · 298 阅读 · 0 评论 -
虚拟内存
虚拟内存让进程以为自己分配了连续的内存地址,而实际上,它是把物理内存映射成虚拟内存,将物理地址映射成逻辑地址,物理地址不一定是连续的,是离散的,并且外存的数据并不是全部加载到内存里面的,有的是需要时再加载的,所以虚拟内存相对于未加载完的物理内存更大。逻辑地址映射物理,通过:1.根据逻辑地址算出页号和页内偏移量(也是OS对逻辑地址等长划分成的单位,页框是对物理地址的划分)2.查询页表,找到页号对应...原创 2020-04-18 15:21:44 · 162 阅读 · 0 评论 -
内核对象
整理下《windows核心编程》和《effective C++》内容。内核(kernel)是操作系统**最核心的部分,是最核心的代码和数据。**内核常驻于内存,负责处理各种各样的核心任务,比如I/O、进程管理、内存管理等。内核具有高权限,能够完成普通应用程序没有权限完成的任务,当应用程序需要执行高权限的操作时,应用程序就告诉内核自己想要做什么,并将控制权移交给内核,由内核去完成任务,任务完成后再...原创 2020-04-13 17:54:48 · 307 阅读 · 0 评论