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/ |