码迷,mamicode.com
首页 > 系统相关 > 详细

进程基本概念

时间:2016-04-03 20:34:17      阅读:238      评论:0      收藏:0      [点我收藏+]

标签:进程

1.进程的描述: 程序的一个执行实例。

               正在执行的程序。

               能分配处理器并由处理器执行的实体。

从内核角度来看:担当分配系统资源(cpu和内存)的实体

2.文件(即程序,存放在磁盘的普通文件)执行代码,化为进程(加载到内存),创造相应描述它的数据结构。PCB(Linux进程描述块task_struct):描述进程属性即进程属性的集合,包括:调度信息,资源信息,优先级信息,代码信息,数据信息,进程切换信息优先级不是得到得不到的表现,而是描述得到某种资源的先后顺序。进程得到cpu资源,优先级更多表现在运行中。

进程的两个基本元素是程序代码(可能被执行相同程序的其他进程共享)和代码相关联的数据集。进程是一种动态描述,但是并不代表所有的进程都在运行。(进程在内存中因策略或调度需求,会处于各种状态)

3.进程标识符:pid(进程id),ppid(父进程id),在Linux下,C程序进过4个步骤生成可执行文件,分别是预处理,编译,汇编,链接(静态链接,动态链接)指令如gcc -E test.i test.c,gcc -S test.s test.i,

gcc -c test.o test.s.r如果有多个源文件可使用创建Makefile/makefile自动化编译,根据依赖关系动作生成工程,但是在Makefile中会生成一系列临时文件,如test.i,test.s等,需使用伪目标文件删除临时文件。

eg:

(目标文件)test:test.c(依赖文件)

Tab键(语法规定)gcc -o test test.c(依赖关系)

.PHONY:clean

clean:

 Tab键rm -rf  test

如此在运行时输入make,即可生成test目标文件,./test运行即可,若要重新编译,make clean,再make即可。

4.进程状态:

static const char * const task_state_array[] = {

"R (running)", /* 0 */ 运行

"S (sleeping)", /* 1 */ 线程,进程正常sleep,可被唤醒 

"D (disk sleep)", /* 2 */深度睡眠,不可中断进程,杀不了,唤不醒,只能关机重启

"T (stopped)", /* 4 */
"t (tracing stop)", /* 8 */
"X (dead)", /* 16 */ 
"Z (zombie)", /* 32 */ 僵死

};

5.ps axu|grep proc显示进程

  ps axu|head -n1显示头项目信息

|表示管道,传输资源,grep经过过滤器,包含proc字符串那份显示出来

6.僵尸进程:一个子进程在其父进程没有调用wait()waitpid()的情况下退出。这个子进程就是僵尸进程。如果其父进程还存在而一直不调用wait,则该僵尸进程将无法回收,等到其父进程退出后该进程将被init回收。

代码:
#include <stdio.h>
#include <unistd.h>
#include <errno.h>
#include <stdlib.h>
int main()
{
pid_t pid = getpid();
pid_t id = fork();
if ( -1 == id ){
printf("fork error! return code is : %d\n",errno);
return 2;
}
else if( 0 == id ){ //child
printf("child pid is : %d\n", getpid());
exit(3);
}

else{ //father

printf("father pid is : %d, return pid is : %d\n", getpid(), id);
sleep(30);
}
return 0;

}

孤儿进程:一个父进程退出,而它的一个或多个子进程还在运行,那么那些子进程将成为孤儿进程。孤儿进程将被init进程(进程号为1)所收养,并由init进程对它们完成状态收集工作。

本文出自 “小止” 博客,请务必保留此出处http://10541556.blog.51cto.com/10531556/1759879

进程基本概念

标签:进程

原文地址:http://10541556.blog.51cto.com/10531556/1759879

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!