[quote name='Abaddon' post='147569' date='Dec 14 2005, в 21:04']
Т.е. всё-таки твоя критическая секция прервётся обработчиком прерываний?
Не такая уж она "монопольная"

Уже что-то.
Только в линейке НТ, до этого просто блокировались прерывания...Как результат - малейшая ошибка,и система встает колом не реагируя ни на что. В НТ - просто блокируется планировщик задач, таким образом система отавляет контроль за системой себе. В линуксе - это присходит по другому - задача реально становится монополисткой, и пока она не отпустит систему, никто управления не получит, даже ядро...
[quote]
Сорри, конечно, но это полный бред.
Никакая современная операционка в здравом уме не допустит, чтобы какая-то задача забрала себе комп под полный контроль.
[quote]
Мьютексы - это лишь инструменты реализации в т.ч. и критических секций.
А "критическая секция" - это термин многопоточного и многозадачного программирования.
Причём он ближе к тому определению, которое я "вспомнулировал", чем к определению "by MS".
Да, но на практике их понимание более удобное... Кстати, как выяснилось и не только их, но и господина Торвальдса
. И не нужно иметь 3 инструмента для решения одной задачи, и ниодного для решения другой... Там как-раз каждый из инструментов для своих целей... только умей использовать (что случается редко
).
[quote]
Лирика.
Физика будет в самом низу.
[quote]
В таком случае ВСЕ ресурсы ты под себя выделить не можешь... Или по твоему, как только ты активировал мутекс или семафор ты получишь полностью (максимально возможное) время ЦПУ?
[quote]
Есть ресурс.
Есть конкурирующие за него потоки (задачи).
Критическая секция позволяет одному из них получить монопольный доступ к ресурсу.
Какой именно ресурс - определяет программист.
Может это участок памяти, может порты ввода-вывода, может файл, да хотя бы и процессор!
Не пойму, что я не так объясняю-то? Вроде всё доступно и понятно...
[quote]
А мутексы кроме ресурсов, называемых данными ничего тебе блокирнуть не дадут

[quote]
Таких ресурсов вообще нет. Ещё бы сказанул: "информация"!
[quote]
Данные - это память, файлы, порты и прочее, кроме времени

[quote]
А Вы, батенька, философ

Однако, философия наука не прикладная - тут программировать нужно!
[quote]
А про "кванты времени" в настоящих критических секциях речи вроде вообще не идёт.
О квантах времени речь идет ВСЕГДА, если конечно ось многозадачная
[quote]
Ох, ё-ё...
Ну да ладно...
[quote]
Есть отличия: драйвер выполняется в привилегированном режиме.
Соответственно он, если ему нужно будет, может запретить прерывания, может работать с железом как хочет. Т.е. наиболее естественное решение: отдать такие функции которые ты описываешь - ему.
Не все функции ты можешь отдать ему...
[quote]
Функции по работе железом, по захвату управления компом - это драйвер.
[quote]
И в привелигированный уровень ты можешь столкнуть любой поток[quote]
Детсад.
Вызываешь ЛЮБОЙ сервис ОС - переключаешься в режим ядра, в привилегированный режим.
Только выполняется-то там не твой код, а код ядра!
[quote]
Дело в том, что Линукс использует двухслойную систему защиты,как и винда, более того, рут выполняется на уровне ядра[quote]
Я сейчас заплАчу!
В привилегированном режиме работает ТОЛЬКО ядро и его модули!
[quote]
[i]Из пользовательского режима ..., можно перейти на более высокий уровень. Про это можешь почитать в книгах, относящихся к программированию железа, в т.ч. портов[quote]
Программирование портов?
А при чём тут порты?
Хоть небольшой пример, хоть не на С, а просто словесами можешь описать что и как происходит?
[quote]
Как и ожидалось, линукс имеет те-же средства, как и винда, реализованные по аналогичному методу, за исключением отсутствия защиты от дурака (по крайней мере видимой).
[quote]
Йопт. Нифига себе выводы :\
А поподробнее?
[quote]
Я очень рад Вашему отношению к линуксу и виндам
[quote]
А какое у меня отношение?
Я одинаково ровно дышу к обеим операционкам.
[quote]
Предпочитаю взвешивать и разбираться
[quote]
Вот, дошли до разбирательства, а я добрался до дома и, как и обещал, открыл талмуд, который должен быть на столе у всех win-программеров:
Джеффри Рихтер
"Windows. Создание эффективных Win32-приложений с учётом специфики 64-разрядной версии Windows"
Серия "Для профессионалов". Издательство "Питер".
Вот что у него написано про критические секции (стр.197):
Критическае секция (critical section) - это небольшой участок кода, требующий монопольного доступа к каким-то общим данным. Она позволяет сделать так, чтобы единовременно только один поток получал доступ к определённому ресурсу.
[Атансьён!]
Естественно, система может в любой момент вытеснить Ваш поток и подключить к процессору другой, но ни один из потоков, которым нужен занятый Вами ресурс, не получит процессорное время до тех пор, пока Ваш поток не выйдет за границы критической секции.
По-моему всё ясно и понятно. И именно так я и объяснял.
Ещё небольшой концептуальный пример (стр.198):
...
CRITICAL_SECTION g_cs;
...
EnterCriticalSection (&g_cs);
...
LeaveCiticalSection (&g_cs);
НИЧЕМ (кроме названий функций и типов) не отличается от мьютексов в Linux'е. Да и странно, если бы отличались - делают-то одно и то же.
Так что получается у мелкомягких такое же понимание критической секции, как и у всех.
У тебя только что-то расходится.
Я чуть с ума не сошёл, вдумываясь в твои опусы!
