avva: (Default)
[personal profile] avva
Про новый shell в Лонгхорне рассказывают вот тут (англ., ссылка от [livejournal.com profile] yms).

Хоть стой, хоть падай, честное слово. Двадцать лет ждали и просили Майкрософт, чтобы сделали нормальный shell с нормальными возможностями. Пережили поколения command.com'ов и cmd.exe, но так и не дождались.

И вот, нате вам, Майкрософт созрел. Объектно-ориентированная командная строка. “Коммандлеты”, возвращающие .NET-объекты. Гусары молчат.

Date: 2004-08-03 01:01 pm (UTC)
From: [identity profile] s1m.livejournal.com
Командный процессор у Микрософта совершенно нормальный, потому что в основном он используется для запуска утилит типа ping, tracert, ipconfig и net. На *никсе без batch-файлов никуда, а под Windows в них такой нужды нет. Да и WSH-то не особо нужен, по большому счету.

Что же касается придумывания и заимствования, так тут, я думаю, вы не правы. Можете уточнить, что именно Микрософт мог бы позаимствовать из *никсов? Command-line утилиты вместо визуальных? Устаревшую схему IO вместо IOCP? Кривой X11 вместо удобного RDP? На мой взгляд,технологическое отставание ОС в число недостатовков МС не входит...

Date: 2004-08-03 10:09 pm (UTC)
From: [identity profile] bish0nen.livejournal.com
Это IOCP-то новый? Вот ведь насмешили. Completion routines были даже в RT-11 приснопамятной DEC, оттуда они перекочевали в RSX-11 ну и так далее. Теория создания операционных систем закончилась примерно тридцать лет назад и почти всё, что было создано позднее, включая возню около threaded I/O, - это мелкие domain specific оптимизации. *nix, в общем-то, тоже не стоит на месте - кому нужен высокопроизводительный I/O для триллиона тредов , используют /dev/poll, /dev/epoll, kqueue ну или просто epoll. Ну а "кривой X11" - здесь чувствуется мнение очень большого знатока проблемы, типичный случай "слышал звон да не знает, где он".

Date: 2004-08-04 12:51 am (UTC)
From: [identity profile] dimrub.livejournal.com
Простите, но дело не в completion routines (select тоже можно назвать completion mechanism), а в механизме управления потоками, который стоит за IOCP (и оптимизирует кол-во context switches). Другое дело, что необходимость в нем была вызвана тяжеловестностью процессов в NT4.

Date: 2004-08-04 09:55 am (UTC)
From: [identity profile] s1m.livejournal.com
Верно, но причем здесь тяжеловесность процессов?!

Date: 2004-08-04 11:09 am (UTC)
From: [identity profile] dimrub.livejournal.com
Ошибся, не процессов, а потоков.

Насколько я понимаю историю этой фичи, одной из основных причин появления IOCP в NT4 SP4 (надеюсь, что не напутал с номером) - это невозможность работы в виндах в модели one session - one thread. CreateThread() тяжел потому что. Ну так сделали IOCP, потом увидели, что context switches тяжелы, и сделали в IOCP механизм использования пула потоков. Потом в Win2000 разошлись не на шутку, и сделали настоящий proactor.

Date: 2004-08-04 02:02 pm (UTC)
From: [identity profile] s1m.livejournal.com
Примерно так. Основная идея была в том, что если есть пул потоков для обработки асинхронного IO, то не надо выпускать больше потоков, чем количество физических процессоров, иначе начинаются никому не нужные переключения контекстов. Т.е. пока потоку есть что делать остальные ждут, как только поток останавливается на ожидании (critical section, event, async i/o, etc.) выпускается новый поток.

Date: 2004-08-04 09:53 am (UTC)
From: [identity profile] s1m.livejournal.com
IOCP -- это не completion rutines, это универсальная очередь для обработки асинхронных IO вызовов, которая, как верно замечено ниже, связывает количество активных потоков-обраточиков с кол-вом процессоров и оптимизирует количество переключений потоков. IOCP это работает для всего, начиная от чтения из файла и заканчивая HTTP-драйвером. epoll вещь, конечно, хорошая, но работает она только для сокетов и ничего похожего не делает. Понятно, что *никс тоже умеет делать асинхронное IO, но ведь речь идет не об этом.

