我正在尝试理解内存管理是如何在低级别上进行的,并有几个问题。
1)基普·R·欧文写的一本关于汇编语言的书说,在实模式下,前三个段寄存器在程序启动时加载了代码、数据和堆栈段的基地址。这对我来说有点模棱两可。这些值是手动指定的,还是由汇编程序生成指令将这些值写入寄存器?如果它是自动发生的,它如何找出这些数据段的大小?
2)我知道Linux使用扁平线性模型,即以非常有限的方式使用分割。此外,根据Daniel P.Bovet和Marco Cesati的"Understanding the Linux Kernel“,GDT中有四个主要部分:用户数据、用户代码、内核数据和内核代码。所有四个网段的