Книгу название которой обозначает выполнение пассивных инструкций компьютерной программой

Процесс (информатика)

Материал из Википедии — свободной энциклопедии

Перейти к: навигация, поиск

У этого термина существуют и другие значения, см. Процесс.

Статусы процессов в современных ОС.

Проце́сс — выполнение пассивных инструкций компьютерной программы на процессоре ЭВМ. Стандарт ISO 9000:2000 Definitions определяет процесс как совокупность взаимосвязанных и взаимодействующих действий, преобразующих входящие данные в исходящие.

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

Часто процессом называют выполняющуюся программу и все её элементы: адресное пространство, глобальные переменные, регистры, стек, открытые файлы и т. д.

[править] Создание процесса

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

  1. При запуске ОС,
  2. При появлении запроса на создание процесса — происходит в случае, если работающий процесс создает новый процесс.

[править] Завершение процесса

Минимум 2 этапа завершения:

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

Причины завершения процесса:

  1. Обычный выход
  2. Выход по исключению или ошибке
  3. Недостаточный объем памяти
  4. Превышение лимита отведённого программе времени
  5. Выход за пределы отведённой области памяти
  6. Неверная команда (данные интерпретируются как команды)
  7. Ошибка защиты
  8. Завершение родительского процесса
  9. Ошибка ввода/вывода
  10. Вмешательство оператора

[править] Литература

  • Э. Таненбаум, А. Вудхалл. «Операционные системы: Разработка и реализация.» — СПб.: 2006. — ISBN 5-469-00148-2
  • Э. Таненбаум. «Современные операционные системы. 2-е изд.» — СПб.: Питер, 2005. — 1038 с.: ил. ISBN 5-318-00299-4
  Аспекты операционных систем (история • список)
Ядро

Гибридное • Микро • Модульное • Монолитное • Нано • Экзо • Драйвер • Пространство пользователя • Область пользователя

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

Режимы (супервизора • реальный • защищённый) • Прерывание • Кольца защиты • Переключение контекста • Многозадачность (вытесняющая • кооперативная • мультипрограммирование) • Процесс Управление процессом • Планировщик задач • Многопоточность

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

Защита памяти • Сегментная адресация памяти • Страничная память • Менеджер виртуальной памяти • Ошибка сегментации • Общая ошибка защиты

Прочее

Загрузчик ОС • API • VFS • Компьютерная сеть • GUI • Слой аппаратных абстракций (HAL)

Связанные понятия

Систе́мный вы́зов (англ. system call) в программировании и вычислительной технике — обращение прикладной программы к ядру операционной системы для выполнения какой-либо операции.

Фа́йловая систе́ма (англ. file system) — порядок, определяющий способ организации, хранения и именования данных на носителях информации в компьютерах, а также в другом электронном оборудовании: цифровых фотоаппаратах, мобильных телефонах и т. п. Файловая система определяет формат содержимого и способ физического хранения информации, которую принято группировать в виде файлов. Конкретная файловая система определяет размер имен файлов (и каталогов), максимальный возможный размер файла и раздела, набор…

Межпроцессное взаимодействие (англ. inter-process communication, IPC) — обмен данными между потоками одного или разных процессов. Реализуется посредством механизмов, предоставляемых ядром ОС или процессом, использующим механизмы ОС и реализующим новые возможности IPC. Может осуществляться как на одном компьютере, так и между несколькими компьютерами сети.

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

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

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

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

Что же делать? Опять-таки воспользоваться услугами одной из специальных программ, обеспечивающих слежение за активными процессами и принудительное их завершение. При работе с операционными системами Windows 9* для указанной цели можно использовать вполне «официальную» утилиту от Microsoft. Утилита называется Process Viewer; она входит в состав пакета Visual Studio, но может использоваться автономно. Утилита собирает сведения обо всех активных процессах и отображает их список в окне (рис. 2.16).

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

Физический перенос данных на магнитном носителе представлял собой не меньшую проблему. Диски нужно было отправлять по почте или самостоятельно перевозить, а значит, для передачи сколько-нибудь значительного количества информации в другое место могли потребоваться часы или даже дни. В 1980‑е и даже 1990‑е гг. установка программного обеспечения с 10–20 дискет была обычным делом. Такой процесс мог занять больше часа, и делать на компьютере в это время что-то другое было невозможно. В то время у ПК не было современных многоядерных процессоров и функционала многозадачности. Хотя производители и придумали альтернативные средства для увеличения объема сохраняемых данных, включая некогда популярные zip-архиваторы, прирост тогда был связан в основном с тем, как удобнее управлять данными, а не как эффективнее соединять системы друг с другом.

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

Связанные понятия (продолжение)

Де́мон (daemon, dæmon, др.-греч. δαίμων божество) — компьютерная программа в системах класса UNIX, запускаемая самой системой и работающая в фоновом режиме без прямого взаимодействия с пользователем.

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

Пото́к выполне́ния (тред; от англ. thread — нить) — наименьшая единица обработки, исполнение которой может быть назначено ядром операционной системы. Реализация потоков выполнения и процессов в разных операционных системах отличается друг от друга, но в большинстве случаев поток выполнения находится внутри процесса. Несколько потоков выполнения могут существовать в рамках одного и того же процесса и совместно использовать ресурсы, такие как память, тогда как процессы не разделяют этих ресурсов. В…

Синхронизация (от др.-греч. σύγχρονος — одновременный) в информатике обозначает одно из: синхронизацию процессов, либо синхронизацию данных, либо процесс синхронизации передачи данных.

Виртуальная машина (VM, от англ. virtual machine) — программная и/или аппаратная система, эмулирующая аппаратное обеспечение некоторой платформы (target — целевая, или гостевая платформа) и исполняющая программы для target-платформы на host-платформе (host — хост-платформа, платформа-хозяин) или виртуализирующая некоторую платформу и создающая на ней среды, изолирующие друг от друга программы и даже операционные системы (см.: песочница); также спецификация некоторой вычислительной среды (например…

Ввод-вывод (от англ. input/output, I/O) в информатике — взаимодействие между обработчиком информации (например, компьютер) и внешним миром, который может представлять как человек, так и любая другая система обработки информации. Ввод — сигнал или данные, полученные системой, а вывод — сигнал или данные, посланные ею (или из неё). Термин также может использоваться как обозначение (или дополнение к обозначению) определенного действия: «выполнять ввод-вывод» означает выполнение операций ввода или вывода…

Компью́терная програ́мма — 1) комбинация компьютерных инструкций и данных, позволяющая аппаратному обеспечению вычислительной системы выполнять вычисления или функции управления (стандарт ISO/IEC/IEEE 24765:2010); 2) синтаксическая единица, которая соответствует правилам определённого языка программирования, состоящая из определений и операторов или инструкций, необходимых для определённой функции, задачи или решения проблемы (стандарт ISO/IEC 2382-1:1993).

