Часто возникает некая терминологическая путаница: что, собственно, является операционной
системой AS/400? Первое, что приходит в голову — ну, конечно, это
В лекции 1 мы определили ОС как набор программ, управляющих системными ресурсами и предоставляющих базу для написания прикладных программ. Мы также оговорили, что законченный набор API для написания приложений для AS/400 — это MI, высокоуровневый машинный интерфейс. Таким образом, на вторую часть вопроса мы ответили. Осталось решить, где же находятся программы, управляющие системными ресурсами.
И снова ответ "OS/400" будет неверен. Компоненты традиционной ОС выполняют
такие функции как управление памятью, процессами, программами и вводом-выводом.
Но, обычно, эти низкоуровневые функции сильно зависят от аппаратуры и
тесно связаны с нижележащими
Итак, благодаря расположению аппаратнозависимых компонентов ниже MI, последний защищает прикладные программы и OS/400 от аппаратных изменений. ПО операционной системы, расположенное ниже MI, называется LIC ( licensed internal code ).
Давайте еще раз взглянем на структуру AS/400. Теперь очевидно: OS/400 состоит из объектов и программ поверх MI, а LIC составляют структуры данных и программы ниже MI. Таким образом, LIC связывает MI и аппаратуру. Фактически, ОС AS/400 — сочетание OS/400 и LIC. Получается, что AS/400 представляет собой пирог, в котором OS/400 играет роль глазури, а LIC — начинки между слоями.
В последние годы такую нижнюю часть ОС в других системах стали называть ядром. Есть много определений того, что именно относится к ядру операционной системы. Некоторые педанты могли бы сказать, что LIC содержит гораздо больше функций операционной системы, чем, обычное ядро. И все же термин ядро наиболее удобнен для описания функций ОС, реализованных ниже MI.
Очевидно, что некоторые компоненты ОС, такие как управление памятью, реализованы в LIC. Для других компонентов это не столь очевидно. Возьмем, например, базу данных. Некоторым ее частям необходима информация о физических дисковых устройствах и о пересылке данных в системе, другие же — могут быть написаны аппаратно независимо. Проектировщики обязаны решить, где разместить ПО базы данных — целиком в OS/400, целиком в LIC или и там, и там.
Рискуя забежать вперед (подробно мы рассмотрим MI в лекции 4) должен отметить,
что, говоря о разделении на OS/400 и LIC, я имею в виду объекты MI, реализованные
в LIC. Позже мы подробней остановимся на
Конечно, все функции OS/400 присутствуют в LIC в том смысле, что они должны
использовать MI для обращения к аппаратуре. Но часто инструкция на
На рисунке 3.1 показано
(рис 3.1) Распределение функций AS/400Некоторые аппаратно-независимые функции ОС также реализованы ниже MI, например, защита. Эта функция не зависит от аппаратуры, и таким образом может быть осуществлена целиком в OS/400 поверх MI. Однако реализация части защиты ниже MI обусловлена требованиями безопасности. Подробнее о том, как осуществляется общесистемная защита в OS/400, а контроль доступа к системным ресурсам — в LIC, мы поговорим в лекции 7.
Подобно защите, большинство функций ОС реализованы частично над, а частично — под MI. Даже отдельный компонент некоторой функции ОС может быть реализован по обе стороны этой границы. На рисунке 3.1 показаны некоторые компоненты базы данных и их распределение относительно MI.
Другая причина расположения некоторой функции или части ее ниже MI — производительность. Общий принцип таков: чем более функция аппаратнозависима, тем лучше ее можно настроить для максимальной производительности. Реализация ниже MI не гарантирует повышение производительности для всех функций, но в некоторых случаях может помочь. Недостаток такого подхода — увеличение объема кода ОС, зависящего от аппаратуры.
Ранее микропрограммирование было определено как технический прием, при котором программирование внутреннего компьютера служит цели эмуляции операций внешней вычислительной архитектуры. Соответствующее ПО часто называют микрокодом.
В System/38 было два разделенных
Вторым слоем, расположенным под MI, но над
Ядро операционной системы System/38 было названо микрокодом во избежание комерческих проблем, типичных для 60х годов. Тогда среди компьютерных гигантов, включая IBM, была распространена следующая практика: связывать получение системного ПО с требованием покупать фирменную аппаратуру. Так продолжалось до тех пор, пока различные фирмы ни создали множество компьютеров, совместимых с мэйнфреймами IBM (сегодня, мы назвали бы их клонами), для продажи по более низкой цене. Производители совместимой аппаратуры получали прибыль только в том случае, если бы покупатели могли приобретать ОС IBM без аппаратных средств. Под угрозами судебных преследований IBM согласилась в будущем не привязывать ПО к своим компьютерам.
С System/38 проблема связанных продаж ПО и аппаратуры возникла вновь. Мы хотели получить систему, единственным внешним интерфейсом которой был бы MI. Если бы мы продавали только аппаратные средства, то потеряли бы обеспеченную MI независимость от технологии. Для выхода на рынок годился только законченный машинный продукт MP (Machine Product), который бы содержал аппаратные средства плюс ядро ОС.
Чтобы выйти из положения, ядро назвали микрокодом, позаимствовав этот термин
у разработчиков проекта IBM Future Systems, которые еще в начале 70х также пытались
объединить некоторые функции ПО с аппаратурой. Так как микрокод рассматривался
как часть аппаратуры, то тем самым мы не нарушали соглашения и были чисты
перед законом. Все затраты по разработке
С появлением AS/400 названия двух слоев микрокода были изменены. Сегодня наши заказчики могут покупать аппаратное, но не программное обеспечение. Вместо этого они приобретают лицензию на использование ПО (иногда — только для определенной системы) и не могут изменять, копировать или перепродавать его, если это не разрешено лицензией. Микрокод же — часть аппаратуры, а следовательно, покупатель может владеть им. Так как при объявлении AS/400 вопрос о связывании более не стоял (сегодня мы продаем даже OS/400 в едином комплекте с аппаратурой), то IBM решила переименовать микрокод System/38. Таким образом, у AS/400 имеется вертикальный LIC VLIC (Vertical Licensed Internal Code) и горизонтальный LIC HLIC (Horizontal Licensed Internal Code).
С появлением новых RISC-процессоров потребовалось еще одно изменение названия.
HLIC содержал микропрограммируемый эмулятор, необходимый для реализации
Ответ: Внутренний код для систем с RISC-процессором — SLIC (System
Licensed Internal Code). Хотя, несомненно, придумавшие это имя разработчики
имели в виду значение слова slick на сленге ("чудесный", "замечательный",
"первоклассный"), а не свойства зимних миннесотских
Когда в 1991 году в Рочестере начались работы над RISCпроцессором, потребовалось внести множество изменений в LIC, расположенный под MI. Некоторые компоненты (но не все!) должны были быть полностью переработаны. Большая часть существующего LIC также требовала реструктуризации. Этот код уже претерпевал частые изменения и модернизации при создании новых моделей System/38 и AS/400.
Из-за множества изменений производительность работы программистов над этой частью системы уменьшалась, а расходы на сопровождение росли. Моральный дух наших программистов, постоянно латавших старый код, тоже падал.
До перехода на RISCпроцессоры нам нужно было еще выпустить три новых версии
VLIC, изза чего мы не могли полностью переключиться на
На совещании по выработке плана действий эта группа рассмотрела два подхода к модернизации LIC. Первый состоял в том, чтобы заново спроектировать и написать низкоуровневые компоненты, затронутые изменением процессора. Второй — переместить эти затронутые компоненты в аппаратуру RISC с минимальными изменениями. Данный тип миграции ПО без изменения логики работы программы часто называется переносом. Все остальные компоненты, не затронутые изменением процессора, такие как база данных, должны были быть перенесены с минимально возможными модификациями.
Майк и его команда решили перепроектировать и переписать затронутые компоненты заново. Это было нелегким решением, так как большая часть низкоуровневого кода основывалась еще на первоначальном проекте System/38 и интенсивно настраивалась для повышения производительности в течение 15 версий системного ПО. Не все верили в успех: ведь предстояло полностью изменить лишь "начинку" переписываемых компонентов, оставив в неприкосновенности все интерфейсы, чтобы не затронуть переносимые компоненты. Кроме того, надо было учесть возможность расширений ПО в планируемых новых версиях AS/400. В общем, все это напоминало стрельбу по движущейся мишени.
Билл Берг — один из десяти специалистов, рекомендовавших использовать

