OSDev
http://osdev.su/

Express OS
http://osdev.su/viewtopic.php?f=4&t=178
Страница 16 из 19

Автор:  Himik [ 05 сен 2013, 15:00 ]
Заголовок сообщения:  Re: Express OS

Функции правильные, может быть в программе есть взаимные блокировки. У меня подобная процедура выглядит вот так, для Intel синтаксиса
Код:
static inline int asm_InterlockedExchange(int volatile* Destination, int Exchange)
{
   asm volatile("xchg [%1],%0"
      : "+a" (Exchange): "r" (Destination) : "memory");
   return Exchange;
}

Можешь добавить цикл ожидания и будет тебе спин-лок.

Автор:  phantom-84 [ 05 сен 2013, 16:08 ]
Заголовок сообщения:  Re: Express OS

Спин-блокировка при борьбе за ресурс на одном ядре крайне нерациональна. В классическом мьютексе используется ожидание при доступе к занятому объекту/структуре. Не хотите использовать ожидание, попробуйте хотя бы вместо простого зацикливания дополнительно делать SwitchToNext (Yield). Можно попробовать отдавать управление и напрямую захватившему объект потоку, но это чревато различными неприятными эффектами типа беспричинного игнора отдельных готовых к выполнению потоков. Использование очереди ожидания прежде всего хорошо тем, что позволяет установить справедливый (не хаотичный) порядок доступа к объекту.

Между разными процессами нужно как-то идентифицировать мьютексы (не относящиеся к ядру), к примеру использовать именованные мьютексы. Еще нужно учитывать, какой именно поток (или хотя бы поток какого именно процесса) захватил объект. Иначе получается, что занятый объект может быть разблокирован любым сторонним потоком/процессом. При удалении потока/процесса нужно снимать все блокировки, осуществленные этим потоком/процессом, иначе заблокируются все потоки/процессы, пытающиеся получить доступ к объектам, занятым удаленным потоком/процессом (если конечно не использовались таймауты).

Автор:  Himik [ 19 окт 2013, 01:43 ]
Заголовок сообщения:  Re: Express OS

В версии 2013.10.18 читаем через ACPI о связи прерываний PCI с APIC. Поддержка ACPI очень сокращённая, поэтому интересны результаты работоспособности ОС на разных компьютерах с процессором x86_64.
На сайте проекта загрузочный CD-ROM теперь выпускается в двух вариантах - минимальном и максимальном. Для тестирования ядра достаточно минимального варианта. В минимальном варианте есть только командная консоль и демка matrix. В максимальном варианте добавлены binutils и gcc.

Автор:  Himik [ 02 авг 2014, 00:01 ]
Заголовок сообщения:  Re: Express OS

Выложил для скачивания компилятор GCC 4.8.3 и Binutils работающие в Windows MinGW, производящие формат Linux ELF 32 и 64. В пакет входят заголовочные файлы и библиотеки от Ubuntu Linux 14.04. В папке home есть скрипты, с помощью которых произведены GCC и Binutils из исходников.
https://yadi.sk/d/ufl76MuWYoR3z

Выложил Express OS с поддержкой ACPI через библиотеку Intel ACPICA. В консоль добавлена команда shutdown, выключающая компьютер через ACPI, просьба потестировать. Проверено в эмуляторах Bochs, VMware, и на двух настольных компьютерах.
http://code.google.com/p/express-os

Автор:  Freeman [ 02 авг 2014, 00:40 ]
Заголовок сообщения:  Re: Express OS

Himik писал(а):
В консоль добавлена команда shutdown, выключающая компьютер через ACPI, просьба потестировать.

Athlon64 на EpoX 8KDA3i вырубился.

Автор:  Himik [ 02 авг 2014, 01:29 ]
Заголовок сообщения:  Re: Express OS

Freeman писал(а):
Athlon64 на EpoX 8KDA3i вырубился.
Хорошо.

Автор:  Freeman [ 02 авг 2014, 03:02 ]
Заголовок сообщения:  Re: Express OS

О, про ноут вспомнил. На ноуте HP Pavilion g7 вообще не загрузилась, последняя строчка:
Код:
Module PCAT/pcat.so failed.

Автор:  Himik [ 02 авг 2014, 03:12 ]
Заголовок сообщения:  Re: Express OS

Это с CD-ROM?

Автор:  Freeman [ 02 авг 2014, 03:41 ]
Заголовок сообщения:  Re: Express OS

Да.

Автор:  Himik [ 02 авг 2014, 12:37 ]
Заголовок сообщения:  Re: Express OS

К сожалению у меня нет эмулятора ноутбука :-)

Страница 16 из 19 Часовой пояс: UTC + 3 часа
Powered by phpBB® Forum Software © phpBB Group
http://www.phpbb.com/