Интерфейс командной строки (англ. Command line interface, CLI) — разновидность текстового интерфейса (CUI) между человеком и компьютером, в котором инструкции компьютеру даются в основном путём ввода с клавиатуры текстовых строк (команд), в UNIX-системах возможно применение мыши. Также известен под названием консоль.

Компоновщик (также редактор связей, от англ. link editor, linker) — инструментальная программа, которая производит компоновку («линковку»): принимает на вход один или несколько объектных модулей и собирает по ним исполнимый модуль.

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

Библиоте́ка (от англ. library) в программировании — сборник подпрограмм или объектов, используемых для разработки программного обеспечения (ПО).

Монтирование файловой системы — системный процесс, подготавливающий раздел диска к использованию операционной системой.

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

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

Разделяемая память (англ. Shared memory) является самым быстрым средством обмена данными между процессами.

Среда выполнения (англ. execution environment, иногда «ранта́йм» от англ. runtime — «время выполнения») в информатике — вычислительное окружение, необходимое для выполнения компьютерной программы и доступное во время выполнения компьютерной программы. В среде выполнения, как правило, невозможно изменение исходного текста программы, но может наличествовать доступ к переменным окружения операционной системы, таблицам объектов и модулей разделяемых библиотек.

Кэш или кеш (англ. cache, от фр. cacher — «прятать»; произносится — «кэш») — промежуточный буфер с быстрым доступом к нему, содержащий информацию, которая может быть запрошена с наибольшей вероятностью. Доступ к данным в кэше осуществляется быстрее, чем выборка исходных данных из более медленной памяти или удаленного источника, однако её объём существенно ограничен по сравнению с хранилищем исходных данных.

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

Оболо́чка операцио́нной систе́мы (от англ. shell «оболочка») — интерпретатор команд операционной системы, обеспечивающий интерфейс для взаимодействия пользователя с функциями системы.

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

Файловый дескриптор — это неотрицательное целое число. Когда создается новый поток ввода-вывода, ядро возвращает процессу, создавшему поток ввода-вывода, его файловый дескриптор.

В программировании именованный канал или именованный конвейер (англ. named pipe) — один из методов межпроцессного взаимодействия, расширение понятия конвейера в Unix и подобных ОС. Именованный канал позволяет различным процессам обмениваться данными, даже если программы, выполняющиеся в этих процессах, изначально не были написаны для взаимодействия с другими программами. Это понятие также существует и в Microsoft Windows, хотя там его семантика существенно отличается. Традиционный канал — «безымянен…

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

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

Сценарный язык (язык сценариев, жарг. скриптовый язык; англ. scripting language) — высокоуровневый язык сценариев (англ. script) — кратких описаний действий, выполняемых системой. Разница между программами и сценариями довольно размыта. Сценарий — это программа, имеющая дело с готовыми программными компонентами.

Виртуальная файловая система (англ. virtual file system — VFS) или виртуальный коммутатор файловой системы (англ. virtual filesystem switch) — уровень абстракции поверх конкретной реализации файловой системы. Целью VFS является обеспечение единообразного доступа клиентских приложений к различным типам файловых систем. VFS может быть использована для доступа к локальным устройствам и файлам (fat32, ext4, ntfs), сетевым устройствам и файлам на них (nfs), а также к устройствам, не предназначенным для…

Операцио́нная систе́ма, сокр. ОС (англ. operating system, OS) — комплекс взаимосвязанных программ, предназначенных для управления ресурсами компьютера и организации взаимодействия с пользователем.

А́дресное пространство (англ. address space) — совокупность всех допустимых адресов каких-либо объектов вычислительной системы — ячеек памяти, секторов диска, узлов сети и т. п., которые могут быть использованы для доступа к этим объектам при определенном режиме работы (состоянии системы).

Отла́дчик (деба́ггер, англ. debugger от bug) — компьютерная программа, предназначенная для поиска ошибок в других программах, ядрах операционных систем, SQL-запросах и других видах кода. Отладчик позволяет выполнять трассировку, отслеживать, устанавливать или изменять значения переменных в процессе выполнения кода, устанавливать и удалять контрольные точки или условия остановки и т.д.

Гиперви́зор (англ. Hypervisor; от др.-греч. ὑπέρ «над, выше, сверх» + лат. vīsio «зрение; видение») или монито́р виртуа́льных маши́н (в компьютерах) — программа или аппаратная схема, обеспечивающая или позволяющая одновременное, параллельное выполнение нескольких операционных систем на одном и том же хост-компьютере. Гипервизор также обеспечивает изоляцию операционных систем друг от друга, защиту и безопасность, разделение ресурсов между различными запущенными ОС и управление ресурсами.

