文档介绍:LINUX进程与进程管理(1)
程序和进程区别
程序是为了完成某种任务而设计的软件,比如OpenOffice是程序。而进程就是运行中的程序。简单的说,进程是操作系统中正在运行的任务,而程序是指存储在磁盘上包含有可执行机器代码的指今的文件。程序员常常把源代码称为程序。
一个运行着的程序,可能有多个进程。例如一个网络服务器,当管理员启动服务后,可能会有好多人来访问,就是说许多用户来同时请求httpd服务,服务器将会创建有多个httpd进程来对其进行服务。
进程的分类
1、交互进程
2、批处理进程
3、守护进程
虚拟内存
我们在安装Linux的时候,需要建立一个交换分区,该分区实际上被用作内存的扩展。系统把暂时不会用到的数据到交分区中,在需要的时候在把磁盘中内容读回内存。这样可以内存空间不足的问题。而这段扩展的内存被称为虚拟内存。
进程内存结构
在32位系统中,4GB的进程地址空间被分为用户空间和内核空间两个部分。用户空间占0~3GB,内核空间范围是3GB~4GB,每个进程都运行在自己的内存空间中,进程内存结构分为三个不同的数据段。
1、代码段
2、数据段
3、堆栈段
内存结构图
代码段
初始化数据段
未初始化数据段
数据段
堆
栈
用户空间
内核空间
进程标识
进程标识
LINUX中使用进程ID来标识一个进程,每个进程都有自己独一无二的ID,在LINUX中除了init进程外,都可能使用kill命令杀死该进程。当系统为一个新进程分配ID达到系统最大值时,系统会重新使用最小且当前没有被使用的PID号。
获取进程ID号函数
在程序中可以使用getpid和getppid函数获得进程ID
Pid_t getpid(void)
Pid_t getppid(void)
这两个函数成功返回进程PID和PPID,失败返-1。
实例
int main(int argc,char *argv[]) { printf("the current program's pid is %d\n",getpid()); //引用函数return 0; }