LINUX.ORG.RU

Актуальная версия статьи «Что каждый программист должен знать о памяти»?

 


1

2

Доброго времени суток!

Народ, подскажите, есть статья What every programmer should know about memory, Part 1 и тред Что каждый программист должен знать о памяти, всё это от 2007-ого года. В предисловии статьи рекомендуют уделить большое внимание актуальности, т.к. технологии и подходы меняются. Вопрос: актуальная ли данная статья сейчас? И вопрос вдогонку: что можно почитать (обзорный + средний уровень) по вопросу о том, что программисты должны знать о памяти сейчас?

Для какого-нибудь gamedev - актуально. Для php/js/java/.net/etc макакинга - нет.

crutch_master ★★★★★
()

На cpprussia был интересный доклад на эту тему «Память идеальная абстракция». Как минимум понятие о глубине на которую можно погрузиться - даёт.

pon4ik ★★★★★
()

«Что каждый программист должен знать о памяти»?

То что у каждого юзера её петабайты. </thread>

StReLoK ☆☆
()

актуальная ли данная статья сейчас?

Вполне.

что можно почитать (обзорный + средний уровень) по вопросу о том, что программисты должны знать о памяти сейчас?

Сабжевую статью + описания эксплойтов вроде Rowhammer.

tailgunner ★★★★★
()

Вдогонку удаленным сообщениям:

Простому программисту, который пишет прикладухи и звезд с неба не хватает про память нужно знать что она может быть узким местом в системе, какие средства в его среде исполнения работают с памятью и какой основной инструментарий есть для отладки работы с памятью в этой среде. Так как на ограничения он скорее всего наступит. В отдельных задачах с высокой нагрузкой на память бывает приходится копнуть поглубже и простому прикладному программисту. Без этих базовых знаний невозможно проектировать софт, применять алгоритмы, делать работающий софт в рамках ограничений железа, денег, VPS.

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

в рамках ограничений железа, денег, VPS.

А какие такие есть ограничения у VPS, которые не являются ни ограничениями железа, ни ограничениями софта?

tailgunner ★★★★★
()

Читай о том, как ядро ОС работает с памятью, если не пишешь под голое железо.

Deleted
()
Ответ на: комментарий от meliafaro

программиста, *не* web-программиста

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

Да нет статей или они все неполные / старые. Читай сразу код ядра линукс и книги по его устройству (O'Reilly). Там все довольно таки понятно.

Deleted
()
Ответ на: комментарий от tailgunner

Ну скорее в качестве примера такой ограниченной системы вне рамок embedded.

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

Веб-программисты тоже разные есть. Если веб-программист = клепатель html с редкими onClick то нет, а если с javascript да еще с ярковыраженным frontend/backend и не колхозом - то вполне вероятно что да.

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

Еще на VPS модель работы с памятью может быть организована с особенностями, так что тонкости именно для VPS таки есть - например иногда память ограничивают по запросам страниц, иногда - по фактическому использованию, иногда есть только жесткий лимит, иногда - мягкий, и во втором случае можно быстро много подожрать, быстро отработать и резко всё освободить, потом подождать когда планировщик VPS очухается, и процесс повторить. И таких нюансов при использовании VPS бывает много разных. Это позволяет экономить деньги сидя на разумно минимальных планах, очень бывает критично когда VPS много.

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

есть мнение, что сейчас лучше сразу учить какой-нибудь rust на опережение, а о си иметь представление уже по-ходу дела.

так что да, даже K&R

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

Читай сразу код ядра линукс и книги по его устройству (O'Reilly). Там все довольно таки понятно.

И в каких книгах по устройству ядра Linux можно узнать об архитектуре физической памяти (не виртуальной) и устройстве физических кэшей?

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

Это ограничения, внешние по отношению к VPS и на которые пользователь влиять не может или может лишь косвенно. Это ограничения софта, но скорее их можно назвать «ограничения платформы».

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

Например, https://codingrelic.geekhold.com/2011/08/last-week-andy-firth-published-demis..., https://arstechnica.com/gadgets/2002/07/caching, https://people.freebsd.org/~lstewart/articles/cache-performance-x86-2009.pdf, http://d3s.mff.cuni.cz/publications/download/hocko-sipew10.pdf

Но глубокое понимание таких вещей мало кому нужно. Почти всем хватит простого «локальность ссылок решает».

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

Благодарю за ссылки! Ознакомлюсь!

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

последний раз, когда его ковырял, знание rust даже в компиляторе rust до конца не позволяло раозобраться: llvm-то на на С написан, хотя может уже и мигрировали...

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

Диды тебе дали virtual memory, что тебе не так теперь.

anonymous
()

Программист должен знать, что такое стек, что такое куча и как этим пользоваться. Как используется стек при вызове процедур. Какие области памяти доступны процессу, как операционная система ими управляет. Устройство всяких триггеров должен знать инженер-схематехник, а программисту это не нужно.

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

я скорее о том, что если есть желание что-то изучать по книге, то имеет смысл делать это на некоторое опережение, т.к. даже самые широко распространённые и живучие технологии постепенно всё же устаревают.

понятно, что «ничего старше пяти лет» это очень сильное приближение, но смысл имеет.

по тому же си есть более современная «Learn C the hard way» или всякие интерактивные туториалы типа https://www.learn-c.org/ , огромное количество онлайн-курсов и т.д. При всём уважении к K&R, особого смысла в ней сегодня действительно нет, так же как и в большинстве старых учебников.

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

Ты видимо статью дальше первого раздела не прочитал :)

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

Вот так все сидят в своих слоях абстракции, а вместо общей архитектуры выходит дырявый глючный и тормозный франкенштейн.

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