🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Thread View: pl.comp.os.ms-windows.win3
9 messages
9 total messages Started by Sep Wed, 07 Jun 2006 11:43
tryb rzeczywisty
#5603
Author: Sep
Date: Wed, 07 Jun 2006 11:43
5 lines
1296 bytes
Witam!
Z tego co wiem tryb rzeczywisty daje możliwość dostępu tylko do 1mb pamięci 
(i 64kb pamięci bezpośrednio nad nim zwany pamięcią wysoką).
Więc jak to niby jest, że DOS pracujący rzekomo w trybie rzeczywistym po 
załadowaniu himem.sys ma dostęp do pamięci rozszerzonej? 
Re: tryb rzeczywisty
#5604
Author: Konrad Stepien
Date: Thu, 08 Jun 2006 11:04
15 lines
1528 bytes
Sep <sepu@USUNTOgazeta.pl> napisał(a):
> Witam!
> Z tego co wiem tryb rzeczywisty daje możliwość dostępu tylko do 1mb pamięci 
> (i 64kb pamięci bezpośrednio nad nim zwany pamięcią wysoką).
> Więc jak to niby jest, że DOS pracujący rzekomo w trybie rzeczywistym po 
> załadowaniu himem.sys ma dostęp do pamięci rozszerzonej? 
> 
himem.sys udostępnia funkcje zarządzające pamiecią XMS.
Zasadniczo to pozwala alokować bloki pamięci XMS i przesyłać
dane między tymi blokami a pamięcią rzeczywistą.
I to z zasadzie tyle.

-- 
WARNING: my e-mail is encrypted by ROT13
Xbaenq Fgrcvra <xbaenq@vagreqngn.arg.cy>
Re: tryb rzeczywisty
#5605
Author: Sep
Date: Fri, 09 Jun 2006 08:48
45 lines
3644 bytes
a skoro już o pamięci:
w Internecie jest pełno błędów np. "pamięć rozszerzona to ta powyżej 640 kb"
Wydaje mi się, że (proszę o nanoszenie poprawek):

-procesory 16-bitowe mogły obsłużyć tylko 20 lini adresowych w których 
mieścił się obszar 1mb pamięci RAM. Z tego powodu całą pamięć powyżej 1mb 
nazywa się pamięcią rozszerzoną
-wszystkie procesory 32- i 64- bitowe potrafią przejść w tryb procka 
16-bitowego i dlatego można na nich korzystać z pracującego w trybie 
rzeczywistym DOS-u

-pamięć do 640 kb to tzw. pamięć podstawowa (konwencjonalna)
-pamięc między 640 kb a 1mb to pamięć górna (upper)
ładowane są do niej ROM-y urządzeń takich jak karty graficzne w celu 
przyspieszenia pracy (dziś
nie przynosi to już tak dużego wzrostu wydajności)
część z tej pamięci (nie wykorzystywana przez ROM-y)
może zostać przekstałcona w bloki UMB (upper memory blocks) do których można 
ładować sterowniki
w celu zaoszczędzenia pamięci podstawowej
za pomocą poleceń loadhigh i devicehigh.
wyłączenie opcji Shadow Ram w BIOS-ie zwiększa
ilość pamięci którą można przekstałcić w UMB
-pierwszy obszar 64kb powyżej 1mb to pamięć wysoka HMA (high memory area)
-pamięć rozszerzoną (extended) można przekstałcić w pamięć stronicowaną 
(expanded) zgodną ze specyfikacją Lotus-Intel-Microsoft  EMS 3.2 lub 4.0 
(czym się różnią te dwie wersje?) a odbywa się to w następujący sposób: w 
pamięci górnej tworzony jest blok 64kb podzielony na 4 strony po 16 kb, 
które mogą "jeździć" po całej pamięci rozszerzonej.
-pamięć stronicowana (EMS) jest wolniejsza od tej w standardzie XMS
-aby stworzyć bloki UMB trzeba załadować sterownik emm386.sys (jeżeli nie 
chce się tworzyć pamięci EMS to z poleceniem noems); FreeDOS posiada 
odzdzielny sterownik tworzący bloki UMB - umb.sys
-sporo programów pracuje znacznie wolniej po załadowaniu emm386.sys
nawet z poleceniem noems - dlaczego?
-gdy windows 9.x w plikach config.sys lub autoexec.bat
odnajdzie sterownik 16-bitowy którego nie potrafi zastąpić odpowiednikiem 
32-bitowym to
przełącza się w "tryb zgodności z trybem Ms-DOS"
jak on działa??
-czy to prawda, że windows 95 bez załadowania himem.sys nie potrafi zobaczyć 
całej pamięci?
-wymienione podziały pamięci (podstawowa, górna ....) nie są podziałami 
fizycznymi, a jedynie programowymi
-systemy 32-bitowe widzą pamięć jako jedną całość bez żadnych podziałów 
Re: tryb rzeczywisty
#5606
Author: Konrad Stepien
Date: Fri, 09 Jun 2006 17:49
111 lines
6321 bytes
Sep <sepu@USUNTOgazeta.pl> napisał(a):
> a skoro już o pamięci:
> w Internecie jest pełno błędów np. "pamięć rozszerzona to ta powyżej 640 kb"
> Wydaje mi się, że (proszę o nanoszenie poprawek):
> 
> -procesory 16-bitowe mogły obsłużyć tylko 20 lini adresowych w których 
> mieścił się obszar 1mb pamięci RAM. Z tego powodu całą pamięć powyżej 1mb 
> nazywa się pamięcią rozszerzoną

