Pentium - co s nim ? (lehce delsi)

Jan Kasprzak kas na informatics.muni.cz
Pátek Listopad 14 08:52:04 CET 1997


Ludek Brukner pise:
: > > K cemu by to mohlo byt dobre? No predstav si ulohu na SMP masine ktera
: > > komunikuje se svoji druhou kopii pres sdilenou pamet. Tato uloha
: > > _potrebuje_ LOCK. 
: > Ze by procesy mezi sebou komunikovaly primo ? K cemu by potom byl OS ?
: > To by byl navrat k MSDOGu. :-))
: 
: Trochu jinak: obecne mohou oba procesory vykonavat soucasne tyz kod,
: coz je v pohode, pokud nesdili data... Takze dva procesy jsou OK, protoze
: data obvykle lezi v privatnim adresovem prostoru. Pokud ale oba procesory
: napr. vykonavaji tutez interruptovou rutinu, ja situace ponekud slozitejsi.
: No a zacnem potrebovat `interprocessor lock'. IMHO, pouziti prefixu lock
: u user-modu svedci o obchazeni OS...
: 
	Uz to tady bylo, ale pro jistotu:

	Pouziti prefixu LOCK v uzivatelskem modu
je naprosto legalni napriklad pro spinlocky pro multithreadove
aplikace (a v Linuxu se to taky dela pres zamykani sbernice
-- asi pres LOCK CMPXCHB -- viz LinuxThreads). Samozrejme, mohly by se
na tohle pouzivat SysV semafory, ale to by bylo desne pomale
-- takovy spinlock pres LOCK CMPXCHB ma nekolik malo instrukci
a jeho beh je v beznem pripade (to jest zamek neni zamceny) linearni
-- bez vyliti pipeline. Pro semafor v kernelu by clovek potreboval
switch do kernelu, spoustu instrukci uvnitr kernelu (SysV semafory
jsou dost obecne) a navrat zpet.

	Samozrejme asi nikdo nebude psat do svych C-programu neco
jako __asm__("lock; ...") -- staci pouzivat POSIX.1c rozhrani
pro thready (LinuxThreads).

-Yenya

--
\ Jan "Yenya" Kasprzak <kas at fi.muni.cz>       http://www.fi.muni.cz/~kas/
\\ PGP: finger kas at aisa.fi.muni.cz   0D99A7FB206605D7 8B35FCDE05B18A5E //
\\\      Czech Linux Homepage:  http://www.fi.muni.cz/~kas/linux/        ///
///      MS is a lot better at making money  than it is at making        \\\
//       good operating systems.                 --Linus Torvalds         \\


Další informace o konferenci Linux