linux 笔记3

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

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

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

[b]4.信号[/b]
信号是进程级的中断请求,系统定义了大约30种不同各类的信号.使用这些信号的方式:
(1).作为一种通信手段在进程之间发送信号
(2).当键入特殊按键时,比如<ctrl-c>和<ctrl-z>,可以由终端驱动程序发送信号去终止,中断或挂起进程
(3).可以由管理员(使用kill命令)发送信息来达到各种結果
(4).当进程出错时,可以由内核发送信号
(5).可以由内核发送信号,通知一个进程有某种"受关注的"条件出现,比如一个子进程消亡或在I/O通道上有数据
当收到信号时,可能发生两种情况之一.
如果接收进程已经为这个特定信号指派了一个信号处理例程,处理之
否则,内核代表该进程采取某种默认措施.
一些基本的信号:
[table]
| # | 名称 | 描述 | 默认 | 是否能捕获? | 是否能封锁? | 是否转储内存映像 |
| 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 | 用户定义 | 终止 | 是 | 是 | 否 |
[/table]

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

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

[b]6.进程的状态[/b]
Runnable, Sleeping, Zombie, Stopped

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

[b]8./proc文件系统[/b]
linux版的ps,top命令都是从/proc目录读取进程的状态信息,内核把有关系统状态的各种有意义的信息都放在这个伪目录里.
[/size]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值