Вопросы уважаемому сообществу
От: rfq  
Дата: 06.09.10 17:44
Оценка:
Цель ОС — предоставление машинных ресурсов пользователю а) в более удобном и б) в "нарезанном" виде.
Процесс (в Windows и Linux) — полная аналогия железной машины, где файлы — устройства, thread'ы — процессоры, виртуальная память аналогична физической.
Благодаря "нарезке", каждый процесс занимает часть машинных ресурсов и появляется возможность иметь на машине несколько процессов одновременно. Чтобы создать процесс, OC требует, чтобы программа процесса удовлетворяла специфическим требованиям (например, имела процедуру main(String[]),
и была указана в командной строке.

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

Возьмем, например, графическую оконную систему. Виртуализируемый ресурс — дисплей, состоящий из графической памяти, клавиатуры и мыши. В результате нарезки получаются окна, менюшки, кнопочки и т.п. Элементами исполнения являются уже не просто программы, а объекты, классы которых расширяют стандартные классы Window, Button etc. Для запуска их нужно создать и добавить к родительскому объекту.

Возьмем теперь сервлет-контейнер. Все очень похоже, только вместо клавиатурных и мышиных событий надо реагировать на http-запросы. Элементом исполнения является сервлет, задаваемый в конфигурационном файле. Что является виртуализируемым ресурсом — не очень понятно, но во всяком случае ясно, что сервлет-контейнер не конфликтует с оконной системой и в принципе их можно использовать одновременно в том же процессе.

В наши дни от программиста требуется знать очень много подобных контейнерных middleware-фреймворков — EJB, Spring, Hibernante, Struts, Guice, OSGI, всякие кэши, jdbc и т.п.
Если бы существовало их описание с системной точки зрения, то это сильно облегчило бы жизнь как начинающим, так и опытным программистам.
Во всяком случае, сразу можно было бы ответить на вопросы
— нужна ли мне эта система?
— какого сорта система мне нужна?
— конфликтуют ли системы A и B?
и так далее.

И вот теперь вопросы уважаемому сообществу:
Встречали ли вы такую классификацию?
Нужна ли она вам?
Найдутся ли люди, готовые участвовать в ее создании и сопровождении?
Какой формат выбрать для такого проекта (Wiki?)
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.