Linux-Bulgaria.ORG
навигация

 

начало

пощенски списък

архив на групата

семинари ...

документи

как да ...

 

 

Предишно писмо Следващо писмо Предишно по тема Следващо по тема По Дата По тема (thread)

Re: lug-bg: ps ax|grep sth


  • Subject: Re: lug-bg: ps ax|grep sth
  • From: George Danchev <danchev@xxxxxxxxx>
  • Date: Tue, 14 Jun 2005 14:54:13 +0300
  • Delivered-to: lug-bg-list@xxxxxxxxxxxxxxxxxx
  • Delivered-to: lug-bg@xxxxxxxxxxxxxxxxxx

On Tuesday 14 June 2005 13:59, Delian Krustev wrote:
> On Monday 13 June 2005 16:42, George Danchev wrote:
> > Мда, май не сме точни в това какво значи едновременно защото ядрото
> > отделя внимание на процесите в timeslices[0] нищо, че може да са и в
> > pipe. Значи ядрото много бързо пуска (RN) и приспива процесите (S)
> > (състоянията ги има описани в man ps) от двете страни на pipe-a с дискрет
> > най-малко а може и няколко един timeslice защото не са само те. Какво ще
> > стане ако ps приключи преди да е изтекъл неговия timeslice /много рядко
> > може да стане, но има и такъв шанс както се вижда и тогава в неговия
> > изход няма да има grep /
>
> Ще завърши процеса и изхода му ще бъде записан в буфера на pipe-a.
> grep ще чете, ще срещне EOF, и ще завърши и той.
>
> Това дали грепа ще се види самия себе си зависи от големината на буфера,
> количеството на изхода от ps, и read ordera на /proc който използва ps.

OK, съгласен. Но това което бях описал за ps | grep и имах на предвид в 
предното писмо, е 
(образно казано): 
<първи timeslice за ps>
вади какво ще вади, но няма да види grep защото още ядрото не му е отделило 
време за стартиране, не препълва PIPE_BUF буфера обаче и:
munmap()
exit_group(0)
....
</изтича timeslice>

<следва първи timeslice за grep>
който не вижда себе си в изхода на ps който е в буфера защото той се е 
изпълнил и exit-нал преди да го има този процес grep и за това няма как да го 
види. / е ако няма други процеси grep де, но ние се интересуваме от grep в 
другия край на тръбата /
</>

Това е много рядко разбира се. Обратно ако изпълнението на ps отнеме повече 
време тогава ядрото ще има възможност да отдели следващия /например/ 
timeslice за grep и когато даде пак  timeslice на ps вече той ще види този 
grep.

> Буфера се явява семафор, като напълването му не е необходимо и
> достатъчно условие за блокиране и разблокиране на съответните процеси. При
> забавяне от страна на writer-а примерно(изтичане на timeslice-a му),
> reader-a може да прочете частично запълнен буфер.
>
> >. Дали
> > ще бъде поставен в състояние RN - Running or runnable / low-priority , а
> > после и приспан  S /за да чака другия край /, а grep може ли да е (а може
> > и да не е [1] ) все още стартиран камо ли пък поставен в състояние S -
> > Interruptible sleep.
>
> В момента в който ps напълни буфера write-a blockva и scheduler-a почва да
> си върши работата. В момента в който четенето от другата страна изпразни
> буфера ps се маркира като runnable.

Добре ще блокира писането и пайпа при препълване, за това няма спор / и вече 
писането четенето няма да е атомично /. Незнам scheduler-a дали веднага ще 
switch-не към друг таск или ще чака края на timeslice-a. Но ако изхода на ps 
не препълни буфера и излезе преди края на неговия timeslice то каквото и да 
прави scheduler се оказва, че нашия grep не е бил процес докато е работил ps 
и за това няма как да го види (дори и да са в пайп).

Т.е. от всичкото това писане мисълта ми беше, че (не)появяването на grep в 
този случай е доста трудно предвидимо, най-малкото защото процесите в 
системата флуктуират и при всяко стартиране ps може да работи различно 
дълго/кратко и да не види процеси които ще бъдат стартирани след неговото 
приключване и поставянето на изхода му в буфера с големина PIPE_BUF 
(/usr/include/linux/limits.h)

-- 
pub 4096R/0E4BD0AB 2003-03-18 <danchev.fccf.net/key pgp.mit.edu>
fingerprint    1AE7 7C66 0A26 5BFF DF22 5D55 1C57 0C89 0E4B D0AB 



 

наши приятели

 

линукс за българи
http://linux-bg.org

FSA-BG
http://fsa-bg.org

OpenFest
http://openfest.org

FreeBSD BG
http://bg-freebsd.org

KDE-BG
http://kde.fsa-bg.org/

Gnome-BG
http://gnome.cult.bg/

проект OpenFMI
http://openfmi.net

NetField Forum
http://netField.ludost.net/forum/

 

 

Linux-Bulgaria.ORG

Mailing list messages are © Copyright their authors.