Re: wywlaszczanie w intelach, : 16 bitowosc win95

Autor: Radosław Sokół (rsokol_at_iname.com)
Data: Mon 20 Apr 1998 - 11:02:52 MET DST


Grzegorz Szysz/lo wrote:
>
> to moze mi wyjasnisz, czemu po odpaleniu kilku zadan win3.xx
> pod OS/2 , nastepuje prawidlowe ich wywlaszczanie ? a przeciez
> to jest 16bitowy kod. jeszcze raz. po prostu api do win95/32s
> ma w sobie mechanizmy, ktore powoduja wywlaszczanie wymuszone
> przez aplikacje. czyli aplikacja sama z siebie puka do systemu,
> by oddac czas procesora.

OS/2 _emuluje_ Win16 za pomocą własnych procedur, które mogą ulegać
wywłaszczeniu. Kod samych aplikacji Win16 też może być wywłaszczany,
bo ma zawsze swoje zmienne (w Win 3.x też mógłby być) dopóki nie
załaduje się dwóch instancji tej samej aplikacji. Nie jest moim
problemem, że emulacja Win16 w OS/2 jest lepsza, niż w oryginale -
tej samej klasy emulację Win16 mam w NT. Problem jest w tym, że
nie ma cały czas w OS/2 dobrej, pełnej emulacji Win32.

> powiem ci ciekawostke. kod moze byc 16bitowy, byleby korzystal
> z nowego api win95, nie zas ze starego win3.xx . i juz jest wywlaszczany,
> bo sam sie o to prosi.

Co rozumiesz przez "kod"? Bo jeśli wygenerowany przez kompilator
lub asembler kod "środka" programu, to się zgodzę. Mi chodzi o
nagłówek i format Win32 Portable Executable - bo dopiero on
zapewnia włączenie wywłaszczania przez scheduler Win95. Sam
zauważyłeś, że 32 bity są tylko do obliczeń - i to jest słuszne,
aplikacja wcale nie musi korzystać z jakichś mov eax,..... .
Może być na zwykłych 16-bitowych mov ax,..., ale jak będzie w
formacie PE i będzie wołać Win32 API to już jest wywłaszczana.

> chcesz przez to powiedziec, ze aplikacje korzystaja z instancji kernela ?
> przeciez to jest stawanie na glowie.

Instancje zmiennych kernela. Sam kod jest tylko odwzorowywany na
pamięć wirtualną każdego procesu gdzieś około adresu 4GB i jest
wspólny dla wszystkich aplikacji.

> niezupelnie. w przypadku os/2 poruszyles problem jednowatkowej kolejki
> komunikatow GUI, nie zas problem wywlaszczania i wielozadaniowosci.
> to sa odrebne zagadnienia.

Ale sam poruszyłeś problem wywoływania wywłaszczenia wymuszonego
i do tego służy Yield - chwilowo usypia aplikację pozwalając innym
na przetworzenie komunikatów z kolejki. W Win32 jest to zbędne -
komunikaty są w kolejce wielowątkowej i aplikacja może zwlekać
z przetwarzaniem swoich. Problem jest w OS/2 - trzeba tworzyć
własne buforowanie komunikatów lub wywoływać co jakiś czas
właśnie Yield.

> w takim razie jakim cudem jest mozliwe, ze dwa programy tworzace
> obok siebie dwa okna moga w tym samym czasie cos rysowac ?

Jeśli są w formacie PE, to są wywłaszczane między kolejnymi
odwołaniami do funkcji GDI. Jeśli taki sam numer zrobisz w
aplikacjach Win16, to najpierw się narysuje jedna, a potem
druga (w Win3.x/9x; w NT i OS/2 nawet aplikacje Win16 będą
wywłaszczane).

> system ? tak. fajny ? nieeeeeeeee.
> na to bydle trzeba conajmniej 64mb ramu, i P200 zeby praca byla
> jako tako wygodna. na czymkolwiek innym, obydwie liczby mozna spokojnie
> podzielic przez dwa.

Mam K6 2.5x83 i 64MB RAMu i rzeczywiście NT już chodzi fajnie.
Zastanawiam się nad 128MB RAMu :)) Ale postawiłem na K5-90 48MB
Linuxa i jak uruchomiłem X-y, to wcale nie były bardzo szybsze
niż NT na tym samym komputerze. BTW niedługo na pewno będę miał
maszynę z zainstalowanym RedHatem to będę dokładnie porównywał
wydajność i funkcjonalność tych systemów.

> >PS. Jak tam Twój kot? :)
> jest dobrze. przezyl marzec, i jest caly :)
Mój też ;) Mam kotkę i przez tydzień się upiedliwie biedna
snuła po mieszkaniu wdzięcząc się do każdego :))))

BTW: NTG: pl.rec.koty ;)

> | Grzegorz Szyszlo mailto:znik_at_wbc.lublin.pl | zmienia postac

-- 
Pozdrowienia,
|""""""""""""""""""""""""""""""""""""""""""""""""""""|
| Radosław Sokół |  mailto:rsokol_at_iname.com          |
|                |  http://friko.onet.pl/ka/lizard/  |
|                |  What do you want to fix today?   |
\. WinNT FAQ: http://friko.onet.pl/ka/lizard/ntfaq/ ./


To archiwum zostało wygenerowane przez hypermail 2.1.7 : Tue 18 May 2004 - 17:11:15 MET DST