- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
[信息与通信]Linux进程调度切换和虚拟空间管理深入分析
一、Linux进程切换深入分析 #define CLONE_KERNEL????(CLONE_FS | CLONE_FILES | CLONE_SIGHAND) 创建内核线程时使用的CLONE标志。 1.#define unlikely(x)????__builtin_expect(!!(x), 0) 编译器优化,实际返回值x是整型表达式,0表示并不预期该事件发生,也就是说x为0的可能性很小,这是为了让编译器对下面得语句进行优化。 2.进程内核态堆栈结构: 进程是动态实体,进程描述符是存放在动态内存中的。在一块进程内存区上,Linux存放了两个数据结构:指向task_struct得thread_info和内核态的进程栈。大小一般2页8K,这要求页面帧对齐2的13次幂,在X86上编译时可以配置大小为4K。thread_info在内存区开始处,内核栈从内存尾向下增长。在C语言中可以用union结构表示: 图1. 8K内核栈和进程描述符task_struct及thread_info的相互关系 ? union thread_union { ????????struct thread_info thread_info; ????????unsigned long stack[2048]; /* 1024 for 4KB stacks */ ????}; ? CPU的esp寄存器用于执行堆栈的顶部指针,当从用户态转向内核态时,进程内核栈总是空的,所以esp就会执行堆栈底部。 使用alloc_thread_info?和free_thread_info用于分配和释放一个存放thread_info结构和内核堆栈的内存区。 内核通过当前esp指针可以很方便的得到thread_info结构的地址。current_thread_info(void)的原理即如下: movl $0xffff2000,%ecx /* or 0xfffff000 for 4KB stacks */ ???andl %esp,%ecx movl %ecx,p thread_info中task指针是第一个,所以current宏相当于current_thread_info( )-task,从而也就得到task指针。 ? 每个进程有自己独立得进程空间,所有进程共享CPU寄存器。进程继续执行时必须装入寄存器恢复得数据集称为硬件上下文环境。在Linux中部分硬件上下文存放在进程描述符中,部分存放到内核态堆栈里。 ? 3.?进程切换堆栈原理: 每个进程有自己独立得进程空间,所有进程共享CPU寄存器。进程继续执行时必须装入寄存器恢复得数据集称为硬件上下文环境。在Linux中部分硬件上下文存放在进程描述符中,部分存放到内核态堆栈里。 80x86体系支持在进程TSS段跳转时自动执行进程硬件上下文切换。Linux使用软件方法实现。软件方式效率差不多,当更灵活,可以控制流程,留下优化空间。 80x86用TSS段保存硬件上下文内容,每个CPU有一个TSS段。从用户态到内核态切换时,从TSS中取出内核栈地址。用户态进程访问I/O端口时,TSS中的I/O访问位图可以验证权限。tss_struct描述了TSS格式,init_tss存放初始TSS内容,每次进程切换,内核更新TSS中的某些字段,以反映当前运行进程的权限等级。每个进程有个反映任务CPU状态的thread_struct结构变量thread,除eax、ecx等通用寄存器内容保存在内核态堆栈中,其他大部分寄存器都保存在次结构中。该结构一部分对应于tss_struct中的内容,进程切换时把thread中某些内容更新到tss_struct中就可以反映当前任务的运行CPU环境。 struct tss_struct?{ ????unsigned short??back_link,__blh; ????unsigned long???esp0; ????unsigned short??ss0,__ss0h; ????unsigned long???esp1; ????unsigned short??ss1,__ss1h;?/* ss1 is used to cache MSR_IA32_SYSENTER_CS */ ????unsigned long???esp2; ????unsigned short??ss2,__ss2h; ????unsigned long???__cr3; ????unsigned long???eip; ????unsigned long???eflags; ????unsigned long???eax,ecx,edx,ebx; ????unsigned long???esp; ????unsigned long???ebp; ?
您可能关注的文档
- [信息与通信]DLT 5081-1997水力发电厂自动化设计技术规范.pdf
- [信息与通信]DSP C语言编程规范.doc
- [信息与通信]DWDM系统习题册答案教师用.doc
- [信息与通信]ds18b20+程序+详细使用说明.doc
- [信息与通信]DUM227 4850系列智能开关电源系统.pdf
- [信息与通信]DME资料.pdf
- [信息与通信]DSP与嵌入式处理器基础及ADI DSP介绍.ppt
- [信息与通信]EDACN论坛设计交流版帖子汇总2004.pdf
- [信息与通信]EDA软件应用与开发.pdf
- [信息与通信]EDGE原理.ppt
- [信息与通信]I589培训资料.ppt
- [信息与通信]IP城域网扩容工程城域波分设备安装工程.pdf
- [信息与通信]IE+Training+教材.pdf
- [信息与通信]Lexium 05系列伺服产品目录中文版.pdf
- [信息与通信]LMS700JF01-001 Rev002 2007-02-10_201104145913.pdf
- [信息与通信]LTE L2协议培训教材.pdf
- [信息与通信]M-Bus原理和应用.pdf
- [信息与通信]MCS51单片机程序设计导航选编2-1.doc
- [信息与通信]M000 0044 IP网络设计基础中文版v11.doc
- [信息与通信]K-pass DK8x00系列门禁_梯控软件手册1003.doc
最近下载
- 变压器防护方案.pdf VIP
- 大模型驱动的多智能体协同初探 清华大学 2024.pptx VIP
- SolidWorks 2023实用教程(杨正)课件全套 第1--10章 SolidWorks基础知识与用户界面 --- 工程图设计.pptx
- 手足口防控培训课件.pptx VIP
- 2025一建《建设工程法规及相关知识》考前10页纸(完整版).docx VIP
- 2025-2030中国驴奶行业发展现状调研与营销策略分析研究报告.docx
- 人教版八年级数学上册第十二章 《全等三角形》章节测试题.pdf VIP
- 华中科技大学版五年级信息技术教案.docx VIP
- 明天会更好(合唱简谱).pdf VIP
- 莫斯科郊外的晚上(高考声乐谱伴奏谱)原版正谱五线谱钢琴弹唱谱乐谱.pdf VIP
文档评论(0)