Дамп памяти (англ. memory dump; в Unix — core dump) — содержимое рабочей памяти одного процесса, ядра или всей операционной системы. Также может включать дополнительную информацию о состоянии программы или системы, например значения регистров процессора и содержимое стека. Многие операционные системы позволяют сохранять дамп памяти для отладки программы. Как правило, дамп памяти процесса сохраняется автоматически, когда процесс завершается из-за критической ошибки (например, из-за ошибки сегментации…

Событи́йно-ориенти́рованное программи́рование (англ. event-driven programming; в дальнейшем СОП) — парадигма программирования, в которой выполнение программы определяется событиями — действиями пользователя (клавиатура, мышь), сообщениями других программ и потоков, событиями операционной системы (например, поступлением сетевого пакета).

DLL (англ. Dynamic Link Library — «библиотека динамической компоновки», «динамически подключаемая библиотека») в операционных системах Microsoft Windows и IBM OS/2 — динамическая библиотека, позволяющая многократное использование различными программными приложениями. Эти библиотеки обычно имеют расширение DLL, OCX (для библиотек содержащих ActiveX), или DRV (для ряда системных драйверов). Формат файлов для DLL такой же, как для EXE-файлов Windows, т. е. Portable Executable (PE) для 32-битных и 64-битных…

Дизассе́мблер (от англ. disassembler ) — транслятор, преобразующий машинный код, объектный файл или библиотечные модули в текст программы на языке ассемблера.

Байт-код (байтко́д; англ. bytecode, также иногда p-код, p-code от portable code) — стандартное промежуточное представление, в которое может быть переведена компьютерная программа автоматическими средствами. По сравнению с исходным кодом, удобным для создания и чтения человеком, байт-код — это компактное представление программы, уже прошедшей синтаксический и семантический анализ. В нём в явном виде закодированы типы, области видимости и другие конструкции. С технической точки зрения, байт-код представляет…

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

Се́рверное програ́ммное обеспечение (се́рвер, англ. server от to serve — служить; множественное число се́рверы, в разговорном языке также употребляется сервера́) — в информационных технологиях — программный компонент вычислительной системы, выполняющий сервисные (обслуживающие) функции по запросу клиента, предоставляя ему доступ к определённым ресурсам или услугам.

Стек вызовов (от англ. call stack; применительно к процессорам — просто «стек») — в теории вычислительных систем, LIFO-стек, хранящий информацию для возврата управления из подпрограмм (процедур, функций) в программу (или подпрограмму, при вложенных или рекурсивных вызовах) и/или для возврата в программу из обработчика прерывания (в том числе при переключении задач в многозадачной среде).

Защита памяти (англ. Memory protection) — это способ управления правами доступа к отдельным регионам памяти. Используется большинством многозадачных операционных систем. Основной целью защиты памяти является запрет доступа процессу к той памяти, которая не выделена для этого процесса. Такие запреты повышают надёжность работы как программ, так и операционных систем, так как ошибка в одной программе не может повлиять непосредственно на память других приложений. Следует различать общий принцип защиты…

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

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

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

Удалённый вызов процедур, реже Вызов удалённых процедур (от англ. Remote Procedure Call, RPC) — класс технологий, позволяющих компьютерным программам вызывать функции или процедуры в другом адресном пространстве (как правило, на удалённых компьютерах). Обычно реализация RPC-технологии включает в себя два компонента: сетевой протокол для обмена в режиме клиент-сервер и язык сериализации объектов (или структур, для необъектных RPC). Различные реализации RPC имеют очень отличающуюся друг от друга архитектуру…

Многозада́чность (англ. multitasking) — свойство операционной системы или среды выполнения обеспечивать возможность параллельной (или псевдопараллельной) обработки нескольких задач. Истинная многозадачность операционной системы возможна только в распределённых вычислительных системах.

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

Упоминания в литературе (продолжение)

К. Оберауэр с соавт. (Oberauer et al., 2003) предложили модель факторной структуры WMC, в которой рассматриваются три когнитивные функции: параллельная обработка и хранение, относительная интеграция (предварительно названная координацией) и наблюдение. Функция параллельной обработки и хранения соответствует общепринятому определению WMC. Она обычно оценивается с помощью сложных кратковременных задач, в которых участники должны запомнить множество пунктов за короткий период и выполнить обработку информации в промежутках между или после кодирования запоминаемых пунктов. Относительная интеграция определяется как способность строить новые связи между элементами и таким образом создавать структурные репрезентации (Waltz et al., 1999). Элементы могут храниться в памяти, но также могут быть даны перцептивно. Например, конструирование ментальной модели пространственного множества из некоторого описания (Byrne, Johnson-Laird, 1989), схватывание взаимоотношений из статистического графа (Halford et al., 2004) или «видение» созвездий в скоплении звезд и т. п. Наблюдение относится к контролю когнитивных процессов, включая репрезентацию цели, регулирование критериев ответов и изменение набора задач. Эти регуляторные процессы обычно относятся к категории исполнительных функций.

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

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

Джейн Вачутка, вице-президент по разработке продукта Windchill в компании PTC, как новый сотрудник попыталась применять используемый в компании каскадный метод и столкнулась со всеми обычными для этого метода проблемами. На предыдущей работе она использовала множество некаскадных процессов, подобных тем, что помогли достигнуть успеха проекту ФБР «Страж». В соответствии с этим методом проект состоит из одного или нескольких повторений работы (итераций), каждый из которых длится не более 30 дней. Множество небольших команд разработчиков выбирают наиболее важные требования для каждой итерации и превращают их в часть готового к употреблению программного обеспечения. Все эти части затем объединяются в одну полностью законченную и готовую к применению программу. В конце каждой последующей итерации другие части и надстройки программы добавляются к существующему функционалу.

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

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

2. Расширенные системы поддержки проектного управления. К ним можно отнести программное обеспечение, предназначенное для поддержки широкого набора «классических» процессов проектного управления. Такие информационные системы содержат взаимосвязанные данные разных процессов проектного управления, могут иметь возможность разного представления данных для разных уровней управления организации, возможность многопользовательской работы, но обычно имеют ограниченные возможности интеграции со смежными информационными системами. К системам данного класса можно отнести такие системы как РМ Foresight (ГК «Проектная ПРАКТИКА», Россия), ADVANTA (Адванта Труп, Россия), Microsoft Enterprise Project Management (Microsoft, США) и др.

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

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

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

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

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

Кроме этого, с помощью Google можно найти множество готовых вариантов, например по адресу http://zagruz-cd.narod.ru/fiLes/obraz2mb.rar находится загрузочный образ с интегрированной программой Norton Ghost, которая позволяет создать образ любого раздела жесткого диска и в случае необходимости быстро восстановить информацию до исходного состояния. Процесс создания собственного загрузочного образа требует дополнительной подготовки; как это сделать для любых условий и задач, подробно описано, например, на сайте http://bootcd.narod.ru/ и других тематических ресурсах. Кроме образа, на диск можно записать любые данные. После загрузки придется работать в командной строке, поэтому к записываемым файлам лучше добавить файловый менеджер. На эту роль подойдут Volkov Commander (http://www.egner-onLine.de/vc/) или FAR (http://www.farmanager.com/). Для загрузочных дисков также востребован PowerQuest Partition Magic (http://www.powerquest.com/), с помощью которого можно изменять разделы жесткого диска.

Группа стандартов CMM/CMMI была создана Институтом программной инженерии SEI (Software Engineering Institute), который финансируется за счет Министерства обороны США и является структурной единицей Университета Карнеги-Меллона. Основная идея стандарта состоит в использовании модели CMM/CMMI (Capability Maturity Model / Integrated – модель зрелости возможностей) для приписывания каждой организации определенного уровня, с тем чтобы организации можно было бы сравнивать по уровням. Деление на уровни позволяет последовательно внедрять CMM/CMMI, используя стандарт в качестве руководства, которое может обеспечить постоянное совершенствование процесса разработки. Для достижения стандартов рекомендуется использовать специализированные процессы разработки программного обеспечения: Personal Software Process / Team Software Process. Последовательное применение модели PSP/TSP дает возможность сделать нормой в организации наиболее зрелый (пятый) уровень CMM. Акцент поставлен на непрерывное управление рисками, которое, согласно определению Института программной инженерии, представляет собой инженерно-техническую подготовку программного обеспечения с процессами, методами и средствами для управления рисками в проекте. Согласно методологии, существуют семь принципов, которые обеспечивают основу для эффективного управления рисками: Глобальная перспектива, Обзор вперед, Открытые связи, Комплексное управление, Непрерывный процесс, Коллективное видение продукта, Командная работа.

Структура представления метаданных электронных документов в современных информационных системах носит принципиально иной характер, компоненты метаданных связаны с документом, но при этом они могут непосредственно не входить в его «тело». Метаданные документа в электронной среде должны быть четко определенными и отвечать более высоким требованиям, чем в процессах работы с бумажными документами. В ГОСТ Р ИСО 23081-1-2008 констатируется, что электронная среда «требует иного выражения традиционных требований и иных механизмов для идентификации, ввода, определения свойств и использования метаданных» и вместе с тем «предоставляет новые возможности для определения и создания метаданных» [60].

Электронный бизнес строится на интеграции деловых процессов, информации и людей. Стиль Интернета и World Wide Web отражается на решениях электронного бизнеса. Преобразование любого основного процесса требует выявления всех элементов, составляющих решение, определение тех из них, которые должны быть автоматизированы, расширены, интегрированы и связаны с World Wide Web. Разработав программу преобразования, компания должна учесть все имеющиеся активы и выявить те из них, которые нуждаются в реконструкции. Решения электронного бизнеса должны поддерживать и временно подключившихся пользователей. Все большее информационное наполнение и увеличение степени интерактивности увеличивает число пользователей. На успешных сайтах растет и объем, и привлекательность материалов. Эволюция самого Интернета позволяет непрерывно применять стратегию роста, повышает надежность, защиту и управляемость электронного бизнеса. Решения электронного бизнеса в ближайшее время превратятся в стандартное средство взаимодействия с акционерами, поставщиками, покупателями и пользователями.

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

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

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

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

Тема 2. Урок 17

Практическое занятие: Настройка параметров ОС

Управление процессами с помощью команд операционной системы для работы с процессами

Цель: освоить методы управления процессами в операционной системе Windows.

Теоретические сведения:

Процесс – выполнение пассивных инструкций компьютерной программы на процессоре ЭВМ;

tasklist и taskkill – это команды просмотра и управления процессами. Команда tasklist служит для получения списка идентификаторов запущенных процессов. Команда taskkill позволяет завершать работу процессов на локальном или удаленном компьютере с помощью командной строки;

tasklist /SVC – этот параметр позволяет увидеть служебную информацию каждого процесса;

tasklist/m – эта команда отображает модули, связанные с каждым процессом, что позволяет рассмотреть все библиотеки, используемые процессом;

tasklist/v – это команда, с помощью которой отображается очень подробная информация о процессах;

taskkill /pid <процесс> /pid<процесс> /pid <процесса> /t– этот код завершает тот процесс, чей pid введен;

/pid – это код процесса, он указывает код процесса, который необходимо завершить;

regedit – это команда, с помощью которой происходит запуск редактора реестра.

Задание 1

1) Запустите несколько программ на компьютере.

