Linux进程相关的概念
理清楚以下的5个问题:
1、什么是程序,什么是进程,有什么区别?
程序是静态的概念,gcc xxx.c -o pro 磁盘中生成pro文件,叫程序。
进程是程序的一次运行活动,通俗点讲是程序跑起来了,系统中生成一个进程。
2、如何查看系统中有哪些进程?
a、操作系统提供一个指令ps,配合grep使用查看是否存在某个进程。
b、或者使用top来观察进程。
ps -aux|grep +某个程序
如:
CLC@Embed_Learn:~$ ps -aux|grep a.out
Warning: bad ps syntax, perhaps a bogus '-'? See http://procps.sf.net/faq.html
CLC 3418 0.0 0.1 13588 976 pts/0 S+ 09:01 0:00 grep --color=auto a.out
CLC@Embed_Learn:~$
3、什么是进程表示符?
a、每个进程都有一个非负整数表示唯一ID,叫做pid,类是以身份证
b、在操作系统中,默认pid=0;称为交换进程,作用是管理进程调度
c、pdi=1;init进程,作用是系统初始化。(init进程在系统初始化,加载内核完毕后,显示嵌入式设备相对应的开机页面)
d、编程使用.**getpid().**获取当前进程ID,.**getppid().**获取父进程ID
4、什么是父进程,什么是子进程?
进程A创建进程B;从而A叫做父进程,B叫做子进程;父子进程是相对的概念,可以理解人类中父子关系。
5、C程序的存储空间是如何分配?
#include <stdio.h>
int cc =100; // 2、初始化的数据
int kk; // 3、未初始化的数据
int arry[10]; // 2、初始化的数据
void add(int a)
{
a = cc+a;
}
int main(int argc,char **argv)
{
int a =0; // 2、初始化的数据
if(a==0){ // 1、代码段 从14行-20行
printf("a=0\n");
int *p =(int *)malloc(sizeof(int)*10); // 4、堆(手动申请空间)
}else{
printf("a!=0\n");
add(a); //栈(函数调用产生的信息)
}
return 0;
}
最高地址 |
---|
6、命令行参数和环境变量 |
5、栈(函数调用产生的信息) |
4、堆(手动申请空间) |
3、未初始化的数据 |
2、初始化的数据 |
1、代码段 |
最低地址 |