Re: Assuming that TAS() will succeed the first time is verboten

Поиск
Список
Период
Сортировка
От Bruce Momjian
Тема Re: Assuming that TAS() will succeed the first time is verboten
Дата
Msg-id 200101090315.WAA10993@candle.pha.pa.us
обсуждение исходный текст
Ответ на Re: Assuming that TAS() will succeed the first time is verboten  (Tom Lane <tgl@sss.pgh.pa.us>)
Ответы Re: Assuming that TAS() will succeed the first time is verboten
Re: Assuming that TAS() will succeed the first time is verboten
Список pgsql-hackers
> One last followup on that bizarreness about shutdown's checkpoint
> failing on Alpha platforms ---
> 
> After changing the checkpoint code to loop, rather than assuming TAS()
> must succeed the first time, I noticed that it always looped exactly
> once.  This didn't make sense to me at the time, but after querying some
> Alpha experts at DEC^H^H^HCompaq, it does now.  If a new process's first
> write to a shared memory page is a stq_c, that stq_c is guaranteed to
> fail (at least on Tru64 Unix), because it will page fault.  The shared
> memory page is inherited read-only and is converted to read-write on
> first fault.  This doesn't seem really necessary, but I suppose it's
> done to share code with the copy-on-write case for non-shared pages
> that are inherited via fork().

This seems quite bizarre.  Why would the process fail on the write, and
not just pause and wait for the fault to bring in the page?  Doesn't the
CPU halt the instruction to fetch in the page and restart the
instruction?

--  Bruce Momjian                        |  http://candle.pha.pa.us pgman@candle.pha.pa.us               |  (610)
853-3000+  If your life is a hard drive,     |  830 Blythe Avenue +  Christ can be your backup.        |  Drexel Hill,
Pennsylvania19026
 


В списке pgsql-hackers по дате отправления:

Предыдущее
От: Tatsuo Ishii
Дата:
Сообщение: README.mb
Следующее
От: ncm@zembu.com (Nathan Myers)
Дата:
Сообщение: Re: Assuming that TAS() will succeed the first time is verboten