Re: wywlaszczanie w intelach, : 16 bitowosc win95

Autor: Radoslaw Sokol (rsokol_at_iname.com)
Data: Fri 24 Apr 1998 - 13:35:54 MET DST


Grzegorz Szysz/lo wrote:
>
> zainstaluj pod NieTe kilka starych aplikacji. np. word6, excel5,
> do tego kilka rzeczy przeznaczonych dla win3. sprobuj naraz ich uzywac :)
> jak ci sie NT nie zakleszczy, to zobaczysz conajmniej niebieski ekran.

Używam cały czas różnorodnych aplikacji Win16 i jeszcze nigdy
nic mi się nie zakleszczyło. Jeśli dany proces Win16 się wieszał,
to ubijałem go Task Managerem, czasami nawet musiałem razem z jego
maszyną wirtualną, ale nic poza nim się nie wieszało. Worda 6 i
Excela 5 nie mam w tej chwili, ale często instaluję różne mieszające
programiki shareware Win16, a NT się ani razu nie sypnął.

> nie o to chodzi. mi chodzi o deskryptory jako identyfikatory
> wspolnych obszarow pamieci. to klasyka programowania na unixy.
> wcale nie przecze ze ochrona pamieci i pamiec wirtualna w 386 jest
> zrobiona znacznie lepiej, i przede wszystkim inaczej.
> ale to jest kwestia techniczna, zwiazana z procesorem.
> tu chodzi o windowsy, ktore naprawde w jakis przedziwny sposob
> definiuja obszary wspolne, co owocuje tzw. efektami ubocznymi,
> i powstawaniem trudnych w diagnozowaniu bledow.

Nie wiem dlaczego mają powstawać błędy. Po prostu o ile pamiętam
w 1GB pamięci wirtualnej każdego procesu masz kod, w 2GB dane,
w 3GB coś jeszcze, w 4GB biblioteki. W WinNT 3.x nie było
współdzielenia bibliotek systemowych (odwołania poprzez
architekturę klient/serwer) i było to niewątpliwie stabilniejsze,
ale znacznie wolniejsze. Stabilność zresztą była tylko teoretyczna,
bo procesy mają tak samo zerowe prawo mieszać po stronach z 4GB
pamięci wirtualnej jak po stronach innego pierścienia procesora
(interfejs w NT 3.x działał w Ring 0, teraz w Ring 3).

> program odwieszajacy. kolejka sie zablokuje, to wywoluje program
> i zabijam inny program, ktory nie odbiera komunikatu. wtedy komunikat
> dla programu jest kasowany, i desktop znowu rusza (lub po 15sek).
> bez smiesznych bluescreenow.

A jak nie chcesz zabijać programu? W Win32 kolejki umożliwiają Ci
pozostawienie zawieszonego programu i pozwolenie mu na odwieszenie się.

> tak. tylko ze w przypadku zatkania procesora przez jedna aplikacje
> w windows, wszystko staje deba. a w os/2 chodzi.

W w95 tak. W NT i OS/2 chodzi. Jedyne, co mi się nie podoba w NT,
to cecha NT Serwer przydzielająca duże kwatum czasu pojedynczemu
wątkowi. Co prawda zwiększa to wydajność (mniej przełączeń
kontekstów), ale w porównaniu z NT Workstation wielozadaniowość
jest bardziej "skokowa". W OS/2 też zresztą nie ma idealnej
wielozadaniowości - kiedyś miałem OS/2 2.1 i jak mocniej mielił
dyskiem, to zegarek przeskakiwał nieregularnie. Jest to więc
na poziomie NT, gdzie też się czasami takie cuda dzieją.
BTW jednak OS/2 działał jako-tako na 4MB RAMu, a na 12MB całkiem
sprawnie, a dla NT i 32MB mało... :(((

> do tej w os/2, przy istnieniu szeregowej kolejki. mimo tak duzego
> bledu projektowego (niestety), chodzi to znacznie sprawniej, niz
> wielokrotne kolejki w windows.

Ciągle piszesz Windows, a nie wiadomo o które Ci chodzi. Kolejki
są zdefiniowane przez Win32, a win95 i NT to implementacje Win32
o zdecydowanie różnej jakości. Wielowątkowe kolejki w w95
rzeczywiście nie spełniają swojego zadania, bo byle proces
16-bit może zatkać przetwarzanie wszystkich. W NT tego
problemu nie ma.

> to zrob sobie program, ktory w petli bedzie przydzielal sobie
> np. 10kb, i spowrotem oddawal. tylko korzystaj bezposrednio
> z funkcji systemowych windows, by biblioteki (prawdopodobnie C)
> nie zamaskowaly efektu przydzielania/zwalniania pamieci przed windowsem.
> mimo ze pamiec jest zwalniana, zdziwisz sie ze ci swap strasznie urosnie.

OK, proszę:

program GS;
uses Windows;
var i : LongInt;
    h : THandle;
begin
 for i:=1 to 10000*10000 do begin
  h:=GlobalAlloc(GMEM_DISCARDABLE,10 shl 10);
  GlobalLock(h);
  GlobalUnlock(h);
  GlobalFree(h);
 end;
end.

Zajętość pamięci po uruchomieniu wzrasta o kilkanaście kilo i
przez cały czas utrzymuje się na tym samym poziomie. GlobalX
to standardowe funkcje Windows, a jakoś nie ma opisywanego
przez Ciebie efektu. Chyba nie tędy droga... :)

> niestety nie taniej :)))) poza tym mozesz sobie kupic komercyjna
> dystrybucje RedHat, z komercyjnymi pakietami (m.innymi metroX).
> instaluje sie w zasadzie jak windowsy :) klepiesz po okejach i z glowy.

Rzeczywiście. Jedyna rzecz, jaką tam schrzanili, to DiskDruid.
Nie mogłem sobie z nim poradzić. fdisk jest zdecydowanie
bardziej user-friendly - bez problemu pozakładałem partycje
tak, jak chciałem.

> jaka masz karte grafiki ? jaka wersje linuxa ? moze to wszystko jest
> za stare. moze wybrales nieodpowiednia wersje x servera.

Komputer K5-90 z 48MB EDO 60ns, grafika S3 Trio64V+ 2MB EDO noname
System: RedHat 5.0 z dołączonym XFree86 i standardowym X-serwerem
S3. Minimalnie wolniejszy w grafice niż NT na tym samym komputrze
(ale tak, że widać to).

> ale zdalny dostep w grafince robi wrazenie no nie ?

Nie mam klienta Xów dla NT i dobieram się do maszyny z
Linuxem tylko przez telnet, ale i tak fajnie - siedzę na
jednym komputerze a męczę dwa P)

> pakiet remote GUI dla NT jest zauwazalnie wolniejszy.
> widzialem na wlasne oczy gdyby kto pytal.

Wierzę. Zazwyczaj takie pakiety przesyłają po sieci całe
bitmapy z ekranów i nawet jak je kompresują czy obcinają,
to jest tego sporo.

BTW aczkolwiek to NTG, to może będziesz w stanie mi,
początkującemu linuxowcowi, pomóc :) Mam zainstalowaną
Sambę i łączę się bez problemu z roota na share serwera
NT. Jednak próba uruchomienia smbmount z konta użytkownika
siada z komunikatem "smbmount must be installed suid root",
a ja totalnie nie wiem, co to znaczy. Chciałbym linkować
dyski ze skryptów logowania, a tu nic. Co chrzanię?

> | 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:12:14 MET DST