Re[5]: Вопрос по процессам.
От: GromRom Россия  
Дата: 23.05.02 06:19
Оценка:
Здравствуйте Аноним, Вы писали:

GR>>А вот что касается WinNT40, Win2000Prof, Win2000Server — так у них Вытесняющая многозадачность !!!

GR>>Тот же процес, да ещё пара сотней таких же — все вместе будут затормаживать общую производительность, НО НЕ ПОДВЕСЯТ СИСТЕМУ (здесь конечно всё не так котегарично, и у этого правила есть исключения (можно подвесить Win32 системы с вытесняющей многозадачность) )

А>Это означает лишь что схема разделений квантов в NT выполнена лучше чем в 9x. NT у меня также ещё не стояла так что проверить на практике ваши слова я пока не всостоянии.


Ещё бы! у NT Ядро линуксовсоке, вернее квазилинуксовское
квази [i]лат[/i]] — схожее, похожее на.. , сходное с


>> Далее в процессор залезает Диспетчер Задач что-бы решить, ктому дать следующий квант, если нет других процессов с тем же приоритетом он снова засовывает туда первый процесс. Если же есть другой процесс с таким же приоритетом — то сначала засовывается он, а потом снова первый — Что б всем поровну получилось. ;) ;) ;) ;)


А>Да это есть и в 9x. Другое дело что в 9x если есть два процесса с наивысшим приоритетом и они не спят — они будут захватывать квант по очнреди и больше процессор никто не получет. Между прочим у процессов в експлорере приоритет повышен относительно других — но они обычно спят поэтому это и незаметно. Вопрос то в том что будет с теми процессами — приоритет которых ниже. Если они не получат кванта — у вас и будет вариант зависнувшей системы

В WinNT40, Win2000Prof, Win2000Server "вариант зависнувшей системы" маловероятен (я говорил, что на самом деле подвесит можно и их, только для этого надо специально постараться — обычный юзер этого незделает... Хотя Юзеры могут всё... :maniac: ).
Да, пока есть два RealTime процесса, и они не спят — процессы с более низким приоритетом не получат кванта времени.
А вот, "вариант зависнувшей системы" не получится всё равно, потому, что ТЫ Всегда сможешь прервать или понизить приоритет одного из потоков. Как? Непосредственно вызвав Диспетчер задач ([Ctrl]+[Shift]+[Esc])
ТЫ МОЖЕШЬ УПРАВЛЯТЬ СИТУАЦИЕЙ

в Win9x НЕ МОЖЕШЬ смотри мой ответ мудрому KA.


GR>>Это конечно очень грубая схема работы Вытесняющей многозадачности — там есть масса нюансов и с увеличением квант времени (когда финиширующему процессу дают дополнительное ВНЕОЧЕРЕДНОЕ время, чтобы он досчитался до конца, и ушёл из вычислительной смеси, и "не путался больше под ногами") и ещё куча мелочей, о том что каждому потоку не даётся более 32 квантов времени ПОДРЯД, но сейчас не будем о них.


А>Это опять таки есть в 9x — например при передачи фокуса окну приоритет его процесса будет временно повышен. Однако дело то втом что многозадачность гробанётся не от того что никто вообще не получет кванта — от того что на время выполнения потоков система может стать просто не упровляемой. А обычно этого достаточно чтобы пользователь нажал на ресет ;)


Не, погодите, что "Это опять таки есть в 9x" — Что Это? Передача фокуса окну и повышение его проритета есть, а качественной Диспеччеризации процессов нет! То что есть — так, жалкая пародия... Этого правда вполне достаточно, чтобы набирать текст в Ворде, и читать элетронную почту... Но Качественной OS это не назовёшь!!
Ограничения колличества квантов получаемых процессом ПОДРЯД в 9-х тоже нету !!!
Прочитайте ехё раз: о чем писал я и о чем писали Вы — заявление что "Это опять таки есть в 9х"
неопраданно.

А>дело то втом что многозадачность гробанётся не от того что никто вообще не получет кванта — от того что на время выполнения потоков система может стать просто не упровляемой.

Если компьютер ломать — он сломается. Чего же тут удивительного? Да, программисты допускают ошибки в программах, которые не отслеживаются на этапе тестирования — Да это так!
Но вот в WinNT40, Win2000Prof, Win2000Server ошибка, вызванная в одном процессе не повлечёт крах системы и остальных приложений. Потому, что качественно реализованна защита адресного пространства каждого процесса.

