Модераторы: LSD

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> windows vs. linux, с точки зрения программиста =) 
:(
    Опции темы
Lazin
Дата 13.12.2008, 17:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3820
Регистрация: 11.12.2006
Где: paranoid oil empi re

Репутация: 4
Всего: 154



Название немного провакационное, но другого я не смог придумать  smile собственно вот в чем вопрос:
я много раз слышал, от разных людей, что linux якобы имеет лучшую чем windows архитектуру и производительность, и больше подходит для создания высоконагруженых высоконадежных серверных приложений, работающих в режиме 24х7 годами без перезагрузок ну и тд. В детали никто не углубляется, все просто говорят что это так. В общем мне интересно откуда такие выводы, мне интересны именно отличия с точки зрения программиста. То-есть отличия в реализации многопоточности, асинхронных операций, подсистемы ввода вывода, стандартных библиотек, и чем posix api лучше windows api =) желательно со ссылками. GUI здесь не обсуждаем. 
Желающие покричать linux(windows) рулед а все остальное ### идут лесом. smile 
PM MAIL Skype GTalk   Вверх
bems
Дата 13.12.2008, 21:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 3400
Регистрация: 5.1.2006

Репутация: 0
Всего: 88



Ну вот линуксоиды часто критикуют API CreateProcess за польшое число аргументов, а сами в такой ситуации клонируют процесс, а потом грузят в клон другой модуль. Вот такая модель.  smile 


--------------------
Обижено школьников: 8
PM MAIL   Вверх
Lazin
Дата 13.12.2008, 23:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3820
Регистрация: 11.12.2006
Где: paranoid oil empi re

Репутация: 4
Всего: 154



Ужас...
PM MAIL Skype GTalk   Вверх
MAKCim
Дата 14.12.2008, 00:27 (ссылка) |  (голосов:3) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

Репутация: 8
Всего: 207



Цитата(Lazin @  13.12.2008,  17:28 Найти цитируемый пост)
То-есть отличия в реализации многопоточности, асинхронных операций, подсистемы ввода вывода

1. многопоточность
начнем с того, что в Linux нет потоков как отдельных сущностей (объектов) ядра
есть объект дескриптора процесса (struct task_struct)
группы таких процессов образуют т. н threads groups, каждая со своим лидером
лидер ничем не отличается от остальных процессов за исключением того, что дескрипторы всех остальных процессов содержат указатель на дескиптор лидера
все дескрипторы грыппы объединены  в список с возможностью доступа из каждого дескриптора ко всем остальных из группы (важнейшая из реализаций NPTL)
семантика потока реализуется через подсчет ссылок на различные ресурсы (в частности виртуальное АП)
в Linux процесс и программа - независимые сущности в рамках API (однако с т. з реализации программа - ресурс процесса)
в Windows CreateProcess изначально привязывает программу (исполняемый файл) к процессу
поэтому семантика fork'а не реализуема и это минус
чем меньше сущностей - тем лучше и прозрачнее конечная система, поэтому разделение на потоки и процессы мне не кажется удачным решением (в итоге результат все равно один)
в Linux модульная реализация планировщика
за модульность отвечают три элемента: структура очереди выполнения (struct rq), класс планирования (struct sched_class) и функция schedule
rq инкапсулирует очереди выполнения, специфичные для конеретного sched_class'а
sched_class инкапсулирует адреса функций, реализующих конкретный тип планировщика
добавление новых стратегий не затрагивает код планировщика (schedule и набор вспомогательных функций)
это плюс
2. асинхронность
здесь все хуже (конечно, если имеется в виду реальная модель асинхронного I/O)
реализация (fs/aio.c) достаточно интересна
применяется комбинированный подход
с одной стороны работают процессы ядра aio (их число равно числу логических процессоров в системе), которые являются обычными work-процессами с очередями, в которые помещаются объекты, описывающие отложенные действия (в данном случае функции чтения/записи), т. е концепция опроса
с другой стороны может использоваться концепция нотификации, когда объект, на который направлена операция асинхронного I/O, уведомляет ядро реализации асинхронного I/O (fs/aio.c) о том, что операция может быть осуществлена
в реальной жизни эта модель I/O поддерживается лишь на уровне невиртуальных ФС
на уровне сокетов, к сожалению, она не поддерживается, это минус

потом еще что-нибудь напишу

Добавлено через 10 минут и 39 секунд
что касается высокопроизводительных сетевых приложений, то они реализуются в основном (за отсутствием асинхронности для сокетов) на неблокирующем I/O и epoll'е
в Windows скорее всего что-то подобное должно быть (если я не ошибаюсь I/O completion port)
вопрос лишь в том, где это реализовано эффективнее и логичнее
я собственоручно изучал код epoll'а и могу с уверенностью сказать, что там практически не к чему придраться, ни одной лишней строчки
опять же в основе всего лежит принцип нотификации



--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
MAKCim
Дата 14.12.2008, 00:42 (ссылка) |    (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

Репутация: 8
Всего: 207



да, предлагаю сделать эту тему показательной и не опускаться на уровень "у кого длиннее"
только объективные аргументы (исходник, документация, man, и т. д) и только с т. з программирования

кто будт оффтопить, будет получать от меня минусы  smile

Добавлено через 1 минуту и 20 секунд
Цитата(bems @  13.12.2008,  21:48 Найти цитируемый пост)
а потом грузят в клон другой модуль. Вот такая модель. 

верно
а представь обратну ситуацию  smile

Добавлено через 7 минут и 7 секунд
Цитата(Lazin @  13.12.2008,  17:28 Найти цитируемый пост)
работающих в режиме 24х7 годами без перезагрузок ну и тд

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

  


--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
MAKCim
Дата 14.12.2008, 16:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

Репутация: 8
Всего: 207



эээ
дискуссия заглохла?  smile 


--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
krwlr
Дата 14.12.2008, 17:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 383
Регистрация: 6.12.2006

Репутация: 2
Всего: 51



Цитата(MAKCim @  14.12.2008,  16:45 Найти цитируемый пост)
дискуссия заглохла?  


изначально, тема создавалось для "у кого длинее", никто не ожидал что ты придешь и напишешь такое, так еще и предупредил по этому поводу... smile 

ЗЫ: Сорри за оффтоп)) 

Это сообщение отредактировал(а) krwlr - 14.12.2008, 17:14


--------------------
убрал
PM   Вверх
Lazin
Дата 14.12.2008, 19:27 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3820
Регистрация: 11.12.2006
Где: paranoid oil empi re

Репутация: 4
Всего: 154



Цитата(MAKCim @  14.12.2008,  16:45 Найти цитируемый пост)
дискуссия заглохла?

это такая попытка взять на слабо? smile 

Цитата(MAKCim @  14.12.2008,  00:27 Найти цитируемый пост)
начнем с того, что в Linux нет потоков как отдельных сущностей (объектов) ядра
есть объект дескриптора процесса (struct task_struct)
группы таких процессов образуют т. н threads groups, каждая со своим лидером
лидер ничем не отличается от остальных процессов за исключением того, что дескрипторы всех остальных процессов содержат указатель на дескиптор лидера
все дескрипторы грыппы объединены  в список с возможностью доступа из каждого дескриптора ко всем остальных из группы (важнейшая из реализаций NPTL)

