百科问答小站 logo
百科问答小站 font logo



Linux 内核中,多线程栈空间模型是怎样的? 第1页

  

user avatar   bei-ji-85 网友的相关建议: 
      

内存模型有很多种,Windows和Linux(以及大多数操作系统)使用的都是平坦模型,这种模式下,整个地址空间都是对任务可见的。换句话任意线程都可以访问用户空间的任意地址,不管这个地址是属于某个线程的线程栈,还是属于其它内存区域。

线程之间不存在任何的隔离手段,地址空间的隔离只发生在进程与进程之间。

我在其它回答里提到过,栈只是一个抽象的概念,只是操作系统为了方便管理而定义出来的,栈是集中在一起还是分散在各个区域,对于CPU来说都是一样的。

段寄存器也不严格限制其使用范围,平坦模型下,ds/ss/es/cs都指向的是同一个区域,使用ds:[edi]去访问线程栈和用ss:[ebp]去访问堆,都是可以的。




  

相关话题

  发展我们的国产操作系统,有没有必要从内核写起,deepin 到底属不属国产操作系统? 
  Linux 系统上用到了微软的哪些专利? 
  Apple TV OS 为什么不进中国,话说仅仅是因为相关的服务用不了吗? 
  微软是否无法放弃更新 Windows,转而设计全新的操作系统? 
  页表是否包含着进程中所有的页? 
  对于华为的新操作系统你有哪些期待和建议? 
  微软为什么不推出纯文本模式的Windows server? 
  Linux 为什么没发展成 macOS 或者 Windows 那样的大众图形化操作系统? 
  腾讯不积极开发 Linux 版微信和 QQ 是否阻碍了国内 Linux 用户群的发展? 
  华为要怎么做才能打破“鸿蒙OS套壳安卓”的言论? 

前一个讨论
如何找到知乎里的优秀回答者?
下一个讨论
为什么很少听到有人在用 Windows 编程?





© 2025-04-24 - tinynew.org. All Rights Reserved.
© 2025-04-24 - tinynew.org. 保留所有权利