- Milyen billentyűzetet vegyek?
- Vezetékes FEJhallgatók
- AMD vs. INTEL vs. NVIDIA
- Milyen asztali (teljes vagy fél-) gépet vegyek?
- A Windows 11 lett az úr az asztali PC-k piacán
- Milyen monitort vegyek?
- Amlogic S905, S912 processzoros készülékek
- Kompakt vízhűtés
- Analóg fényképezés
- LCD, plazma és projektoros TV-k hibái
Aktív témák
-
bambano
titán
Linuxban is lehet stackre programot rakni, mert egy-két dolgot másképp nem tud lefordítani a gcc (trampoline, vagy minek hívják, de annyira nem izgatott, hogy megjegyezzem).
Az mmap függvénynek meg meg lehet adni, hogy hogyan másolja be a lapot, tud readonly-t. Ennyi. Nem bonyolítják túl.
Az, hogy a linux lapoz olvasható lapokat is, még nem mond semmit arról, hogy hova.
open("/lib/tls/libc.so.6", O_RDONLY) = 3
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\240O\1"..., 512) = 512
fstat64(3, {st_mode=S_IFREG|0644, st_size=1241392, ...}) = 0
mmap2(NULL, 1251484, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb7de9000
mmap2(0xb7f11000, 28672, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x127) = 0xb7f11000
mmap2(0xb7f18000, 10396, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0xb7f18000
close(3) = 0 -
bambano
titán
válasz
#95904256 #85 üzenetére
Ezzel már offtopic vagyok, ha jól sejtem... sorry.
A kérdés nem az, hogy a legrégebbi vagy a legritkábban használt lapokat teszi-e ki a swap-re, hanem hogy egyáltalán kitesz-e bármit is.
A linux kernel úgy gondolja, hogy annak nulla értelme van, hogy egy programkódból két teljesen azonos szektortartalom keletkezzen (hogy két példányban legyen a vinyón, egyik példány az eredeti helye, ahonnan betöltődött, a másik példány a swap), ezért a linux egyáltalán nem pakol ki ilyet a swap-re.
Egész egyszerűen kihajítja a fenébe, majd ha megint kell, akkor betölti az eredeti helyéről.
Tehát konkrétan:
- nem teljesen értelmes oprendszer: betölti diszkről a programkódot és a libeket, ezeknek foglal egy szép nagy adag ramot, és összelinkeli. Majd ha helyhiány van, akkor kipakolgat a swapre (amit helyesebb lenne page-nak nevezni, mert ez nem swappelés), ha megint van hely és kell a lap, visszatölt a swapről.- linux: pontosan tudja, hogy a futtatni való program és a szükséges libek melyik része az, amit readonly módban is be lehet tölteni, melyik része az, ami változik (pl. a linkelési infók változhatnak, de a lib nagy része nem), és azt csinálja, hogy a nem változó részeket közvetlenül összerendeli a ram és a diszk között. A változó részeket meg összerakja ugyanúgy, ahogy mások. Ha memóriát kell felszabadítani, mivel tudja, hogy mely lapok nem változhattak, tudja, hogy pontosan ugyanezen lapok hol laktak eredetileg a diszken, ezért ezeket a lapokat nem vési ki a swapre, hanem kihajítja a kukába, és legközelebb nem a swapről, hanem az eredeti helyéről tölti vissza. Így spórol a swapen levő hellyel meg a swap írási területekkel is.
A diszk-memória összerendelés az majdnem ugyanaz, mint az fread(), de mmap()-nek hívják. Egyes helyeken az fread is lehet mmap.
-
bambano
titán
A linux bemappeli a diszkeken levő libeket, ami majdnem ugyanaz, mintha beolvasná. Viszont kitolni nem tolja ki, mert eredetileg is diszkről szedte be, minek tolná ki vissza a libet, ami nem módosuló kódszegmens?
A windowsról nyilvánvalóan levezethető következtetésemet most hagyjuk
-
bambano
titán
Én elhiszem, hogy látványos, meg minden, azt meg láttam a saját szememmel, hogy mi minden van már pl. jávában nagyvállalati cuccokhoz. Ettől még az nekem bonyolult.
A kattidekattoda cuccokkal meg az a baj, hogy lehet kattni, de egyszer beleszaladsz valamibe, amit a vizuálisagymenés nem úgy csinál, ahogy hitted róla és akkor finító van.
-
bambano
titán
tanulási görbe. Hogy pl. c-ben vagy pascalban az első program megírásához nem kell olyan sokat tanulni, ezzel szemben ahhoz, hogy az első tisztességes jsp vagy java vagy j2ee programodat megírd, több tízezer oldal specifikációt illene rendesen elolvasni. Ez utóbbi probléma már a c++-os komponens könyvtárak és a c# esetén is fennáll szerintem.
És hiába a mindenféle kattintós vizuálbaromság, akkor is sok-sok hónap kemény munka kell ahhoz, hogy az első komoly programod elkészüljön.
Elfogadom, ez így nem teljesen oop, hanem oop alapú programozás + oop eszközrendszerek, de ettől még ez a véleményem.
Aktív témák
Hirdetés
- Apple iPhone 13 Pro Max 128GB, Kártyafüggetlen, 1 Év Garanciával
- új bontatlan Apple Watch Series SE 2.gen GPS 40mm csillagfény alumíniumtok Apple
- új bontatlan Apple Watch Series 10 GPS 46mm kozmoszfekete alumíniumtok fekete Apple
- JBL Bar 800 Pro 5.1.2 Hangprojektor
- új bontatlan Apple Watch Ultra 2 GPS + Cellular 49 mm-es titántok 1 év garancia
- ÁRGARANCIA! Épített KomPhone i7 14700KF 32/64GB RAM RTX 5090 32GB GAMER PC termékbeszámítással
- LG 55C4 - 48" OLED evo - 4K 144Hz - 0.1ms - NVIDIA G-Sync - FreeSync - HDMI 2.1 - A9 Gen7 CPU
- BESZÁMÍTÁS! ASRock B460M i5 10400 16GB DDR4 512GB SSD RTX 2060 Super 8GB Rampage SHIVA TT 500W
- Xiaomi Redmi Note 13 5G 256GB, Kártyafüggetlen, 1 Év Garanciával
- Samsung Galaxy S21 Ultra , 12GB , 128 GB , Kártyafüggetlen
Állásajánlatok
Cég: CAMERA-PRO Hungary Kft
Város: Budapest
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest