К многозадачным операционным системам относятся windows

Многозадачные операционные системы

Почти все современные операционные системы (Windows 95, Windows NT, Windows 2000, Unix) поддерживают преимущественную многозадачность{preemptive multi-tasking). Этот термин, который часто переводят как вытесняющая многозадачность, означает, что процесс или, точнее, его поток, который в данный момент активен, имеет преимущество перед другими конкурирующими потоками с одинаковым приоритетом. Системы Windows 3.1 и Macintosh поддерживают кооперативную многозадачность {cooperative multi-tasking), в которой все управление отдано системе. В такой системе легче программировать, но она менее эффективна. 

Основным признаком многозадачной ОС является способность совмещать выполнение нескольких прикладных программ. Большое значение при этом имеет способ совмещения, то есть на каком уровне или как конкретно реализовано совмещение. Если однопроцессорная, но многозадачная, система выделяет каждой прикладной программе определенный квант времени {lime slice), спустя который она переключается на выполнение следующей программы, то это система с разделением времени {time-sharingsystem). Системы с разделением времени появились в начале 60-х. Они управлялись main /rame-компьютерами, обслуживающими многочисленные удаленные терминалы. В качестве терминалов сначала использовались обычные телетайпы, которые умели только вводить или выводить информацию. Благодаря огромной разнице в скорости работы таких устройств, как телетайп и процессор, системы с разделением времени успевали переключаться между многими терминалами и вводить или выводить информацию так, что каждому пользователю казалось, что он единолично управляет удаленным процессором. Затем появились персональные компьютеры, которые стали использоваться в качестве удаленных терминалов. В связи с этим для операционной системы главного процессора (например, IBM-370) отпала необходимость заниматься посимвольным вводом-выводом. Теперь акцент в разработке операционных систем был перенесен на управление выполняемыми программными модулями, принадлежащими разным пользователям и одновременно находящимися в памяти главного компьютера. Появились такие понятия, как очередь заданий •— очередь на обслуживание каким-либо устройством: принтером, плоттером, накопителем на магнитном носителе, приоритет задания, ожидаемое время завершения задания и т. д. 

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

Первые операционные системы, реализованные на персональных компьютерах, сильно уступали в концептуальном плане и по своим реальным возможностям системам с разделением времени, давно реализованным в mainframe- компьютерах. В Win 16, например, тоже существует понятие многозадачности. Реализовано оно следующим образом: обработав очередное сообщение, приложение передает управление операционной системе, которая может передать управление другому приложению. Такой вид многозадачности, при котором операционная система передает управление от одного приложения другому не в любой момент времени, а только когда текущее приложение отдает управление системе, получил, как было упомянуто, название кооперативной многозадачности (cooperative multi-tasking).

Если при таком подходе обработка сообщения затягивается, то пользователь увидит реакцию системы только после завершения обработки текущим приложением • текущего сообщения. Обычно при выполнении длительных операций программист изменяет форму курсора (песочные часы), вызвав API-функцию BeginWaitCursor. Иногда, если это предусмотрел разработчик программы, в таких случаях застрявшее приложение даже вызывает функцию PeekMessage, сообщая системе, что она может обработать очередное сообщение, а текущее приложение способно и подождать. Но главная неприятность при таком подходе заключается в том, что в случае бесконечного цикла, вызванного ошибкой в программе, ОС не имеет шансов получить управление и также зависнет. Пользователю придется перезагружать систему.

В Windows начиная с Windows 95 реализован принципиально другой вид многозадачности, в котором операционная система действительно контролирует и управляет процессами, потоками и их переключением. Способность операционной системы прервать выполняемый поток практически в любой момент времени и передать управление другому ожидающему потоку определяется термином preemptive multitasking — преимущественная, или вытесняющая, многозадачность. Реализация ее выглядит так: все существующие в данный момент потоки, часть из которых может принадлежать одному и тому же процессу, претендуют на процессорное время и, с точки зрения пользователя должны выполняться одновременно. Для создания этой иллюзии система через определенные промежутки времени забирает управление, анализирует свою очередь сообщений, распределяет сообщения по другим очередям в пространстве процессов и, если считает нужным, переключает потоки (рис. 12.5).

Реализация вытесняющей многозадачности в Windows 2000 дает не только возможность плавного переключения задач, но и устойчивость среды к зависаниям, так как ни одно приложение не может получить неограниченные права на процессорное время и другие ресурсы. Так система создает эффект одновременного выполнения нескольких приложений. Если компьютер имеет несколько процессоров, то системы Windows NT/2000 могут действительно совмещать выполнение нескольких приложений. Если процессор один, то совмещение остается иллюзией. Когда заканчивается квант времени, отведенный текущей программе, система ее прерывает, сохраняет контекст и отдает управление другой программе, которая ждет своей очереди. Величина кванта времени (time slice)зависит от ОС и типа процессора, в Windows NT она в среднем равна 20 мс. Следует отметить, что добиться действительно одновременного выполнения потоков можно только на машине с несколькими процессорами и только под управлением Windows NT/2000, ядра которых поддерживают распределение потоков между процессорами и процессорного времени между потоками на каждом процессоре. Windows 95 работает только с одним процессором. Даже если у компьютера несколько процессоров, под управлением Windows 95 задействован лишь один из них, а остальные простаивают.

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

Многозадачность в Windows

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

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

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

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

Основные понятия

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

  • Мультипроцессирование — использование нескольких процессоров для одновременного выполнения задач.
  • Мультипрограммирование — одновременное выполнение нескольких задач на одном или нескольких процессорах.

В завершение знакомства укажем некоторые термины, определяющие базовые понятия, которыми оперируют операционные системы.

Мультипроцессирование

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

Рис.
6.1.
Разные подходы к реализации мультипроцессирования

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

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

  • наиболее массовыми являются так называемые SMP (Shared Memory Processor или Symmetric MultiProcessor) машины. В таких компьютерах несколько процессоров подключены к общей оперативной памяти и имеют к ней равноправный и конкурентный доступ (см. рис. 6.2). По мере увеличения числа процессоров производительность оперативной памяти и коммутаторов, связывающих процессоры с памятью, становится критически важной. Обычно в SMP используются 2-8 процессоров; реже число процессоров достигает десятков. Взаимодействие одновременно выполняющихся процессов осуществляется посредством использования общей памяти, к которой имеют равноправный доступ все процессоры.

    Рис.
    6.2.
    SMP компьютер

  • при необходимости создания систем с качественно большим числом процессоров прибегают к MPP (Massively Parallel Processors) системам. Для этого используют несколько однопроцессорных или SMP-систем, объединяемых с помощью некоторого коммуникационного оборудования в единую сеть (см. рис. 6.3). При этом может применяться как специализированная высокопроизводительная среда передачи данных, так и обычные сетевые средства — типа Ethernet. В MPP системах оперативная память каждого узла обычно изолирована от других узлов, и для обмена данными требуется специально организованная пересылка данных по сети. Для MPP систем критической становится среда передачи данных; однако в случае мало связанных между собой процессов возможно одновременное использование большого числа процессоров. Число процессоров в MPP системах может измеряться сотнями и тысячами.

    Рис.
    6.3.
    MPP система

  • иногда используют так называемые NUMA и cc-NUMA архитектуры; они являются компромиссом между SMP и MPP системами: оперативная память является общей и разделяемой между всеми процессорами, но при этом память неоднородна по времени доступа. Каждый процессорный узел имеет некоторый объем оперативной памяти, доступ к которой осуществляется максимально быстро; для доступа к памяти другого узла потребуется значительно больше времени (см. рис. 6.4). cc-NUMA отличается от NUMA тем, что в ней на аппаратном уровне решены вопросы когерентности кэш-памяти (cache-coherent) различных процессоров. Формально на NUMA системах могут работать обычные операционные системы, созданные для SMP систем, хотя для обеспечения высокой производительности приходится решать нетипичные для SMP задачи оптимального размещения данных и планирования с учетом неоднородности памяти.

    Рис.
    6.4.
    NUMA или cc-NUMA система

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

Windows содержит встроенные механизмы, необходимые для работы на SMP; также возможна установка этой ОС на cc-NUMA системах (современные версии Windows имеют механизмы поддержки cc-NUMA систем). Специальных, встроенных в ОС средств для исполнения приложений на MPP системах в Windows не предусмотрено. Windows предполагает альтернативное применение MPP систем, построенных на обычных сетях, для реализации web- или файловых серверов с балансировкой нагрузки по узлам кластера.

Мультипрограммирование

Мультипрограммирование (то есть одновременное выполнение разного кода на одном или нескольких процессорах) возможно и без реального мультипроцессирования. Конечно, при наличии только одного процессора должен существовать некоторый механизм, обеспечивающий переключение процессора между разными выполняемыми потоками. Такой режим разделения процессорного времени позволяет одному процессору обслуживать несколько задач «как бы одновременно»: осуществляя быстрое переключение между разными задачами и выполняя в данный момент времени код только одной задачи, процессор создает иллюзию одновременного выполнения кода разных задач. Более того, даже на многопроцессорных системах при реальной возможности распараллеливания задач по разным процессорам, обычно используют механизм разделения времени на каждом из доступных процессоров. Формально мультипрограммирование предполагает именно разделение процессорного времени, поэтому иногда его противопоставляют мультипроцессированию: реализация многозадачности на одном процессоре в противовес использованию многих процессоров.

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

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

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

Планирование задач

Рис.
6.5.
Планирование задач

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

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

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

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

Граф состояния задачи

Рис.
6.6.
Граф состояния задачи

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

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

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

Характерный пример невытесняющей многозадачности — 16-ти разрядные Windows (включая собственно 16-ти разрядные версии Windows, выполнение 16-ти разрядных приложений в Windows-95, 98, ME и выполнение 16-ти разрядных приложений в рамках одной Windows-машины в NT, 2000, XP и 2003). В таких приложениях операционная система не прерывает выполнение текущей задачи до вызова ею функций типа GetMessage или WaitMessage, во время которых Windows осуществляет при необходимости переключение на другую задачу.

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

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

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

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

Моменты перепланирования задач

Рис.
6.7.
Моменты перепланирования задач

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

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

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

Реализации Windows NT, 2000, XP, 2003+ предусматривают достаточно развитый и сложный планировщик, учитывающий множество факторов и корректирующий как назначение и длительность отводимых задаче квантов, так и приоритеты задач. При этом планировщик является настраиваемым, и его логика работы несколько отличается в зависимости от настроек системы (некоторые доступны через панель управления) и от назначения системы (работа планировщика различна у серверов и рабочих станций).

Важно отметить, что Windows является гибкой системой разделения времени с вытесняющей многозадачностью и не может рассматриваться в качестве системы реального времени. Даже те процессы, которые с точки зрения Windows относятся к классу процессов так называемого «реального времени», на самом деле требованиям, предъявляемым к системам реального времени, не удовлетворяют. Такие процессы получат приоритетное распределение процессорного времени и будут обрабатываться планировщиком с учетом их «особого статуса»; однако при этом нельзя гарантировать строгого выполнения временных ограничений. Более того, в силу используемых механизмов управления памятью, нельзя точно предсказать время, необходимое для выполнения той или иной операции. В любой момент времени при самом невинном обращении к какой-либо переменной или функции может потребоваться обработка ошибок доступа, подкачка выгруженных страниц, освобождение памяти и т.д. — то есть действия, время завершения которых предсказать крайне трудно. Фактически можно давать лишь вероятностные прогнозы по времени выполнения той или иной операции. До определенных рамок Windows можно применять в мягких системах реального времени — с достаточно свободными ограничениями, но даже незначительная вероятность превышения временных ограничений иногда просто недопустима.

Базовая терминология

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

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

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

Принято также деление потоков на потоки ядра и потоки пользователя (эти термины тоже неоднозначны). Потоки ядра в данном контексте являются потоками, для управления которыми предназначен планировщик, принадлежащий ядру операционной системы. Потоки пользователя при этом рассматриваются как потоки, которые управляются планировщиком пользовательского процесса. Строго говоря, потоки пользователя являлись переходным этапом между «задачами» и «процессами»: с точки зрения операционной системы использовались «задачи», которым выделялись и ресурсы, и процессорное время, тогда как разделение «задачи» на «потоки» осуществлялось непосредственно в самом приложении.

В Windows для обозначения этих понятий использованы термины process (процесс), thread (поток) и fiber (волокно). Достаточно часто термин «thread» переводится на русский язык как «нить», а не «поток». Термин «fiber» также может переводиться либо как «нить», либо как «волокно». Поток соответствует потоку ядра и планируется ядром операционной системы, а волокно соответствует потоку пользователя и планируется в приложении пользователя.

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

Операционные системы: основы и примеры

Пройдите тест, узнайте какой профессии подходите

Работать самостоятельно и не зависеть от других

Работать в команде и рассчитывать на помощь коллег

Организовывать и контролировать процесс работы

Введение в операционные системы

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

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

Кинга Идем в IT: пошаговый план для смены профессии

Основные функции и компоненты ОС

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

Управление процессами

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

Управление памятью

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

Управление файлами

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

Управление устройствами

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

Пользовательский интерфейс

ОС предоставляет интерфейс для взаимодействия пользователя с компьютером. Это может быть графический интерфейс (GUI) или командная строка (CLI). Графический интерфейс обеспечивает удобное и интуитивно понятное взаимодействие с системой, используя окна, иконки и меню. Командная строка, в свою очередь, предоставляет более гибкий и мощный способ управления системой с помощью текстовых команд.

Типы операционных систем

Существует несколько типов операционных систем, каждый из которых предназначен для определённых задач и устройств:

Однопользовательские и многопользовательские ОС

Однопользовательские ОС предназначены для одного пользователя, в то время как многопользовательские ОС поддерживают одновременную работу нескольких пользователей. Многопользовательские ОС обеспечивают разделение ресурсов и данных между пользователями, а также контроль доступа и безопасность. Примеры многопользовательских ОС включают серверные системы, такие как Windows Server и Linux.

Однозадачные и многозадачные ОС

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

Реального времени (RTOS)

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

Встраиваемые ОС

Встраиваемые ОС используются в устройствах с ограниченными ресурсами, таких как бытовая техника, автомобильные системы и IoT-устройства. Эти ОС оптимизированы для работы в условиях ограниченной памяти и вычислительных мощностей, а также обеспечивают высокую надёжность и энергоэффективность. Примеры встраиваемых ОС включают FreeRTOS, VxWorks и Embedded Linux.

Примеры популярных операционных систем

Windows

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

macOS

macOS — операционная система, разработанная Apple для своих компьютеров Mac. Она отличается высокой степенью интеграции с другими продуктами Apple и удобным пользовательским интерфейсом. macOS известна своей стабильностью, безопасностью и производительностью, что делает её популярным выбором среди профессионалов в области графики, дизайна и разработки программного обеспечения. ОС macOS также предлагает уникальные функции, такие как Continuity и Handoff, которые позволяют пользователям seamlessly переключаться между устройствами Apple.

Linux

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

Android

Android — операционная система для мобильных устройств, разработанная Google. Она используется на большинстве смартфонов и планшетов и поддерживает широкий спектр приложений. Android известен своей гибкостью и возможностью настройки, что позволяет производителям устройств и пользователям адаптировать систему под свои нужды. ОС Android также поддерживает интеграцию с сервисами Google, такими как Google Play, Google Drive и Google Photos, что делает её удобной для пользователей.

iOS

iOS — операционная система для мобильных устройств от Apple. Она используется на iPhone и iPad и известна своей безопасностью и удобством использования. iOS предлагает широкий спектр функций и приложений, которые делают её популярным выбором среди пользователей мобильных устройств. ОС iOS также обеспечивает высокую степень интеграции с другими продуктами и сервисами Apple, такими как iCloud, Apple Music и Apple Pay, что делает её привлекательной для пользователей экосистемы Apple.

Заключение и дополнительные ресурсы

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

Дополнительные ресурсы

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

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

Источник статьи

Автор24
— учеба по твоим правилам

Определение 1

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

Введение

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

  1. Операционные системы.
  2. Системы программирования.
  3. Инструментальные программные продукты (интегрированные пакеты).
  4. Прикладные программы.

Главной системной программой по праву считается операционная система, которая осуществляет управление всеми системными ресурсами и является основой для работы любой прикладной программы.

Назначение, классификация и эволюция операционных систем

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

«Назначение, классификация и эволюция операционных систем» 👇

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

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

  1. Операционные системы однозадачного и многозадачного типа.
  2. Операционные системы однопользовательского и многопользовательского типа.
  3. Операционные системы однопроцессорного и многопроцессорного типа.
  4. Операционные системы локального и сетевого типа.

Однозадачными считаются системы класса MS DOS, а к многозадачным относятся операционные системы типа OS/2, Unix, Windows и другие. В однозадачных системах применяются средства управления периферийными устройствами, средства управления файлами, средства общения с пользователями. Многозадачные операционные системы могут использовать весь набор средств однозадачных систем, и, помимо этого, способны управлять разделением совместно используемых ресурсов, а именно, процессором, ОЗУ, файлами и внешними устройствами.

В зависимости от сферы применения многозадачные операционные системы делятся на следующие типы:

  1. Операционные системы, предназначенные для пакетной обработки (например, ЕС).
  2. Операционные системы, обладающие разделением времени (Unix, Linux, Windows).
  3. Операционные системы реального времени (RT11).

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

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

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

Одним из важных достоинств операционной системы считается наличие в ней возможности поддерживать многопроцессорную обработку данных. Такие средства имеются в OS/2, Net Ware, Widows NT. По методу организации вычислительных процессов данные операционные системы делятся на следующие типы:

  1. Операционные системы асимметричного типа.
  2. Операционные системы симметричного типа.

Понравилась статья? Поделить с друзьями:
0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии
  • Google drive client windows
  • Создание дистрибутива системы windows 10
  • Разрешить пинг windows server 2019
  • Настройка наушников на windows 10 для игр
  • Max payne нет звука в роликах на windows 10