Что такое задача в информатике определение в операционной системе

Операционные системы. Понятие о системном администрировании

В данной статье рассмотрим темы ЕГЭ по информатике, а конкретно часть тем из раздела средств ИКТ.

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

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

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

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

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

Основными задачами операционной системы являются:

— Поддержка программ, которые обеспечивают взаимодействие с компьютером, а также друг с другом;

— Распределение следующих ресурсов: оперативной памяти, времени, пространства, организации систем хранения, учёта и использования различных ресурсов;

— Организация процесса защиты информации, содержащейся в компьютере;

— Поддержание работы сети.

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

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

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

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

Операционным системам свойственно наличие различных характеристик. Рассмотрим их:

— Разрядность (операционные системы могут быть восьми/шестнадцати/тридцати двух/шестидесяти четырёх разрядные);

— Количество программ, которые работают в соответствии с операционной системой (как правило, это многозадачные и однозадачные операционные системы). Многозадачные позволяют выполнять одновременно несколько программ. Различают корпоративную и вытесняющую многозадачность. При использовании корпоративной многозадачности приложения работают с помощью процессора. При использовании вытесняющей многозадачности операционная система компьютера ведёт контроль всех приложений, а также занимается распределением процессорным временем. Этот процесс предотвращает зависание программ. Однозадачные операционные системы обеспечивают работу только одной программы в единицу времени;

— Многопоточностью является технология, которая позволяет другим приложения выполнять одновременно несколько задач;

— Типом пользовательского интерфейса является текстовый, графический, а также интерфейс командной строки.

Наличие требований к ресурсам аппаратов;

— Гарантии надёжности (то есть устойчивая работа, защита данных от несанкционированного доступа);

— Достаточное количество дополнительных прикладных программ;

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

— Наличие процессоров (многопроцессорные, однопроцессорные). Отличие многопроцессорных операционных систем от однопроцессорных – поддержание работы определённого количества процессоров при решении одной задачи;

Доступность компонентов операционной системы для пользователей;

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

— Сегментарный – организует работу с относительно малым объёмом оперативной памяти.

Таким образом, мы рассмотрели назначение, основные задачи, а также характеристики операционных систем.

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

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

Администратором сети (его также называют системным администратором) является сотрудник организации, в должностные обязанности которого входит набор определённых функций. Рассмотрим их:

— Установка на компьютеры операционных систем, а также различных дополнительных программ;

— Настраивание операционных и информационных сред;

— Управление ресурсами сети;

— Организация хранения и возможность восстановления данных.

Перейдём к подробному рассмотрению этих функций.

Настраивание информационной среды предполагает выполнение следующих действий:

— Разработка каталогов для пользователей;

— Настраивание доступа к определённым файлам;

— Определение метаданных для настройки файлов и каталогов.

Настраивание операционной среды содержит в себе:

— Организацию действий по подключению к сетевым ресурсам;

— Процесс, в ходе которого администратор управляет рабочими станциями.

blank

Настройка печати включает:

— Объекты печати (принтеры, сервера);

— Формы для печати (предполагаемый размер бумаги);

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

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

Также, исключая функции, администратор должен обладать следующими качествами:

— Умение решать конфликтные ситуации;

— Терпение и другие качества.

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

— Открытый доступ к ненужной в работе информации (это отвлекает от основной работы);

— Заражение компьютеров вирусами и другими вредоносными программами;

— Большое использование интернет-трафика запросами, не связанными с исполнением трудовых обязанностей.

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

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

— Контроль доступа в сеть Интернет (эта задача подразумевает доступ определённых специалистов к необходимым сведениям);

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

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

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

Понятие операционной системы, ее функции и виды

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

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

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

В функции операционной системы входит:

основные функции (простейшие ОС) :

  • Загрузка приложений в оперативную память и их выполнение;
  • Стандартизованный доступ к периферийным устройствам (устройства ввода-вывода);
  • Управление оперативной памятью (распределение между процессами, виртуальная память);
  • Управление энергонезависимой памятью (Жёсткий диск, Компакт-диск и т.д.), как правило с помощью файловой системы;
  • Пользовательский интерфейс;

дополнительные функции (развитые современные ОС) :

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

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

К современным операционным системам предъявляются следующие требования:

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

