Вытесняющая многозадачность (Как её показать?)

Взгляд изнутри

Модератор: Модераторы разделов

sciko
Сообщения: 1744
Статус: Ъ-участник
ОС: Debian/Ubuntu/etc

Вытесняющая многозадачность

Сообщение sciko »

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

ЗЫ. Задача появилась, т.к. в Рукипедии какой-то не совсем умный человек написал, что в Линуксе реализована кооперативная многозадачность.
Спасибо сказали:
yaleks
Сообщения: 2121
Статус: вне статуса
ОС: Gentoo ~

Re: Вытесняющая многозадачность

Сообщение yaleks »

sciko писал(а):
29.06.2009 12:00
ЗЫ. Задача появилась, т.к. в Рукипедии какой-то не совсем умный человек написал, что в Линуксе реализована кооперативная многозадачность.

Где?
А так http://ru.wikipedia.org/wiki/Вытесняющая_многозадачность продемонстрируйте kill.
Спасибо сказали:
Аватара пользователя
diesel
Бывший модератор
Сообщения: 5989
ОС: OS X, openSuSE, ROSA, Debian

Re: Вытесняющая многозадачность

Сообщение diesel »

запустить что-нить требующее много процессора(расчеты какие-нить), и плейер - музыка в плейере не должна заикаться, Х-ы и прочие запущенные программы не должны тормозить, проделать тоже самое в Windows 98 :-). Но, нужно помнить, что вытесняющая многозадачность - это хорошо, но на практике для пользователя десктопа всех прелестей вытесняющей многозадачности не увидишь, поскольку есть Х-сервер, и если его одна из запущенных программ подвесит - то висеть будет вся графика.

В русской викки написано что в Linux долгое время была кооперативная многозадачность, а не то что только она сейчас и есть.
Спасибо сказали:
Аватара пользователя
GMar
Сообщения: 237
Статус: Будущий математик
ОС: Kubuntu,Ubuntu(UNR) 10.04

Re: Вытесняющая многозадачность

Сообщение GMar »

ЗЫ. Задача появилась, т.к. в Рукипедии какой-то не совсем умный человек написал, что в Линуксе реализована кооперативная многозадачность.

Реализована, так же как и вытесняющая.
Если не ошибаюсь Novell Netware очень удачный пример невытесняющей многозадачности.
Просто скажите что это опенсорц, кому что надо то и реализовано. Вплоть до ART Linux - advanced real-time linux, для японского робота
Спасибо сказали:
sciko
Сообщения: 1744
Статус: Ъ-участник
ОС: Debian/Ubuntu/etc

Re: Вытесняющая многозадачность

Сообщение sciko »

yaleks писал(а):
29.06.2009 12:36
А так http://ru.wikipedia.org/wiki/Вытесняющая_многозадачность продемонстрируйте kill.
А это мысль!
Вот что я придумал:
1. Написать скрипт реализующий бесконечный цикл. (Думаю можно и conky обойтись)
2. Прибить его через killall.

diesel писал(а):
29.06.2009 13:00
запустить что-нить требующее много процессора(расчеты какие-нить), и плейер - музыка в плейере не должна заикаться, Х-ы и прочие запущенные программы не должны тормозить, проделать тоже самое в Windows 98 :-).
На это можно сказать, что все программы хорошие и сами отдают ресурсы, а не система их заставляет.
diesel писал(а):
29.06.2009 13:00
поскольку есть Х-сервер, и если его одна из запущенных программ подвесит - то висеть будет вся графика.
А что мешает разблокировать кернел-хаком клаву, перейти в другую консоль и принудительно прибить/рестартануть иксы. Кстати, кернел хаком же можно закрыть все программы с сохранением результатов.

GMar писал(а):
29.06.2009 13:06
Реализована, так же как и вытесняющая.
Не знал. Спасибо! Но она вроде бы дохлая...
Спасибо сказали:
Аватара пользователя
xar0h
Сообщения: 164
ОС: разные

Re: Вытесняющая многозадачность

Сообщение xar0h »

