Chinaunix首页 | 论坛 | 博客

分类: LINUX

2009-01-19 11:59:07

  Linux 的多人多工环境

  我们现在知道了,其实在 Linux 底下执行一个指令时,系统会给予这个动作一个 ID, 我们称为 PID,而根据启用这个指令的使用者与相关的指令功能,而给予这个特定 PID 一组权限, 该指令可以进行的行为则与这个 PID 的权限有关。根据这个说明,我们就可以简单的瞭解, 为什么 Linux 这么多用户,但是却每个人都可以拥有自己的环境了吧!^_^

(评论:linux
根据使用者账号给予程序(PID)一定的权限,每个用户帐号都有自己的工作环境。所谓的工作环境就是文件的权限和指令的下达等等,这些动作都与账号有关。)

  # 多人环境:

  Linux 最棒的地方就在于他的多人多工环境了!那么,什么是‘多人多工’?!在 Linux 上面允许不同的人使用,而且每个人都有其特殊的权限,只有一个人具有至高无上的权力,那就是 root (系统管理员),除了他之外,其他人都必须要受一些限制的!而每个人进入 Linux 的环境设定都可以随著每个人的喜好来设定 (还记得我们在 BASH 那一章提过的 ~/.bashrc 吧!?对了!就是那个光!)!现在知道为什么了吧? 因为每个人登入后取得的 shell 的 PID 不同嘛!

  # 多工行为:

  我想,在某些其他作业系统中,您可能会遇到这样的事情:‘这个档案正在使用中, 您无法开启这个档案!’我哩勒!还得将正在执行当中的程式关掉之后才能开这个中间暂存档!! 而且这个时候还只有我自己一个人在使用呢~受不了~呵呵!不过, Linux 就不会这样啰!您可以同时在不同的画面,同时由不同的人 (当然啰,有的是经由 SSH 网路连线过来,有的是直接在萤幕前面的朋友啰!)使用‘同一个档案’, 不论是开启或者是修改,只要您有权限,就可以使用该档案!!

  这个东西可有用的紧!由于鸟哥是很常使用程式的 (就是 Fortran 啦,吃饭的工具!) ,而由于我们有一部主机专门用来工作的,所以配备比较高档一点 PIII 的双 CPU ),那么我就可以同时的进行两个 compiler 的程序,而且还不会互相的影响, 并且资源分配的还蛮均匀的!哈哈!怎么会跑得这么顺畅呀!爽毙了!

  其实作业系统的多工是很复杂的行为啦!尤其涉及将多个工作直接丢给一颗 CPU 来处理~ 现在我们应该比较清楚的是,所谓的‘工作’其实是将多个指令触发成为系统程序 (PID), 而这些程序若同时被触发时,那么一颗 CPU 就得要同时负责许多工作了。 但我们晓得的是,并非每个程序都很耗系统资源,例如前一节提到的 crond 与 atd 这两个系统服务, 他们并没有消耗很多系统资源的。此时,当然啰, CPU 就可以进行其他工作, 这就是所谓的多工!

  # 多重登入环境的七个基本终端视窗:

  在 Linux 当中,预设提供了六个文字界面登入视窗,以及一个图形界面,你可以使用 [Alt]+[F1].....[F7] 来切换不同的终端机界面,而且每个终端机界面的登入者还可以不同人! 很炫吧!这个东西可就很有用啦!尤其是在某个程序死掉的时候!

  其实,这也是多工环境下所产生的一个情况啦! 我们的 Linux 预设会启动六个终端机登入环境的程式,所以我们就会有六个终端机介面。 您也可以减少啊!就是减少启动的终端机程式就好了。详细的资料可以先查阅 /etc/inittab 这个档案,未来我们在开机管理流程会再仔细的介绍的!

  # 特殊的程序管理行为:

  以前的鸟哥笨笨的,总是以为使用 Windows 98 就可以啦!后来,因为工作的关系,需要使用 Unix 系统,想说我只要在工作机前面就好, 才不要跑来跑去的到 Unix 工作站前面去呢!所以就使用 Windows 连到我的 Unix 工作站工作!

  好死不死,我一个程序跑下来要 2~3 天,唉~偏偏常常到了第 2.5 天的时候, Windows 98 就给他挂点去!当初真的是给他怕死了~后来因为换了新电脑,用了随机版的 Windows 2000 ,呵呵,这东西真不错 (指对单人而言) ,在当机的时候, 他可以仅将错误的程序踢掉,而不干扰其他的程序进行,呵呵! 从此以后,就不用担心会当机连连啰!不过,2000 毕竟还不够好,因为有的时候还是会死当!!

  那么 Linux 呢?哈哈!更棒了,几乎可以说绝对不会当机的!因为他可以在任何时候, 将某个被困住的程序杀掉,然后在重新执行该程序而不用重新开机!够炫吧!那么如果我在 Linux 下以文字界面登入,在萤幕当中显示错误讯息后就挂了~动都不能动,该如何是好!? 这个时候那预设的七个视窗就帮上忙啦!你可以随意的再按  [Alt]+[F1].....[F7] 来切换到其他的终端机界面,然后以 ps -aux 找出刚刚的错误程序,然后给他 kill 一下,哈哈,回到刚刚的终端机界面!恩~棒!又回复正常啰!

  为什么可以这样做呢?我们刚刚不是提过吗?每个程序之间可能是独立的,也可能有相依性, 只要到独立的程序当中,删除有问题的那个程序,当然他就可以被系统移除掉啦!^_^

  # bash 环境下的工作管理 (job control)

  我们在上一个小节有提到所谓的‘父程序、子程序’的关系,那我们登入 bash 之后, 就是取得一个名为 bash 的 PID 了,而在这个环境底下所执行的其他指令, 就几乎都是所谓的子程序了。那么,在这个单一的 bash 介面下,我可不可以进行多个工作啊? 当然可以啦!可以‘同时’进行喔!举例来说,我可以这样做:

  [root@linux ~]# cp file1 file2 &

  在这一串指令中,重点在那个 & 的功能,他表示将 file1 这个档案复制为 file2 ,且放置于背景中执行, 也就是说执行这一个命令之后,在这一个终端介面仍然可以做其他的工作!而当这一个指令 ( cp file1 file2 )执行完毕之后,系统将会在您的终端介面显示完成的消息!很便利喔!

  # 多人多工的系统资源分配问题考虑:

  多人多工确实有很多的好处,但其实也有管理上的困扰,因为使用者越来越多, 将导致你管理上的困扰哩!另外,由于使用者日盛,当使用者达到一定的人数后, 通常你的机器便需要升级了,因为 CPU 的运算与 RAM 的大小可能就会不敷使用!

  举个例子来说,鸟哥之前的网站管理的有点不太好,因为使用了一个很复杂的人数统计程式, 这个程式会一直去取用 MySQL 资料库的资料,偏偏因为流量大,造成 MySQL 很忙碌。 在这样的情况下,当鸟哥要登入去写网页资料,或者要去使用讨论区的资源时, 哇!慢的很!简直就是‘龟速’啊!后来终于将这个程式停止不用了, 以自己写的一个小程式来取代,呵呵!这样才让 CPU 的负载 (loading) 整个降下来~ 用起来顺畅多了! ^_^

  好了!废话说完了!开始来谈一谈几个常用的指令吧!

阅读(1562) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~