С помощью чего работает компьютер
Урок 3. Как работает компьютер

В этом IT-уроке узнаем, как работает большинство вычислительных устройств (к которым относятся не только персональные компьютеры).
Во втором уроке мы разобрались, что компьютер нужен для обработки информации, её хранения и передачи. Посмотрим же, как происходит обработка информации.
Как хранится информация на компьютере
Компьютер хранит, передаёт и обрабатывает информацию в виде нолей «0» и единиц «1», то есть используется двоичный код и двоичная система счисления.
Например, десятичное число «9» он видит как двоичное число «1001».
В виде нолей и единиц хранятся и все данные, которые необходимо обработать, и все программы, которые руководят процессом обработки.
Например, фотографию компьютер видит так (только первые две строчки файла из 527 строк):
Так человек видит изображение:
Компьютер видит набор «0» и «1»
(первые две строчки файла):

0000 0000 0001 0000 0100 1010 0100 0110
0100 1001 0100 0110 0000 0000 0000 0001
0000 0001 0000 0000 0000 0000 0000 0001
0000 0000 0000 0001 0000 0000 0000 0000
1111 1111 1101 1011 0000 0000 0100 0011
0000 0000 0000 0011 0000 0010 0000 0010
0000 0011 0000 0010 0000 0010 0000 0011
А текст для компьютера выглядит так:
Человек видит текст:
Компьютер опять видит набор «0» и «1»:
0111 0010 0110 1111 0110 1011 0110 1001
0010 1110 0111 0010 0111 0101
Сегодня мы не будем разбираться в тонкостях вычислений и преобразований, посмотрим на процесс в общем.
Где хранится информация
Когда информация занесена в компьютер (записана), то она хранится на специальном устройстве – накопителе данных. Обычно накопитель данных – это жесткий диск (винчестер).
Жестким диском это устройство называется из-за конструкции. Внутри его корпуса находится один или несколько твердых блинов (металлических или стеклянных), на которых и хранятся все данные (текстовые документы, фотографии, фильмы и т.д.) и установленные программы (операционная система, прикладные программы, как Word, Excel, и др.).
Жесткий диск (накопитель данных) хранит программы и данные
Информация на жестком диске хранится и после выключения компьютера.
Подробнее об устройстве жесткого диска мы узнаем в одном из следующих IT-уроков.
Что обрабатывает всю информацию в компьютере
Основная задача компьютера – обрабатывать информацию, то есть выполнять вычисления. Большую часть вычислений выполняет специальное устройство – процессор. Это сложная микросхема, содержащая сотни миллионов элементов (транзисторов).
Процессор – обрабатывает информацию
Что в данный момент времени делать процессору говорит программа, она указывает, какие данные необходимо обработать и что с ними нужно сделать.
Схема обработки данных
Программы и данные загружаются с накопителя (жесткого диска).
Но жесткий диск – относительно медленное устройство, и если бы процессор ждал, пока будет считываться информация, а потом записываться после обработки обратно, то он бы долго оставался без дела.
Не оставим процессор без дела
Поэтому между процессором и жестким диском установили более быстрое запоминающее устройство – оперативную память (оперативное запоминающее устройство, ОЗУ). Это небольшая печатная плата, на которой находятся быстрые микросхемы памяти.
Оперативная память – ускоряет доступ процессора к программам и данным
В оперативную память заранее считываются с жёсткого диска все необходимые программы и данные. Во время работы процессор обращается к оперативной памяти, считывает команды программы, которая говорит какие данные нужно взять и как именно их обработать.
При выключении компьютера содержимое оперативной памяти не сохраняется в ней (в отличие от жесткого диска).
Процесс обработки информации
Итак, теперь мы знаем, какие устройства участвуют в обработке информации. Посмотрим теперь на весь процесс вычислений.
Анимация процесса обработки информации компьютером (IT-uroki.ru)
Когда компьютер выключен, все программы и данные хранятся на жестком диске. При включении компьютера и запуске программы, происходит следующее:
1. Программа с жесткого диска заносится в оперативную память и сообщает процессору, какие загрузить данные в оперативную память.
2. Процессор поочередно выполняет команды программы, порциями обрабатывая данные, взяв их из оперативной памяти.
3. Когда данные обработаны, результат вычислений процессор возвращает в оперативную память и берет следующую порцию данных.
4. Результат работы программы возвращается на жесткий диск и сохраняется.
Описанные шаги показаны красными стрелками на анимации (эксклюзивно от сайта IT-uroki.ru).
Ввод и вывод информации
Чтобы компьютер получил информацию для обработки, её нужно ввести. Для этого используются устройства ввода данных:
Для вывода результата обработки информации используются устройства вывода данных:
Кроме того, мы можем вводить и выводить данные на другие устройства с помощью:
Если в нашу схему добавить устройства ввода-вывода, то получится вот такая диаграмма:
Ввод, обработка и вывод данных
То есть компьютер работает с ноликами и единичками, а когда информация поступает на устройство вывода, она переводится в привычные нам образы (изображение, звук).
Подводим итог
Итак, сегодня мы вместе с сайтом IT-uroki.ru узнали, как работает компьютер. Если кратко, то компьютер получает данные с устройств ввода (клавиатура, мышь и т.д.), заносит их на жесткий диск, затем передает в оперативную память и обрабатывает с помощью процессора. Результат обработки возвращается сначала в оперативную память, затем либо на жесткий диск, либо сразу на устройства вывода (например, монитор).
Если появились вопросы, можно задать их в комментариях к этой статье.
Обо всех перечисленных в сегодняшнем уроке устройствах Вы можете узнать подробнее из последующих уроков на сайте IT-уроки. Чтобы не пропустить новые уроки – подпишитесь на новости сайта.
Копирование запрещено
Напомню, что на сайте IT-уроки есть постоянно обновляемые справочники:
Видео-дополнение
Сегодня небольшое познавательное видео о производстве процессоров.
Как работает компьютер?
В этой статье вы узнаете как работает персональный компьютер, как проходит его загрузка, начиная с нажатия кнопки питания.
Включение питания компьютера
При первом нажатии кнопки питания компьютер посылает сигнал на источник питания компьютера, который преобразует переменный ток (AC (alternating current)) в постоянный (DC (direct current)). Это питание обеспечивает компьютер и его компоненты необходимым питающим напряжением и электрической мощностью.
Компьютер и его компоненты получат питание. Источник питания проводит запуск теста напряжений. Если нет ошибок, он отправит сигнал (с использованием транзисторов) на материнскую плату и процессор компьютера (CPU). В то время как это происходит, процессор обнуляет данные в регистрах памяти и присваивает счетчику программ процессора шестнадцатеричное число F000. Этой командой процессор сигнализирует о том, что он готов обработать инструкции, содержащиеся в базовой системе ввода-вывода (BIOS).
BIOS и POST
Если компьютер проходит POST, он просматривает первые 64 байта памяти, расположенные в микросхеме CMOS. Этот чип запитан 3 вольтовой батареей, даже при выключенном компьютере, настройки в нем сохраняются. Этот чип содержит такую информацию, как системное время и дата, а также информацию обо всем оборудовании, установленном на вашем компьютере.
После загрузки информации из CMOS, POST начинает проверку и сравнение системных настроек с тем, что установлено на компьютере. Если ошибок не обнаружено, он загружает основные драйверы устройств и обработчики прерываний для такого оборудования, как жесткий диск, клавиатура, мышь. Эти базовые драйверы позволяют процессору взаимодействовать с этими аппаратными устройствами и позволяют компьютеру продолжать процесс загрузки.
Затем POST проверяет значение реального времени (RTC) или системный таймер и системную шину, чтобы убедиться, что оба работают. Наконец, вы получите изображение на своем дисплее после того, как POST загрузит память, содержащуюся в адаптере дисплея.
Затем BIOS проверяет, продолжить загрузку или сделать перезагрузку, просматривая адрес памяти 0000:0472. Если он видит 1234h, BIOS понимает, что это перезагрузка, и пропускает оставшиеся шаги POST.
Если 1234h не отображается, BIOS понимает, что можно продолжать и выполнять следующие тесты POST. Затем он проверяет оперативную память (ОЗУ), установленную в компьютере, путем записи на каждый чип. Раньше компьютеры показывали этот шаг, поскольку память подсчитывалась во время загрузки.
Далее, POST отправляет сигналы на оптический привод компьютера и жесткий диск для тестирования. Если все диски проходят тест, POST завершен, и компьютер получает указание начать загрузку операционной системы.
Загрузка операционной системы
После того, как компьютер прошел проверку, он запускает процесс загрузки. Этот процесс отвечает за загрузку операционной системы и всех связанных с ней системных файлов. Поскольку Microsoft Windows является наиболее часто используемой операционной системой, в этом разделе рассматривается загрузка Microsoft Windows.
BIOS сначала передает управление первичному загрузчику (bootstrap loader), который просматривает загрузочный сектор первого загрузочного устройства (жесткого диска, SDD, DVD, флэш-накопителя). Если очерёдность загрузки в настройках CMOS не изменена.
В этом примере Microsoft Windows 10 Bootmgr (диспетчер загрузки Windows) находится в загрузочном секторе. Он сообщает компьютеру, где найти оставшийся код на жестком диске или SDD. Затем загружается Windows, начиная с заставки Windows и загрузки реестра Windows. После загрузки реестра, Windows начинает загружать в память множество низкоуровневых программ, составляющих операционную систему. Первоначально загруженные программы позволяют Windows взаимодействовать с основным оборудованием и другими приложениями, запущенными на компьютере.

