как называется исполняемый код содержащий обращения к функциям ос

Файл — это… Что такое файлы и папки 📂

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

Файл это – основные положения и определения

Файл в информатике – объект, который представляет собой именованный контейнер для различных типов информации.

Само слово появилось в 1952 году и произошло от английского file (в переводе с английского – картотека). Однако в то время данным понятием обозначали колоду перфокарт, то есть само устройство компьютерной памяти, а не ее содержимое.

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

Файловой системой в информатике называется способ, при помощи которого организуется хранение файлов, как на компьютерах, так и других цифровых устройствах (видеокамерах, фотоаппаратах и т.д.)

Сейчас, в основном, используются сложные иерархические файловые системы с древовидной структурой.

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

Свойства

После того, как мы разобрались с основными понятиями, рассмотрим свойства и параметры, которыми обладает файл:

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

Операции

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

Внутренние:

Внешние:

Папки

Рассмотрим основное определение:

Папка – это объект, который предоставляет доступ пользователю к каталогу файловой системы.

Данное понятие впервые использовалось с выходом ОС MacSS (Mac System Software) и происходило от английского слово folder (в переводе с английского офисная папка). В Windows оно начало использоваться с выходом Windows 95. До этого использовались такие термины, как каталог и директория. Используются они и сейчас и имеют точно такой же смысл, как и слово папка.

Если говорить простым языком, папка содержит доступ, как к файлам находящимся внутри неё, так и к другим папкам, которые могут в ней находиться. Каталоги помогают группировать все файлы, которые находятся на носителе данных (например, на жестком диске).

Каталоги можно разделить по нескольким характеристикам. Например, можно поделить их на пользовательские и системные:

А можно разделить их по уровню вложенности:

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

Свойства и операции

Свойства точно такие же, как и файлов (имя, права доступа, дата последнего изменения). Это относится и к операциям (копирование, переименование, перемещение). Однако следует отметить одну важную особенность – для директорий не указывается расширение (формат).
Чтобы получить доступ ко всем характеристикам, которые обладают директории, в Windows 7-10 надо:

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

Заключение

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

Источник

разделения времени и реального времени. 1 глава

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

Подсистема управления процессами планирует выполнение процессов и выполняет следующие функции:

· распределяет процессорное время между несколькими одновременно существующими в системе процессами;

· занимается созданием, переключением состояния и уничтожением процессов;

· обеспечивает процессы необходимыми системными ресурсами;

· поддерживает синхронизацию процессов;

· обеспечивает взаимодействие процессов.

Многозадачность – способ организации вычислительного процесса, при котором на одном процессоре попеременно выполняются сразу несколько программ.

Цель минимизация простоев устройств компьютера

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

Характерные критерии производительности:

· Удобство работы пользователя, заключающееся, в том, что они имеют возможность интерактивно работать одновременно с несколькими приложениями на одной машине;

Многозадачность в системах пакетной обработки

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

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

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

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

Многозадачность в системах разделения времени

· Пользователь интерактивно работает сразу с несколькими приложениями

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

· Пропускная способность меньше, чем у систем пакетной обработки

· Дополнительные накладные расходы на переключение контекстов

· Более эффективное использование ресурсов системы

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

Многозадачность в системах реального времени

· Фиксированный набор заранее разработанных программ

· Переключение между задачами основано на расписании плановых работ

· Пропускная способность не главное

· Основной критерий реактивность или время реакции системы

· Проектируется с учетом запаса

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

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

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

10. Понятия процесса и потока. Состояния потока.

Планирование и диспетчеризация потоков в многопоточных системах

(планирование потоков с использованием не вытесняющих алгоритмов, вытесняющее планирование потоков на основе квантования, вытесняющее планирование на основе приоритетов, смешанные алгоритмы планирования).

Приоритеты и концепции планирования потоков в Windows 2000, ОС Unix System V и OS/2.

Понятия «процесс» и «поток»

Чтобы поддерживать мультипрограммирование, ОС должна определить и оформить для себя те внутренние единицы работы, между которыми будет разделяться процессор и другие ресурсы компьютера. В настоящее время в большинстве операционных систем определены два типа единиц работы. Более крупная единица работы, обычно носящая название процесса, или задачи, требует для своего выполнения нескольких более мелких работ, для обозначения которых используют термины «поток», или «нить».

Итак, в чем же состоят принципиальные отличия в понятиях «процесс» и «поток»?

Очевидно, что любая работа вычислительной системы заключается в выполнении некоторой программы. Поэтому и с процессом, и с потоком связывается определенный программный код, который для этих целей оформляется в виде исполняемого модуля. Чтобы этот программный код мог быть выполнен, его необходимо загрузить в оперативную память, возможно, выделить некоторое место на диске для хранения данных, предоставить доступ к устройствам ввода-вывода, например к последовательному порту для получения данных по подключенному к этому порту модему; и т. д. В ходе выполнения программе может также понадобиться доступ к информационным ресурсам, например файлам, портам TCP/UPD, семафорам. И, конечно же, невозможно выполнение программы без предоставления ей процессорного времени, то есть времени, в течение которого процессор выполняет коды данной программы.

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

В простейшем случае процесс состоит из одного потока, и именно таким образом трактовалось понятие «процесс» до середины 80-х годов (например, в ранних версиях UNIX) и в таком же виде оно сохранилось в некоторых современных ОС. В таких системах понятие «поток» полностью поглощается понятием «процесс», то есть остается только одна единица работы и потребления ресурсов — процесс. Мультипрограммирование осуществляется в таких ОС на уровне процессов.

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

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

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

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

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

