Аннотация: Эта книга посвящается Лене, моей дочери. Она для тех, кто хочет быстро изучить компьютер. Фактически замена информатики в школе. Я старался писать её как можно более простым языком. Она ещё не закончена. Продолжать? Конструктивная критика в комментариях принимается. Скажите, какие темы в данной статье раскрыты недостаточно подробно?
Компьютер на пальцах
Часть 1. Теория
Устройство компьютера
Компьютер состоит из вычислительного ядра и периферийных устройств (в просторечии -- периферии). Периферия делится на накопители и устройства обмена -- и устройства для взаимодействия с пользователем. Средства взаимодействия называются "интерфейс" (дословный перевод "междумордие").
1. Вычислительное ядро.
Вычислительное ядро состоит из процессора и оперативной памяти. В оперативной памяти находятся программы, которые выполняет процессор.
В самом простом случае при включении компьютера происходит загрузка -- процесс копирования в оперативную память операционной системы. После того, как операционная система загружена, процессор начинает её выполнять.
Оперативную память можно представить как ниточку, а процессор -- как человечка, который по ней бежит. При этом в процессе "бега" он читает с "ниточки" команды и выполняет их.
Как он их выполняет? Ведь у него нет карандаша и бумаги!
Зато у него есть руки и ноги. Раньше на руках было по 8 пальцев, а на ногах -- по 16. Иногда из двух рук можно составить ногу.
Как ни странно, имея 8 пальцев, можно считать не до 8, а до 256 (2 в степени 8). Дело в том, что важно не то, сколько пальцев загнуто -- а какие именно.
А если представить на ниточке адреса в виде узелков, то не удивительно, что процессор-человечек может не только бежать по ниточке, но и перепрыгивать с одного узелка на другой.
Поэтому программирование -- это как вязание. Более того, раньше "программа" так и называлась - "рутина" (routine).
Шли годы, процессоры становились всё сложнее. Вот и научились выполнять несколько задач одновременно. Процессор обзавёлся "перчатками", которые позволяют сохранять состояние "пальцев" - регистров процессора.
Таким образом, когда процессор загружает в память задачу и какое-то время её выполняет, когда ему надо переключиться на другую задачу, то предварительно он сохраняет состояние задачи (контекст задачи) и может вернуться к ней в любой момент.
Раньше программа загрузки хранилась в микросхеме базовой системы ввода-вывода (Basic Input-Output System, BIOS), теперь -- тоже в микросхеме, но система называется EFI
Ты сидишь, читаешь книгу. Мама тебя просит вынести мусор. Ты запомнила страницу, на которой читала, положила закладку, вынесла мусор и вернулась к чтению. Поздравляю, ты выполнила прерывание.
Прерывание (Interrupt, INT) -- программа в BIOS или операционной системе, которая может быть вызвана по аппаратному запросу от периферийного устройства (Interrupt Request, IRQ). Нажала ли ты кнопку на клавиатуре, двинула ли "мышь" - запускается программа прерывания для обработки поступившего события.
Раньше одно ядро процессора (core) могло поддерживать только одну нить выполнения (да, это так и называется - "нить", thread), но с появлением технологии гипертрейдинга (HyperThreading) одно ядро может одновременно обрабатывать две нити.
А теперь появились и многоядерные процессоры, которые поддерживают сразу несколько потоков выполнения.
Но и процессор может выполнить не всё. Да и систему надо изолировать от прикладных программ. Поэтому теперь процессоры поддерживают 4 уровня выполнения, а выполняемый код и данные разделены. Таков режим работы процессора с сегментно-страничной адресацией. Выполнить данные как код -- не получится: страница с данными защищена от выполнения.
Что же будет, если всё же попытаться выполнить недопустимую операцию -- например, попытаться выполнить данные или просто делить на ноль? Возникнет исключительная ситуация (Exception).
При попытке нарушения защиты страниц старые операционные системы зависали с ошибкой GPF - General Protection Fault. Новые просто снимают сбойную задачу и продолжают работу.
В принципе обработка исключений и обработка прерываний мало чем отличаются. Но теперь можно встраивать обработку исключений в код прикладной программы, чтобы защитить её от сбоя.
2. Периферия ввода-вывода. Дисковые накопители.
Как уже ранее было сказано, операционная система для взаимодействия с пользователем загружается с накопителя. Раньше это была дискета, позднее жёсткий диск, сейчас SSD или NVMe (твердотельные накопители).
Впрочем, загрузить систему так же можно с компакт-диска (CD/DVD/BluRay), с USB-флешки или по сети (PXE Boot). Да, диски для компьютера могут быть и сетевыми. Есть и бездисковые компьютеры с загрузкой по сети.
Как уже было сказано ранее, обычный минимум для пользователя -- монитор, клавиатура, мышь. Сюда же можно добавить колонки и микрофон. А так же принтер, сканер и другие устройства (световое перо или графический планшет).
Раньше были даже варианты работы с компьютером без монитора: вместо монитора использовался матричный принтер, который печатал на рулоне бумаги вводимые команды и результат их выполнения. Сейчас это скорее интересный казус.
4. Контроллеры.
Для связи периферии с вычислительным ядром нужны контроллеры, адаптеры или как их ещё называют -- карты расширения. Для монитора -- видеокарта. Для колонок -- звуковая карта. Для сети -- сетевая карта. Клавиатура, мышь, принтер и сканер сейчас обычно подключаются к портам универсальной последовательной шины -- Universal Serial Bus, USB. Раньше ещё были параллельные порты LPT и последовательные COM. Некоторые устройства, например, модемы 3G/4G до сих пор при подключении по USB эмулируют последовательные порты типа COM19
Впрочем, PS/2 разъёмы для клавиатуры и мыши всё ещё популярны.
Единого стандарта на контроллеры нет, поэтому часто для правильной работы аппаратного обеспечения (hardware) нужны драйверы (программы управления устройствами).
Графический и текстовый интерфейсы.
Раньше операционные системы умели работать только в текстовом режиме. После загрузки операционной системы человек вводил команды и получал результат. Сейчас этот способ работы обычно используется при подключении к удалённой системе по протоколу защищённой оболочки (SSH - Secure SHell)
Основная причина -- это очень экономный способ, который не нагружает лишней работой сеть.
Но сейчас чаще используют графический интерфейс. И его старались сделать "интуитивно понятным".
Когда человек работает без компьютера, он сидит за письменным столом. Стол накрыт скатертью. У человека за спиной шкаф. В шкафу хранятся папки и файлы с документами. На столе у человека лежат открытые документы и инструменты для работы с ними. А под столом стоит урна для ненужных документов.
Когда мы работаем за компьютером, всё что мы видим на экране -- это Рабочий Стол. Его фон почему-то называют Обоями (не знаю, почему не Скатертью). Документы хранятся в файлах, файлы хранятся в папках на Диске. Причём, видео или аудио -- это тоже документ, а проигрыватель -- инструмент для работы.
Корзина для ненужных папок и документов хранится прямо на Рабочем Столе, поскольку в данном случае разместить её под столом было бы несколько затруднительно.
Обычно внизу Рабочего Стола находится Панель Задач, а слева на ней -- кнопка Пуск, которая открывает доступ к инструментам Главного Меню (в том числе "Завершение работы"). Так же на Панели Задач могут находиться кнопки-ярлыки для других задач -- инструментов. Запущенные задачи тоже показаны на Панели Задач.
Справа на Панели Задач находится Системный лоток (Tray), в котором показаны Часы (дата и время), раскладка клавиатуры (рус/eng) и некоторые фоновые задачи.
Устройство операционной системы.
Иногда для работы операционной системы не хватает оперативной памяти и тогда редко используемые страницы выгружаются на диск. Такой процесс называется своп (swap), а дисковая память -- файлом подкачки, разделом подкачки, в общем -- виртуальной памятью.
Ещё одна технология современных операционных систем -- гибернация (Hibernate). При этом на диск сохраняется всё содержимое оперативной памяти, после чего система выключается. При включении после этого происходит не загрузка, а восстановление состояния системы.
Окна
При запуске прикладной задачи - приложения (например, браузера или текстового процессора) обычно появляется Окно приложения. Его можно свернуть/ развернуть, распахнуть/ восстановить или закрыть.
Обычно имеется Заголовок окна, справа у него -- иконки действий, слева -- значок Приложения и название. Ниже -- меню приложения, под ним (не всегда) -- Панель кнопок, а внизу -- Строка статуса. В рабочей области окна располагаются инструменты.
Иногда программа позволяет открыть несколько документов и работать с ними в нескольких вкладках.
Службы.
Но есть программы, которые работают в фоновом режиме. Это Службы (services), в UNIX - демоны (daemons). Обычно они запускаются автоматически при старте системы или вручную. Они не имеют своего окна и для работы с ними нужны программы-клиенты. Например, для службы вебсервера клиентом является программа -- браузер.
Фоновые процессы.
Но есть и другие программы, которые работают в фоновом режиме и при этом они не являются службами. Они просто скрывают свой интерфейс и отображают только иконку в системном лотке. Интерфейс всплывает только при наступлении события, например торрент-клиент сообщает о завершении загрузки или мессенджер отображает пришедшее сообщение.
Часть 2. Практика.
Установка операционной системы OpenBSD.
Почему именно её? Потому что к Windows уже все привыкли. А в данном случае есть хороший повод показать принципы и отличия.
Итак, система ставится в текстовом режиме. Как когда-то Windows NT/2000/XP - только у тех позднее установка переходила в графический режим, а тут нет.
Итак, мы вставили диск и наблюдаем такой экран:
Итак, мы видим, что предлагается систему установить вручную, обновить, запустить автоустановку или перейти в оболочку. Выбираем установку вручную (для автоустановки у нас должен быть файл ответов).
Далее нас спрашивают про раскладку клавиатуры, выбираем русскую. После этого нам предлагают выбрать имя хоста (hostname). Учтите, что имя хоста, имя виртуальной машины и имя в DNS - это три разных имени, которые вовсе не обязательно должны совпадать.
Затем надо задать сетевые настройки:
Адрес IPv4, Сетевую маску, Шлюз по умолчанию,
Доменный суффикс и Адреса серверов DNS
Затем у нас спросят пароль рута, запускать ли службу ssh, запускать ли графический интерфейс, предложат создать пользователя и задать ему пароль (учтите, что этот пользователь сразу будет входить в группу wheel - группу администраторов). И разрешать ли руту вход по ssh (нет).
После этого нам предложат разметить диск.
Остановимся на этом чуточку подробнее.
Итак. Диск раньше был диском. С геометрией, пересчётом цилиндров/дорожек/секторов/головок по алгоритмам Normal / LBA / Large -но с появлением SSD исчезли многие проблемы, такие как "время задержки на позиционирование головки" по причине отсутствия головок чтения-записи как таковых. Поэтому диск можно представить как файл или память. Последовательность данных.
На компьютере может быть установлено несколько операционных систем и при старте обычно предлагается выбор, какую из них загружать (мультизагрузка).
И вот тут мы подходим к интересной теме: разметка диска.
Схем разметки две: старая MBR (Master Boot Record) и новая GPT (GUID Partition Table) - часть стандарта EFI как замена BIOS. На самом деле многие BIOS/UEFI умеют загружаться как в новом формате GPT (UEFI), так и в старом MBR (Legacy). А схема разметки GPT интересна в основном для дисков объёмом более двух терабайт.
В схеме разметки MBR диск может быть разделён на 4 первичных (primary) раздела (partition), один из которых будет являться расширенным (extended). Расширенный раздел так же может быть разделён на 4 раздела -- но уже логических (logical) - и так далее.
Терминология Microsoft несколько запутывает понимание. С точки зрения Windows разделы называются "логические диски" и обозначаются буквой. Разделы должны быть размечены для конкретной операционной системы под конкретную файловую систему (file system). Для Windows это обычно разметка FAT16, FAT32 или NTFS (ранее HPFS - файловая система IBM OS/2 Warp).
Во всех операционных системах процедура разметки так и называется - "разметка файловой системы". Кроме Windows, в которой эта процедура называется "форматирование диска".
Ещё нюанс. Файловые системы UNIX могут быть разбиты на подразделы (slices). Диски в UNIX/Linux называются ada0 (для Parallel ATA) или sda0 (для Serial ATA). Цифра 0 в данном случае -- номер диска. Разделы так же обозначаются цифрами после буквы p (partition) - например, sda0p1. И вот тут немного магии: при разбиении BSD раздела используются буквы: a - обычно корневой или загрузочный подраздел, b - подраздел подкачки (swap), с -- используется для указания на весь раздел и не используется.
Вернёмся к нашей задаче. У нас диск на 8 гигабайт и мы разбиваем его в MBR, указывая "использовать весь диск" - при этом метка файловой системы OpenBSD будет записана как четвёртый раздел в MBR (остальные 3 помечены как пустые). Итак, мы выбрали Whole, Custom Layout
Создаём прочие разделы.
Создали корневой, временный, домашнюю папку и подкачку.
Создали раздел программ (usr), раздел данных (var), проверили разметку (на этом этапе ещё всё можно изменить и переделать иначе), записали изменения на диск и выходим. Далее программа установки запишет на эти разделы разметку файловой системы и спросит нас, откуда ставить пакеты (можно из сети или из интернета, но по умолчанию используется компакт-диск).
Соглашаемся, указываем путь, выбираем комплект нужных нам дистрибутивов (игры и графику ставить не будем). Нас предупредят, что нет верифицированной подписи и спросят, продолжать ли установку без верификации (нет). Скажем Да.
После установки будет предложено указать часовой пояс и перезагрузиться.
Извлекаем диск и перезагружаемся. Теперь мы можем подсоединиться к виртуальной машине по ssh. Запускаем PuTTY.
При первом запуске спросит, принимать ли ключ -- Accept
Входим, получаем рута и устанавливаем Midnight Commander
Установка завершена, теперь сделаем несколько настроек.
1. В /etc/login.conf добавим русские символы и обработаем.
2. Создадим файл /etc/profile
3. Для получения прав администратора в Windows применяют runas, в Linux и *BSD есть команда su и утилита sudo
Но в OpenBSD есть ещё встроенная утилита doas. Отредактируем файл /etc/doas.conf
4. При установке по умолчанию так же запускается несколько ненужных нам (пока) служб. Редактируем /etc/rc.conf и выставляем:
--
Сервер SMB (Контроллер домена или файловый сервер)
--
Прокси-сервер, шлюз, VPN-сервер
И другие, разумеется.
Особо хочу отметить, Midnight Commander тоже можно было не ставить, но тогда пришлось бы вместо редактора mcedit использовать vi - а он достаточно сложен для начинающих.