По числу одновременно выполняемых задач выделяют ОС однозадачные (MS DOS, ранние версии PC DOS) и многозадачные (OS/2, UNIX, Windows).

В настоящий момент около 90% компьютеров используют КС Windows. Более широкий класс ОС ориентирован для использования на серверах. К этому классу ОС относятся семейство UNIX, разработки фирмы Microsoft (MS DOS и Windows), сетевые продукты Novell и корпорации IBM.

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

Недостаток UNIX — большая ресурсоемкость, и для небольших однопользовательских систем на базе персональных компьютеров она чаще всего является избыточной. целом ОС семейства UNIX ориентированы прежде всего на большие локальные (корпоративные) и глобальные сети, объединяющие работу тысяч пользователей. Большое распространение UNIX и ее версия LINUX получили в сети Интернет, где важнейшее значение имеет машинонезависимость ОС.

DOS (ДОС) — семейство операционных систем для компьютеров, расшифровывается как «дисковая операционная система», что означает её ориентированность на использование дисковых накопителей, таких как жёсткий диск и дискета.

Существовали операционные системы с таким названием для больших ЭВМ производства IBM и их клонов в 60-80-х гг. XX века.

DOS является однозадачной операционной системой. После запуска управление передаётся прикладной программе, которая получает в своё распоряжение все ресурсы компьютера и может осуществлять ввод/вывод посредством как функций предоставляемых операционной системой, так и функций базовой системы ввода/вывода, а также работать с устройствами напрямую. MS-DOS (сокр. от англ. Microsoft Disk Operating System — дисковая ОС от Microsoft) — коммерческая операционная система для персональных компьютеров фирмы Microsoft. MS-DOS — самая известная ОС из семейства DOS, ранее устанавливаемая на большинство компьютеров.

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

Операционные системы Windows — это семейство операционных систем, включающих: Windows 3.1, Windows for Workgroups 3.11, Windows 9X, Windows NT, Windows 2000, Windows ME, WindowsXP (первые две обычно называют операционными оболочками, поскольку ОС DOS для них устанавливалась отдельно).

Основные свойства задач

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

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

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

Состояние (статус) задачи.

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

Активная задача — это задача, выполняемая системой в текущей момент времени.

Готовая задача — это задача, готовая к выполнению и ожидающая у планировщика своей «очереди».

Блокированная задача — это задача, выполнение которой приостановлено до наступления определённых событий.

Такими событиями могут быть освобождение необходимого задаче ресурса, поступление ожидаемого сообщении, завершение интервала ожидания и т. п. Пустая задача (Idle Task) — это задача, запускаемая самой операционной системой в момент инициализации и выполняемая только тогда, когда в системе нет других готовых для выполнения задач. Пустая задача запускается с самым низким приоритетом и, как правило, представляет собой бесконечный цикл «ничего не делать». Наличие пустой задачи предоставляет операционной системе удобный механизм отработки ситуаций, когда нет ни одной готовой к выполнению задачи.

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

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

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

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

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

Можно отметить следующие преимущества циклического алгоритма.

  • 1. Простота использования и прозрачность для понимания.
  • 2. Если исключить из рассмотрения прерывания, система полностью детерминирована.
  • 3. Минимальные размеры кода и данных. Кроме того, в отличие от алгоритмов с вытеснением, для всех задач необходим только один стек. 4. Отсутствуют ошибки, обусловленные «гонками».

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

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

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

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

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

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

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

Синхронизация задач

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

  • 1. Функции, выполняемые различными задачами, связаны друг с другом. Например, если одна задача подготавливает исходные данные для другой, то последняя не выполняется до тех пор, пока не получит от первой задачи соответствующего сообщения. Одна из вариаций в этом случае — это когда задача при определенных условиях порождает одну или несколько новых задач.
  • 2. Необходимо упорядочить доступ нескольких задач к разделяемому ресурсу.
  • 3. Необходима синхронизация задачи с внешними событиями. Как правило, для этого используется механизм прерываний, с которым читатель, безусловно, знаком.
  • 4. Необходима синхронизация задачи по времени. Диапазон различных вариантов в этом случае достаточно широк, от привязки момента выдачи какого-либо воздействия к точному астрономическому времени до простой задержки выполнения задачи на определенный интервал времени. Для решения этих вопросов в конечном счете используются специальные аппаратные средства, называемые таймером.

