分类: LINUX
2011-10-10 15:03:29
一、如何知道安装软件或路径
/root/install.log 和rpm –q 名称包 这记录了系统安装了哪些软件包
可以通过 which/whereis/locate 名称
Which 不显示用户没有执行权的文件。Whereis 搜索的更大范围的目录,与SHELL环境没关。Locate 支持任何类型文件进行搜索。
系统引导过程,6个步骤。
1.加载并初始化内核
内核本身就是一个程序,系统引导过程中的第一项任务就是把这程序加载到内存,以便执行它。内核的路径名通常是/vmlinuz 或
者/boot/vmlinuz .
其实他实现一种有两个阶段的加载过程,第一阶段,系统ROM把一个小的引导程序从磁盘载入到内存中。第二阶段,引导程序再安排载入到内
核。
内核执行内存检测来确定有多少RAM可用。它一些数据结构以静态方式分配基内存量,当内核启动时,它划分一块固定大小的实存空间,保留
内核使用,用户级进程不可使用。并打印信息报告物理内存总量和用户进程可用的内存量。
2.检测并配置设备。
3.创建内核进程
内核在用户空间创建几个“自发”进程,这些进程不是通过系统的fork机制所创建。
4.操作员干预(手工引导)
5.执行启动脚本
6.多用户模式运行
Init生成getty进程,getty进程监听终端或者控制台,接受用户登录。
二、GRUB引导
一般情况下,GRUB从/boot/grub/grub.conf读取它的默认引导配置。
三、系统的伪用户
这些伪用户不能用来登录进入系统,因为他们登录的Shell为空。/etc/passwd
四、进程控制
进程由一个地址空间和内核内部的一组数据结构组成。地址空间是由内核标记出来供进程使用的一组内存页面,内核的内部数据结构记录了
有关每个进程的各种信息,如有:进程的地址空间映射,进程的当前状态(睡眠,停止,可运行状态),进程执行的优先级,进程已用资源
信息,进程已打开的文件和网络端口的信息,进程的信号掩码,进程的属主。
理解几个ID
PID:进程的ID号
PPID:进程的父进程ID号
UID:真实的用户ID号
EUID:有效的用户ID号,它用来确定进程在任何给定的时刻对哪些资源和文件具有访问权限。
GID 和 EGID:真实的组ID号 和 有效的组ID号
“谦让值”或“谦让度”: 它是内核使用动态算法来计算优先级的值,它考虑一个进程近来已经消耗CPU的时间量以及该进程已经等待运行的
时间等因素,内核会关注为管理目的而设置的值。
控制终端
守护进程是没有控制终端,其它进程都有一个与自己相关联的控制终端。如用户从Shell启动一个命令时,他的终端通常就成为该进程的控制
终端。
进程生命周期
为创建一个新进程,它就会用系统调用fork函数来自制自身,fork创建原进程的一个副本,它大程度与PPID相同,新进程拥有一个自己的PID
。
fork它返回两个不同值。0和子进程PID.从子进程角度来看,它返回0;从父进程角度看,它返回子进程PID.
fork以后,了进程经常使用exec族系统调用中的一个成员开始执行新的程序。这些调用能改变进程正在执行的程序正文,并把数据和堆栈重
新设定到预告定义的初始状态。其实exec各种不同形式的区别仅在于它们为新程序指定命令行参数和环境时采用的方式不同。exec族中,只
有execv是系统调用函数外,其余是库例程。
fork的另一种实现clone,这个调用创建的进程组共享内存和I/O空间,clone后的进程,等同于线程,共用的东西太多,包括文件描述符(不
一定是共享创建)。它执行的每个线程都表现为一个完整的进程而不是一个专门的“线程”。
信号,它是进程级的中断请求。系统定义了大约30种不同种类的信号,使用这些信号的方式可以有以下几种:
1.作为一种通信手段在进程之间发送信号。
2.当键入特殊的按键时,例如
3.可以由管理员(使用KILL)发送信号来达到各种结果。
4.当进程出错,例如出现被零除的错误时,可以由内核发送信号。
5.可以由内核发送信号,通知一个进程有某种“受关注的”条件出现,比如一个子进程死亡或在I/O通道上有数据。
在一个程序内为信号指定信号处理例程的做法通常叫“捕获”该信号,当信号处理全程完成时,执行流程从接收到信号的位置重新开始。
追踪信号和系统调用,可以使用strace命令来查看。如 strace -p PID
待继。。。