使用道具 举报
Post by ifree 谢谢zhllg回答。 这样说的意思是内核堆栈是系统调用的代码使用的。用户态代码陷入内核时会发生一次堆栈的切换。那么怎么传递参数的? 你说4K的好处可以减少内存碎片,可是Linux使用伙伴系统分配的内存,这个算法以2^k分配内存的。我觉得不会引起内存碎片。
Post by hendric 传说中的callgate是自动拷贝参数的
Post by ifree 这两天看书的收获是: Linux在x86体系结构上没有使用call gate,系统调用使用的是中断门,int 0x80。进程切换时从tss段中取出内核堆栈的指针ss:esp,貌似没有通过内存传递参数。所以我相信楼上zhllg所说,是通过eax、ebx等寄存器传递参数的。
本版积分规则 发表回复 回帖后跳转到最后一页