Давайте рассмотрим все четыре случая более подробно.

Связанные задачи

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

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

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

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

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

Общие ресурсы

Ресурс — это общий термин, описывающий физическое устройство или область памяти, которые могут одновременно использоваться только одной задачей. Процессорное время тоже представляет собой своеобразный конкурентно используемый ресурс вычислительной системы. Примером физических устройств могут служить клавиатура, дисплей, дисковый накопитель, принтер и т. п. В качестве примера рассмотрим ситуацию, когда в бортовом компьютере мирно летящего самолета МИГ-29 среди прочих работают две задачи. Одна из них, взаимодействуя с радиолокационной системой, выдает удаление и направление до цели, а другая задача использует эти данные для пуска ракет класса «воздух-воздух». Не исключено, что первая задача, записав в глобальную структуру данных удаление до цели, будет прервана второй задачей, не успев записать туда направление до цели. В результате вторая задача считает из этой структуры ошибочные данные, что может привести к неудачному пуску со всеми вытекающими отсюда неприятными последствиями. Прервись первая задача чуть позже, и все было бы нормально. Упомянутые здесь проблемы обусловлены времязависимыми ошибками (time dependent error), или «гонками» и характерны для многозадачных ОС, применяющих алгоритмы планирования с вытеснением (кстати, системы с разделением времени также относятся к категории «вытесняющих»).

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

Вот возможные пути решения проблемы.

  • 1. He использовать алгоритмы планирования задач с вытеснением. Это решение, правда, не всегда приемлемо.
  • 2. Использовать специальный сервер ресурса, то есть задачу, ответственную за упорядочивание доступа к ресурсу.
  • 3. Запретить прерывания на время доступа к разделяемым данным Кардинальное решение, которое, впрочем, не приветствуется в системах реального времени.
  • 4. Использовать для упорядочивания доступа к глобальным данным семафоры. Наиболее часто применяемое решение, которое, впрочем, может привести в некоторых случаях к «инверсии приоритетов».

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

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

Смертельный захват (Deadlock).

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

1.Для чего предназначена операционная система? 2.Каковы функции операционной системы?
3.Какие операционные системы различают по числу обрабатываемых задач? Что такое задача?
4.Какие операционные системы различают по типу интерфейса?
5.Приведите пример операционной системы с интерфейсом командной строки.
6.Приведите пример операционной системы с графическим интерфейсом.
7.Как операционная система управляет работой периферийных устройств компьютера?
8.Что такое драйвер?
9.Что такое файл?
10.Какова структура имени файла?
11.Какие расширения могут иметь программные приложения?
12.Какие расширения могут иметь текстовые файлы?
13.Какие расширения могут иметь графические файлы?
14.Какие расширения могут иметь видеофайлы?
15.Что такое каталог (папка)?
16.Как обозначается корневой каталог?
17.Как открыть и закрыть папку?
18.Что представляет собой программное приложение?
19.Что такое документ?
20.Что составляет основу работы пользователя с операционной системой Windows?
21.Перечислите элементы графического интерфейса Windows?
22.Что представляет собой Рабочий стол в Windows?
23.Что такое меню? Какие виды меню вы знаете?
24.Опишите правила работы с буфером обмена.
25.Для чего предназначен Проводник?

mouse167

3)1.1.1. Однозадачная система виснет сразу вся.

1.1.2. Многозадачная ОС — это ОС, которая способна виснуть и работать одновременно.

1.1.3. Задача — это хрень, которая висит на одном или нескольких прерываниях.

1.1.4. Если хрень висит на прерываниях и нихрена не делает, то это слава богу — не вирус.

1.1.5. Большинство задач — не вирусы. К сожалению.

1.1.6. Ибо самая эффективная задача — это вирус.

4)По типу пользовательского интерфейса различают текстовые (линейные), графические и речевые операционные системы.

5)Операционная система linux

Для работы нужна командная строка. Например чтобы установить программу нужно написать sudo

так же всё настраивается через командную строку.

7)Все многообразие программ, используемых на современном компьютере, называется программным обеспечением — ПО (software).

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

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

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

