Сахаров Сергей Александрович : другие произведения.

Компьютер на пальцах

Самиздат: [Регистрация] [Найти] [Рейтинги] [Обсуждения] [Новинки] [Обзоры] [Помощь|Техвопросы]
Ссылки:
Школа кожевенного мастерства: сумки, ремни своими руками
 Ваша оценка:
  • Аннотация:
    Эта книга посвящается Лене, моей дочери. Она для тех, кто хочет быстро изучить компьютер. Фактически замена информатики в школе. Я старался писать её как можно более простым языком. Она ещё не закончена. Продолжать? Конструктивная критика в комментариях принимается. Скажите, какие темы в данной статье раскрыты недостаточно подробно?


Компьютер на пальцах

  

Часть 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). Да, диски для компьютера могут быть и сетевыми. Есть и бездисковые компьютеры с загрузкой по сети.
  
   3. Периферия ввода-вывода. Интерфейс пользователя.
   Как уже было сказано ранее, обычный минимум для пользователя -- монитор, клавиатура, мышь. Сюда же можно добавить колонки и микрофон. А так же принтер, сканер и другие устройства (световое перо или графический планшет).
   Раньше были даже варианты работы с компьютером без монитора: вместо монитора использовался матричный принтер, который печатал на рулоне бумаги вводимые команды и результат их выполнения. Сейчас это скорее интересный казус.
  
   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 - только у тех позднее установка переходила в графический режим, а тут нет.
   Итак, мы вставили диск и наблюдаем такой экран:

0x01 graphic

   Итак, мы видим, что предлагается систему установить вручную, обновить, запустить автоустановку или перейти в оболочку. Выбираем установку вручную (для автоустановки у нас должен быть файл ответов).

0x01 graphic

   Далее нас спрашивают про раскладку клавиатуры, выбираем русскую. После этого нам предлагают выбрать имя хоста (hostname). Учтите, что имя хоста, имя виртуальной машины и имя в DNS - это три разных имени, которые вовсе не обязательно должны совпадать.
   Затем надо задать сетевые настройки:
   Адрес IPv4, Сетевую маску, Шлюз по умолчанию,
   Доменный суффикс и Адреса серверов DNS

0x01 graphic

   Затем у нас спросят пароль рута, запускать ли службу ssh, запускать ли графический интерфейс, предложат создать пользователя и задать ему пароль (учтите, что этот пользователь сразу будет входить в группу wheel - группу администраторов). И разрешать ли руту вход по ssh (нет).

0x01 graphic

   После этого нам предложат разметить диск.
   Остановимся на этом чуточку подробнее.
   Итак. Диск раньше был диском. С геометрией, пересчётом цилиндров/дорожек/секторов/головок по алгоритмам 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

0x01 graphic

   Создаём прочие разделы.

0x01 graphic

   Создали корневой, временный, домашнюю папку и подкачку.

0x01 graphic

   Создали раздел программ (usr), раздел данных (var), проверили разметку (на этом этапе ещё всё можно изменить и переделать иначе), записали изменения на диск и выходим. Далее программа установки запишет на эти разделы разметку файловой системы и спросит нас, откуда ставить пакеты (можно из сети или из интернета, но по умолчанию используется компакт-диск).

0x01 graphic

   Соглашаемся, указываем путь, выбираем комплект нужных нам дистрибутивов (игры и графику ставить не будем). Нас предупредят, что нет верифицированной подписи и спросят, продолжать ли установку без верификации (нет). Скажем Да.

0x01 graphic

   После установки будет предложено указать часовой пояс и перезагрузиться.

0x01 graphic

   Извлекаем диск и перезагружаемся. Теперь мы можем подсоединиться к виртуальной машине по ssh. Запускаем PuTTY.

0x01 graphic

   При первом запуске спросит, принимать ли ключ -- Accept

0x01 graphic

   Входим, получаем рута и устанавливаем Midnight Commander

0x01 graphic

   Установка завершена, теперь сделаем несколько настроек.
   1. В /etc/login.conf добавим русские символы и обработаем.
   0x01 graphic
0x01 graphic
   2. Создадим файл /etc/profile
   0x01 graphic
   3. Для получения прав администратора в Windows применяют runas, в Linux и *BSD есть команда su и утилита sudo
   Но в OpenBSD есть ещё встроенная утилита doas. Отредактируем файл /etc/doas.conf
   0x01 graphic
   4. При установке по умолчанию так же запускается несколько ненужных нам (пока) служб. Редактируем /etc/rc.conf и выставляем:
   pflogd_flags=NO # (отключаем логирование файрволла)
   smtpd_flags=NO # (отключаем сервер почты)
   sndiod_flags=NO # (отключаем вывод звука)
   и комментируем
   #pf=YES (отключаем файрволл)
   5. Накладываем патчи для закрытия известных дырок в системе.

0x01 graphic

   6. Пока установлен только один патч, прочие установим после перезагрузки. Перезагружаемся.
   reboot
   Соединение с сервером теряется, но окно мы не закрываем. После перезагрузки правой кнопкой мыши по заголовку окна -- и выбираем "restart session".

0x01 graphic

   Вводим пароль, получаем рута и устанавливаем патчи
   0x08 graphic
Пошла установка. После её завершения -- всё.
   0x01 graphic
   Проверим, что теперь у нас корректно отображается русский язык. И кстати... Пользователь.
   0x01 graphic
  
   0x01 graphic
   А теперь кратко пробежимся по возможностям системы.
   1. Несмотря на то, что система работает в текстовом режиме, она многопользовательская и многозадачная.
   2. Она поддерживает службы. Список служб пишется в файле /etc/rc.conf в переменную pkg_scripts
  
   Для начинающих - примерный список служб (ролей), в которых может выступать сервер с установленной системой:
  -- Сервер DHCP (Dynamic Host Configuration Protocol)
  -- Сервер Bootp + TFTP (загрузка по сети)
  -- Сервер DNS (Domain Name Service)
  -- Сервер NTP (сервер времени)
  -- Сервер HTTP и FTP (вебсервер)
  -- Сервер SMTP, POP3 и IMAP (почтовый сервер)
  -- Сервер SMB (Контроллер домена или файловый сервер)
  -- Прокси-сервер, шлюз, VPN-сервер
  
   И другие, разумеется.
   Особо хочу отметить, Midnight Commander тоже можно было не ставить, но тогда пришлось бы вместо редактора mcedit использовать vi - а он достаточно сложен для начинающих.

 Ваша оценка:

Связаться с программистом сайта.

Новые книги авторов СИ, вышедшие из печати:
О.Болдырева "Крадуш. Чужие души" М.Николаев "Вторжение на Землю"

Как попасть в этoт список

Кожевенное мастерство | Сайт "Художники" | Доска об'явлений "Книги"