2) Просмотрите количество запущенных программ в операционной системе Windows, используя программу «Диспетчер Задач», нажав комбинацию клавиш Ctrl + Shift + Esc.

3) Просмотрите, сколько запущено процессов, а также насколько загружен процессор и задействовано ОЗУ, нажав на вкладку «Быстродействие».

Задание 2

1) Запустите интерпретатор Командной строки, нажав комбинацию клавиш Win+ R.

2) В командной строке наберите команду tasklist и нажмите Enter. Отобразится список приложений и связанные с ними задачи/процессы, которые в данный момент используются.

3) Для вывода списка активных служб в каждом процессе введите команду tasklist /SVC.

4) Запустите Калькулятор.

5) Просмотрите командой tasklist появился ли процесс calc.exe

6) Запустите Редактор реестра с помощью команды regedit. Посмотрите командой tasklist появился ли процесс regedit.exe.

Задание 3

1) Запустите ещё два Калькулятора. Выполните в каждом расчёты.

2) Просмотрите командой tasklist появились ли все три процесса calc.exe.

3) Отобразите все задачи, которые загрузили модули командой tasklist/m.

4) Отобразите подробную информацию командой tasklist/v.

5) Завершите три процесса calc.exe. Для этого введите команду taskkill /pid 948 /pid 236 /pid 1256 /t.

6) Убедитесь командой tasklist, что три процесса calc.exe были завершены.

Контрольные вопросы

1. Что собой представляет процесс в операционной системе?

2. Назовите команды просмотра и управления процессами.

3. Какая команда служит для получения списка идентификаторов запущенных процессов?

4. Какая команда позволяет завершать работу процессов на локальном или удаленном компьютере с помощью командной строки.

5. Какой параметр позволяет увидеть служебную информацию каждого процесса?

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

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

У этого термина существуют и другие значения, см. Процесс.

Статусы процессов в современных ОС.

Проце́сс — это идентифицируемая абстракция совокупности взаимосвязанных системных ресурсов на основе отдельного и независимого виртуального адресного пространства в контексте которой организуется выполнение потоков. Стандарт ISO 9000:2000 Definitions определяет процесс как совокупность взаимосвязанных и взаимодействующих действий, преобразующих входящие данные в исходящие.

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

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