Nieprawda. To dotyczy procesorów 8086/88. 80286 też jest 16-bitowy a adresuje
znacznie więcej. Że o innych prockach 16-bitowych (np. motorola 68000) nie
wspomnę.

> -wszystkie procesory 32- i 64- bitowe potrafią przejść w tryb procka 
> 16-bitowego i dlatego można na nich korzystać z pracującego w trybie 
> rzeczywistym DOS-u
> 
Wszystkie z rodziny i386. Bo taki Itanium już nie. O nieintelowskich
nie wspomnę. Poza tym nie w trym 16-bit a w tryb 8086. Bo taki 286
może pracować w swoim natywnym trybie (innym niż 386 i wyższe), albo
w "trybie rzeczywistym (real mode)" czyli jako 8086.

> -pamięć do 640 kb to tzw. pamięć podstawowa (konwencjonalna)

Tak, ale to już kwestja organizacji pamięci PC a nie procesora jako takiego.

> -pamięc między 640 kb a 1mb to pamięć górna (upper)
> ładowane są do niej ROM-y urządzeń takich jak karty graficzne w celu 
> przyspieszenia pracy (dziś

Te romy są tam nie tyle ładowane, co mapowane na ten zakres adresów.
O "ładowaniu" można mówić w wypadku "shadow BIOS". Ale to tylko trik
polegający na przepisaniu ROM-u do RAM-u, właśnie w celu przyspieszenia.
W każdym razie, shadow nie jest obowiazkowy.

> nie przynosi to już tak dużego wzrostu wydajności)

Bo dziś żaden system nie korzysta z BIOS-u w czasie normalnej pracy.
BIOS jest potrzebny w zasadzie tylko w czesie startu systemu.

> część z tej pamięci (nie wykorzystywana przez ROM-y)
> może zostać przekstałcona w bloki UMB (upper memory blocks) do których można 
> ładować sterowniki

W zasadzie racja, ale obszar pamięci górnej to nie tylko ROM-y. Ta pamięć
jest głównie wykorzystywana jako pamięć peryferiów, np. pamięć katy graficznej.
Niektóre płyty 286 i wczesne 386 miały mozliwość przemapowania pamięci RAM
z tego zakresu na obszar powyżej 1MB. Szczególnie uzyteczne w maszynach
z jednym megiem RAM. Wedy oczywiście nie można było korzystać z shadow BIOS.

> w celu zaoszczędzenia pamięci podstawowej
> za pomocą poleceń loadhigh i devicehigh.
> wyłączenie opcji Shadow Ram w BIOS-ie zwiększa
> ilość pamięci którą można przekstałcić w UMB

Nie. Ten obszar jest i tak zajęty. Wyjątkiem jest to przemapowanie
o którym pisałem, ale ono i tak nie wpływa na UMB.

> -pierwszy obszar 64kb powyżej 1mb to pamięć wysoka HMA (high memory area)
> -pamięć rozszerzoną (extended) można przekstałcić w pamięć stronicowaną 
> (expanded) zgodną ze specyfikacją Lotus-Intel-Microsoft  EMS 3.2 lub 4.0 
> (czym się różnią te dwie wersje?) a odbywa się to w następujący sposób: w 
> pamięci górnej tworzony jest blok 64kb podzielony na 4 strony po 16 kb, 
> które mogą "jeździć" po całej pamięci rozszerzonej.
> -pamięć stronicowana (EMS) jest wolniejsza od tej w standardzie XMS

