Board.KolibriOS.org

Official KolibriOS board
It is currently Wed May 22, 2019 6:03 pm

All times are UTC+03:00




Post new topic  Reply to topic  [ 124 posts ]  Go to page Previous 15 6 7 8 9 Next
Author Message
 Post subject: Re: Колибри PE
PostPosted: Mon Aug 20, 2012 10:49 am 
Пенял в смысле что во как можно просто и быстро и он может и вообще все мы тут херней занимаемся. Только он один умный и красивый с транспарантом стоит. (ака Новодворская)


Top
   
 Post subject: Re: Колибри PE
PostPosted: Wed Aug 22, 2012 4:08 pm 
Offline

Joined: Wed Sep 15, 2010 7:22 pm
Posts: 101
У меня такой вопрос: "почему именно SASOS?" (как я понимаю, имеется в виду операционная система с единым адресным пространством, вроде DOS)

P.S.

На мой взгляд, это является самым главным основанием сомневаться в продолжении "традиций Kolibri OS" !


Top
   
 Post subject: Re: Колибри PE
PostPosted: Wed Aug 22, 2012 8:20 pm 
Offline
Kernel Developer
User avatar

Joined: Fri Aug 14, 2009 1:46 am
Posts: 1328
FireWall
отдельное адресное пространство для каждого приложения - это второстепенная фича,
Колибри вполне могла бы входить (2-ой головой) и в SAS x64-режим, оставаясь при этом самой собой на 1-й голове.
там же есть RIP-адресация, во времена DOSа мы и мечтать о таком не могли.

Offtopic: двухголовая Колибри :shock: должна внушать мощные галлюциассоциации с известным геральдическим монстром


Top
   
 Post subject: Re: Колибри PE
PostPosted: Wed Aug 22, 2012 11:10 pm 
Offline
Kernel Developer

Joined: Wed Mar 08, 2006 6:25 pm
Posts: 3952
FireWall
SAS не единое адресное пространство в стиле DOS, а единое пространство адресов. То есть система с неперекрывающимися адресными пространствами и глобальными адресами. Сами адресные пространства изолированы друг от друга таблицами страниц.
Мне SAS представлялась идеальным вариантом в сочетании микроядро+PE формат исполняемых файлов. Для монолитного ядра преимущества SAS не столь очевидны, но всё равно интересно попробовать.


Top
   
 Post subject: Re: Колибри PE
PostPosted: Sun Sep 02, 2012 6:57 pm 
Offline

Joined: Wed Sep 15, 2010 7:22 pm
Posts: 101
(1) Насколько я понимаю, Kolibri PE сейчас довольно сильно отстаёт от основной версии. Однако уже имеется загрузчик PE-формата, правда 32-х битный. Это так?

(2) Вы собираетесь отталкиваться от текущей версии Kolibri PE или сначала привести её в соответствие с основной версией?


Top
   
 Post subject: Re: Колибри PE
PostPosted: Sun Sep 02, 2012 9:47 pm 
Offline
Kernel Developer

Joined: Wed Mar 08, 2006 6:25 pm
Posts: 3952
FireWall
1)Работа остановилась три года назад. Загрузчик РЕ используется в транке для загрузки драйверов. Более продвинутая версия есть в исходниках newlib.
2)Я хочу полностью поменять проект и делать новое ядро для амд64.


Top
   
 Post subject: Re: Колибри PE
PostPosted: Sat Sep 08, 2012 11:07 pm 
Offline
Kernel Developer

Joined: Wed Mar 08, 2006 6:25 pm
Posts: 3952
Сделал переход в long mode. Если всё пройдёт успешно на экране появится небольшое сообщение.


Attachments:
File comment: Просто скопируйте ядро в kolibri.img
kernel.7z [5 KiB]
Downloaded 142 times
Top
   
 Post subject: Re: Колибри PE
PostPosted: Sun Sep 09, 2012 3:03 am 
Offline
Kernel Developer
User avatar

Joined: Fri Aug 14, 2009 1:46 am
Posts: 1328
На одноголовом AMD Sempron 140 отработала зачётно.
1-я строчка это CPUID, я так тоже умею
а вот дальше было интересно взглянуть на код.

скриншот (по понятным причинам :) ) выслать не могу.

Кстати, а как выводить текст в Long Mode ?


Top
   
 Post subject: Re: Колибри PE
PostPosted: Sun Sep 09, 2012 12:09 pm 
Offline
Kernel Developer

Joined: Wed Mar 08, 2006 6:25 pm
Posts: 3952
Обычный printf :) А текст выводится ручками, в видеопамять.
Spoiler: Show
Не уверен, что для АМД флаги cpuid совпадают

int printf(const char* format, ...);

static void cpuid(u32_t op, u32_t *eax, u32_t *ebx,
u32_t *ecx, u32_t *edx)
{
asm volatile("cpuid"
: "=a" (*eax),
"=b" (*ebx),
"=c" (*ecx),
"=d" (*edx)
: "a" (op), "c" (0)
: "memory");
}