Представление процесса

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

  • образом исполняемого машинного кода, ассоциированного с программой;
  • памятью (обычно некоторой областью виртуальной памяти), которая включает в себя:
    • исполняемый код;
    • входные и выходные данные процесса;
    • стек вызовов (для отслеживания активных подпрограмм);
    • кучу (хип) для хранения промежуточных результатов вычислений, генерируемых во время выполнения;
  • дескрипторами ресурсов операционной системы, выделенными для процесса, например, файл
  • файловыми дескрипторами (в терминологии ОС Unix) или «хэндлами» (в терминологии ОС Windows);
  • атрибутами безопасности, такими как владелец и набор полномочий процесса (допустимых операций);
  • состоянием процессора (контекстом), таким как:
    • содержимое регистров;
    • схема преобразования виртуальных адресов в физические;
    • и т. д.
Контекст текущего процесса выгружается в память, когда выполняется переключение на другой процесс[1].

Операционная система хранит большую часть информации о процессах в таблице процессов.

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

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

Представление процесса в памяти

В данном разделе рассмотрено представление процесса в памяти операционной системы Linux и архитектуры x86. Подобное представление мало отличается от многих других многозадачных операционных систем и архитектур. Например в amd64, наследнике x86, стек вызовов точно так же растёт сверху вниз, но размер адресного пространства увеличен до 248 байт.[2]

Представление программы в памяти в пространстве пользователя

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

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

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

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

Куча (heap) используется для выделения памяти во время работы программы. В Linux для этого существует системный вызов mmap.

Область стека используется для вызова процедур.

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

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

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

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

Unix

Unix — одна из первых многозадачных ОС. Каждый процесс имеет уникальный числовой идентификатор PID. Процессы в ней имеют древовидную иерархию, где корнем является процесс init c PID 1. Новый процесс можно создать системным вызовом fork, он будет являться точной копией процесса-родителя. Любой процесс кроме init всегда имеет процесс-родитель (атрибут PPID (англ. Parent PID)); процессы, родитель которых завершил свою работу, становятся дочерними процессами init.

Процессы также объединяются в группы. За управление идентификатором группы (PGID) отвечают системные вызовы setpgid и getpgid. PGID равен PID’у лидера группы. Процесс-потомок наследует группу от родителя. Группы используются для управления заданиями.

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

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

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

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

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

Состояния процесса

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

Linux

Граф переходов

Процесс в ОС Linux может находиться в одном из следующих состояний:

  • R (running/runnable) — процесс исполняется либо ожидает своей очереди исполняться;
  • D — непрерываемый сон — процесс ожидает определённого события;
  • S — прерываемый сон — процесс ожидает определённого события либо сигнала;
  • T — остановка — процесс приостановлен, например, отладчиком;
  • Z (zombie) — процесс уже завершился, но ещё не передал родительскому процессу свой код возврата.

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

Минимум 2 этапа завершения:

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

Причины завершения процесса:

  • Обычный выход,
  • Выход по исключению или ошибке,
  • Недостаточный объём памяти,
  • Превышение лимита отведённого программе времени,
  • Выход за пределы отведённой области памяти,
  • Неверная команда (данные программы интерпретируются как инструкции для процессора),
  • Ошибка защиты (выполнение непривилегированной команды),
  • Завершение родительского процесса,
  • Ошибка ввода-вывода,
  • Вмешательство оператора.

См. также

  • Родительский процесс;
  • Дочерний процесс[en];
  • Группа процессов[en];
  • Фоновый процесс;
  • Процесс-зомби;
  • Процесс-сирота;
  • Легковесный процесс.

Примечания

  1. Э. Танненбаум. Современные операционные системы = Modern Operating Systems. — 2-е изд. — СПб.: Питер, 2002. — С. 59, 97. — 1040 с. — ISBN 5-318-00299-4.
  2. AMD Corporation. Volume 2: System Programming (PDF). AMD64 Architecture Programmer’s Manual. AMD Corporation (декабрь 2016). Дата обращения: 25 марта 2017. Архивировано 13 июля 2018 года.

Литература

  • Э. Таненбаум, А. Вудхалл. «Операционные системы: Разработка и реализация.» — СПб.: 2006. — ISBN 5-469-00148-2
  • Э. Таненбаум. «Современные операционные системы. 2-е изд.» — СПб.: Питер, 2005. — 1038 с.: ил. ISBN 5-318-00299-4
Статусы процессов в современных ОС.

Проце́сс — это идентифицируемая абстракция совокупности взаимосвязанных системных ресурсов на основе отдельного и независимого виртуального адресного пространства в контексте которой организуется выполнение потоков. Стандарт ISO 9000:2000 Definitions определяет процесс как совокупность взаимосвязанных и взаимодействующих действий, преобразующих входящие данные в исходящие.

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

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

Представление процесса

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

  • образом исполняемого машинного кода, ассоциированного с программой;
  • памятью (обычно некоторой областью виртуальной памяти), которая включает в себя:
    • исполняемый код;
    • входные и выходные данные процесса;
    • стек вызовов (для отслеживания активных подпрограмм);
    • кучу (хип) для хранения промежуточных результатов вычислений, генерируемых во время выполнения;
  • дескрипторами ресурсов операционной системы, выделенными для процесса, например, файл
  • файловыми дескрипторами (в терминологии ОС Unix) или «хэндлами» (в терминологии ОС Windows);
  • атрибутами безопасности, такими как владелец и набор полномочий процесса (допустимых операций);
  • состоянием процессора (контекстом), таким как:
    • содержимое регистров;
    • схема преобразования виртуальных адресов в физические;
    • и т. д.
Контекст текущего процесса выгружается в память, когда выполняется переключение на другой процесс[1].

Операционная система хранит большую часть информации о процессах в таблице процессов.

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

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

Представление процесса в памяти

В данном разделе рассмотрено представление процесса в памяти операционной системы Linux и архитектуры x86. Подобное представление мало отличается от многих других многозадачных операционных систем и архитектур. Например в amd64, наследнике x86, стек вызовов точно так же растёт сверху вниз, но размер адресного пространства увеличен до 248 байт.[2]

Представление программы в памяти в пространстве пользователя

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

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

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

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

Куча (heap) используется для выделения памяти во время работы программы. В Linux для этого существует системный вызов mmap.

Область стека используется для вызова процедур.

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

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

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

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

Unix

