ISO/IEC 7185:1990 — актуальна версія міжнародного стандарту Паскаля. Міжнародний стандарт для розширеного Паскаля — це ISO/IEC 10206:1991.
ISO/IEC 13211-1:1995 І ISO/IEC 13211-2:2000 — актуальна версія для мови Пролог. У частині 1 описане ядро мови, у частині 2 - модулі мови Пролог.
ISO/IEC 13816:1997 — актуальна версія міжнародного стандарту мови Лісп (CommonLisp), що одержала назву ISLISP.
Хоча MUMPS не був включений у 1996 році до Настанови, його нова версія, названа М, її поширена у практиці розроблення розподілених застосувань. Використовуючи структуру В-дерев, M[UMPS] ефективний під час оброблення розріджених масивів, забезпечує ефективність їхнього використання І малий час відгуку. На заміну ISO/IEC 11756:1992 нині діє ISO/IEC 11756:1999, у якому описана мова М, а два стандарти ISO/IEC 15851:1999 і ISO/IEC 15852:1999 задають протокол взаємодії М-лрограми і М-віконний АРІ відповідно.
Додаткові специфікації. Відсутні.
Перехресна категорія служб POSIX-OSE
Не застосовують.
Пов’язані стандарти
Багато служб усередині POSIX-OSE вимагають прив’язки АРІ до ідентифікованих в 4.1.4 мов; наприклад, графіка, бази даних. Посилання на конкретну прив’язку стандарту до мови подано в розділі відповідної служби.
Відкриті проблеми
Оскільки запити на стандарти 4GL значно зросли порівняно з серединою 90-х років, з ними проводять великий обсяг робіт.
Розробники прикладних програм переважно використовують Smalltalk для об’єктно-орієнтованих застосувань. Smalltalk претендує на значне скорочення часу розроблення прикладних програм, у зв'язку з чим становить інтерес для стандартизації.
4.2 Системне ядро
Пояснення
У цьому пункті описане системне ядро як компонент прикладної платформи. Розглянуто Еталонну модель І описані служби, надані прикладному програмному забезпеченню. Системне ядро зазвичай розглядалося як частина операційної системи чи програми керування разом зі службами, що надають застосуванню об'єктами системного рівня типу драйверів пристроїв. Також описані чинні та вихідні стандарти, що визначають відношення АРІ до системного ядра.
Загальний набір служб системного ядра забезпечує мобільність та інтероперабельність прикладного програмного забезпечення. (Інші служби, наприклад, комунікаційні в 4.3, необхідні для повного підтримування мобільності та інтероперабельності). У той час як інші загальні служби можуть сприяти повторному використанню застосування, служби системного ядра виконують його безпосередньо, будучи загальними для більшості застосувань.
Ділянка дії
Системне ядро — відповідальні за керування ресурсами платформи служби прикладної платформи, включаючи процесор, пам’ять, файли, ввід-вивід. Загалом вони відокремлюють застосування від деталей машинної реалізації. Системне ядро перекриває області керування процесами, керування файлами, вводу-виводу і керування пам’яттю. Широке розмаїття користувацьких платформ: від великих систем загального призначення з поділом часу до невеликих критичних щодо часу систем спеціального призначення — призвело до включення таких служб, як синхронізація і таймери (timers), керування подіями і драйверами логічних пристроїв.
Далі також обговорено служби, що стосуються розподілених систем, оскільки прикладному програмному забезпеченню ці можливості доступні через платформу.
Примітка. Більш повно розподілені системи будуть розглянуті в наступних версіях Настанови.
Еталонна модель
У цьому пункті розглянуто специфічні для системного ядра POSIX-OSE категорії і АРІ. Наведена Еталонна модель розширює Еталонну модель із розділу З І не суперечить їй. У цьому пункті подано контекст для обговорення системного ядра. Еталонна модель системного ядра показана на рисунку 8.
Системне ядро призначене для звертання до ресурсів прикладної платформи і тому не містить унікальних компонентів ЕЕІ. Періодично системне ядро може використовувати в ЕЕІ компоненти інших служб. Наприклад, у разі звертання до файлу, доступного в мережі, системне ядро використовує служби комунікацій ЕЕІ. Передбачено, що системне ядро спирається на інші категорії служб у разі забезпечення ЕЕІ, обговорення ЕЕІ виходить за рамки цього підрозділу.
С истемне ядро в API:
керування процесами та нитками;
обслуговування середовища;
внутрішньовузлова комунікація і синхронізація;
узагальнений ввід-вивід;
обслуговування файлового запам’ятовувального пристрою (сховища);
керування подіями, помилками і винятковими ситуаціями;
обслуговування часу і дат (таймер);
керування пам’яттю;
логічне йменування
Рисунок 8 — Еталонна модель системного ядра POSIX-OSE
Більшість служб системного ядра доступні на прикладній платформі з одиничною системою або в мультисистемі з розподіленою прикладною платформою. Деякі із системних служб виконують дистанційно, якщо система розподілена по багатьох процесорних вузлах. Такий розподіл не впливає на АРІ і не проілюстрований на рисунку 8.
Служби
У цьому пункті розглянуто системне ядро, що підтримує мобільність застосувань та інтеропера- бельність систем. Служби, безпосередньо доступні прикладній програмі через АРІ системного ядра, описані в 4.2.4.1; використання інших служб ЄЕІ для системного ядра — у 4.2.4.2.
Далі описано головні групи системних служб, що їх надає прикладна платформа застосуванню на його вимогу. Не всім службам необхідний програмний інтерфейс І, як наслідок, служби описано як явні або неявні. До явних служб можна звертатися з прикладної програми (через АРІ); їх надають тільки на запит. Навпаки, неявні служби надає платформа без прямого запиту. Приклад неявної служби — запобігання записуванню в пам'ять однієї програми на місце іншої. Приклад явної служби — звертання для записування вмісту блоку пам’яті на певний пристрій.
API-служби. У цьому підпункті описано головні категорії системних служб, доступних через АРІ системного ядра. Служби забезпечують:
керування процесами І нитками;
обслуговування середовища;
внутрішньовузлову комунікацію і синхронізацію;
узагальнений ввід-вивід;
обслуговування сховища файлів;
керування подіями, помилками і винятковими ситуаціями;
таймер (служба часу І системного годинника);
керування пам’яттю;
логічне Іменування.
Ці служби застосовують до різної архітектури, зокрема однопроцесорних, мультипроцесорних та розподілених систем.
4.2.4.1.1 Керування процесами і нитками. Ці служби забезпечують створення, керування і видалення об’єктів, що керують ресурсами і виконуються на ділянці дії прикладної платформи. Існує широкий спектр паралельних у часі об’єктів, від широко відомих процесів (process) операційної системи до певних різновидів виконуваних об’єктів, які часто звуть нитками (threads) чи задачами (tasks).
Процеси. Найчастіше зазначають, що процеси складаються з адресного простору й одиничного (стосовно процесу) потоку керування, виконуваного усередині цього адресного простору і зв’язаного з ресурсами системи. У спектрі виконуваних процесів вони прагнуть зайняти чільне місце для перемикачів контексту (адресного простору), що розподіляють використання процесора між процесами. Зазвичай кожен процес захищений від інших.
На відміну від процесів нитка або задача — принцип паралелізму, що відбувається усередині контексту одиничного адресного простору (процесу). Найчастіше більшість виділених процесів системних ресурсів розділені між нитками усередині процесу, що зазвичай робить нитки легшими (lighter weight), ніж процеси, оскільки відсутня необхідність верхньої головної нитки під час зміни одного контексту нитки на інший. Однак відомі інші рішення, що впливають на "вагу" ниток і створюють їхній широкий спектр, загалом рішення враховують наявність, відсутність або суть таких властивостей:
ідентифікація;
адресний простір пам’яті;
розподіл пам'яті;
розмір стека;
інформацію про стан файлу/пристрою;
атрибути планування;
пріоритет;
програми оброблення переривань/вектори переривань;
ліміт системних ресурсів;
інформацію керування доступом.
Нитки особливо корисні для відображення асинхронної поведінки в еквівалентну синхронну, типу паралелізму вводу-виводу чи забезпечення структуризації застосувань, складених із логічно різних задач (наприклад, моделювання І системи роботи з вікнами).
Служби процесів і ниток. Паралелізм можливий на рівні процесу, на рівні нитки чи на обох рівнях одночасно. Таким чином, керування паралелізмом містить служби, що впливають на виконання процесів чи ниток:
зупинки і перезапускання процесів або ниток (припинення, поновлення);
зміни розподілу ресурсів процесора за процесами або нитками (пріоритет, часовий Інтервал);
зміни розподілу процесів або ниток, заснованих на тимчасових (чи інших) подіях;
захисту процесу або нитки від переривання протягом критичних періодів (у критичних точках);
створення процесу або нитки та їхнього готування для виконання;
знищення процесу або нитки і відновлення ресурсів;
визначення посилань на процес або нитку;
оцінки підключень до процесів або ниток, де підключення — логічний комунікаційний шлях між будь-якими двома об’єктами паралелізму (процес-процес, нитка-процес, нитка-нитка).
Планувальник — служба, що розподіляє обчислювальні ресурси між готовими до виконання процесами або нитками. Зазвичай надається принаймні два види планування запитів у ході виконання: короткострокове І довгострокове. Під час довгострокового планування визначають можливий ініціатор запиту на використання ресурсу процесора в поточний час, що може відбиватися в проекті системи. Короткострокове планування вибирає з числа наявних потреб у ресурсі активних запитувальних сторін і розподіляє ресурс процесора обраному ініціатору запиту.
У деяких системах керований паралелізм — це справжнє паралельне виконання. Запит необхідного ресурсу, поданого в локальному вузлі, не завжди обслуговується на тому самому локальному вузлі. Найзручніший шлях для обслуговування запиту може частково або повністю стати результатом роботи, виконуваної на різних процесорних вузлах. Це може відбуватися з різних причин, включно з вирівнюванням завантаження, доступністю ресурсу, коефіцієнтом прискорення обчислень, апаратною і програмною перевагами, що дає змогу службам приховати від застосування факт виконання функцій на різних вузлах. У цьому полягає явна перевага мобільності: програмному коду не потрібні докладні знання про систему, на якій виконується його прогін. Як альтернатива, служби можуть дозволяти користувачеві безпосередньо визначати логічний ресурс для виконання функції.
Пріоритетне планування ресурсів процесора дає змогу асоціювати значимість джерела запиту з використанням служб. У складніших схемах також установлена міра критичності запитів, використовуваних з метою поступового зниження ефективності функціювання системи. Планувальник(и) використовує інформацію про пріоритет та інші відомості для розподілу запитів на ресурси процесора і для запитів із черги в певному порядку.
Планувальники з абсолютним пріоритетом після певних подій звільняють ресурси процесора від джерела запиту. Зазвичай запит більш високого пріоритету або важливості з’являється або специфікується лімітом часу, визначеного для ресурсу процесора.
Хоча нитки не є синонімами з задачами мови Ада, задачі Ада — один Із можливих прикладів модуля з легшою вагою паралелізму.Обслуговування середовища. Ці служби забезпечують застосування доступом до різної інформації щодо середовища виконання застосувань. Конкретні характеристики включають таке:
атрибути, специфічні для об’єктів паралелізму (ідентифікація, пріоритет, розмір стека, атрибути планування, статус, розподіл пам’яті);
атрибути, специфічні для процесора (ідентифікатор вузла, Інформація електронного індикатора);
атрибути, специфічні для користувачів (ідентифікатор користувача і термінала, профіль взаємодії користувача, місце дії);
системні змінні (параметри командного рядка, вибір Із меню);
актуальний час і дата.
Служба внутрішньовузлової комунікації і синхронізації. У межах прикладної платформи процесор може одночасно виконувати одне або більше застосувань і їхніх компонентів. Застосування, запущені як незалежні програмні об’єкти, зв'язуються між собою за допомогою ряду механізмів, наданих або керованих системними службами (рисунок 2). Важливий клас системних служб стосується координації і синхронізації програмних об’єктів. У традиційних системах об’єкти виконують на одиничному процесорі. Однак спостерігається тенденція до збільшення використання мультипро- цесорів і об’єднаних у мережу процесорів, що висувають більше вимог до системних служб для забезпечення координації і синхронізації серед багатьох реально паралельних програмних об’єктів.
За одночасного виконання на платформі кількох об’єктів прикладного програмного забезпечення, застосування вимагають від системних служб координації і синхронізації одних об'єктів з іншими. Щодо написання застосувань із розпаралелюванням, розробник застосування має враховувати наявність двох рівнів паралелізму. Перший рівень — паралелізм на рівні ниток. Виявляється під час поділу процесу виконання об'єкта прикладного програмного забезпечення на множинні підкомпоненти (нитки), що спільно використовують доступ до даних і підпрограм одного процесу застосування. На цьому рівні обслуговування паралелізм стосується взаємних пріоритетів і планування ниток усередині одиничного процесу прикладної програми, їхньої взаємокомунікації. Другий рівень — паралелізм на рівні процесу застосування. Модуль — одиничний процес застосування, що охоплює всі підкомпоненти. На цьому рівні обслуговування паралелізм стосується відносної важливості індивідуальних процесів застосування, що конкурують за роздільне або спільне використання ресурсів системи.