bgdev-free: : Някой да знае добър алгоритъм за четене на ред от текстов файл, но без използване на допълнителен буфер?
<img src="https://bgdev-free.asm32.info/images/title.svg" alt="Title img">
<h1>Най-големият и най-свободен форум за програмисти.</h1>
tag:bgdev-free.asm32.info,2020-07-21:Thread3712020-11-06T21:09:50Z| on Някой да знае добър алгоритъм за четене на ред от текстов файл, но без използване на допълнителен буфер?tag:bgdev-free.asm32.info,2020-07-21:Post178802020-11-06T21:09:50Z
<blockquote><header>synergie</header><blockquote><header>|</header><blockquote><header>bvbfan</header><p>Съмнявам се да си я чувал преди да се напише в темата, камо ли да си я ползвал, така че съсредоточи се към глупостите, които можеш ти, ако има такива.
</p></blockquote>
<p>Кое точно не съм чувал? Mmap? Казах ти, ориентирам се сравнително добре в кода на ядрото за управление на виртуалната памет. Та, знам не само какво прави linux/mm/mmap.c, но и доста голяма част от кода, който се вика когато има page fault.
</p>
<p>Та, да попитам пак, използва ли mmap допълнителна памет? Или не?
</p>
</blockquote>
<p>Чичка, ти не помниш в тема с 5 страници какво си писал, а си доста добре запознат с пейдж фоулт хендлъра.
</p></blockquote>
<p>Я, клюкарката пак се изсра. :)
</p>
<p>И все пак не виждам отговор: използва ли mmap допълнителна памет или не?</p>
|synergie on Някой да знае добър алгоритъм за четене на ред от текстов файл, но без използване на допълнителен буфер?tag:bgdev-free.asm32.info,2020-07-21:Post178792020-11-06T20:45:11Z
<blockquote><header>|</header><blockquote><header>bvbfan</header><p>Съмнявам се да си я чувал преди да се напише в темата, камо ли да си я ползвал, така че съсредоточи се към глупостите, които можеш ти, ако има такива.
</p></blockquote>
<p>Кое точно не съм чувал? Mmap? Казах ти, ориентирам се сравнително добре в кода на ядрото за управление на виртуалната памет. Та, знам не само какво прави linux/mm/mmap.c, но и доста голяма част от кода, който се вика когато има page fault.
</p>
<p>Та, да попитам пак, използва ли mmap допълнителна памет? Или не?
</p>
</blockquote>
<p>Чичка, ти не помниш в тема с 5 страници какво си писал, а си доста добре запознат с пейдж фоулт хендлъра.</p>
synergie| on Някой да знае добър алгоритъм за четене на ред от текстов файл, но без използване на допълнителен буфер?tag:bgdev-free.asm32.info,2020-07-21:Post178702020-11-06T18:07:56Z
<blockquote><header>bvbfan</header><p>Съмнявам се да си я чувал преди да се напише в темата, камо ли да си я ползвал, така че съсредоточи се към глупостите, които можеш ти, ако има такива.
</p></blockquote>
<p>Кое точно не съм чувал? Mmap? Казах ти, ориентирам се сравнително добре в кода на ядрото за управление на виртуалната памет. Та, знам не само какво прави linux/mm/mmap.c, но и доста голяма част от кода, който се вика когато има page fault.
</p>
<p>Та, да попитам пак, използва ли mmap допълнителна памет? Или не?
</p>
|bvbfan on Някой да знае добър алгоритъм за четене на ред от текстов файл, но без използване на допълнителен буфер?tag:bgdev-free.asm32.info,2020-07-21:Post178692020-11-06T18:04:58Z
<p>Съмнявам се да си я чувал преди да се напише в темата, камо ли да си я ползвал, така че съсредоточи се към глупостите, които можеш ти, ако има такива.</p>
bvbfan| on Някой да знае добър алгоритъм за четене на ред от текстов файл, но без използване на допълнителен буфер?tag:bgdev-free.asm32.info,2020-07-21:Post178682020-11-06T17:54:37Z
<p>Аз пак забравих, mmap използва ли допълнителна памет или не? :)
</p>
|| on Някой да знае добър алгоритъм за четене на ред от текстов файл, но без използване на допълнителен буфер?tag:bgdev-free.asm32.info,2020-07-21:Post175202020-11-03T15:10:25Z
<blockquote><header>bvbfan</header><p>Performance with MAP_POPULATE
<a href="https://www.usenix.org/sites/default/files/conference/protected-files/hotstorage17_slides_choi.pdf">pdf</a> madvise for paging. Но да има някакво копиране.
</p></blockquote>
<p>Та, използва ли mmap допълнителен буфер или не? :)</p>
|gat3way on Някой да знае добър алгоритъм за четене на ред от текстов файл, но без използване на допълнителен буфер?tag:bgdev-free.asm32.info,2020-07-21:Post170582020-10-27T18:47:26Z
<blockquote><header>bvbfan</header><p>Performance with MAP_POPULATE
<a href="https://www.usenix.org/sites/default/files/conference/protected-files/hotstorage17_slides_choi.pdf">pdf</a> madvise for paging. Но да има някакво копиране.
</p></blockquote>
<p>Това по никакъв начин не променя нещата обаче, същата история е, единствено копира малко повече наведнъж, за да намали page fault-овете.
</p>
<p>Ся като видях, и с лентите не става номера, наистина драйвера си алокира буфер и макар да се чете последователно защото лентата е char dev, реално се изчита наведнъж някаква условна единица, да я наречем "блок" и пак си се буферира.</p>
gat3waybvbfan on Някой да знае добър алгоритъм за четене на ред от текстов файл, но без използване на допълнителен буфер?tag:bgdev-free.asm32.info,2020-07-21:Post170312020-10-27T11:42:22Z
<p>Performance with MAP_POPULATE
<a href="https://www.usenix.org/sites/default/files/conference/protected-files/hotstorage17_slides_choi.pdf">pdf</a> madvise for paging. Но да има някакво копиране.</p>
bvbfanjohnfound on Някой да знае добър алгоритъм за четене на ред от текстов файл, но без използване на допълнителен буфер?tag:bgdev-free.asm32.info,2020-07-21:Post170152020-10-27T09:22:57Z
<p>Само да добавя, че в Unix/Linux "всичко е файл", от който може да трябва да се четат редове, но далеч не всичко може да се мапва в паметта.
</p>
<p>Впрочем, както и далеч не всичко може да се seek-ва назад.</p>
johnfoundgat3way on Някой да знае добър алгоритъм за четене на ред от текстов файл, но без използване на допълнителен буфер?tag:bgdev-free.asm32.info,2020-07-21:Post170142020-10-27T09:19:28Z
<p>Абе то може, но има нещо което се нарича demand paging и то е че когато прочетеш дори един байт от мапнатия файл се алокира физическа памет, онова се изчита от диска и се копира в нея. Като цяло "ама това е виртуална памет" нищо не означава, тя всичката памет на процесите е виртуална така или иначе, ако въпросът е "хаби ли се физическа памет когато се mmap-ва", то отговорът е "да, хаби се" - не незабавно, но колкото повече достъпваш от файла, толкова повече физическа памет се алокира. mmap-ването естествено може да води до огромни спестявания, но това е в случая когато няколко различни процеса мапват един и същ файл, тогава макар и на различни виртуални адреси им се мапва същата физическа памет и така се избягват разхищенията.</p>
gat3waybvbfan on Някой да знае добър алгоритъм за четене на ред от текстов файл, но без използване на допълнителен буфер?tag:bgdev-free.asm32.info,2020-07-21:Post170112020-10-27T06:40:45Z
<blockquote><header>|</header>
<p>Виж сега, смешник, разбирам че нямаш никаква идея как работи mmap. Но аз съм писал няколко файлови системи за Линукс и поназнайвам това, онова. Освен това, макар че не съм експерт по memory management-a на Линукс, се оправям сравнително добре в кода (това дето е в linux/mm).
</p>
<p>Ta, избягвай бълнуванията с какво имам общо и с какво не. :)
</p>
<p>Та, да се върнем на въпроса, mmap-нал си файла, получил си адрес. Четеш първия байт от този адрес. Какво се случва? :)
</p></blockquote>
<p>По-скоро ти не знаеш, прочети. Може да мапнеш файл, който в пъти по-голям от цялата ти памет, то това и идеята.</p>
bvbfanjohnfound on Някой да знае добър алгоритъм за четене на ред от текстов файл, но без използване на допълнителен буфер?tag:bgdev-free.asm32.info,2020-07-21:Post170092020-10-27T06:29:12Z
<blockquote><header>gat3way</header><p>Абе всъщност може като се замисля, ама от лентово устройство, там отзад наистина няма буфериране и може да четеш байт по байт.
</p></blockquote>
<p>Ние в момента говорим за операционната система, а не за буфера на хардуера. Какво пречи на драйвера да си завъди буфер и да си го използва? Пък и точно при лентовите устройства ако прочетеш байт, а след това след 2..3 секунди втори байт, то лентата вече ще е избягала напред. Тоест, някакво буфериране трябва да има...</p>
johnfoundgat3way on Някой да знае добър алгоритъм за четене на ред от текстов файл, но без използване на допълнителен буфер?tag:bgdev-free.asm32.info,2020-07-21:Post170082020-10-27T06:24:54Z
<p>Абе всъщност може като се замисля, ама от лентово устройство, там отзад наистина няма буфериране и може да четеш байт по байт.</p>
gat3wayДон Реба on Някой да знае добър алгоритъм за четене на ред от текстов файл, но без използване на допълнителен буфер?tag:bgdev-free.asm32.info,2020-07-21:Post170052020-10-27T06:14:41Z
<p>да, влизане в кърнъл спейс и тн. аз обаче не казах да четеш байт по байт, а само казвам че отзад имаш буфер със сигурност, така че ако просто ти си направиш подобен буфер, овърхеда ще е никакъв, и всъщност друго решение няма. размера на сектор е микроскопичен от гледна точка на съвременен компютър, не е като 80те години при сектор 4к, дето ако десет програми си заделят такъв буфер и ще заемеш голяма част от рама</p>
Дон Ребаjohnfound on Някой да знае добър алгоритъм за четене на ред от текстов файл, но без използване на допълнителен буфер?tag:bgdev-free.asm32.info,2020-07-21:Post170042020-10-27T05:24:38Z
<blockquote><header>Дон<u > </u>Реба</header><p>мен ми изглежда очевидно че няма решение,някакъв буфер все трябва, то и самата операционна система едва ли чете байт по байт, 100% изчита примерно един сектор дори да четеш един байт. така че предполагам ако четеш байт по байт овърхеда ти е викането на функцията само
</p></blockquote>
<p>За съжаление е малко по-сложно, защото четенето от файл е функция на операционната система. И да, овърхеда е само викане на функция, но системна функция. Което обикновено е много скъпа операция (но зависи и от операционната система).
</p>
<p>Затова и четенето на единични байтове е много бавно. Ако е за един байт няма проблеми, но да прочетеш цял файл така е прекалено бавно.
</p>
johnfoundДон Реба on Някой да знае добър алгоритъм за четене на ред от текстов файл, но без използване на допълнителен буфер?tag:bgdev-free.asm32.info,2020-07-21:Post170022020-10-27T05:02:08Z
<p>мен ми изглежда очевидно че няма решение,някакъв буфер все трябва, то и самата операционна система едва ли чете байт по байт, 100% изчита примерно един сектор дори да четеш един байт. така че предполагам ако четеш байт по байт овърхеда ти е викането на функцията само</p>
Дон Ребаsynergie on Някой да знае добър алгоритъм за четене на ред от текстов файл, но без използване на допълнителен буфер?tag:bgdev-free.asm32.info,2020-07-21:Post169642020-10-26T16:12:23Z
<blockquote><header>|</header><blockquote><header>bvbfan</header><p>Ти нямаш нищо общо с програмиране.
</p></blockquote>
<p>Виж сега, смешник, разбирам че нямаш никаква идея как работи mmap. Но аз съм писал няколко файлови системи за Линукс и поназнайвам това, онова. Освен това, макар че не съм експерт по memory management-a на Линукс, се оправям сравнително добре в кода (това дето е в linux/mm).
</p>
<p>Ta, избягвай бълнуванията с какво имам общо и с какво не. :)
</p>
<p>Та, да се върнем на въпроса, mmap-нал си файла, получил си адрес. Четеш първия байт от този адрес. Какво се случва? :)
</p></blockquote>
<p>Концентрирай се над отглеждането на домати</p>
synergiejohnfound on Някой да знае добър алгоритъм за четене на ред от текстов файл, но без използване на допълнителен буфер?tag:bgdev-free.asm32.info,2020-07-21:Post168672020-10-25T16:46:36Z
<blockquote><header>ФейкПрофил</header><p>Грешката ти е в това, че изпозлваш грешната абстракция и, че те интересува къде е позициониран файла. По-скоро ти трябва нещо като <a href="https://docs.oracle.com/javase/7/docs/api/java/io/BufferedReader.html">BufferedReader</a>, който като един истински асемблерджия, ще трябва сам да си асемблираш.
</p></blockquote>
<p>Е-е-е, то като минеш на ОО парадигма, всякакви такива трикове се правят просто. Можеш да си пазиш контекста и буфери и всичко.
</p>
<p>Естествено и аз мога да го направя с ООП. Но честно казано, далеч не съм сигурен, че точно в този случай ескалацията на абстракциите е оправдана. Просто защото смятам, че простите функции, трябва да се имплементират просто.</p>
johnfoundФейкПрофил on Някой да знае добър алгоритъм за четене на ред от текстов файл, но без използване на допълнителен буфер?tag:bgdev-free.asm32.info,2020-07-21:Post168652020-10-25T16:40:11Z
<blockquote><header></header>
<p>Идеята е – имаме манипулатор на отворен файл. Функцията чете от текущото място във файла, до края на реда и връща прочетения ред. Файла остава позициониран на началото на следващия ред.
</p>
</blockquote>
<p>Грешката ти е в това, че изпозлваш грешната абстракция и, че те интересува къде е позициониран файла. По-скоро ти трябва нещо като <a href="https://docs.oracle.com/javase/7/docs/api/java/io/BufferedReader.html">BufferedReader</a>, който като един истински асемблерджия, ще трябва сам да си асемблираш. </p>
ФейкПрофил| on Някой да знае добър алгоритъм за четене на ред от текстов файл, но без използване на допълнителен буфер?tag:bgdev-free.asm32.info,2020-07-21:Post168532020-10-25T15:03:27Z
<blockquote><header>bvbfan</header><p>Ти нямаш нищо общо с програмиране.
</p></blockquote>
<p>Виж сега, смешник, разбирам че нямаш никаква идея как работи mmap. Но аз съм писал няколко файлови системи за Линукс и поназнайвам това, онова. Освен това, макар че не съм експерт по memory management-a на Линукс, се оправям сравнително добре в кода (това дето е в linux/mm).
</p>
<p>Ta, избягвай бълнуванията с какво имам общо и с какво не. :)
</p>
<p>Та, да се върнем на въпроса, mmap-нал си файла, получил си адрес. Четеш първия байт от този адрес. Какво се случва? :)</p>
|