11)В программах используются такие форматы, как: .exe. программное расширение, которое используется в большинстве приложений Windows; .com. формат программ для MS-DOS; .application. тип файла для установки приложений, поддерживающий технологию ClickOnce;

13)Файлы формата BMP могут иметь расширения .bmp, .dib и .rle.

14)mp4 и avi

15)Катало́г — каталог, директория, справочник, папка — объект в файловой системе, упрощающий организацию файлов. Ранее часто использовалось слово директо́рия, которое представляет собой транслитерацию с английского (англ. directory).

16)Корневой каталог обозначается наклонной чертой /.

17)Кликнуть по ней 2 раза левой кнопкой мыши.

Или же правой кнопкой мыши по папке затем левой кнопкой мыши по кнопке открыть

18)Программное приложение. Компью́терная програ́мма — последовательность инструкций, предназначенная для исполнения устройством управления вычислительной машины.

19)Докуме́нт — это зафиксированная на материальном носителе информация в виде текста, звукозаписи или изображения с реквизитами, позволяющими её идентифицировать.

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

21) рабочий стол, значки, ярлыки, панель задач, окна.

22)Рабочий стол — это основное рабочее пространство пользователя Windows, отображающееся на экране непосредственно по окончании загрузки компьютера

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

24)1. Скопировать выделенные объекты в буфер обмена: Ctrl + C или Ctrl + Ins .

2. Вырезать выделенные объекты в буфер обмена (для перемещения): Ctrl + X или Shift + Del .

3. Вставить из буфера обмена: Ctrl + V или Shift + Ins

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

Новые вопросы в Информатика

Проверить является ли число четным или нет. Пайтон. Ваша функция должна возвращать True если число четное, и False если число нечетное. Входные данные … : Целое число. Выходные данные: Логический тип. Пример: is_even(2) == True is_even(5) == False is_even(0) == True

Помогите Создать приложение в Visual Studio для табулирования и вывода на экран значения функции, также построить график функции: = () = < 1 (), если … ≤0 2 (), если 0 < ≤ 3 (), если > 0 Сами функции нужно взять из таблицы. В форме должны быть предусмотрены поля для ввода значения параметра «а» и переменной «х», вывода результата вычисление "у", а также командные кнопки для расчетов. (Кидаю приклад и 3 задания и данные xn, xk, h)

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

Помогите скласти програму мовою C# для обчислення математичного виразу в Visual Studio (додаю приклад та математичний вираз для якого треба сделать пр … ограму)

Написать функцию is_prime, принимающую 1 аргумент — число от 0 до 1000, и возвращающую True, если оно простое, и False — иначе. python

С++ СРОЧНО Последний звонок В школе, в которой учится Петя, решили приобрести квадрокоптер для записи всех массовых праздников школы на камеру. Первы … м таким событием стала линейка, посвященная последнему звонку. Раньше ученики на линейке строились по росту в несколько рядов. Сейчас же съемка ведется с высоты, и Петя сообщил руководству школы, что такое построение не будет гармоничным. Он предложил построить учеников таким образом, чтобы внутри одного ряда самые высокие ученики стояли в центре, и рост учеников по направлению к краям ряда не возрастал. При этом важно, чтобы каждый ученик был не выше любого другого ученика в следующем ряду. Это является самым гармоничным построением для фотографирования с квадрокоптера. Формально, в школе учатся n⋅m учеников, причем Петя знает, что рост i-го ученика равен ai. От вас требуется расставить всех учеников в n рядов, в каждом из которых будет стоять m учеников. Расстановка производится по следующему алгоритму: Изначально построим всех учеников по неубыванию роста в одну шеренгу. Теперь будем по очереди формировать первый ряд, второй ряд, и так далее. Для формирования i-го ряда будут использованы первые m еще не использованных учеников из шеренги. Пронумеруем этих учеников числами от 1 до m в порядке неубывания роста. Ученика с номером m поместим в центр i-го ряда. Ученика с номером m—1 слева от m-го. Ученика с номером m—2 справа от m-го. Ученика с номером m—3 слева от ученика с номером m—1, а ученика с номером m—4 справа от m—2-го. И так далее разместим всех остальных учеников. В итоге получится ряд из m учеников. Если не все ряды построены, перейдем к шагу 2 и построим аналогично (i+1)-й ряд. В противном случае завершим алгоритм. Петя знает рост всех учащихся школы, но не может быстро расставить учеников по своим местам. Помогите ему в этом. Формат входных данных В первой строке вводятся два числа n и m (1⩽n,m⩽5⋅105, n⋅m⩽5⋅105, m — нечетное), где n — количество рядов, m — количество мест в каждом ряду для торжественного построения. Вторая строка содержит n⋅m целых чисел a1,a2,…,an⋅m (1⩽ai⩽300) — рост учеников школы. Формат выходных данных Выведите n строк по m чисел в каждой — требуемую расстановку учеников школы на торжественной линейке. Система оценки и описание подзадач Данная задача состоит из трех подзадач. Баллы за каждую подзадачу начисляются только в том случае, если все тесты данной и предыдущих подзадач успешно пройдены. Подзадача 0 (0 баллов). Тесты из условия. Подзадача 1 (30 баллов). 1⩽n⋅m⩽1000. Подзадача 2 (70 баллов). Нет дополнительных ограничений. Ввод Вывод 3 3 1 3 2 6 7 8 9 3 3 2 3 1 3 6 3 8 9 7 Ограничения Время выполнения: 3 секунды Память: 256 MB Количество символов в исходном коде программы: 32000