Давайте кратко рассмотрим основные элементы и термины ООП. Объект — это основной
элемент программы, объединяющий в себе данные и операции над ними. Операция,
которую может выполнить объект, иногда называется методом. Внутренняя
структура данных и реализация методов объекта скрыта от остальной программы. Это
называется инкапсуляцией. Программе доступен только
Подход ООП предполагает повторное использование ПО. Основной механизм обеспечения повторного использования — класс, представляющий собой шаблон, описывающий все объекты, для которых характерны одинаковые операции и элементы данных. Следовательно, может быть создано много объектов каждого из классов. Часто они называются экземплярами объекта.
Для существующего класса можно создать подклассы путем использования наследования.
Наследование позволяет программисту и создавать новые подклассы, и повторного
использовать код, а также данные базового класса без их повторения. Вновь
полученные подклассы настраиваются так, чтобы соответствовать конкретным потребностям
приложения. Способность подклассов одного класса отвечать на одно и
то же входящее сообщение поразному называется полиморфизмом. Полиморфизм
объединяет концепции наследования и
Наборы объектов, созданные из классов и подклассов, могут быть объединены для построения необходимых сервисов ОС. После определения достаточно сложного набора классов (называемого библиотекой классов), программисты могут использовать классы этого набора, а не программировать заново функции, предоставляемые классами.
Однако в объектноориентированной технологии есть и недостатки. Производительность
ядра ОС чрезвычайно важна, так как сильно влияет на производительность
системы в целом. Исследования приложений для AS/400 показали, что значительная
часть длинных цепочек команд приходится на код ОС. А при применении объектно
ориентированной технологии для некоторой функции повторно используется большое
число маленьких модулей, и общая
Группа разработчиков должна была выбрать язык программирования. Язык программирования
VLIC, называвшийся PL/
Язык PL/
В течение ряда лет мы пытались использовать другие языки при разработке компонентов
VLIC. Например, один из наших новейших трансляторов был написан на
Modula2, применялся также язык С. Однако, мы чувствовали, что ни один из них не
подходит для проекта, основанного на объектно-ориентированной технологии. Выбор
напрашивался сам собой — язык C++. Нам нужно было разрабатывать код ОС
очень низкого уровня. Иногда, для достижения оптимальной производительности
приходилось прибегать к ассемблеру, и С++ легче позволял это. Ведь, фактически,
язык С++ и есть современный вариант
Другим преимуществом С++ была возможность легко найти людей, его знающих.
Для этого проекта нам было нужно много новых программистов, и начался массовый
найм. Скоро над проектом
Решение было предложено Крисом Джонсом. Согласовав свои действия с
другими
Возможность повторных итераций при разработке — фундаментальное преимущество
ООП, но при ее использовании трудно оценить, в какой степени мы продвинулись
вперед. Прием, который мы использовали для "измерения прогресса", заключался
в так называемых BUB (Bring up Bind). Каждый BUB представлял собой группу
объектов, реализовывавших четко определенный набор функций ОС, и имевшую
общий интерфейс с другими компонентами. Путем сравнения BUB с другими компонентами,
мы могли оценить, как продвигается разработка. Кроме того, BUB позволили
нам действовать в определенном порядке, а также вызвали переделку известного
рекламного лозунга Budweiser: "This BUB’s for
Технология ООП не подвела: производительность программистов при разработке
Создание вычислительной системы с высокоуровневым машинным интерфейсом и значительной частью ОС, расположенной под этим интерфейсом, было связано с определенными затратами. На разработку ПО пришлись основные расходы, связанные с AS/400. Давайте ненадолго остановимся и рассмотрим, почему так получилось.
Если ядро невелико, скажем, состоит из 100 тысяч строк кода, то его целостность
очень легко протестировать при каждом изменении. Если же строк 3 миллиона, то такое
тестирование становится и сложнее, и дороже. Много лет мы в Рочестере использовали
следующий подход: строго ограничивали круг тех, кому позволено работать с
ядром, группой разработки и тестирования. Таким образом, код для
У подобного подхода есть и свои недостатки. Неоднократно сторонние организации,
включая другие подразделения IBM, запрашивали у нас разрешение написать
функции для
В лекции 4 мы рассмотрим, как компиляторы
Хорошо, что все функции
В прошлом ядро каждой ОС было уникальным, мало кто брался разрабатывать ядро
отдельно от ОС. Однако в середине 80х годов положение стало меняться. В некоторых
университетах, например, в КарнегиМеллон (CarnegieMellon), начали изучение
возможности использовать ядро с несколькими ОС. Именно там было спроектировано
микроядро
Если одно и то же микроядро лежит в основе двух или нескольких ОС, то возможно исполнять эти ОС параллельно на одном и том же процессоре. Более того, такие ОС могут очень эффективно разделять ресурсы и взаимодействовать друг с другом. В последние годы операционные системы, выполняющиеся поверх одного микроядра, стали называть индивидуальностями (personality).
Так как
В то время, когда мы разрабатывали
Добавление в
В Рочестере была и группа разработчиков, продолжавших оставаться приверженцами
System/36. В 1993 году в разгар работ над
В предыдущие несколько лет различные производители по всему миру начали поставлять на рынок программные пакеты, позволявшие клиентам System/36 перейти на RISC-компьютеры: либо на RS/6000 IBM, либо на продукты конкурентов. Беда этих пакетов-"имитаторов" заключалась в том, что они предоставляли только часть возможностей System/36. Пользователям System/36 попрежнему было необходимо вносить изменения в свои приложения и методы работы, а некоторые из программ для System/36 и вовсе не работали на новом компьютере.
В IBM был принят официальный план перевода пользователей System/36 на AS/400. Но лишь немногие заказчики воспользовались этой возможностью, а большинство отвергло ее. Согласно оценкам, более 200 000 System/36 попрежнему работают в во всем мире. И все же многие в IBM полагали, что переход приверженцев System/36 на какую-либо новую платформу IBM — лишь вопрос времени. Не стоит и говорить, что в таких условиях предложение разработчиков о создании новой System/36 не было встречено с особым энтузиазмом.
По счастью, некоторые из рочестерских руководителей всегда хотели проверить
новые возможности, и вскоре для разработки новой System/36 была создана "подпольная"
группа ("skunkwork"), что, впрочем, практиковалось в Рочестере и
Итак, небольшая группа экспертов по System/36 под руководством Боба Шмидта (Bob Schmidt) вынуждена была скрываться от зорких глаз финансистов. Тем не менее, у Боба не было недостатка в добровольцах. Всего через несколько месяцев работы этой небольшой команды энтузиастов System/36 работала на новом RISC-процессоре. Серия продуктов System/36 получила новое дыхание.
Процессор оригинальной System/3, появившейся на свет в 1969 году, был полностью реализован аппаратно. Он был очень прост и поддерживал всего 28 команд. Поверх аппаратуры System/3 функционировала ОС вместе со всеми приложениями. С появлением в 1975 году System/32 эта структура претерпела существенные изменения.
Уже в начале 70-х годов в процессе работ над System/38 перевод некоторых функций ОС в микрокод для достижения независимости от технологии был в Рочестере хорошо отлажен. Для поддержки набора команд System/3 в System/32 использовался микропрограммный эмулятор. По соображениям производительности некоторые функции были вынесены из ОС System/3 в микрокод System/32. Таким образом, System/32 и System/38 имели общие черты: некоторые части их ОС были реализованы в микрокоде, хотя и по разным причинам.
System/32 была разработана как система начального уровня и полностью соответствовала этому предназначению. Эмуляция набора команд System/3 выполнялась медленно, производительности процессора не хватало. Однако, процессор System/32 отлично выполнял эти функции. Примечательно, что сам он был 16-разрядным, использовал регистры и очень напоминал некоторые ранние RISC-процессоры.
Для повышения производительности System/32 требовались некоторые изменения.
Ее процессор хорошо справлялся с выполнением ОС, так что было принято решение
оставить его. Но поскольку он слишком медленно выполнял эмуляцию команд
System/3, то был добавлен второй процессор, сходный с оригинальным процессором
System/3, для исполнения команд последнего непосредственно аппаратурой. Значительная
часть ОС была написана с помощью команд System/3 и должна была исполняться
на втором процессоре. Так как он выбирал команды из основной памяти, второй
процессор был назван
В 1983 году вслед за System/34 появилась модель System/36. Она попрежнему использовала
двухпроцессорную структуру. Подобно AS/400, чья ОС разбита на две части
— OS/400 и
В 1993 году разработчики System/36 пришли к выводу, что RISC-процессор, который
предназначался для AS/400, достаточно быстр, чтобы эмулировать набор команд
Интерфейс между оригинальными
Приняв решение использовать для выполнения набора команд
Вот так внезапно мы получили совершенно новую System/36, работавшую на 64-разрядной
RISC-аппаратуре с использованием ядра
Очевидно, что эта новая индивидуальность System/36 могла бы выполняться на AS/400
с переходом на новые RISC-процессоры. Однако была и другая возможность —
воссоздать раннюю версию процессора Cobra полностью (процессор, кэш и интерфейс
ввода-вывода) на одном кристалле. В Рочестере была организована небольшая
группа, которая вскоре получила однокристальный процессор, основывавшийся на
дизайне ендикоттовской лаборатории. Этот процессор работал на частоте 50 МГц, что
было достаточно быстро для любого приложения System/36. Процессор получил на
звание CobraLite, так как в нем не было реализовано примерно 17 команд из обязательного
набора 64-разрядного
IBM подтвердила, что ее завод в Барлингтоне может производить специальные
микросхемы в количестве, достаточном для выпуска новых System/36 на RISC-процессорах
в конце 1994 года. Мы знали, что можем включить в этот продукт раннюю
версию
Принять такое было нелегко. Подразделения IBM по всему миру отвергли новую System/36. Наконец, мы убедили руководство позволить нам самим поговорить с заказчиками и бизнес-партнерами и предоставить рынку решать, следует ли нам объявлять в 1994 году о новой системе. Я делал доклад о новой System/36 на самой большой конференции наших бизнес-партнеров в начале 1994 года. Подавляющее большинство аудитории проголосовало за объявление новой системы. Многие были готовы прямо на месте купить у нас демонстрационную машину. Руководство и службы маркетинга IBM быстро оценили потенциал новой системы. В октябре 1994 года Advanced 36 появилась на рынке, где сразу же стала пользоваться спросом.
Первая модель Advanced 36 исполняла только ОС
Интеграция обеспечила уникальные возможности AS/400. Компоненты разработаны
для взаимодополняющей совместной работы друг с другом. Интеграция также затрудняет
изучение компонентов по отдельности, как в других системах. Например,
ранее мы говорили, что защита реализована частично в OS/400 и частично — в
Рассматривать AS/400 как набор горизонтальных слоев не результативно. Лучше
понять систему можно, "делая" ее вертикальные срезы, — то есть изучая конкретную
функцию, части которой реализованы в OS/400, в
В следующей лекции мы рассмотрим слой MI. Это позволит лучше понять типы
функций, реализованных в OS/400 и в
Далее мы поговорим об основных компонентах AS/400 как о ряде вертикальных срезов. После этого Вы увидите, как справедливо в приложении к AS/400 старое изречение: "Целое больше, чем простая сумма частей".
Для получения официальных документов о завершении программы дополнительного профессионального образования (удостоверения о повышении квалификации, дипломов о профессиональной переподготовке и MBA) необходимо предоставить:
Внимание! Вы можете не заказывать доставку бумажной версии официального документы, а скачать его в электронном виде и распечатать самостоятельно. Информация о выданном документе в течение 1 месяца загружается в Федеральную информационную систему «Федеральный реестр сведений о документах об образовании и (или) о квалификации, документах об обучении» - ФИС ФРДО.
Доступ на новый сайт осуществляется с использованием адреса электронной почты, который был указан вами при регистрации на "старом". Мы постарались перенести все ваши данные с прежнего ресурса, однако не исключена вероятность потери части информации.
При возникновении проблемы со входом, воспользуйтесь функцией сброса пароля
Если вы обнаружите несоответствия, пожалуйста, сообщите нам.