Unix — одна из первых многозадачных ОС. Каждый процесс имеет уникальный числовой идентификатор PID. Процессы в ней имеют древовидную иерархию, где корнем является процесс init c PID 1. Новый процесс можно создать системным вызовом fork, он будет являться точной копией процесса-родителя. Любой процесс кроме init всегда имеет процесс-родитель (атрибут PPID (англ. Parent PID)); процессы, родитель которых завершил свою работу, становятся дочерними процессами init.

Процессы также объединяются в группы. За управление идентификатором группы (PGID) отвечают системные вызовы setpgid и getpgid. PGID равен PID’у лидера группы. Процесс-потомок наследует группу от родителя. Группы используются для управления заданиями.

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

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

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

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

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

Состояния процесса

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

Linux

Граф переходов

Процесс в ОС Linux может находиться в одном из следующих состояний:

  • R (running/runnable) — процесс исполняется либо ожидает своей очереди исполняться;
  • D — непрерываемый сон — процесс ожидает определённого события;
  • S — прерываемый сон — процесс ожидает определённого события либо сигнала;
  • T — остановка — процесс приостановлен, например, отладчиком;
  • Z (zombie) — процесс уже завершился, но ещё не передал родительскому процессу свой код возврата.

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

Минимум 2 этапа завершения:

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

Причины завершения процесса:

  • Обычный выход,
  • Выход по исключению или ошибке,
  • Недостаточный объём памяти,
  • Превышение лимита отведённого программе времени,
  • Выход за пределы отведённой области памяти,
  • Неверная команда (данные программы интерпретируются как инструкции для процессора),
  • Ошибка защиты (выполнение непривилегированной команды),
  • Завершение родительского процесса,
  • Ошибка ввода-вывода,
  • Вмешательство оператора.

См. также

  • Родительский процесс;
  • Дочерний процесс[en];
  • Группа процессов[en];
  • Фоновый процесс;
  • Процесс-зомби;
  • Процесс-сирота;
  • Легковесный процесс.

Примечания

  1. Э. Танненбаум. Современные операционные системы = Modern Operating Systems. — 2-е изд. — СПб.: Питер, 2002. — С. 59, 97. — 1040 с. — ISBN 5-318-00299-4.
  2. AMD Corporation. Volume 2: System Programming (PDF). AMD64 Architecture Programmer’s Manual. AMD Corporation (декабрь 2016). Дата обращения: 25 марта 2017. Архивировано 13 июля 2018 года.

Литература

  • Э. Таненбаум, А. Вудхалл. «Операционные системы: Разработка и реализация.» — СПб.: 2006. — ISBN 5-469-00148-2
  • Э. Таненбаум. «Современные операционные системы. 2-е изд.» — СПб.: Питер, 2005. — 1038 с.: ил. ISBN 5-318-00299-4
Статусы процессов в современных ОС.

Проце́сс — это идентифицируемая абстракция совокупности взаимосвязанных системных ресурсов на основе отдельного и независимого виртуального адресного пространства в контексте которой организуется выполнение потоков. Стандарт ISO 9000:2000 Definitions определяет процесс как совокупность взаимосвязанных и взаимодействующих действий, преобразующих входящие данные в исходящие.

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

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

Представление процесса

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

  • образом исполняемого машинного кода, ассоциированного с программой;
  • памятью (обычно некоторой областью виртуальной памяти), которая включает в себя:
    • исполняемый код;
    • входные и выходные данные процесса;
    • стек вызовов (для отслеживания активных подпрограмм);
    • кучу (хип) для хранения промежуточных результатов вычислений, генерируемых во время выполнения;
  • дескрипторами ресурсов операционной системы, выделенными для процесса, например, файл
  • файловыми дескрипторами (в терминологии ОС Unix) или «хэндлами» (в терминологии ОС Windows);
  • атрибутами безопасности, такими как владелец и набор полномочий процесса (допустимых операций);
  • состоянием процессора (контекстом), таким как:
    • содержимое регистров;
    • схема преобразования виртуальных адресов в физические;
    • и т. д.
Контекст текущего процесса выгружается в память, когда выполняется переключение на другой процесс[1].

Операционная система хранит большую часть информации о процессах в таблице процессов.

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

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

Представление процесса в памяти

В данном разделе рассмотрено представление процесса в памяти операционной системы Linux и архитектуры x86. Подобное представление мало отличается от многих других многозадачных операционных систем и архитектур. Например в amd64, наследнике x86, стек вызовов точно так же растёт сверху вниз, но размер адресного пространства увеличен до 248 байт.[2]

Представление программы в памяти в пространстве пользователя

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

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

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

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

Куча (heap) используется для выделения памяти во время работы программы. В Linux для этого существует системный вызов mmap.

Область стека используется для вызова процедур.

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

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

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

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

Unix

Unix — одна из первых многозадачных ОС. Каждый процесс имеет уникальный числовой идентификатор PID. Процессы в ней имеют древовидную иерархию, где корнем является процесс init c PID 1. Новый процесс можно создать системным вызовом fork, он будет являться точной копией процесса-родителя. Любой процесс кроме init всегда имеет процесс-родитель (атрибут PPID (англ. Parent PID)); процессы, родитель которых завершил свою работу, становятся дочерними процессами init.

Процессы также объединяются в группы. За управление идентификатором группы (PGID) отвечают системные вызовы setpgid и getpgid. PGID равен PID’у лидера группы. Процесс-потомок наследует группу от родителя. Группы используются для управления заданиями.

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

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

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

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

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

Состояния процесса

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

Linux

Граф переходов

Процесс в ОС Linux может находиться в одном из следующих состояний:

  • R (running/runnable) — процесс исполняется либо ожидает своей очереди исполняться;
  • D — непрерываемый сон — процесс ожидает определённого события;
  • S — прерываемый сон — процесс ожидает определённого события либо сигнала;
  • T — остановка — процесс приостановлен, например, отладчиком;
  • Z (zombie) — процесс уже завершился, но ещё не передал родительскому процессу свой код возврата.

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

Минимум 2 этапа завершения:

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

Причины завершения процесса:

  • Обычный выход,
  • Выход по исключению или ошибке,
  • Недостаточный объём памяти,
  • Превышение лимита отведённого программе времени,
  • Выход за пределы отведённой области памяти,
  • Неверная команда (данные программы интерпретируются как инструкции для процессора),
  • Ошибка защиты (выполнение непривилегированной команды),
  • Завершение родительского процесса,
  • Ошибка ввода-вывода,
  • Вмешательство оператора.

