Процессор прерываний (PIC)
Представьте, что сидите вы за компьютером и дуетесь в свой любимый Counter-Strike со знакомым из Австрии, с головой погрузившись в игровой процесс. Тут в самый "горячий" момент вас тревожит кто-нибудь из домочадцев с целью послать в магазин за кочаном капусты. Прерывают на самом интересном месте. Теперь помимо игры вас занимает еще и мысль о представившейся альтернативе: продолжать мочить "ненавистного врага" и потом получить нагоняй или бросить азартное занятие, крепко выругавшись (про себя), и с миром выполнить обязанность. Вы все же не решаетесь спорить и выключаете компьютер. Для вас важнее отношения с близкими, нежели виртуальные развлечения, т.е. приоритет отношений больше приоритета развлечений.
С процессором такая же катавасия. Если к нему приходит более важное прерывание (на прерывании указана степень его важности), то он откладывает свою задачу, предварительно запомнив место остановки программы, и переключается на выполнение другой обязанности. Но, предположим, задача выполнена. Вы вернулись из магазина и теперь самозабвенно стучите по клавишам, набирая очередную статью для IT журнала. Вдруг оглушительно звонит рядом стоящий телефон. Это ваш приятель Вася с дружеской просьбой. Надо бы распечатать один занимательный материальчик, найденный только что в Интернете, а у него, видите ли, чернила закончились. Назначим вашей проблеме со статьей приоритет пять. Его же задача расценивается вами как нечто, тянущее максимум на двойку. 2<5. Поэтому вы продолжаете марать электронные листы, отослав Васю на потом. Однако после завершения своих дел предстоит еще и распечатать документы товарища. То есть картина следующая: позвонил Вася и выставил ЗАПРОС (просьбу) на прерывание (чтобы вы занялись его проблемами). Он только попросил вас прерваться, а уж выполнять немедленно или не выполнять, оставив до лучших времен его просьбу, решать вам - центральному процессору. Другими словами, прерывание - это представитель куска программы у процессора и насколько этот представитель важный, настолько часто процессор будет обсчитывать соответствующий кусок кода. Всякий контролер наделен аппаратом, который позволяет им управлять извне или внутри. Для чего? Объясняю на примере. Щелкаете вы по клавишам, на экране формируются строчки текста, параллельно звучит музыка из динамиков. Допустим, десятой ячейке соответствует клавиатура, сотый коробок отвечает за монитор, а ноль - это звук. Контролер начинает работу с нулевой ячейки. Мы непрерывно бьем по "клаве" и тащимся от умопомрачительного рока (звучит гитарное соло). Теперь проследим ситуацию в деталях. Ударили по клавише - в коробке с десятым номером количество спичек изменилось. Надо выводить значение в 10-м коробке (клавиатура) в сотый коробок (монитор), а конролер где-то там ползает. Что же получается? Вы со злостью все стучите и стучите по кнопке, а на мониторе никаких изменений. Да еще в нулевую ячейку звук надо выводить. Можно было бы зациклить процессор на вывод в звуковую ячейку данных из массива других ячеек (например, с 30 по 40), но тогда процессор кроме звука ничем иным заниматься не сможет. А теперь представим, что при нажатии на клавишу на ножку процессора подается напряжение и он, бросая все дела, мчится выполнять клавиатурную команду. Это внешнее прерывание. Что касается звука. У процессора есть встроенный таймер. При достижении таймером какого-либо значения происходит срабатывание. Заложил программист срабатывание 1000 раз в секунду, конролер 1000 раз в секунду будет подрываться к определенным коробкам, закрепленным за таймером, выполнять код. В примере, описанном выше, будет звучать музыка, в других случаях - происходить еще что-то. Но у нас о звуке и клавиатуре складывается впечатление, что они работают непрерывно. Вот это уже внутренне прерывание (я о звуке).
Оперативная память предназначена для временного хранения данных, результатов вычислений и других "продуктов жизнедеятельности" компьютера для быстрого доступа к ним со стороны запрашивающих устройств. Данные в ней "живут" пока она питается электроэнергией. При выключении компьютера, вся информации, находящаяся в оперативной памяти, теряется. Операционная система (ОС) и управляющие программы перед закрытием и выходом записывают все необходимые параметры в постоянную память, а затем при загрузке восстанавливают. Поэтому при выходе из системы следует производить штатное завершение ее работы. Если вы просто отключитесь от сети, ОС не успеет сохранить все данные из оперативной памяти. С аппаратной частью ПК ничего не случится, а вот результаты трудов вашей деятельности и служебные данные операционной системы могут пострадать. При покупке оперативной памяти учтите, что ее никогда не бывает слишком много, а из-за ее нехватки работа за компьютером будет не такой комфортной. Сейчас минимумом для нормальной работы за персональным компьютером в современной ОС и отвечающих требованиям сегодняшнего дня приложениях является 512 Mb памяти. Но лучше всегда иметь резерв: 1024 Mb - достаточно, но пока не эффективно. Не забывайте также про наличие различных спецификаций у микросхем памяти. От этих технологических норм будет зависеть производительность системы. Современная память DDR SDRAM (симметричная динамическая память с двойной частотой работы). PC3200 (400 МГц) PC2-5300 (PC6300) (800MГц). Чем быстрее работает оперативная память, тем быстрее сама архитектура. Но если стоит выбор между количеством памяти и её скоростью лучше выбирать количество.
Видеоадаптеры. Для подключения монитора к компьютеру служат видеоадаптеры (видеокарты), осуществляющие формирование сигнала для отображения на дисплее области памяти с данными об изображении и синхронизирующими сигналами - горизонтальной и (строчной) и вертикальной (кадровой) развертки. В настоящее время широко используется стандарт SVGA (Super Video Graphics Array). Видеоустройства, поддерживающий стандарт SVGA (все современные), способны отображать до 16,8 миллионов цветов и обеспечивают максимально качественное изображение, приближенное к натуральному. На подходе XVGA. Решающим при выборе является стыковка видеокарты с системной платой. Объем памяти на видеоадаптере зависит от разрешения вашего монитора и приложений. Для быстрых игр на мониторе 17’ (1024*768) достаточно 128Mb, для больших разрешений 256.
Жесткий диск (HDD - hard disk drive) в обиходе называют "винчестером". Это то хранилище, куда операционная система и запущенные программы помещают результаты своих трудов, различную служебную информацию и параметры работы. В отличие от оперативной памяти винчестеры гарантируют долговременное хранение информации, для чего не требуется постоянное питание компьютера от внешнего источника электроэнергии. Для записи данных в жестких дисках используется магнитный слой. Он покрывает диски, вращающиеся внутри винчестера с огромными скоростями. Вдоль дисков перемещаются головки чтения/записи. Жесткий диск является продуктом высоких технологий и требует к себе бережного отношения. Повредить магнитный слой или магнитную головку особых трудов не составляет, а восстановить информацию с поврежденных секторов - вот это проблема.
Глава 3
Процессы и потоки
Фундаментальным понятием для изучения работы операционных систем является понятие процессов как основных динамических объектов, над которыми системы выполняют определенные действия. Данная лекция посвящена описанию таких объектов, их состояний и свойств, их представлению в вычислительных системах, а также операциям, которые могут проводиться над ними.
Почему используется термин процесс, а не задание или программа? Это происходит потому, что термины «программа» и «задание» предназначены для описания статических, неактивных объектов. Программа же в процессе исполнения является динамическим, активным объектом. По ходу ее работы компьютер обрабатывает различные команды и преобразует значения переменных. Для выполнения программы операционная система должна выделить определенное количество ячеек оперативной памяти, закрепить за ней определенные устройства ввода-вывода или файлы (откуда должны поступать входные данные и куда нужно доставить полученные результаты), то есть зарезервировать определенные ресурсы из общего числа ресурсов всей вычислительной системы. Их количество и конфигурация с течением времени могут изменяться. Для описания таких активных объектов внутри компьютерной системы вместо терминов «программа» и «задание» мы будем использовать новый термин – «процесс».
Понятие процесса характеризует некоторую совокупность набора исполняющихся команд, ассоциированных с ним ресурсов (выделенная для исполнения память или адресное пространство, стеки, используемые файлы и устройства ввода-вывода и т. д.) и текущего момента его выполнения (значения регистров, программного счетчика, состояние стека и значения переменных), находящуюся под управлением операционной системы. Не существует взаимно-однозначного соответствия между процессами и программами, обрабатываемыми вычислительными системами. Как будет показано далее, в некоторых операционных системах для работы определенных программ может организовываться более одного процесса или один и тот же процесс может исполнять последовательно несколько различных программ. Более того, даже в случае обработки только одной программы в рамках одного процесса нельзя считать, что процесс представляет собой просто динамическое описание кода исполняемого файла, данных и выделенных для них ресурсов. Процесс находится под управлением операционной системы, поэтому в нем может выполняться часть кода ее ядра (не находящегося в исполняемом файле), как в случаях, специально запланированных авторами программы (например, при использовании системных вызовов), так и в непредусмотренных ситуациях (например, при обработке внешних прерываний).
Процесс включает в себя: контекст пользователя, контекст системный, регистровый контекст.
Состояния процесса
При использовании такой абстракции все, что выполняется в вычислительных системах (не только программы пользователей, но и, возможно, определенные части операционных систем), организовано как набор процессов. Понятно, что реально на однопроцессорной компьютерной системе в каждый момент времени может исполняться только один процесс. Для мультипрограммных вычислительных систем псевдопараллельная обработка нескольких процессов достигается с помощью переключения процессора с одного процесса на другой. Пока один процесс выполняется, остальные ждут своей очереди.
Как видим, каждый процесс может находиться как минимум в двух состояниях: процесс исполняется и процесс не исполняется. Диаграмма состояний процесса в такой модели изображена на рисунке
Рис. 21 Простейшая диаграмма состояний процесса
Процесс, находящийся в состоянии процесс исполняется, через некоторое время может быть завершен операционной системой или приостановлен и снова переведен в состояние процесс не исполняется. Приостановка процесса происходит по двум причинам: для его дальнейшей работы потребовалось какое-либо событие (например, завершение операции ввода-вывода) или истек временной интервал, отведенный операционной системой для работы данного процесса.
Это очень грубая модель, она не учитывает, в частности, то, что процесс, выбранный для исполнения, может все еще ждать события, из-за которого он был приостановлен, и реально к выполнению не готов. Для того чтобы избежать такой ситуации, разобьем состояние процесс не исполняется на два новых состояния: готовностьиожидание
Рис. 22 Более подробная диаграмма состояний процесса
Всякий новый процесс, появляющийся в системе, попадает в состояние готовность. Операционная система, пользуясь каким-либо алгоритмом планирования, выбирает один из готовых процессов и переводит его в состояние исполнение. В состоянии исполнение происходит непосредственное выполнение программного кода процесса. Выйти из этого состояния процесс может по трем причинам:
- операционная система прекращает его деятельность;
- он не может продолжать свою работу, пока не произойдет некоторое событие, и операционная система переводит его в состояние ожидание;
- в результате возникновения прерывания в вычислительной системе (например, прерывания от таймера по истечении предусмотренного времени выполнения) его возвращают в состояние готовность.
Наша новая модель хорошо описывает поведение процессов во время их существования, но она не акцентирует внимания на появлении процесса в системе и его исчезновении. Для полноты картины нам необходимо ввести еще два состояния процессов: рождение и закончил исполнение
Рис 23 Диаграмма состояний процесса, принятая в курсе
Теперь для появления в вычислительной системе процесс должен пройти через состояние рождение. При рождении процесс получает в свое распоряжение адресное пространство, в которое загружается программный код процесса; ему выделяются стек и системные ресурсы; устанавливается начальное значение программного счетчика этого процесса и т. д. Родившийся процесс переводится в состояние готовность. При завершении своей деятельности процесс из состояния исполнение попадает в состояние закончил исполнение.
В конкретных операционных системах состояния процесса могут быть еще более детализированы, могут появиться некоторые новые варианты переходов из одного состояния в другое. Так, например, модель состояний процессов для операционной системы Windows NT содержит 7 различныхсостояний, а для операционной системы Unix (Linux) количество состояний - 9. Тем не менее, так или иначе, все операционные системы подчиняются изложенной выше модели.
Рис24. Диаграмма процесса Windows
Дата добавления: 2017-06-13; просмотров: 1436;