Re: lug-bg: ps ax|grep sth
- Subject: Re: lug-bg: ps ax|grep sth
- From: Delian Krustev <krustev@xxxxxxxxxxx>
- Date: Tue, 14 Jun 2005 13:59:03 +0300
- Delivered-to: lug-bg-list@xxxxxxxxxxxxxxxxxx
- Delivered-to: lug-bg@xxxxxxxxxxxxxxxxxx
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.
Буфера се явява семафор, като напълването му не е необходимо и
достатъчно условие за блокиране и разблокиране на съответните процеси. При
забавяне от страна на 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.
|