Board.KolibriOS.org

Official KolibriOS board
It is currently Fri Dec 06, 2019 3:17 am

All times are UTC+03:00




Post new topic  Reply to topic  [ 455 posts ]  Go to page Previous 1 2 3 4 531 Next
Author Message
 Post subject:
PostPosted: Wed May 03, 2006 11:58 pm 
Offline
Kernel Developer

Joined: Wed Mar 08, 2006 6:25 pm
Posts: 3952
Quote:
А это идея - выбрасывать редкоиспользуемые страницы в видеопамять, когда свободная оперативка заканчивается.
Вообще то я думал размещать в видеопамяти обои, шрифты и прочие картинки. Но идея интересная. В принципе ее можно реализовать но там где много видеопамяти, оперативки тоже хватает.
rabid rabbit
Quote:
Почему бы прямо не написать - давайте использовать модель памяти Windows NT? ;)

Подобную схему памяти использует не только NT но и другие системы в разных вариациях. Она проста а значит меньше шансов сделать ошибки при написании кода. И достаточно удобна. Видеопамять и отображаемые на память порты ввода-вывода лежат в верхних адресах, так что логично переместить систему вверх и не дробить адресное пр-во ядра на несколько частей. Еще одно преимущество - все дескрипторы используют нулевой базовый адрес - можно спокойно передавать данные в ядро помещая их в стек и передавая указатель например в ebp - не надо вычислять смещение адресного пр-ва задачи относительно ядра.


Top
   
 Post subject:
PostPosted: Thu May 04, 2006 7:36 pm 
rabid rabbit
Потому что у нас нет денег на покупку стандарта этой модели, и лицензия не позволяет подобных скрещиваний.


Top
   
 Post subject:
PostPosted: Fri May 05, 2006 12:31 pm 
Offline

Joined: Tue Apr 18, 2006 11:48 pm
Posts: 53
Какая покупка? Какие стандарты? Какая нахрен лицензия? ;)


Top
   
 Post subject:
PostPosted: Fri May 05, 2006 12:58 pm 
Offline
Kernel Developer

Joined: Wed Mar 08, 2006 6:25 pm
Posts: 3952
Может у кого-то есть конкретные предложения по архитектуре ядра? Споры по лицензиям лучше вести в отдельной теме.


Top
   
 Post subject:
PostPosted: Fri May 05, 2006 9:01 pm 
Serge
Не очень понял что из сказанного выше - планы, а что уже реализовано.

Думаю, что именование абсолютных переменных стоит залить на SVN сервер.


Top
   
 Post subject:
PostPosted: Fri May 05, 2006 11:18 pm 
Offline
Kernel Developer

Joined: Wed Mar 08, 2006 6:25 pm
Posts: 3952
halyavin
Ситуация такая: я отделил загрузчик от ядра, теперь это отдельная программа. Он использует текстовый ini-файл, где прописаны основные настройки. Загрузчик определяет размер установленной памяти, загружает ядро по физ.адресу 0x10000, дискету по адресу 0х10 0000, создает таблицы страниц, переходит в защищенный режим с включенной страничной адресацией и передает управление ядру.
После включения страничной адресации физ.адреса 0х0 - 0х00FF FFFF отображаются на линейные 0x8040 0000 - 0x813F FFFFF. LFB отображается прямо на адреса видеопамяти. Первая команда ядра начинается по лин. адресу 0x80410000, приложения грузятся с лин. адреса 0х0100 0000, адреса ниже пока зарезервированы для обнаружения ошибок. Работает большая часть программ кроме тех, что используют read/write_process_memory и IPC.
Пока не работают: Shootdown/Reboot, FDC и Vesa1.2 видеокарты. Сейчас я отлаживаю код для динамического выделения памяти в ядре и пишу код который будет делать доступной всю видеопамять.


Top
   
 Post subject:
PostPosted: Fri May 12, 2006 3:52 pm 
Offline
Kernel Developer
User avatar

Joined: Mon Nov 28, 2005 8:00 pm
Posts: 1601
А зачем отделять загрузчик от ядра? А как загрузчик считывает оставшуюся часть ядра? Что, в загрузчике есть код для разбора FAT12/16/32/NTFS/ext*fs?

_________________
Ушёл к умным, знающим и культурным людям.


Top
   
 Post subject:
PostPosted: Fri May 12, 2006 5:02 pm 
Offline
Kernel Developer

Joined: Wed Mar 08, 2006 6:25 pm
Posts: 3952
Сейчас kernel.asm начинается с org 0x80410000. Оказалась довольно сложно компилировать вместе код загрузчика который должен работать в первом мегабайте и код ядра, который должен работать по старшим адресам. Сейчас загрузчик работает только с дискетами там простой код для разбора FAT12. Для загрузки с HD можно сделать отдельную версию - еще лучше модифицировать существующие загрузчики добавив код для инициализации системы. Нынешний дистрибутив расчитан на загрузку с дискеты, загрузчика с HD там нет моя версия не сильно отличается. В принципе можно сделать загрузчик который ничего не будет "грузить" - просто настраивать систему, если все файлы будет грузить в память другая программа.


