-
51. Data: 2022-06-04 15:41:58
Temat: Re: Budowa własnego linuksowego komputerka
Od: heby <h...@p...onet.pl>
On 02/06/2022 14:28, J.F wrote:
>> A po co te segmenty i w czym są lepsze w porównaiu gdy proces ma
>> najzwyczajniej pamięc RAM dla siebie, jak chce?
> Sprawa jest taka, ze program unixowy ma swój kod, powiedzmy ze stały,
> ma dane w pamieci, ktorych ilosc moze rosnac i ma stos, ktory tez moze
> rosnąc.
Stosy w typowych systemach operacyjnych są śmiesznie małe. Tak około
1000x mniej niż dostepna pamięć i raczej mało kto narzeka.
> I te dwa rosnące obszary stanowią problem, bo trzeba je jakos umiescic
> w pamieci.
Nie stanowią problemu, choć nie mogę wykluczyć, że bardzo źle napisany
program może marudzić. Shit happens.
> W dodatku Unix to system wielozadaniowy, wiec mamy wiele procesów,
> kazdy z apetytem na pamiec. I z pożądaną wzajemną ochroną.
To nie ma związku z segmentacją. Segmentacja to tylko dziadowski system
przełączania banków pamięci z 8-bit maszyn, zaszyty w procesorze. Tak,
troche przesadzam, ale prawdę mówiąc niewiele. Jak zerkniesz na to jakie
machnizmy były popluarne na Z80 i 6502 do ogarniania pamięcu >64k to
niebezpiecznie blisko koncepcji segmentacji wylądujesz. x86 zrobił to
tylko "lepiej" czyli skrajnie skomplikował proste zagadnienie adresacji
pamięci a potem dodawał w kolejnych wersjach procesorów coraz to nowsze
"usprawnienia w odpowiedzi na potrzeby rynku" które zakończyły się tym,
że obecnie z tego nikt nie korzysta, bo to guano, zaprojaktowanie
skrajnie bezmyślnie i psute iteracyjnie przez dziesięciolecia.
https://en.wikipedia.org/wiki/Memory_segmentation
[...]In a x86-64 architecture it is considered legacy and most
x86-64-based modern system software don't use memory segmentation.
Instead they handle programs and their data by utilizing memory-paging
which also serves as a way of memory protection.[...]
Czyli wyszło jak wykle, u Intela.
> Nowsze programy ładują jeszcze dynamicznie biblioteki, wiec trzeba
> wiecej nowego miejsca.
Bibliteki shared sa zazwyczaj kompilowane z kodem position independent
(sprawdzić, czy to nie zabawkowy Windows) i znowu, to nie ma związu z
segmentacją. Procesory bez segmentacji też ładuja te bibliteki w trybie
współdzielenia i też je dzielą. x86 się do tego nie nadaje z powodu
żałosnych problemów z kodem PI, ale już AMD64 tak.
Co zabawne, współdzielenie biblitek jest znacznie łatwiejsze w systemach
bez ochrony pamieci (Amiga OS). I było powszechne w latach 80 w
systemach bez MMU, co nie oznacza, że było rozsądne (fragmentacja była
problemem).
-
52. Data: 2022-06-04 17:36:25
Temat: Re: Budowa własnego linuksowego komputerka
Od: Dawid Rutkowski <d...@w...pl>
sobota, 4 czerwca 2022 o 15:28:49 UTC+2 heby napisał(a):
> On 01/06/2022 10:55, Dawid Rutkowski wrote:
> > Segmentacja daje to samo co stronicowanie.
> > Bo stronicowanie to segmentacja z wieloma segmentami o tej samej wielkości.
> > Ma zalety, ale też wady - większe zapotrzebowanie na pamięć.
> > A w takim Linuxie (szczególnie na x86) masz i segmentację i stronicowanie -
wykorzystywane
> > są zalety jednej i drugiej metody.
> Oczywiście.
>
> https://pl.wikipedia.org/wiki/Segmentacja_pami%C4%99
ci
>
> [...] Segmentacja jest rozwiązaniem bardzo eleganckim, lecz na tyle
> kłopotliwym, że obecnie praktycznie się jej nie stosuje [...] Aby
> segmentację uczynić niewidoczną, Linux wykorzystuje jeden segment o
> adresie bazowym 0x0 i rozmiarze 4GB.[...]
Aleś sobie źródło znalazł.
Piłeś, nie pisz.
Tak jak o kompilacji jako działaniu programu...
Chyba że o emoticonach zapominasz.
Ale nawet jeśli, to kiepski żart.
-
53. Data: 2022-06-04 18:21:52
Temat: Re: Budowa własnego linuksowego komputerka
Od: heby <h...@p...onet.pl>
On 04/06/2022 17:36, Dawid Rutkowski wrote:
>> https://pl.wikipedia.org/wiki/Segmentacja_pami%C4%99
ci
>> [...] Segmentacja jest rozwiązaniem bardzo eleganckim, lecz na tyle
>> kłopotliwym, że obecnie praktycznie się jej nie stosuje [...] Aby
>> segmentację uczynić niewidoczną, Linux wykorzystuje jeden segment o
>> adresie bazowym 0x0 i rozmiarze 4GB.[...]
> Aleś sobie źródło znalazł.
Pierwsze z brzegu. Potrzebujesz więcej?
https://www.oreilly.com/library/view/understanding-t
he-linux/0596002130/ch02s03.html
[...]However, Linux uses segmentation in a very limited way. In fact,
segmentation and paging are somewhat redundant since both can be used to
separate the physical address spaces of processes: segmentation can
assign a different linear address space to each process, while paging
can map the same linear address space into different physical address
spaces. Linux prefers paging to segmentation for the following reasons:[...]
> Piłeś, nie pisz.
Ale zdajesz sobie sprawę, że ta rada działa w obie strony?
> Ale nawet jeśli, to kiepski żart.
Zdecydowanie. Tym bardziej że pochodzi z humorystycznej ksiązki
"Understanding the Linux Kernel". Najwidoczniej autor nie czyta usenetu,
bo by wiedział jak jest naprawdę.
-
54. Data: 2022-06-04 19:01:47
Temat: Re: Budowa własnego linuksowego komputerka
Od: Dawid Rutkowski <d...@w...pl>
sobota, 4 czerwca 2022 o 18:22:55 UTC+2 heby napisał(a):
> On 04/06/2022 17:36, Dawid Rutkowski wrote:
> >> https://pl.wikipedia.org/wiki/Segmentacja_pami%C4%99
ci
> >> [...] Segmentacja jest rozwiązaniem bardzo eleganckim, lecz na tyle
> >> kłopotliwym, że obecnie praktycznie się jej nie stosuje [...] Aby
> >> segmentację uczynić niewidoczną, Linux wykorzystuje jeden segment o
> >> adresie bazowym 0x0 i rozmiarze 4GB.[...]
> > Aleś sobie źródło znalazł.
> Pierwsze z brzegu. Potrzebujesz więcej?
>
> https://www.oreilly.com/library/view/understanding-t
he-linux/0596002130/ch02s03.html
>
> [...]However, Linux uses segmentation in a very limited way. In fact,
> segmentation and paging are somewhat redundant since both can be used to
> separate the physical address spaces of processes: segmentation can
> assign a different linear address space to each process, while paging
> can map the same linear address space into different physical address
> spaces. Linux prefers paging to segmentation for the following reasons:[...]
>
> > Piłeś, nie pisz.
>
> Ale zdajesz sobie sprawę, że ta rada działa w obie strony?
> > Ale nawet jeśli, to kiepski żart.
> Zdecydowanie. Tym bardziej że pochodzi z humorystycznej ksiązki
> "Understanding the Linux Kernel". Najwidoczniej autor nie czyta usenetu,
> bo by wiedział jak jest naprawdę.
Albo Ty nie czytałeś książki i/lub tego, co ja napisałem.
W Linuxie stronicowanie jest podstawą, z segmentacji używane jest niedużo - i tylko
to, co dobre.
Można tak, bo to, co złe, ale niezbędne w segmentacji, załatwia - o wiele lepiej -
stronicowanie.
A samo stronicowanie jest segmentacją z wieloma segmentami o jednakowej (albo max.
kilku ustalonych) wielkości segmentu.
Załatwia całość OS, więc aplikacje w ogóle o tym nie muszą wiedzieć, chyba że wchodzą
niuanse Harvard/Princetown.
-
55. Data: 2022-06-04 20:31:24
Temat: Re: Budowa własnego linuksowego komputerka
Od: heby <h...@p...onet.pl>
On 04/06/2022 19:01, Dawid Rutkowski wrote:
>> Zdecydowanie. Tym bardziej że pochodzi z humorystycznej ksiązki
>> "Understanding the Linux Kernel". Najwidoczniej autor nie czyta usenetu,
>> bo by wiedział jak jest naprawdę.
> Albo Ty nie czytałeś książki i/lub tego, co ja napisałem.
Bardzo możliwe, że jedno z tych dwóch na pewno.
> W Linuxie stronicowanie jest podstawą, z segmentacji używane jest niedużo - i tylko
to, co dobre.
A co konkretnie jest dobre w segmentacji i używane?
-
56. Data: 2022-06-05 11:11:19
Temat: Re: Budowa własnego linuksowego komputerka
Od: Dawid Rutkowski <d...@w...pl>
sobota, 4 czerwca 2022 o 20:32:26 UTC+2 heby napisał(a):
> On 04/06/2022 19:01, Dawid Rutkowski wrote:
> >> Zdecydowanie. Tym bardziej że pochodzi z humorystycznej ksiązki
> >> "Understanding the Linux Kernel". Najwidoczniej autor nie czyta usenetu,
> >> bo by wiedział jak jest naprawdę.
> > Albo Ty nie czytałeś książki i/lub tego, co ja napisałem.
> Bardzo możliwe, że jedno z tych dwóch na pewno.
> > W Linuxie stronicowanie jest podstawą, z segmentacji używane jest niedużo - i
tylko to, co dobre.
> A co konkretnie jest dobre w segmentacji i używane?
Zdecydowanie łatwiej i szybciej sprawdzić, czy adres, z którego pobierane/zapisywane
są dane, mieści się w granicach JEDNEGO segmentu (o danym adresie bazowym i
długości), niż we wszystkich stronach.
I czy atrybuty segmentu pozwalają na przeprowadzenie danej operacji.
Zapewne rodzaj cache dla danych jednego segmentu danego typu (pewnie tego
wskazywanego przez rejestry segmentowe) jest też w procesorze.
A samą pamięć wirtualną robimy oczywiście na stronicowaniu, nie trzeba wywalać całych
segmentów - lub kombinować z dzieleniem ich na kawałki.
-
57. Data: 2022-06-05 13:44:11
Temat: Re: Budowa własnego linuksowego komputerka
Od: heby <h...@p...onet.pl>
On 05/06/2022 11:11, Dawid Rutkowski wrote:
>>> W Linuxie stronicowanie jest podstawą, z segmentacji używane jest niedużo - i
tylko to, co dobre.
>> A co konkretnie jest dobre w segmentacji i używane?
> Zdecydowanie łatwiej i szybciej sprawdzić, czy adres, z którego
pobierane/zapisywane są dane, mieści się w granicach JEDNEGO segmentu (o danym
adresie bazowym i długości), niż we wszystkich stronach.
I tego się uzywa?
> I czy atrybuty segmentu pozwalają na przeprowadzenie danej operacji.
> Zapewne rodzaj cache dla danych jednego segmentu danego typu (pewnie tego
wskazywanego przez rejestry segmentowe) jest też w procesorze.
I tego się używa?
> A samą pamięć wirtualną robimy oczywiście na stronicowaniu, nie trzeba wywalać
całych segmentów - lub kombinować z dzieleniem ich na kawałki.
I tego się używa?
-
58. Data: 2022-06-05 18:50:58
Temat: Re: Budowa własnego linuksowego komputerka
Od: Dawid Rutkowski <d...@w...pl>
niedziela, 5 czerwca 2022 o 13:45:14 UTC+2 heby napisał(a):
> On 05/06/2022 11:11, Dawid Rutkowski wrote:
> >>> W Linuxie stronicowanie jest podstawą, z segmentacji używane jest niedużo - i
tylko to, co dobre.
> >> A co konkretnie jest dobre w segmentacji i używane?
> > Zdecydowanie łatwiej i szybciej sprawdzić, czy adres, z którego
pobierane/zapisywane są dane, mieści się w granicach JEDNEGO segmentu (o danym
adresie bazowym i długości), niż we wszystkich stronach.
> I tego się uzywa?
W Linuxie na x86 tak - tak realizowana jest ochrona pamięci, zarówno kernel space /
user space jak i separacja procesów.
Po prostu dlatego, że 386 to ma.
386 ma o wiele więcej rejestrów niż 8086 - tyle że nie ogólnego przenaczenia, tylko
specjalizowanych.
ARM nie ma, więc ochronę pamięci w Linuxie robi się inaczej.
> > I czy atrybuty segmentu pozwalają na przeprowadzenie danej operacji.
> > Zapewne rodzaj cache dla danych jednego segmentu danego typu (pewnie tego
wskazywanego przez rejestry segmentowe) jest też w procesorze.
> I tego się używa?
Samo się używa, jak to cache.
A atrybutów segmentu - oczywiście, do ochrony.
Np. żeby nie pozwolić wykonać danych.
Co i tak by mogło nie pójść z powodu cache, szczególnie w wieloprocesorowości.
> > A samą pamięć wirtualną robimy oczywiście na stronicowaniu, nie trzeba wywalać
całych segmentów - lub kombinować z dzieleniem ich na kawałki.
> I tego się używa?
Stronicowania chyba jednak na pewno tak. Znowu piłeś?
-
59. Data: 2022-06-05 19:09:37
Temat: Re: Budowa własnego linuksowego komputerka
Od: heby <h...@p...onet.pl>
On 05/06/2022 18:50, Dawid Rutkowski wrote:
>>> Zdecydowanie łatwiej i szybciej sprawdzić, czy adres, z którego
pobierane/zapisywane są dane, mieści się w granicach JEDNEGO segmentu (o danym
adresie bazowym i długości), niż we wszystkich stronach.
>> I tego się uzywa?
> W Linuxie na x86 tak
Zapytam na wszelki wypadek: sugerujesz, że Linux używa segmentacji do
*czegokolwiek* poza ustawieniem jej tak, aby nie przeszkadzała?
> Po prostu dlatego, że 386 to ma.
386 ma tez real mode. Kiepski to powód do używania.
> 386 ma o wiele więcej rejestrów niż 8086 - tyle że nie ogólnego przenaczenia, tylko
specjalizowanych.
> ARM nie ma, więc ochronę pamięci w Linuxie robi się inaczej.
Zgadnij ile procesorów na świecie ma segmentację. Zastanów się, również
ostrożnie, jakie interesujace ficzery generuje segmentacja po stronie
kodu asseblerowego. Podpowiem: podobne miewa architektura Harvard i
pozostawiają traume taką samą jak powórnywanie pointerów pod DOSem.
Możesz przybliżyć nam po ch.. komu segmentacja w systemie Unixowym,
który nie ma takowej segmentacji na ani jednej implementacji użytecznej
do czegokolwiek?
>>> I czy atrybuty segmentu pozwalają na przeprowadzenie danej operacji.
>>> Zapewne rodzaj cache dla danych jednego segmentu danego typu (pewnie tego
wskazywanego przez rejestry segmentowe) jest też w procesorze.
>> I tego się używa?
> Samo się używa, jak to cache.
Ja pytam nie o to, jak jest zworkaroudowane w procesorze bo tego nie
wiemy. Czy Linux *używa* segmentacji do czegokolwiek użytecznego.
> A atrybutów segmentu - oczywiście, do ochrony.
A czego ochrony? Jest coś dodatkowego do ochrony, czego nie chroni paging?
> Np. żeby nie pozwolić wykonać danych.
Ojej. To już nonexec bit w stronicowaniu się nie nadaje?
Zaznaczam też, że to relatywnie nowy ficzer, tak na marginesie.
> Co i tak by mogło nie pójść z powodu cache, szczególnie w wieloprocesorowości.
Interesujące. Dalej mówimy o x86 czy sobie przeskoczyliśmy na jakies DEC
Alpha z jego niespójnym cache?
>>> A samą pamięć wirtualną robimy oczywiście na stronicowaniu, nie trzeba wywalać
całych segmentów - lub kombinować z dzieleniem ich na kawałki.
>> I tego się używa?
> Stronicowania chyba jednak na pewno tak. Znowu piłeś?
Pytanie było o *segmentację*. To że się używa stronicowania, nie
powoduje że segmentacja ma jakiekolwiek użyteczne funckcje.
Mam wrażenie, że troche się pogubiliśmy w dyspucie między segmentacją a
stronicowaniem.
Pozwól więc, że wyklaruje: segmantacji się nie używa poza problem, że
nie da się jej wyłaczyć, więc Linux zamiata ją pod dywan olewajac mniej
więcej w 100%.
Stronicowania się używa.
Pisałeś że coś z segmentacji Linux używa.
Chciałbym wiedzieć *CO* używa. Głównie dlatego że 40 lat temu i dzisiaj
segmantacja to jedne z najbardziej debilnych pomysłów w technologii CPU
i mam nadzieje że autor będzie się w piekle przewracał.
-
60. Data: 2022-06-06 12:03:57
Temat: Re: Budowa własnego linuksowego komputerka
Od: "J.F" <j...@p...onet.pl>
On Sun, 5 Jun 2022 09:50:58 -0700 (PDT), Dawid Rutkowski wrote:
> niedziela, 5 czerwca 2022 o 13:45:14 UTC+2 heby napisał(a):
>> On 05/06/2022 11:11, Dawid Rutkowski wrote:
>>>>> W Linuxie stronicowanie jest podstawą, z segmentacji używane jest niedużo - i
tylko to, co dobre.
>>>> A co konkretnie jest dobre w segmentacji i używane?
>>> Zdecydowanie łatwiej i szybciej sprawdzić, czy adres, z którego
pobierane/zapisywane są dane, mieści się w granicach JEDNEGO segmentu (o danym
adresie bazowym i długości), niż we wszystkich stronach.
>> I tego się uzywa?
>
> W Linuxie na x86 tak - tak realizowana jest ochrona pamięci, zarówno kernel space /
user space jak i separacja procesów.
> Po prostu dlatego, że 386 to ma.
Ale 386 ma tez ochrone pamieci na poziomie pamieci stronicowania.
A na poziomie segmentow ... nie wymaga to jawnego poslugiwania sie
segmentami? A Linux chyba tego nie robi.
> 386 ma o wiele więcej rejestrów niż 8086 - tyle że nie ogólnego przenaczenia, tylko
specjalizowanych.
> ARM nie ma, więc ochronę pamięci w Linuxie robi się inaczej.
>
>>> I czy atrybuty segmentu pozwalają na przeprowadzenie danej operacji.
>>> Zapewne rodzaj cache dla danych jednego segmentu danego typu (pewnie tego
wskazywanego przez rejestry segmentowe) jest też w procesorze.
>> I tego się używa?
>
> Samo się używa, jak to cache.
> A atrybutów segmentu - oczywiście, do ochrony.
> Np. żeby nie pozwolić wykonać danych.
> Co i tak by mogło nie pójść z powodu cache, szczególnie w wieloprocesorowości.
>
>>> A samą pamięć wirtualną robimy oczywiście na stronicowaniu, nie trzeba wywalać
całych segmentów - lub kombinować z dzieleniem ich na kawałki.
>> I tego się używa?
>
> Stronicowania chyba jednak na pewno tak. Znowu piłeś?
J.