См. также

  • Родительский процесс;
  • Дочерний процесс[en];
  • Группа процессов[en];
  • Фоновый процесс;
  • Процесс-зомби;
  • Процесс-сирота;
  • Легковесный процесс.

Примечания

  1. Э. Танненбаум. Современные операционные системы = Modern Operating Systems. — 2-е изд. — СПб.: Питер, 2002. — С. 59, 97. — 1040 с. — ISBN 5-318-00299-4.
  2. AMD Corporation. Volume 2: System Programming (PDF). AMD64 Architecture Programmer’s Manual. AMD Corporation (декабрь 2016). Дата обращения: 25 марта 2017. Архивировано 13 июля 2018 года.

Литература

  • Э. Таненбаум, А. Вудхалл. «Операционные системы: Разработка и реализация.» — СПб.: 2006. — ISBN 5-469-00148-2
  • Э. Таненбаум. «Современные операционные системы. 2-е изд.» — СПб.: Питер, 2005. — 1038 с.: ил. ISBN 5-318-00299-4

Эта страница в последний раз была отредактирована 12 июля 2023 в 13:51.

Как только страница обновилась в Википедии она обновляется в Вики 2.
Обычно почти сразу, изредка в течении часа.

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

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

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

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

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

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

Основные аспекты книги

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

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

Понимание терминов: что такое пассивные инструкции?

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

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

Применение пассивных инструкций

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

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

Важность автоматизации в современных компьютерных приложениях

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

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

Преимущества автоматизации

  • Снижение ошибок: Автоматизация снижает вероятность человеческих ошибок при выполнении рутинных задач.
  • Повышение скорости: Компьютерные программы могут выполнять операции значительно быстрее, чем человек.
  • Оптимизация ресурсов: Эффективное использование времени и материальных ресурсов.
  • Улучшение взаимодействия: Автоматизация позволяет интегрировать различные приложения для более удобного обмена данными.
  1. Определите задачи, которые можно автоматизировать.
  2. Выберите подходящие инструменты для автоматизации.
  3. Проверьте и протестируйте автоматизированные процессы.
  4. Внедрите автоматизацию в повседневную практику.

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

Сравнение активных и пассивных стратегий в программировании

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

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

Основные различия

  • Контроль: Активные стратегии требуют постоянного участия разработчика, тогда как пассивные могут выполняться автоматически.
  • Гибкость: Активные подходы позволяют быстрее адаптироваться к изменениям, в отличие от пассивных, которые действуют по заранее заданным правилам.
  • Сложность: Исполнение активных стратегий может быть более сложным и ресурсоемким по сравнению с простотой пассивных решений.

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

Примеры успешной реализации пассивных инструкций

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

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

Ключевые аспекты успешной реализации

  • Доступность информации: Инструкции должны быть легко доступными и понятными для пользователя.
  • Интерактивность: Важно предусмотреть взаимодействие, которое активизирует выполнение инструкций.
  • Адаптивность: Пассивные инструкции должны адаптироваться к различным условиям использования и предпочтениям пользователей.

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

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

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

Ключевые аспекты выбора инструментов

  • Функциональность: Инструмент должен поддерживать необходимые функции для автоматизации конкретных задач.
  • Пользовательский интерфейс: Удобный интерфейс существенно облегчает настройку и использование инструмента.
  • Интеграция: Важно, чтобы инструмент легко интегрировался с уже существующими системами.
  • Поддержка и документация: Наличие качественной поддержки и документации поможет быстрее разобраться в использовании инструмента.

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

Типичные ошибки при использовании пассивных инструкций

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

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

  1. Недостаточная ясность инструкций — Инструкции должны четко описывать, что именно необходимо сделать. Неясные формулировки могут привести к путанице.
  2. Игнорирование контекста — Пассивные инструкции должны учитывать контекст выполнения действия. Игнорирование этого может вызвать ошибки.
  3. Отсутствие визуальных подсказок — Визуальные элементы значительно облегчают восприятие инструкций. Их отсутствие может затруднить выполнение задачи.
  4. Неправильное использование терминов — Применение профессионального жаргона без объяснения может отпугнуть обычных пользователей.
  5. Сложность инструкций — Длинные и сложные инструкции могут запутать пользователя. Лучше разбивать их на более простые шаги.

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

Рекомендации по улучшению эффективности выполнения задач

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

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

Основные рекомендации

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

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

Будущее пассивных инструкций в контексте искусственного интеллекта

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

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

Итоги и перспективы

  • Автоматизация процессов: Пассивные инструкции помогают оптимизировать выполнение задач, минимизируя время затраты.
  • Доступность: Более простые и понятные инструкции позволяют большему числу людей использовать сложные технологии.
  • Интерактивность: Интеграция AI в пассивные инструкции создаёт возможность для адаптивного обучения и улучшения пользовательского опыта.

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

Материал из РУВИКИ — свободной энциклопедии

Перейти к материалам ОГЭ/ЕГЭ

Ege oge.png

РУВИКИ для ОГЭ/ЕГЭ

Переходите на портал РУВИКИ, где собраны материалы для подготовки к ОГЭ и ЕГЭ

Перейти

Перейти к материалам ОГЭ/ЕГЭ

Ege oge.png

РУВИКИ для ОГЭ/ЕГЭ

        Переходите на портал РУВИКИ, где собраны материалы для подготовки к ОГЭ и ЕГЭ
Выполнение программы
Общие понятия
  • Код
  • Транслятор
    • Компилятор
      • Время компиляции
    • Оптимизирующий компилятор
  • Промежуточное представление программы
  • Выполнение программы
    • Среда выполнения
      • Время выполнения
    • Исполняемый файл
    • Интерпретатор
    • Виртуальная машина
Типы кода
  • Исходный код
  • Объектный модуль
  • Байт-код
  • Машинный код
  • Микрокод
Стратегии компиляции
  • AOT-компиляция
  • JIT-компиляция
    • Tracing JIT-компиляция
  • Транскомпиляция
  • Рекомпиляция
Основные среды выполнения
  • Android Runtime (ART)
  • BEAM
  • Common Language Runtime (CLR) и Mono
  • CPython и PyPy
  • Crt0
  • Java Virtual Machine (JVM)
  • LuaJIT
  • Objective-C и Swift
  • V8 и Node.js
  • Zend Engine
