久久首页
免费软件
网络时尚
网络学堂
专题讨论
网络资源
网络游戏
网络文档
网络产品
网站导航: 首页 > 网络应用 > 网络管理 学堂讨论 | 推荐文章

系统启动进程:init


2003-04-10 nesta1 
 
  一、局域网的特征:
  局域网分布范围小,投资少,配置简单等,具有如下特征:
  1.传输速率高:一般为1Mbps--20Mbps,光纤高速网可达100Mbps,1000MbpS
  2.支持传输介质种类多。
  3.通信处理一般由网卡完成。
  4.传输质量好,误码率低。
  5.有规则的拓扑结构。
   二、局域网的组成:
  局域网一般由服务器,用户工作站,传输介质四部分组成。
  1.服务器:
  运行网络0S,提供硬盘、文件数据及打印机共享等服务功能,是网络控制的核心。
  从应用来说较高配置的普通486以上的兼容机都可以用于文件服务器,但从提高网络的整体性能,尤其是从网络的系统稳定性来说,还是选用专用服务器为宜。
  目前常见的NOS主要有Netware,Unix和Windows NT三种。
  Netware:
  流行版本V3.12,V4.11,V5.0,对硬件要求低,应用环境与DOS相似,技术完善,可靠,支持多种工作站和协议,适于局域网操作系统,作为文件服务器,打印服务器性能好。
  Unix:一种典型的32位多用户的NOS,主要应用于超级小型机,大型机上,目前常用版本有Unix SUR4.0。支持网络文件系统服务,提供数据等应用,功能强大,不易掌握,命令复杂,由AT&T和SCO公司推出。
  Windows NT Server 4.0:
  一种面向分布式图形应用程序的完整平台系统,界面与Win95相似,易于安装和管理,且集成了Internet网络管理工具,前景广阔。
  服务器分为文件服务器,打印服务器,数据库服务器,在Internet网上,还有Web,FTP,E—mail等服务器。
  网络0S朝着能支持多种通信协议,多种网卡和工作站的方向发展。
  2.工作站:可以有自己的0S,独立工作;通过运行工作站网络软件,访问Server共享资源,常见有DOS工作站,Windows95工作站。
  3.网卡:将工作站式服务器连到网络上,实现资源共享和相互通信,数据转换和电信号匹配。
  网卡(NTC)的分类:
  (1)速率:10Mbps,100Mbps
  (2)总线类型:ISA/PCI
  (3)传输介质接口:
  单口:BNC(细缆)或RJ一45(双绞线)
  4.传输介质:目前常用的传输介质有双绞线,同轴电缆,光纤等。
  (1)双绞线(TP):
  将一对以上的双绞线封装在一个绝缘外套中,为了降低干扰,每对相互扭绕而成。分为非屏蔽双绞线(UTP)和屏蔽双绞线(STP).局域网中UTP分为3类,4类,5类和超5类四种。
  以AMP公司为例:
  3类:10Mbps,皮薄,皮上注“cat3’,箱上注“3类”,305米/箱,400元/箱
  4类:网络中用的不多
  5类:(超5类)100Mbps,10Mbps,皮厚,匝密,皮上注“cat5”,箱上注5类,305米/箱,600—700元/箱(每段100米,接4个中继器,最大500米)
  
接线顺序:正常:白桔桔白绿蓝白蓝绿白棕棕 12345678 集联:白绿绿白桔棕白棕桔白蓝蓝 12345678   STP:内部与UTP相同,外包铝箔,Apple,IBM公司网络产品要求使用STP双绞线,速率高,价格贵。
  (2)同轴电缆:
  由一根空心的外圆柱导体和一根位于中心轴线的内导线组成,两导体间用绝缘材料隔开。
  按直径分为粗缆和细缆。
  粗缆:传输距离长,性能高但成本高,使用于大型局域网干线,连接时两端需终接器。
  A.粗缆与外部收发器相连。
  B.收发器与网卡之间用AUI电缆相连。
  C.网卡必须有AUI接口:每段500米,100个用户,4个中继器可达2500米,收发器之间最小2.5米,收发器电缆最大50米。
  细缆:传输距离短,相对便宜,用T型头,与BNC网卡相连,两端安50欧终端电阻。
  每段185米,4个中继器,最大925米,每段30个用户,T型头之间最小0.5米。