остается сделать вывод, что архитектура не самая продуманая  smile 
у мелкомягких все несколько более продумано, есть процесс, который не тоже самое что у вас, а просто набор ресурсов, с ним могут быть ассоциированы различные объекты ядра(потоки, файлы, пайпы итд), аттрибуты безопастности, ну естественно один или несколько потоков, так-же процесс получает в момент запуска копии переменных окружения и свои параметры командной строки. Тоесть можно сказать, что поток это не что-то такое абстрактное, а просто загруженое в память приложение. Ну а поток это то, с чем работает планировщик задач. Для 99.9% приложений эта модель проще и логичней. Ну а семантика форк лично мне еще не разу не показалась полезной или удобной. Кстати процессы можно объединять в job-ы и работать с несколькими процессами как с одной сущьностью. Ну и еще существует Thread Pool API smile . Еще у нас есть фиберы! Они похожи на green threads в джаве.
PM MAIL Skype GTalk   Вверх
Lazin
Дата 14.12.2008, 20:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3820
Регистрация: 11.12.2006
Где: paranoid oil empi re

Репутация: 4
Всего: 154



И кстати, как в linux работает кэширование файлов?
по поводу асинхронных операций.
В windows, для этого используются порты завершения(iocp). Можно связать порт завершения с объектом ядра, скажем файлом, событием или сокетом а так-же привязать к этому объекту любые данные. И далее, любое событие, связаное с этим объектом(завершение операции чтения или записи, новая порция данных в сокете или переход в сигнальное состояние события) будет поставлено в очередь порта завершения. Рабочие потоки просто ожидают очередной пакет завершения и обрабатывают его. 
Все унифицировано и хорошо масштабируется.  smile 
PM MAIL Skype GTalk   Вверх
MAKCim
Дата 14.12.2008, 20:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

Репутация: 8
Всего: 207





Цитата(Lazin @  14.12.2008,  19:27 Найти цитируемый пост)
у мелкомягких все несколько более продумано, есть процесс, который не тоже самое что у вас, а просто набор ресурсов, с ним могут быть ассоциированы различные объекты ядра(потоки, файлы, пайпы итд), аттрибуты безопастности, ну естественно один или несколько потоков, так-же процесс получает в момент запуска копии переменных окружения и свои параметры командной строки.

в Linux аналогично: процесс - набор ресурсов, однако кроме всего прочего - единица выполнения (schedule entity)


Цитата(Lazin @  14.12.2008,  19:27 Найти цитируемый пост)
Тоесть можно сказать, что поток это не что-то такое абстрактное, а просто загруженое в память приложение.

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


Цитата(Lazin @  14.12.2008,  19:27 Найти цитируемый пост)
Ну а семантика форк лично мне еще не разу не показалась полезной или удобной.

как насчет перенаправления I/O через каналы?
меня интересует вопрос, каким образом реализована (и реализована ли вообще) эта концепция в Windows без fork-семантики?
Код

# cat <some file> | grep <some pattern> | wc -l



Цитата(Lazin @  14.12.2008,  19:27 Найти цитируемый пост)
Кстати процессы можно объединять в job-ы и работать с несколькими процессами как с одной сущьностью.

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




--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
Lazin
Дата 14.12.2008, 20:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3820
Регистрация: 11.12.2006
Где: paranoid oil empi re

Репутация: 4
Всего: 154



Цитата(MAKCim @  14.12.2008,  20:22 Найти цитируемый пост)
процесс наверное имелся в виду, а не поток?

да, очепятка

Цитата(MAKCim @  14.12.2008,  20:22 Найти цитируемый пост)
как насчет перенаправления I/O через каналы?

это как?
PM MAIL Skype GTalk   Вверх
Void
Дата 14.12.2008, 20:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


λcat.lolcat
****


Профиль
Группа: Участник Клуба
Сообщений: 2206
Регистрация: 16.11.2004
Где: Zürich

Репутация: 11
Всего: 173



Цитата(MAKCim @  14.12.2008,  22:22 Найти цитируемый пост)
меня интересует вопрос, каким образом реализована (и реализована ли вообще) эта концепция в Windows без fork-семантики?
    
# cat <some file> | grep <some pattern> | wc -l

Насколько я помню, в параметрах CreateProcess можно указать дескрипторы, которые будут служить ему stdin/stdout/stderr, а также указать, что порождаемый процесс унаследует все дескрипторы текущего. Точно так же существуют каналы (pipes). То есть шелл, исполняя конвейерную конструкцию, по идее должен создать канал, затем процессы, которым надо сообщаться, передав им этот канал как stdin/stdout.