Основные компиляторы и наборы инструментов для сборки
  • GNU Compiler Collection (GCC)
  • LLVM и Clang

Компью́терная програ́мма — 1) комбинация компьютерных инструкций и данных, позволяющая аппаратному обеспечению вычислительной системы выполнять вычисления или функции управления (стандарт ISO/IEC/IEEE 24765:2010)[1]; 2) синтаксическая единица, которая соответствует правилам определённого языка программирования, состоящая из определений и операторов или инструкций, необходимых для определённой функции, задачи или решения проблемы (стандарт ISO/IEC 2382-1:1993)[2].

Первое определение соответствует понятию «исполняемая программа», второе относится к понятию «исходный текст».

Другие определения из нормативных документов:

  • данные, предназначенные для управления конкретными компонентами системы обработки данных в целях реализации определённого алгоритма (ГОСТ 19781—90)[3];
  • представленная в объективной форме совокупность данных и команд, предназначенных для функционирования ЭВМ и других компьютерных устройств с целью получения определённого результата, включая подготовительные материалы, полученные в ходе разработки программы для ЭВМ, и порождаемые ею аудиовизуальные отображения (Гражданский кодекс Российской Федерации)[4].

Компьютерные программы как объект авторского права и других прав интеллектуальной собственности относятся к категории нематериальных активов.

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

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

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

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

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

Интерпретируемые программы, для которых, как правило, не применяется процесс компиляции и которые интерпретируются операционной системой или специальными программами-интерпретаторами, называются скриптами или «сценариями».

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

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

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

Одновременное выполнение[править | править код]

Многие операционные системы поддерживают механизм многозадачности, который позволяет создать эффект одновременной работы нескольких компьютерных программ на одном компьютере. Операционные системы могут выполнять несколько программ, используя диспетчер операционной системы — программный механизм для переключения процессов, выполняемых процессором. Хотя в каждый момент времени выполняется только одна программа, при достаточно частом переключении пользователь может взаимодействовать со всеми программами во время их работы[7]. Современные многопроцессорные компьютеры или компьютеры с многоядерными процессорами поддерживают одновременное выполнение нескольких программ аппаратно[8].

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

Самомодифицирующиеся программы[править | править код]

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

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

Согласно ст. 1261 ГК РФ, программой для ЭВМ является представленная в объективной форме совокупность данных и команд, предназначенных для функционирования ЭВМ и других компьютерных устройств в целях получения определённого результата, включая подготовительные материалы, полученные в ходе разработки программы для ЭВМ, и порождаемые ею аудиовизуальные отображения.

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

Компьютерные программы в большинстве стран являются объектами авторского права (включая Украину и Россию). В некоторых странах компьютерные программы могут защищаться патентами. Патентованию компьютерных программ способствовало Соглашение о торговых аспектах прав интеллектуальной собственности, которое установило минимальные[9] требования к охраняемому ряду объектов прав интеллектуальной собственности и фактически разрешило патентовать программы. Соглашение ТРИПС обязательно для выполнения на территории Украины и России как государств — членов ВТО.

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

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

Действующим законодательством Российской Федерации не предусмотрено патентование компьютерных программ как таковых. Данные объекты интеллектуальной собственности охраняются авторским правом, которое возникает автоматически с момента их создания и не требуют обязательной государственной регистрации. Однако программы для ЭВМ и базы данных могут быть зарегистрированы в Роспатенте по желанию правообладателя[12].

Авторское и некоторые другие[какие?] права интеллектуальной собственности позволяют ограничивать доступ к исходным текстам программ.

  • Программное обеспечение
  • Утилита
  • Встроенное программное обеспечение
  1. ISO/IEC/IEEE 24765:2010 Systems and software engineering — Vocabulary
  2. ISO/IEC 2382-1:1993, Information technology — Vocabulary — Part 1: Fundamental terms
  3. ГОСТ 19781—90. ЕСПД. Термины и определения
  4. ст. 1261 «Программы для ЭВМ» ГК РФ
  5. Фельдман С. К. Системное программирование. Полный курс лекций с теоретическими материалами и лабораторными работами. — 2003. — 512 с. — ISBN 5-88548-096-6.
  6. Silberschatz, 1994, p. 97.
  7. Silberschatz, 1994, p. 100.
  8. Akhter Shameem. Multi-Core Programming. — Richard Bowles (Intel Press), 2006. — С. 11—13. — ISBN 0-9764832-4-6.
  9. Чибісов Д. М. Правова природа Угоди про торговельні аспекти прав інтелектуальної власності (ТРІПС) (укр.) // Науковий вісник Ужгородського національного університету. Серія «Право». — 2012. — № 19.
  10. Чибисов Д.М. Режимы охраны проприетарного цифрового контента (укр.) (8 апреля 2015). Дата обращения: 9 апреля 2015. Архивировано из оригинала 2 апреля 2015 года.
  11. Д.М. Чибисов. Проприетарный цифровой контент: основная характеристика. Блог (8 апреля 2015). Архивировано 12 июня 2018 года.
  12. Зимин В.А. Регистрация программ для ЭВМ в Российской Федерации. Дата обращения: 9 июня 2016. Архивировано 4 апреля 2016 года.
  • Silberschatz Abraham. Operating System Concepts, Fourth Edition. — Addison-Wesley, 1994. — С. 97. — ISBN 0-201-50480-4.
  • Knuth, Donald E. The Art of Computer Programming, Volume 1, 3rd Edition (англ.). — Boston: Addison-Wesley, 1997. — ISBN 978-0-201-89683-1.
  • Knuth, Donald E. The Art of Computer Programming, Volume 2, 3rd Edition (англ.). — Boston: Addison-Wesley, 1997. — ISBN 978-0-201-89684-8.
  • Knuth, Donald E. The Art of Computer Programming, Volume 3, 3rd Edition (англ.). — Boston: Addison-Wesley, 1997. — ISBN 978-0-201-89685-5.

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

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии
  • Монолариум инструкция по применению
  • Должностная инструкция инженера химика производственной лаборатории
  • Инструкция к фотоаппарату sony a65
  • Ингалипт инструкция спрей для носа
  • Аторвастатин реневал инструкция по применению взрослым таблетки