Какие цели достигаются на уровне абстрагирования ос windows

Обновлено: 05.07.2024

В данной презентации представлена проверка домашнего задания и изложение нового материала.

ВложениеРазмер
otkrytyy_urok_po_distsipline_operatsionnye_sistemy.pptx 1.22 МБ

Предварительный просмотр:

Подписи к слайдам:

Государственное бюджетное профессиональное образовательное учреждение Воронежской области «Острогожский многопрофильный техникум» Открытый урок по дисциплине «Операционные системы» Преподаватель: Агошкова Ю.В . Острогожск 2020

Вставьте пропущенные компоненты Упрощенная структура Windows XP

Что такое инсталляция? Установка программного обеспечения , инсталляция — процесс установки программного обеспечения на компьютер конечного пользователя.

Какие существуют основные методы инсталляции? И нсталляция с CD И нсталляция по сети инсталляция с Flash накопителя

В чем преимущества файловой системы NTFS? NTFS обеспечивает широкий диапазон разрешений, в отличие от FAT, что дает возможность индивидуальной установки разрешений для конкретных файлов и каталогов. Это позволяет указать, какие пользователи и группы имеют доступ к файлу или папке и указать тип доступа. Встроенные средства восстановления данных; поэтому ситуации, когда пользователь должен запускать на томе NTFS программу восстановления диска, достаточно редки. Даже в случае краха системы NTFS имеет возможность автоматически восстановить непротиворечивость файловой системы, используя журнал транзакций и информацию контрольных точек. Реализованная в виде структуры папок файловой системы NTFS позволяет существенно ускорить доступ к файлам в папках большого объема по сравнению со скоростью доступа к папкам такого же объема на томах FAT. NTFS позволяет осуществлять сжатие отдельных папок и файлов, можно читать сжатые файлы и писать в них без необходимости вызова программы, производящей декомпрессию.

На какие фазы условно можно разделить работу ОС Windows ? Можно разделить работу ОС Windows на три фазы: процесс начальной нагрузки; ш татный; режим работы и завершение работы;

Какие цели достигаются на уровне абстрагирования ? Уровень абстрагирования от оборудования( Hardware Abstraction Layer , HAL). Его задачей является отделение операционной системы от особенностей конкретных реализаций в аппаратном обеспечении компьютера, т. е. от различий в материнских платах, в модификациях процессоров, в наборах микросхем и др. Благодаря этому уровню управление подсистемами прерываний, прямого доступа к памяти, системными шинами и таймерами для ядра операционной системы является одинаковым.

Вставьте пропущенные слова Ядро подпрограммы, транслирующие вызовы, поступившие от пользовательских программ в запросы обработки данных для конкретных устройств. содержит наиболее часто вызываемые низкоуровневые функции операционной системы: планирование и распределение ресурсов между процессами, их переключение и синхронизацию. Модуль NT Executive состоит из ……… и подсистем диспетчеризации управления программами с доступом к виртуальной памяти, окнам и графической подсистеме. Драйверы Микроядра

Найдите ошибку в определении Микроядро не отвечает за выделение памяти для приложений и распределение процессорного времени. NTFS лучше всего подходит для работы с маленькими дисками. Большими Отвечает

Процесс функционирования Windows XP условно подразделяется на три фазы: процесс начальной нагрузки, штатный режим работы и завершение работы. Для загрузки Windows XP используется следующий минимальный набор файлов: файлы, располагающиеся в корневом каталоге загрузочного диска. файлы, располагающиеся в системном подкаталоге / system32 : разделы реестра SYSTEM ; файлы, располагающиеся в системном подкаталоге / system32 / drivers : (необходимые драйверы устройств).

При инициализации ядро производит ряд действий в определенной последовательности: инициализация диспетчера памяти; инициализация диспетчера объектов; установка системы безопасности; настройка драйвера файловой системы; загрузка и инициализация диспетчера ввода-вывода; загрузка системных сервисов, которые реализуют взаимодействие с пользователем.