--------------------
“Coming back to where you started is not the same as never leaving.” — Terry Pratchett
PM MAIL WWW GTalk   Вверх
MAKCim
Дата 14.12.2008, 20:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

Репутация: 8
Всего: 207



Цитата(Lazin @  14.12.2008,  20:02 Найти цитируемый пост)
И кстати, как в linux работает кэширование файлов?

очень просто
начнем с того, что на уровне исполнительной подсистемы реализована VFS, абстрагирующая операции I/O от фактической реализации файловых систем (как виртуальных, так и физически связанных с блочным устройством)
VFS определяет 4 структуры данных - super, inode, dentry, file
каждый объект (в том числе обычные файлы), реализующий файловую семантику, определяется структурой inode
эта структура инкапсулирует объект address_space, которая поддерживает кэш физических страниц с данными файла
(реализация - radix_tree)
в структуре address_space определяется структура, которая содержит адреса обработчиков операций с кэшем
readpage, writepage и т. д
т. е каждый файл теоретически может поддерживать свою собственную реализацию кэша
однако ядром предоставляется общая реализация кэша (через объект этой структуры), которую используют большинство ФС
итак, последовательность действий open -> write
1. осуществить resolving пути, переданного в open (найти dentry в dcache или вызвать lookup-callback в inode_operations родительского каталога)
2. dentry однозначно определяет inode, inode определяет address_space, address_space определяет операции с кэшем
3. вызвать обработчик writepage
4. общая реализация writepage ищет в radix_tree физическую страницу, которая соответствует текущему смещению в файле
если страница найдена - осуществляется запись в память и страница помечается как dirty (процессы ядра pdflush позже осуществляют write-back страниц на диск)
если страницы нет в кэше - инициализируется операция I/O на ее чтение
после чтения, она добавляется в кэш

Добавлено через 2 минуты и 16 секунд
Void, 
ну видишь, дополнительное притягивание за уши
понадобиться еще что-то - добавим новый параметр в CreateProcess...
криво


--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
MAKCim
Дата 14.12.2008, 21:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

Репутация: 8
Всего: 207



Цитата(Lazin @  14.12.2008,  20:02 Найти цитируемый пост)
Все унифицировано и хорошо масштабируется.  

только рабочие потоки опять не в тему
задача асинхронного I/O выполнять операции I/O и сигнализировать об их окончании
причем для этого должна применяться lazy-стратегия, а именно - избежание выполнения ненужных операций
мы должны указать, как именно мы хотим получить уведомление и хотим ли вообще и все
в этом плане в POSIX AIO предусмотрено 2 вида уведомления: создание потока, генерация сигнала
естественно, остается возможность ручного вызова aio_status когда это необходимо 


--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
Lazin
Дата 14.12.2008, 21:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3820
Регистрация: 11.12.2006
Где: paranoid oil empi re

Репутация: 4
Всего: 154



тоесть кэшем можно управлять, я правильно понял?

Добавлено через 29 секунд
если это так, то это действительно реальное приемущество...

Добавлено через 2 минуты и 40 секунд
Цитата(MAKCim @  14.12.2008,  21:05 Найти цитируемый пост)
задача асинхронного I/O выполнять операции I/O и сигнализировать об их окончании
причем для этого должна применяться lazy-стратегия, а именно - избежание выполнения ненужных операций
мы должны указать, как именно мы хотим получить уведомление и хотим ли вообще

так оно и есть, не это твое дело, что и как ты будешь обрабатывать smile 
PM MAIL Skype GTalk   Вверх
MAKCim
Дата 14.12.2008, 21:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

Репутация: 8
Всего: 207



Lazin, 
Цитата(Lazin @  14.12.2008,  21:06 Найти цитируемый пост)
не это твое дело, что и как ты будешь обрабатывать

я не про логику обработки говорю
зачем здесь потоки?


--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
mr.Anderson
Дата 14.12.2008, 21:26 (ссылка)  | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


iOS Lead Developer
****


Профиль
Группа: Участник Клуба
Сообщений: 3374
Регистрация: 20.12.2004
Где: далеко

Репутация: нет
Всего: 128



Извините... Можно я поучаствую? smile Возможно, вопрос достаточно глупый, но все же мне интересно.

Как можно в том же Linux полноценно программировать на Delphi? Lazarus имхо отстает от реального Delphi. Прогинг на Си/С++ тоже слегка осложняется из-за отсутствия допустим того же Builder или MS VS. Для C# есть MonoDevelop, но все равно он уступает MS VS. Так вот есть ли на линухе понятие полноценного прогинга?


--------------------
user posted image

user posted image
PM MAIL ICQ Skype   Вверх
Lazin
Дата 14.12.2008, 21:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3820
Регистрация: 11.12.2006
Где: paranoid oil empi re

Репутация: 4
Всего: 154



Цитата(MAKCim @  14.12.2008,  21:24 Найти цитируемый пост)
я не про логику обработки говорю
зачем здесь потоки?

а я там и описывал логику обработки, про то как оно там внутри работает мне судить сложно smile 
PM MAIL Skype GTalk   Вверх
kirjanov
Дата 14.12.2008, 21:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 326
Регистрация: 22.1.2006
Где: Dark wood of erro r

Репутация: нет
Всего: 15



А почему никто не упомянул про портируемость кода ядра?)

Это сообщение отредактировал(а) kirjanov - 14.12.2008, 21:39
PM MAIL   Вверх
MAKCim
Дата 14.12.2008, 21:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

Репутация: 8
Всего: 207



Цитата(mr.Anderson @  14.12.2008,  21:26 Найти цитируемый пост)
Так вот есть ли на линухе понятие полноценного прогинга? 

есть
полноценный "прогинг" != IDE
на этом оффтоп попрошу закончить  smile 


Цитата(kirjanov @  14.12.2008,  21:38 Найти цитируемый пост)
А почему никто не упомянул про портируемость кода ядра?)

ну код ядра Linux просто всем телом связан с GCC, ибо использует туеву хучу расширений GCC  smile 
другое дело, что в отличие от Windows, в Linux код ядра и остальное програмное окружение достаточно хорошо разделены и не влияют друг на друга, что заметно повышает его портируемость


--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
kirjanov
Дата 14.12.2008, 21:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 326
Регистрация: 22.1.2006
Где: Dark wood of erro r

Репутация: нет
Всего: 15



На сколько я знаю, инженеры из Intel умеют ядро и с помощью icc компилировать(у них на сайте есть документ по этому поводу) 

PM MAIL   Вверх
MAKCim
Дата 14.12.2008, 21:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

Репутация: 8
Всего: 207



Цитата(kirjanov @  14.12.2008,  21:51 Найти цитируемый пост)
На сколько я знаю, инженеры из Intel умеют ядро и с помощью icc компилировать(у них на сайте есть документ по этому поводу) 

ну если icc поддерживает фичи gcc, то почему бы и нет


--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
Lazin
Дата 14.12.2008, 21:57 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3820
Регистрация: 11.12.2006
Где: paranoid oil empi re

Репутация: 4
Всего: 154



Цитата(mr.Anderson @  14.12.2008,  21:26 Найти цитируемый пост)
Как можно в том же Linux полноценно программировать на Delphi?

а зачем на нем программирвать? 
PM MAIL Skype GTalk   Вверх
krwlr
Дата 14.12.2008, 21:58 (ссылка)   | (голосов:4) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 383
Регистрация: 6.12.2006

Репутация: 2
Всего: 51



Цитата(Lazin @  14.12.2008,  21:57 Найти цитируемый пост)
а зачем на нем программировать?  

а это уже так называется?

