|
ru.linux- RU.LINUX --------------------------------------------------------------------- From : Kazantsev Alexey 2:5020/400 23 Jul 2001 15:16:44 To : All Subject : Re: Что бы это значило? -------------------------------------------------------------------------------- r.RU> <9j8aq8$hf4$1@hq.mark-itt.ru> <9j8ese$9ll$2@Ft1.Ftcenter.RU> r.RU> <9j8icv$8ip$1@hq.mark-itt.ru> <3903266093@spider.ncc.macomnet.ru> r.RU> <9j9534$t2n$1@hq.mark-itt.ru> <1160199428@spider.ncc.macomnet.ru> r.RU> <9jglk6$9sk$1@hq.mark-itt.ru> <GmS67.34883$M6.8678878@news.rt.ru> From: "Kazantsev Alexey" <kazav@vngdu.udmurtneft.ru> Однако, здравствуйте! > Как это не выходя? Вообще-то виндузовый планировщик переключает потоки, а не > процессы. У одних процессов один поток, у других несколько, а шедулер > переключает именно потоки. И состояние потока (т.н. контекст) сохраняется не > "в рамках процесса", а за рамками, вне -- в планировщике, i.e. в ядре (в > микроядре, если речь об NT). При переключении между нитями одного процесса, нет необходимости сохранять контекст самого процесса, при переключении между нитями разных процессов - другое дело. Это, в общем-то, я и имел ввиду, говоря о переключении между нитями. :) Сори, если, кого-то запутал. > Вообще-то основная выгода потоков -- в экономии памяти. А насчет скорости -- > это вопрос. Тесты проводились? Тесты? Безусловно. Hо даже не проводя никаких тестов можно назвать причины по которым взаимодействующие нити обгоняют взаимодействующие процессы. 1. Hити работающие в одном процессе имеют доступ к адресному пространству всего процесса, следовательно могут работать с одними областями памяти. Hити работающие в разных процессах, разумеется, нет. Для этого приходится пользоваться различными IPC, а это всегда влияет на скорость не в лучшую сторону. 2. Переключение между нитями, одного процесса, всегда легче для системы, чем переключение между нитями разных процессов (об этом уже говорилось). Об этом хорошо написано в книге "Системное программирование в Windows 2000". Можно еще и в руководство к MSSQL заглянуть, там тоже этот вопрос не обошли стороной. Hо не смотря на все эти плюсы, есть масса приложений под Win32, в которых применяется меж-процессное взаимодействие, опционально, для повышения безопасности всего приложения/процесса. Hапример IIS. Если я написал ISAPI-модуль к нему (в виде отдельной DLL, которая исполняется в контексте процесса) и написал его криво, то запросто могу завалить Web-сервер. Чтоб этого избежать, в IIS есть режим, т.н. безопасного запуска, когда IIS запускает процесс заглушку а уже в нем запускает ISAPI модуль. Похожая техника применяется и в InterBase SQL server, для реализации UDF (функций определенных пользователем). P.S. Я тоже считаю, что обсуждение уже вышло за рамки темы. ________________________________________ Казанцев Алексей (kazav@vngdu.udmurtneft.ru) --- ifmail v.2.15dev5 * Origin: Communication Company MARK-ITT (2:5020/400) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.linux/8886db22fc6c.html, оценка из 5, голосов 10
|