FreeBSD гарын авлага
Prev | Chapter 3 Юниксийн үндэс | Next

# 3.7 Процесс буюу програмын явц

FreeBSD бол олон үйлдэл зэрэг хийх чадвартай систем. Энэ нь олон програм нэг дор зэрэг ажиллана гэсэн үг. Програмын тухайн үед ажиллаж байгааг нь процесс буюу програмын явц гэдэг. Таны ажиллуулсан тушаал болгон шинэ процесс эхлүүлдэг бөгөөд систем дээр бүхэлдээ тэр чигээрээ процессууд үргэлж ажиллаж системийн ажиллагааг бүрэлдүүлж байдаг.

Програмын явц бүр процесс ID, эсвэл PID гэсэн дугаар агуулж байдаг бөгөөд файлтай бас ижилхэн өөрийн гэсэн эзэмшигч болон бүлэгт харъяалагдаж байдаг. Эзэмшигч ба бүлгийн мэдээлэл нь уг процесс файлд хандах эрхийг нь хэрэглэж файлтай хэрхэн хандах вэ гэдгийг тодорхойлж өгдөг. Ихэнх процесс нь мөн эцэг процесстой байдаг. Эцэг процесс нь тэдгээр процессийг эхлүүлж өгдөг. Жишээлбэл, хэрэв та тушаалуудыг бүрхүүлд бичиж гүйцэтгэвэл, бүрхүүл ч процесс, тушаалууд ч процесс болдог бөгөөд таны бичсэн тушаал болгон процесс болдог. Ийм маягаар ажиллуулаад байвал бүрхүүл нь тэдгээр процессуудын эцэг нь болно. Үүнээс өөр онцгой процесс байдаг ба түүнийг init(8) процесс гэж нэрлэдэг. `init` бол хамгийн эхний процесс байдаг бөгөөд үүний PID дугаар үргэлж 1 байдаг. FreeBSD эхлэх үед `init` процесс автоматаар эхэлдэг.

Системд гүйцэтгэгдэж байгаа процессуудыг хардаг хоёр тушаал бол ps(1) ба top(1) хоёр юм. `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(1) тушаалын гаралт нь хэд хэдэн баганаар харуулагдаж байна. `PID` бол өмнө ярьсны дагуу процессийн ID дугаар. PID дугаарууд нь 1 гэж эхлээд 99999 хүртэл дугаарлагддаг бөгөөд хэтрээд ирэхээрээ эхнээсээ эхэлж тоологддог (PID нь ашиглагдаж байгаа бол дахин олгогддоггүй). `TT` багана нь, уг програмын ажиллаж байгаа tty буюу терминалыг нь харуулдаг бөгөөд одоохондоо хэрэгсэх шаардлага байхгүй. `STAT` нь програмын төлвийг харуулдаг бөгөөд мөн одоохондоо хэрэгсэхгүй байж болно. `TIME` нь процессор дээр хэр удаан ажиллаж байгааг нь заадаг бөгөөд гэхдээ энэ нь програм эхэлснээс хойш тооцож эхэлсэн цаг биш. Ихэнх програм нь процессор дээр гүйцэтгэх гэж хэсэг хугацаа зарцуулж хүлээдэг. Эцэст нь, `COMMAND` нь тухайн програмыг ажиллуулсан тушаалыг харуулдаг.

Харуулах мэдээллээ өөрчилж болдог хэд хэдэн нэмэлт сонголт ps(1) тушаалд бий. Байнга хэрэглэгддэг сонголтуудын багц бол `auxww` юм. `a` сонголт нь зөвхөн өөрийн эзэмшдэг процесс биш харин ажиллаж байгаа бүх процессийг харуулдаг. `u` сонголт нь процессийг эзэмшиж байгаа хэрэглэгчийн нэрийг харуулдаг бөгөөд мөн хэрэглэж байгаа санах ойг нь харуулдаг. `x` сонголт нь далд ажиллаж байгаа буюу дэмон эсэхийг нь харуулдаг. `ww` сонголт нь процессуудыг ажиллуулсан тушаалын бүтэн нэрийг нь харуулдаг. Бусад үед, хэрэв тушаалын нэр нь дэлгэцэнд багтахгүй урт байх тохиолдолд хасаж харуулдаг.

top(1) тушаалын гаралт нь өмнөх жишээтэй ижилхэн. Жишээ болгож нэг гаралтыг харцгаая:

    % 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 ), хичнээн санах ойн хэмжээ болон swap хэмжээ хэрэглэгдэж байгаа, мөн хичнээн хугацааг процессорын бусад төлөв байдалд зарцуулсан зэргийг илэрхийлж байна.

Доорх баганууд нь ps(1) тушаалтай ойролцоо мэдэгдлүүдийг харуулж байна. Эхлээд PID дугаар дараа нь хэрэглэгчийн нэр, процессороос хэрэглэсэн хугацаа, ажиллуулсан тушаал гэх мэт. top(1) тушаал нь анхдагч тохируулгаараа, процессийн хэрэглэж байгаа санах ойн хэмжээг харуулдаг. Тэр хэсэг нь хоёр баганад харуулагддаг бөгөөд эхнийх нь нийт хэмжээ дараагийх нь тухайн үеийнх нь хэмжээ юм. Нийт хэмжээ гэдэг нь програм ажиллахад хэд хэрэгтэйг хэлдэг бөгөөд тухайн үеийнх нь хэмжээ нь одоогоор хэдийг хэрэглэж байгааг заадаг. Энэ жишээн дээр Netscape® програм бараг 30 МБ хэмжээг RAM санах ойд шаардлагатай гэсэн боловч одоогоор 9 МБ хэмжээ хэрэглэж байна гэж заасан байна.

top(1) нь энэ харуулалтыг хоёр секунд тутам шинэчилдэг бөгөөд үүнийг `s` тохируулгаар өөрчилж болно.

Prev | Home | Next
Файл системийг холбох болон салгах | Up | Далд чөтгөр буюу дэмонууд, дохионууд, мөн процессуудыг зогсоох нь

Энэ болон бусад баримтуудыг ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/ хаягаас татаж авч болно.

FreeBSD-ийн талаар <questions@FreeBSD.org> хаягтай холбоо барихаасаа өмнө баримтыг уншина уу.
Энэ бичиг баримттай холбоотой асуулт байвал <doc@FreeBSD.org> хаягаар цахим захидал явуулна уу.
Энэ бичиг баримтын орчуулгатай холбоотой асуулт байвал <admin@mnbsd.org> хаягаар цахим захидал явуулна уу.