ЕСЛИ ОПЕРАЦИОННАЯ СИСТЕМА НЕ ЗАГРУЖАЕТСЯ КОРРЕКТНО, ТО ПРИ НАЖАТИИ КЛАВИШИ F 8 ЧТО БУДЕТ ПРОИСХОДИТЬ И КАКИЕ ПУНКТЫ БУДУТ НАХОДИТСЯ В РАСШИРЕНОМ МЕНЮ Безопасный режим – загрузка Windows XP с минимальным требуемым количеством системных файлов и драйверов устройств ; Безопасный режим с загрузкой сетевых драйверов – загрузка Windows XP с минимальным требуемым количеством системных файлов и драйверов устройств с поддержкой подключения к сети; Безопасный режим с поддержкой командной строки – загрузка Windows XP с минимальным требуемым количеством системных файлов и драйверов устройств с загрузкой режима командной строки; Включить протоколирование загрузки – режим позволяет записать этапы загрузки Windows XP Включить режим VGA – режим, загружает драйвер стандартного монитора VGA с разрешением 640 на 480 точек на дюйм и 16 цветами; Загрузка последней удачной конфигурации – режим, восстанавливает последнюю неиспорченную копию реестра Windows XP .

Структура Windows XP

Тема: «Сравнительные характеристики операционных систем»

Цели нашего урока: Обучающие: изучить сравнительные характеристики операционных систем, выработать умения оценивать и выбирать операционные системы, отработать навыки выбора программного обеспечения; Развивающие: способствовать формированию у студентов аналитического мышления, умению делать выводы содействовать умению у студентов выражать мысли, развитию навыков публичных выступлений содействовать получению студентом опыта работы в команде, самостоятельной деятельности.

Цели нашего урока: Воспитательные: прививать интерес к дисциплине и будущей специальности; совершенствовать навыки общения, формировать ответственность за свою деятельность и работу группы содействовать повышению уровня мотивации на занятии через применение приема групповой работы.

ФОРМИРОВАНИЕ ОБЩИХ КОМПЕТЕНЦИЙ, КОТОРЫЕ ПОМОГУТ ПОНИМАТЬ СУЩНОСТЬ И ЗНАЧИМОСТЬ ВАШЕЙ БУДУЩЕЙ ПРОФЕССИИ, ПРОЯВЛЯТЬ К НЕЙ УСТОЙЧИВЫЙ ИНТЕРЕС ОК 1. Понимать сущность и социальную значимость своей будущей профессии, проявлять к ней устойчивый интерес. ОК 2. Организовывать собственную деятельность, выбирать типовые методы и способы выполнения профессиональных задач, оценивать их эффективность и качество. ПК 1.3. Выполнять отладку программных модулей с использованием специализированных программных средств. ПК 3.2. Выполнять интеграцию модулей в программную систему. ПК 3.3. Выполнять отладку программного продукта с использованием специализированных программных средств.

План нашего урока: Изучить особенности различных операционных систем. Систематизировать информацию о сфере применения операционных систем. Научиться делать выводы и месте применения конкретной операционной системы.

Каждый студент в группе получит индивидуальную дидактическую карточку, материал которой отличен от материала карточки другого члена группы. На это вам 3 минуты. После чего студенты с одинаковыми карточками объединяются в группу для обсуждения. У всех членов группы одинаковые материалы это наша («ВСТРЕЧА ЭКСПЕРТОВ»). После чего вы обсуждаете материал и работаете в микро группах , заполняете таблицу . На это у вас 5 минут

Критерии оценки ОС

Выбор операционных систем для конкретных пользователей Категория пользователей: Выбор ОС по мнению аналитиков Домашний компьютер для непродвинутого пользователя Ubuntu , WindowsXP Домашний компьютер для профессионала Gentoo Домашний ноутбук, нетбук Windows XP ПК для небольшой организации Ubuntu , Windows XP , Gentoo ПК для крупной корпорации Windows 7, Ubuntu ПК для крупной корпорации, использующей специальное ПО Windows 7

Задание на дом Повторение и закрепление изученного материала с использованием конспекта лекции, учебника: Задание на дом: Повторение и закрепление материала с использованием конспекта учебника,1.Операционные системы, среды и оболочки Партыка Т.Л., Попов И.И.М.: ФОРУМ:ИНФРА-М, 2018. – 560 - с.- с. 240-245

Подведение итогов за урок «Все мы с Вами активные пользователи соц. Сетей и без них мы уже свою жизнь представить не можем. Вот и наше занятие - это один из интересных «постов» в Вашей информационной ленте обучения. И таких еще за время учебы будет тысяча, а то и больше. Если пара действительно была полезной, и дала вам новые знания, отложилась у Вас в памяти - то пришлите в сообщество «Смайлик по вашему настроению», и если у вас есть какой либо комментарий не стесняйтесь можете все писать !!

Спасибо за работу, до новых встреч!

По теме: методические разработки, презентации и конспекты


Открытый урок по дисциплине "Операционные системы"