Czy ja wiem. W sumie nie powinna. Myślę, że te opinie pochodzą z czasu
gdy stosowane były karty pamięci EMS, bo maszyny klasy XT inaczaj nie potrafiły.

> -aby stworzyć bloki UMB trzeba załadować sterownik emm386.sys (jeżeli nie 
> chce się tworzyć pamięci EMS to z poleceniem noems); FreeDOS posiada 
> odzdzielny sterownik tworzący bloki UMB - umb.sys
> -sporo programów pracuje znacznie wolniej po załadowaniu emm386.sys
> nawet z poleceniem noems - dlaczego?

Nie zauważyłem. Inna sprawa, że emm386 zajmuje pamieć podstawową, i jeśli
program nie potrafi korzystać z pamięci rozszerzonej, to emm386 będzie
mu tylko przeszkadzał.

> -gdy windows 9.x w plikach config.sys lub autoexec.bat
> odnajdzie sterownik 16-bitowy którego nie potrafi zastąpić odpowiednikiem 
> 32-bitowym to
> przełącza się w "tryb zgodności z trybem Ms-DOS"
> jak on działa??

Nie znam się za dobrze na win9x, ale po mojemu to działa na takiej samej
zasadzie jak odwołania do BIOS-u (BIOS jest 16-bitowy).

> -czy to prawda, że windows 95 bez załadowania himem.sys nie potrafi zobaczyć 
> całej pamięci?

Nie, może zupełnie pierwsze wersje bez service-pack.
Za to ZTCP to win3.x nie widziały powyżej 16MB jeśli się nie założyło EMS-a

> -wymienione podziały pamięci (podstawowa, górna ....) nie są podziałami 
> fizycznymi, a jedynie programowymi

Programowe podziały to ograniczenie base memory do 640kb.
Podział na 1MB i okienko 64KB (minus 16 bajtów) obszaru HMA są jak najbardziej
fizyczne i wynikają z ilości nóżek które ma procesor 8086.

> -systemy 32-bitowe widzą pamięć jako jedną całość bez żadnych podziałów 
> 
W zasadzie tak. Ale obszar pomiędzy 640kb a 1MB i tak jest niedostępny,
bo tam siedzą BIOS-y i pamięć peryferiów. Poza tym standardowy kontroler DMA
widzi tylko pierwsze 16MB, i trzeba o tym pamietać programując np. kartę
muzyczną.

-- 
WARNING: my e-mail is encrypted by ROT13
Xbaenq Fgrcvra <xbaenq@vagreqngn.arg.cy>
Re: tryb rzeczywisty
#5607
Author: janusz
Date: Sun, 18 Jun 2006 20:39
18 lines
1744 bytes
Sep napisał:

> a skoro już o pamięci:

[ciach]

> -pierwszy obszar 64kb powyżej 1mb to pamięć wysoka HMA (high memory area)

Dziwne, kiedyś miałem 80286 z 1 MB RAM i grafiką Hercules.
Odpowiednio dobrane sterowniki HMA/XMS/UMB (nie od Microsoftu, 
znalezione chyba na SimTelu) dawały efekt taki, że polecenie mem
pokazywało, że DOS jest w HMA, wszystkie sterowniki i rezydenty
(a było ich razem 170 KB) są w blokach UMB, a pamięci podstawowej
mam 720 KB (słownie: siedemset dwadzieścia kilobajtów).
Wielkość pamięci podstawowej sprawdzałem też przy użyciu innych 
programów. Rzeczywiście wychodziło, że mam 720 KB pamięci podstawowej.

j..
Re: tryb rzeczywisty
#5608
Author: Konrad Stepien
Date: Tue, 20 Jun 2006 10:45
36 lines
2648 bytes
janusz <janusz.lepionko@poczta.onet.pl> napisał(a):
> Sep napisał:
> 
>> a skoro już o pamięci:
> 
> [ciach]
> 
>> -pierwszy obszar 64kb powyżej 1mb to pamięć wysoka HMA (high memory area)
> 
> Dziwne, kiedyś miałem 80286 z 1 MB RAM i grafiką Hercules.
> Odpowiednio dobrane sterowniki HMA/XMS/UMB (nie od Microsoftu, 
> znalezione chyba na SimTelu) dawały efekt taki, że polecenie mem
> pokazywało, że DOS jest w HMA, wszystkie sterowniki i rezydenty

DOS w HMA to potrafił już DOS-5.0 na 80286. XMS też na 286 działał.
Jedyne czego nie potrafił DOS na 286 to załadować emm386.exe.
A właśnie emm386 ubsługiwał UMB (czyli loadhisgh i devicehigh).
Jiedyś bawiłem się ustrojstwem o nazwie emm286.exe które robiło
mniej więcej to co napisałeś.

> (a było ich razem 170 KB) są w blokach UMB, a pamięci podstawowej
> mam 720 KB (słownie: siedemset dwadzieścia kilobajtów).
> Wielkość pamięci podstawowej sprawdzałem też przy użyciu innych 
> programów. Rzeczywiście wychodziło, że mam 720 KB pamięci podstawowej.
> 
Bo tak na prawdę to pamięć podstawowa od UMB się niewiele rózni, oprócz
nazwy i adresu (UMB sa powyżej 640 kilobajta). Procesor (nawet 8086) jest
w stanie zaadresować UMB bez żadnych trików. Jedyne co musi zapewnić
system, to rozsądne procedury przydzialania bloków powyżej 640kb, tak
żeby nie wpakować się na przestrzeń adresową jakiegoś urządzenia.
Po to zresztą przełączniki "I=zakres" i "X=zakres"
w paramatrach emm386.exe

-- 
WARNING: my e-mail is encrypted by ROT13
Xbaenq Fgrcvra <xbaenq@vagreqngn.arg.cy>
Re: tryb rzeczywisty
#5609
Author: janusz
Date: Thu, 24 Aug 2006 13:56
57 lines
3374 bytes
Użytkownik Konrad Stepien napisał:
> janusz <janusz.lepionko@poczta.onet.pl> napisał(a):
> 
>>Sep napisał:
>>
>>
>>>a skoro już o pamięci:
>>
>>[ciach]
>>
>>
>>>-pierwszy obszar 64kb powyżej 1mb to pamięć wysoka HMA (high memory area)
>>
>>Dziwne, kiedyś miałem 80286 z 1 MB RAM i grafiką Hercules.
>>Odpowiednio dobrane sterowniki HMA/XMS/UMB (nie od Microsoftu, 
>>znalezione chyba na SimTelu) dawały efekt taki, że polecenie mem
>>pokazywało, że DOS jest w HMA, wszystkie sterowniki i rezydenty
> 
> 
> DOS w HMA to potrafił już DOS-5.0 na 80286. XMS też na 286 działał.

Tylko że sterownik HMA od Microsoftu na mojej maszynie zżerał więcej
pamięci podstawowej niż odzyskiwałem dzięki umieszczeniu DOS w HMA.
Dlatego w ogóle poszukałem sterowników innej produkcji.

> Jedyne czego nie potrafił DOS na 286 to załadować emm386.exe.
> A właśnie emm386 ubsługiwał UMB (czyli loadhisgh i devicehigh).
> Jiedyś bawiłem się ustrojstwem o nazwie emm286.exe które robiło
> mniej więcej to co napisałeś.

Ja używałem czegoś innego. To były dwa pliki.
Nazwy były w stylu UMB*.sys
Mój config.sys się od ich wywołania zaczynał.
Reszta sterowników była devicehigh=...

> 
> 
>>(a było ich razem 170 KB) są w blokach UMB, a pamięci podstawowej
>>mam 720 KB (słownie: siedemset dwadzieścia kilobajtów).
>>Wielkość pamięci podstawowej sprawdzałem też przy użyciu innych 
>>programów. Rzeczywiście wychodziło, że mam 720 KB pamięci podstawowej.
>>
> 
> Bo tak na prawdę to pamięć podstawowa od UMB się niewiele rózni, oprócz
> nazwy i adresu (UMB sa powyżej 640 kilobajta). Procesor (nawet 8086) jest
> w stanie zaadresować UMB bez żadnych trików. Jedyne co musi zapewnić
> system, to rozsądne procedury przydzialania bloków powyżej 640kb, tak
> żeby nie wpakować się na przestrzeń adresową jakiegoś urządzenia.
> Po to zresztą przełączniki "I=zakres" i "X=zakres"
> w paramatrach emm386.exe