Из всего вышеизложенного, следует, что в операционной системе наряду с процессами нужен другой механизм распараллеливания вычислений, который учитывал бы тесные связи между отдельными ветвями вычислений одного и того же приложения. Для этих целей современные ОС предлагают механизм многопоточной обработки (multithreading). При этом вводится новая единица работы — поток выполнения, а понятие «процесс» в значительной степени меняет смысл. Понятию «поток» соответствует последовательный переход процессора от одной команды программы к другой. ОС распределяет процессорное время между потоками. Процессу ОС назначает адресное пространство и набор ресурсов, которые совместно используются всеми его потоками.

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

Итак, мультипрограммирование более эффективно на уровне потоков, а не процессов. Каждый поток имеет собственный счетчик команд и стек. Задача, оформленная в виде нескольких потоков в рамках одного процесса, может быть выполнена быстрее за счет псевдопараллельного (или параллельного в мультипроцессорной системе) выполнения ее отдельных частей. Например, если электронная таблица была разработана с учетом возможностей многопоточной обработки, то пользователь может запросить пересчет своего рабочего листа и одновременно продолжать заполнять таблицу. Особенно эффективно можно использовать многопоточность для выполнения распределенных приложений, например многопоточный сервер может параллельно выполнять запросы сразу нескольких клиентов.

Использование потоков связано не только со стремлением повысить производительность системы за счет параллельных вычислений, но и с целью создания более читабельных, логичных программ. Введение нескольких потоков выполнения упрощает программирование. Например, в задачах типа «писатель-читатель» один поток выполняет запись в буфер, а другой считывает записи из него. Поскольку они разделяют общий буфер, не стоит их делать отдельными процессами. Другой пример использования потоков — управление сигналами, такими как прерывание с клавиатуры (del или break). Вместо обработки сигнала прерывания один поток назначается для постоянного ожидания поступления сигналов. Таким образом, использование потоков может сократить необходимость в прерываниях пользовательского уровня. В этих примерах не столь важно параллельное выполнение, сколь важна ясность программы.

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

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

· выполнение — активное состояние потока, во время которого поток обладает всеми необходимыми ресурсами и непосредственно выполняется процессором;

· ожидание — пассивное состояние потока, находясь в котором, поток заблокирован по своим внутренним причинам (ждет осуществления некоторого события, например завершения операции ввода-вывода, получения сообщения от другого потока или освобождения какого-либо необходимого ему ресурса);

· готовность — также пассивное состояние потока, но в этом случае поток заблокирован в связи с внешним по отношению к нему обстоятельством (имеет все требуемые для него ресурсы, готов выполняться, однако процессор занят выполнением другого потока).

В течение своей жизни каждый поток переходит из одного состояния в другое в соответствии с алгоритмом планирования потоков, принятым в данной операционной системе.

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

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

Рис. 4.3. Граф состояний потока в многозадачной среде

В состоянии выполнения в однопроцессорной системе может находиться не более одного потока, а в каждом из состояний ожидания и готовности — несколько потоков. Эти потоки образуют очереди соответственно ожидающих и готовых потоков. Очереди потоков организуются путем объединения в списки описателей отдельных потоков. Таким образом, каждый описатель потока, кроме всего прочего, содержит по крайней мере один указатель на другой описатель, соседствующий с ним в очереди. Такая организация очередей позволяет легко их переупорядочивать, включать и исключать потоки, переводить потоки из одного состояния в другое. Если предположить, что на рис. 4.4 показана очередь готовых потоков, то запланированный порядок выполнения выглядит так: А, В, Е, D, С.

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

Рис. 4.4. Очередь потоков

Планирование и диспетчеризация потоков

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

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

Планирование потоков, по существу, включает в себя решение двух задач:

· определение момента времени для смены текущего активного потока;

· выбор для выполнения потока из очереди готовых потоков.

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

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

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

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

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

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

Диспетчеризация сводится к следующему:

· сохранение контекста текущего потока, который требуется сменить;

· загрузка контекста нового потока, выбранного в результате планирования;

· запуск нового потока на выполнение.

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

В контексте потока можно выделить часть, общую для всех потоков данного процесса (ссылки на открытые файлы), и часть, относящуюся только к данному потоку (содержимое регистров, счетчик команд, режим процессора). Например, в среде NetWare 4.x различаются три вида контекстов: глобальный контекст (контекст процесса), контекст группы потоков и контекст отдельного потока. Соотношение между данными этих контекстов напоминает соотношение глобальных и локальных переменных в программе, написанной на языке С. Переменные глобального контекста доступны для всех потоков, созданных в рамках одного процесса. Переменные локального контекста доступны только для кодов определенного потока, аналогично локальным переменным функции. В NetWare можно создавать несколько групп потоков внутри одного процесса и эти группы будут иметь свой групповой контекст. Переменные, принадлежащие групповому контексту, доступны всем потокам, входящим в группу, но недоступны остальным потокам.

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

Вытесняющие и невытесняющие алгоритмы планирования

С самых общих позиций все множество алгоритмов планирования можно разделить на два класса: вытесняющие и невытесняющие алгоритмы планирования.

· Невытесняющие (non-preemptive) алгоритмы основаны на том, что активному потоку позволяется выполняться, пока он сам, по собственной инициативе, не отдаст управление операционной системе для того, чтобы та выбрала из очереди другой готовый к выполнению поток.

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

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

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *