![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
操作系统
匈奴未灭,何以家为
这个作者很懒,什么都没留下…
展开
-
操作系统中的缺页中断总结
缺页中断 malloc()和mmap()等内存分配函数,在分配时只是建立了进程虚拟地址空间,并没有分配虚拟内存对应的物理内存。当进程访问这些没有建立映射关系的虚拟内存时,处理器自动触发一个缺页异常。 缺页中断:在请求分页系统中,可以通过查询页表中的状态位来确定所要访问的页面是否存在于内存中。每当所要访问的页面不在内存是,会产生一次缺页中断,此时操作系统会根据页表中的外存地址在外存中找到所缺的一页,将其调入内存。 缺页本身是一种中断,与一般的中断一样,需要经过4个处理步骤: 1、保护CPU现场 2、分析中断原原创 2020-06-17 16:46:04 · 2375 阅读 · 0 评论 -
操作系统中的虚拟内存空间总结
虚拟内存空间虚拟内存空间虚拟内存空间的优势虚拟内存空间的代价 虚拟内存空间 为了防止不同进程同一时刻在物理内存中运行而对物理内存的争夺和践踏,采用了虚拟内存。 虚拟内存技术使得不同进程在运行过程中,它所看到的是自己独自占有了当前系统的4G内存。所有进程共享同一物理内存,每个进程只把自己目前需要的虚拟内存空间映射并存储到物理内存上。 事实上,在每个进程创建加载时,内核只是为进程“创建”了虚拟内存的布局,具体就是初始化进程控制表中内存相关的链表,实际上并不立即就把虚拟内存对应位置的程序数据和代码(比如.text原创 2020-06-17 16:27:18 · 243 阅读 · 0 评论 -
操作系统中程序的内存结构总结
程序的内存结构BSS段数据段代码段栈区堆区 一个程序本质上都是由BSS段、数据段、代码段三个组成的。可以看到一个可执行程序在存储(没有调入内存)时分为代码段、数据区和未初始化数据区三部分。 BSS段 BSS段(未初始化数据区):通常用来存放程序中未初始化的全局变量和静态变量的一块内存区域。BSS段属于静态分配,程序结束后静态变量资源由系统自动释放。 数据段 数据段:存放程序中已初始化的全局变量的一块内存区域。数据段也属于静态内存分配。 代码段 代码段:存放程序执行代码的一块内存区域。这部分区域的大小在程序原创 2020-05-31 22:21:48 · 664 阅读 · 0 评论