Устройство где хранятся программы для первоначального запуска компьютера называется
Этапы загрузки операционных систем
Давным-давно, когда я был маленьким работал в институтской лаборатории на большом компьютере СМ-3 (что-то вроде знаменитой PDP-11), bootstrapping (загрузка) ЭВМ выглядела так. В фотосчитыватель заправлялась коротенькая бумажная перфолента с пробитой на ней программой начальной загрузки, запускался процесс считывания, а дальше … как повезет.
Дело в том, что бумажная ленточка постепенно изнашивалась, начинала плохо читаться, и ЭВМ могла с первого раза «не завестись». В этом случае процесс нужно было повторять, порой несколько раз, до победного конца. Когда ленточка окончательно выходила из строя и машина никак не хотела «оживать», приходилось временно вводить программу начальной загрузки вручную при помощи расположенных на передней панели переключателей. Тут, главное, было не торопиться и не делать ошибок.
В современных компьютерах процесс загрузки большей частью автоматизирован, однако это не означает, что он не заслуживает того, чтобы с ним познакомиться.
Основные определения и этапы загрузки операционной системы
Включение компьютера, POST, BootMonitor
Начальный этап загрузки операционной системы после включения компьютера начинается в BIOS (Basic Input/Output System — базовая система ввода-вывода). В настройках BIOS мы указываем загрузочное устройство, или ряд загрузочных устройств в порядке их приоритета. Возможны различные варианты загрузки и их комбинации: с жесткого диска, CD/DVD – диска, USB-flash и другие.
Сразу после прохождения POST (Power-On Self-Test — самотестирование после включения) BIOS компьютера начнет поочередно перебирать указанные загрузочные устройства до тех пор, пока на одном из них не найдет подходящую специальную запись, в которой содержится информация о дальнейших действиях.
Загрузчик 1-го уровня. Master Boot Record
Master Boot Record — главная загрузочная запись, расположена в первых физических секторах загрузочных устройств хранения. Она содержит таблицу разделов (Partition Table) и исполняемый код.
Главной задачей программы, записанной в MBR, является поиск активного системного раздела диска и передача управления его загрузочному сектору. Таким образом, эту стадию можно назвать подготовительной, в силу того, что непосредственно загрузки самой ОС еще не происходит.
Системным принято называть раздел диска (устройства хранения) на котором расположены файлы операционной системы, отвечающие за процесс загрузки ОС (сама операционная система может размещаться в другом разделе). В принципе, системных разделов может быть несколько, поэтому один из них отмечается как активный. Именно его ищет программа, загруженная с MBR.
Загрузчик 2-го уровня. Partition Boot Sector
Следующим этапом загрузки компьютера является передача управления исполняемому коду, записанному в PBS (Partition Boot Sector — загрузочный сектор активного раздела). PBS расположен в первом секторе (секторах) соответствующего раздела диска. В коде PBS прописано имя файла загрузчика операционной системы, которому и передается управление на этом этапе.
Начальный этап загрузки операционной системы. Менеджер загрузки ОС
Первоначально в Linux загрузчиком являлся LILO (Linux Loader). В силу имевшихся в нем недостатков, главным из которых была неспособность понимать используемые в Linux файловые системы, позднее начал использоваться загрузчик GRUB (GRand Unified Bootloader) в котором недостатки LILO были исправлены.
Если речь идет о версиях Windows до Vista, например, Windows XP, то будет загружен Ntldr. Он, в свою очередь, считывает информацию из текстового файла Boot.ini, в котором записана информация об установленных операционных системах.
Загрузка ядра операционной системы
Завершающим этапом загрузки операционной системы является загрузка ядра ОС и передача ему управления.
Видимо Microsoft как то узнала об этом случае и в следующей версии своей ОС решила припрятать файлы загрузчика получше.
Особенности загрузки операционных систем Windows Vista / 7 / 8
В Windows Vista или Windows 7 / 8 диспетчер загрузки называется Bootmgr. Он читает список установленных операционных систем не из простого текстового файла, коим является boot.ini, а из системного хранилища BCD (Boot Configuration Data), доступ к которому осуществляется посредством специальной утилиты bcdedit.exe .
Но это еще не все. Откроем “Управление компьютером” –> “Управление дисками” >
Процесс стандартной инсталляции операционной системы Windows Vista / 7 / 8 создает в начале диска дополнительный раздел «Зарезервировано системой». Ему не присваивается буква диска, благодаря чему, если не сделать дополнительных шагов, и сам раздел и его содержимое будут скрыты от пользователя. Этот основной раздел имеет статус «Системный» и «Активный» и, следовательно, удалить его тоже нельзя.
В Windows 7 размер такого раздела составляет 100 МБ, из которых занято около 30 МБ, в Windows 8 – уже 350 МБ, причем занято из них 105 МБ. Такая разница объясняется тем, что в Windows 8 на этот раздел перенесена папка “Recovery”.
Посмотрим содержимое раздела «Зарезервировано системой». Для этого назначим ему букву диска, например, «W» в “Управление дисками”. Дополнительно откроем «Панель управления» –> «Параметры папок» и на вкладке «Вид» снимем галку с «Скрывать защищенные системные файлы» и поставим отметку на «Показывать скрытые файлы, папки и диски».
Если в системе установлен файловый менеджер FAR Manager, то для просмотра можно воспользоваться им и не заниматься настройкой видимости скрытых файлов.
Так выглядит содержимое раздела «Зарезервировано системой» в Windows 8 >
Как и ожидалось, в корне раздела мы видим загрузчик Bootmgr.
А так выглядит часть содержимого папки «Boot» >
В папке мы находим базу хранилища данных конфигурации загрузки BCD и сопутствующие ей папки с языковыми файлами и файлами шрифтов.
Для полноты картины осталось сказать о том, какой раздел называется загрузочным. Ответ уже показан на картинке с томами Windows 7. Очевидно, что это раздел, на котором находятся все основные файлы операционной системы.
Ну что же, запомнить названия разделов диска очень легко по принципу «всё наоборот» — на системном нет системы (операционной), но расположен загрузчик третьего уровня, на загрузочном как раз отсутствует загрузчик, но находится сама система . Естественно, эта «запоминалка» работает только тогда, когда есть несколько разделов. Если раздел один, то он может быть сразу системным, активным и загрузочным.
Главной задачей загрузчика 3-го уровня, в роли которого выступает, в зависимости от типа ОС, Bootmgr, Ntldr или GRUB, является чтение с загрузочного диска и загрузка ядра операционной системы. Кроме того, в случае множественной загрузки, когда на компьютере установлено несколько операционных систем, загрузчик 3-го уровня позволяет выбирать нужную при каждом запуске компьютера.
Классической ошибкой, которой Microsoft посвятила отдельную статью, является установка Windows XP после Windows Vista / 7 /8. Установщик Windows XP помечает свой раздел как активный, после чего, во время загрузки, MBR передает управление PBS этого раздела а он, в свою очередь, — Ntldr. Загрузчик Windows XP ничего не знает о более поздних версиях операционных систем Windows и их загрузка становится невозможной. Лечится достаточно легко, но неискушенного пользователя такая ситуация может поставить в тупик.
Добавить к этому практически нечего и можно переходить непосредственно к редактированию загрузочного меню. Начнем с загрузочного меню Windows.
Для включения практически любого компьютера используется кнопка «Power» («Питание»), расположенная на лицевой части его корпуса. Корректное выключение компьютера производится из операционной системы, хотя можно так же воспользоваться этой кнопкой. Так же кнопка «Power» поможет произвести экстренное выключение в случае «зависания» компьютера.
Рядом с кнопкой включения на системном блоке, часто располагается еще одна кнопка, более маленького размера. Называется она «Reset» («Перезапуск») и служит для аварийной перезагрузки компьютера без выключения питания. На ноутбуках данная кнопка отсутствует.
Монитор имеет собственную кнопку включения и выключения питания. Правда, включить его достаточно лишь в первый раз или после полного отключения электричества. В дальнейшем при включении компьютера, монитор будет включаться автоматически, а при его выключении, автоматически переходить в «спящий режим» (выключаться).
На большинстве компьютеров, после успешной проверки его компонентов, выводится на экран сводная таблица, содержащая информацию о конфигурации системы. Из нее можно узнать о типе и характеристиках установленных процессора, памяти, жесткого диска и прочих устройствах вашего ПК.
Правда, вся эта информация довольно быстро сменяет друг друга на экране и что бы успеть ее увидеть , можно временно приостановить загрузку компьютера с помощью клавиши Pause/Break. Нажмите ее в нужный момент и бегущие строки остановятся. Для возобновления загрузки ПК нажмите любую другую клавишу.
Итак, если аппаратная составляющая вашего компьютера в порядке и средства самотестирования не выявили никаких проблем, то далее начинается непосредственно процесс загрузки операционной системы. В течение некоторого времени в оперативную память и на жесткий диск загружаются самые важные компоненты ОС:
- Ядро, состоящее из комбинации программных и конфигурационных файлов;
- Драйверы, отвечающие за подключение к системе и корректную работу различных устройств;
- Динамические библиотеки, использующиеся разными программами для выполнения основных операций в системе;
- Графическая оболочка (пользовательский интерфейс), то есть, то, что вы будете видеть на экране монитора во время работы с ОС.
Пользователи же в этот момент наблюдают на экране монитора стартовую заставку той операционной системы, которая установлена на вашем компьютере.
Наконец перед вами должен появиться основной экран ОС или так называемый рабочий стол. Еще какое-то непродолжительное время может понадобиться системе для загрузки вспомогательных приложений, например антивируса. После этого экран «успокоится» и на этом загрузку системы можно считать законченной, а компьютер готовым к работе.
В информатике начальной загрузкой называется сложный и многошаговый процесс запуска компьютера. Загрузочная последовательность — это последовательность действий, которые должен выполнить компьютер для запуска операционной системы.
Содержание
Начальная загрузка
Большинство компьютерных систем могут исполнять только команды, находящиеся в оперативной памяти компьютера, в то время как современные операционные системы в большинстве случаев хранятся на жёстких дисках, загрузочных CD-ROM, USB дисках или в локальной сети.
После включения компьютера в его оперативной памяти нет операционной системы. Само по себе, без операционной системы, аппаратное обеспечение компьютера не может выполнять сложные действия, такие как, например, загрузку программы в память. Таким образом мы сталкиваемся с парадоксом, который кажется неразрешимым: для того, чтобы загрузить операционную систему в память, мы уже должны иметь операционную систему в памяти.
Решением данного парадокса является использование специальной маленькой компьютерной программы, называемой начальным загрузчиком, или BIOS (Basic Input/Output System). Эта программа не обладает всей функциональностью операционной системы, но её достаточно для того, чтобы загрузить другую программу, которая будет загружать операционную систему. Часто используется многоуровневая загрузка, в которой несколько небольших программ вызывают друг друга до тех пор, пока одна из них не загрузит операционную систему.
В современных компьютерах процесс начальной загрузки начинается с выполнения процессором команд, расположенных в постоянной памяти (например на IBM PC — команд BIOS), начиная с предопределённого адреса (процессор делает это после перезагрузки без какой бы то ни было помощи). Данное программное обеспечение может обнаруживать устройства, подходящие для загрузки, и загружать со специального раздела выбранного устройства (чаще всего загрузочного сектора данного устройства) загрузчик ОС.
Начальные загрузчики должны соответствовать специфическим ограничениям, особенно это касается объёма. Например, на IBM PC загрузчик первого уровня должен помещаться в первых 446 байт главной загрузочной записи, оставив место для 64 байт таблицы разделов и 2 байта для сигнатуры AA55, необходимой для того, чтобы BIOS выявил сам начальный загрузчик.
История
Первые компьютеры имели набор переключателей, которые позволяли оператору размещать начальный загрузчик в памяти до запуска процессора. Затем данный загрузчик считывал операционную систему с внешнего устройства, например с перфоленты или с жесткого диска.
Псевдо-ассемблерный код начального загрузчика может быть столь же простым, как и следующая последовательность инструкций:
Данный пример основан на начальном загрузчике одного из миникомпьютеров, выпущенного в 1970-х годах фирмой Nicolet Instrument Corporation.
Длина загрузчика второго уровня была такой, что последний байт загрузчика изменял команду, расположенную по адресу 6. Таким образом, после выполнения пункта 5 стартовал загрузчик второго уровня. Загрузчик второго уровня ожидал заправки в устройство считывания перфолент длинной перфоленты, содержащей операционную систему. Различием между загрузчиком первого уровня и загрузчиком второго уровня были проверки на ошибки считывания с перфоленты, которые часто встречались в то время, и, в частности, на используемых в данном случае телетайпах ASR-33.
Некоторые операционные системы, наиболее характерными из которых являются старые (до 1995 года) операционные системы компьютеров Macintosh производимых Apple Computer, настолько тесно связаны с аппаратным обеспечением компьютеров, что на данных компьютерах невозможно загрузить какую либо другую операционную систему. В данных случаях обычно разрабатывается начальный загрузчик, который работает как загрузчик стандартной ОС, а затем передает управление альтернативной операционной системе. Apple использовала данный способ для запуска A/UX версию Unix, а затем он использовался различными бесплатными операционными системами.
Устройства, инициализируемые BIOS
Загрузочное устройство — устройство, которое должно быть проинициализировано до загрузки операционной системы. К ним относятся устройства ввода (клавиатура, мышь), базовое устройство вывода (дисплей), и устройство, с которого будет произведена загрузка ОС — дисковод, жесткий диск, CD-ROM, флэш-диск, SCSI-устройство, сетевая карта (при загрузке по сети; например, при помощи PXE).
Персональный компьютер – это многокомпонентная машина ( состоящая из 7 основных устройств- компонентов ), являющаяся основой современного мира.
Если говорить о простом среднестатистическом человеке, то ему компьютер нужен:
- для серфинга в интернете
- прослушивания музыки
- просмотра фильмов
- общения с друзьями
- может быть, написания статей.
В более серьезных целях компьютеры используются:
- при прогнозировании погоды
- для обеспечения работы атомных станций, в оборонных и промышленных технологиях.
Полноценная работа компьютера невозможна, если в нем нет 7 устройств.
Первое знакомство
Вспомните первый раз, когда вы увидели компьютер. Если бы вас тогда спросили о том, из чего он состоит, максимум, что вы бы смогли ответить? Наверняка это общее основное устройство ПК:
- системный блок;
- монитор;
- мышка;
- клавиатура.
Понятное дело, из-за такого ответа любой системный администратор засмеял бы пользователя. Между тем, вы недалеки от правды. За исключением системного блока, указанные элементы — это периферийные устройства ПК, предназначенные для взаимодействия с конечным пользователем, то есть с вами.
Самые любопытные с раннего детства стараются разобрать системный блок, чтобы посмотреть, что там внутри. Те же, кому удаётся это совершить, вряд ли сразу без подготовки могли сказать, что перед их глазами. Множество микросхем и проводов, о назначении которых мы поговорим чуть ниже.
Внутренние устройства ПК — это основа жизни вашего персонального компьютера. Общими словами можно сказать, что его внутренности состоят из устройств передачи и обработки данных. Это так называемое техническое устройство ПК.
Внутреннее устройство компьютера
У каждого ПК или ноутбука есть:
— основные устройства, без которых он просто не сможет работать либо выполнять универсальные задачи. Они присутствуют на каждом современном ПК.
— дополнительные устройства. Этот класс аппаратуры служит для выполнения определенных специфических задач. Про такие девайсы я подробнее расскажу в конце статьи.
1. Материнская плата.
Самое главное устройство компьютера, можно сказать — его основа.
Если открыть корпус, то её очень просто найти — она самая большая из всех. Выглядит она так:
Слово «материнская» произошло от буквального перевода английского слова «Motherboard».
А вообще, по-русски, правильнее называть её системной или основной, так как на ней базируется вся система и именно к её портам, слотам и разъёмам подключаются другие комплектующие и периферийные устройства.
2. Центральный процессор
Пламенным «мотором» любой компьютерной системы является Процессор. По английски он называется CPU — Central Processing Unit, что на русский переводится, как Центральное Вычислительное Устройство. Думаю, по названию понятно, что весь объем вычислений и обработки данных это устройство ПК берет на себя. На него идет самая большая вычислительная нагрузка. И именно поэтому процессор как правило очень сильно греется. На сегодняшний день есть два основных производителя процессоров для компьютеров и ноутбуков — это Intel и AMD.
Сейчас для повышения эффективности и многозадачности процессоры идут многоядерные, хотя буквально 10 лет назад они были в основном с одним ядром.
3. Жесткий диск
Чтобы обрабатывать данные, их надо сначала на чем-то хранить. Для этих целей существует еще одно основное устройство хранения информации — жесткий диск. Это постоянное запоминающее устройство (ПЗУ). Он может представлять собой классический HDD — Hard Disk Drive.
На сегодняшний день это уже устаревшее устройство и его плавно вытесняет с рынка более новый, быстрый и надежный SSD-накопитель (Solid-State Drive — твердотельный накопитель.
).
У него нет механических частей, за счет чего этот девайс значительно меньше, легче и не так греется.
Сейчас активно развивается направление микрокомпьютеров, где все основные устройства ПК располагаются на одной плате. У них в качестве жесткого диска используется карта памяти SD или Micro SD.
4. Оперативная память
ОЗУ — RAM — это тоже запоминающее устройство, но только в отличие от жесткого диска она значительно меньшего объёма и используется для краткосрочного хранения самых необходимых операционной системе данных. То есть в оперативную память копируется то, что нужно компу для выполнения текущих задач. Как только эта задача будет выполнена — её данные будут выгружены из ОЗУ.
Вся оперативная память на компьютере должна быть одного стандарта. Поставить разные планки RAM не получится. В лучшем случае ПК не запуститься. В худшем — сгорит сама планка или слот под неё.
5. Видеокарта
Это то устройство компьютера или ноутбука, которое отвечает за вывод изображения на монитор. Есть два вида видеоадаптеров:
Интегрированный или встроенный в материнскую плату.
Дискретный — отдельная видеокарта, подключаемая через специальный разъём на матплате.
За работу видеадаптера отвечает специальный отдельный чип — GPU. У дискретного видеоадаптера как правило есть своя оперативная память, предназначенная для обработки графической информации в играх и приложениях для работы с графикой и 3D.
6. Звуковая карта
Это специальное устройство компа, предназначенное для работы со звуком и вывода звука на подключенные динамики. Не так давно звуковой адаптер был необязательным и практически периферийным устройством и выглядел примерно так:
Но последние годы звуковой чип уже интегрирован в материнскую плату и стал неотъемлемым основным устройством современного компьютера.
7. Блок питания
Без электроэнергии компьютер работать не будет. Поэтому в любой вычислительной технике есть специальный блок питания.
Он подключается к электрической розетке и обеспечивает электропитание всех узлов ПК.
8. Корпус
Это жестяная или пластиковая коробка с креплениями, в которую устанавливаются все комплектующие части компьютера. Никаких технологических сложностей в корпусе нет — пара кнопок и несколько индикаторов.
Итак, основные устройства и узлы персонального компьютера я перечислил. Лет 5 назад к ним можно было отнести ещё и приводы для чтения дисков CD и DVD. Но сейчас, во время бурного наплыва USB флешек они практически полностью потеряли актуальность и сейчас пользователи вполне обходятся без них.
Интересное по теме:
Строение системной платы
Системная плата изготовлена из стекловолокна, состоит из нескольких листов, на которые наносятся контакты (печатная плата) и имеет многослойную структуру.
Системная плата крепится к стойке с помощью винтов.
Основные элементы, которые располагаются на системной плате:
- процессор;
- оперативная память;
- набор управляющих микросхем (чипсет);
- BIOS;
- кэш-память;
- шины;
- слоты расширения;
- батарейка и др.
Кроме того, на плате расположены разъемы для параллельных, последовательных портов (для подключения клавиатуры и мыши), источника питания, встроенного динамика, индикаторов и кнопок, которые находятся на передней панели системного блока. Тип системной платы определяет производительность ПК и перечень тех устройств, которые можно подключить.
Рисунок 2. Вид системной платы
Для передачи данных между устройствами системной платы используются шины: шина главного процессора, на которой работает ЦП и кэш-память, системная шина. Взаимодействие происходит через специальные устройства – контроллеры.
Готовые работы на аналогичную тему
Оперативная память
RAM, Оперативная память
Оперативная память [ОЗУ — Оперативно Запоминающее Устройство, RAM — Random-Access Memory, Модуль памяти] — это аппаратное устройство которое взаимодействует с центральным процессором. Предназначена для временного хранения и обработки программ и информации. За счет того что доступ к информации осуществляется случайно, а не последовательно, процессор обрабатывает информацию намного быстрее, чем читал бы ее непосредственно с жесткого диска. Но в отличии от остальных запоминающих устройств, ОЗУ является энергозависимой памятью (при отключении питания, вся информация находящиеся в ОЗУ теряются).
Характеристики стационарного компьютера и ноутбука
Как я рассказывал ранее, каждый компьютер состоит из материнской платы, процессора и других компонентов, которые отличаются друг от друга по выпуску и мощности.
Сейчас же я дам рекомендации, как выбрать подходящий ПК для работы или отдыха.
Стандартный домашний и офисный компьютер
В обязанности обычного офисного сотрудника входит работа с почтой, документами и интернетом. Для этих целей нам не нужен слишком мощный ПК. Хорошо подойдет компьютер на базе процессора Core i3 седьмого или восьмого поколения.
Данный процессор имеет 4 ядра, и он хорошо справится со всеми офисными задачами.
- Оперативной памяти будет достаточно в объёме 4 Гб.
- Жесткий диск можно установить от 500 до 1000 Гб, подойдет и HDD диск формата SATA 3.0.
- Дополнительную видеокарту можно не приобретать – встроенной вполне достаточно.
- Блок питания подойдет 450-500 Вт.
- Монитор, клавиатуру и мышку можете выбрать на свое усмотрение.
Производители также выпускают готовое фирменное решение для офиса и дома. В такие компьютеры, как правило, уже установлена операционная система Windows и пакет Microsoft Office, что позволит сэкономить на покупке программного обеспечения.
Что касается ноутбуков – они уже идут в готовой комплектации. Вам остается только выбрать на каком процессоре он работает, объем оперативной памяти и какая в нем установлена видеокарта. Для офисных задач подойдет ноутбук на базе процессора I3 и 4 Гб оперативной памяти.
Монтажный или игровой компьютер
Для сборки мощного монтажного или игрового ПК потребуется солидная сумма, так как чем круче комплектующие, тем они дороже. Как я писал ранее, для таких целей больше подойдет стационарный ПК.
Рекомендую собирать компьютер на базе процессора Core i9 9900K. Он имеет разблокированный множитель, что позволит произвести разгон и увеличить мощность. И не экономьте на охлаждении!
Данный процессор имеет 8 физических ядер и 8 виртуальных, что дает в сумме 16 потоков. На сегодняшний день этой мощности вполне хватит для работы с монтажом и играми.
- Материнскую плату нужно выбирать формата ATX, желательно у проверенных производителей (Gigabyte, Asus).
- Оперативную память лучше сразу покупать объемом 32 Гб.
- Видеокарта для данной сборки является ключевой, так как именно ее мощность задействуется при работе с монтажом и играми.
- На сегодняшний день топовой считается модель Nvidia GeForce RTX 2080Ti.
- Жесткий диск для данной сборки нужно устанавливать скоростной M2. В дополнение можно установить второй объемный HDD диск для хранения данных.
- Основой такой сборки является блок питания. Если вы решитесь приобрести хорошую видеокарту, то понадобится БП мощностью от 800 Вт. В идеале 1000 Вт и более – главное, отличного качества.
- Собирать все это нужно в корпус Full Tower для хорошей вентиляции и охлаждения.
- Монитор, мышку и клавиатуру можете выбирать по вашим предпочтениям. Но экономить на этом не стоит, чтобы почувствовать всю мощь данного ПК.
Также на рынке существуют профессиональные брендовые графические станции. В них могут быть установлены серверные процессоры (от двух и более), несколько профессиональных видеокарт и несколько сотен гигабайт оперативной памяти. На таких станциях работают профессиональные монтажеры для студий. И, конечно, цена такой станции просто заоблачная.
Игровые ноутбуки покупать не рекомендую – на мой взгляд, это нецелесообразно. Но если вы все же решитесь, присмотритесь к серии с процессорами Intel Core i9.
Жесткий диск
Жесткий диск является постоянным хранилищем данных, это могут быть как пользовательские данные, так и системные или временные. На жестком диске хранится операционная система, без которой нормальная работа компьютера будет невозможна. Также операционная система может использовать жесткий диск для сохранения содержимого оперативной памяти (например, в режиме гибернации). Представляет собой жесткий диск закрытый металлический параллелепипед, который через разъем (SATA) подключается к материнской плате.
Форм-фактор материнской платы
По размеру системные платы бывают разными. Существует несколько стандартов, которые принято называть форм-фактором материнской платы. Кроме размеров, форм-фактор подразумевает определенную схему расположения мест крепления платы, интерфейсов шин, портов ввода-вывода, сокета процессора, разъема для подключения блока питания и слотов установки модулей ОЗУ. Известны следующие форм-факторы материнских плат: Baby-AT, Mini-ATX, AT, LPX, АТХ, microATX, Flex-АТХ, NLX, WTX, CEB, Mini-ITX, Nano-ITX, Pico-ITX, BTX, MicroBTX, PicoBTX. Наиболее распространенными являются АТХ (305 x 244 мм.), microATX (244 x 244 мм.) и mini-ITX (150 x 150 мм.). Форм-фактор материнской платы нужно учитывать при выборе корпуса системного блока.
Меня зовут Андрей Артемьев, я работаю в Microsoft над ядром ОС Windows 10, ранее я работал над Windows 10x (WCOS), XBox, Windows Phone и Microsoft Edge. Я хочу популярно в образовательных целях рассказать о том как работает компьютер на примере клавиатурного ввода и Windows 10. Данный цикл статей рассчитан в первую очередь на студентов технических специальностей. Мы рассмотрим какой путь проходит информация о нажатой клавише от клавиатуры до отображения в Notepad.exe. В виду обширности и междисциплинарности темы в статьях могут быть неточности, о которых сообщайте в комментариях. Какая-то информация может быть устаревшей в виду скорости с которой развивается Windows.
Насколько глубоко мы погрузимся в тему?
Давайте для начала в общих чертах поговорим об уровнях на которых можно рассматривать компьютер. Каждый уровень основывается на предыдущем. Начнём с самого верха.
Уровень операционной системы. ОС можно рассматривать как:
- Менеджер ресурсов — память, жёсткие диски, принтеры, экран, клавиатура ограниченные ресурсы которые совместно используются запущенными на компьютере программами.
- Виртуальная машина — файл это наглядный пример виртуального объекта. Он представляет абстракцию данных на диске, API для работы с ним и так же добавляет концепцию прав доступа. Вместо файла могла быть концепция контейнера данных и совершенно другого API. Таких виртуальных объектов в ОС много.
- Платформа — ОС предоставляет программные модели и примитивы для построения программ. К примеру Windows Drivers Framework позволяет быстро разрабатывать драйвера, окна в Windows используются для построения сложных пользовательских интерфейсов. Dll — предоставляет модель расширения функционала программы через плагины, а так же механизм для реализации читалки экрана через ловушки клавиатуры (см. LowLevelKeyboard hook).
Уровень архитектуры компьютера. Он представлен материнской платой, которая имеет определённый форм-фактор, встроенные функции закодированные в микросхемах называемых чип-сетом и порты, через которые можно расширять функционал компьютера подключив графическую карту, сетевую карту, дополнительную оперативную память (RAM), жёсткие диски, клавиатуру и пр. Порты влияют на скорость работы и возможности компьютера, что и будет определять его назначение будь то сервер для обработки тысяч запросов в секунду, планшет для пользования Интернетом или игровой ПК с несколькими видеокартами. ОС абстрагирует особенности материнской платы.
Микросхемы выглядят как на картинке ниже и представляют собой мини-компьютер выполняющий простые программы для низкоуровневых задач, к примеру прочитать данные от клавиатуры и передать их дальше чтобы они достигли в конечном счёте процессора. Как правило реализованы в виде аналоговой непрограммируемой микросхемы или микроконтроллера, программируемого на языке С.
Материнскую плату можно рассматривать как колонию микросхем которые общаются между собой через шины и через них циркулируют данные от подключенных устройств к процессору и обратно. Чип-сет — это своего рода нервная система компьютера. Все чипы на материнской плате были изначально созданы чтобы работать друг с другом. Некоторые из них могут иметь особые функции, к примеру таймер или хранение настроек BIOS. Пожалуй самый важный из них тот что имеет встроенную программу (прошивку, BIOS, UEFI) которая начинает выполняться как только появляется электричество. Она находит жёсткий диск с загрузчиком Windows и передаёт тому управление который в свою очередь запускает исполняемый файл ОС, который можно назвать Windows10.exe, на самом деле NtOsKrnl.exe. BIOS знает что искать благодаря соглашению между производителями железа и операционных систем.
Вокруг материнской платы можно собрать мобильный телефон, игровую приставку, серверную станцию или умное устройство. На картинке ниже распространённые форм-факторы материнских плат.
Уровень микроархитектуры представлен процессором (CPU), это сердце материнки и весь чип-сет нужен для обслуживания CPU. Процессор это компьютер в компьютере, более мощный и продвинутый микроконтроллер которому не нужна прошивка, потому как поток команд подаётся на лету, когда планировщик потоков поменял контекст процессора. Функционал процессора делится на подсистемы, к примеру компонент занимающийся математическими и логическими операциями, математический сопроцессор, кэш. Какие-то из них раньше были отдельным чипом на материнской плате, но сейчас их сделали частью ЦПУ, например контроллер прерывания и микросхема под названием “Северный мост” что увеличило скорость работы.
Микроархитектура это не то же самое что архитектура. Весь функционал CPU разделён на компоненты, которые работают сообща. Эти компоненты и их взаимодействие и есть микроархитектура. На блок-схеме ниже они представлены цветными прямоугольниками и квадратиками.
Архитектура процессора это по сути документ который описывает какой функциональностью он должен обладать для того чтобы соответствовать к примеру архитектуре x86, x64 или ARM применяемой на мобильных устройствах. В этом документе описано какие должны поддерживаться команды, назначения регистров и логика работы. Создатели процессоров Intel, AMD, Эльбрус могут реализовывать эту функциональность как угодно и добавлять к ней новые возможности в виде команд, регистров, флагов, прерываний и если ОС знает о них то может использовать. В терминах ООП архитектура ЦПУ — это интерфейс, а микроархитектура — его реализация.
Логические схемы. Цветные прямоугольники с блок-схемы CPU состоят из логических схем, которые производят свои операции на последовательностях нулей и единиц. Процессор видит все данные и команды в виде битов (0 и 1), по формуле любое десятичное число можно представить в виде последовательности 0 и 1, а вот что значит конкретное число зависит от контекста. Это может быть код, цифра, буква. Арифметическое и логическое устройство (ALU) умеет производить сложение двух чисел через побитовые операции. Побитовые алгоритмы сложения, вычитания, умножения и деления давно известны, разработчикам логической схемы их только надо эффективно реализовать.
Уровень радиоэлементов. Физически аналоговые схемы полагаются на радиоэлементы, которые собственно и эксплуатируют законы физики. Преимущественно это полупроводники, т.е. в определённых условиях они могут проводить электричество, а могут и нет. Диод проводит ток только в одном направлении, если его выпаять, развернуть на 180 и впаять обратно, то ток через него проходить не будет. Транзистор пропускает ток только если есть напряжение на управляющей ножке. Человечество научилось делать транзисторы микроскопическими и потому их можно размещать на маленькой плате миллионами. На картинках ниже полупроводниковые радиоэлементы и обычный транзистор рядом с нано транзистором под электронным микроскопом.
Уровень законов физики. И наконец самый нижний уровень — это уровень законов физики которые заключены в полупроводниковые радиоэлементы.
Мы будем много говорить про уровень ОС и чуть меньше про архитектуру компьютера, микроархитектуру, аналоговые схемы и радиоэлементы. К последней части у вас должно быть понимание как это всё работает вместе.
Основы Операционной Системы
Когда мы проходили в универе программирование на ассемблере у многих студентов был ступор от таких умных слов как “режимы ядра и пользователя”, под которыми на самом деле скрывается хорошо всем известная ролевая система аутентификации, на всех сайтах есть как минимум “Админ” имеющий доступ ко всем страницам и “Пользователь” имеющий ограниченный доступ. Точно так же роль “Ядро” имеет доступ ко всем возможностям CPU, а роль “Пользователь” может вызывать не все команды процессора и не со всеми аргументами. Поверх этой ролевой модели по принципу клиент-серверной архитектуры построена операционная система, где сервер это ядро, которое и реализовывает функционал ОС, а клиент — это пользовательские программы. В мире Web клиент и сервер разделены физически — это два разных компьютера общающихся по сети. В ОС клиент и сервер живут на одной машине и на одном железе. У сервера есть некий API который позволяет клиентам изменять его состояние, к примеру Twitter API позволяет создавать посты, логиниться и загружать ленту твитов в мобильный клиент. У Windows есть Win API, только более громоздкий в виду более широкого круга задач, на сегодняшний день у винды примерно 330 000 API плюс API для UWP apps. Если концепции Твитера более менее всем понятны — пост, пользователь, фид — то концепции ОС могут потребовать некоторого углубления в её внутренности. Поэтому API Windows могут быть трудно понятными без понимания внутреннего устройства ОС.
На самом деле под ядром понимают три разные вещи. Ядро как весь код ОС. Ядро как подсистема которая отвечает за механизмы ОС, такие как планировщик потоков, переключение контекста, обработка прерываний, свап виртуальный памяти на физическую (Kernel) и ядро подсистемы для поддержки других ОС — CSRSS.exe (Windows), PSXSS.exe (POSIX), OS2SS.exe (OS/2) или WSL (Windows SubSystem for Linux). В данном контексте понимается первый смысл — весь код ОС.
Когда на экране появляется окно, то в серверной части ОС (режим ядра) появляется структура данных которая описывает это окно — его положение на экране, размеры, текст заголовка, оконная функция через которую ОС даёт приложению среагировать на события. Поскольку подсистем в ОС много, то и структур данных описывающих один объект может быть несколько, к примеру информация о пользовательском процессе есть в компонентах:
- Executive — здесь логика работы ОС. В этом слое проверяется что могут и не могут делать процессы. Здесь хранится инфа о родительском процессе, параметры старта процесса (Process Environment Block), привязанный аккаунт пользователя, имя exe файла процесса.
- Kernel — здесь реализованы механизмы ОС, такие как планировщик потоков. Здесь хранится сколько времени процесс проводит в режиме пользователя и ядра, к каким процессорам привязаны его потоки, базовый приоритет потоков процесса.
- Windowing subsystem — инфа о GDI объектах которые используются для рисования в окне. Это такие примитивы как кисти, pen и пр.
- DirectX — всё что имеет отношение к DirectX: шейдеры, поверхности, DX-объекты, счётчики производительности GPU, настройки памяти графической памяти.
- Подсистема Windows которая представлена процессом CSRSS.exe (Client Server Runtime SubSystem). Windows ранее поддерживал ОС POSIX (процесс PSXSS.exe) и OS/2 (OS2SS.exe). В те времена возникла идея сделать и Windows такой же подсистемой, но эта было медленно и поэтому скоро часть CSRSS.exe перенесли в win32k.sys, который сейчас разбит на несколько файлов — win32k.sys, win32kbase.sys и win32kfull.sys. Здесь хранится информация о Process Group Data, Shutdown level, Session Data и пр.
Что такое компонент? Это логически сгруппированный функционал. Компонентом можно назвать ООП-класс, dll, папку, набор функций с общим префиксом, пространство имён, слой в архитектуре.
Более подробно о разделении на клиент-сервер
Разделение на клиент и сервер реализовано при помощи встроенной функциональности CPU, разделения памяти и программных проверок.
Производители оборудования сотрудничают с разработчиками ОС, поэтому в процессоре есть механизмы созданные с учётом потребностей создателей операционных систем. Во всех современных процессорах реализован механизм ролей пользователя, где под пользователем понимается исполняемый в данный момент код. В веб приложениях роль залогиненого пользователя хранится в какой-то переменной и помимо понятного названия Admin или User имеет Id этой роли который чаще и используется при авторизации, потому как сравнивать числа быстрее и проще чем строки. В процессоре роль текущего пользователя хранится в поле которое называется “кольцо безопасности” (Security Ring), а не “CurrentUser.Role.Id”. В большинстве процессоров это поле принимает четыре значения от 0 до 3. Windows использует 0 для роли которая называется “Режим Ядра”, потому как это самый привилегированный режим и самое большое значение для роли “Режим Пользователя”, потому как это самая ограниченная роль. Остальные роли не используются потому как различие между 0 и 1, 2 и 3 незначительное. Эти роли ограничивают страницы памяти которые могут быть адресованы, нельзя вызывать некоторые инструкции или же нельзя их вызывать с определёнными аргументами. Так же есть ограничения на использование технологии I/O Ports для обмена данными с устройствами такими как клавиатура, но она уже лет 10 не используется. Переключение в режим ядра происходит через команду syscall, которая по индексу находит в массиве указателей на APIs Windows функцию которую надо вызвать. Указатель на этот массив сохраняется в специальном регистре процессора во время загрузки ОС.
Прерывания могут генерироваться не только процессором но и внешними устройствами (клавиатура, мышь) или программным кодом. Планировщик потоков устанавливает таймер который с интервалами равными одному кванту (по умолчанию около 15мс, в Windows Server больше) генерирует прерывание чтобы по внутреннему алгоритму назначить другой поток на исполнение. Пошаговое исполнение программы в Visual Studio так же полагается на механизм прерываний — у процессора устанавливается флаг, который после каждой команды вызывает прерывание которое обрабатывает Windows Debugging Engine и уведомляет через API Visual Studio.
Разделение памятью реализовано благодаря виртуальной памяти. Ранее я говорил что ОС это менеджер ресурсов и виртуальная машина. Даже если у вас 1Гб RAM 32х битный Windows будет работать так как если бы у вас было 4Гб оперативки, т.е. реально у вас 1Гб, а виртуально 4Гб. Современные компьютеры основаны на теоретической модели машины Тьюринга или же архитектуре фон Неймана (с некоторыми изменениями). Согласно этим моделям память в компьютере это лента состоящая из ячеек размером один байт. Эти ячейки сгруппированы в страницы как правило по 4096 байт (4Кб), потому как:
64 битный адрес позволяет адресовать 16 экзабайт, это 18,446,744,073,709,551,616 ячеек памяти. Современные процессоры пока что не поддерживают так много RAM и поэтому используют только младшие 48 бит адреса, остальные 16 заполняются старшим разрядом. Поэтому Win x64 попросту не использует часть адресов, которые помечены на рисунке выше чёрным. Но это не значит, что 64х битный Windows “видит” 256 Tb оперативки. Максимум 8TB виртуальной памяти на архитектуре IA64 и 7TB на x64. Предел физической памяти поддерживаемой Windows 10 — 2TB, потому как с большим количеством Винда не тестировалась. Объём поддерживаемой RAM в Windows 10 определяется во многом редакцией ОС, чем дороже тем больше.
Почему ячейки памяти пронумерованы шестнадцатиричными (HEX) числами, а не десятичными или двоичными? Адрес ячейки это не просто порядковый номер, в нём закодировано три числа по которым эту ячейку можно отобразить на физическую память. Первые два это индексы по которым находится конкретная страница виртуальной памяти, а третье число — смещение от начала страницы. CPU и ОС здесь работают в связке — ОС предоставляет структуру данных по которой CPU находит страницу виртуальной памяти и копирует её в физическую. По HEX номеру можно сразу увидеть как выровнен в памяти адрес. Формат двоичного числа слишком громоздкий, 32 бита (или 64) трудны для восприятия. Десятичный формат — показывает слишком мало информации, тогда как HEX удобный компромисс между десятичной и двоичной системами, средами людей и машин.
Программный способ разделения на клиент-сервер (режим ядра-режим пользователя) гораздо скучнее перечисленных выше механизмов. Процессы и потоки могут быть помечены специальными аттрибутами или же мы можем хранить список указателей на потоки/процессы и проверять их в коде. Если вы хоть раз делали авторизацию в веб-приложении, то хорошо понимаете о чём я говорю.
Из чего состоит Windows?
Абстракция или же разбиение на компоненты есть во всех сферах программирования и интуитивно понятно что Windows тоже делится на какие-то компоненты. Под компонентом понимается какая-то единица функциональности — ООП класс, файл, dll, папка. Компоненты на диаграмме ниже могут быть как индивидуальными *.sys, *.dll файлами, так и просто набором API сгруппированным логически через добавление префикса к имени функции, старая часть системы написана на C, а он не поддерживает классы. Новые части пишутся нередко на C++. В укрупнённом виде Винда выглядит так:
Давайте быстренько пробежимся по её компонентам снизу вверх:
- Hyper-V Hypervisor — слой виртуализации благодаря которому в Windows можно создать виртуальную машину. Иногда говорят, что Hyper-V это минус первый уровень привилегий, однако реализован он в одном уровне привилегий и адресном пространстве что и ядро ОС, за счёт использования слоёной архитектуры ОС ничего не знает о нём.
- HAL.dll — Hardware Abtraction Layer — изначально задумывался как абстракция над железом — чипсет, материнская плата, процессор — для того чтобы можно было перенести Windows на новую платформу реализовав новый HAL.dll, который будет выбран и скопирован во время установки. По сути это драйвер к устройствам материнской платы, к примеру таймерам, контроллеру прерываний. Сейчас его роль снижена, потому как многие драйвера материнки и чип-сета реализованы в ACPI.sys.
Читайте также: