Способ организации вычислительного процесса когда в оперативной памяти

Обновлено: 02.07.2024

Тест по фильмам СССР: Сможете пройти его на все 10/10? (Часть 2)

Простейший тест на IQ из нескольких вопросов

Тест о животных: Угадай зверя по его носу

Цветовой тест: попробуем отгадать ваш возраст всего за 9 вопросов

Сможете ли вы узнать советских актеров по фото в молодости?

Не заглядывая в Гугл, сможете ответить хотя бы на половину вопросов этого теста?

Тест на знание всего на свете: Осилите его на все 100%?

Сможете ответить на вопросы на общие знания, в которых стыдно сделать ошибку?

Тест на интеллект: Если наберете 9/9, то уровень вашего IQ точно выше среднего

Этот тест определит ваш кругозор

Если в этом тесте вы наберете 13/13, то вам пора поступать в Гарвард

Проверьте свой интеллект

Тест на знание русского языка: сможете ли вы грамотно написать все 25 слов?

Вы гений, если пройдете этот тест.

Тест на общие знания, который без ошибок проходят лишь единицы. А получится ли у вас?

Сможете ли вы пройти тест для разведчиков?

Сколько ты можешь выиграть в «Кто хочет стать миллионером?»

Если ответите на все вопросы нашего теста без ошибок, то можете считать себя уникумом с высоким IQ

Насколько у вас хорошая логика?

Комментарии:

Популярные тесты

Тест по фильмам СССР: Сможете пройти его на все 10/10? (Часть 2)

Простейший тест на IQ из нескольких вопросов

Тест о животных: Угадай зверя по его носу

Цветовой тест: попробуем отгадать ваш возраст всего за 9 вопросов

Сможете ли вы узнать советских актеров по фото в молодости?

Не заглядывая в Гугл, сможете ответить хотя бы на половину вопросов этого теста?

Тест на знание всего на свете: Осилите его на все 100%?

Сможете ответить на вопросы на общие знания, в которых стыдно сделать ошибку?

Тест на интеллект: Если наберете 9/9, то уровень вашего IQ точно выше среднего

Этот тест определит ваш кругозор

Если в этом тесте вы наберете 13/13, то вам пора поступать в Гарвард

Проверьте свой интеллект

Тест на знание русского языка: сможете ли вы грамотно написать все 25 слов?

Вы гений, если пройдете этот тест.

Тест на общие знания, который без ошибок проходят лишь единицы. А получится ли у вас?

Сможете ли вы пройти тест для разведчиков?

Сколько ты можешь выиграть в «Кто хочет стать миллионером?»

Если ответите на все вопросы нашего теста без ошибок, то можете считать себя уникумом с высоким IQ

Насколько у вас хорошая логика?

Преимущества

Можете встраивать тесты на Ваш сайт. Тест показывается нашем и других сайтах. Гибкие настройки результатов. Возможность поделиться тестом и результатами. Лавинообразный ("вирусный") трафик на тест. Русскоязычная аудитория. Без рекламы!

Создавайте тесты онлайн, всё бесплатно. У нас можно бесплатно: создать тест онлайн для для учеников, друзей, сотрудников, для вашего сайта, с ответами и результатами - Все Бесплатно!

Пользователям

Вам захотелось отдохнуть? Или просто приятно провести время? Выбирайте и проходите онлайн-тесты, делитесь результатом с друзьями. Проверьте, смогут они пройти также как Вы, или может лучше?

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

Внимание! Наши тесты не претендуют на достоверность – не стоит относиться к ним слишком серьезно!

При автоматическом выполнении программы процессором команды последовательно поступают из оперативной памяти (ОП) в ЦУУ на время их выполнения АЛУ. Интервал времени, в течение которого процессор выполняет команду, называют рабочим циклом ЭВМ. Величина рабочего цикла зависит от структуры команды, типа операций, структуры операционных блоков АЛУ.

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

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


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

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

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

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

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


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

Евдокимов А.А., Майстренко Н.В., Майстренко А.В.

3.2.2. Классическая модель потоков

Добавление к модели процесса потоков делает возможным реализацию нескольких независимых друг от друга выполняемых задач в единой среде процесса. Потоки называют иногда облегченными процессами из-за имеющихся между понятиями потока и процесса сходств. Например, если потоки параллельно выполняются в рамках одного процесса, то процессы – в рамках одной вычислительной системы. Если потоки используют единое адресное пространство процесса и другие его ресурсы, то процессы – общую физическую память, диски, принтеры и другие ресурсы вычислительной системы. Для описания работы нескольких потоков в рамках одного и того же процесса используется термин «многопоточный режим».

