启动进程流程
来源:互联网 发布:java图片转base64 编辑:程序博客网 时间:2024/05/20 04:13
LINUX启动进程时设置了CS,ESP等各个寄存器的值,这是相应的宏:
void
start_thread(struct pt_regs *regs, unsigned long new_ip, unsigned long new_sp)
{
loadsegment(fs, 0);
loadsegment(es, 0);
loadsegment(ds, 0);
load_gs_index(0);
regs->ip = new_ip;
regs->sp = new_sp;
percpu_write(old_rsp, new_sp);
regs->cs = __USER_CS;
regs->ss = __USER_DS;
regs->flags = 0x200;
set_fs(USER_DS);
/*
* Free the old FP and other extended state
*/
free_thread_xstate(current);
}
EXPORT_SYMBOL_GPL(start_thread);
这是__USER_CS在X386架构的定义:
#define GDT_ENTRY_DEFAULT_USER_CS 6
#define __USER_CS (GDT_ENTRY_DEFAULT_USER_CS* 8 + 3)
现在看一下保护模式下的段寄存器的具体定义:
15 32 1 0
index T RPL
RPL:Request Privilege Level
T:0=GDT 1=LDT
这里__USER_CS等于:
__USER_CS = 6 * 8 + 3 = 48 + 3 = 51
00110011 RPL= 11 T = 0 (GDT) INDEX=110(6)
- 启动进程流程
- linux进程启动流程
- Zygote进程启动流程
- SystemServer进程启动流程
- Android进程启动流程
- android进程启动流程
- Linux内核启动进程流程
- Android System进程启动流程
- Zygote进程的启动流程
- Android 应用进程启动流程
- Android 应用进程启动流程
- Android 应用进程启动流程
- Android 应用进程启动流程
- startService启动应用进程流程
- docker启动Container进程之启动流程
- chrome31 shell启动流程---初始流程及启动主进程
- android init进程启动的大致流程
- Android app启动一个新进程流程
- 2009年全球21大电信运营商排名
- 简单休眠之等待队列
- jquery 学习感想
- B&W(Bowers & Wilkins)
- 内存泄漏检查工具valgrind使用方法
- 启动进程流程
- 尽管几乎没有一天
- 一道智力题
- c++数组引用作为函数参数
- 所有的一切都在那里
- 数据库触发器
- Ajax 三个问题
- 注解
- 那是你唯一的外套吗?