按传输频带分为基带和宽带传输。
  基带:数字信号,信号占整个信道,同一时间内能传送一种信号。
  宽带:传送的是不同频率的信号。
  (3)光纤:
  应用光学原理,由光发送机产生光束,将电信号变为光信号,再把光信号导入光纤,在另一端由光接收机接收光纤上传来的光信号,并把它变为电信号,经解码后再处理。分为单模光纤和多模光纤。绝缘保密性好。
  单模光纤:由激光作光源,仅有一条光通路,传输距离长,2公里以上。
  多模光纤:由二极管发光,低速短距离,2公里以内。
  三、计算机网络软件体系:
  四、局域网的几种工作模式:
  1.专用服务器结构:(Server—Baseb)
  又称为“工作站/文件服务器”结构,由若干台微机工作站与一台或多台文件服务器通过通信线路连接起来组成工作站存取服务器文件,共享存储设备。
  文件服务器自然以共享磁盘文件为主要目的。
对于一般的数据传递来说已经够用了,但是当数据库系统和其它复杂而被不断增加的用户使用的应用系统到来的时候,服务器已经不能承担这样的任务了,因为随着用户的增多,为每个用户服务的程序也增多,每个程序都是独立运行的大文件,给用户感觉极慢,因此产生了客户机/服务器模式。
  2.客户机/服务器模式:(client/server)
  其中一台或几台较大的计算机集中进行共享数据库的管理和存取,称为服务器,而将其它的应用处理工作分散到网络中其它微机上去做,构成分布式的处理系统,服务器控制管理数据的能力己由文件管理方式上升为数据库管理方式,因此,C/S由的服务器也称为数据库服务器,注重于数据定义及存取安全后备及还原,并发控制及事务管理,执行诸如选择检索和索引排序等数据库管理功能,它有足够的能力做到把通过其处理后用户所需的那一部分数据而不是整个文件通过网络传送到客户机去,减轻了网络的传输负荷。C/S结构是数据库技术的发展和普遍应用与局域网技术发展相结合的结果。
  3.对等式网络:(Peer—to—Peer)
  在拓扑结构上与专用Server与C/S相同。在对等式网络结构中,没有专用服务器
每一个工作站既可以起客户机作用也可以起服务器作用。在前面的文章里,我们学习了怎么显示和管理运行中的进程。今天,我想描述一下那些进程实际上如何启动的。

当你启动计算机进入FreeBSD时会有很多巧妙的事情发生。在此我无法论及所有的细节,但FreeBSD handbook极好地解释了引导过程。当你启动你的计算机时,可能会注意到内核对硬件作了检测并在终端上显示了相应的结果。当检测结束时,内核会启动两个进程:进程 0 (swapper)和进程 1 (init)。

负责进程控制初始化的程序是init;没有它,其它的进程无法启动。在引导时,init要做两项重要的工作:首先,它在rc的控制之下装入启动脚本,然后它初始化终端以便使用户可以登录。让我们分别描述这些功能,从rc开始:

whatis rc
rc(8)   - command scripts for auto-reboot and daemon startup
这些脚本实际位于/etc/rc;通常,位于/etc下的这个配置文件对应于手册的第五部分,所以你可以根据手册对配置文件作正确地修改。但是,如果你打:

man 5 rc
你却会得到以下信息:

No entry for rc in section 5 of the manual
这对于上面提到的它位于手册第八部分来说看起来有点古怪,因为这部分手册包含的是系统维护和操作命令,通常它们都是后台进程。让我们进一步来看一下这个文件:

