Я пишу операционную систему для образовательной цели и, возможно, производительную систему в будущем, и я хочу начать ее с нуля (я уже это сделал), и я действительно расстроился работа с аппаратными средствами, написание простого драйвера режима VGA-текста было действительно кошмаром. проблема заключается в том, что работать с аппаратными средствами сложно отлаживать, а большинство аппаратных средств является закрытым источником, и я работаю один (слишком много, чтобы справиться со всем доступным оборудованием) моя операционная система работает на архитектуре x86 и, возможно, x86_64 в будущем, так что я спрашивая, есть ли способ, который может помочь избежать непосредственной работы с оборудованием, что-то вроде HAL, но не зависит от цели, которые обеспечивают интерфейс для общения с широким спектром доступных аппаратных средств , если такая вещь доступна. Она должна быть на C или в сборке (но не на C++) потому что я хочу, чтобы мой рот, чтобы быть написан на чистом C и сборки (за благосклонность исполнение)как я могу написать операционную систему, не углубляясь в драйверы устройств
ответ
Моя первая реакция, и, судя по комментариям, а не только моя, было «что осталось делать?». Но это на самом деле не так.
Помимо своего рода аппаратных абстракций в драйверы устройств, есть и другие области, чтобы привести некоторые элементы из Wikipedia article:
- управления процессом
- обработки прерываний
- управления памятью
- Файловые системы
- Сетевое оборудование
- Безопасность
- другие I/O
- Интерфейс пользователя
Проблема заключается в том, что они должны взаимодействовать с драйверами устройств тесно. Вам нужен партнер, работающий над ними, или попытайтесь использовать что-то существующее.
E.g. если вы возьмете дистрибутив NetBSD и сохраните в основном свои драйверы устройств, сохраните загрузочную систему и сократите ядро до минимума, я думаю, вы все равно получите что-то вроде UNIX-подобного.
Также интересным будет аналогичное вырезание некоторой свободной операционной системы из встроенного мира, например. подобный FreeRTOS.
Вы также должны посмотреть на Plan 9, который можно рассматривать как умеренный отъезд из UNIX. Однако следует отметить:
Других факторы, которые способствовали низкому принятию плана 9 включают отсутствия коммерческой резервной копии, низкое число приложений для конечных пользователей, и отсутствие драйверов устройств.
И это было усилие нескольких десятков ученых мирового класса.
'E.g. если вы возьмете дистрибутив NetBSD и сохраните в основном свои драйверы устройств, сохраните загрузочную систему и вырежьте ядро до некоторого минимума. Мне это понравилось, конечно, я не спешу, и я не торопитесь с пониманием NETBSD, но вопрос в том, что «есть документы или ссылки для такой вещи »или какое-то руководство в случае, если я застрял, кроме длинного googling. –
Вы можете проверить копию MINIX и книги операционной системы от Tanenbaum и Woodhull, которая описывает это. См. Https://en.wikipedia.org/wiki/MINIX – mvw
«Разработка и внедрение операционной системы FreeBSD» Маккусика и Невилла-Нила - недавняя книга о ядре FreeBSD. – mvw
Материал из Википедии,
операционная s ystem (OS) - системное программное обеспечение, которое управляет компьютерными аппаратными и программными ресурсами и предоставляет общие услуги для компьютерных программ.
Весь смысл ОС - обеспечить интерфейс к аппаратным средствам, поэтому нет, вы не можете избежать работы с оборудованием, если вы пишете ОС.
Как вы сказали, «аппаратные и программные ресурсы» Я хочу, чтобы какой-то легкодоступный диспетчер аппаратных средств мог помочь мне создать диспетчер процессов и протестировать новые алгоритмы планирования и тестирования, скажем, загрузчики и все такое (без беспокойства по поводу аппаратного обеспечения). –
Опять же, вы несовместимы , Планировщик ядра имеет дело или связан с оборудованием (например, прерываниями, кэшами). –
Re: «Я хочу, чтобы какое-то легко доступное аппаратное обеспечение управлялось», Опять же, это менеджер аппаратного обеспечения. Почему вы хотите написать ОС, если хотите использовать чужую ОС? – ikegami
Вы можете сделать это, если и только в том случае, если другие принимают эту часть, то есть они делают это для вашей ОС, если ваша ОС представляет собой блестящую идею или каким-либо образом она привлекательна для разработчиков или компаний, драйвер не является вашей проблемой, и если ваша ОС не привлекательна, драйвер не работает.
Это невозможно и сокращение в терминах. См. Http://osdev.org/ и, возможно, [GNU hurd] (https://www.gnu.org/software/hurd/hurd.html). –
BTW, Linux - бесплатное программное обеспечение, и почти все драйверы - это бесплатное программное обеспечение –
, но нет руководства, объясняющего, как использовать аппаратные устройства linux для какой-либо другой операционной системы. –