sciko писал(а):
29.06.2009 14:22
diesel писал(а):
29.06.2009 13:00
запустить что-нить требующее много процессора(расчеты какие-нить), и плейер - музыка в плейере не должна заикаться, Х-ы и прочие запущенные программы не должны тормозить, проделать тоже самое в Windows 98 :-).
На это можно сказать, что все программы хорошие и сами отдают ресурсы, а не система их заставляет.
diesel писал(а):
29.06.2009 13:00
поскольку есть Х-сервер, и если его одна из запущенных программ подвесит - то висеть будет вся графика.
А что мешает разблокировать кернел-хаком клаву, перейти в другую консоль и принудительно прибить/рестартануть иксы. Кстати, кернел хаком же можно закрыть все программы с сохранением результатов.

Интересно только, - как новичок будет всем этим заниматься )
I'm just a bastard but at least i admit it.
Спасибо сказали:
Аватара пользователя
serzh-z
Бывший модератор
Сообщения: 8259
Статус: Маньяк
ОС: Arch, Fedora, Ubuntu

Re: Вытесняющая многозадачность

Сообщение serzh-z »

sciko писал(а):
29.06.2009 12:00
ЗЫ. Задача появилась, т.к. в Рукипедии какой-то не совсем умный человек написал, что в Линуксе реализована кооперативная многозадачность.
Очень и очень любопытно... А можно увидеть цитату, где что-то подобное было написано?

sciko писал(а):
29.06.2009 12:00
Хочу продемонстрировать знакомому, что Линукс действительно многозадачная ОС и использует многозадачность вытесняемого типа.
Подскажите, как это продемонстрировать наиболее наглядно.
Почему-то у меня складывается впечатление, что речь шла совсем о другом, в частности - о вытеснении задач ядра. Которое, в почти полной мере, появилось в Linux на самом деле cравнительно недавно (в последние лет 5 - в ветке 2.6), и в каком-то виде уже давно присутствовало в гибридном ядре NT (я так понимаю, что спор шел в контексте этих ОС - Windows/Linux).
Спасибо сказали:
sciko
Сообщения: 1744
Статус: Ъ-участник
ОС: Debian/Ubuntu/etc

Re: Вытесняющая многозадачность

Сообщение sciko »

xar0h писал(а):
29.06.2009 16:12
Интересно только, - как новичок будет всем этим заниматься )
Кого подсаживаю на Линукс, стараюсь сразу обучать REISUB'у.
serzh-z писал(а):
29.06.2009 16:51
Очень и очень любопытно... А можно увидеть цитату, где что-то подобное было написано?
Похоже последний абзац этой части.
Реализована в пользовательском режиме ОС Windows версий до 3.х включительно, Mac OS версий до Mac OS X, а также внутри ядер многих UNIX-подобных ОС, таких, как FreeBSD, а в течение долгого времени — и Linux.
И в разделе про вытесняемую многозадачность упоминания о Линуксе вообще не было. Отсюда человек и сделал такой вывод.

serzh-z писал(а):
29.06.2009 16:51
Почему-то у меня складывается впечатление, что речь шла совсем о другом, в частности - о вытеснении задач ядра. Которое, в почти полной мере, появилось в Linux на самом деле cравнительно недавно (в последние лет 5 - в ветке 2.6), и в каком-то виде уже давно присутствовало в гибридном ядре NT
Можно об этом поподробнее? Я знаю только, что если не вытесняются задачи ядра, то задача с высоким приоритетом может ожидать завершения задачи с низким приоритетом. Особенно интересуют нынешнее состояние.
serzh-z писал(а):
29.06.2009 16:51
я так понимаю, что спор шел в контексте этих ОС - Windows/Linux.
Понимаете правильно. Но мне было чётко заявлено, что ОС Линукс имеет кооперативную многозадачность. Извините, но я от такого сразу же фаломорфировал.

ЗЫ. Кстати, а когда Линукс перешёл, если переходил, от кооперативной многозадачности к вытесняемой?
Спасибо сказали:
Аватара пользователя
Ariasp
Сообщения: 254
Статус: NixLander

Re: Вытесняющая многозадачность

Сообщение Ariasp »

sciko писал(а):
29.06.2009 12:00
Хочу продемонстрировать знакомому, что Линукс действительно многозадачная ОС и использует многозадачность вытесняемого типа.
Подскажите, как это продемонстрировать наиболее наглядно.

Запусти в аудио-плеере, например амароке, длительный плей-лист. Через несколько минут параллельно прожги в консоли на болванку исошник метров так на 150-200. :D
Спасибо сказали:
yaleks
Сообщения: 2121
Статус: вне статуса
ОС: Gentoo ~

Re: Вытесняющая многозадачность

Сообщение yaleks »

Ariasp писал(а):
29.06.2009 18:07
Запусти в аудио-плеере, например амароке, длительный плей-лист. Через несколько минут параллельно прожги в консоли на болванку исошник метров так на 150-200. :D

анекдот: "папа, Билл, а твоя система действительно многозадачная? - Подожди сынок, щас дискетку отформатирую".
Спасибо сказали:
Аватара пользователя
Ali1
Сообщения: 2250

Re: Вытесняющая многозадачность

Сообщение Ali1 »

Прочтите preemptible"
Реализована в пользовательском режиме ОС Windows версий до 3.х включительно, Mac OS версий до Mac OS X,

а также внутри ядер многих UNIX-подобных ОС, таких, как FreeBSD, а в течение долгого времени — и Linux.

"в течение долгого времени" -- закончившегося.
http://www.linuxjournal.com/article/5600
Спасибо сказали:
Аватара пользователя
diesel
Бывший модератор
Сообщения: 5989
ОС: OS X, openSuSE, ROSA, Debian

Re: Вытесняющая многозадачность

Сообщение diesel »

sciko писал(а):
29.06.2009 14:22
yaleks писал(а):
29.06.2009 12:36
А так http://ru.wikipedia.org/wiki/Вытесняющая_многозадачность продемонстрируйте kill.
А это мысль!
Вот что я придумал:
1. Написать скрипт реализующий бесконечный цикл. (Думаю можно и conky обойтись)
2. Прибить его через killall.


а в W95/98 вы ни разу задачи не снимали? Оно ведь не только намертво виснуть умело )

sciko писал(а):
29.06.2009 14:22
diesel писал(а):
29.06.2009 13:00
запустить что-нить требующее много процессора(расчеты какие-нить), и плейер - музыка в плейере не должна заикаться, Х-ы и прочие запущенные программы не должны тормозить, проделать тоже самое в Windows 98 :-).
На это можно сказать, что все программы хорошие и сами отдают ресурсы, а не система их заставляет.

хорошо, с расчетом пример относительно плохой.

Позволю себе цитату из классики(Э. Танненбаум, Операционные системы):

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


то есть искать явный пример тормозов следует в "долгих" обращениях к ядру. Форматирование, и прочий ввод/вывод -
как раз да, лучше всего подходит.

sciko писал(а):
29.06.2009 14:22
diesel писал(а):
29.06.2009 13:00
поскольку есть Х-сервер, и если его одна из запущенных программ подвесит - то висеть будет вся графика.
А что мешает разблокировать кернел-хаком клаву, перейти в другую консоль и принудительно прибить/рестартануть иксы. Кстати, кернел хаком же можно закрыть все программы с сохранением результатов.

для пользователя "вытесняющая многозадачность" фактически _должна_ означать что-то типа "если одно висит, на остальное это не влияет". Так вот для пользователя "Х-ов" - это далеко не факт. И если Вы человеку(плохо понимающему о чем идет речь) про "вытесняющую многозадачность" докажите, а потом у него зависнут Х-ы..... короче он потом Вам расскажет где он эту "многозадачность" видел (:


Кстати, эта классификация - попытка объединить сходные особенности реализации и работы в разных системах, не стоит использовать эту классификацию как пунктик для характеристики ОС - оно не дает той информации, которую предположительно должно давать.
Спасибо сказали:
sciko
Сообщения: 1744
Статус: Ъ-участник
ОС: Debian/Ubuntu/etc

Re: Вытесняющая многозадачность

Сообщение sciko »

diesel писал(а):
30.06.2009 01:36
а в W95/98 вы ни разу задачи не снимали? Оно ведь не только намертво виснуть умело )
Снимал. Но если висло, то висло намертво.
diesel писал(а):
30.06.2009 01:36
то есть искать явный пример тормозов следует в "долгих" обращениях к ядру. Форматирование, и прочий ввод/вывод -
как раз да, лучше всего подходит.
То есть показательным примером может стать загрузка диска в DVD? В оффтопике такая загрузка вешает даже оконный менеджер пока диск не раскрутиться. Но не является ли это показательным примером для иллюстрации не вытесняющей многозадачности, а вытеснения задач ядра?

