Linux进程和线程的基础与管理(4)
不论在哪个执行等级,系统会在执行boot及bootwait之前执行第4项指定的process
powerwait
当系统的供电不足时执行第4项指定的process,且一直等它执行完备
powerfailnow
当系统的供电严重不足时执行第4项指定的process
ctrlaltdel
当用户按下ctrl+alt+del 时执行的操作
kbrequest
当用户按下特殊的组合键时执行第4项指定的process,此组合键需在keymaps文件定义
4.process
Process为init执行的进程,这些进程都保存在目录/etc/rc.d/rcX中,其中的X代表运行级别,rc程序接收X参数,然后运行/etc/rc.d/rc.X下面的程序。使用如下命令可以查看/etc/rc.d目录内容。
total 112
drwxr-xr-x 2 root root 4096 3/15 14:44 init.d
-rxwr-xr-x 1 root root 2352 2004-3-17 rc
drwxr-xr-x 2 root root 4096 3/15 14:44 rc0.d
drwxr-xr-x 2 root root 4096 3/15 14:44 rc1.d
drwxr-xr-x 2 root root 4096 3/15 14:44 rc2.d
drwxr-xr-x 2 root root 4096 3/15 14:44 rc3.d
drwxr-xr-x 2 root root 4096 3/15 14:44 rc4.d
drwxr-xr-x 2 root root 4096 3/15 14:44 rc5.d
drwxr-xr-x 2 root root 4096 3/15 14:44 rc6.d
-rxwr-xr-x 1 root root 2200 2004-3-17 rc.local
-rxwr-xr-x 1 root root 2352 2004-3-17 rc.sysinit
…………
使用如下命令查看/etc/rc.d/rc5.d的内容。
这些文件都是符号链接,以S打头的标识启动该程序,而以K打头的标识终止该程序,后面的数字标识执行顺序,越小越先执行,剩下的标识程序名。系统启动或者切换到该运行级别时会执行以S打头的程序,系统切换到该运行级别时会执行以K打头的程序。
这个目录下的程序可通过chkconfig程序进行管理,当然这个目录下的程序需要符合一定规范,如果了解shell编程,可以查看这些符号链接所指向的程序的源码。
init也是一个进程,和普通的进程具有一样的属性。比如修改了/etc/inittab,想让修改马上生效,可通过运行“kill-SIGHUP 1”来实现,也可通过运行“init q”来实现。
八.Linux的线程简介
1.Linux线程的定义
线程(thread)是在共享内存空间中并发的多道执行路径,它们共享一个进程的资源,如文件描述和信号处理。在两个普通进程(非线程)间进行切换时,内核准备从一个进程的上下文切换到另一个进程的上下文要花费很大的开销。这里上下文切换的主要任务是保存老进程CPU状态并加载新进程的保存状态,用新进程的内存映像替换进程的内存映像。线程允许你的进程在几个正在运行的任务之间进行切换,而不必执行前面提到的完整的上下文。另外本文介绍的线程是针对POSIX线程的,也就是Pthread。也因为Linux对它的支持最好,相对进程而言,线程是一个更加接近于执行体的概念,它可以与同进程中的其他线程共享数据,但拥有自己的栈空间,拥有独立的执行序列。在串行程序基础上引入线程和进程是为了提高程序的并发度,从而提高程序运行效率和响应时间。也可以将线程和轻量级进程(LWP)视为等同的,但其实在不同的系统/实现中有不同的解释,LWP更恰当的解释为一个虚拟CPU或内核的线程。它可以帮助用户态线程实现一些特殊的功能。Pthread是一种标准化模型,它用来把一个程序分成一组能够同时执行的任务。
2.什么场合使用Pthread,即线程