Чем программа отличается от процесса

Чем программа отличается от процесса

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

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

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

8. Опишите жизненный цикл процесса. Какие требования обычно выдвигаются к алгоритмам планирования процессов?

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

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

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

Процесс может приостановить выполнение до тех пор, пока не завершит работу любой из порожденных им процессов, при помощи системного вызова wait, который возвращает PID и статус завершения выполненного дочернего процесса. Родительский процесс может быть настроен на получение сигнала в случае, когда порожденный процесс завершает работу или аварийно прекращает выполнение. При помощи системного вызова wait4 родитель может получить информацию о событии, приведшем к завершению порожденного процесса и о ресурсах, использованных процессом за время его работы. Если процесс становится сиротой из-за того, что процесс, его породивший, завершил работу до окончания работы потомка, то ядро перенаправляет состояние завершения порожденного процесса особому системному процессу init.

Критерии планирования и требования к алгоритмам

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

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

Читайте также:  Как перевести в формат корел

Эффективность – постараться занять процессор на все 100% рабочего времени, не позволяя ему простаивать в ожидании процессов, готовых к исполнению. В реальных вычислительных системах загрузка процессора колеблется от 40 до 90%.

Сокращение полного времени выполнения (turnaround time) – обеспечить минимальное время между стартом процесса или постановкой задания в очередь для загрузки и его завершением.

Сокращение времени ожидания (waiting time) – сократить время, которое проводят процессы в состоянии готовность и задания в очереди для загрузки.

Сокращение времени отклика (response time) – минимизировать время, которое требуется процессу в интерактивных системах для ответа на запрос пользователя.

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

Были предсказуемыми. Одно и то же задание должно выполняться приблизительно за одно и то же время. Применение алгоритма планирования не должно приводить, к примеру, к извлечению квадратного корня из 4 за сотые доли секунды при одном запуске и за несколько суток – при втором запуске.

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

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

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

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

9. Перечислите основные алгоритмы планирования процессов. Сформулируйте алгоритм “Карусель” (Round Robin) и охарактеризуйте его. Приведите простой пример. В каких системах он может применяться на практике?

Алгоритмы планирования

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

· First-Come, First-Served (FCFS)FCFS по первым буквам его английского названия – First-Come, First-Served (первым пришел, первым обслужен).

· Round Robin (RR)Модификацией алгоритма FCFS является алгоритм, получивший название Round Robin (Round Robin – это вид детской карусели в США) или сокращенно RR.

· Shortest-Job-First (SJF)Данный алгоритм получил название "кратчайшая работа первой" или Shortest Job First (SJF).

· Гарантированное планирование

· Приоритетное планирование

· Многоуровневые очереди (Multilevel Queue)

· Многоуровневые очереди с обратной связью (Multilevel Feedback Queue)

Round Robin (RR).
Модификацией алгоритма FCFS является алгоритм, получивший название Round Robin (Round Robin – это вид детской карусели в США) или сокращенно RR. По сути дела это тот же самый алгоритм, только реализованный в режиме вытесняющего планирования. Можно представить себе все множество готовых процессов организованным циклически — процессы сидят на карусели. Карусель вращается так, что каждый процесс находится около процессора небольшой фиксированный квант времени, обычно 10 — 100 миллисекунд (см. рисунок 3.4.). Пока процесс находится рядом с процессором, он получает процессор в свое распоряжение и может исполняться.

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

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

Читайте также:  Как проверить микроконтроллер на исправность

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

10. Перечислите основные алгоритмы планирования процессов. Сформулируйте и охарактеризуйте алгоритм “Очередь” (FIFO). Приведите простой пример. В каких системах он может применяться на практике?

Алгоритмы планирования

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

· First-Come, First-Served (FCFS)FCFS по первым буквам его английского названия – First-Come, First-Served (первым пришел, первым обслужен).

· Round Robin (RR)Модификацией алгоритма FCFS является алгоритм, получивший название Round Robin (Round Robin – это вид детской карусели в США) или сокращенно RR.

· Shortest-Job-First (SJF)Данный алгоритм получил название "кратчайшая работа первой" или Shortest Job First (SJF).

· Гарантированное планирование

· Приоритетное планирование

· Многоуровневые очереди (Multilevel Queue)

· Многоуровневые очереди с обратной связью (Multilevel Feedback Queue)

Последнее изменение этой страницы: 2016-08-16; Нарушение авторского права страницы

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

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

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

загрузки (loading) и исполнения (execution). Эти шаги детально описываются в учебниках по программированию и операцион­ным системам и здесь рассматриваться не будут.

Параллельное программирование, мультипрограммирование и многозадачность

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

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

Иногда в технической литературе термин "параллельное программирование" используется как синоним мультипрограммирования. Однако эти понятия не­сколько различаются по смыслу. Параллельное программирование — это абст­рактный процесс разработки программ, которые потенциально могут исполнять­ся параллельно, вне зависимости от программно-аппаратной среды. Иными словами, предполагается, что каждая задача реализуется на собственном вирту­альном процессоре. С другой стороны, мультипрограммирование представляет собой практический способ исполнения нескольких программ на одном цент­ральном процессоре или в распределенной вычислительной системе. Параллель­ное программирование более трудоемко, чем последовательное, поскольку спо­собности человека следить за развитием связанных процессов и исследовать их взаимодействие ограничены.

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

Читайте также:  Почему на модеме горит красная лампочка internet

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

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

Сравнительная таблица

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

Определение программы

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

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

Адресное пространство программы состоит из инструкции, данных и стека. Предположим, что P — это программа, которую мы пишем, чтобы реализовать выполнение P, операционная система выделяет память для размещения адресного пространства P. Он планирует P для выполнения, а также устанавливает механизм, с помощью которого p может получить доступ к информации о файле. CPU показан в пунктирной рамке, потому что он не всегда выполняет инструкции P; фактически ОС разделяет ЦП между выполнением P и выполнением других программ.

Определение процесса

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

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

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

Ключевые различия между программой и процессом

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

Заключение

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

Ссылка на основную публикацию
Хорошие дешевые жесткие диски
Лучший жесткий диск далек от SSD в плане скорости передачи данных, однако есть причина, по которой данные устройства все еще...
Формат записи видео mov
MOV против MP4 Существует много форматов файлов, которые можно использовать для хранения ваших видео в зависимости от ваших потребностей. MOV...
Формат ммгг как писать
Сбербанк Онлайн позволяет проводить различные платежи прямо из дома с любого устройства, имеющего доступ в Интернет. Это существенно экономит время...
Хорошие ноутбуки за 20000 для игр
Если вам необходим хороший ноутбук для работы, то вам придется потратится как минимум 20 тысяч рублей. За эти деньги вы...
Adblock detector