Dowcip w tym, że miałem 720 KB pamięci _podstawowej_ i to jako ciągły 
obszar. Żeby sprawdzić, czy to rzeczywistośc, a nie dowcip od systemu, 
uruchomiłem kiedyś program, który alokował 700 KB - działał.

j..
Re: tryb rzeczywisty
#5610
Author: Konrad Stepien
Date: Thu, 24 Aug 2006 20:58
35 lines
2598 bytes
> Ja używałem czegoś innego. To były dwa pliki.
> Nazwy były w stylu UMB*.sys
> Mój config.sys się od ich wywołania zaczynał.
> Reszta sterowników była devicehigh=...
>
Ano było parę zamienników, qemm i parę innych. Nazw teraz nie pomnę.
>> 
>> 
>>>(a było ich razem 170 KB) są w blokach UMB, a pamięci podstawowej
>>>mam 720 KB (słownie: siedemset dwadzieścia kilobajtów).
>>>Wielkość pamięci podstawowej sprawdzałem też przy użyciu innych 
>>>programów. Rzeczywiście wychodziło, że mam 720 KB pamięci podstawowej.
>>>
>> 
>> Bo tak na prawdę to pamięć podstawowa od UMB się niewiele rózni, oprócz
>> nazwy i adresu (UMB sa powyżej 640 kilobajta). Procesor (nawet 8086) jest
>> w stanie zaadresować UMB bez żadnych trików. Jedyne co musi zapewnić
>> system, to rozsądne procedury przydzialania bloków powyżej 640kb, tak
>> żeby nie wpakować się na przestrzeń adresową jakiegoś urządzenia.
>> Po to zresztą przełączniki "I=zakres" i "X=zakres"
>> w paramatrach emm386.exe
>
>
> Dowcip w tym, że miałem 720 KB pamięci _podstawowej_ i to jako ciągły 
> obszar. Żeby sprawdzić, czy to rzeczywistośc, a nie dowcip od systemu, 
> uruchomiłem kiedyś program, który alokował 700 KB - działał.
>
Ale w czy w jednym bloku?
Szok to je przeżyłem jak zainstalowałem OS/2. On też w trybie
rzeczywistym raportował sporo ponad 700k konwencjonalnej, w dodatku
nie trzeba było ładować driverów od myszki, CD-ROM-u i innych duperali.

-- 
WARNING: my e-mail is encrypted by ROT13
Xbaenq Fgrcvra <xbaenq@vagreqngn.arg.cy>
Re: tryb rzeczywisty
#5611
Author: M. "SeP"
Date: Thu, 28 Sep 2006 17:42
25 lines
2618 bytes
jeszcze raz powrócę do tego co było na początku
------------------------------------------------------------------------------------------------------------------------------------------------------------------------
> Witam!
> Z tego co wiem tryb rzeczywisty daje możliwość dostępu tylko do 1mb 
> pamięci
> (i 64kb pamięci bezpośrednio nad nim zwany pamięcią wysoką).
> Więc jak to niby jest, że DOS pracujący rzekomo w trybie rzeczywistym po
> załadowaniu himem.sys ma dostęp do pamięci rozszerzonej?


himem.sys udostępnia funkcje zarządzające pamiecią XMS.
Zasadniczo to pozwala alokować bloki pamięci XMS i przesyłać
dane między tymi blokami a pamięcią rzeczywistą.
I to z zasadzie tyle.
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------
ale o ile rozumiem DOS nadal pracuje w trybie rzeczywistym, tak??
w przypadku EMS była tworzona ramka w obrębie UMB, która jeździła po całej 
pamięci.
a w przypadku XMS??
bo rozumiem, że takiej ramki nie ma pamięć powyżej 1mb jest widziana w 
sposób ciągły.
więc jak to pogodzić z trybem rzeczywistym?
i co to jest ten DOS protected mode?
rozumiem, że wprowadza ochronę pamięci (ale nie wielozadaniowość), ale jak 
to pogodzić z pracą w trybie rzeczywistym 
Thread Navigation

This is a paginated view of messages in the thread with full content displayed inline.

Messages are displayed in chronological order, with the original post highlighted in green.

Use pagination controls to navigate through all messages in large threads.

Back to All Threads