- 爱易网页
-
Linux
- linux 札记3
日期:2014-05-16 浏览次数:20643 次
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 | <
免责声明: 本文仅代表作者个人观点,与爱易网无关。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。