Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Понятия вычислительного процесса и ресурса
Понятие «вычислительный процесс» - Под процессом обычно понимается последовательность операций при выполнении программы или ее части в совокупности с используемыми данными.
Программа – это план действий, а процесс – это само действие, поэтому понятие процесса включает программный код, данные, содержимое стека, содержимое адресного и других регистров процессора. Таким образом, для одной программы могут быть созданы несколько процессов в том случае, если с помощью одной программы в центральном процессоре выполняется несколько несовпадающих последовательностей команд.
По временным характеристикам различают интерактивные процессы, пакетные процессы и процессы реального времени. По генеалогическому признаку различают порождающие и порожденные процессы. По времени развития процессы делятся на последовательные, параллельные и комбинированные (для последних есть точки, в которых существуют оба процесса, и точки, в которых существует только один процесс). По принадлежности к операционной системе процессы бывают системные (исполняют программу из состава операционной системы) и пользовательские. Примерами процессов являются прикладные программы пользователей, утилиты и другие системные обрабатывающие программы. Процессами могут быть редактирование какого-либо текста, трансляция исходной программы, ее компоновка, исполнение. Концепция процесса – управление ресурсами. Ресурс – это любой потребляемый (расходуемый) объект. По запасам ресурсы подразделяются на исчерпаемые и неисчерпаемые. Потребители ресурсов – процессы. Русурсы пример: некоторые аппартные устройства ВМ (процессоры, запоминающие устройства, устройства ввода-вывода) или некоторые наборы информации (в частности, совокупности записей определенной структуры – так называемые «файлы»). Многозадачную систему с точки зрения выполняемой среды можно разделить на три уровня: • пользователя (в нем задача представляется в виде последовательно • ядра, на котором происходит управление доступом программы к • аппаратный, на котором осуществляется решение задачи на физическом уровне. . Потоки – легковесные подпроцессы, которые будут выполняться параллельно с другими подобными «подпроцессами», и у пользователя появляется возможность параллельно выполнять несколько операций в рамках одного приложения (процесса).
Все достоинства потоков по сравнению с процессами связаны с наличием общей области памяти: • экономия внешней и внутренней памяти; • быстрый обмен данными между потоками; • контекст потока укороченный; • упрощение отладки программ, состоящих из потоков. • в отличие от независимого процесса присоединяемый поток должен быть откомпилирован заново со всеми потоками, имеющими ту же • неправильно работающий поток через общую область памяти может испортить все остальные потоки.
Макросы и подпрограммы - повторяющиеся совокупности программных кодов заменяются именем той или другой структуры, что дает возможность не только оптимизировать написание программы, но и улучшить ее «читабельность» Когда в программе встречается имя макроса, компилятор вставляет его коды, но Таким образом, после компиляции длина объектных кодов будет такой же, как если бы мы не применяли макросы, а писали программу обычным способом. Подпрограмма же выполняется в своем окружении, т. е. при ее вызове происходит скачок в другую область памяти. Если не предпринять специальные меры по возвращению в вызываемую программу, то в указанном окружении придется находиться до ближайшей дежурной перезагрузки системы. Оператор CALL легко улаживает эту проблему, запоминая при вызове подпрограммы адрес возврата, который записывается в стек. Стек выбран в данном случае средой исполнения как самая быстрая структура, что поддерживается скоростными качествами операций push (заталкивание в стек) и pop (выталкивание из стека). Указатель стека при запоминании адреса возврата уменьшается: • при ближнем вызове на 2 байта (запоминается только счетчик команд); • при дальнем вызове на 4 байта (запоминается счетчик команд и • при дальнем вызове и запоминании регистра флагов на 6 байта.
Однако CALL не решает проблемы с передачей параметров в подпрограмму и при ее написании на ассемблере об этом должен побеспокоиться автор программы. Напротив, механизм передачи параметров легко вписывается в макросы, и на ассемблере это будет выглядеть следующим образом: <Имя_подпрограммы пар1,пар2...>. Говоря другими словами, то, что на языке высокого уровня называется подпрограммой, по виду напоминает макрос. Include <stdlib.h> #include <conio.h> #include <dos.h> void summator(int I, int k); void main(void) - подпрогрмма { int I, k; I=k=2; summator(I,k); } void summator(int I, int k)
Разделение памяти на виртуальную и физическую стало одним из тех решений, которые привели, в конечном счете, к массовому программированию, но в то же время оно потребовало введения процедуры, которую можно назвать связыванием информации. Сутью данной операции является связывание имени переменной с физической областью, в которой хранятся значения данных. При этом если имя переменной указывает на сложный объект, то целесообразней осуществлять к нему доступ по указателю, так как это имеет несколько преимуществ: • указатель независимо от размера объекта имеет фиксированную длину; • указатель может использоваться для контроля доступа (например, для подсчета количества доступов); • через указатель можно осуществить доступ к другому объекту без компиляции. • доступ к объекту пользователей с разными полномочиями можно осуществить через разные указатели (например, одни пользователи могут читать и редактировать файл, другие - только читать). Связывание информации за редким исключением может происходить на любом этапе обработки программы. Создание программы. На этапе написания программного продукта связывание информации можно осуществить, если создать эту программу непосредственно в машинных кодах. Такие программы быстро работают и не нуждаются в дальнейшей обработке. Но машинные коды являются аппаратно-зависимыми. Поэтому требуют знания команд конкретного процессора и непереносимы на другую машину. Трансляция. На этапе трансляции исходный программный код преобразуется в объектные коды. Существует два типа трансляторов: компиляторы и интерпретаторы. Компиляторы транслируют в объектные коды исходную программу «целиком». Подавляющее большинство языков программирования имеют компиляторы. На этапе компиляции связывание информации происходит. Интерпретаторы переводят с языка программирования в коды, понятные машине, по одной «фразе», конец которой в классическом понимании определяется нажатием клавиши «Enter». К языкам, имеющим интерпретаторы, относятся, например, Бейсик и Java. На этапе интерпретации осуществляется связывание информации. Линковка. При линковке на основе откомпилированных программ строится исполняемый файл. Это единственный этап обработки, на котором не происходит связывание данных. Запуск исполняемого файла. Сначала происходит связывание информации, и только после этого файл выполняется. Связывание данных осуществляется за 2 прохода. При первом проходе заполняются таблицы определения (компонентами каждой строки в этих таблицах являются имена переменных и их виртуальных адресов) и таблицы использования (в них содержатся имена переменных, которые используются в данном модуле, но описаны в другом). Эти таблицы содержат достаточно информации для того, чтобы при втором проходе в каждой команде заменить виртуальные адреса на физические. При этом виртуальные адреса могут быть либо непосредственно преобразованы в физические адреса, либо опосредовано с использованием диспетчера памяти.
Выполнение программы. При выполнении программы часто возникает необходимость «позаимствовать» из динамической памяти некоторый раздел памяти, и затем вернуть его, не дожидаясь окончания программы. При этом связывание информации происходит при первом появлении динамической переменной в силу особенности операторов выделения динамической памяти. Однако при следующих появлениях этой переменной указанные операторы уже не могут помочь. Один из вариантов решения этой проблемы - это составить связанный словарь, в котором каждой динамической переменной соответствует ее физический адрес. Эту таблицу целесообразно заполнять при первом появлении переменной и затем использовать при последующих. В программе могут также использоваться динамические библиотеки (DLL), которые подключаются во время выполнения программы. Если при включении статической библиотеки программе предоставляется ее копия, то динамическая библиотека может быть общей для нескольких задач. При этом экономится память системы за счет некоторого замедления выполнения программы.
|
|||||||
Последнее изменение этой страницы: 2016-12-30; просмотров: 640; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 13.58.77.98 (0.008 с.) |