more /etc/rc
# System startup script run by init on autoboot
# or after single-user.
# Output and error are redirected to console by init,
# and the console is the controlling terminal.
# Note that almost all of the user-configurable behavior
# is no longer in # this file, but rather in /etc/defaults/rc.conf.
# Please check that file first before contemplating any changes
# here. If you do need to change this file for some reason, we
# would like to know about it.
好,相当清晰;看来对于该文件我们自己是不能乱来的。这里有些相当重要的东西对于正确引导我们的系统所必须的。让我们往后跳,看一些重要的部分来找出启动时实际上都发生了些什么。注意当在引导过程中处理rc脚本时,init会把所有的输出和错误信息记录到终端上。

rc首先做的事之一就是设置路径变量,以使它可以找到你FreeBSD系统上的可执行程序:

PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin
然后它会查找/etc/defaults/rc.conf and和/etc/rc.conf这两个文件:

# If there is a global system configuration file, suck it in.
if [ -f /etc/defaults/rc.conf ]; then
    . /etc/defaults/rc.conf
elif [ -f /etc/rc.conf ]; then
    . /etc/rc.conf
fi
接着它会作一个文件系统连贯性检查。如果你曾经非正常关闭FreeBSD系统,你会在引导过程中看到它在这一步上发出抱怨的。

echo Automatic boot in progress...
fsck -p
假定fsck没有遇到任何问题,它就马上装载你的文件系统:

# Mount everything except nfs filesystems.
mount -a -t nonfs
在其它任何进程启动之前,你的CMOS时钟必须调整为内核时钟可以理解的形式:

adjkerntz -i
然后整理var目录,将引导信息写入dmesg.boot:

