Процесс рассматривается операционной системой как заявка на потребление всех видов ресурсов, кроме одного — процессорного времени. Этот последний важнейший ресурс распределяется операционной системой между другими единицами работы — потоками, которые и получили свое название благодаря тому, что они представляют собой последовательности (потоки выполнения) команд.
Хотя на первый взгляд кажется, что программа и процесс понятия практически одинаковые, они фундаментально отличаются друг от друга. Программа представляет собой статический набор команд, а процесс это набор ресурсов и данных, использующихся при выполнении программы.
Нить представляет собой независимо выполняющийся поток управления со своим счетчиком команд, регистровым контекстом и стеком. Понятия процесса и нити очень тесно связаны и поэтому трудноотличимы, нити даже часто называют легковесными процессами.
Основные отличия процесса от нити заключаются в том, что, каждому процессу соответствует своя независимая от других область памяти, таблица открытых файлов, текущая директория и прочая информация уровня ядра. Нити же не связаны непосредственно с этими сущностями. У всех нитей принадлежащих данному процессу всё выше перечисленное общее, поскольку принадлежит этому процессу. Кроме того, процесс всегда является сущностью уровня ядра, то есть ядро знает о его существовании, в то время как нити зачастую является сущностями уровня пользователя и ядро может ничего не знать о ней.
Чем отличается процесс от проекта?
У програмуванні волокно (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)
Источник: infopedia.su
Чем процесс отличается от программы
главное отличие между программой и процессом заключается в том, что Программа — это набор инструкций, который позволяет ЦПУ выполнять определенную задачу, в то время как процесс — это исполняемая программа.
Операционная система — это интерфейс между пользователем и оборудованием. Ядром операционной системы является ядро. Он выполняет несколько важных задач, таких как управление памятью, управление процессами, обработка файлов, обработка устройств ввода-вывода и многое другое. Программа и процесс — это два термина, относящиеся к операционной системе. Программа — это набор инструкций, а процесс — это исполняемая программа.
Ключевые области покрыты
1. Что такое программа
— определение, функциональность
2. Что такое процесс
— определение, функциональность
3. В чем разница между программой и процессом
— Сравнение основных различий
Основные условия
CPU, ядро, операционная система, программа, процесс
Что такое программа
Программа — это набор инструкций, объясняющих задачу, которую должен выполнять ЦП. Более того, при написании программ важно следовать алгоритму, поскольку это может повысить эффективность программы. Кроме того, программист — это человек, который может писать компьютерные программы.
Существуют различные языки программирования. Основными двумя типами языков программирования являются языки высокого и низкого уровня. Языки высокого уровня имеют синтаксис, аналогичный английскому языку. Программист может легко понять и прочитать эти инструкции, но процессор не может.
Следовательно, необходимо преобразовать исходный код высокого уровня в машиночитаемый и понятный машинный код. Java, C, C ++, Python и PHP являются распространенными языками программирования высокого уровня.
Языки программирования низкого уровня на один уровень ниже языков высокого уровня и на один уровень впереди машинного языка. Эти языки ближе к аппаратному уровню, чем языки высокого уровня. Программист должен хорошо понимать архитектуру компьютера, чтобы писать программы на языках низкого уровня. Одним из распространенных языков низкого уровня является язык ассемблера.
Что такое процесс
Процесс — это исполняемая программа. Процесс выполняется один за другим. Программист пишет программу с использованием языка программирования в текстовом редакторе или интегрированной среде разработки (IDE). Когда он выполняет эту программу, она становится процессом. Он выполняет все задачи, определенные в программе.
Помимо выполнения, можно создавать, удалять и планировать процессы.
При выполнении программы процесс загружается в основную память. Процесс в основной памяти содержит стек, кучу, данные и текст. Они заключаются в следующем.
стек — Содержать временную информацию. например Локальные переменные, адреса возврата и т. Д.
отвал — Позволяет выделять память процессу во время выполнения
Данные — состоят из статических и глобальных переменных
Текст — Содержит значение счетчика программы и содержимое регистров процессора
Разница между программой и процессом
Определение
Программа — это набор инструкций, которые выполняют определенную задачу при выполнении компьютером, в то время как процесс является экземпляром выполняемой компьютерной программы. Таким образом, в этом главное отличие программы и процесса.
Продолжительность жизни
Кроме того, время жизни — еще одно важное различие между программой и процессом. Программа имеет более длительный срок службы, чем процесс.
Ресурсы
На жестком диске хранятся программы, и этим программам не требуются ресурсы, в то время как процессам требуются такие ресурсы, как память, устройства ввода-вывода и процессор. Следовательно, это еще одно различие между программой и процессом.
Программа и процесс — это два термина в операционных системах, таких как Linux и Windows. Основное различие между программой и процессом состоит в том, что программа — это набор инструкций, который позволяет ЦПУ выполнять определенную задачу, в то время как процесс — это исполняемая программа. Короче говоря, программа пассивна по своей природе, а процесс активен по своей природе.
Ссылка:
1. «Что такое процесс?» Типы топологии сети в компьютерных сетях | Studytonight,
Источник: ru.strephonsays.com
Русские Блоги
Часть 1 Программа, процесс, разница между потоками, несколько состояний процесса
1. Понятие программы, процесса и потока
программаЭто описание статического файла, не занимающего системных ресурсов компьютера.
обработатьЭто динамический процесс, который занимает такие ресурсы, как память ЦП, и имеет определенный жизненный цикл.
Различные процессы выполнения одной и той же программы — это разные процессы.
НитьЭто так называемые облегченные процессы, которые аналогичны процессам в параллелизме, но при создании потребляют меньше ресурсов.
Процесс может содержать несколько потоков, и эти несколько потоков совместно используют ресурсы процесса.
2. Разница между процессом и потоком
(1) Многопроцессорность и многопоточность — это методы многозадачного программирования, оба из которых могут использовать многоядерный компьютер.
(2) Создание процесса требует больше ресурсов, чем потоки.
(3) Данные, не зависящие от пространства процесса, более безопасны, и для взаимодействия существует специальный метод межпроцессного взаимодействия.
(4) Процесс содержит несколько потоков, поэтому потоки совместно используют ресурсы процесса, и нет специального метода связи.
Для связи полагайтесь на глобальные переменные. Часто необходимо использовать синхронный механизм взаимного исключения, и необходимо учитывать больше логики.
3. Несколько состояний процесса
(1) Три состояния
1. Состояние готовности: процесс имеет условия выполнения, ожидая, пока система отправит процессор на выполнение.
2. Состояние выполнения: процесс занимает ЦП в состоянии выполнения.
3. Состояние ожидания: также известное как состояние блокировки или состояние ожидания, что означает, что процесс не имеет условий выполнения и ожидает выполнения определенных условий).
(2) Пять состояний
1. Состояние готовности: процесс имеет условия выполнения, ожидая, пока система отправит процессор на выполнение.
2. Состояние выполнения. В состоянии выполнения процесс занимает ЦП.
3. Состояние ожидания: также известное как состояние блокировки или состояние ожидания, что означает, что процесс не имеет условий выполнения и ожидает выполнения определенных условий.
4. Новое состояние. Процесс создания процесса напрямую выражается как выполнение программы или создание нового процесса в программе.
5. Состояние завершения: выполнение процесса завершается и процесс восстановления завершен).
Источник: russianblogs.com