В данном разделе представлен материал открытого урока по дисциплине "Операционные системы" на тему "Программы оболочки".


Методическое пособие по выполнению практического занятия №1 "Изучение структуры операционной системы" по дисциплине "Операционные системы и среды" для специальности 230113 Компьютерные системы и комплексы

Методическое пособие создано для реализации основной профессиональной образовательной программы в соответствии с ФГОС по специальности СПО 230113 Компьютерные системы и комплексы (базовой подгото.


Методическое пособие по выполнению практического занятия №2 "Работа с основными командами операционной системы" по дисциплине "Операционные системы и среды" для специальности 230113 Компьютерные системы и комплексы

Методическое пособие создано для реализации основной профессиональной образовательной программы в соответствии с ФГОС по специальности СПО 230113 Компьютерные системы и комплексы (базовой подгото.


Методическое пособие по выполнению практического занятия №6 "Работа в командной строке операционной системы Windows" по дисциплине "Операционные системы и среды" для специальности 230113 Компьютерные системы и комплексы

Методическое пособие создано для реализации основной профессиональной образовательной программы в соответствии с ФГОС по специальности СПО 230113 Компьютерные системы и комплексы (базовой подгото.


Методическое пособие по выполнению практического занятия №4-5 Работа с каталогами в операционных системах. Работа с файлами в операционных системах" по дисциплине "Операционные системы и среды" для специальности 230113 Компьютерные системы и комплексы

Методическое пособие создано для реализации основной профессиональной образовательной программы в соответствии с ФГОС по специальности СПО 230113 Компьютерные системы и комплексы (базовой подгото.


Методическое пособие по выполнению практического занятия №8 "Управление процессами и приоритетами в операционных системах" по дисциплине "Операционные системы и среды" для специальности 230113 Компьютерные системы и комплексы

Методическое пособие создано для реализации основной профессиональной образовательной программы в соответствии с ФГОС по специальности СПО 230113 Компьютерные системы и комплексы (базовой подгото.

Разработка учебного занятия по дисциплине «Операционные системы и среды» содержит план-конспект, технологическую карту занятия. В приложении приведены раздаточный материал для студентов, эталоны.

Привет, Хабр! Хочу представить вашему вниманию серию статей-переводов одной интересной на мой взгляд литературы — OSTEP. В этом материале рассматривается достаточно глубоко работа unix-подобных операционных систем, а именно — работа с процессами, различными планировщиками, памятью и прочиими подобными компонентами, которые составляют современную ОС. Оригинал всех материалов вы можете посмотреть вот тут. Прошу учесть, что перевод выполнен непрофессионально (достаточно вольно), но надеюсь общий смысл я сохранил.

Рассмотрим наиболее фундаментальную абстракцию, которую ОС предоставляет пользователям: процесс. Определение процесса довольно-таки просто — это работающая программа. Программа сама по себе является безжизненной вещью, располагающейся на диске — это набор инструкций и возможно каких-то статических данных, ожидающих момента запуска. Именно ОС берет эти байты и запускает их, преобразую программу во что-то полезное.
Чаще всего пользователи хотят запускать более одной программы одновременно, например вы можете запустить на вашем ноутбуке браузер, игру, медиаплеер, текстовый редактор и тому подобное. Фактически типичная система может запускать десятки и сотни процессов одновременно. Этот факт делает систему более простой в использовании, вам никогда не приходится беспокоиться о том, свободен ли CPU, вы просто запускаете программы.

Отсюда вытекает проблема: как обеспечить иллюзию множества CPU? Как ОС создать иллюзию практически бесконечного количества CPU, даже если у вас всего один физический CPU?

ОС создает эту иллюзию посредством виртуализации CPU. Запуская один процесс, затем останавливая его, запуская другой процесс и так далее, ОС может поддерживать иллюзию того, что существует множество виртуальных CPU, хотя фактически это будет один или несколько физических процессоров. Такая техника называется разделение ресурсов CPU по времени. Эта техника позволяет пользователям запускать столько одновременных процессов, сколько они пожелают. Ценою такого решения является производительность – поскольку если CPU делят несколько процессов, каждый процесс будет обрабатываться медленнее.
Для воплощения виртуализации CPU, а особенно для того чтобы делать это хорошо, ОС нуждается и в низкоуровневой и в высокоуровневой поддержке. Низкоуровневая поддержка называется механизмами — это низкоуровневые методы или протоколы, которые реализуют нужную часть функционала. Пример такого функционала — контекстное переключение, которое дает ОС возможность останавливать одну программу и запускать на процессоре другую программу. Такое разделение по времени реализовано во всех современных ОС.
На вершине этих механизмов располагается некоторая логика, заложенная в ОС, в форме “политик”. Политика — это некоторый алгоритм принятия решения операционной системой. Такие политики, например, решают, какую программу надо запускать (из списка команд) в первую очередь. Так, например, данную задачу решит политика, называющаяся планировщик (scheduling policy) и при выборе решения будет руководствоваться такими данными как: история запуска (какая программа была запущена дольше всех за последнюю минут), какую нагрузку осуществляет данный процесс (какие типы программ были запущены), метрики производительности (оптимизирована ли система для интерактивного взаимодействия или для пропускной способности) и так далее.

Абстракция: процесс

Абстракция работающей программы, выполняемая операционной системой это то, что мы называем процесс. Как уже было сказано ранее процесс – это просто работающая программа, в любой моментальный промежуток времени. Программа с помощью которой мы можем получить суммарную информацию с различных ресурсов системы, и к которым обращается или которые эта программа затрагивает в процессе своего выполнения.
Для понимания составляющих процесса нужно понимать состояния системы: что программа может считывать или изменять во время своей работы. В любой момент времени нужно понимать, какие элементы системы важны для выполнения программы.
Одним из очевидных элементов состояния системы, которые включает в себя процесс — это память. Инструкции располагаются в памяти. Данные, которые программа читает или пишет также, располагаются в памяти. Таким образом, память, которую процесс может адресовать (так называемое адресное пространство) является частью процесса.
Также частью состояния системы являются регистры. Множество инструкций направлено на то, чтобы изменить значение регистров или прочитать их значение и таким образом регистры тоже становятся важной частью работы процесса.
Следует отметить, что состояние машины формируется также из некоторых специальных регистров. Например, IP — instruction pointer — указатель на инструкцию, которую программа исполняет в текущий момент. Еще есть stack pointer и связанный с ним frame pointer, которые используются для управления: параметрами функций, локальными переменными и адресами возврата.
Наконец, программы часто обращаются к ПЗУ (постоянному запоминающему устройству). Такая информация о “I/O” (вводе-выводе) должна включать в себя список файлов, открытых процессом в данный момент.

Process API

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

● Create (создание): В ОС должен входить какой либо метод, позволяющий создавать новый процессы. Когда вы вводите команду в терминал или запускаете приложение через двойной клик по иконке, посылается обращение к ОС для создания нового процесса и последующего запуска указанной программы.
● Удаление: Раз есть интерфейс для создания процесса, ОС также должна предоставлять возможность для принудительного удаления процесса. Большинство программ естественно будут запущены и завершены сами по себе по мере их выполнения. В противном случае пользователь хотел бы иметь возможность убить их и таким образом интерфейс для остановки процесса будет не лишним.
● Wait (ожидание): Иногда полезно дождаться завершения процесса, поэтому обеспечиваются некоторые интерфейсы предоставляющие возможностью ожидания.
● Misc Control (разное управление): Кроме убийства и ожидания процесса еще существуют другие разнообразные контролирующие методы. Например большинство ОС предоставляют возможность заморозки процесса (остановка его выполнения на некоторый период) и последующее возобновление (продолжение исполнения)
● Status (состояние): Существуют различные интерфейсы для получения некоторой информации он статусе процесса, такие как продолжительность его работы или в каком состоянии он сейчас находится.

image

Создание процесса: детали

Одна из интересных вещей — как же именно программы трансформируются в процессы. Особенно, как ОС поднимает и запускает программу. Как конкретно создается процесс.
В первую очередь ОС должна загрузить код программы и статические данные в память (в адресное пространство процесса). Программы обычно располагаются на диске или твердотельном накопителе в некотором исполняемом формате. Таким образом, процесс загрузки программы и статических данных в память требует от ОС возможности прочитать эти байты с диска и расположить их где-то в памяти.

В ранних ОС процесс загрузки выполнялся нетерпеливо (eagerly), то есть это значит что код загружался в память целиком до того как программа запускалась. Современные ОС делают это лениво (lazily), то есть загружая кусочки кода или данных только тогда, когда они требуются программе во время ее выполнения.

После того как код и статические данные загружены в память ОС нужно выполнить еще несколько вещей перед тем как запустить процесс. Некоторое количество памяти должно быть выделено под стек. Программы используют стек для локальных переменных, параметров функций и адресов возврата. ОС выделяет эту память и отдает ее процессу. Стек также может выделяться с некоторыми аргументами, конкретно она заполняет параметры функции main(), например массивом argc и argv.

Операционная система может также выделять некоторое количество памяти под кучу (heap) программы. Куча используется программами для явно запрашиваемых динамически выделенных данных. Программы запрашивают это пространство, вызывая функцию malloc() и явно очищает, вызывая функцию free(). Куча нужна для таких структур данных как: связанные листы, таблицы хэшей, деревья и другие. По началу под кучу выделяется маленькое количество памяти, но со временем в процессе работы программы куча может запросить большее количество памяти, через библиотечный API вызов malloc(). Операционная система вовлечена в процесс выделения большего количества памяти для того, чтобы помочь в удовлетворении этих вызовов.

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

Таким образом, загружая код и статические данные в память, создавая и инициализируя стек, а также выполняя другую работу, относящуюся к выполнению задач ввода-вывода, ОС подготавливает площадку для выполнения процесса. В конце концов, остается последняя задача: запустить на исполнение программу через ее точку ввода, называемую функцией main(). Переходя к выполнению функции main(), ОС передает управление CPU вновь созданному процессу, таким образом, программа начинает исполняться.

Состояние процесса

Теперь, когда у нас есть некоторое понимание, что такое процесс и как он создается, перечислим состояния процесса, в которых он может находиться. В самой простой форме процесс может находиться в одном из этих состояний:
● Running. В запущенном состоянии процесс выполняется на процессоре. Это значит, что происходит выполнение инструкций.
● Ready. В состоянии готовности процесс готов запуститься, но по каким-то причинам ОС не исполняет его в заданный момент времени.
● Blocked. В заблокированном состоянии процесс выполняет какие-то операции, которые не дают ему быть готовым к исполнению до тех пор, пока не произойдет какое-либо событие. Один из обычных примеров — когда процесс инициализирует операцию IO, он становится заблокированным и таким образом какой-то другой процесс может использовать процессор.

image

Представить себе эти состояния можно в виде графа. Как мы можем видеть на картинке, состояние процесса может меняться между RUNNING и READY на усмотрение ОС. Когда состояние процесса меняется с READY, на RUNNING это означает, что процесс был запланирован. В обратную сторону — снят с планировки. В момент, когда процесс становится BLOCKED, например, инициализирую операцию IO, ОС будет держать его в этом состоянии до наступления некоторого события, например завершение IO. в этот момент переход в состояние READY и возможно моментально в состояние RUNNING, если так решит ОС.
Давайте взглянем на пример того, как два процесса проходят через эти состояния. Для начала представим, что оба процесса запущены, и каждый использует только CPU. В этом случае, их состояния будут выглядеть следующим образом.

image

В следующем примере первый процесс через некоторое время работы запрашивает IO и переходит в состояние BLOCKED, предоставляя другому процессу возможность запуска (РИС 1.4). ОС видит, что процесс 0 не использует CPU и запускает процесс 1. Во время выполнения процесса 1 — IO завершается и статус процесса 0 меняется на READY. Наконец процесс 1 завершился, а по его окончание процесс 0 запускается, исполняется и заканчивает свою работу.

image

Структура данных

ОС сама является программой, и также как и любая другая программа имеет некоторые ключевые структуры данных, которые отслеживают разнообразные релевантные куски информации. Для отслеживания состояния каждого процесса в ОС будет поддерживаться некоторый process list для всех процессов в состоянии READY и некоторую дополнительную информацию для отслеживания процессов, которые выполняются в текущий момент. Также, ОС должна отслеживать и заблокированные процессы. После завершения IO, ОС обязана пробудить нужный процесс и перевести его в состояние готовности к запуску.

Так, например, ОС должна сохранить состояние регистров процессора. В момент остановки процесса состояние регистров сохраняется в адресном пространстве процесса, а в момент продолжения его работы — восстановить значения регистров и таким образом продолжить выполнения этого процесса.

Кроме состояний ready, blocked, running существуют еще некоторые другие состояния. Иногда в момент создания процесс может иметь состояние INIT. Наконец процесс может быть помещен состояние FINAL, когда он уже завершился, но информация о нем еще не вычищена. В UNIX системах такое состояние называется процесс-зомби. Это состояние полезно для случаев когда родительский процесс хочет узнать код возврата потомка, например, обычно 0 сигнализирует об успешном завершении, а 1 об ошибочном, однако программисты могут делать дополнительные коды вывода, сигнализируя о разных проблемах. При завершении процесс-родитель делает последний системный вызов, например wait(), чтобы дождаться завершения работы процесса-потомка и просигнализировать ОС о том, что можно очистить любые данные, связанные с завершенным процессом.

Презентацию к данной лекции Вы можете скачать здесь.

Введение

Сложность архитектуры ОС приводит к необходимости использования специальных методов для их разработки. В лекции рассмотрены наиболее популярные из таких методов.

Уровни абстракции ОС

Проектирование и реализация операционных систем адекватно соответствуют принципу уровней абстракции, сформулированному Э. Дейкстрой и подробно рассмотренному в [ 2 ] . На рис. 7.1 изображены уровни абстракции при разработке ОС.

Уровни абстракции ОС.

Каждый новый уровень абстракции M определяет новые операции , в реализации которых используются операции предшествующего уровня M-1. Кроме того, уровень M-1 может иметь скрытые операции , используемые только на этом уровне и недоступные другим уровням.

На рис. 7.2 изображены уровни абстракции операционной системы OS/2 – второй ОС (вслед за MS DOS ), разработанной фирмой Microsoft (в середине 1980-х гг.) для персональных компьютеров PS /2. OS/2 является значительно более развитой ОС, чем MS DOS , как видно из рисунка.

Уровни абстракции OS/2

На верхнем уровне абстракции прикладные программы пользователей обращаются к интерфейсу прикладного программирования (application programming interface – API),который представляет собой набор библиотечных функций. API структурирован по подсистемам, причем набор подсистем расширяем. Нижние уровни абстракции реализуют ядро ОС, выполняющее функции управления памятью , диспетчеризации задач и управления устройствами. Наконец, на самом низком уровне абстракции реализованы драйверы устройств .

Операционные системы с микроядром

  1. микроядро легче расширять;
  2. легче переносить ОС на новые аппаратные платформы;
  3. увеличивается надежность ОС, так как большее число программ выполняются в непривилегированном режиме;
  4. улучшается безопасность ОС.

По такому принципу разработаны все операционные системы семейства Windows NT. Структура Windows NT изображена на рис. 7.3.

Клиент –серверная структура Windows NT.

Система Windows NT (от New Technology ), разработанная в середине 1990-х гг., воплотила в себе новый подход Microsoft к разработке операционных систем. Его отличительные черты: модульная клиент-серверная архитектура , микроядро, обеспечение совместимости с распространенными видами приложений для других ОС (например, OS/2 ), расширенные сетевые возможности, повышенная надежность . Windows NT с середины 1990-х гг. широко распространилась как серверная ОС . Для совместимости с приложениями для других ОС, в Windows NT реализованы соответствующие серверы. Взаимодействие клиентских приложений с ними показано на схеме. Аббревиатура Win32 означает "библиотеки ( API ) ОС Windows для 32-разрядных процессоров". POSIX (Portable Operating Systems of unIX type) – стандарт для библиотек, системных вызовов и системных программ для операционных систем типа UNIX . POSIX -совместимость означает, что приложение , предназначенное для UNIX , использует только стандартные возможности. Все современные ОС (начиная с Windows NT) обеспечивают совместимость с POSIX -приложениями. Заметим, что все серверы для совместимости с другими ОС в Windows NT выполняются в непривилегированном режиме, но обращаются к микроядру.

Аннотация научной статьи по компьютерным и информационным наукам, автор научной работы — Николаев Д., Староверова Н., Хасанова А.

В предлагаемой статье рассматривается уровень абстракций, который достаточно широкого применяется в программировании. Уровень абстракции представляет собой способ сокрытия деталей реализации определенного набора функциональных возможностей, который применяется для управления сложной проектируемой системы. Показано, что использование уровней абстракции в разработке операционных систем имеет особое место, так как декомпозиция системы весьма удобна для обработки и восприятия, при этом число уровней не должно превышать семи, так как на примере модели OSI можно убедиться, насколько усложнится задача при увеличении числа уровней абстракции .

Похожие темы научных работ по компьютерным и информационным наукам , автор научной работы — Николаев Д., Староверова Н., Хасанова А.

Программно-аппаратная реализация стека протоколов TCP/IP в процессорах компании Texas Instruments Обобщенная модель системы криптографически защищенных вычислений Взаимодействие в сети Интернет и задача его спецификации i Не можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

Текст научной работы на тему «Принцип уровней абстракции и его использование при разработке операционных систем»

Д. Николаев, Н. Староверова, А. Хасанова

ПРИНЦИП УРОВНЕЙ АБСТРАКЦИИ И ЕГО ИСПОЛЬЗОВАНИЕ ПРИ РАЗРАБОТКЕ ОПЕРАЦИОННЫХ СИСТЕМ

Ключевые слова: уровни абстракций, операционные системы, объектно-ориентированное программирование.

В предлагаемой статье рассматривается уровень абстракций, который достаточно широкого применяется в программировании. Уровень абстракции представляет собой способ сокрытия деталей реализации определенного набора функциональных возможностей, который применяется для управления сложной проектируемой системы. Показано, что использование уровней абстракции в разработке операционных систем имеет особое место, так как декомпозиция системы весьма удобна для обработки и восприятия, при этом число уровней не должно превышать семи, так как на примере модели OSI можно убедиться, насколько усложнится задача при увеличении числа уровней абстракции.

Keywords: levels of abstraction, operating systems, object-oriented programming.

The article discusses the level of abstraction, which is wide used in programming. The level of abstraction is a way of hiding implementation details of a particular set offunctionality, which is used for the management of complex design systems. It is shown that the use of levels of abstraction in the development of operating systems has a special place, as the decomposition of the system is very convenient for processing and perception, with the number of levels should not exceed seven, as in the example of the OSI model, you can see how complicated the task by increasing the number of levels of abstraction.

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

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

Рассмотрим первоначально общие понятия, а затем, конкретный пример использования данного механизма в разработке операционных систем.

Уровень абстракции представляет собой способ сокрытия деталей реализации определенного набора функциональных возможностей, который применяется для управления сложной проектируемой системы. При этом система подразделяется на несколько уровней. Детали нижних уровней-скрываются, дабы обеспечить верхним уровням более простые модели [1].

И все-таки, первые языки программирования позволяли программисту абстрагироваться от конкретных машинных деталей и уменьшить количество уровней абстракции. Именно в этом причина их успеха. Фактически эти языки позволяли программисту работать почти на том же уровне абстракции, какой был в прикладной задаче. Дело в том, что задачи решались хорошо математически определённые, сложные в основном по логике, а математические объекты были самые элементарные -переменная, вектор, матрица. Для тех времён такой абстракции было вполне достаточно - и достаточно сейчас для решения большинства вычислительных задач.

При таком подходе программирование - это перенесение логики алгоритма на язык программирования, не более того. Всё сводится к логике.

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

Если же понимать подпрограмму с точки зрения абстрагирования, то мы неизбежно приходим к иерархическому построению программы, соответствующему последовательному раскрытию абстрактных объектов. Майерс приводит следующие свойства этих уровней:

1. На каждом уровне не известно о свойствах и даже о существовании более высоких уровней.

2. На каждом уровне ничего не известно о внутреннем строении других уровней.

3. Каждый уровень представляется группой модулей.

4. Каждый уровень располагает определёнными ресурсами, которые скрывает от других уровней или представляет им некоторые их абстракции.

5. Каждый уровень может обеспечивать некоторую абстракцию данных в системе.

6. Предположения, которые на каждом уровне делаются относительно других уровней, должны быть минимальны.

7. Связи между уровнями ограничены явными аргументами.

8.Каждый уровень должен иметь высокую прочность и слабое сцепление.

Таким образом, прежде чем проектировать систему, нужно представить её иерархически. Это прямо вытекает из организации человеческого мозга. Он может манипулировать ограниченным количеством объектов (не более семи) и к тому же способен эффективно понимать одновременно не более двух уровней абстракции - текущий и предыдущий. Поэтому, если при написании программы углубиться в детали, чтобы реализовать некий сегмент, то потом, выйдя из него, с трудом можно вспомнить, зачем это было нужно. Нисходящий подход родился именно из этих соображений - нужно было найти путь такой, чтобы во время всего процесса проектирования находиться на одном уровне абстракции и манипулировать, возможно, меньшим количеством объектов. Подход хорош, но не идеален, так как выделять абстрактные объекты человек по природе не способен, и потому уровни абстракции распределяются в соответствии с логикой программы. Человек по-прежнему абстрагируется от логики программы, но, как правило, вынужден точно определять данные, проходящие через несколько сегментов программы. Поэтому уровни абстракции не получаются, получаются просто уровни подпрограмм. И, если в хорошо определённых математических задачах этот фокус проходит, так как там абстракция идёт в основном по логике, то для других задач - нет. В области численных задач был даже такой период, когда намечалось написание универсальных подпрограмм, которые останется только вызывать в определённом порядке.

Однако в целом этот метод не оправдался, так как программирование ушло от вычислительных задач и шагнуло к информационным, а тут уже на

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

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

На этом пути создаются всяческие языки, ориентированные на данные. Понятно, что используя достижения предыдущего этапа - от логики человек привычно абстрагируется подпрограммами. Однако и тут не предел развития - потому что на самом деле (без машины) человек (разработчик) работает не в терминах логики и/или данных - он оперирует с объектами, имеющими определённые свойства.

Можно предположить, что современное программирование идёт именно к этому. Уже достаточно очевидно, что фактически речь идёт об абстрактных типах данных, но предпочтительнее говорить о более широком понятии - объектно-ориентированном подходе к программированию. Это значительно шире, так как, кроме технических средств (языков и т.д.), здесь речь идёт и об изменении мышления программиста.

Разработка программы на языке высокого уровня является наглядной иллюстрацией многоуровневой абстракции. Компилятор преобразует программы на ЯВУ в язык ассемблера, который затем переводит команды в двоичный код, понятный для процессора. Необходимо заметить, что некоторые компиляторы генерируют команды уже непосредственно на машинном языке, минуя уровень ассемблера.

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

Примерами моделей программного обеспечения, использующих уровни абстракции, являются семиуровневая модель OSI для протоколов передачи данных компьютерных сетей, библиотека графических примитивов OpenGL, модель ввода-вывода на основе потоков байтов из Unix, адаптированная MS DOS, Linux и многие другие современные операционные системы [3].

К примеру, в сетевой модели OSI содержится семь уровней абстракции:

1. Физический - самый нижний уровень абстракции этой модели, который отвечает за передачу данных, которые представлены в двоичном коде, от устройства к устройству. К нему относятся физические, механические и электрические интерфейсы между двумя системами. Все функции этого уровня реализуются на устройствах, подключенных к сети.

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

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

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

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

6. Представительский - уровень, обеспечивающий преобразование протоколов и кодирование/декодирование данных. Этот уровень представляется как промежуточный протокол для преобразования информации, полученной из соседних уровней. Т. е. запросы приложений с прикладного уровня здесь преобразуются в формат для передачи по сети, а данные, полученные из сети, преобразуются в формат приложений. Также этот уровень абстракции форматирует и преобразовывает код, чтобы обеспечить приложению ту информацию, с которой он мог бы работать, и которая имела бы смысл, переводит данные из одного формата в другой. Еще одной функцией этого уровня является защита информации от несанкционированного доступа при пересылке. Для этого на этом уровне существуют подпрограммы, сжимающие текст и преобразовывающие графические файлы в битовые потоки для дальнейшей передачи по сути.

Соответственно, уровень представления отвечает за организацию и защиту данных при пересылке.

7. Прикладной - самый верхний уровень абстракции модели, который обеспечивает взаимодействие пользователя с сетью:

- осуществляет удалённый доступ к файлам и базам данных и пересылку электронной почты;

- отвечает за передачу служебной информации;

- предоставляет приложениям информацию об ошибках;

- формирует запросы к представительскому уровню.

Типичное представление с точки зрения архитектуры компьютера системы в виде последовательности уровней абстракции:

1. компьютерная техника

3. язык ассемблера

4. ядро операционной системы

При этом необходимо упомянуть, что любой из протоколов модели OSI может взаимодействовать только с протоколами своего уровня и с протоколами на единицу выше и/или ниже своего уровня. Также любой протокол модели OSI может выполнять только функции своего уровня и никакого другого больше.

Причин, по которым модель OSI не была реализована не так уж и мало: - в связи с затянувшейся разработкой протоколов OSI, основным используемым стеком протоколов стал TCP/IP, разработанный ещё до принятия модели OSI и вне связи с ней и ни одна из компаний не стала поддерживать очередной стек протокол, ожидая, что это сделает кто-то другой;

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

- сложность модели и протоколов, а также медлительность первых и последующих реализаций;

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

Проанализировав вышесказанное, можно сделать вывод, что использование уровней абстракции в разработке операционных систем имеет особое место, так как декомпозиция системы весьма удобна для обработки и восприятия. В первую очередь восприятия разработчика. Также необходимо учесть, что число уровней не должно превышать семи, так как на примере модели OSI можно убедиться, насколько усложнится задача при увеличении числа уровней абстракции.

Но все-таки несмотря на все свои недостатки, модель OSI (кроме сеансового уровня и уровня представления) показала себя исключительно

полезной для теоретических дискуссий о компьютерных сетях.

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

Читайте также: