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



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

  

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

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

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

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

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




  

相关话题

  为什么 Linux 如此安全,却不把 Linux 设计成像 Windows 一样的图形界面来使用? 
  为何中国有相当一部分 Windows 用户不愿意用 Windows 10? 
  如何评价 360 安全卫士 for Linux? 
  计算机windows7操作系统到底是属于多用户还是单用户? 
  为什么很少听到有人在用 Windows 编程? 
  鸿蒙操作系统是不是 PPT 操作系统? 
  弱弱的问一下,android手机为什么不能刷linux? 
  Linux 系统上用到了微软的哪些专利? 
  Android 得到广泛应用的情况下,COS 操作系统有机会吗? 
  最早的操作系统API出现在什么时候? 

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





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