Ищу хорошую книгу или серию статей, которая описала бы различные нюансы работы с памятью в C++ (в каких-то аспектах язык может не иметь значения, но ориентируюсь именно на этот язык программирования). Хотелось бы знать как "под капотом" работает распределение памяти, хранение объектов и данных в памяти.
Описание вопроса довольно расплывчатое. Привожу пример вопросов, который меня интересует:
Когда вызывается new/delete как программа/ОС хранит информацию о выделенные участках памяти. Как виртуальное адресное пространство соотносится с реальным адресным пространством.
Что из себя представляет класс в памяти. А если класс наследуется от двух других классов с виртуальными функциями.
Exception-ы в конструкторах/деcтрукторах и особенности для многопоточных приложений. Как реализуется Exception на низком уровне.
Оптимизация выделения памяти. Собственный аллокатор памяти.
Создание/удаление объектов в программе с несколькими модулями.
Возможно эти вопросы будут отражены в разных книгах, буду рад любым. Насчёт специфики ОС и разных компиляторов: интересны любые варианты.
Ответ
Про механизмы распределения памяти, потоки и межпроцессную/межпоточную синхронизацию нужно читать книги об устройстве операционных систем. Можно порекомендовать:
Таненбаум, Бос. Современные операционные системы
Дейтел Х.М. Операционные системы. Том 1. Основы и принципы.
Таненбаум Э.С., Вудхалл А.С. Операционные системы. Разработка и реализация
Описание реализации принципов работы операционных систем можно почитать в Лав. Ядро Linux: описание процесса разработки и Labrosse. µC/OS-II:
The Real-Time Kernel
Об алгоритмах распределения памяти рассказывается также в Ахо, Хопкрофт, Ульман. Структуры данных и алгоритмы
Написание своих распределителей памяти обсуждается в Джосаттис. Стандартная библиотека C++: справочное руководство. Также этот вопрос затронут в Керниган, Ритчи. Язык программирования C
Разработке многопоточных приложений на C++11 посвящена книга Уильямс. Параллельное программирование на С++ в действии
Еще есть книга о "внутреннем устройстве" C++: Lippman, Inside the C++ Object Model. Она довольно старая - возможно там описаны не все интересующие темы.
Комментариев нет:
Отправить комментарий