关注
1: 操作系统如何访问一个跨多页的对象?
当一个对象大于页的大小(例如4KB),且跨越多个页时,操作系统通过维护一个连续的虚拟地址空间来访问这个对象。每个页在虚拟地址空间中会有一个对应的页表项。操作系统和硬件协作,使用页表将虚拟地址映射到物理地址。当访问跨页对象时,操作系统通过虚拟地址连续性,结合页表项中的映射信息,将虚拟地址转换为物理地址,从而能够访问到对象的全部内容。
虚拟内存管理: 操作系统使用虚拟内存管理机制,将程序的地址空间分隔成多个虚拟页。每个虚拟页通过页表映射到物理内存中的页框。
连续虚拟地址空间: 即便物理上非连续,操作系统确保对象在虚拟地址空间中占据连续的地址。这意味着,从程序的视角看,对象是存储在一个连续的内存区域内。
页表和TLB: 操作系统和处理器一起使用页表和转换后援缓冲器来高效地将虚拟地址转换为物理地址。当程序访问一个对象时,它使用对象的虚拟地址。处理器自动查找页表或TLB来找到对应的物理地址。
2: 写时拷贝时的处理机制
写时拷贝,是一种优化策略,用于节约内存和减少拷贝操作。当多个进程共享相同的物理内存页时,这些页被标记为只读。如果一个进程尝试写入这些只读页,会触发一个写保护中断。操作系统响应这个中断,决定是拷贝单个页还是多个页。
中断处理: 当写操作触发写保护中断时,操作系统的中断处理程序会被调用。它会检查触发写操作的虚拟地址,确定哪个虚拟页需要被复制。
页的拷贝: 对于写时拷贝,操作系统通常仅拷贝被写入的那个页,而不是整个对象占用的所有页。这是因为每个页表项独立管理各自的虚拟页到物理页的映射。因此,只有当对具体某个虚拟页进行写操作时,操作系统才会为该虚拟页创建一个新的物理页,并更新页表项以反映这一变化。
优化: 操作系统可以通过各种机制(如页表项的属性)来识别和跟踪哪些页是共享的,哪些已经被拷贝。这样,即使对象跨越多个页,操作系统也只在必要时拷贝修改的页,而不是整个对象的所有页。
查看原帖
点赞 1
相关推荐
点赞 评论 收藏
分享
斯卡蒂味的鱼汤:知道你不会来数马,就不捞你😂最近数马疯狂扩招,招聘要求挺低的,你能力肯定够,应该就是因为太强了,知道你不会来才不捞你 点赞 评论 收藏
分享
点赞 评论 收藏
分享
牛客热帖
更多
正在热议
更多
# 那些年,我收到的‘奇葩’回复 #
27235次浏览 169人参与
# 材料转码还有必要吗? #
31377次浏览 147人参与
# 百度秋招 #
52014次浏览 388人参与
# OC/开奖 #
194516次浏览 1338人参与
# 蚂蚁求职进展汇总 #
132280次浏览 1208人参与
# 职场中那些令人叹为观止的八卦 #
32250次浏览 252人参与
# 腾讯音乐秋招 #
431620次浏览 4779人参与
# 为了秋招你都做了哪些准备? #
25269次浏览 497人参与
# 材料人,你最希望上岸的是? #
12619次浏览 58人参与
# 你知道哪些职场黑话? #
64047次浏览 445人参与
# 哪些行业值得去? #
10437次浏览 63人参与
# 实习需要主动找活干吗? #
55787次浏览 296人参与
# 秋招投简历越早越好吗 #
99122次浏览 839人参与
# 秋招你经历过哪些无语的事 #
24720次浏览 249人参与
# 牛客十周岁生日快乐 #
185479次浏览 1828人参与
# 你今年的保底offer是哪家 #
144524次浏览 620人参与
# 校招薪资来揭秘 #
91118次浏览 567人参与
# 2022毕业即失业取暖地 #
120931次浏览 709人参与
# 实习教会我的事 #
42591次浏览 342人参与
# 双非本科的出路是什么? #
178081次浏览 1453人参与
# 参加过提前批的机械人,你们还参加秋招么 #
102020次浏览 1631人参与
# AI时代,哪些岗位最容易被淘汰 #
13140次浏览 103人参与