Top
   
 Post subject:
PostPosted: Fri May 12, 2006 5:11 pm 
Offline
Kernel Developer
User avatar

Joined: Mon Nov 28, 2005 8:00 pm
Posts: 1601
Добавив код для инициализации системы? С переходом в защищённый режим, настройкой таблицы страниц и т.д.? А размер кода, который на это понадобиться? Ну ладно meosload, там нет ограничений на размер. Ну ладно mtldr, там ограничение в 8 Кб, до чего ещё долго. А односекторный acroboot? Кроме того, это означает добавление кучи кода, а ведь есть такие факторы, как банальная лень и ещё более банальная нехватка времени...
Проблемы с компиляцией, как правило, можно решить. А вот переписывать кучу существующего внешнего кода...

_________________
Ушёл к умным, знающим и культурным людям.


Top
   
 Post subject:
PostPosted: Fri May 12, 2006 5:13 pm 
Offline
Kernel Developer
User avatar

Joined: Mon Nov 28, 2005 8:00 pm
Posts: 1601
Да, и ещё: что, удалён код настройки параметров (синий экран загрузки показывается 16-битным загрузочным кодом)? А если в результате неудачно выбранных параметров система просто не загрузится? В текущей версии в этом случае просто изменяем параметры в синем загрузочном экране. А для редактирования файла настроек нужна как минимум загруженная ОС.

_________________
Ушёл к умным, знающим и культурным людям.


Top
   
 Post subject:
PostPosted: Fri May 12, 2006 5:31 pm 
Offline
Kernel Developer

Joined: Wed Mar 08, 2006 6:25 pm
Posts: 3952
Quote:
Добавив код для инициализации системы? С переходом в защищённый режим, настройкой таблицы страниц и т.д.?
Точно так. Размер загрузчика 7.5 Кб ядра 77 Кб. Синий экран настройки никуда не пропал. Исчез выбор MTRR (это будет по дефолту где есть) и источник загрузки (дискета, диск C:\ - все равно не работает). Добавлены текстовый ini-файл. Сейчас готовлю код для сохранения измененных параметров настройки в ini.


Top
   
 Post subject:
PostPosted: Fri May 12, 2006 5:33 pm 
Offline
Kernel Developer
User avatar

Joined: Mon Nov 28, 2005 8:00 pm
Posts: 1601
Похоже, что в mtldr не влезет. В acroboot - тем более. Не говоря уже о том, что дублировать синий экран в нескольких загрузчиках вряд ли целесообразно. Короче, загрузке с жёсткого диска наступит полная хана.
В общем, лично я решительно против идеи выделения загрузчика в отдельную программу/файл (если кто ещё не понял :-))

_________________
Ушёл к умным, знающим и культурным людям.


Top
   
 Post subject:
PostPosted: Fri May 12, 2006 5:39 pm 
Offline
Kernel Developer

Joined: Wed Mar 08, 2006 6:25 pm
Posts: 3952
Да почему хана? Если mtldr может загрузит в память ядро то и отдельный загрузчик для него не проблема. По поводу дублирования кода - это не страшно.


Top
   
 Post subject:
PostPosted: Fri May 12, 2006 6:15 pm 
Serge
Мне интересна вот какая вещь.
Вот загрузили мы ядро, запустили систему. А что с той областью памяти, где располагался загрузчик? Мне кажется, его можно с чистой совестью затереть, как только запустилось ядро.

diamond
Из твоих размышления я все же не понял, почему загрузке с жесткого диска хана? Сформулируй идею в менее расплывчатом виде.


Top
   
 Post subject:
PostPosted: Fri May 12, 2006 7:47 pm 
Offline
Kernel Developer

Joined: Wed Mar 08, 2006 6:25 pm
Posts: 3952
Quote:
Мне интересна вот какая вещь.
Вот загрузили мы ядро, запустили систему. А что с той областью памяти, где располагался загрузчик? Мне кажется, его можно с чистой совестью затереть, как только запустилось ядро.
Я уже об этом думал. Сейчас он располагается по физ. адресу 0x60000. Этот адрес я выбрал произвольно. У меня эта область не используется. Но в принципе его можно поместить в любое место, которое потом затрется.
По поводу загрузки с диска. Сделать загрузку из ДОС очень просто и код будет даже меньше. Для остальных файловых систем все сведется к написанию соответствующих версий find_file/read_file. И какие проблемы в том, чтобы иметь разные версии загрузчика для разных файловых систем?


Top
   
Display posts from previous:  Sort by  
Post new topic  Reply to topic  [ 455 posts ]  Go to page Previous 1 2 3 4 531 Next

All times are UTC+03:00


Who is online

Users browsing this forum: No registered users and 1 guest


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
Powered by phpBB® Forum Software © phpBB Limited