Linux 进程操作_12

进程是应用程序在内存中的基本执行单元,同时系统资源分配的基本单位。
 Linux 下几乎所有的用户管理,资源分配等操作都是通过相应进程的控制来实现的。
 知识大纲 『
  *1 进程的概念,包括进程的组成,进程的状态等。
  *2 Linux进程, 包括进程的状态,调度信息,标识符,进程间通信相关信息的获取等。
  *3 进程的创建与控制,包括进程创建函数,进程终止,获取进程信息,守护进程等。
 』
12.1 进程的概念
   进程(Process)是指操作系统中被加载到内存中的,正在运行的应用程序实例。
        它最初是随着批处理系统和分时系统的出现而引入的。
     用户 : 进程是应用程序的一次执行过程。
     OS内核 : 进程代表着OS分配的内存,CPU时间片等资源的基本单位,是为程序提供的运行环境。
    Linux中,各个进程运行在其各自的地址空间中,具有独立的权限与职责,如果系统中某个进程崩溃,不会影响到其余的进程。进程之间只有通过通讯机制才能发生联系。
 -12.1.1 进程的组成
  进程主要由程序,数据,以及进程控制块 (PCB) 3个部分组成。
  1), 程序
    程序是描述进程功能的可执行机器指令,它通常作为一个静态文件存储在计算机系统的硬盘等存储设备之中。
  2), 数据
    数据是进程的操作对象,同一段程序在不同数据集上的执行过程是不同的进程。
  3), 进程控制块
    PCB 是 OS 中用来描述和控制进程的一种数据结构,它是进程存在的唯一标志。
    PCB 主要包括 『
     PID, PPID, 启动进程的UID, GID, 进程当前的状态,进程的优先级以及进程的资源占用情况等。
 -12.1.2 进程状态的转化
   在多任务OS中,进程在 CPU 上交替运行,状态不断改变。
    三大基本状态 『
       *1 运行态  *2 就绪态  *3 阻塞态
    』
 实际的操作系统中,除了上面的3大基本状态之外,还包括,新建态,终止态。
  4* 新建态 :进程被创建但尚未被提交的状态。
      进程创建分2个阶段 : 第一阶段为新进程创建必要的管理信息,第二阶段使该进程进入就绪态。
          由于存在新建态,OS可能会根据系统的负载和内存的容量等情况推迟新建态进程的提交。
   随着新进程不断地被创建,系统资源渐渐地不能满足所有进程运行的要求,尤其是内存资源。这时就需要将某些进程挂起,即将其换出内存,存放到磁盘交换分区中。这种状态进程之间的转换关系就如右图 (略)。
 *1 活跃就绪态
 *2 挂起就绪态
 *3 活跃阻塞态
 *4 挂起阻塞态
 *5 运行
   被挂起的进程不参加 CPU 调度,通过这种方式可以平衡系统的负载。
-12.2 Linux 进程
  Linux系统中,每个进程由一个 task_struct 数据结构来描述,即前面提到的进程控制块PCB。
   #include <linux/sched.h> task_struct 包含了进程管理和控制的所有信息。
  struct task_struct {
  	volatile long state;    // 进程的状态
  	struct thread_info *thread_info;
  	atomic_t usage; 
	unsigned long flags;
  	int lock_depth;
  	.....
 }
 -12.2.1 进程的状态
  *1), 运行状态  *2), 等待状态(正在等待某个事件或资源)  *3), 暂停状态  *4), 僵死状态。 (终止了,但还保留task_struct)
 -12.2.2 进程调度信息
 -12.2.3 进程的标识符
 -12.2.4 进程间通信相关信息
 -12.2.5 进程链接信息
 -12.2.6 时间和定时器信息
 -12.2.7 文件系统信息
 -12.2.8 其他信息
-12.3 进程的创建与控制
  Linux系统下用于新进程创建的函数主要有4个 : fork 函数, vfork函数, system函数, popen函数。
   进程终止有多种方式, 主要介绍 : exit函数和_exit函数。
 -12.3.1 fork 函数
 -12.3.2 vfork函数 和 exec 函数
 -12.3.3 system 函数
 -12.3.4 popen 函数
 -12.3.5 进程终止
 -12.3.6 获取进程信息
-12.4 守护进程
 -12.4.1 守护进程的创建方法
    (1),将子进程放入后台运行
    (2),在子进程中创建新会话
    (3), 关闭打开的文件描述符
    (4), 改变工作目录
    (5), 重设文件权限掩码
    (6), 处理 SIGCHLD 信号
 -12.4.2 守护进程的输出
-12.5 常见面试题
  (1), Linux系统中进程主要有几种状态?
  (2), 在Linux系统中如何创建守护进程?
-12.6 小结
  Linux 是一个多用户,多任务的操作系统,进程管理是其内核中的一个重要的组成部分。
   进程是程序在计算机系统上的一次执行活动,它不仅是系统内存独立运行的实体,还是资源竞争和分配的基本单位。理解进程的概念,掌握进程的创建,等待,终止等方法是本章及后续章节学习的基础,尤其是 fork, exec, system, wait 等函数。
 守护进程(Daemon)是运行在后台的一种特殊进程,它通常伴随着Linux系统始终运行。因此如果要把自己的进程改造成为守护进程,务必要小心操作,同时还要深刻理解进程之间的相互关系。

posted @ 2013-03-21 11:53  小尼人00  阅读(130)  评论(0编辑  收藏  举报