void init64(void)
{
static char x86_model_id[64];
u32_t *v;

u32_t ops=0;

u32_t _eax, _ebx, _ecx, _edx;

v = (u32_t *)x86_model_id;

cpuid(0x1, &_eax, &_ebx, &_ecx, &_edx);
if( _ecx & 1)
ops|= 8;
if( _ecx & (1<<17))
ops|= 1;
if( _ecx & (1<<5))
ops|= 0x10;
if( _ecx & (1<<28))
ops|= 0x200;

cpuid(0x80000001, &_eax, &_ebx, &_ecx, &_edx);

if( _edx & (1<<26))
ops |= 2;
if( _edx & (1<<29))
ops |= 4;

cpuid(0x80000002, &v[0], &v[1], &v[2], &v[3]);
cpuid(0x80000003, &v[4], &v[5], &v[6], &v[7]);
cpuid(0x80000004, &v[8], &v[9], &v[10], &v[11]);

printf("Long mode enabled\n");
printf("%s\n",v);

printf("%s%s%s%s%s%s",
(ops & 1)?"PCID supported\n":"",
(ops & 2) ? "1Gb pages supported\n":"",
(ops & 8) ? "SSE3 supported\n":"",
(ops & 0x10) ? "VMX supported\n":"",
(ops & 0x200) ? "AVX supported\n":"",
(ops & 4) ? "long mode supportd\n":"");

printf("System halted");
asm volatile ("hlt");
};
Появились сомнения, писать ли код в Колибри РЕ или стартануть новую ветку, KPE64. Пока буду выкладывать исходники на фтп. Ещё планирую написать несколько постов с подробным описанием процесса инициализации ядра, что к чему, почему и как.


Top
   
 Post subject: Re: Колибри PE
PostPosted: Mon Sep 10, 2012 11:51 am 
Offline
Kernel Developer
User avatar

Joined: Fri Aug 14, 2009 1:46 am
Posts: 1328
Ну, если ручками, да еще и в видеопамять, тогда уж лучше фреймбуфер Колибри использовать, НЕ ?

а оттуда и скриншоты можно снимать, и логи записывать, и GUI-мессиджи передавать без велосипедов.

(это я типа еще раз намекнул что) уже существующий сервис 32-битного ядра мог бы очень упростить отладку и тестирование.


Top
   
 Post subject: Re: Колибри PE
PostPosted: Mon Sep 10, 2012 12:48 pm 
Offline
Kernel Developer

Joined: Wed Mar 08, 2006 6:25 pm
Posts: 3952
Quote:
Ну, если ручками, да еще и в видеопамять, тогда уж лучше фреймбуфер Колибри использовать, НЕ ?
Не-а. Я же в текстовом режиме гружусь.
Quote:
...уже существующий сервис 32-битного ядра мог бы очень упростить отладку и тестирование.
В теории да. А на практике двум пернатым в одной берлоге тяжело ужиться. Тем более что сейчас я инициализацию ядра делаю, а для этого лучше монопольный доступ.


Top
   
 Post subject: Re: Колибри PE
PostPosted: Mon Sep 10, 2012 3:30 pm 
Offline
User avatar

Joined: Tue Aug 25, 2009 4:45 pm
Posts: 794
Я могу и отдельный svn поднять, или git, для KPE64


Top
   
 Post subject: Re: Колибри PE
PostPosted: Mon Sep 10, 2012 8:05 pm 
Offline
Designer
User avatar

Joined: Thu Jan 25, 2007 3:33 pm
Posts: 5047
Правильно определил проц i3 330m, long mode enabled.

_________________
Через тернии к звездам


Top
   
 Post subject: Re: Колибри PE
PostPosted: Tue Sep 11, 2012 1:20 pm 
Offline
Kernel Developer

Joined: Wed Mar 08, 2006 6:25 pm
Posts: 3952
Quote:
The Pentium 4, Intel Xeon, and P6 family processors provide special support for the physical memory range from 0
to 4 MBytes, which is potentially mapped by both the fixed and variable MTRRs. This support is invoked when a
Pentium 4, Intel Xeon, or P6 family processor detects a large page overlapping the first 1 MByte of this memory
range with a memory type that conflicts with the fixed MTRRs. Here, the processor maps the memory range as
multiple 4-KByte pages within the TLB. This operation insures correct behavior at the cost of performance. To avoid
this performance penalty, operating-system software should reserve the large page option for regions of memory
at addresses greater than or equal to 4 MBytes.
Атрибуты кеширования страницы сохраняются в TLB чтобы не проверять mtrr каждый раз. Первый мегабайт содержит память с разными атрибутами. И для него процессор разбивает большую страницу на маленькие, что приводит к потере производительности.
Нет ли смысла зарезервировать первые 4 или 2 Мб для PAE и переместить ядро выше ?


Top
   
 Post subject: Re: Колибри PE
PostPosted: Tue Sep 11, 2012 1:44 pm 
Offline
Kernel Developer
User avatar

Joined: Fri Aug 14, 2009 1:46 am
Posts: 1328
да, на АМД тоже первый мегабайт - сплошной паркет из Fixed MTRR.
надо попробовать сдвинуть физ.адрес ядра выше 4М и сравнить производительность.


Top
   
Display posts from previous:  Sort by  
Post new topic  Reply to topic  [ 124 posts ]  Go to page Previous 15 6 7 8 9 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