C++ СРОЧНО Кодовый замок Программист Влад решил уехать в теплую страну на свой заслуженный отдых. Для того, чтобы уборщицы не украли его дорогостоящи … й ноутбук, он решил спрятать его в сейф. В качестве кода он выбрать некоторое число от 1 до n. В один из дней отдыха во время того, как Влад был на море, на работе случилась беда, и Владу срочно пришлось вернуться в гостиницу. Но главная проблема ждала его в номере: ему был нужен ноутбук, но он не помнил пароль, который он выбрал. Он лишь помнил то, что выбранное им число кратно a, b и c. По этим данным, определите, какое минимальное количество вариантов пароля от сейфа придется перебрать Владу, чтобы он точно нашел верный. Формат входных данных На вход подаются целые числа n, a, b и c. Формат выходных данных Выведите одно число — минимальное количество вариантов, которые нужно перебрать, чтобы гарантированно найти верный. Ограничения 1⩽n⩽109 1⩽a,b,c⩽100 Система оценки и описание подзадач Баллы за каждый тест начисляются независимо. Решения, верно работающие при n⩽105 получат не более 60 баллов. Пояснение к примеру В примере Владу, чтобы гарантированно найти пароль, необходимо перебрать следующие варианты: 28, 56 и 84. Ввод Вывод 100 2 4 7 3 Ограничения Время выполнения: 1 секунда Память: 256 MB Количество символов в исходном коде программы: 32000

срочно . как сделать тосно так(в картинке) в CSS . ПОМОГИТЕ пожалуйста Стилизуйте текст как показано на картине в CSS!!

2. Дайте объяснение понятиям процесса и задачи. Опишите переходы процесса из одного состояния в другие

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

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

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

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

1.) создать информационные структуры, описывающие данный процесс, то есть его дескриптор и контекст;

2.) включить дескриптор нового процесса в очередь готовых процессов;

3.) загрузить кодовый сегмент процесса а оперативную память или в область свопинга.

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

1.) идентификатор процесса, PID;

2.) тип процесса, который определяет для супервизора некоторые правила предоставления ресурсов;

3.) приоритет процесса. В рамках одного типа процессов в первую очередь обслуживаются более приоритетные;

4.) переменную состояния, которая определяет, в каком состоянии сейчас находится процесс;

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

6.) сведения о ресурсах, которыми процесс владеет;

7.) адрес процесса для организации общения с другими процессами;

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

9.) если отсутствует система управления файлами – адрес задачи на диске в её исходном состоянии и адрес на диске, куда она выгружается из оперативной памяти, если её вытесняет другая.

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

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

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

Блокирование или ожидание: затребованные ресурсы не могут быть предоставлены, или не завершена операция ввода/вывода.

В обычных ОС процесс инициируется при запуске како

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

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

graf-sostoyaniya1

Из состояния выполнения процесс может выйти по следующим причинам:

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

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

