Взаимодействие процессора и оперативной памяти компьютера



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

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

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

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

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

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

¨ перемещает блок информации из оперативной памяти в регистры процессора;

¨ перемещает блок информации из регистров процессора в оперативную память компьютера;

¨ получает блок информации извне через один из портов и помещает ее в регистр процессора;

¨ выводит блок информации из регистра процессора через один из портов во внешнюю среду;

¨ инициирует операцию вычисления, выполняемую процессором: операция совершается над величинами, хранящимися в регистрах процессора, и результат помещается в другие или те же регистры;

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

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

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

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

Для характеристики компьютера очень важна разрядность шины адреса. Например, у прежних персональных компьютеров использовалась 20-разрядная шина адреса. Максимальный адрес, который можно послать по такой шине, равен 220-1 = 1Мб, то есть байту оперативной памяти с адресом большим 1Мб предписание по шине адреса отправить невозможно. В таких компьютерах объем оперативной памяти принципиально не мог быть больше 1Мб. В процессорах этих компьютеров использовалась специальная система определения адреса, ориентированная на такое ограничение. В результате все программы, написанные в то время, предусматривали адреса до 1Мб.

Современные персональные компьютеры включают 32-разрядную шину адреса. При такой шине максимальный объем оперативной памяти равен 232=4Гб. Пока этого достаточно, однако уже существуют компьютеры с 64-разрядной шиной адреса. При 32-разрядной шине можно обратиться к любому байту оперативной памяти в пределах 4Гб. Новые программы так и делают. Однако, к сожалению, необходимо предусмотреть возможность выполнения программ, написанных для старых процессоров. Поэтому в современных процессорах предусмотрены два режима работы: один режим, называемый реальным, имитирует работу старых процессоров, и в этом режиме осуществляется доступ только к 1Мг оперативной памяти; другой режим, называемый защищенным, имеет доступ ко всей оперативной памяти.

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

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

Машинная команда

В 1943г. в США была создана первая электронная вычислительная машина – Марк-1. Более удачный вариант – машина ЭНИАК – был создан в 1945г. К работе над ней был привлечен немецкий ученый Джон фон Нейман, который сформулировал основные принципы построения универсальных вычислительных машин. На этих принципах до сих пор строятся все компьютеры. В число этих принципов входит разделение устройств хранения информации и процессора, организация обмена с внешней средой, адресация памяти и т.д.:

¨ компьютер компонуется из нескольких основных устройств;

¨ для хранения информации используется специальное запоминающее устройство;

¨ данные представлены в запоминающем устройстве в форме двоичных чисел;

¨ арифметические и логические операции выполняются арифметико-логическим устройством;

¨ выполнение программ в вычислительной машине контролируется устройством управления;

¨ программа, задающая работу компьютера, хранится в том же запоминающем устройстве, в котором хранятся данные (принцип хранимой программы);

¨ для ввода и вывода информации используются отдельные устройства ввода-вывода.

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

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

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

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

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

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

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

Машинная программа.

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

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

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

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

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

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

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

¨ текущая программа застывает на очередной команде и переходит в пассивное состояние;

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

¨ в оперативной памяти отыскивается незанятый участок, достаточный для размещения подпрограммы, и она переписывается на этот участок;

¨ создается окружение подпрограммы, оно становится текущим для процессора, заполняются необходимыми данными регистры процессора;

¨ управление передается подпрограмме, для чего в адресный регистр просто записывается адрес первой команды программы (точнее, его смещение; базовый адрес заполняется на предыдущем этапе);

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

¨ место подпрограммы в оперативной памяти освобождается, то есть считается впредь незанятым;

¨ программа продолжает работать с той команды, на которой она остановилась.

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

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

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

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

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

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

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

При наличии определенной операционной системы на компьютере работает одна программа – ядро этой операционной системы. Все прочие программы, в том числе и пользовательские, являются ее подпрограммами. Ядро операционной системы решает, какую программу запустить, как разместить программы и данные и т.д. Однако в конечном итоге ядро операционной системы управляется пользователем с помощью команд (как в MS DOS) или различных манипуляций с мышью и клавиатурой (как в Windows).

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

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

1. Какие функции выполняет оперативная память?

2. Что такое адрес оперативной памяти?

3. Какие функции выполняет процессор?

4. Какую роль в компьютере выполняют порты ввода-вывода?

5. Для чего нужна шина адреса?

6. Как процессор выполняет машинную команду?

7. Как процессор узнает очередность выполнения команд?

8. Каковы причины разбиения программ на подпрограммы?

9. Для чего нужны прерывания?

10. Что такое мультизадачность?

11. Что означает функция управления памятью?


Дата добавления: 2018-10-26; просмотров: 4846; Мы поможем в написании вашей работы!

Поделиться с друзьями:






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