自己学习的备忘,从笔记转移过来,后面每一项写一篇对应的理解文章
这里写得挺详细:https://www.cnblogs.com/wuchanming/p/4360277.html
从用户态进入内核态过程(门的判断)
用户态到内核态切换途径
用户态进入内核态后进程栈如何切换
// TSS 结构定义(参考)
#ifdef CONFIG_X86_32
/* This is the TSS defined by the hardware. */
struct x86_hw_tss {
unsigned short back_link, __blh;
unsigned long sp0; //当前进程的内核栈顶指针
unsigned short ss0, __ss0h; //当前进程的内核栈段描述符
unsigned long sp1;
/* ss1 caches MSR_IA32_SYSENTER_CS: */
unsigned short ss1, __ss1h;
unsigned long sp2;
unsigned short ss2, __ss2h;
unsigned long __cr3;
unsigned long ip;
unsigned long flags;
unsigned long ax;
unsigned long cx;
unsigned long dx;
unsigned long bx;
unsigned long sp; //当前进程用户态栈顶指针
unsigned long bp;
unsigned long si;
unsigned long di;
unsigned short es, __esh;
unsigned short cs, __csh;
unsigned short ss, __ssh;
unsigned short ds, __dsh;
unsigned short fs, __fsh;
unsigned short gs, __gsh;
unsigned short ldt, __ldth;
unsigned short trace;
unsigned short io_bitmap_base;
} __attribute__((packed));
原文:https://www.cnblogs.com/varXinYuan/p/10865443.html