clean_var() {
if [ ! -f /var/run/clean_var ]; then
rm -rf /var/run/*
find /var/spool/lock ! -type d -delete
rm -rf /var/spool/uucp/.Temp/*
# Keep a copy of the boot messages around
dmesg >/var/run/dmesg.boot
接着rc会读取以下文件:

/etc/rc.sysctl
/etc/rc.serial
/etc/rc.pccard
/etc/rc.network
/etc/rc.network6
然后复位终端权限:

# Whack the pty perms back into shape.
chflags 0 /dev/tty[pqrsPQRS]*
chmod 666 /dev/tty[pqrsPQRS]*
chown root:wheel /dev/tty[pqrsPQRS]*
并清理自己产生的“垃圾”以及/tmp目录:

# Clean up left-over files
# Clearing /tmp at boot-time seems to have a long tradition. It doesnt
# help in any way for long-living systems, and it might accidentally
# clobber files you would rather like to have preserved after a crash
# (if not using mfs /tmp anyway).
# See also the example of another cleanup policy in /etc/periodic/daily.
# Remove X lock files, since they will prevent you from restarting X11
# after a system crash.
现在rc准备启动一些后台进程,首先是syslogd和named:

# Start system logging and name service. Named needs to start before syslogd
# if you dont have a /etc/resolv.conf.
然后是inetd、cron、lpd、sendmail、sshd和usbd:

# Now start up miscellaneous daemons that dont belong anywhere else
接着rc将更新motd(每日信息)并执行“uname -m”,这条命令会在屏幕上显示构架类型。

(/etc/rc文件结尾)
当到达/etc/rc的结尾时,rc的工作就完成了。在此我们重新回顾一下:init调用rc脚本,它会读取一些全局的和本地的配置文件以正确装载文件系统并建立系统后台进程可以启动的环境。你的操作系统现在已经启动并运行着,但到此为止,还没有一个用户可以与操作系统实际交互的环境。这就是init第二个重要的功能。

配置文件/etc/ttys将会被读取以决定初始化的终端。不象/etc/rc,该文件可以由超级用户经常编辑以确保让init来初始化所需的终端。

为了理解此文件,我们必须了解在你的FreeBSD系统上有三种类型的终端。以“ttyv”开头后跟一个数字的是虚拟终端;它们都是用户可以获得的物理存在于FreeBSD系统上的终端。缺省情况下,这些虚拟终端中的第一个,或叫“ttyv0”,表示控制台。以“ttyd”开头后跟一个数字的是串行线路或拨号终端;它们是用户用调制解调器远程访问你的FreeBSD系统时可获得的终端。最后一种终端类型就是伪终端或网络终端;它们以“ttyp”开头后跟一个数字或字母,用于通过网络连接访问你的FreeBSD系统。

如果我们用以下命令看此文件:

more /etc/ttys
我们会看到此文件分为三部分,每个部分分别对应这三种类型的终端。同时每个部分还分为四栏,总结为下面的图表:

栏名
含义

name
终端设备的名称

getty
在终端上启动运行的程序,通常为getty。其它项目包括xdm,它用来启动X Window系统,或none,说明没有程序。

type
对于虚拟终端,对应的类型为cons25。其它通常的值包括伪终端network,调制解调器入口dialup,以及unknown,用于用户试图以无法预定的类型进行连接的终端。

status
它必须是on或off。如果是on,init将运行getty栏指定的程序。如果出现单词“secure”,说明该tty允许root登录;为避免这种情况,可以用单词“insecure”。


让我们从虚拟终端部分开始解释该文件;可以看到它是以设置控制台开始的:

# If console is marked ""insecure"", then init will ask
# for the root password when going to single-user mode.
console none unknown off secure
如果在引导过程中fsck命令运行出了问题,init将使你的FreeBSD系统进入单用户模式以使root用户可以修复问题。如果你用insecure代替secure来设置控制台,init将在你可以继续干之前索取口令。

ttyv0 ""/usr/libexec/getty Pc"" cons25 on secure
# Virtual terminals
ttyv1 ""/usr/libexec/getty Pc"" cons25 on secure
ttyv2 ""/usr/libexec/getty Pc"" cons25 on secure
ttyv3 ""/usr/libexec/getty Pc"" cons25 on secure
ttyv4 ""/usr/libexec/getty Pc"" cons25 on secure
ttyv5 ""/usr/libexec/getty Pc"" cons25 on secure
ttyv6 ""/usr/libexec/getty Pc"" cons25 on secure
ttyv7 ""/usr/libexec/getty Pc"" cons25 on secure
ttyv8 ""/usr/X11R6/bin/xdm -nodaemon"" xterm off secure
你可以看到在我的FreeBSD系统上除了控制台以外还有八个虚拟终端;我可以通过按ALT键加一个控制键来访问每个终端。例如ALT F1可访问控制台,ALT F2访问ttyv1, ALT F3访问ttyv2,等等。如果我启动了X会话,那么它可以用ALT F8来访问。如果我把ttyv8上的单词off改为on,那么我可以在引导时得到一个X终端而不是控制台。然后可以继续用我ALT加功能键来访问其它终端。我的所有这些虚拟终端都标为“secure”,说明它们都可接受root登录。你可以有多少个虚拟终端是由你的FreeBSD版本所决定的;如果你希望建立更多虚拟终端,可以读一下这个faq。

现在让我们移到拨号终端:

# Serial terminals
# The dialup keyword identifies dialin lines to login, fingerd etc.
ttyd0 ""/usr/libexec/getty std.9600"" dialup off secure
ttyd1 ""/usr/libexec/getty std.9600"" dialup off secure
ttyd2 ""/usr/libexec/getty std.9600"" dialup off secure
ttyd3 ""/usr/libexec/getty std.9600"" dialup off secure
你可以看到我有四个可获得的拨号终端,但它们都被关闭了。如果我想让用户通过调制解调器访问我的FreeBSD系统,我就必须至少打开它们中的一个,还必须决定是否让这些用户可以用root身份登录;如果不,就把单词“secure”改为“insecure”。你是否看到getty栏含有数字9600,它说明数据传输率为9600bps。因为现在很多调制解调器都有更高的速率,我也可以把它改为57600。最后,最好读一下FreeBSD handbook中的拨号服务部分。

/etc/ttys文件的最后一部分是网络或伪终端。你会看到它们有很多,准确地说是255个,范围从:

# Pseudo terminals
ttyp0  none     network



ttySv  none     network
且缺省情况下它们都没有被允许。

如果你为了使/etc/ttys更改生效以使init使用这些更改,可以超级用户的身份向init发送一个HUP信号,如:

kill -1 1
这里前面的-1代表信号1(HUP),而后面1代表进程1(init)。

那么现在,哪个/etc/ttys文件中提到的getty程序继续保持运行呢?man 8中对getty的描述如下:

描述
init(8)调用getty程序打开并初始化tty行,读取一个登录名,然后调用login(1)。
所以,init读取/etc/ttys并在每个你在配置文件中设定的终端上启动一个getty进程。getty的工作是监视终端看是否有人试图登录。如果有的话,getty将启动登录程序校验用户的登录名和口令。如果校验合格,登录程序会启动用户的登录命令解释器并把用户置于他们的宿主目录下。当用户具有一个命令解释器后,他们就可以与操作系统交互了。现在它就可以让命令解释器解释用户的输入并确保启动了必要的进程。

当一个用户退出登录时,再次调用init启动其它的getty进程以继续监视终端等待其它的登录尝试。

让我们看一下ps命令的输出来总结一下刚才这次引导的整个过程,FreeBSD 4.1缺省已经安装了ps程序。我将用-ax开关以包含系统进程:

ps -ax
PID TT STAT   TIME COMMAND
  0 ?? DLs  0:00.01 (swapper)
  1 ?? ILs  0:00.16 /sbin/init --
  2 ?? DL   0:00.02 (pagedaemon)
  3 ?? DL   0:00.00 (vmdaemon)
  4 ?? DL   0:00.02 (bufdaemon)
  5 ?? DL   0:01.02 (syncer)
1056 ?? Is   0:00.00 adjkerntz -i
1187 ?? Ss   0:00.08 syslogd -s
1206 ?? Is   0:00.05 inetd -wW
1208 ?? Is   0:00.11 cron
1622 ?? Ss   0:00.02 sendmail: accepting connections on port 25 (sendmail)
1621 v0 Ss   0:00.12 -csh (csh)
1701 v0 R+   0:00.00 ps -ax
1699 v1 Is+  0:00.01 /usr/libexec/getty Pc ttyv1
1619 v2 Is+  0:00.01 /usr/libexec/getty Pc ttyv2
1618 v3 Is+  0:00.01 /usr/libexec/getty Pc ttyv3
1617 v4 Is+  0:00.01 /usr/libexec/getty Pc ttyv4
1616 v5 Is+  0:00.01 /usr/libexec/getty Pc ttyv5
1615 v6 Is+  0:00.01 /usr/libexec/getty Pc ttyv6
1614 v7 Is+  0:00.01 /usr/libexec/getty Pc ttyv7
现在你可以认识很多进程:swapper的PID为0而init的为1。adjkerntz,syslogd,inetd,cron和sendmail都是由rc启动的。当然,我必须在一个命令解释器上运行这个ps命令;在上述情况中,它是从ttyv0上的c shell解释器运行的。getty进程等待虚拟终端1-7上的登录。而在虚拟终端8上则没有运行getty进程,因为该终端在/etc/ttys中被标为了“off”。
 
发表评论 推荐文章 关闭窗口
 相关内容
- 注册ActiveX控件的几种方法 2004-05-24
- SATAN结构概述(二) 2004-05-25
- SATAN结构概述(一) 2004-05-25
- 养成安全的习惯,做聪明的网管员 2004-05-20
 
 学堂分类
网络知识操作系统
网络应用网络服务
网页开发网络编程
数据存储网络设备
 文章搜索
 
网站简介 | 广告服务 | 编程支持 | 设计服务 | 诚邀合作 | 访客留言
Copyright © 1999-2004 99NET. All Rights Reserved
版权所有 久久网络工作室
Email:webmaster@99net.net