2.) процесс переводится супервизором ОС в состояние готовности к исполнению в связи с проявлением более приоритетной задачи или в связи с окончанием выделенного ему кванта времени;

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

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

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

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

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

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

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

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

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

  • оригинал: pages.cs.wisc.edu/~remzi/OSTEP/Homework/homework.html
  • оригинал: github.com/remzi-arpacidusseau/ostep-code
  • моя личная адаптация: github.com/bykvaadm/OS/tree/master/ostep

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

Ключевые моменты лекции:

Процесс — главная абстракция работающей программы в ОС. В любой момент времени процесс может быть описан по его состоянию: содержимое памяти в его адресном пространстве, содержимое регистров процессора, включая instruction pointer и stack pointer также информацией о IO, например открытыми файлами, которые считываются или записываются.
Process API состоит из вызовов, которые программы могут делать в отношении процессов. Обычно это вызовы создания, удаления или другие.
● Процесс находится в одном из множества состояний, включая running, ready, blocked. Различные события, такие как планировка, исключение из планировки или ожидания могут переводить состояние процесса из одного в другое.
Process list содержит информацию обо всех процессах в системе. Каждая запись в ней называется process control block, которая в реальности является структурой, которая содержит всю необходимую информацию о конкретном процессе.

4.1 Лекция — Процессы и потоки (нити).

Процесс (задача) — программа, находящаяся в режиме выполнения.

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

Адресное пространство содержит:

данные к программе

С каждым процессом связывается набор регистров, например:

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

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

Некоторые поля таблицы:

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

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

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

Время начала процесса

Использованное процессорное время

Указатель на текстовый сегмент

Указатель на сегмент данных

Указатель на сегмент стека

4.1.2 Модель процесса

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

Рассмотрим схему с четырьмя работающими программами.

В каждый момент времени активен только один процесс

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

4.1.3 Создание процесса

Три основных события, приводящие к созданию процессов (вызов fork или CreateProcess):

Работающий процесс подает системный вызов на создание процесса

Запрос пользователя на создание процесса

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

В UNIX каждому процессу присваивается идентификатор процесса ( PID — Process IDentifier)

4.1.4 Завершение процесса

Четыре события, приводящие к остановке процесса (вызов exit или ExitProcess):

Плановое завершение (окончание выполнения)

Плановый выход по известной ошибке (например, отсутствие файла)

Выход по неисправимой ошибке (ошибка в программе)

Уничтожение другим процессом

Таким образом, приостановленный процесс состоит из собственного адресного пространства, обычно называемого образом памяти (core image), и компонентов таблицы процессов (в числе компонентов и его регистры).

4.1.5 Иерархия процессов

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

В таком случае в UNIX существует и прародитель всех процессов — процесс init.

Дерево процессов для систем UNIX

4.1.6 Состояние процессов

Три состояния процесса:

Выполнение (занимает процессор)

Готовность (процесс временно приостановлен, чтобы позволить выполняться другому процессу)

Ожидание (процесс не может быть запущен по своим внутренним причинам, например, ожидая операции ввода/вывода)

Возможные переходы между состояниями.

1. Процесс блокируется, ожидая входных данных

2. Планировщик выбирает другой процесс

3. Планировщик выбирает этот процесс

4. Поступили входные данные

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

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

4.2 Потоки (нити, облегченный процесс)

4.2.1 Понятие потока

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

Сравнение многопоточной системы с однопоточной

4.2.2 Модель потока

С каждым потоком связывается:

Счетчик выполнения команд

Регистры для текущих переменных

Потоки делят между собой элементы своего процесса:

В остальном модель идентична модели процессов.

В POSIX и Windows есть поддержка потоков на уровне ядра.

4.2.3 Преимущества использования потоков

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

Быстрота создания потока, по сравнению с процессом, примерно в 100 раз.

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

4.2.4 Реализация потоков в пространстве пользователя, ядра и смешанное

А — потоки в пространстве пользователя

B — потоки в пространстве ядра

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

Преимущества случая А:

Такую многопоточность можно реализовать на ядре не поддерживающим многопоточность

Более быстрое переключение, создание и завершение потоков

Процесс может иметь собственный алгоритм планирования.

Недостатки случая А:

Отсутствие прерывания по таймеру внутри одного процесса

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

Горин Павел/ автор статьи

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

Понравилась статья? Поделиться с друзьями:
psihologiya-otnosheniy.ru
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: