Yoda писал(а):
Поздравляю с почином!
D-S писал(а):
Поздравляю! За ДВА месяца как я понимаю. Что дальше?
Спасибо
Надо разбираться с процессами, ибо многозадачность - это пока что потоки, порождаемые процессом ядра. А для этого нужно уметь грузить исполняемый код в память, поэтому сейчас делаю VFS и рамдиск, чтобы не заморачиваться на данном этапе с программированием драйверов HDD.
Add: Ну, вот, впервые выполнил программу, запускаемую из исполняемого файла формата ELF32
Правда из виртуальных машин работает только на VMware, а вот на QUEMU и bochs - сообщение программы на экран не выводится.
На реальном железе работает без всяких проблем
Разобрался с проблемой запуска процессов на разных VM. Виноват оказался я, грузил сегменты ELF руководствуясь таблицей секций а не программным заголовком. В итоге работает на всех VM
QEMU
Bochs
Ну на VMware тоже работает.
Исполняются 2 процесса. Счетчик только у одного, так-как у моих процессов закономерно не работает синхронизация при выделении памяти на виртуальные экраны - она работает для потоков, так что у меня не мьютексы, а критические секции... К тому же у каждого процесса получается свой менеджер памяти, который я статически компоную с программной при сборке - другого способа для тестирования не придумал, кроме как слинковать с приложением объектные модули ядра, потребные для работы, поэтому виртуальные экраны выделяются в одном и том же месте. В общем, полный бардак, но радует что я приручил таки "эльфов"
Add:Проблему разделения виртуальных экранов удалось конечно решить статическим выделением памяти под них
Теперь это две независимых программы, каждая в своем адресном пространстве, у каждой свой счетчик и загружены они с RAM-диска из ELF-файлов. Это демонстрация, но стоит задуматься о библиотеке ядра, с которой динамически компонуются все приложения. А то в каждой программе всё равно половина ядра прикомпилена