Это сообщение отредактировал(а) krwlr - 14.12.2008, 21:59


--------------------
убрал
PM   Вверх
Alexeis
Дата 14.12.2008, 22:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 14
Всего: 459



Цитата(Lazin @  14.12.2008,  20:57 Найти цитируемый пост)
а зачем на нем программирвать?  

  Ну тут получается что гора должна идти к Магомету. Можно наверно под вайном запустить и под него же и компилировать... 


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
MAKCim
Дата 14.12.2008, 22:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

Репутация: 8
Всего: 207



господа, не отвлекаемся  smile 


--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
Vasay
Дата 14.12.2008, 22:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2097
Регистрация: 8.3.2006

Репутация: 2
Всего: 73



К сожалению мои знания ОС недостаточны чтобы понять всю глубину обсуждаемой здесь темы... Многопоточное ПО я писал либо на Java, где не надо вдаваться во все тонкости реализации многопоточности под ту или иную ОСь, либо на асме под dsp, но это уже другая история....


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


mr.Anderson, 

есть Eclipse, есть Qt, есть Sun Studio, есть NetBeans... Так что с программингом под *nix все ок.


--------------------
Придумать идеальную защиту от дурака невозможно, дураки, наудивление, изобретательны.
PM MAIL   Вверх
bems
Дата 15.12.2008, 21:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 3400
Регистрация: 5.1.2006

Репутация: 0
Всего: 88



Цитата(MAKCim @  14.12.2008,  00:42 Найти цитируемый пост)
а представь обратну ситуацию
не понял. Опиши мне плиз обратную ситуацию.



--------------------
Обижено школьников: 8
PM MAIL   Вверх
bems
Дата 15.12.2008, 21:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 3400
Регистрация: 5.1.2006

Репутация: 0
Всего: 88



Цитата(MAKCim @  14.12.2008,  20:22 Найти цитируемый пост)
меня интересует вопрос, каким образом реализована (и реализована ли вообще) эта концепция в Windows без fork-семантики?
а можешь пояснить как в данной ситуации помогает то что вы называете fork-семантикой. Если это нужно только для того чтобы поделиться дескрипторами с новым процессом, то что делать если в дочернем процессе эти хэндлы вовсе не нужны? В винде я могу при создании процесса передать в bInheritHandles ложь, а в линухе в этом случае сначала создать клона со всеми хэндлами, а потом из клона их все закрыть? Если так, то это, согласись, выглядит лажово. 



--------------------
Обижено школьников: 8
PM MAIL   Вверх
bems
Дата 15.12.2008, 21:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 3400
Регистрация: 5.1.2006

Репутация: 0
Всего: 88



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


--------------------
Обижено школьников: 8
PM MAIL   Вверх
kirjanov
Дата 15.12.2008, 22:50 (ссылка)  | (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 326
Регистрация: 22.1.2006
Где: Dark wood of erro r

Репутация: нет
Всего: 15



Цитата(bems @  15.12.2008,  21:36 Найти цитируемый пост)
то что делать если в дочернем процессе эти хэндлы вовсе не нужны

Новому процессу можно передать флаги, с помощью которых будет известно, что нужно расшарить с родителем:
Код

/*
 * cloning flags:
 */
#define CSIGNAL        0x000000ff    /* signal mask to be sent at exit */
#define CLONE_VM    0x00000100    /* set if VM shared between processes */
#define CLONE_FS    0x00000200    /* set if fs info shared between processes */
#define CLONE_FILES    0x00000400    /* set if open files shared between processes */
#define CLONE_SIGHAND    0x00000800    /* set if signal handlers and blocked signals shared */
#define CLONE_PTRACE    0x00002000    /* set if we want to let tracing continue on the child too */
#define CLONE_VFORK    0x00004000    /* set if the parent wants the child to wake it up on mm_release */
#define CLONE_PARENT    0x00008000    /* set if we want to have the same parent as the cloner */
#define CLONE_THREAD    0x00010000    /* Same thread group? */
#define CLONE_NEWNS    0x00020000    /* New namespace group? */
#define CLONE_SYSVSEM    0x00040000    /* share system V SEM_UNDO semantics */
#define CLONE_SETTLS    0x00080000    /* create a new TLS for the child */
#define CLONE_PARENT_SETTID    0x00100000    /* set the TID in the parent */
#define CLONE_CHILD_CLEARTID    0x00200000    /* clear the TID in the child */
#define CLONE_DETACHED        0x00400000    /* Unused, ignored */
#define CLONE_UNTRACED        0x00800000    /* set if the tracing process can't force CLONE_PTRACE on this clone */
#define CLONE_CHILD_SETTID    0x01000000    /* set the TID in the child */
#define CLONE_STOPPED        0x02000000    /* Start in stopped state */
#define CLONE_NEWUTS        0x04000000    /* New utsname group? */
#define CLONE_NEWIPC        0x08000000    /* New ipcs */
#define CLONE_NEWUSER        0x10000000    /* New user namespace */
#define CLONE_NEWPID        0x20000000    /* New pid namespace */
#define CLONE_NEWNET        0x40000000    /* New network namespace */
#define CLONE_IO        0x80000000    /* Clone io context */


PM MAIL   Вверх
bems
Дата 17.12.2008, 17:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 3400
Регистрация: 5.1.2006

Репутация: 0
Всего: 88



и куда это нужно передать?


--------------------
Обижено школьников: 8
PM MAIL   Вверх
MAKCim
Дата 17.12.2008, 17:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

Репутация: 8
Всего: 207



bems, 
в clone()
man 2 clone


--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
bems
Дата 18.12.2008, 19:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 3400
Регистрация: 5.1.2006

Репутация: 0
Всего: 88



Цитата(MAKCim @  17.12.2008,  17:35 Найти цитируемый пост)
man 2 clone
спасибо, мне не надо  smile 

Ну и зачем тогда эта ваша "семантика fork'а"?



--------------------
Обижено школьников: 8
PM MAIL   Вверх
MAKCim
Дата 18.12.2008, 19:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

Репутация: 8
Всего: 207



Цитата(bems @  18.12.2008,  19:18 Найти цитируемый пост)
Ну и зачем тогда эта ваша "семантика fork'а"?

а что изменилось с моего предыдущего ответа?  smile 


--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
bems
Дата 18.12.2008, 19:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 3400
Регистрация: 5.1.2006

Репутация: 0
Всего: 88



мое понимание "нафига это надо". Вот ты можешь по-русски как для чайника ответить на очень простой вопрос.


--------------------
Обижено школьников: 8
PM MAIL   Вверх
Goliaf777
  Дата 19.12.2008, 19:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 70
Регистрация: 19.11.2008

Репутация: нет
Всего: нет



Чую спор никогда не закончиться, если ток дедушки smile  которые за Тукса не устанут обьяснять людям как в нем реализованы (украденные у него и по большей части у Unix мелкософтом smile  smile  smile ) разные вещи и фишки.

Это сообщение отредактировал(а) Goliaf777 - 19.12.2008, 19:11
PM MAIL ICQ Skype Jabber   Вверх
bems
Дата 19.12.2008, 19:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 3400
Регистрация: 5.1.2006

Репутация: 0
Всего: 88



Goliaf777, они по большей части украдены дважды и более (что называется "оказать влияние"), поэтому замечание не конструктивно


--------------------
Обижено школьников: 8
PM MAIL   Вверх
Страницы: (3) [Все] 1 2 3 
Ответ в темуСоздание новой темы Создание опроса
Правила ведения Религиозных войн
Smartov
1. Уважайте собеседника
2. Собеседник != враг
3. Старайтесь воздерживаться от тем вида "Windows Rulez" или "Linux Rulez"

С уважением, Smartov.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Религиозные войны | Следующая тема »


 




[ Время генерации скрипта: 0.1885 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.