UA3MQJ писал(а):
По поводу ОС. Раз уж пошла такая пьянка, в целях повышения образованности. Расскажите мне что такое многозадачность/многопоточность в винде при том, что аппаратно процессор может реализовывать только переключение процессов, т. е. только многозадачность. Упомяну еще то, что в unix многопоточности нет. А система реального времени QNX все равно не является системой реального времени, а тольго обещает что-то сделать в течении "не больше определенного промежутка времени"... ушел в размышления.
Сначала задам всего 1 вопрос: откуда дровишки про unix?
И намекну: основополагающими объектами unix от рождения были каналы, ПОТОКИ и процессы. Что и того и другого и третьего много надо - объяснять почему?
При этом аналогом виндовых задач являются не потоки, а процессы. Это так сказать, уточнение.
Насчет аппаратного переключения процессов - ну загнул.
Аппаратно процессор может отрабатывать прерывания. И только. Все остальное - как фишка ляжет , т.е. программа велит. В том числе и обработка прерываний.
Программу обзываем по вкусу:QNX, Unix, Windows, DOS.
Вааще коды с дискеты загружу и ни на что кроме клавиатуры реагировать не буду. И то только на 1 кнопку. ВОЛШЕБНУЮ

(RESET не на всех системниках есть!)
Дальше. По теме спора. Вы гг. спорящие вначале определитесь, для чего код пишете. Поскольку есть системы реального времени (RTOS), и есть прочие (кстати все Винды относятся к прочим). RTOS гарантирует отработку некого события за некий интервал времени (в смысле - не позднее чем этот интервал пройдет). По своему определению. Для разных событий могут быть разные интервалы.
Для RTOS без прерываний и приоритетов прерываний никуда.
Между прочим: система прерываний в архитектуре Intel принципиальных изменений не имела с самого первого их микропроцессора.
По теме Винды: вытесняющая многозадачность - это БЫЛО. В ХР и далее задача в зависимости от приоритета получает кванты времени (мал приоритет - мало квантов).
Это не называется вытесняющей многозадачностью.
Именно поэтому ХР завесить, как 95 не получается - у любой задачи квант кончится и заработает другая, а значит пресловутыми 3 пальцами вызываем диспетчер и убиваем зависший процесс. Только порой ждать надоест. И никакая задача не может получить прямой доступ к любому устройству (в том числе и таймеру) без грязных хакерских штучек. Принципиальное отличие линейки NT от линейки Win95.
Далее: линейка NT-XP с IBM имеет нечто общее: WinNT родилась как OS/3. А вот дальше их пути разошлись.
Сейчас главный идеолог линейки NT - инженер из почившей DEC, автор и идеолог RSX-11 (она же ОС РВ ежели по-русски). Оттуда кстати и хохма с расположением таблицы файлов.
Насчет повышения образованности: в 95 программа получала при запуске приоритет и в зависимости от него отдавала проц другой через какой-то интервал времени. Но могла и не отдать и завесить всю систему. Задачи вытесняли друг друга. Типа кто шире пальцы растопырит - тому и больше времени процессора достанется. В том числе и ВСЕ время. Захватил клавиатуру и крутись в бесконечном цикле - делов на 5 минут.
В NT любая запущенная задача в зависимости от приоритета получает кванты времени процессора. При этом ее выполнение прерывает ядро системы. Гарантированно. Ежели конечно не применять вышеупомянутые штучки.
При этом все что может задача - получить адресованное ей сообщение (из очереди сообщений) и его отработать. Если понимает это сообщение.

А эту очередь организует опять же ядро системы.
Ну и соответственно коротко резюме: спорить-то не о чем.
Как работать - по прерываниям или без - зависит только от задачи. Ну в совсем простых случаях - от личных пристрастий. ИМХО.
Простой (и надеюсь наглядный) пример:
Пусть есть AtmegaXXX.
Если я меряю напряжение с помощью встроенного АЦП, задав ему делитель 128 - я легко успею его обслужить по прерываниям. Как правило. А вот если я задам делитель 2, то пока произойдет прерывание, да пока возврат из него - просто запихнуть померянное в память я уже не успею. И поэтому в этом случае, пока не намеряю сколько надо - все остальное пошлю подальше (запрещу прерывания) и буду втупую смотреть - готовы данные АЦП? Как готовы - в память их, и проверить - намеряли сколько надо или нет? Если намеряли - можно разрешать прерывания и дальше работать в других направлениях. Есс-но, если нет более важных задач, чем N, нет N маловато, возьмем M

раз померять АЦП напряжение.
2Yellow Tiger:
Чуть не забыл: прикладной программист не обязан знать баги системы. Вместо этого он знает (если знает

) баги своей среды разработки. Если не веришь - попробуй найти в описании ОС список ее багов. Да вообще - увидишь BSD - запиши и попробуй найти объяснение ...