Переход с VMS на Unix - PullRequest
       99

Переход с VMS на Unix

10 голосов
/ 26 ноября 2009

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

Проходит время, и люди уходят на пенсию, и так получается, что последний человек, стоящий на ногах, передал ключи новому поколению, которое - как мы можем себе представить - меньше, чем взволновано , чтобы найти себя хранителями старой системы достаточно, чтобы быть их младшим братом. Тем не менее, несмотря на то, что они не в восторге от идеи иметь дело с Ultra Legacy Systems, они не могут оправдать стоимость замены почтенного приложения.

LMS обнаружил, что я хабла unix и задал мне этот вопрос. И так как я хабла юникс, но не говорю на Си, я обобщу и передам это вам. Длинная история Короткая история:

LMS хочет портировать LegacyApp, написанный на C., с VMS на unix. Ресурсы? Какие книги он может читать? Люди, с которыми он может поговорить?

Ответы [ 12 ]

12 голосов
/ 01 декабря 2009
  1. Первый вопрос, который мне нужно задать, - это почему, и я бы вел разговор в направлении «Вам действительно нужно перенести его из VMS». Есть несколько вещей, которые стоит упомянуть о VMS:

    -> VMS все еще активно разрабатывается и поддерживается компанией HP. Они только что выпустили V8.4 для полевых испытаний на прошлой неделе (см. http://h71000.www7.hp.com/openvmsft/).

    -> VMS доступна на новом оборудовании; в частности, серверы HP Integrity на базе процессора Itanium.

    -> VMS также доступна на виртуальных платформах через продукты Charon Emulation.

    -> Популярные оценки показывают, что в настоящее время активно используется около 300 000 систем VMS. LMS может быть последним человеком в LargeCo, но он далеко не последний человек, стоящий во всем мире.

    -> Множество информации, смотрите openvms.org, например, чтобы увидеть много текущей информации о VMS, все от текущих пользователей.

  2. ОК - вы все еще хотите отключиться от VMS. Как ты делаешь это? Ну, это зависит от многих вещей.

    -> Как уже говорили другие, насколько стандартен код? Скорее всего, не очень. Чем больше VMS-измов, тем сложнее работа. 'ничего не сказал.

    -> Что такое база данных? Если это Oracle, возможно, не слишком сложно перейти на Oracle на какой-либо другой платформе. Если это какая-то пользовательская БД, основанная на индексных файлах RMS, то вам нужно проделать дополнительную работу, вам нужно заново создать эту псевдо БД или понять ее достаточно, чтобы заменить ее какой-нибудь реляционной БД. *

    -> Помимо C, что еще используется для создания приложения? Что на переднем конце? DECforms? FMS? Есть ли механизм транзакций, например СКУД? РТР? Эти вещи будут иметь огромное влияние на осуществимость и усилия, необходимые для переноса на UNIX.

    -> Какие еще продукты задействованы? Используются ли сторонние библиотеки? Используются ли сторонние продукты, критически важные для приложения или функциональности?

    -> Эта система кластеризована? Если так, то почему? Вам нужно будет достичь тех же целей с помощью UNIX.

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

  3. Книга UNIX для пользователей OpenVMS окажет новичку в VMS некоторую помощь в понимании VMS, но, как следует из названия, книга действительно предназначена для противоположной цели.

6 голосов
/ 26 ноября 2009

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

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

Другой вариант - запустить openVMS на некоторых современных аппаратных средствах, возможно, на виртуальной машине.

4 голосов
/ 16 июня 2013

Я уверен, что Брайан уже принял решение, но из-за моих грехов работы в течение многих лет в языковой поддержке DEC OpenVMS (да, некоторые люди имели эту сомнительную честь) реальный вопрос, который я бы задал клиенту, такому как Брайан это: это приложение в реальном времени или нет? Если это первое, то оно будет сильно зависеть от многих системных служб VMS, которые исключат «порт» и будут указывать перезапись. Если бы это было последнее, то частота системных служб VMS должна (возможно) быть ограниченной и сделать порт жизнеспособным.

Кислотным тестом для меня будет поиск * .c "SYS $", "LIB $", т. Е. Поиск во всех исходных файлах C тегов "SYS $" и "LIB $", которые ставят префикс системных служб VMS. , Если их количество указано в 10 с, то, вероятно, вероятно, что порт, от 10 до 100, делает это вероятным, но более 100 делает успешный порт крайне маловероятным.

Надеюсь, это поможет

3 голосов
/ 29 ноября 2009

Если вы хотите продолжать работать с VMS на виртуальной машине, вы можете обратиться к CHARON-VAX (http://www.charon -vax.com / ). Как упоминалось ранее, простота портирования во многом зависит от того, сколько расширений VMS было использовано; поиск в исходном коде $ символов, встроенных в строки (обычно с 3-символьной ведущей подстрокой, такой как lib $ gettime или dsc $ descriptor или sys $ foobar и т. д.) даст вам хотя бы базовое представление о том, как называются системные функции VMS и насколько вероятно, что они будут переносимы, если название достаточно очевидно.

3 голосов
/ 26 ноября 2009

У вас есть несколько вариантов.

  1. Получите исходный код OpenVMS и продолжайте поддерживать Open VMS, как если бы это был дистрибутив Linux. Некоторые люди не против идти в ногу с дистрибутивами Linux и OpenVMS. Это можно сделать.

  2. Попробуйте перекомпилировать VMS C в Linux. Это может быть тривиально, если C использует только стандартные библиотеки. Это может быть очень и очень сложно, если C использует много библиотек VMS.

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

    Это может быть тривиально или невозможно. Трудно сказать без анализа источника.

  3. Запись библиотек мостов из VMS в Linux. Если ваша программа делает только несколько вещей VMS, это не очень сложно. Если ваша программа делает обширные вещи VMS, это безумие.

    Мост - в конце концов - это ужасная идея. Менеджерам это нравится, однако.

    Альтернативой является замена вызовов библиотеки VMS правильными переносимыми вызовами Linux вместо записи мостов. Это лучше в долгосрочной перспективе, потому что это исключает непереносимые функции программы.

  4. Переписать его с нуля в Python. Это обычно проще, чем пытаться портировать код на Си. Это будет короче, чище, проще и портативнее.

2 голосов
/ 05 февраля 2013

Если это не сломано, не исправляйте это! Зачем переносить или переносить приложение, если вам это не нужно? Почему бы не запустить его на текущей установке OpenVMS, работающей на сервере HP Itanium; предполагается, что вы хотите обновить аппаратное обеспечение, которое может даже не потребоваться, если ваше аппаратное обеспечение VAX все еще работает.

1 голос
/ 16 июня 2011

Примерно через полтора года, может быть, вы уже поняли, что делать. Моя организация недавно решила придерживаться OpenVMS вместо того, чтобы переходить на Linux, хотя старая охрана недавно ушла. Мы просто не могли спорить с тем, что, по нашему мнению, было очень стабильной и надежной системой. В настоящее время мы переходим с серверов Alpha на серверы Integrity по причинам, связанным с окончанием срока службы. HP очень помогла с нашим переходом.

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

1 голос
/ 06 февраля 2010

Брайан, я не уверен, что LMS указал / заботился о переносе C-кода или ВЕСЬ процесс. Как часто люди думают о языках вне системы.

Если был процесс, построенный на VMS, скорее всего он использовал как минимум средства планирования / пакетирования, которые часто пишутся в DCL (довольно простой и понятный язык, в отличие от сценариев оболочки или perl).

Таким образом, стоимость переноса всего процесса может быть выше, чем первоначально предполагалось вашей LMS. Добавьте сюда аспект надежности, учитывая ваши трудности с C, что, конечно, нет ничего невозможного с энтузиазмом и решительностью.

Если вы хотите просто попробовать C-код, как было ранее опубликовано, найдите его в поисках "$". Или просто cc со всеми присутствующими заголовками, основы команды compile-link должно быть достаточно.

В качестве альтернативы, это похоже на вызов консультанта, так как на самом деле таких работ было много во время «исхода». Все говорят, что VMS остается достаточно надежной платформой (24x7 - это норма!), Если только аппаратное обеспечение не умирает, тогда все еще остается масса «исходных» запчастей. УДАЧИ!

1 голос
/ 26 ноября 2009

Чтобы выучить C, вы можете также перетащить его изо рта лошади: «Язык программирования C» от ​​его изобретателей, Кернигана и Ричи.

Я могу порекомендовать «Среду программирования UNIX» (снова) Брайана Кернигана; более авторитетный источник вы вряд ли найдете, и он учит вас идиомам Unix / C и немного программированию на C одновременно.

Для большей глубины и подробностей о Си мне очень понравилась книга Питера ван дер Линдена "Экспертное программирование на С - глубокие секреты Си".

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

Работа может быть простой или сложной, в зависимости от того, сколько сделано машинно-умного и сложного бита, и сколько системных вызовов VMS используется. Было бы очень хорошо, если бы размер слова был равен (другими словами, если ваш ящик VMS имеет размер слова 32 бита, не запускайте код на 64-битной версии Unix!)

0 голосов
/ 12 декабря 2012

Вероятно, стоит попытаться спросить , почему LMS хочет перенести приложение на Unix. Ответ может показаться очевидным, но правильное изучение причин имеет свои преимущества. Я бы предположил:

  1. OpenVMS - это «ультра унаследованная платформа», и по этой причине уже не стоит запускать приложения;
  2. Трудно найти кого-либо, кто готов поддерживать приложение, работающее в OpenVMS в эти дни;
  3. Аппаратное обеспечение, на котором работает OpenVMS, грозит стать умирающим .

У нас похожая проблема, но в нашем случае рассматриваемое приложение не только работает на OpenVMS, но и написано на языке COBOL. Я бы сказал, что по сравнению с вами ваша ситуация выглядит радужно, поскольку ваше приложение написано на кроссплатформенном языке.

В любом случае, я думаю, что если вы собираетесь принять важное решение, например, перейти с OpenVMS на Unix, было бы разумно провести небольшую юридическую проверку. В вашем случае попытайтесь оценить, насколько переносимым является код - только тогда вы узнаете, каков масштаб усилий (наихудший случай вполне может быть кратным лучшему). В C переносимость кода в основном зависит от зависимостей - они «стандартные» или они специфичны для VMS?

Наши запросы показали, что HP будет поддерживать OpenVMS на Itanium, по крайней мере, до 2022 года. Нет необходимости переходить на другую платформу - возможно, вы могли бы оставить вещи на OpenVMS, одновременно пытаясь подготовить приложение для портирование (сделайте его менее зависимым от особенностей OpenVMS).

VMS имеет удивительно здоровое сообщество, и если проблема заключается в нехватке Unix, то, возможно, GNV может помочь сократить разрыв?

...