diesel писал(а):
30.06.2009 01:36
для пользователя "вытесняющая многозадачность" фактически _должна_ означать что-то типа "если одно висит, на остальное это не влияет". Так вот для пользователя "Х-ов" - это далеко не факт. И если Вы человеку(плохо понимающему о чем идет речь) про "вытесняющую многозадачность" докажите, а потом у него зависнут Х-ы..... короче он потом Вам расскажет где он эту "многозадачность" видел (:
Почему же так сразу? Я приведу пример: есть системный блок и монитор. Если выключить монитор, то он ничего показывать не будет. Но системный же блок работает, а значит все программы на самом деле работают! Просто они не отображаются на мониторе. Исправить это очень просто: включить монитор. Так же и тут, только монитор -- это иксы, а системный блок -- всё остальное. Единственная сложность этой задачи: знать, где у монитора находиться кнопка включения.

diesel писал(а):
30.06.2009 01:36
Кстати, эта классификация - попытка объединить сходные особенности реализации и работы в разных системах, не стоит использовать эту классификацию как пунктик для характеристики ОС
А классификация -- всегда попытка объединить сходные особенности. Но это не повод отказываться от её использования при сравнении: людям проще судить крупными блоками, чем разбираться в особенностях реализации.

Ali1 писал(а):
29.06.2009 20:50
Прочтите preemptible"
Познавательно!
Спасибо сказали:
Аватара пользователя
diesel
Бывший модератор
Сообщения: 5989
ОС: OS X, openSuSE, ROSA, Debian

Re: Вытесняющая многозадачность

Сообщение diesel »

sciko писал(а):
30.06.2009 17:30
diesel писал(а):
30.06.2009 01:36
то есть искать явный пример тормозов следует в "долгих" обращениях к ядру. Форматирование, и прочий ввод/вывод -
как раз да, лучше всего подходит.
То есть показательным примером может стать загрузка диска в DVD? В оффтопике такая загрузка вешает даже оконный менеджер пока диск не раскрутиться. Но не является ли это показательным примером для иллюстрации не вытесняющей многозадачности, а вытеснения задач ядра?



Кооперативная многозадачность - Тип многозадачности, при котором следующая задача выполняется только после того, как текущая задача явно объявит себя готовой отдать процессорное время другим задачам. Как частный случай, такое объявление подразумевается при попытке захвата уже занятого объекта mutex (ядро Linux), а также при ожидании поступления следующего сообщения от подсистемы пользовательского интерфейса (Windows версий до 3.x включительно, а также 16-битные приложения в Windows 95/98/Me).


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



Вот это - описания различных вариантов переключения задач ядром. То есть "вытеснение задач ядром" - это и есть реализация "вытесняющей многозадачности". Тут есть "но" в виде "если обычно оно работает именно так, но таки возможна глобальная блокировка" - это куда отнести? Вот как раз "подвисание GUI" может быть результатом подобной блокировки, хотя сотни других штук будут работать нормально. Поэтому, я и говорю, что к этой терминологии стоит относится осторожно.
Спасибо сказали:
Аватара пользователя
Voice
Сообщения: 1073
Статус: столлманист
ОС: Debian GNU/Linux

Re: Вытесняющая многозадачность

Сообщение Voice »

Можно на Р. Лава сослаться.
"И может собственных Платонов и быстрых разумом Невтонов российская земля рождать."
М. В. Ломоносов
Спасибо сказали: