Давно занимался этой хуйней. Мечтал написать любительскую 64 битную операционку или модули для Linux. За 3 года в голове очень много теории, но написать я вообще ничего не могу. Знаю синтаксис Си и Nasm. Есть базовые знания об архитектуре x86. С чего начать написание низкоуровневого софта? Есть вообще мысли по этому поводу?
Начни с того, чтобы система могла сама себя загружать. Условно сначала надо написать штучку, которая при загрузке и передаче ей управления загружала ещё что-то. Этим ещё чем-то может быть, к примеру, менеджер памяти. Тогда уже есть две вещи, которые ты можешь написать - загрузчик и менеджер памяти.
Попробуй написать загрузчик, который бы запускался при включении компьютера, и выдавал бы сообщение "Hello world!". Или просил ввести с клавиатуры имя, и писал бы "Здравствуй %name%". Причём напиши всё это на голом ассемблере. Это для начала. Ещё можешь попробовать на ассемблере накодить вычисление N-го члена последовательности фибоначчи. Где число N вводится с клавиатуры. Этот вычисленный член надо вывести на экран.
Ещё затем попробуй накодить какую-нибудь такую же простенькую программу на C, но сделай так, чтобы этот сишный код запускался бы при загрузке компьютера. Т.е. тебе опять по-любому придётся для начала писать и запускать ассемблерный код, а лишь затем этот сишный.
Смог такое сделать? Это значит, что у тебя есть основа, чтобы писать ядро операционки на Си, и запускать его ассемблером при запуске компа.
Про написание ОС ты конечно можешь забыть - это неподъёмная задача. Но поиграться с программированием на низком уровне вполне можно. Напиши код, который бы занимался 1. Вводом-выводом с HDD. Чтение или запись данных. Можно попробовать сделать работу с флоппиком (если есть такой). 2. Ввод-вывод инфы по серийному порту 3. Поиграйся с прерываниями и APIC. Попиши обработчики. 4. Накатай возможность запускать несколько процессов одновременно. Реализуй для них защиту памяти, подкачку инфы с жесткого диска, простейший scheduler. 5. Поиграйся с видеосистемой. Режимы экрана, там. VESA. 6. Поиграйся с портами ввода-вывода и memory-mapped IO. PCI bus.
Вот примерный план того, чем можно упороться где-нибудь на полгода.
>>3565204 (OP) >модули для Linux это суперлегко делается, но юзлесс если нет практического применения и ты максимум что сможешь это ядерный калькулятор написать
>>3565514 >это неподъёмная задача Это очень подъёмная задача, ОС необязательно должна быть уровня жмупинус, потому что на дворе 2025 год, но только смысла от этого хуй да нихуя. >>3565953 Двачаю, писать дрова для какого-нибудь юсб принтера в кернер спейсе в виде модуля - нахой не стоит, лучше сразу писать на libusb, к примеру, сеть - dpdk.