150

Доступно об АйТи: «Сейчас, погоди, дискетку доформатирую»

Серия Доступно об АйТи

Начнём с анекдота.

Подходит ребёнок к Гейтсу:
— Покажи, что такое многозадачность.
— Сейчас, погоди, дискетку доформатирую.

Попытаюсь объяснить, откуда ноги растут.

На самом низком уровне

Компьютерное железо на уровне процессорных команд представляет собой некое подобие памяти. Если говорить упрощённо, есть адрес памяти или несколько — например, от B800:0000 до B800:3FFF (страница цветного текстового режима, если что). Пишем в эти адреса данные, текст появляется на экране.

Всё классно, кроме одного вопроса.

Если платформа «взлетит», в будущем появятся компьютеры с другой конфигурацией «железа». Как обеспечить совместимость сверху вниз, чтобы уже сейчас теперешнее ПО было готово к ещё не появившимся компьютерам?

И тут есть два способа.

  1. В новом «железе» сделать совместимый режим, принимающий такие же команды, как и старое. Известный пример — переход накопителей в начале 2010-х на 4-килобайтный сектор диска, когда винчестеры делали вид, что секторы на диске старые 512-байтовые (ценой сниженной производительности).

  2. Сделать программную прослойку — драйвер. Грубо говоря, мы у драйвера спрашиваем: а что ты можешь? И он отвечает: я диск из 500 миллиардов 4-килобайтовых секторов, механический. А давай прочитай сектор №1234…

Кто пишет драйверы?

В реалиях современных 32- и 64-битных ОС — производитель «железа» и собственно ОС. Опустим проблему, когда аппаратура есть, а драйвера под нужную ОС нет. С критичным «железом» — экраном, дисками, клавиатурой — получается порочный круг.

Где хранится драйвер? — На диске!

Как читать диск? — Через драйвер!

Как разорвать круг?

Знакомьтесь, BIOS!

Basic input/output system = базовая система ввода вывода. Это прошивка материнской платы, изначально (в исходном IBM PC) вообще 8 килобайт, решающая три основных задачи.

  1. Минимальный тест памяти и прочего оборудования.

  2. Конфигурирование оборудования, задание последовательности загрузки.

  3. Простейший драйвер для критичного оборудования вроде дисков и клавиатуры.

А теперь вопрос: как сослаться на функцию, например, «считать сектор диска»? Старый компьютер ZX Spectrum вызывал функции своего BIOS просто через адреса памяти, но это также мешает совместимости. В современных ОС за всё это отвечает динамическая компоновка программ — где-то в исполняемом файле есть команда «найти адрес функции ReadFile, и подставь его по адресам X и Y». Сложно.

Как это сделано в BIOS, а также в минималистичных ОС вроде DOS?

Процессор иногда для нужд аппаратуры может совершить прерывание — бросить то, чем он занимается, экстренно обслужить клавиатуру или таймер, и вернуться к делу. Процессор 8086 имеет целых 256 прерываний, 8 из них используются самим процессором, например для работы с делением на ноль. Компьютер IBM AT имеет для своих железных нужд всего два контроллера прерываний, по 8 штук каждый.

Остальные 232 прерывания программные — вызываются только вручную и пущены на такие вот драйверы. Существуют резидентные программы (драйверы, антивирусы и прочее) — они подменяют адреса функций прерывания (перехватывают прерывания), чтобы добавить или подкорректировать функциональность. Я и сам писал мелкие резиденты — например, чтобы в Doom отключить ось Y мыши (она отвечала за хождение взад-вперёд и только мешала).

Что же с дисками?

Дисками — посекторным чтением, записью и форматированием — занимается прерывание 13, принадлежащее BIOS. Кто пишет BIOS? — Производитель материнской платы или нанятая им компания.

Windows 95 сделала очень многое для эмуляции DOS, многие из старых программ будут работать на Windows и даже получат немножко новой функциональности вроде вставки из буфера обмена. Но на самом деле всей железной функциональностью занимаются 32-битные драйверы.

Форматирование диска, когда на нём ничего нет, кроме магнитного слоя,— задача сложная, и часто работает в жёстком реальном времени — нужно точно отсчитать время, когда головка над нужным… тем, что должно стать сектором. И в Windows для совместимости не нашли ничего лучшего, чем вызывать не 32-битные драйверы, а чистое прерывание 13 из BIOS и/или резидента!

Для этого Windows отключает немалую часть своей функциональности, пока исполняется старая функция форматирования. Включая планировщик, основанный… сюрприз, на таймере!

Разумеется, всё это касается только DOS-форматёров, в частности FORMAT . COM. Новый оконный форматёр, спрятанный где-то в Проводнике, этого недостатка не имеет.

IT минувших дней

1.2K постов7.4K подписчиков

Правила сообщества

Запрещается добавлять новости о прошлогодних новинках, а также посты, не относящиеся к тематике "ретро в ИТ".

Желательно соблюдать правила приличия.

Вы смотрите срез комментариев. Показать все
4
Автор поста оценил этот комментарий

Драйвер для doom? Ты чет, малой, психанул. Да, помню такую проблему. Но, решалась она как то сильно проще. Вроде правки конфигурации или ключика в командной строке. Правда, как конкретно, уже и не помню. 30 лет прошло...

раскрыть ветку (1)
2
Автор поста оценил этот комментарий

Может. Я просто поднял движение по X в комфортный диапазон: штатного не хватало, можно было завысить через файл конфигурации, но если залезть в настройки после этого — игра вылетала. А по Y убирал совсем.

Вы смотрите срез комментариев. Чтобы написать комментарий, перейдите к общему списку

Темы

Политика

Теги

Популярные авторы

Сообщества

18+

Теги

Популярные авторы

Сообщества

Игры

Теги

Популярные авторы

Сообщества

Юмор

Теги

Популярные авторы

Сообщества

Отношения

Теги

Популярные авторы

Сообщества

Здоровье

Теги

Популярные авторы

Сообщества

Путешествия

Теги

Популярные авторы

Сообщества

Спорт

Теги

Популярные авторы

Сообщества

Хобби

Теги

Популярные авторы

Сообщества

Сервис

Теги

Популярные авторы

Сообщества

Природа

Теги

Популярные авторы

Сообщества

Бизнес

Теги

Популярные авторы

Сообщества

Транспорт

Теги

Популярные авторы

Сообщества

Общение

Теги

Популярные авторы

Сообщества

Юриспруденция

Теги

Популярные авторы

Сообщества

Наука

Теги

Популярные авторы

Сообщества

IT

Теги

Популярные авторы

Сообщества

Животные

Теги

Популярные авторы

Сообщества

Кино и сериалы

Теги

Популярные авторы

Сообщества

Экономика

Теги

Популярные авторы

Сообщества

Кулинария

Теги

Популярные авторы

Сообщества

История

Теги

Популярные авторы

Сообщества