Окно – прямоугольная часть экрана, ограниченная рамкой. 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Окно – прямоугольная часть экрана, ограниченная рамкой.



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

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

Окна можно закрывать, перемещать, изменять их размеры, свертывать в кнопки на панели задач или развертывать на весь экран.

Основные виды окон: диалоговое окно, окно папки, окно справочной системы, окно программы, окно документа.

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

Диалоговые окна могут содержать следующие элементы управления:

  • Вкладки (закладки) – предназначены для выполнения некоторых команд в окне;
  • Кнопка – элемент управления, который предназначен для выполнения команд. По форме кнопка может быть прямоугольником с надписью или значком с рисунком. Во многих приложениях используются подсказки, они появляются в виде текста в рамке, если на кнопку навести указатель мыши;
  • Надпись со статическим текстом обычно используется для вывода заголовков.
  • Поле ввода текста – элемент управления, предназначенный для ввода и редактирования данных. Вводимый текст может быть длиннее стороны прямоугольника, ограничивающего поле, т.е. может быть похож на бегущую строку;
  • Счетчик – элемент управления, предназначенный для изменения числового значения, выводимого в поле. Счетчик состоит из двух кнопок - для увеличения или уменьшения;
  • Поле со списком – позволяет выбрать элемент из списка или ввести данные вручную. Текущее значение отображается в поле, а список возможных значений раскрывается при нажатии кнопки со стрелкой;
  • Переключатели – используются для предоставления возможности выбора одного варианта из нескольких (многих). В одной группе переключателей можно выбрать только один;
  • Флажок – используется для выбора одной или нескольких позиций из предложенного списка. Представляет из себя квадратик, который пользователь может пометить галочкой. Для отмены действия достаточно повторно щелкнуть мышью в квадратике.
  • Ползунок – устанавливает одну из позиций на шкале перемещением движка.
  • Окно справочной системы – окно, которое выводит справочную информацию о том объекте, с которым работает пользователь.
  • Окно папки – предназначено для отображения содержимого папки и для выполнения операций над объектами, содержащимися в папке;
  • Окно программы – предназначено для отображения функции конкретной программы;
  • Окно документа – предназначены для работы с документами и “живут” внутри окон программ.

13. Общие принципы.

 

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

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

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

Маскируемые прерывания вызываются переходом в высокий уровень сиг­нала на входе INTR (Interrupt Request) при установленном флаге разрешения (IF=1). В этом случае процессор сохраняет в стеке регистр флагов, сбрасы­вает флаг IF и вырабатывает два следующих друг за другом (back to back) цикла подтверждения прерывания, в которых генерируются управляющие сиг­налы INTA# (Interrupt Acknowledge). Высокий уровень сигнала INTR должен сохраняться по крайней мере до подтверждения прерывания. Первый цикл подтверждения холостой, по второму импульсу внешний контроллер прерыва­ний передает по шине номер вектора, обслуживающего данный тип аппарат­ного прерывания. Прерывание с полученным номером вектора выполняется процессором так же, как и программное. Обработка текущего прерывания может быть в свою очередь прервана немаскируемым прерыванием, а если обработчик установит флаг IF, то и другим маскируемым аппаратным прерыванием.

Немаскируемые прерывания выполняются независимо от состояния флага IF по сигналу NMI (Non Mascable Interrupt). Высокий уровень на этом входе вы­зовет прерывание с типом (вектором) 2, которое выполняется так же, как и маскируемое. Его обработка не может прерываться под действием сигнала на входе NMI до выполнения команды IRET.

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

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

Ловушка (trap) — это исключение, которое обнаруживается и обслуживает­ся после выполнения инструкции, его вызывающей. После обслуживания этого исключения управление возвращается на инструкцию, следующую за вызвав­шей ловушку. К классу ловушек относятся и программные прерывания.

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

 

Обработка прерываний и исключений в защищенном режиме базируется на таблице дескрипторов прерываний (шлюзов прерываний) IDT – адрес начала и размер которой хранятся в регистре IDTR. Его формат аналогичен формату регистра GDTR (рис. 4.1).

Таблица прерываний может содержать до 256 дескрипторов. При попытке обслуживания прерывания с номером, выходящим за размер таблицы, генери­руется исключение #DF. Под исключения отданы первые 32 номера (0 ¸31).

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

