(菜鸟提问)怎么区份linux系统进程和用户进程?

kewen_liang 2008-04-20 09:19:15
如题:怎么区分系统进程和用户进程?
还有,用户程序是以进程的形式来运行的,怎么得到这个用户程序的PID呢,怎么知道所得到的PID就是我想要的特定用户进程的PID呢??

...全文
486 9 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
gogofly_lee 2008-04-22
  • 打赏
  • 举报
回复
对于内核进程和用户进程之分,我觉得可以从以下几方面来说:
1. 当用户进程由于中断,系统调用或异常进入内核态时,用户进程的所有需要保存的信息都会被保存下来,当中断,系统调用或异常处理完毕退出内核时,又会恢复因中断,系统调用或异常等保存的用户进程信息,并继续运行(假设没有进程切换),从这点看,进程只是在用户空间中,没有相应的内核进程.
2. 当用户进程由于中断,系统调用或异常进入内核态后,系统调用完全用的是当前用户进程的上下文,中断也是占用当前用户进程的时间片,从这点看好像感觉它们又是用户进程的内核态,即内核进程.
3.还有一种情况是,只是在内核中运行的一种程序,叫做内核线程,有的地方也叫轻量级进程,它与用户进程没有什么联系.
kewen_liang 2008-04-22
  • 打赏
  • 举报
回复
顶 顶 顶
josling 2008-04-22
  • 打赏
  • 举报
回复
进程可以在用户态和内核态运行
如果没有系统调用,用户态运行,可以提高性能和执行效率
但要是有系统调用,只能陷入内核了。
gogofly_lee 2008-04-21
  • 打赏
  • 举报
回复

如题:怎么区分系统进程和用户进程? 

在内核中有内核线程的概念,它与用户进程的主要区别是:内核线程的内存描述符是空的,即task->mm=NULL。
Kinges 2008-04-21
  • 打赏
  • 举报
回复
2:每个进程可以在用户态运行和内核态运行;

======================================================

我不赞同这句话!


用户空间的进程,如果要到内核态去运行的话,必须走相关的系统调用~~否则是非法的!

blackbillow 2008-04-20
  • 打赏
  • 举报
回复
怎么得到一个进程的PID?
你可以在程序中使用getpid()打印出当前进程的PID
或者通过ps命令
blackbillow 2008-04-20
  • 打赏
  • 举报
回复
1:没有内核进程和用户进程之分;
2:每个进程可以在用户态运行和内核态运行;
3:每个进程可以认为是一个指令运行路线+背景信息(如:打开文件),这些指令沿着路线的执行会影响到进程的信息(进程的路线是由CPU的eip决定的);
4:进程的切换:进程的切换需要由当前正在运行的进程准备好“切换到的进程”的相关信息的设置(如:current_proc),然后在执行一个CPU指令(如:ljmp可以通过TSS完成相关寄存器的设置),在这之后,地址空间变了,且CPU按照新的的eip执行了,也就是说新的进程得到了运行。
kewen_liang 2008-04-20
  • 打赏
  • 举报
回复
多谢多谢
fglswh 2008-04-20
  • 打赏
  • 举报
回复
blackbillow回答得很全很好

4,465

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 内核源代码研究区
社区管理员
  • 内核源代码研究区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