首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 操作系统 > UNIXLINUX >

linux 札记3

2012-08-22 
linux 笔记3进程控制1.进程的组成部分一个进程由一个地址空间和内核内部的一组数据结构组成. 地址空间是由

linux 笔记3
进程控制
1.进程的组成部分
一个进程由一个地址空间和内核内部的一组数据结构组成. 地址空间是由内核标记出来供进程使用的一组内存页面.
内核内部数据结构记录了有关每个进程的各种信息:
  a.进程的地址空间映射
  b.进程的当前状态
  c.进程已用的资源的信息
  d.进程已打开的文件和网络端口信息.
  e.进程的信号掩码(确定要封鎖哪些信号)
  f.进程的属主

2.进程的运行参数
  a.PID 内核分配给进程的独一无二的ID号
  控制进程的大多数命令或系统调用必须指明PID
  b.PPID 父PID
  linux没有提供创建新进程去运行某个特定程序的系统调用,现有进程需要自己克隆自身去创建一个新进程
  c.UID和EUID 真实的和有效的用户ID
  d.GID和EGID 类似之上
  e.谦让度
  f.控制终端
  大多数不是守护进程的进程都有一个与自己相关联的控制终端,控制终端决定了为标准输入,标准输出和标准错误通道而提供的默认链接.当用户从shell启动一个命令时,他的终端通常就成为该进程的控制终端.

3.进程的生命周期
为了创建一个新进程,一个进程就会用系统调用fork来复制本身.新进程拥有一个不同的PID和它自己记账信息.
除了内核创建的那几个进程以外,其他所有进程都是init的后代.
当一个进程执行完毕时,init调用一个名为_exit的例程来通知内核它已经做好了"消亡"的准备了.它提供一个退出码(整数)表明退出的原因.按照惯例,0表示正常退出
在允许进程完全消失前,linux要求该进程的消亡得到其父进程的确认.
父进程是通过wait来确认的.
如果父进程比子进程消亡得早,那么这些"孤儿"子进程就成为init的子进程

4.信号
信号是进程级的中断请求,系统定义了大约30种不同各类的信号.使用这些信号的方式:
(1).作为一种通信手段在进程之间发送信号
(2).当键入特殊按键时,比如<ctrl-c>和<ctrl-z>,可以由终端驱动程序发送信号去终止,中断或挂起进程
(3).可以由管理员(使用kill命令)发送信息来达到各种結果
(4).当进程出错时,可以由内核发送信号
(5).可以由内核发送信号,通知一个进程有某种"受关注的"条件出现,比如一个子进程消亡或在I/O通道上有数据
当收到信号时,可能发生两种情况之一.
如果接收进程已经为这个特定信号指派了一个信号处理例程,处理之
否则,内核代表该进程采取某种默认措施.
一些基本的信号:
# 名称 描述 默认 是否能捕获? 是否能封锁? 是否转储内存映像 1 HUP 挂起 终止     是           是          否         2 INT 中断 终止     是           是          否         3 QUIT 退出 终止     是           是          是         9 KILL 杀死 终止     否           否          否         b BUS 总线错误 终止     是           是          是         11 SEGV 段错误 终止     是           是          是         15 TERM 软件终止 终止     是           是          否       b   STOP 停止 停止     否          否          否         b   TSTP 键盘停止 停止     是           是          否       b   CONT 停止以后继续 忽略     是        否          否      b   WINCH 窗口改变 忽略     是           是          否      b   USER1 用户定义 终止     是           是          否      b   USER2 用户定义 终止     是           是          否     

也可以使用# kill -l 获得一份信号清单
一个程序崩溃次数中99%最終都可以归结为是BUS,SEGV这两种错误的一种.它们都表明有不正确使用或访问内存的企图
KILL STOP信号不能被捕获,封锁或忽略。KILL信号清除接收到它的进程,STOP信号挂起正在执行的进程,一直到该进程接收到CONT信号为止.
TSTP信号是STOP信号的一个"软"版本,应该是对"停止"的请求.这是由用户在键入<ctrl+z>时由终端驱动程序生成的信号.
INT是由<ctrl+c>产生的信号,终止当前操作的请求

5. kill和killall : 发送信号
# kill [-signal] pid
# kill -15 4333 或 kill -TERM 4333
一般pid都是使用ps命令找出,
也可以使用#killall comn_name 来匹配找到相关的PID

6.进程的状态
Runnable, Sleeping, Zombie, Stopped

7.使用ps,top监视进程
# ps aux  或 ps lax 都能得到比较祥細的信息
top是动态更新活动进程以及其所使用资源情况的汇总信息

8./proc文件系统
linux版的ps,top命令都是从/proc目录读取进程的状态信息,内核把有关系统状态的各种有意义的信息都放在这个伪目录里.

热点排行