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



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

  

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

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

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

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

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




  

相关话题

  如何看待腾讯云正式对外公布分布式云战略,发布云原生操作系统遨驰 Orca ,会给业界带来哪些影响? 
  当页表中的页表项大部分都有效的时候,多级页表还能节省空间吗? 
  如何评价Linus Torvalds编写的LINUX内核的技术含量? 
  用数据线连接手机和电脑后,可以在手机上访问电脑硬盘中的文件吗? 
  为什么在知乎macOS用户只要黑半句Windows就招来围攻,而对待Linux却只有技术层面的反驳? 
  如何评价中航计算机所研制的天脉操作系统? 
  升级鸿蒙系统之后你后悔了吗? 
  如何评价新发布的银河麒麟操作系统 V10:可兼容安卓生态? 
  现在的笔记本都只能装 Win10 了吗? 
  华为要怎么做才能打破“鸿蒙OS套壳安卓”的言论? 

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





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