В 9-х защита памяти существует только теоретически, хотя в 98 вроде получше...
Девиз настоящих студентов: Не боись — ПРОРВЁМСЯ
Re: Вопрос по процессам.
От: KEP  
Дата: 23.05.02 08:18
Оценка:
Примерчик конечно есть, но в данном случае тебе это не поможет, хотя если в проге есть пользовательский ввод, за который можно спрятать вычисления, то ...
Имеет ли смысл в твоей программе вводить новые данные во время обработки введенных ?
Если да, то это сильно ускоряет процесс (по ощущениям юзверя) Ж:-)
Легкого тебе похмелья, All Ж:-)
Re[6]: Вопрос по процессам.
От: KA it-knowledge-base.blogspot.com
Дата: 24.05.02 14:30
Оценка:
Здравствуйте GromRom, Вы писали:

KA>>IMHO Вы что-то путаете. Я на каком-то заборе когда-то прочитал, что вытесняющая многозадачность появилась в Win32 (не в Win32s), то бишь в Win9x и WinNT.

KA>>А так называемая кооперативная "многозадачность" была в Win3.x


GR>- Доктор, мне уже 90 лет и у меня проблемы в интимной жизни — больше одного раза за ноч не могу....

GR>- Ну так пора уж... Вам же УЖЕ 90 !!

GR>- А моему соседу 95, и он говорит что 5 раз н за ночь может!!!

GR>- Ну так и вы говорите !!!!


А кто "сосед"? Unix?

GR>В Win95 вытесняющая многозадачность была продекларирована только на бумаге, а на самом деле её не было

GR>НЕ БЫЛО, НУ ХОТЬ ТЫ ТРЕСНИ, НЕБЫЛО И ВСЁ !!! Да на бумажке она есть а на деле нет...

Это не значит, что многозадачность в Win95 становиться кооперативной. Такой тип многозадачности используется (-вался? ) ею для совместимости с 16-битными приложениями, а большая часть кода в ней — 16-битная (даже в kernel32 есть кусочки, несмотря на его погоняло ).
Это плосто плохая реализация вытесняющей многозадачности. Можете считать ее менее вытесняющей

GR>Уважаемый KA, зделайте два консольных приложения и запустите их под win95:


GR>первое:

GR>
GR>void main(void){
GR>    while(true);
GR>}
GR>


[skipped]

GR>Запустите первое, Что видете? Правильно, "Тихо замерло всё до утра". Перезагрузитесь.


Win95 не нашел. Win98 подойдет? На ней все нормально, как и на Win2k.

Такого рода код — когда не вызываются системные функции — я писАл. Простой пример: супер-бупер расчеты. С одним нюансом: в одном потоке — расчеты, во втором — окошко для отображения прогресса (висит на WM_TIMER).
И представьте себе, работало как-надо. Или в данном случае тип многоздадачности зависит от количества потоков в приложении?

[skipped]

Как же по-вашему называлась многоздачность в Win3.x?
Даже функция специальная была в ней — Yield.
//
#import <windows.bas>
class IWindows9x:protected DOS { private: virtual HANDLE EnumClouds()=0; };
Re[7]: Вопрос по процессам.
От: MicroCell  
Дата: 08.02.06 16:50
Оценка: :)
Здравствуйте, KA, Вы писали:

KA>Это не значит, что многозадачность в Win95 становиться кооперативной. Такой тип многозадачности используется (-вался? ) ею для совместимости с 16-битными приложениями, а большая часть кода в ней — 16-битная (даже в kernel32 есть кусочки, несмотря на его погоняло ).

KA>Это плосто плохая реализация вытесняющей многозадачности. Можете считать ее менее вытесняющей


Наткнулся тут на свой старый топик, улыбнуло. Товарищи, вы чего? Я говорил о процесса с поднятым приоритетом. Если вы просто создадите консольное приложение, приоритет у него будет такой же как и у любой другой обычной программы и виндовс оно не подвесит никогда в принципе.

Пример процесса с задраным приоритетом — внутренние процессы интернет эксплорера. Если вы поизучаете их работу (или пороитесь в интенете) то обноружите, что они переодически отправляются в спячку, что бы дать работать другим процессам. Зато задранный приоритет позволяет процессу эксплорера обгонять (или догонять, как вам больше нравится процессы нетскэйпа или моззилы по работоспособности. Если бы процессы эксплорера не спали в момент остутствия связи с интом или не отдавали свои неиспользуемые кванты другим, виндовс бы дох намертво при просмотре любой страницы — кстати, иногда ему это и удаётся
А у Вас нет кого нибудь с гравицаппой и пепелацем?
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.