На рис. 3.6, а показаны три обычных процесса. Каждый из них имеет собственное адресное пространство и один поток управления. А на рис. 3.6, б показан один процесс, у которого есть сразу три потока управления. При равном в каждом из случаев количестве потоков между ними имеются существенные различия. На рис. 3.6, а каждый из потоков выполняется в собственном адресном пространстве, а на рис. 3.6, б все потоки используют общее адресное про¬странство процесса.

Рис. 3.6. Три процесса, у каждого из которых есть один поток выполнения(а); один процесс с тремя потоками(б)

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

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

3.3. Использование объектов потоками
Элементы, присущие каждому процессу Элементы, присущие каждому потоку
Адресное пространство Счетчик команд
Глобальные переменные Регистры
Открытые файлы Стек
Дочерние процессы Состояние
Необработанные аварийные сигналы
Сигналы и обработчики сигналов
Учетная информация

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

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

Рис. 3.7. Каждый поток имеет собственный стек

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

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

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

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

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

Очередной новый процесс, поступивший на выполнение, помещается либо в общую очередь (рис. 5.8, а), либо в очередь к некоторому разделу (рис. 5.8, 6).


Рис. 5.8. Распределение памяти фиксированными разделами: с общей очередью (а), с отдельными очередями (б)

Подсистема управления памятью в этом случае выполняет следующие задачи:

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

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

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

В этом случае память машины не делится заранее на разделы. Сначала вся память, отводимая для приложений, свободна. Каждому вновь поступающему на выполнение приложению на этапе создания процесса выделяется вся необходимая ему память (если достаточный объем памяти отсутствует, то приложение не принимается на выполнение и процесс для него не создается). После завершения процесса память освобождается, и на это место может быть загружен другой процесс. Таким образом, в произвольный момент времени оперативная память представляет собой случайную последовательность занятых и свободных участков (разделов) произвольного размера. На рис. 5.9 показано состояние памяти в различные моменты времени при использовании динамического распределения. Так, в момент t0 в памяти находится только ОС, а к моменту t1 память разделена между 5 процессами, причем процесс П4, завершаясь, покидает память. На освободившееся от процесса П4 место загружается процесс П6, поступивший в момент t3.

Функции операционной системы, предназначенные для реализации данного метода управления памятью, перечислены ниже.

  • Ведение таблиц свободных и занятых областей, в которых указываются начальные адреса и размеры участков памяти.
  • При создании нового процесса — анализ требований к памяти, просмотр таблицы свободных областей и выбор раздела, размер которого достаточен для размещения кодов и данных нового процесса. Выбор раздела может осуществляться по разным правилам, например: «первый попавшийся раздел достаточного размера», «раздел, имеющий наименьший достаточный размер» или «раздел, имеющий наибольший достаточный размер».
  • Загрузка программы в выделенный ей раздел и корректировка таблиц свободных и занятых областей. Данный способ предполагает, что программный код не перемещается во время выполнения, а значит, настройка адресов может быть проведена единовременно во время загрузки.
  • После завершения процесса корректировка таблиц свободных и занятых областей.





Рис. 5.9. Распределение памяти динамическими разделами

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

Распределение памяти динамическими разделами лежит в основе подсистем управления памятью многих мультипрограммных операционных системах 60-70-х годов, в частности такой популярной операционной системы, как OS/360.

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


Рис. 5.10. Распределение памяти перемещаемыми разделами

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

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

Концепция сжатия применяется и при использовании других методов распределения памяти, когда отдельному процессу выделяется не одна сплошная область памяти, а несколько несмежных участков памяти произвольного размера (сегментов). Такой подход был использован в ранних версиях OS/2, в которых память распределялась сегментами, а возникавшая при этом фрагментация устранялась путем периодического перемещения сегментов.

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


Рис. 5.11. Зависимость загрузки процессора от числа задач и интенсивности ввода-вывода

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

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

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

Виртуализация оперативной памяти осуществляется совокупностью программных модулей ОС и аппаратных схем процессора и включает решение следующих задач:

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

Очень важно то, что все действия по организации совместного использования диска и оперативной памяти ••*• выделение места для перемещаемых фрагментов, настройка адресов, выбор кандидатов на загрузку и выгрузку — осуществляются операционной системой и аппаратурой процессора автоматически, без участия программиста, и никак не сказываются на логике работы приложений.

Читайте также: