LINUX.ORG.RU

На что способна чистая консоль

 , ,


2

4

Привет, ЛОР. :)

Время от времени натыкаюсь на споры @saahriktu и наезажающих на него. Время от времени хочу получить линукс и без иксов, и без вейланда (да-да, это специфический кейс, не для всех случаев жизни и постоянно я этим пользоваться не буду). Но вот вопрос — имеет ли оно вообще сегодня смысл…

  1. У современных видеокарт (последние лет 15 и до нашего дня) вообще остались «чисто текстовые» режимы, или они эмулируются графикой? Вот раньше драйвер мог шлёпнуть байт в видеопамять и получить текст. Сейчас такое работает?

  2. Если таковые имеются — есть ли что-нибудь побольше и покрасивее, чем 80x25?

Вот у меня в ноуте стоит AMD Radeon HD 7650M (не самая современная карта, да, но тем не менее), что из неё по этой части можно выжать?

★★★★★
Ответ на: комментарий от fsb4000

А с чего ты взял что причина именно в оверкомите?
Исчерпать память можно и другими средствами.

Причина описанного мной в динамическом выделении памяти, когда процесс берёт ровно столько памяти, сколько ему надо на текущий момент и когда для продолжения работы ему нужна дополнительная память то он уходит в цикл ожидания её выделения, которого не будет никогда, ибо и все другие процессы с динамическим выделением памяти стоят по этой же причине, а вот статические процессы продолжают работу.
Более того, в сумме нужный объём ОЗУ даже может быть и свободен, но память фрагментирована и по этому выделить единый блок нужного размера нельзя_

И именно по этому когда весь гуй стоит я и могу в терминале запустить ‘killall -9 prog_name’.о

torvn77 ★★★★★
()
Ответ на: комментарий от torvn77

и когда для продолжения работы ему нужна дополнительная память то он уходит в цикл ожидания её выделения

Это где такое? Только при overcommit. Никто никакие циклы не делает. Если память не удалось выделить, то большинство программ завершается. Показывай где там какие-то циклы ожидания.

fsb4000 ★★★★★
()
Ответ на: комментарий от fsb4000

Ладно, позорище программисткое.

Вот грузишь ты небольшую програмку которая скажем в совокупности занимает в озу 5кБ. Она там в цикле читает /dev/stty1 и когда там появляется последрвательность fuck она выводит окно с надписью «Fuck message прявился!» и на этом завершает работу.
Вроде как всё просто, но вот на порт пришёл этот фак и надо создавать окно, а там, id окна, координаты окна, размер окна, биты статуса окна, копия текста сообщения, кординаты и статусы кнопки ОК, которая по сути отдельное окно, и куча всего что я не знаю, да и нет смысла перечислять и вишенкой к чему будет буфер в котром всё это окно отрисовывается и всё это занимает явно не один десяток килобайт.

torvn77 ★★★★★
()
Последнее исправление: torvn77 (всего исправлений: 1)
Ответ на: комментарий от torvn77

Да хоть 10 терабайт, где циклы ожидания? Программа требует ресурсов для создания окна, если их нет, то всё, хана. Программа умирает.

fsb4000 ★★★★★
()
Ответ на: комментарий от fsb4000

Смерть программы тоже требует выделение ОЗУ, если только это не kill -9

torvn77 ★★★★★
()
Ответ на: комментарий от torvn77

А с чего ты взял что причина именно в оверкомите?

Overcommit - это когда программе выделяется больше памяти чем физически доступно (ОЗУ + файл подкачки) и если программа обратится к не выделенной памяти, а выделять не от куда, то будет плохо. В Windows и Haiku нет overcommit и ситуация нехватки памяти обрабатывается лучше.

Более того, в сумме нужный объём ОЗУ даже может быть и свободен, но память фрагментирована и по этому выделить единый блок нужного размера нельзя

Память выделяется страницами (4096 байт) и транслируется с физических адресов на виртуальные, так что фрагментация физической памяти не имеет значения.

X512 ★★★★★
()
Ответ на: комментарий от X512

Ну ХЗ, то что я пишу это то, как воспринимается комп при рулении в состоянии острой нехватки памяти и интенсивном гудении вентиляторов.

Overcommit

Что мешает не делать этот оверкоммит, а просто в рамках динамического выделения ОЗУ поросить выделит дополнительную память, потому де что она стала нужна?

torvn77 ★★★★★
()
Последнее исправление: torvn77 (всего исправлений: 1)
Ответ на: комментарий от torvn77

Что мешает не делать этот оверкоммит

Кривые руки разработчиков программ и реализации malloc в libc. Многие кривые программы выделяют много памяти которую потом не используют. В Musl сейчас делают нормальную реализацию malloc (https://github.com/richfelker/mallocng-draft), которая не выделяет память впустую и работает также быстро как актуальные реализации.

X512 ★★★★★
()
Последнее исправление: X512 (всего исправлений: 1)
Ответ на: комментарий от X512

Дело не в нерациональном использовании памяти, а в том что вся совокупность запущенных программ и загруженных в ОЗУ данных превысила некоторый лимит.

torvn77 ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.