Векторы маскируемых прерываний определяются аппаратно. Контроллеры внешних прерываний (например, Intel 8259, программируемый контроллер прерываний) передают вектор на шину процессора во время цикла квитирования прерывания. Использоваться могут любые векторы в диапазоне значений от 32 до 255. В реальном режиме диапазон номеров для обработки аппаратных прерываний находился: IRQ0¸IRQ7 номера прерываний 08h¸0Fh и IRQ8¸IRQ15 – 70h¸77h. В связи с тем, что, как отмечалось выше, первые 32 номера заняты под исключения, возникает необходимость перепрограммировать контроллер прерываний на другие номера. Изначальным программирование контроллера для реального режима занимается BIOS. Итого в защищенном режиме остается 208 номеров под программные прерывания. Назначения векторов исключений и прерываний показаны в Таблице 4.1.

1 В реальном режиме — вектор прерывания не попадает в таблицу.

2 В реальном режиме не возникают, но возможны в V86.

3 В реальном режиме — нарушение границы сегмента стека.

4 В реальном режиме — нарушение границы сегмента данных или кода.

 

Таблица 4.1 Назначения векторов исключений и прерываний

При обработке прерывания нужно выполнить следующую последовательность действий:

1) восприятие запроса на прерывание;

2) запоминание состояния прерванного процесса (значение счетчика команд, содержимое регистров общего назначения, режим работы ЦП и т.д.);

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

4) обработка прерывания;

5) восстановление нормальной работы.

 

14. 2.1.1 Понятие процесса

Процесс (задача) - программа, находящаяся в режиме выполнения.

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

Адресное пространство содержит:

  • саму программу
  • данные к программе
  • стек программы

С каждым процессом связывается набор регистров, например:

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

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

Некоторые поля таблицы:

Регистры Счетчик команд Указатель стека Состояние процесса Приоритет Параметры планирования Идентификатор процесса Родительский процесс Группа процесса Время начала процесса Использованное процессорное время Указатель на текстовый сегмент Указатель на сегмент данных Указатель на сегмент стека Корневой каталог Рабочий каталог Дескрипторы файла Идентификатор пользователя Идентификатор группы

 

