Chinaunix首页 | 论坛 | 认证专区 | 博客
  • 博客访问: 30789
  • 博文数量: 38
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 15
  • 用 户 组: 普通用户
  • 注册时间: 2016-01-30 09:54
文章分类
文章存档

2018年(2)

2017年(14)

2016年(22)

我的朋友
微信关注

IT168企业级官微



微信号:IT168qiye



系统架构师大会



微信号:SACC2013

发布时间:2016-05-24 17:05:22

进程调度时,当被选中的next进程不是current进程时,需要进行上下文切换。
进行上下文切换时,有一些问题不太容易理解,比如:
1、进程上下文切换必然发生在内核态吗?
2、上下文切换后原来的进程(prev)如果恢复执行,从什么地方开始执行?
3、上下文切换后,如何切换到新进程执行?新进程从什么地方开始执行?
5、上下文切换时,堆栈如何切换,如果保证不混乱?
6、A进程执行时被打断调度B进程运行,B进程正常执行过程中被打断调度C进程运行,C运行被打断中调度D运行,以此类推,看似一个无限嵌套,如何恢复到A进程运行,不会一层层返回吧?会不会有问题?
7、上下文切换后,如何恢复到新进程的用户态程序继续执行?
上述问题(可能还有其它疑问~)在理解了进程上下文切换的细节后,就都能回答了。......【阅读全文】

阅读(263) | 评论(0) | 转发(0)

发布时间:2016-05-24 16:53:36

Linux中有3种栈:
1)用户栈。当进程处于用户态时使用,位于进程地址空间(用户态部分(如:0-0xc0000000))底部,用户态分配局部变量和函数调用时时,使用该栈,跟平时我们见到和理解的一样,就是虚拟地址空间中的一段。
2)内核栈。跟用户栈独立,属于进程,即每个进程都有自己的内核栈,单独分配,大小为8k,跟thread_info结构放在一起,在用户态和内核态切换时,需要进行切换。
3)中断栈。老版本内核中默认认跟内核栈共享,新版本内核中与内核栈独立,且软中断和硬中断单独使用自己的中断栈。中断、异常、软中断使用此栈。
本文主要讲解内核栈、用户栈和内核栈切换的相关实现。......【阅读全文】

阅读(772) | 评论(0) | 转发(0)

发布时间:2016-01-30 09:54:04

亲爱的CUer:欢迎您在ChinaUnix博客安家,您的博客地址是:http://blog.chinaunix.net/uid/20844267.html我们是一个IT技术的技术家园,每一个IT技术人员都能在这里找到与您志同道合的知音。您可以用文字、图片记录分享您的IT技术、职场经验和个人成长经历等,随时随地发表博文和上传图片分享您的技术成果,还可以在ChinaUnix博客平台上与网友交流和分享。我们为您提供了简约的模板来更好展现您的文采,强大的博客功能更能陪伴您的网络生活。准备好了吗?现在就开始精彩的博客之旅!......【阅读全文】

阅读(454) | 评论(0) | 转发(0)
给主人留下些什么吧!~~
留言热议
请登录后留言。

登录 注册