После загрузки реестра, начальных базовых аппаратных устройств, загрузчик Windows подхватывает устройства plug and play, устройства PCI. После загрузки всех этих устройств, Windows устанавливает полную поддержку жесткого диска, разделов и любых других дисков и переходит ко всем другим установленным драйверам.
Аппаратные устройства, взаимодействующие с компьютером
После загрузки операционной системы на компьютер аппаратное обеспечение, подключенное к компьютеру, должно иметь возможность взаимодействовать с процессором. Аппаратная связь осуществляется с помощью запроса на прерывание (IRQ). Контроллер прерываний отправляет запрос (INTR) в центральный процессор, чтобы остановить то, что он делает для обработки нового аппаратного запроса. Все, что выполняется процессором, приостанавливается и сохраняется в виде адреса памяти в стеке памяти. Затем эта задача возобновляется, когда выполняется текущая (более срочная) задача.
Как устроен компьютер

Сегодняшний персональный компьютер несравненно более мощный, чем модель, выпущенная всего несколько лет назад.
Современные компьютеры состоят из множества деталей, которые работают в слаженной системе и создают стабильный эффективный инструмент.
Постоянное развитие оборудования и программного обеспечения делают процесс обучения для работы с компьютером трудновыполнимой задачей, требующей постоянного усовершенствования и вникания. Но некоторые понятия и детали остаются неизменными. Рассмотрим их и станем на шаг ближе к великому знанию о схеме работы персонального компьютера и пониманию того, как устроен компьютер.
Виды персональных компьютеров
Различные компьютерные компании делают свои продукты очень похожими. Каждый из производителей использует одни и те же запчасти для создания компьютера, их можно различить только по наклейке определённой фирмы. Даже компьютеры фирмы Apple, известные своей исключительной конструкцией, по сути, не отличаются от своих конкурентов с точки зрения их технического устройства.
В ноутбуках и стационарных компьютерах также используют подобные функциональные детали. Только ноутбуки создаются из уменьшенных копий тех же частей, что и стационарные компьютеры. Другими словами, если Вы понимаете, как устроен, например, стационарный компьютер, то Вам будет несложно разобраться в работе всех остальных компьютеров, например, разобраться в работе ноутбуков.
Жизненно важные части любого компьютера
Компьютеры состоят из нескольких электронных чипов, каждый из которых имеет определённую функцию. Жизненно важные части, находящиеся в каждом компьютере, включают
Материнская плата
Материнская плата – это большая плата (именно плата или, как иногда говорят, печатная плата, используя радиоэлектронную терминологию), к которой присоединяются все остальные детали компьютера.
Материнская плата действует как станция управления, которая соединяет и объединяет другие части (отсюда и название – «материнская»).
Например, процессор, оперативная память и видеокарта подключены непосредственно к материнской плате. Также довольно часто встречается конфигурация, когда видеокарта смонтирована прямо на материнской плате. Каждый из перечисленных элементов компьютера имеет дело с различными аспектами обработки информации.
Оперативная память
Оперативная память хранит текущую рабочую информацию на компьютере. При открытии программы, например, Интернет-браузера, некоторая часть из оперативной памяти выделяется для работы этого браузера.
После выключения компьютера вся информация из оперативной памяти автоматически удаляется. Сохранить свои труды (тексты, рисунки и т.п.) пользователь может, например, на жестком диске.
Процессор и видеокарта
Процессор и видеокарта обрабатывают информацию, необходимую для выполнения различных функций в компьютере.
Например, запуск игры на компьютере требует постоянного анализа информации. Выполнение этой задачи ложится на процессор и видеокарту.
Процессор получает, обрабатывает и отправляет обработанную информацию в адрес других устройств компьютера. Тогда как видеокарта обеспечивает вывод обработанной информации на экран монитора компьютера (отсюда и название «видео» карта).
Жёсткий диск
Жёсткий диск выступает в качестве памяти для долгосрочного хранения информации. Жесткий диск на компьютероном сленге называют еще
Последнее название заимствовано из английского языка: Hard Disk.
В оперативной памяти информация хранится только во время работы компьютера (это так называемая энергозависимая память).
А в жестком диске информация хранится и при отключенном компьютере (это так называемая энергоНЕзависимая память).
Информация о компьютере, музыка, фильмы и фотографии хранятся на жёстком диске. Это место также используется для хранения программ, таких, например, как текстовые редакторы или игры.
Блок питания
Наконец, важным элементом компьютера является источник электрического питания, который распределяет необходимую электроэнергию для работы каждой части компьютера. Один из основных шнуров от источника электропитания идёт к материнской плате для питания различных чипов.
Другие шнуры питания используются для работы устройств, смонтированных отдельно от материнской платы, например, для питания жестких дисков, дисководов CD-дисков, вентиляторов охлаждения компьютера и прочих элементов.
Кроме того, ноутбуки имеют аккумуляторную батарею для того, чтобы пользователь мог при необходимости какое-то время работать без подключения зарядного устройства ноутбука к сети 220В.
Аксессуары
Есть много компьютерных частей, которые не являются необходимыми для функционирования системы, но которые являются несомненно важными для пользователей. Эти дополнения включают такие вещи, как CD- и DVD- приводы, беспроводные интернет карты, ТВ-тюнеры, звуковые карты и др.
Различные типы приводов дисководов (CD- DVD- и др.) не подключены непосредственно к материнской плате, а соединяются с ней и с блоком электропитания с помощью нескольких кабелей. Кабель подключения к материнской плате несёт информацию к дисководам и от них, а кабель подключения к источнику электропитания даёт приводу электричество для работы.
Беспроводные интернет карты, ТВ-тюнеры и звуковые карты подключаются непосредственно к материнской плате и не требуют отдельных кабелей для подачи питания от сети. Каждое из этих устройств обеспечивает определённую функцию в компьютере. Например, они дают более высокое качество звука или возможность смотреть телевизионные программы на мониторе компьютера.
Операционная система
Комбинация аппаратных средств создаёт компьютер, способный к сложным вычислениям и обладающий огромным количеством памяти для хранения информации. Но без пользовательского интерфейса (без возможности использовать это в работе пользователем — человеком) работа компьютера будет бессмысленной.
Именно для этого и предназначена операционная система: для обеспечения доступа к ресурсам компьютера обычным пользователям, то есть, не специально подготовленным программистам или системным администраторам, а простым людям.
Операционная система установлена на жёстком диске Вашего компьютера.
Основные разновидности операционных систем — это
Операционная система является большой программой, состоящей из большого количества системных файлов. Операционная система создаёт визуальные (наглядные, понятные) интерфейсы для простых и порой неподготовленных пользователей, чтобы позволить этим пользователям получать доступ к информации, иметь возможность навигации на компьютере.
Прикладные программы
Только одной операционной системы мало, чтобы успешно работать на компьютере, она лишь позволяет использовать вычислительные мощности компьютера. Для выполнения «полезной» работы нужны еще и прикладные программы. «Прикладные» – это потому, что они помогают пользователям выполнять вполне прикладные действия, например, редактировать тексты, искать информацию в Интернете, рисовать картинки и чертежи, слушать музыку, смотреть фильмы и т.п.
Для выполнения одних и тех же действий могут применяться несколько разных прикладных программ. Например, редактировать тексты можно с помощью программы Блокнот (Notepad), а можно это делать с помощью приложения Microsoft Office Word. В Блокноте – одни возможности для редактирования текста, в Word – другие, значительно более широкие. Но и та, и другая программа позволяют, в конечном счете, напечатать или отредактировать текст.
Просматривать фильмы также можно с помощью разных программ. Это, например, Flash Player в составе Интернет браузеров, или Windows Media Player в составе операционной системы Windows, или Real Player и т.п. Выбор зависит от многих факторов, в том числе от предпочтений пользователей, от формата просматриваемых видеоизображений, от требований к качеству изображения и звука и пр.
Редактировать и рисовать картинки можно как с помощью достаточно простой программы Paint в составе Windows, так, например, с помощью мощных программ Photo Shop или Corel Draw, имеющих неоспоримо больше возможностей для редактирования изображений, но при этом являющихся значительно более сложными в изучении и в работе.
Искать информацию в Интернете можно также с помощью различных браузеров: Internet Explorer в составе Windows, Mozila Firefox, Google Chrome и др. Выбор зависит от многих факторов. Но в первую очередь на это влияют предпочтения пользователей компьютеров, а также предоставляемые удобства, дополнительные сервисы, возможности настраивать браузеры под задачи пользователя и др.
Операционная система – это скорее данность, которую могут выбирать далеко не все пользователи персональных компьютеров. Хотя известна категория пользователей компьютеров, которые с гораздо большим увлечением переустанавливают и налаживают операционные системы, чем работают с прикладными программами. Но это скорее исключение, подтверждающее основное правило.
В то же самое время, прикладные программы пользователи выбирают себе, как правило, самостоятельно. Выбирают под свои задачи, которые они хотят решать с помощью персональных компьютеров.
Именно с прикладными программами персональный компьютер становится полезным инструментом для работы на нем пользователей. Именно прикладные программы «оживляют» компьютер, делают его незаменимым помощником на работе, дома, в путешествиях, для хобби и пр.
Связываем всё вместе
Подводя итоги сказанному выше, можно констатировать, что компьютеры – это очень удачное и крайне полезное сочетание аппаратной и программной части. На вопрос «Как устроен компьютер?» можно ответить такой формулой:
или то же самое «по-русски»,
Приведенная формула наглядно показывает, что проблемы, которые возникают на компьютере, связаны
Аппаратная часть персонального компьютера – это
Все устройства персонального компьютера заключены в корпус и запитаны от блока электропитания или от аккумуляторной батареи.
Для удобства работы с компьютером к нему подключаются также
Программная часть персонального компьютера состоит из
Операционная система позволяет запустить аппаратный комплекс, добиться его слаженной и четкой работы. Прикладные программы являются самыми полезными и самыми важными частями программно-аппаратного комплекса, поскольку именно с их помощью пользователи компьютеров выполняют свои задачи на персональном компьютере.
Таким образом, если Вы видите и читаете данный текст, это значит, что в Вашем компьютере все вышеперечисленные программные и аппаратные элементы работают слаженно, четко, бесперебойно и взаимосвязанным образом.
P.S. Рекомендую также:
О работе ПК на примере Windows 10 и клавиатуры ч. 1
Меня зовут Андрей Артемьев, я работаю в Microsoft над ядром ОС Windows 10, ранее я работал над Windows 10x (WCOS), XBox, Windows Phone и Microsoft Edge. Я хочу популярно в образовательных целях рассказать о том как работает компьютер на примере клавиатурного ввода и Windows 10. Данный цикл статей рассчитан в первую очередь на студентов технических специальностей. Мы рассмотрим какой путь проходит информация о нажатой клавише от клавиатуры до отображения в Notepad.exe. В виду обширности и междисциплинарности темы в статьях могут быть неточности, о которых сообщайте в комментариях. Какая-то информация может быть устаревшей в виду скорости с которой развивается Windows.
Насколько глубоко мы погрузимся в тему?
Давайте для начала в общих чертах поговорим об уровнях на которых можно рассматривать компьютер. Каждый уровень основывается на предыдущем. Начнём с самого верха.
Уровень операционной системы. ОС можно рассматривать как:
Уровень архитектуры компьютера. Он представлен материнской платой, которая имеет определённый форм-фактор, встроенные функции закодированные в микросхемах называемых чип-сетом и порты, через которые можно расширять функционал компьютера подключив графическую карту, сетевую карту, дополнительную оперативную память (RAM), жёсткие диски, клавиатуру и пр. Порты влияют на скорость работы и возможности компьютера, что и будет определять его назначение будь то сервер для обработки тысяч запросов в секунду, планшет для пользования Интернетом или игровой ПК с несколькими видеокартами. ОС абстрагирует особенности материнской платы.
Микросхемы выглядят как на картинке ниже и представляют собой мини-компьютер выполняющий простые программы для низкоуровневых задач, к примеру прочитать данные от клавиатуры и передать их дальше чтобы они достигли в конечном счёте процессора. Как правило реализованы в виде аналоговой непрограммируемой микросхемы или микроконтроллера, программируемого на языке С.
Материнскую плату можно рассматривать как колонию микросхем которые общаются между собой через шины и через них циркулируют данные от подключенных устройств к процессору и обратно. Чип-сет — это своего рода нервная система компьютера. Все чипы на материнской плате были изначально созданы чтобы работать друг с другом. Некоторые из них могут иметь особые функции, к примеру таймер или хранение настроек BIOS. Пожалуй самый важный из них тот что имеет встроенную программу (прошивку, BIOS, UEFI) которая начинает выполняться как только появляется электричество. Она находит жёсткий диск с загрузчиком Windows и передаёт тому управление который в свою очередь запускает исполняемый файл ОС, который можно назвать Windows10.exe, на самом деле NtOsKrnl.exe. BIOS знает что искать благодаря соглашению между производителями железа и операционных систем.
Вокруг материнской платы можно собрать мобильный телефон, игровую приставку, серверную станцию или умное устройство. На картинке ниже распространённые форм-факторы материнских плат.
Уровень микроархитектуры представлен процессором (CPU), это сердце материнки и весь чип-сет нужен для обслуживания CPU. Процессор это компьютер в компьютере, более мощный и продвинутый микроконтроллер которому не нужна прошивка, потому как поток команд подаётся на лету, когда планировщик потоков поменял контекст процессора. Функционал процессора делится на подсистемы, к примеру компонент занимающийся математическими и логическими операциями, математический сопроцессор, кэш. Какие-то из них раньше были отдельным чипом на материнской плате, но сейчас их сделали частью ЦПУ, например контроллер прерывания и микросхема под названием “Северный мост” что увеличило скорость работы.
Микроархитектура это не то же самое что архитектура. Весь функционал CPU разделён на компоненты, которые работают сообща. Эти компоненты и их взаимодействие и есть микроархитектура. На блок-схеме ниже они представлены цветными прямоугольниками и квадратиками.
Архитектура процессора это по сути документ который описывает какой функциональностью он должен обладать для того чтобы соответствовать к примеру архитектуре x86, x64 или ARM применяемой на мобильных устройствах. В этом документе описано какие должны поддерживаться команды, назначения регистров и логика работы. Создатели процессоров Intel, AMD, Эльбрус могут реализовывать эту функциональность как угодно и добавлять к ней новые возможности в виде команд, регистров, флагов, прерываний и если ОС знает о них то может использовать. В терминах ООП архитектура ЦПУ — это интерфейс, а микроархитектура — его реализация.
Логические схемы. Цветные прямоугольники с блок-схемы CPU состоят из логических схем, которые производят свои операции на последовательностях нулей и единиц. Процессор видит все данные и команды в виде битов (0 и 1), по формуле любое десятичное число можно представить в виде последовательности 0 и 1, а вот что значит конкретное число зависит от контекста. Это может быть код, цифра, буква. Арифметическое и логическое устройство (ALU) умеет производить сложение двух чисел через побитовые операции. Побитовые алгоритмы сложения, вычитания, умножения и деления давно известны, разработчикам логической схемы их только надо эффективно реализовать.
Цифровые схемы работают с данными на уровне нулей и единиц, а аналоговые полагаются на эксплуатирование законов физики. Они выполняют простейшие манипуляции над битами, такие как сдвиги, AND, OR, XOR. Через эти примитивы реализуются более сложные операции. На картинке ниже представлен аналоговый оператор AND реализованный через транзисторы. На выходе схемы ненулевое напряжение будет только если оно есть на обоих входных контактах (Вх1 и Вх2), иначе ноль вольт. Точно так же работает оператор && в C#. Цифровые схемы в конечном счёте основаны на аналоговых. Физически логические элементы в логических схемах могут быть реализованы не только электронными но и механическими, гидравлическими, оптическими и другими способами.
Уровень законов физики. И наконец самый нижний уровень — это уровень законов физики которые заключены в полупроводниковые радиоэлементы.
Мы будем много говорить про уровень ОС и чуть меньше про архитектуру компьютера, микроархитектуру, аналоговые схемы и радиоэлементы. К последней части у вас должно быть понимание как это всё работает вместе.
Основы Операционной Системы
Когда мы проходили в универе программирование на ассемблере у многих студентов был ступор от таких умных слов как “режимы ядра и пользователя”, под которыми на самом деле скрывается хорошо всем известная ролевая система аутентификации, на всех сайтах есть как минимум “Админ” имеющий доступ ко всем страницам и “Пользователь” имеющий ограниченный доступ. Точно так же роль “Ядро” имеет доступ ко всем возможностям 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). В данном контексте понимается первый смысл — весь код ОС.
Когда на экране появляется окно, то в серверной части ОС (режим ядра) появляется структура данных которая описывает это окно — его положение на экране, размеры, текст заголовка, оконная функция через которую ОС даёт приложению среагировать на события. Поскольку подсистем в ОС много, то и структур данных описывающих один объект может быть несколько, к примеру информация о пользовательском процессе есть в компонентах:
Что такое компонент? Это логически сгруппированный функционал. Компонентом можно назвать ООП-класс, 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 функцию которую надо вызвать. Указатель на этот массив сохраняется в специальном регистре процессора во время загрузки ОС.
Я специально назвал регистр ЦПУ полем. Когда вы пишете программу на C#, то можете добавлять сколько угодно полей в свой класс и давать им понятные названия. У процессоров и микроконтроллеров поля называются регистрами. Когда вы проектируете железку то нужно уже на этом этапе понять сколько регистров (полей) надо, какого размера они должны быть и какой функционал на них возложить, чтобы этого хватало на все случаи жизни для всех мыслимых и немыслимых ситуаций. Представьте, что вам надо написать программу на C#-подобном языке программирования у которого в классе 16 предопределённых полей и вы не можете использовать локальные переменные. Т.е. одно и то же поле может использоваться для хранения залогиненного пользователя, отсортированного массива, временных данных или результата выполнения метода. Имена таких полей должны быть максимально общими, вместо tempData, funcResult будут странные имена EAX, AH, AL, DX и пр. Если бы вы писали на C# эмулятор процессора на архитектуре x86, то код мог бы выглядеть примерно так (DIV — divide, команда целочисленного деления):
Для иллюстрации я добавил проверку на режим ядра. Если происходит ошибка деления на ноль, то процессор уведомляет об этому ОС через прерывание (выбрасывает событие). Во время загрузки ОС предоставляет процессору одномерный массив указателей на функцию, который называется вектор прерываний, где каждому индексу соответствует какое-то событие к примеру деление на ноль. ОС знает архитектуру процессора на котором исполняется и может соответствующим образом упорядочить в массиве указатели на функции. CPU вызывает эту функцию и ОС свой код. К примеру 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++. В укрупнённом виде Винда выглядит так:
Давайте быстренько пробежимся по её компонентам снизу вверх:
Что такое Advanced Configuration and Power Interface? До 1996 года когда вы выключали компьютер через UI, ОС сохраняла состояние системы и потом показывала сообщение что можно отключать питание нажав кнопку на корпусе.






