OSDev

для всех
Текущее время: 01 июл 2025, 16:59

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 179 ]  На страницу Пред.  1 ... 6, 7, 8, 9, 10, 11, 12 ... 18  След.
Автор Сообщение
СообщениеДобавлено: 02 фев 2012, 22:03 

Зарегистрирован: 10 май 2007, 11:33
Сообщения: 1209
Mr.McD. писал(а):
Расскажи, как твоя полноценная многозадачная система узнаёт о зависших потоках?
Я бы рассказал, если бы для системы такое понятие существовало.

Цитата:
Ху из "таймслайсинг без вытеснения"? 95% кода современных интерактивных систем (от GUI до компьютерных игр) представляют из себя кооперативную организацию динамических объектов, управляемых событиями (event driven).
Это неправда. События используются совместно с тайм слайсингом. Тайм слайсинг без вытеснения - это то, о чем ты говорил в пред. посте. Единственный такой поток, полностью использующий все отведенное ему время, способен сделать из твоей интерактивной системы умирающего в конвульсиях гиппопотама ))) Вытесняемость на основе приоритетов как раз и позволяет иметь в интерактивных системах потоки, которые способны выполняться непрерывно в течение достаточно длительных промежутков времени.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 02 фев 2012, 23:16 

Зарегистрирован: 25 май 2010, 20:58
Сообщения: 136
phantom-84 писал(а):
Я бы рассказал, если бы для системы такое понятие существовало.

Раз в твоей системе не встречаются "зависающие потоки", то реализуй ты кооперативную систему, мог бы обойтись без таймаутов (которые в кооп.мн. - явление сугобо отладочное).
phantom-84 писал(а):
Единственный такой поток, полностью использующий все отведенное ему время, способен сделать из твоей интерактивной системы умирающего в конвульсиях гиппопотама

Ещё раз: с чего это вдруг?
phantom-84 писал(а):
Вытесняемость на основе приоритетов как раз и позволяет иметь в интерактивных системах потоки, которые способны выполняться непрерывно в течение достаточно длительных промежутков времени.

Посмотри в монитор и скажи: у какой кнопки в браузере приоретет больше, чем у других?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 03 фев 2012, 00:47 

Зарегистрирован: 21 сен 2007, 17:24
Сообщения: 1088
Откуда: Балаково
phantom-84 писал(а):
Цитата:
Ху из "таймслайсинг без вытеснения"? 95% кода современных интерактивных систем (от GUI до компьютерных игр) представляют из себя кооперативную организацию динамических объектов, управляемых событиями (event driven).
Это неправда. События используются совместно с тайм слайсингом. Тайм слайсинг без вытеснения - это то, о чем ты говорил в пред. посте. Единственный такой поток, полностью использующий все отведенное ему время, способен сделать из твоей интерактивной системы умирающего в конвульсиях гиппопотама )))

Но есть пример в Windows. Там оконные события обрабатываются в однопоточном режиме - каждое событие по очереди, без вытеснения. А зависни программа в обработчике сообщения WM_PAINT, всё приложение будет висеть. В целом это работает не плохо.

Mr.McD. писал(а):
Посмотри в монитор и скажи: у какой кнопки в браузере приоретет больше, чем у других?

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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 03 фев 2012, 02:29 

Зарегистрирован: 25 май 2010, 20:58
Сообщения: 136
Himik писал(а):
В общем-то приоритетность повышается всему окну на переднем плане (можно сказать целому приложению), а не отдельным кнопкам.

Ага, а по периметру окна зона особо повышенного приоритета приложения!:)
Himik писал(а):
разница только в диаграмме, тоесть в планировщике, которому не важен механизм переключений.

!

Краткий список гиппопотамов:
Novell NetWare
Apple MacOS (до 9-ой версии включительно)
Contiki OS
nginx (сервер Rambler'а)
OS/2 v0.99

То, о чём я говорю можно глянуть в Википедии: "Событийно-ориентированное программирование" и "Автома́тное программи́рование".


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 03 фев 2012, 11:31 
Аватара пользователя

Зарегистрирован: 14 мар 2011, 12:31
Сообщения: 976
Откуда: Дагоба
pavia писал(а):
Используем сторожевой таймер и нет проблемы.

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

Himik писал(а):
Прерывания должны работать с вытеснением точно так же как в ДОСе, на то они и прерывания.

И где же тогда невытесняющая многозадачность?

А теперь вопрос: в чем отличие между потоками, периодически вызывающими sleep() для передачи управления другим потокам и "подстраховываемыми" сторожевым таймеров и переключением по таймеру с возможностью вызвать sleep() для передачи управления другим потокам? :)))

Mr.McD. писал(а):
Краткий список гиппопотамов:
Novell NetWare
Apple MacOS (до 9-ой версии включительно)
Contiki OS
nginx (сервер Rambler'а)
OS/2 v0.99

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

_________________
Yet Other Developer of Architecture.
The mistery of Yoda’s speech uncovered is:
Just an old Forth programmer Yoda was.

<<< OS Boot Tools. >>>


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 03 фев 2012, 11:53 

Зарегистрирован: 10 май 2007, 11:33
Сообщения: 1209
Himik писал(а):
Но есть пример в Windows. Там оконные события обрабатываются в однопоточном режиме - каждое событие по очереди, без вытеснения. А зависни программа в обработчике сообщения WM_PAINT, всё приложение будет висеть. В целом это работает не плохо.
Речь идет о вытеснении потока другими, более приоритетными, потоками. Это работает неплохо, пока ты не пытаешься в этом потоке прочитать большой файл с битого CD/DVD.

Mr.McD. писал(а):
Ага, а по периметру окна зона особо повышенного приоритета приложения!:)
Т.е. в своих рассуждениях вы не берете в расчет подавляющее большинство реально существующих систем.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 03 фев 2012, 12:09 

Зарегистрирован: 21 сен 2007, 17:24
Сообщения: 1088
Откуда: Балаково
Yoda писал(а):
Himik писал(а):
Прерывания должны работать с вытеснением точно так же как в ДОСе, на то они и прерывания.

И где же тогда невытесняющая многозадачность?

Прерывания это отдельный механизм, поэтому не стоит их напрямую связывать с многозадачностью.

Кооперативная многозадачность должна быть компромиссной, тоесть некоторые механизмы работать с вытеснением, по крайней мере прерывания. И может быть ещё таймерные сигналы (хотя приложение в Windows _самостоятельно_ опрашивает таймерные сообщения - и ничего, всё крутится).


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 03 фев 2012, 13:27 
Аватара пользователя

Зарегистрирован: 14 мар 2011, 12:31
Сообщения: 976
Откуда: Дагоба
Пусть отдельный механизм. Но всё же ты признаёшь, что
Himik писал(а):
тоесть некоторые механизмы [должны] работать с вытеснением, по крайней мере прерывания

Таким образом, опять приходим к выводу о необходимости:
1 таймера (пусть некоторые назовут его сторожевым, хотя суть от этого не изменится);
2 механизма вытеснения задачи.
Эти два пункта автоматически означают реализацию вытесняющей многозадачности, о чём я и написал выше.

У настоящей кооперативной многозадачности есть ещё один важный недостаток – на все процессы возлагается задача по контролю своего времени и передаче управления другим потокам. Это усложняет парадигму программирования и увеличивает затраты процессорного времени на решение задач, не имеющих прямого отношения к функциям потока. Я по прежнему не вижу ни одного мало-мальски серьёзного аргумента в пользу кооперативки.

_________________
Yet Other Developer of Architecture.
The mistery of Yoda’s speech uncovered is:
Just an old Forth programmer Yoda was.

<<< OS Boot Tools. >>>


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 03 фев 2012, 13:38 

Зарегистрирован: 28 окт 2007, 18:33
Сообщения: 1449
Yoda писал(а):
Эти два пункта автоматически означают реализацию вытесняющей многозадачности


Вообще говоря, не означают. Дело в том, что под вытесняющей многозадачностью понимается способность ОС снять с процессора текущую задачу (поток) режима пользователя и поставить другую задачу по своему выбору. Возможность прерывания выполнения задачи кодом самой ОС (т.е. кодом обработчиков прерываний) отнюдь не означает, что текущая задача может быть системой снята -- именно в этом кроется различие между вытесняющей многозадачностью и кооперативной. В системе с вытесняющей многозадачностью система, проанализировав причину прерывания, изменившиеся условия и т.п., может снять прерванную задачу с процессора и предоставить её другой задаче (например, имеющей более высокий приоритет и перешедшей в состояние готовности к выполнению как раз вследствие данного прерывания), а вот в системе с кооперативной многозадачностью управление после обработки прерывания будет обязательно возвращено именно прерванной задаче; другая задача управление не получит до тех пор, пока текущая задача сама это прямо или косвенно не разрешит.

И, кстати говоря, таймер не является строго необходимой вещью; он требуется лишь в случае квантования времени. Без квантования вытесняющая многозадачность требуется для, например, переключения задач в связи с завершением операции ввода-вывода, начатой высокоприоритетной задачей. Так, например, работала вытесняющая многозадачность в DOS/360 (наша ДОС ЕС), вариантах OS/360 (ОС ЕС) и RSX-11 (ОС-РВ) без квантования времени и в FB-варианте RT-11 (ОС ДВК; в этой системе могли быть одновременно активны только две задачи -- переднего плана и фоновая; последняя работала лишь тогда, когда первая находилась в ожидании, и снималась системой с процессора, когда задача переднего плана выходила из ожидания).


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 03 фев 2012, 13:55 

Зарегистрирован: 25 май 2010, 20:58
Сообщения: 136
Yoda писал(а):
Таким образом, опять приходим к выводу о необходимости:
1 таймера (пусть некоторые назовут его сторожевым, хотя суть от этого не изменится);
2 механизма вытеснения задачи.
Эти два пункта автоматически означают реализацию вытесняющей многозадачности, о чём я и написал выше.

О таймере и прерываниях сказано выше, читайте внимательно.
Yoda писал(а):
У настоящей кооперативной многозадачности есть ещё один важный недостаток – на все процессы возлагается задача по контролю своего времени и передаче управления другим потокам. Это усложняет парадигму программирования и увеличивает затраты процессорного времени на решение задач, не имеющих прямого отношения к функциям потока.

В кооперативке разделение проц. времени и передача управления обоснованы логикой работы программы, а не механизмами заложенными в ядре ОС.
Yoda писал(а):
Это усложняет парадигму программирования и увеличивает затраты процессорного времени на решение задач, не имеющих прямого отношения к функциям потока.

Это упрощает представление компонентов программы в виде отдельных функциональных объектов, исключая вынужденную синхронизацию, навязанную вытеснением, и уменьшает затраты процессорного времени, в связи отсутствия этих механизмов.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 179 ]  На страницу Пред.  1 ... 6, 7, 8, 9, 10, 11, 12 ... 18  След.

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 3


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Создано на основе phpBB® Forum Software © phpBB Group
Русская поддержка phpBB