首 页 | 网络测试 | 网络市场 | 网络技术 | 业界动态 | IT文摘 | 服务中心 | 网速测试 | IP查询 | 发布广告 | 什么是测试点

黄金文字广告位火热
招租中,小小投入,
意想不到的效果!  
欢迎投放广告。

  o 您现在的位置:首页  -> 网络技术 -> 技术前哨 -> 正文

 

认识FreeBSD操作系统结构


世界网络教研室整理

7 进程

FreeBSD 是一个多任务操作系统。 这就意味着好像一次可以运行一个以上的程序。每个占用一定时间运行的程序就叫process。每个程序启动运行时至少有一个新进程,并在所有运行的时候保持有一个系统进程的编号,而一直由系统对它监管。

每个进程用来标识的一个编号就叫 进程 ID, 或叫 PID。 而且,就像文件那样,每个进程也有所属用户和所属群体。所属用户和所属群体使用在这方面:确定这个进程可以打开那些文件和那些设备,从而在初期使用文件的权限。 多数的进程都同样有一个父进程, 而进程是依靠父进程来启动的。例如,假如您把命令输入到shell里那shell是一个进程,而您运行的各个命令同样是进程,那么,shell就是您各个运行进程的父进程。 而这方面有一个例外的进程就叫init。 init始终是首个进程,,所以他的PID始终是1, 而init在FreeBSD起动时由内核自动启动。

在系统上,有两个命令对进程观察非常有用:ps 和 top。 这个ps命令作用是观察当前运行进程的状态,显示他们的PID,使用了多少内存,它们启动的命令行。 而top命令则是显示所有运行进程,并在以秒计的短时内更新数据。您能交互式的观察您计算机的工作。

默认情况下, ps仅显示出您自己所运行的命令。 例如:

% ps                                                                       

PID TT STAT TIME COMMAND                                                   

298 p0 Ss 0:01.10 tcsh                                                     

7078 p0 S 2:40.88 xemacs mdoc.xsl (xemacs-21.1.14)                         

37393 p0 I 0:03.11 xemacs freebsd.dsl (xemacs-21.1.14)                     

48630 p0 S 2:50.89 /usr/local/lib/netscape-linux/navigator-linux-4.77.bi   

48730 p0 IW 0:00.00 (dns helper) (navigator-linux-)                        

72210 p0 R+ 0:00.00 ps                                                     

390 p1 Is 0:01.14 tcsh                                                     

7059 p2 Is+ 1:36.18 /usr/local/bin/mutt -y                                 

6688 p3 IWs 0:00.00 tcsh                                                   

10735 p4 IWs 0:00.00 tcsh                                                  

20256 p5 IWs 0:00.00 tcsh                                                  

262 v0 IWs 0:00.00 -tcsh (tcsh)                                            

270 v0 IW+ 0:00.00 /bin/sh /usr/X11R6/bin/startx -- -bpp 16                

280 v0 IW+ 0:00.00 xinit /home/nik/.xinitrc -- -bpp 16                     

284 v0 IW 0:00.00 /bin/sh /home/nik/.xinitrc                               

285 v0 S 0:38.45 /usr/X11R6/bin/sawfish                                    

在这个例子里您可看到,从 ps 输出的每一列是有规律的。 PID 就是进程ID,这个较早前已讨论过了。 PID号的分配由 1一直上升直到99999, 当您运行到超过限制时,这些编号会回转分配 (仍在使用中的 PID 不会分配给其他进程)。 TT这一列显示了程序运行所在的终端,目前可以安全地忽略。 STAT 显示程序的状态,也可以安全地被忽略。 TIME是程序在CPU处理时间──运行的时间量,并不是指您程序启动到现在的所用的时间。许多程序碰巧遇到某方面在他们之前要花费大量CPU处理时间时,他们就必须等候。 最后, COMMAND 是运行程序时使所用的命令行。

ps支持使用各种选项去改变显示出来的内容,最有用的一个就是auxww。 a选项显示出所有运行进程的内容, 而不仅仅是您的进程。 u选项显示出进程所归属的用户名字以及内存使用, x 选项显示出后台进程。 而 ww 选项表示为 ps把每个进程的整个命令行全部显示完, 而不是由于命令行过长就把它从屏幕上截去。

下面和从top输出是类似的,一个示例式对话就象这样子:

% top                                                                      

last pid: 72257; load averages: 0.13, 0.09, 0.03 up 0+13:38:33 22:39:10    

47 processes: 1 running, 46 sleeping                                       

CPU states: 12.6% user, 0.0% nice, 7.8% system, 0.0% interrupt, 79.7% idle 

Mem: 36M Active, 5256K Inact, 13M Wired, 6312K Cache, 15M Buf, 408K Free   

Swap: 256M Total, 38M Used, 217M Free, 15% Inuse                           

PID USERNAME PRI NICE SIZE RES STATE TIME WCPU CPU COMMAND                 

72257 nik 28 0 1960K 1044K RUN 0:00 14.86% 1.42% top                       

7078 nik 2 0 15280K 10960K select 2:54 0.88% 0.88% xemacs-21.1.14          

281 nik 2 0 18636K 7112K select 5:36 0.73% 0.73% XF86_SVGA                 

296 nik 2 0 3240K 1644K select 0:12 0.05% 0.05% xterm                      

48630 nik 2 0 29816K 9148K select 3:18 0.00% 0.00% navigator-linu          

175 root 2 0 924K 252K select 1:41 0.00% 0.00% syslogd                     

7059 nik 2 0 7260K 4644K poll 1:38 0.00% 0.00% mutt                        

...                                                                        

这个输出分成两部份。 前面部份(起始前五行) 显示了:运行于最后进程的PID、系统负载均衡 (那个是指系统繁忙时的调节方式)、 系统正常运行时间 ( 指从启动算起所用的时间) 和当前时间。 前面部份另外的图表 涉及:多少进程在运行(这个情况是47),多少内存和多少交换分区在使用, 和在不同CPU状态里系统消耗多少时间。

在那下面一连串的纵列和从ps输出的的内存是相似的。 如以前PS一样,您能见到:PID、用户名、CPU处理时间合计、运行的命令。 top默认是显示您的进程所用内存空间的合计。内存空间这里分成两列,一列为总体大小,另一列是必须请求驻留大小是多少内存──总体大小。而驻留大小实际上是瞬间使用的多少。 在以上那个例子,您会看到那Netscape®总计需要30 MB内存,但实际只用了9 MB。

[1][2][3][4][5][6][7][8][9]