Windows: Что на самом деле происходит «под капотом»? | Shop Talk ЭП 83
Dave's Attic
0:00 / 0:00
Windows: Что на самом деле происходит «под капотом»? | Shop Talk ЭП 83
17 408 просмотров · 4 месяца назад
Dave's Attic
60,4 тыс. подписчиков
17 408 просмотров · 4 месяца назад
Дэйв и Глен исследуют, что на самом деле происходит под капотом современных компьютеров. От выделения памяти и функции malloc до страничных ошибок, кэшей, printf, BitLocker, сетевых API и сложности программного обеспечения — в этом эпизоде они углубляются в системы, которыми большинство людей пользуются каждый день, но редко понимают.
Попутно они отвечают на вопросы зрителей о низкоуровневом программировании, операционных системах, безопасности, компромиссах в проектировании и о том, почему программное обеспечение часто ведет себя неожиданным образом.
Темы включают:
Когда следует писать собственный распределитель памяти
Почему malloc — это не магия
Освобождение памяти дважды
Страничные ошибки против промахов кэша
Практическое применение printf
BitLocker и безопасность
Сетевое программирование с использованием select()
Внутреннее устройство операционных систем
Уроки проектирования из более ранних эпох вычислительной техники
«Shop Talk» основан на вопросах и комментариях зрителей из «Гаража Дэйва» и «Shop Talk». Оставляйте свои вопросы ниже, чтобы получить шанс быть представленными в одном из будущих эпизодов.
#ShopTalk #Программирование #РазработкаПрограммногоОбразования #Информатика #Windows
00:00 - Привет, я Дэйв
00:27 - В какой момент вы решаете написать собственный распределитель памяти или менеджер памяти вместо того, чтобы просто использовать malloc и free?
02:42 - Кто такой Malloc и что дает ему власть над памятью?
03:23 - Я всегда удивлялся, почему попытка освободить что-то дважды считается плохой.
04:15 - Использует ли диспетчер задач malloc, чтобы определить, сколько оперативной памяти используется?
05:21 - Почему Microsoft не выпускает версию Windows, которая НЕ обратно совместима?
06:56 - Что вы говорите пользователям, которые в ответ на каждую проблему Windows утверждают, что установка Linux решает проблемы Windows?
07:32 - Как API Windows эффективно управляет версиями ANSI и Unicode одного и того же метода API?
08:32 — Было бы полезно подробнее рассмотреть open/fopen с флагом append.
09:15 — Вы произносите GUID как GWID? А как произносится GUI? GWI вместо GOOY?
09:33 — Значит, вся эта логика встроена в бинарный файл моей программы, моим компилятором?
10:58 — Как этот эксплойт заставляет модуль TPM освободить ключ расшифровки без действительного пароля?
12:30 — Мне неизвестны приложения, где пользовательские данные хранятся в реестре?
13:35 — Как можно доверять системе, если для расшифровки ключа не нужно вводить пароль?
14:17 — Я понимаю, почему длина пути была ограничена в ранних версиях Windows, но почему это ограничение сохраняется до сих пор?
16:46 — Можете объяснить, почему при выходе из программы, написанной на ассемблере, выполнение функции занимает около 3 секунд?
17:48 — Мне всегда нравилась в Windows довольно успешная попытка Microsoft, или, если хотите, стремление, сохранить обратную совместимость.
18:32 — Почему API MS использовали соглашение о вызове Pascal в своё время?
19:24 — Какое место во всём этом занимают дескрипторы?
21:53 — Это демонстрирует, что Bitlocker никогда не может быть безопасным.
22:51 — Какие книги вы бы порекомендовали для изучения побитовой математики? Я помню, что «Hacker’s Delight» была интересной и немного непрактичной.
23:37 — Функция printf делает только то, что ей сказано, и не перепроверяет и не пытается угадать ваши намерения, довольно освобождающе, не правда ли?
24:43 — Была ли printf() первой функцией, реализующей динамическое количество аргументов в вызове функции?
25:26 — Как ни парадоксально, произнесение слова «ниббл» занимает столько же времени, сколько произнесение «полбайта» или «четыре бита», так зачем вообще использовать это слово?
26:07 — Если вы освобождаете память, и она просто возвращается распределителю памяти, почему так опасно трогать адрес, который вы только что освободили?
27:32 — Если malloc — это не магия, то почему это означает «магическое выделение»?
27:49 — Но что выделяет память для распределителя памяти?
28:39 — Могли бы вы рассказать больше о таких технических моментах в сжатом виде?
29:13 — Может кто-нибудь порекомендовать другие книги или веб-сайты, которые помогут укрепить знания о низкоуровневой памяти?
29:55 — Дейв, ты сказал, что развертывание цикла GUID может расширить код до такой степени, что это вызовет ошибку страничного доступа. Ты уверен, что не имел в виду промах кэша инструкций?
30:28 - Какое наиболее важное применение printf в современных ИТ?
31:31 - Реестр вещей? RoT? Серьезно? Я просто умираю со смеху от этого.
31:42 - Автозапуск был УЖАСНОЙ идеей!
33:06 - Дейв, как часто (гипотетически) к тебе обращалось АНБ с просьбой установить бэкдоры?
34:01 - Bitlocker — это то, что есть только у тех, кто знает, что он у них есть, или это есть у всех, независимо от того, знаю я об этом или нет?
34:32 - Как select() узнает, что нужно проснуться, когда что-то падает в ведро?
36:16 - У Бена возникла ошибка 404. Он отключил его? Можешь поделиться им со мной?
36:33 - Думаешь, про...