LINUX.ORG.RU

100% приоритет процесса


0

0

Можно-ли для программы (работающей в 1 поток) создать глобальную критическую секцию, то-есть чтобы на время выполнения кода остановилось выполнение всех остальных процессов и переключенйи контекста не происходило вообще?

★★★★

Только задрав приоритет процесса до небес.

Это правильный ответ на неправильный вопрос :)

tailgunner ★★★★★
()

man sched_setscheduler

cvv ★★★★★
()
Ответ на: комментарий от tailgunner

Чем он неправильный? Мне нужно временное решение - отлаживать прогу которая будет работать без ОС.

Критический участок будет выполняться буквально 5-10 секунд.

PS: Под виндой это успешно делал отладчик SoftICE.

alexru ★★★★
() автор топика
Ответ на: комментарий от alexru

> Чем он неправильный? Мне нужно временное решение - отлаживать прогу которая будет работать без ОС.

Тем, что "прога которая будет работать без ОС", не должна требовать остановки всей инструментальной системы для отладки.

tailgunner ★★★★★
()
Ответ на: комментарий от alexru

> Ну и где я возьму второй комп для отладки? Не хорошо это конечно, но что-ж делать...

Я не могу представить однонитевую задачу, которая требует остановки всей системы для отладки. Ты что - промахи кэша считаешь вручную?

tailgunner ★★★★★
()

Можно отключить прерывания. Например, iopl(2), и потом cli/sti или {pushfl;cli}/popfl (для x86). Между cli и sti гарантированно ничего не вклинится, получится критическая секция в рамках одного процессорного ядра. Техника обычная, некоторые драйверы X.org'а так делают.

erDiZz
()
Ответ на: комментарий от anonymous

С каких это пор покупка компа за 300 баксов стало проблемой? А есди взять б/у, то ещё дешевле.

krum
()

в принципе возможно, если перенести весь код в ядро,
запретить прерывания и т.д. и вперед

fghj ★★★★★
()
Ответ на: комментарий от tailgunner

Вероятно придется и промахи кеша и предсказателя переходов считать. А пока чтобы ориентироваться нужно хотя-бы узнать насколько наличие ОС реально тормозит работу. Просто чтобы знать.

alexru ★★★★
() автор топика
Ответ на: комментарий от alexru

>PS: Под виндой это успешно делал отладчик SoftICE.

Ну нету под Линукс ничего сравнимого. ;) В таких случаях линуксоиды обычно говорят, что это не нужно.

anonymous
()
Ответ на: комментарий от krum

Ну, во-первых, ты лукавишь. А во-вторых, это пример неприспособленности Линукса для серьезной промышленной разработки. Или, по крайней мере, его ограниченности.

anonymous
()
Ответ на: комментарий от krum

- Какие у вас машины есть в продаже?
- Запорожец.
- Но у него же нет A, B и C, да и вообще он никуда не годится...
- Допили, привари, переделай...

Ну не смешно ли?

anonymous
()
Ответ на: комментарий от anonymous

> Ну не смешно ли?

Ну не смешно ли искать в линуксе аналогию виндовой программы, которая работает под одной архитектурой с определённой (и весьма определённой!) версией системы? Интереса ради можете почитать, на всех ли поддерживаемых линуксом платформах вообще есть режим отладки.

mv ★★★★★
()
Ответ на: комментарий от mv

Просто под linux кряки для программ не пишут, вот и не нужна такая глупость, как softice. Для дебага есть другие средства. А вообще, виндузоиды, кышь отсюда.

krum
()

An open source kernel debugger similar to SoftICE. It provides low level debugging for Microsoft Windows, Linux, OpenBSD, NetBSD, and FreeBSD: http://rr0d.droids-corp.org/

Возможно, чем-нибудь поможет.

anonymous
()
Ответ на: комментарий от mv

С учетом, что 90 % линуксов работает с этой архитектурой, не смешно. А грустно, для некоторых. Остается только, как лиса из басни, говорить:
- Зелен виноград!

;)

anonymous
()
Ответ на: комментарий от alexru

> Вероятно придется и промахи кеша и предсказателя переходов считать.

Для этого есть performance monitor'ы

> пока чтобы ориентироваться нужно хотя-бы узнать насколько наличие ОС реально тормозит работу.

Таймеры, oprofile

tailgunner ★★★★★
()
Ответ на: комментарий от anonymous

Не ссорьтесь :)

Ни разу мне под линуксом не потребовался отладчик уровня softice, да и под виндой использовал его для взлома... Может и действительно не нужно?

alexru ★★★★
() автор топика

Думается мне, ради этого придется похачить ядро - внести изменения в шедулер, что бы он позволял одному процессу выполняться сколь угодно долго, пока тот сам не разрешит шедулеру переключать. Был какойто шедулер с lazy переключением для использования на числодробильных задачах. Можно посмотреть его и допилить по вкусу.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.