关于“进程上下文”的理解 不知道对不对
时间:2011-08-21
来源:互联网
Linux, 进程上下文, kernel
鄙人初探linux kernel,在阅读LKD时,对进程上下文这个概念不是十分明白:
我认为一个进程的上下文分三种情况:
1)只位于user space,如:
#include <string>
int main()
{
return 0;
}
没有调用任何system call,不会进入kernel space,因此只会运行于user space,所以这个应用程序对应的进程的进程上下文就不妨理解为整个user space。
2)只位于kernel space,如操作系统本身就是运行于kernel的,所以向进程调度进程的进程上下文就不妨理解为整个kernel space。
3)横跨user space和kernel space,如:
int main()
{
fork();
...
}
调用了system call fork,会从user space进入kernel space,因此这个应用程序对应的进程的进程上下文就理解为整个内存空间。
不知道这样理解对不对。 谢谢指点。
鄙人初探linux kernel,在阅读LKD时,对进程上下文这个概念不是十分明白:
我认为一个进程的上下文分三种情况:
1)只位于user space,如:
#include <string>
int main()
{
return 0;
}
没有调用任何system call,不会进入kernel space,因此只会运行于user space,所以这个应用程序对应的进程的进程上下文就不妨理解为整个user space。
2)只位于kernel space,如操作系统本身就是运行于kernel的,所以向进程调度进程的进程上下文就不妨理解为整个kernel space。
3)横跨user space和kernel space,如:
int main()
{
fork();
...
}
调用了system call fork,会从user space进入kernel space,因此这个应用程序对应的进程的进程上下文就理解为整个内存空间。
不知道这样理解对不对。 谢谢指点。
作者: yujixi123 发布时间: 2011-08-21
第一个应该不会吧,楼主那个main是你程序的入口函数,但是程序并不是从main开始的,肯定会被系统调用,有一个kenel到User的转换,就是程序退出时也要调用内核函数,内核对你的进程信息进行处理
第二个我不知道对不对,感觉也是这样的
第三个一样同感
第二个我不知道对不对,感觉也是这样的
第三个一样同感
作者: hnwyllmm 发布时间: 2011-08-21
上下文就是cpu在执行时的一系列状态,比如current,进程结构体,需要的内存页等等。每个进程都以一分独立的的。
当A进程被执行时cpu根据他的上下文进行处理,如果没有处理完就需要切换,那他的上下文被保存,cpu转而去执行B进程的上下文。
先抛开写时拷贝不论,fork后进程A的整个上下文会被复制一份,A和A+两个进程独立,上下文也独立,cpu此时就可以在两个进程间切换,调度执行了。这是我的理解
当A进程被执行时cpu根据他的上下文进行处理,如果没有处理完就需要切换,那他的上下文被保存,cpu转而去执行B进程的上下文。
先抛开写时拷贝不论,fork后进程A的整个上下文会被复制一份,A和A+两个进程独立,上下文也独立,cpu此时就可以在两个进程间切换,调度执行了。这是我的理解
作者: yiyaaixuexi 发布时间: 2011-08-21
谢谢你的解答 不过有一个疑问:
"如果没有处理完就需要切换,那他的上下文被保存" 请问那些信息,如当前寄存器的值等,保存在哪里?内核栈? 谢谢
"如果没有处理完就需要切换,那他的上下文被保存" 请问那些信息,如当前寄存器的值等,保存在哪里?内核栈? 谢谢
引用 2 楼 yiyaaixuexi 的回复:
上下文就是cpu在执行时的一系列状态,比如current,进程结构体,需要的内存页等等。每个进程都以一分独立的的。
当A进程被执行时cpu根据他的上下文进行处理,如果没有处理完就需要切换,那他的上下文被保存,cpu转而去执行B进程的上下文。
先抛开写时拷贝不论,fork后进程A的整个上下文会被复制一份,A和A+两个进程独立,上下文也独立,cpu此时就可以在两个进程间切换,调度执行了。这是我的理……
上下文就是cpu在执行时的一系列状态,比如current,进程结构体,需要的内存页等等。每个进程都以一分独立的的。
当A进程被执行时cpu根据他的上下文进行处理,如果没有处理完就需要切换,那他的上下文被保存,cpu转而去执行B进程的上下文。
先抛开写时拷贝不论,fork后进程A的整个上下文会被复制一份,A和A+两个进程独立,上下文也独立,cpu此时就可以在两个进程间切换,调度执行了。这是我的理……
作者: yujixi123 发布时间: 2011-08-21
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28