C) процесс выполнения вычислений, приводящих к решению задачи.
D) процесс решения задачи.
E) последовательность команд для ЭВМ.
177. Алгоритмы бывают:
A) аналоговые и цифровые.
B) микро-ЭВМ, мини-ЭВМ, аналоговые и цифровые.
D) служебные слова.
E) описательные, символические и цифровые.
178. Словесное описание чередующихся определенным образом элементарных актов переработки информации называется:
A) словесным алгоритмом.
B) символическим алгоритмом.
C) числовым алгоритмом.
179. Запись последовательности операций для решения задач в виде формул называется:
A) описательный алгоритм.
C) цифровой алгоритм.
D) символический алгоритм.
180. Отдельное указание исполнителю выполнить некоторое законченное действие называется:
D) языком программирования.
181. Слова, записываемые в сокращенной форме и делающие запись алгоритма более наглядной и единообразной, называются:
A) простыми командами.
ЕГЭ 18. Информатика. Задача на динамическое программирование (олимпиадная)
B) языком программирования.
D) служебными словами.
E) логическим элементом.
182. Система обозначений и правил для единообразной и точной записи алгоритмов и их исполнения называется:
B) алгоритмическим языком.
D) языком программирования.
E) системой счисления.
183. Слова, употребляемые для записи команд исполнителю того или иного алгоритма в виде повелительного предложения русского языка, называются:
A) служебными словами.
B) алгоритмическим языком.
C) простыми командами.
D) языком программирования.
184. Алгоритм, состоящий из одной серии последовательных простых команд, называется:
185. Пошаговая проверка выполнения программы с помощью контрольного примера называется:
C) отладкой программы.
D) написанием программы.
186. Форма записи алгоритма, при которой каждый этап решения задачи изображается в виде прямоугольника или другой геометрической фигуры, называется:
A) описательным алгоритмом.
B) символическим алгоритмом.
D) логической схемой.
E) аналоговой машиной.
187. Для решения задач, в которых требуется многократно повторять одни и те же действия, используется:
A) функциональный оператор.
B) разветвляющийся алгоритм.
C) циклический алгоритм.
E) логическая схема.
188. Линейный алгоритм:
А) содержит один или несколько циклов.
В) не содержит логических условий и имеет одну ветвь вычислений.
С) содержит одно или несколько логических условий.
D) не содержит вычислений.
Е) содержит несколько циклов.
189. Разветвляющийся алгоритм:
А) не содержит циклов.
В) не содержит логических условий и имеет одну ветвь вычислений.
С) содержит одно или несколько логических условий.
D) не содержит вычислений.
Е) содержит только одну последовательность простых команд.
190. Циклический алгоритм:
A) содержит один или несколько циклов.
№23 решаем задачу 6024 с сайта Полякова КЕГЭ . Рекурсия
B) не содержит логических условий и имеет одну ветвь вычислений.
C) содержит одно или несколько логических условий.
D) не содержит вычислений.
E) содержит только одну последовательность простых команд.
191. Команда, позволяющая проверить какое-то условиe и при выполнении этого условия выполняющая серию команд 1, а при невыполнении — серию команд — 2, называется:
A) функциональным оператором.
B) циклическим оператором.
192. Условные операторы выполняют следующие действия:
A) задают значение переменных.
B) меняют значения констант.
C) вычисляют значения математических выражений.
D) вычисляют логические выражения.
E) разветвляют алгоритмы и организуют их выполнение по одной из ветвей.
193. Условные операторы выполняют следующие действия:
A) вычисляют логические выражения.
B) выполняют последовательность операторов в зависимости от истинности условия.
C) организуют выполнение повторяемых действий.
D) организуют безусловные переходы в алгоритме.
E) соотносят переменным некоторые множества допустимых значений.
194. Блок-схема алгоритма – это:
A) самая наглядная и точная форма представления алгоритма в виде отдельных боков.
B) словесное описание последовательности действий.
C) цифровое указание на выполнение действий.
D) система правил, описывающая последовательность действий, которые необходимо выполнить для решения задачи.
E) процесс выполнения вычислений, приводящих к решению задачи.
195. Программа — это:
A) система правил, описывающая последовательность действий, которые необходимо выполнить для решения задачи;
B) указание на выполнение действий из заданного набора;
C) область внешней памяти для хранения текстовых, числовых данных и другой информации;
D) последовательность команд, реализующая алгоритм решения задачи;
E) словесное описание алгоритма.
196. Программой называется:
A) совокупность программных средств, обеспечивающих автоматизацию разработки и отладки программ
B) один из лучших учебных языков программирования для персональных компьютеров IBM PC
C) представление алгоритмов на языке программирования
D) величина, значение которой не меняется в процессе исполнения алгоритма
E) величина, значение которой меняется в процессе исполнения алгоритма
197. Файл EKG.txt находится на диске С в каталоге FISIKA. Укажите его полный путь:
198. Убрать панели с экрана программы NC можно нажав на клавиши:
199. Перевести курсор из одной панели в другую в программе NC можно нажав на клавиши:
200. Вывести на левой панели программы NC оглавление другого диска можно нажав на клавиши:
201. Вывести на правой панели программы NC оглавление другого диска можно, нажав на клавиши:
Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:
Источник: studopedia.ru
Процессы и потоки
Программа (program) – это последовательность команд, реализующая алгоритм решения задачи. Программа может быть записана на языке программирования (например, на Pascal , С++, BASIC); в этом случае она хранится на диске в виде текстового файла с расширением, соответствующим языку программирования (например, .PAS, . CPP , .VB). Также программа может быть представлена при помощи машинных команд; тогда она хранится на диске в виде двоичного исполняемого файла ( executable file ), чаще всего с расширением .EXE. Исполняемый файл генерируется из текста программы при компиляции.
Процесс (process) – это программа (пользовательская или системная) в ходе выполнения.
В современных операционных системах процесс представляет собой объект – структуру данных, содержащую информацию, необходимую для выполнения программы. Объект «Процесс» создается в момент запуска программы (например, пользователь дважды щелкает мышью на исполняемом файле) и уничтожается при завершении программы.
Если операционная система умеет запускать в одно и то же время несколько процессов, она называется многозадачной ( multitasking ) (пример – Windows ), иначе – однозадачной (пример – MS DOS ).
Процесс может содержать один или несколько потоков ( thread ) – объектов, которым операционная система предоставляет процессорное время . Сам по себе процесс не выполняется – выполняются его потоки. Таким образом, машинные команды, записанные в исполняемом файле, выполняются на процессоре в составе потока. Если потоков несколько, они могут выполняться одновременно.
Замечание. «Одновременное» (или «параллельное») выполнение потоков подразумевает одну из двух принципиально разных ситуаций, зависящих от количества процессоров (ядер) на компьютере. В том случае, если имеется всего один процессор с одним ядром, в один момент времени может выполняться только один поток . Однако операционная система может быстро переключать процессор с выполнения одного потока на другой и вследствие высокой частоты процессоров у пользователя возникает иллюзия одновременной работы нескольких программ. Такая ситуация называется псевдопараллельное выполнение потоков. Если в компьютере установлен многоядерный процессор или количество процессоров больше одного, то возможно истинно параллельное или просто параллельное выполнение потоков.
Операционные системы, поддерживающие несколько процессоров, называются многопроцессорными.
Если система допускает наличие нескольких потоков в одном процессе, она называется многопоточной ( multithreading ).
Многопоточность – это средство распараллеливания действий внутри процесса.
- В современных браузерах каждой вкладке соответствует свой поток.
- В текстовом редакторе один поток может управлять вводом текста, второй – проверять орфографию, третий – выводить документ на принтер.
- В компьютерной игре-стратегии за обработку действий каждого игрока отвечает отдельный поток.
Каждый процесс имеет свое собственное виртуальное адресное пространство (см. лекцию 11 » Управление памятью «), в котором независимо друг от друга работают все потоки процесса. Например, поток 1 может записывать данные в ячейку с адресом 100, а поток 2 читать данные из ячейки с адресом 101.
Замечание. Конечно, если два (или более) потоков захотят записать что-то свое в одну и ту же ячейку, возникнет неопределенность – кто раньше? Это одна из подзадач обширной проблемы синхронизации.
Каждый поток имеет свою область памяти – стек (stack), в которой хранятся, например, локальные переменные и параметры, передаваемые в функции. Кроме того, во время выполнения потока изменяются значения регистров процессора, которые при переключении на другой поток должны быть сохранены. Эта информация является частью контекста потока, поэтому при переключении потоков происходит переключение их контекстов (сохранение в память одного и загрузка другого).
Структуры данных для процессов и потоков
В WRK за управление процессами отвечает диспетчер процессов (basentosps), а многие важные структуры данных описаны в заголовочных файлах basentosincps.h и basentosincke.h.
Процесс в Windows описывается структурой данных EPROCESS [5]. Эта структура в WRK содержится в файле basentosincps.h (строка 238). Рассмотрим некоторые её поля.
- Pcb (Process Control Block – блок управления процессом) – представляет собой структуру KPROCESS , хранящую данные, необходимые для планирования потоков, в том числе указатель на список потоков процесса (файл basentosincke.h, строка 944).
- CreateTime и ExitTime – время создания и завершения процесса.
- UniqueProcessId – уникальный идентификатор процесса.
- ActiveProcessLinks – элемент двунаправленного списка (тип LIST_ENTRY ), содержащего активные процессы.
- QuotaUsage , QuotaPeak , CommitCharge – квоты (ограничения) на используемую память.
- ObjectTable – таблица дескрипторов процесса.
- Token – маркер доступа.
- ImageFileName – имя исполняемого файла.
- ThreadListHead – двунаправленный список потоков процесса.
- Peb (Process Environment Block – блок переменных окружения процесса) – информация об образе исполняемого файла (файл publicsdkincpebteb.h, строка 75).
- PriorityClass – класс приоритета процесса (см. лекцию 9 «Планирование потоков»).
Структура для потока в Windows называется ETHREAD и описывается в файле basentosincps.h (строка 545). Её основные поля следующие:
- Tcb (Thread Control Block – блок управления потоком) – поле, которое является структурой типа KTHREAD (файл basentosincke.h, строка 1069) и необходимо для планирования потоков.
- CreateTime и ExitTime – время создания и завершения потока.
- Cid – структура типа CLIENT_ID , включающая два поля – идентификатор процесса-владельца данного потока и идентификатор самого потока.
- ThreadsProcess – указатель на структуру EPROCESS процесса-владельца.
- StartAddress – адрес системной стартовой функции потока. При создании потока сначала вызывается системная стартовая функция, которая запускает пользовательскую стартовую функцию.
- Win32StartAddress – адрес пользовательской стартовой функции.
Создание процесса
Процессы создаются либо пользователем, либо другим процессом, либо автоматически при загрузке операционной системы.
Процесс, создавший другой процесс, называется родителем, а созданный процесс – потомком. Таким образом, формируется иерархия процессов.
Любой процесс начинает свою работу с основного (main), или первичного, потока, который может запускать (порождать) другие потоки – так образуется иерархия потоков.
В Windows для создания процессов применяется одна из следующих WinAPI-функций: CreateProcess, CreateProcessAsUser, CreateProcessWithTokenW, CreateProcessWithLogonW [10]. Далее при описании будем использовать функцию CreateProcess.
Создание процессов в Windows включает 7 этапов [5; 2].
1. Проверка и преобразование параметров.
Параметры функции CreateProcess проверяются на корректность и преобразуются к внутреннему формату системы.
2. Открытие исполняемого файла.
Происходит поиск файла, который содержит запускаемую программу. Обычно это файл с расширением .EXE, но могут быть также расширения . COM , . PIF , .BAT, . CMD . Определяется тип исполняемого файла:
- Windows приложение (.EXE) – продолжается нормальное создание процесса;
- приложение MS-DOS или Win16 (.EXE, .COM, .PIF) – запускается образ поддержки Ntvdm.exe;
- командный файл (.BAT, .CMD) – запускается образ поддержки Cmd.exe;
- приложение POSIX – запускается образ поддержки Posix.exe.
3. Создание объекта «Процесс».
Формируются структуры данных EPROCESS, KPROCESS, PEB , инициализируется адресное пространство процесса. Для этого вызывается системная функция NtCreateProcess ( файл basentospscreate.c, строка 826), которая затем вызывает функцию NtCreateProcessEx (тот же файл , строка 884), а та, в свою очередь , функцию PspCreateProcess (тот же файл , строка 1016).
Замечание. Начиная с Windows Vista при создании процесса вызов нескольких функций ( NtCreateProcess, NtWriteVirtualMemory, NtCreateThread ) заменен вызовом одной функции NtCreateUserProcess.
Рассмотрим некоторые важные действия, выполняемые функцией PspCreateProcess .
- Если в параметрах функции PspCreateProcess указан процесс-родитель:
- по его дескриптору определяется указатель на объект EPROCESS (функция ObReferenceObjectByHandle , строка 1076);
- наследуется от процесса родителя маска привязки к процессорам (Affinity, строка 1092).
4. Создание основного потока.
Формируется структура данных ETHREAD , стек и контекст потока, генерируется идентификатор потока. Поток создается при помощи функции NtCreateThread, определенной в файле basentospscreate.c, (строка 117), которая вызывает функцию PspCreateThread (тот же файл , строка 295). При этом выполняются следующие действия:
- создается объект ETHREAD (строка 370).
- Заполняются поля структуры ETHREAD , связанные с процессом-владельцем, – указатель на структуру EPROCESS (ThreadsProcess) и идентификатор процесса ( Cid.UniqueProcess ) (строки 396 и 398).
- Генерируется уникальный идентификатор потока (функция ExCreateHandle ) и сохраняется в поле Cid.UniqueThread структуры EPROCESS (строки 400–402).
- Заполняются стартовые адреса потока, системный ( StartAddress ) и пользовательский ( Win32StartAddress ) (строки 468-476).
- Инициализируются поля структуры KTHREAD при помощи вызова функции KeInitThread (строки 490–498 для потока пользовательского режима и 514–522 для потока режима ядра).
- Функция KeStartThread заполняет остальные поля структуры ETHREAD и вставляет поток в список потоков процесса (строка 564).
- Если при вызове функции PspCreateThread установлен флаг CreateSuspended («Приостановлен») поток переводится в состояние ожидания (функция KeSuspendThread , строка 660); иначе вызывается функция KeReadyThread (строка 809), которая ставит поток в очередь готовых к выполнению потоков (см. лекцию 9 «Планирование потоков»).
5. Уведомление подсистемы Windows.
Подсистеме Windows отправляется сообщение о вновь созданных процессе и его основном потоке, в которое входят их дескрипторы, идентификаторы и другая информация . Подсистема Windows добавляет новый процесс в общий список всех процессов и готовится к запуску основного потока.
6. Запуск основного потока.
Основной поток стартует, но начинают выполняться системные функции, завершающие создание процесса – осуществляется его инициализация .
7. Инициализация процесса.
- Проверяется, не запущен ли процесс в отладочном режиме;
- проверяется, следует ли производить предвыборку блоков памяти (тех участков памяти, которые при прошлом запуске использовались в течение первых 10 секунд работы процесса);
- инициализируются необходимые компоненты и структуры данных процесса, например, диспетчер кучи;
- загружаются динамически подключаемые библиотеки (DLL – Dynamic Link Library);
- начинается выполнение стартовой функции потока.
Резюме
В этой лекции введены понятия «процесса» и «потока». Рассмотрены структуры данных, представляющие в операционной системе процесс ( EPROCESS ) и поток ( ETHREAD ). Описан ход создания процесса с использованием структур данных и функций Windows Research Kernel .
Следующая лекция посвящена алгоритмам планирования потоков и реализации этих алгоритмов в Windows .
Контрольные вопросы
- Приведите определение понятий «программа», «процесс», «поток», «стек».
- Опишите основные поля структуры EPROCESS .
- Какой структурой является поле Pcb структуры EPROCESS ? Опишите поля этой структуры.
- Опишите основные поля структуры ETHREAD .
- Перечислите этапы создания процесса.
- Опишите этапы создания объекта «процесс».
- Опишите этапы создания основного потока.
Источник: intuit.ru
Тест с ответами по алгоритмизации и программированию
11. Выберите правильно представленные числовые данные на QBASIC:
1) +В, -14, 21.5Е2, 0.05+
12. Запись числа в форме с плавающей точкой — это экспоненциальная форма записи:
13. Если тип данных несет текстовую информацию, то он должен быть заключен в кавычки:
14. Арифметические выражения состоят из:
4) машинных команд
7) круглых скобок+
8) квадратных скобок.
15. Переменная — это:
1) служебное слово на языке QBASIC
2) область памяти, в которой хранится некоторое значение+
3) значение регистра.
16. Имя переменной — это:
1) любая последовательность любых символов
2) последовательность латинских букв, цифр, специальных знаков (кроме пробел)+
3) , которая всегда должна начинаться с латинской буквы
4) последовательность русских, латинских букв, начинающихся с латинской буквы и из специальных знаков, допускающая знак подчеркивания.
17. Для обозначения строковых переменных:
1) рядом с именем слева ставится знак $
2) рядом с именем справа ставится знак $+
3) имя переменной записывается в кавычках.
18. Для обозначения целочисленных переменных:
1) рядом с именем слева ставится знак %
2) рядом с именем слева ставится знак #
3) рядом с именем справа ставится знак %.+
19. Для обозначения действительных переменных с двойной точностью:
1) рядом с именем слева ставится знак #
2) рядом с именем справа ставится знак #+
3) рядом с именем справа ставятся знаки ##.
20. Верно ли утверждение? В написании имен допускаются как строчные (маленькие)
1) , так и заглавные (большие)
2) буквы и QBASIC не делает между ними различия:
Источник: testdoc.ru