Создание процесса
Операционным системам необходим какой-нибудь способ для создания процессов. В самых простых системах, или в системах, сконструированных для запуска только одного приложения (например, в контроллере микроволновой печи), появляется возможность присутствия абсолютно всех необходимых процессов при вводе системы в действие. Но в универсальных системах нужны определенные способы создания и прекращения процессов по мере необходимости.
Существуют четыре основных события, приводящие к созданию процессов:
Инициализация системы.
Выполнение работающим процессом системного вызова, предназначенного для создания процесса.
Запрос пользователя на создание нового процесса.
Инициация пакетного задания.
При запуске операционной системы создаются, как правило, несколько процессов. Некоторые из них представляют собой высокоприоритетные процессы, то есть процессы, взаимодействующие с пользователями и выполняющие для них определенную работу. Остальные являются фоновыми процессами, не связанными с конкретными пользователями, но выполняющими ряд специфических функций. Например, фоновый процесс, который может быть создан для приема входящих сообщений электронной почты, основную часть времени проводит в спящем режиме, активизируясь только по мере появления писем. Другой фоновый процесс, который может быть создан для приема входящих запросов на веб-страницы, размещенные на машине, просыпается при поступлении запроса с целью его обслуживания. Фоновые процессы, предназначенные для обработки какой-либо активной деятельности, связанной, например, с электронной почтой, веб-страницами, новостями, выводом информации на печать и т. д., называются демонами. Обычно у больших систем насчитываются десятки демонов. В UNIX для отображения списка запущенных процессов может быть использована программа ps. В Windows для этой цели может быть использован диспетчер задач.
Вдобавок к процессам, созданным во время загрузки, новые процессы могут быть также созданы и после нее. Часто бывает так, что работающий процесс осуществляет системный вызов для создания одного или более новых вспомогательных процессов. Создание новых процессов особенно полезно, когда выполняемая работа может быть легко выражена в понятиях нескольких связанных друг с другом, но в остальном независимых друг от друга взаимодействующих процессов. Например, если для последующей обработки из сети выбирается большой объем данных, наверное, будет удобно создать один процесс для выборки данных и помещения их в общий буфер, чтобы в то же самое время второй процесс забирал элементы данных и проводил их обработку. Также можно ускорить выполнение работы, если на многопроцессорной системе разрешить каждому процессу работать на разных центральных процессорах.
В интерактивных системах пользователи могут запустить программу вводом команды или щелчком (двойным щелчком) на значке. Любое из этих действий дает начало новому процессу и запускает в нем выбранную программу. В основанных на применении команд UNIX-системах с работающей Х-оболочкой новый процесс получает окно, в котором он был запущен. При запуске в Microsoft Windows процесс не имеет окна, но он может создать одно или несколько окон, и в большинстве случаев так и происходит. В обеих системах пользователи могут иметь одновременно открытыми несколько окон, в каждом из которых запущен какой-нибудь процесс. Используя мышь, пользователь может выбрать окно и взаимодействовать с процессом: например, если потребуется, вводить данные.
Последнее событие, приводящее к созданию процесса, применимо только к системам пакетной обработки данных, имеющимся на больших универсальных машинах. Здесь пользователи могут отправлять системе пакетные задания (возможно, с помощью удаленного доступа). Когда операционная система решает.
что у нее достаточно ресурсов для запуска еще одного задания, она создает новый процесс и запускает новое задание из имеющейся у нее очереди входящих заданий.
С технической точки зрения во всех этих случаях новый процесс создается за счет уже существующего процесса, который выполняет системный вызов, предназначенный для создания процесса. Этим процессом может быть работающий пользовательский процесс, системный процесс, вызванный событиями клавиатуры или мыши, или процесс управления пакетными заданиями. Этот процесс осуществляет системный вызов для создания нового процесса. Этот системный вызов предписывает операционной системе создание нового процесса и прямо или косвенно указывает, какую программу в нем запустить.
В UNIX существует только один системный вызов для создания нового процесса — fork. Этот вызов создает точную копию вызывающего процесса. После выполнения системного вызова fork два процесса, родительский и дочерний, имеют единый образ памяти, единые строки описания конфигурации и одни и те же открытые файлы. И больше ничего. Обычно после этого дочерний процесс изменяет образ памяти и запускает новую программу, выполняя системный вызов execve или ему подобный. Например, когда пользователь набирает в оболочке команду sort, оболочка создает ответвляющийся дочерний процесс, в котором и выполняется команда sort. Смысл этого двухступенчатого процесса заключается в том, чтобы позволить дочернему процессу управлять его файловыми дескрипторами после разветвления, но перед выполнением execve с целью выполнения перенаправления стандартного ввода, стандартного вывода и стандартного вывода сообщений об ошибках.
В Windows все происходит иначе: одним вызовом функции Win32 CreateProcess создается процесс, и в него загружается нужная программа. У этого вызова имеется 10 параметров, включая выполняемую программу, параметры командной строки для этой программы, различные параметры безопасности, биты, управляющие наследованием открытых файлов, информацию о приоритетах, спецификацию окна, создаваемого для процесса (если оно используется), и указатель на структуру, в которой вызывающей программе будет возвращена информация о только что созданном процессе. В дополнение к функции CreateProcess в Win32 имеется около 100 других функций для управления процессами и их синхронизации, а также всем, что с этим связано.
В обеих системах, и в UNIX и в Windows, после создания процесса родительский и дочерний процессы обладают своими собственными, отдельными адресными пространствами. Если какой-нибудь процесс изменяет слово в своем адресном пространстве, другим процессам эти изменения не видны. В UNIX первоначальное состояние адресного пространства дочернего процесса является копией адресного пространства родительского процесса, но это абсолютно разные адресные пространства — у них нет общей памяти, доступной для записи данных (некоторые реализации UNIX делят между процессами текст программы без возможности его модификации). Тем не менее вновь созданный процесс может делить со своим создателем часть других ресурсов, например открытые файлы. В Windows адресные пространства родительского и дочернего процессов отличаются с самого начала.

 

поток — это последовательность или цикл управления в процессе.

Понятие потока

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

 

Сравнение многопоточной системы с однопоточной

Модель потока

С каждым потоком связывается:

· Счетчик выполнения команд

· Регистры для текущих переменных

· Стек

· Состояние

Потоки делят между собой элементы своего процесса:

· Адресное пространство

· Глобальные переменные

· Открытые файлы

· Таймеры

· Семафоры

· Статистическую информацию.

В остальном модель идентична модели процессов.

В POSIX и Windows есть поддержка потоков на уровне ядра.

В Linux есть новый системный вызов clone для создания потоков, отсутствующий во всех остальных версиях системы UNIX.

В POSIX есть новый системный вызов pthread_create для создания потоков.

В Windows есть новый системный вызов Createthread для создания потоков.

 



Поделиться:


Последнее изменение этой страницы: 2017-02-05; просмотров: 354; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.144.98.13 (0.032 с.)