Компьютерные системы: перспектива программиста (глобальное издание)
Полное погружение в то, как компьютерные системы выполняют программы и хранят информацию. Этот курс закрывает разрыв между высоким уровнем программирования и базовым аппаратным обеспечением, охватывая представление на машинном уровне, архитектуру процессора, иерархию памяти и параллельное программирование.
Обзор курса
Краткое содержание
Полное углубление в то, как компьютерные системы выполняют программы и хранят информацию. Этот курс мостит разрыв между высокоуровневым программированием и лежащим в основе аппаратным обеспечением, охватывая машинное представление, архитектуру процессора, иерархию памяти и параллельное программирование.
Освойте искусство системного программирования, поняв интерфейс аппаратное-программное обеспечение.
Автор: Рэндал Э. Брайант, Дэвид Р. О’Холларон
Благодарности: Поддержка со стороны студентов и преподавателей курса 15-213 в Карнеги-Меллонском университете. Благодарности включают вклады Манасы С. и Мохита Тахилани.
Цели обучения
- Определить, как информация представляется с помощью битов и контекста внутри системы.
- Протрассировать четыре этапа компиляционной системы от исходного кода до исполняемого файла.
- Описать организационную структуру аппаратного обеспечения и иерархическую природу устройств хранения.
- Преобразовывать между десятичной, двоичной и шестнадцатеричной системами счисления и объяснить машинно-уровневое адресование (порядок байтов).
- Выполнять побитовые и логические операции на языке С и предсказывать результаты арифметических сдвигов.
- Анализировать кодировки целых чисел для выявления потенциальных уязвимостей переполнения и ошибок приведения типов.
- Анализировать соответствие между конструкциями на С (циклы, ветвления, процедуры) и инструкциями на языке ассемблера x86-64.
- Разбирать стек времени выполнения для объяснения передачи параметров, хранения локальных переменных и управления рекурсивными вызовами.
- Оценивать распределение памяти для гетерогенных структур данных и применять правила выравнивания для расчета общих требований к хранилищу.
- Определять видимое состояние программиста для Y86-64 и кодировать/декодировать инструкции в последовательности байтов.