Internet Info, s.r.o. Lupa Měšec Podnikatel Root Zdroják DigiZone Slunečnice Vitalia TopDrive KupDnes Navrcholu NovýTarif Dobrý web Weblogy Woko Jagg Computer.cz SK: MojeLinky

Hlavní navigace

Odpověď na názor

Odpovídáte na názor k článku Programujeme v jazyce Assembler v Linuxu: Úvod.

Ivona Prenosilova
Ivona Prenosilova (neregistrovaný)
2. 7. 2004 15:32

Re: .

celé vlákno

>NT maji odlisne FS na kazdem procesoru a z neho urci o jaky thread se jedna?
ano, ale je to trochu slozitejsi. nejprve je dulezite rozlisit kernel a user mode.
fs je rozdilne na kazdem procesoru i v kazdem user mode threadu. ted prichazeji
v potaz dva gdt selectory:

selector 0x30 - ten ukazuje na PCR (PCRB), process control region, ktery je samozrejme
na kazdem procesoru jiny, ale nemeni se.
selector 0x3b - ten ukazuje na UTEB (user mode thread environment block). ten
se meni (base) pri kazdem context switchi.
DPL=3, Base=0x7FFDE00 (1st thread), Lim=0x00000FFF
pro kernel mode thready je base = 0
jak vidite, tento selektor ukazuje do address space procesu, do
ktereho nalezi.

kdyz se zavola syscall, v syscall handler prologu se nastavi fs == 0x30 - cili
ukazuje na PCR daneho procesoru, na kterem zrovna bezi. tam je ulozen odkaz treba
na aktualni thread object, etc. kdyz se zase prepina zpet z kernel modu do user
modu, nastavi se zpet fs registr na 0x3b. jelikoz tento selector ma pro kazdy
user mode thread jinou bazi (a ukazuje na jinou datovou strukturu), umoznuje
pouzivat thread local variables.


>LDT mnozstvi threadu v procesu na Linuxu omezuje. Mozna kdysi ve starych
>libc se thread urcoval pomoci ESP. To GS kazdopadne uz zmenit nejde ---
>je to zakompilovane do vsech programu, co pouzivaji thread-local promenne.
fs take menit nejde. kvuli optimalizaci se pouziva inline kod.

   
Chcete přispět jako registrovaný uživatel? Přihlaste se ke svému účtu.
Ochrana proti spamovacím robotům. Odpovězte prosím na následující otázku: Jaký je letos rok?
 

Pravidla pro diskutující

Přidáním čtenářského příspěvku do diskusí či fóra souhlasíte s tím, že budete dodržovat následující pravidla. Při jejich hrubém porušení se vystavujete riziku smazání příspěvku, jeho modifikaci, v krajním případě i zablokování přístupu do diskusí.

Redakce ze zásady nezasahuje do čtenářských diskusí a zavazuje se, že nebude mazat ani modifikovat příspěvky, kromě případů, kdy tyto porušují některé z následujících pravidel. V takové situaci je na zvážení redakce, zda příspěvek modifikuje s viditelným upozorněním, či přímo smaže. Redakce nikdy nemaže „nesouhlasné komentáře“ jen proto, že jsou nesouhlasné. Vítáme střet názorů, ale vždy v rámci slušné a kultivované debaty.

Příspěvky nesmí obsahovat:

  1. Vulgární či hrubé výrazy.
  2. Urážlivé výroky na adresu druhé osoby či skupiny osob.
  3. Texty, které mají za cíl jen vyprovokovat emotivní reakci (trolling).
  4. Rasové útoky či útoky na jakoukoliv jinou menšinu či skupinu obyvatel.
  5. Komerční nabídky a affiliate odkazy.
  6. Odkazy na warez, sériová čísla, licenční kódy, pornografii a další nevhodný materiál stejně jako žádosti o poskytnutí tohoto obsahu.
  7. Prokazatelně protiprávní obsah.

Informace o soukromí: U všech přidaných komentářů provozovatel ukládá IP adresu a hostname odesílatele. U neregistrovaných uživatelů se na webu zobrazuje část hostname, případně IP adresy, neumožňující identifikovat konkrétní počítač.

Povolené značky XHTML: a, br, code, em, li, ol, p, pre, strong, sub, sup, ul