Насчет X11 я сужу только по собственному опыту пользователя оного продукта. Если вам не нравиться формулировка "кривой", давайте скажем, что X11 не лучше RDP. Если вы считаете, что лучше -- объясните чем.

Так что же Микрософт смог (или не смог) позаимствовать у *никсов, как OS? Поймите, я сам пишу под Линукс и мне нравится эта операционка, но отбросив религию и политику Windows представляется мне гораздо более продвинутой OS.

Date: 2004-08-11 09:55 pm (UTC)
From: [identity profile] bish0nen.livejournal.com
IOCP -- это не completion rutines, это универсальная очередь для обработки асинхронных IO вызовов, которая, как верно замечено ниже, связывает количество активных потоков-обраточиков с кол-вом процессоров и оптимизирует количество переключений потоков. IOCP это работает для всего, начиная от чтения из файла и заканчивая HTTP-драйвером. epoll вещь, конечно, хорошая, но работает она только для сокетов и ничего похожего не делает. Понятно, что *никс тоже умеет делать асинхронное IO, но ведь речь идет не об этом.

Виноват, буква C после IO меня навела сразу на мысль о completion routines, я сразу и выстрелил :) Я изучил IOCP API, он действительно очень удобный, его самый прямой аналог в *nix - это kqueue, менее прямой - epoll (который работает не только для сокетов, а для любого дескриптора). То, что IOCP почему-то как-то связан с оптимизацией переключения тредов - это похоже на особенность реализации, получать сообщения может быть очень удобно и для однопоточной программы. В конце концов, у кого в *nix нет kqueue, могут взять ACE, который живёт в user space и в котором есть обе модели В/В - reactor и proactor, - плюс вагон и маленькая тележка других примитивов и абстракций, прекрасно реализовованных поверх "устаревшей схемы IO". Очередь рассылки сообщений также не единственный способ эффективно поллить большую кучу сокетов - слегка похаченный bind 8.2.x, немногопоточный билд, совершенно замечательно справляется с миллионом сокетов в единицу времени, опрашиваемых poll(2)'ом. /dev/poll даёт ещё более тонкую оптимизацию.

Насчет X11 я сужу только по собственному опыту пользователя оного продукта. Если вам не нравиться формулировка "кривой", давайте скажем, что X11 не лучше RDP. Если вы считаете, что лучше -- объясните чем.

Какие есть конкретные претензии к X11 как к протоколу или как к модели построения приложений? У X11 есть известные недостатки типа зашумливания транспортного канала своим трафиком, но они 1) сто лет назад решены 2) есть суть объекта оптимизации стадии эволюции X11. Ну да, есть ещё кое-какие тараканы, но всё же. Я посмотрел описание протокола RDP; принципиально это - та же самая парадигма "удалённого десктопа", с некоторыми эволюционными оптимизациями, типа как были в Java station. Что именно Вас так не устраивает в X11, что он в один момент стал "кривым"?

Так что же Микрософт смог (или не смог) позаимствовать у *никсов, как OS? Поймите, я сам пишу под Линукс и мне нравится эта операционка, но отбросив религию и политику Windows представляется мне гораздо более продвинутой OS.

Мне безразлично, что они не смогли (или смогли) позаимствовать - я беспринципен: если увижу, что платформа X лучше Y (и удобнее) не своими микрооптимизациями, а предлагаемой [новой; другой] парадигмой, X я брошу очень быстро. Конкретно Майкрософту хочется пожелать простоты и ортогональности в своём API (и не только в API на самом деле), а то в его дебрях можно сломать ногу так же легко как и в падежах баскского языка.

Date: 2004-08-13 02:20 pm (UTC)
From: [identity profile] s1m.livejournal.com
То, что IOCP связан с переключением потоков -- это основная идея, так-то. Ну и плюс унификация практически всего асинхронного IO. Насчет милиона сокетов не скажу, но вот 10,000 сконнектить еще не так давно было большой проблемой (http://www.kegel.com/c10k.html).

Если хотите, я могу на остальные вопросы по email-у ответить, а то дискуссия довольно далеко ушла от того, какой смысл вкладывается GNU-никами в понятие "mt-safe" :)

January 2026

S M T W T F S
    1 2 3
4 5678910
11121314151617
18192021222324
25262728293031

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Jan. 5th, 2026 11:39 pm
Powered by Dreamwidth Studios