Напишите программу которая моделирует работу процессора: Решение: Напишите программу, которая моделирует работу процессора

Моделирование работы процессора — Документ

Информатика,
11 класс К.Ю. Поляков, Е.А. Еремин

  1. Моделирование

Практические
работы
      1. Моделирование
        работы процессора

  1. Напишите программу, которая моделирует
    работу процессора. Процессор имеет 4
    регистра, они обозначаются R0, R1, R2 и R3.
    Все команды состоят из трех десятичных
    цифр: код операции, номер первого
    регистра и номер второго регистра (или
    число от 0 до 9). Коды команд и примеры
    их использования приведены в таблице:

Код
операции

Описание

Пример

Псевдокод

1

запись
константы

128

R2
:= 8

2

копирование
значения

203

R3
:= R0

3

сложение

331

R1
:= R1
+ R3

4

вычитание

431

R1
:= R1
– R3

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

  1. *Добавьте в систему команд умножение,
    деление и логические операции c регистрами
    – «И», «ИЛИ», «исключающее ИЛИ».

  2. *Добавьте в систему команд логическую
    операцию «НЕ». Подумайте, как можно
    использовать второй регистр.

  3. *Сделайте так, чтобы в команде с кодом
    1 можно было использовать шестнадцатеричные
    значения констант (0-9, A-F).

  4. Добавьте обработку ошибок типа «неверная
    команда», «неверный номер регистра»,
    «деление на ноль».

  5. *Добавьте команду «СТОП», которая
    прекращает работу программы. Введите
    строковый массив, моделирующий память,
    и запишите в него программу –
    последовательность команд. Ваша
    программа должна последовательно
    выполнять эти команды, выбирая их из
    «памяти», пока не встретится команда
    «СТОП».

  6. **Подумайте, как можно было бы организовать
    условный переход: перейти на N байт
    вперед (или назад), если результат
    последней операции – ноль.

      1. Моделирование движения

  1. Парашютист массой 90 кг разгоняется
    в свободном падении до скорости 10 м/с
    и на высоте 50 м раскрывает парашют,
    площадь которого 55 м2. Коэффициент
    сопротивления парашюта равен 0,9.
    Выполните следующие задания:

  • постройте графики изменения скорости
    и высоты полета в течение первых
    4 секунд;

  • определите, с какой скоростью приземлится
    парашютист?

  • сравните результаты моделирования с
    установившимся значением скорости,
    вычисленным теоретически.

теоретически

моделирование

Скорость
приземления, м/с

  1. Напишите программу, которая моделирует
    полет мяча, брошенного вертикально
    вверх, при

мм,
г,
м/с,
с.

Остальные необходимые данные есть в
тексте § 9. Выполните следующие
задания:

  • определите время полета, максимальную
    высоту подъема мяча и скорость в момент
    приземления;

  • вычислите время полета и максимальную
    высоту подъема мяча, используя модель
    движения без сопротивления воздуха:

  • сравните эти результаты с полученными
    при моделировании с учетом сопротивления;

    без
    учёта сопротивления

    с
    учётом сопротивления

    Время
    полета, с

    Максимальная
    высота, м

    Скорость
    приземления, м/с

  • можно ли в этой задаче пренебречь
    сопротивлением воздуха? почему?

Ответ:

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

  • уменьшите шаг до 0,01 с и повторите
    моделирование; сделайте выводы по
    поводу выбора шага в данной задаче.

Ответ:

  1. *Выполните моделирование движения
    мяча, брошенного под углом 45° к горизонту:

  • определите время полета, максимальную
    высоту и дальность полета мяча, скорость
    в момент приземления;

    без
    учёта сопротивления

    с
    учётом сопротивления

    Время
    полета, с

    Максимальная
    высота, м

    Дальность
    полета, м

    Скорость
    приземления, м/с

  • сравните результаты со случаем, когда
    сопротивление воздуха не учитывается;
    сделайте выводы.

Ответ:

      1. Моделирование популяции
        животных

Для выполнения работы откройте
файл-заготовку Популяция.xls.

  1. Постройте графики изменения численности
    популяции животных для моделей
    ограниченного и неограниченного роста
    при
    ,
    и
    в течение
    первых 15 периодов. Определите, когда
    модель неограниченного роста перестает
    быть адекватной (отклонение от модели
    ограниченного роста составляет более
    10%).

Ответ:

  1. Используя подбор параметра, определите,
    при каких коэффициентах
    модель
    неограниченного роста остается
    адекватной в течение не менее 10 периодов.

Ответ:

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

    • постройте график изменения численности
      животных;

    • определите количество животных в
      состоянии равновесия по результатам
      моделирования; зависит ли оно от
      начальной численности?

    Ответ:

      • определите количество животных в
        состоянии равновесия теоретически,
        из модели ограниченного роста с отловом;
        сравните это значение с результатами
        моделирования

      Ответ:

        Ответ:

          Ответ:

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

            Ответ:

                1. Моделирование эпидемии

            Для выполнения работы откройте
            файл-заготовку Эпидемия.xls.

            При эпидемии гриппа число больных
            изменяется по
            формуле

            ,

            где
            – количество
            заболевших в
            -й день, а
            – количество
            выздоровевших в тот же день. Число
            заболевших рассчитывается согласно
            модели ограниченного роста:

            ,

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

            .

            Считается, что в начале эпидемии заболел
            1 человек, все заболевшие выздоравливают
            через 7 дней и больше не болеют.

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

            Ответьте на следующие вопросы:

            1. Когда закончится
              эпидемия?

            Ответ:

            1. Сколько человек
              переболеет, а сколько вообще не заболеет
              гриппом?

            Ответ:

            1. Каково максимальное
              число больных в один день?

            Ответ:

            1. Изменяя коэффициент
              , определите,
              при каких значениях
              модель явно
              перестает быть адекватной.

            Ответ:

            1. *Сравните модель,
              использованную в этой работе, со
              следующей моделью:

            ,
            .

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

            Ответ:

            Сравните поведение двух моделей при
            ,
            и
            . Сделайте выводы.

            Ответ:

                1. Модель «хищник-жертва»

            Для выполнения работы откройте
            файл-заготовку ХищникЖертва.xls.

            Выполните моделирование биологической
            системы «щуки-караси»

            где – численность
            карасей

            – численность
            щук

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

            – коэффициент
            прироста карасей;

            – предельная
            численность карасей;

            – начальная
            численность карасей;

            – начальная
            численность щук;

            – коэффициент
            смертности щук без пищи;

            и
            – коэффициенты
            модели.

            Постройте на одном поле графики изменения
            численности карасей и щук в течение 30
            периодов моделирования.

            Ответьте на следующие вопросы:

            1. Сколько карасей и щук живут в водоеме
              в состоянии равновесия?

            Ответ:

            1. Что влияет на количество рыб в состоянии
              равновесия: начальная численность
              хищников и жертв или значения коэффициентов
              модели?

            Ответ:

            1. На что влияет начальная численность
              хищников и жертв?

            Ответ:

            1. Подберите значения коэффициентов, при
              которых модель становится неадекватна.

            Ответ:

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

            Ответ:

            Практическая работа № 10а.

            Модель
            «две популяции»

            Для выполнения работы откройте
            файл-заготовку ДвеПопуляции.xls.

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

            Здесь
            и
            – численность
            белок и бурундуков;
            и
            – их максимальные
            численности;
            и
            – коэффициенты
            прироста;
            и
            – коэффициенты
            взаимного влияния.

            Объясните, на основании каких предположений
            была построена эта модель.

            Ответ:

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

            Ответьте на следующие вопросы:

            1. Является ли эта модель системной?
              Почему?

            Ответ:

            1. Какова численность белок и бурундуков
              в состоянии равновесия?

            Ответ:

            1. Что влияет на состояние равновесия?

            Ответ:

            1. На что влияет начальная численность
              животных?

            Ответ:

            1. При каком значении коэффициента
              бурундуки вымрут через 25 лет? (используйте
              подбор параметра).

            Ответ:

            1. Найдите какие-нибудь значения
              коэффициентов, при которых модель
              становится неадекватна;

            Ответ:

            1. Предложите аналогичную модель взаимного
              влияния трех видов.

            Ответ:

                1. Саморегуляция

            Для выполнения работы откройте
            файл-заготовку Саморегуляция.xls.

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

            , (*)

            Эта модель отличатся от модели
            ограниченного роста только дополнительным
            множителем
            , где
            и
            – некоторые
            числа (параметры), смысл которых вам
            предстоит выяснить.

            1. Выполните
              моделирование для 30 периодов при
              следующих значениях параметров модели:

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

            Ответ:

            1. Постепенно увеличивая
              коэффициент
              от 0 до 500,
              выясните с помощью моделирования, как
              влияет этот коэффициент на саморегуляцию.

            Ответ:

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

            Ответ:

            1. Повторите моделирование
              п. 3 при
              и сделайте
              аналогичные выводы:

            Ответ:

            1. Экспериментируя с
              моделями, найдите минимальную численность
              популяции
              , при которой
              она выживает в соответствии с моделью
              (*).

            Ответ:

            1. Сделайте выводы о
              смысле коэффициента
              в модели (*).

            Ответ:

            1. Сравните свойства
              саморегуляции для модели ограниченного
              роста и модели (*).

            Ответ:

                1. Моделирование работы банка

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

            где
            – количество
            клиентов, вошедших за
            -ую минуту, а
            – количество
            клиентов, обслуженных за это время;

            • достаточным считается число касс, при
              которых среднее время ожидания
              превышает
              установленный предел
              не более, чем
              5% рабочего времени в течение дня.

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

            ,
            ,
            ,
            .

            Модели и моделирование. ГДЗ по Информатике 11 класс.


            Информатика. 11 класс. Углубленный уровень. В 2 ч. Поляков К.Ю., Еремин Е.А.

            § 6. Модели и моделирование

            1. Что такое модель? Зачем нужны модели?
            2. Что вы думаете по поводу другого определения модели: «Модель — это упрощённое представление реального объекта, процесса или явления»?
            3. Приведите примеры моделей объектов, процессов и явлений.
            4. Приведите примеры разных моделей Земли. В каких задачах они используются?
            5. Приведите примеры разных моделей человека. Для каких задач они предназначены?
            6. Приведите примеры, когда одна модель используется для представления разных объектов-оригиналов.
            7. Приведите примеры моделей, с которыми мы работаем на компьютерах.
            8. Что такое моделирование?
            9. Назовите типичные задачи, которые могут решаться с помощью моделирования.
            10. Что такое анализ и синтез? Какой из этих типов задач более сложен?
            11. Приведите примеры задач анализа и синтеза.
            12. Что такое оптимизация?
            13. Как вы думаете, почему нет единой классификации моделей?
            14. К какому типу (типам) можно отнести следующие модели:

            а) «Каляка — это маляка с тремя грымзиками»;
            б) а2 + b2 = с2;
            в) «Если горит красный свет, то стой. Если горит зёленый свет — иди»;
            г) 2Н2 + O2 = 2Н2O?
            Используйте разные классификации.

            15. Объясните, чем различаются статические и динамические модели.
            16. Что такое вероятностные модели? Зачем они могут понадобиться?
            17. Как называются модели, в которых не используются случайные события?
            18. Назовите достоинства и недостатки вероятностных и детерминированных моделей.
            19. Какую модель — вероятностную или детерминированную — вы рекомендуете выбрать для исследования движения судна в шторм? Почему?
            20. Что такое имитационные модели? Подумайте, какие достоинства и недостатки у них есть по сравнению с теоретическими моделями.
            21. Что такое метод проб и ошибок?
            22. Приведите примеры задач из вашей практики, для которых имитационная модель позволяет быстрее получить результат, чем теоретическая.
            23. Какие модели называют игровыми?
            24. Верно ли, что модели, используемые при создании компьютерных игр, — это игровые модели? Обоснуйте вашу точку зрения.
            25. Приведите примеры детерминированных и вероятностных игровых моделей.
            26. Может ли существовать вербальная динамическая имитационная игровая модель? Обоснуйте свою точку зрения.
            27. Что такое адекватность модели? Как можно убедиться, что модель адекватна?
            28. Почему ни одна модель не может быть полностью адекватна оригиналу?

            Подготовьте собщение

            а) «Анализ и синтез*
            б) «Детерминированные и вероятностные модели»
            в) «Игровые модели»
            г) «Адекватность моделей»


            Задачи

            1. Площадь леса на карте масштаба 1:200 000 равна 5 см2. Сколько квадратных километров составляет площадь реального леса?

            2. Напишите программу, которая моделирует работу процессора. Процессор имеет 4 регистра, они обозначаются R0, Rl, R2 и R3. Все команды состоят из трёх десятичных цифр: код операции, номер первого регистра и номер второго регистра или число от 0 до 9. Коды команд и примеры их использования приведены в таблице.

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

            3. Добавьте в систему команд в задаче 2 умножение, деление и логические операции с регистрами — И, ИЛИ, исключающее ИЛИ.

            *4. Добавьте в систему команд в задаче 2 логическую операцию НЕ. Подумайте, как можно использовать второй регистр.

            *5. Сделайте так, чтобы в команде с кодом 1 (задача 2) можно было использовать шестнадцатеричные значения констант (0-9, A-F).

            6. Добавьте в задаче 2 обработку ошибок типа «неверная команда», «неверный номер регистра», «деление на ноль».

            *7. Добавьте в задаче 2 команду «СТОП», которая прекращает работу программы. Введите строковый массив, моделирующий память, и запишите в него программу — последовательность команд. Ваша программа должна последовательно выполнять эти команды, выбирая их из «памяти», пока не встретится команда «СТОП».

            *8. Подумайте (задача 2), как можно было бы организовать условный переход: перейти на N байтов вперёд (или назад), если результат последней операции — ноль.


            GNU Эмулятор компиляция программ — презентация онлайн

            1. GNU Эмулятор компиляция программ

            1
            GNU Эмулятор
            компиляция программ
            1.
            2.
            3.
            4.
            Интерфейс эмулятора.
            Видео память.
            Оперативная память.
            Стек программы.
            Запуск эмулятора
            GNU эмулятор Neil Bauers
            Microprocessor Simulator ver 5.0.
            1. Используя проводник MS Windows
            найдите и откройте папку программы
            эмулятора.
            2. Среди списка файлов программы
            найдите загрузочный файл
            программы, отмеченный
            пиктограммой и выполните его
            запуск.
            2
            Окно программы
            3
            Архитектура процессора
            Программа эмулятора моделирует работу
            восьмиразрядного микропроцессора.
            Микропроцессор содержит четыре регистра
            общего назначения: AL, BL, CL, DL.
            Регистр IP (Instruction Pointer) для адресации
            команд.
            Регистр SP (Stack Pointer) для работы со
            стеком и регистр состояния SR (Status
            Register).
            Объем адресуемой оперативной памяти (RAM)
            равен 256 байтам.
            Адресуется память путем последовательного
            занесения в нее байтов.
            4
            Ввод кода программы
            Введите команды программы пересылки
            кодов в регистры общего назначения
            Для увеличения — уменьшения размеров шрифта используют
            кнопки
            5
            Команда процессора MOV
            Общий синтаксис команды:
            MOV A1,A2
            Схема работы команды:
            R
            R->[Addr] – Запись кода из регистра в
            оперативную память по адресу Adrr
            R
            оперативной памяти с адресом Addr в
            регистр.
            6
            Примеры использования команды
            MOV AL,12; Запись в регистр кода 12
            MOV [17],CL ;Запись в ячейку памяти с адресом 17
            ;содержания регистра CL
            MOV BL,[C3] ; Запись в регистр значения из ячейки
            ;с адресом C3
            MOV [CL],DL ;Запись содержания регистра
            ;ячейку адрес которой хранится в регистре CL
            MOV AL,[BL] ;Запись содержания ячейки по
            ;адресу, который хранится в регистре BL в регистр
            AL
            7
            Редактор кода
            Команда END не является ассемблерной командой это команда
            эмулятора, означающая конец программы.
            Для ввода комментариев используется специальный символ «;».
            Коды при записи в регистр задаются в шестнадцатеричном формате!
            Регистр символов кода и команд не имеет значения
            8
            Компиляция кода
            После набора команд программы выполняется
            ассемблирование программы путем нажатия кнопки
            «Assemblе» в верхней части окна
            9
            Сохранение программы
            Выберите Вашу рабочую папку для
            размещения файла с программой
            Имя файла программы (по умолчанию
            Untitled) замените на emureg и нажмите
            кнопку «Сохранить».
            Текст программы будет сохранен в файле
            emureg.ASM
            10
            Команды для работы с текстом программы
            11
            Для работы с фалами можно использовать команды
            пункта меню File:
            Open – Открыть файл.
            Save – Сохранить файл.
            Save As – Сохранить файл под новым именем.
            Открыть файл
            Сохранить файл
            Создать файл
            Адресное пространство программы
            После сохранения программа будет
            скомпилирована в оперативную память и будет
            готова к исполнению.
            12
            Программа в памяти
            Наша программа занимает диапазон адресов 00 до
            09. Не забывайте, что значения
            шестнадцатеричные !
            13
            Исполнение программы
            Для выполнения программы используем режим
            пошагового выполнения. Нажимайте
            последовательно кнопку «Step» и следите как
            изменяются значения в регистрах процессора.
            14
            Выполнение программы
            Обратите внимание, что значение регистров
            выводится в трех системах исчисления
            двоичной, шестнадцатеричной и десятичной.
            После достижения команды END
            нажмите кнопку «STOP».
            15
            Перезапуск программы
            В любом режиме исполнения программы для
            повторного ее исполнения следует нажать кнопку
            «CPU Reset !».
            Если окно отображения оперативной памяти
            закрыто, его можно вывести, нажав кнопку
            «Show Ram».
            Сброс оперативной памяти выполняется после
            нажатия кнопки «Assemble».
            16
            Скорость исполнения программы
            17
            Программу можно выполнить в автоматическом
            режиме используя кнопку «Run». В автоматическом
            режиме исполнения можно использовать кнопки:
            STOP – Приостановить выполнение программы.
            Continue – Продолжить выполнение.
            Slower – уменьшить частоту процессора эмулятора,
            для замедления обработки команд.
            Faster – увеличить частоту работы процессора.
            Просмотр оперативной памяти
            Содержание оперативной памяти можно выводить
            в одном из трех режимов
            18
            Ячейки оперативной памяти
            Hexdecimal – побайтовый просмотр в
            шестнадцатеричном формате.
            ASCII – просмотр содержания оперативной памяти в
            символьном виде.
            Source – вывод программы в оперативной памяти
            (используется по умолчанию).
            19
            Запись кодов в регистры и оперативную память
            20
            Упражнение № 1. Программа change1.asm.
            Напишите программу для обмена значений
            регистров AL и CL, используя оперативную память.
            Исходное значение кодов в регистрах AL=1F, CL=2F.
            Псевдо код программы:
            AL
            CL
            Адрес 52
            Адрес 53
            Адрес 52 => CL
            Адрес 53 => AL
            КОНЕЦ
            Виртуальный дисплей
            В эмуляторе участок оперативной
            памяти в диапазоне адресов от C0 до
            FF представляет собой видеопамять.
            Если в ячейку занести ASCII код
            символа, то автоматически
            открывается устройство VDU (Visual
            Display Unit) которое отображает
            содержание видеопамяти в виде
            символов.
            21
            Кодировка символов
            22
            Видео память
            Видеопамять
            23
            Вывод сообщения
            Упражнение № 2. Программа hello.asm Напишите
            программу для вывода на устройство VDU
            контрольного сообщения Hello World!.
            Следует иметь в виду, что оперативная
            память обновляется только после
            повторного ассемблирования
            программы, кнопка «Assemble» !
            24
            Запись кодов в видео память
            AL
            Адрес C0
            AL
            Адрес C1
            AL
            Адрес C2
            AL
            Адрес C3
            AL
            Адрес C4
            AL
            Адрес C5
            AL
            Адрес C6
            Псевдокод
            программы
            AL
            Адрес C7
            AL
            Адрес C8
            AL
            Адрес C9
            AL
            Адрес CA
            AL
            Адрес CB
            Конец
            25
            Программный стек
            Стек – участок оперативной памяти доступ, к
            которому построен по принципу:
            «Первый пришел, последний вышел» !
            Используется стек для временного хранения
            кодов в процессе работы программы.
            Команды для работы со стеком:
            PUSH R ;Запись содержания регистра в стек
            POP R ;Извлечение кода с верхушки стека в регистр
            Стек располагается в нижнем диапазоне
            адресов оперативной памяти и
            начинается с адреса BF.
            Адресуется стек с помощью регистра SP.
            26
            Обмен значений регистров
            Упражнение № 3. Напишите программу
            change2.asm в соответствии с упражнением 1,
            используя стек для временного хранения данных.
            Псевдо код программы:
            AL
            CL
            Примечание:
            AL
            — поместить в стек
            CL
            — извлечь из стека
            AL
            CL
            КОНЕЦ
            27
            Задания
            Контрольное задание №1. Программа
            messages.asm Напишите программу для
            вывода сообщения.
            28
            Задания
            Контрольное задание №2. Напишите
            программу revers.asm.
            Занесите в стек коды символов
            строки “QWERTY”, извлеките
            коды из стека и выведите на
            устройство VDU.
            Объясните результат.
            29

            Лабораторная работа №2 Моделирование систем средствами gpss/World

            Цели
            лабораторной работы:

            1. Изучить
              основные возможности среды
              GPSS/World
              для моделирования систем.

            2. Получить
              практические навыки моделирования
              простейших систем средствами
              инструментальной среды
              GPSS.

            Задача.
            К
            компьютеру на обработку поступают
            задания. Из предварительного обследования
            получена информация, что интервал
            времени между двумя последовательными
            поступлениями заданий к компьютеру
            подчиняется равномерному закону
            распределения в интервале (1-11 мин.).
            Перед компьютером допустима очередь
            заданий, длина которой не ограничена.
            Время выполнения задания также равномерно
            распределено в интервале (1-19 мин.).
            Смоделировать обработку 100 заданий.

            В
            среде GPSS
            программа, моделирующая работу
            вычислительной системы, выглядит
            следующим образом:

            GENERATE
            360,300

            SEIZE
            В

            ADVANCE
            600,540 RELEASE В
            TERMINATE 1 START 100

            Единица
            модельного времени задана 1 секунда.

            Так
            как время среднее время обработки
            задания больше, чем среднее время
            поступления задания, в вычислительной
            системе будет накапливаться очередь с
            течением времени. Для сбора статистики
            об очереди используются операторы
            QUEUE,
            DEPART.
            В этом случае программа выглядит
            следующим образом:

            GENERATE
            360,300 QUEUE BR SEIZE В
            DEPART BR ADVANCE 600,540 RELEASE В
            TERMINATE 1 START 100

            Наберите
            эту программу в среде GPSS/World.

            Студенческая
            версия GPSS/World
            не требует установки. Для запуска
            программы достаточно запустить на
            выполнение файл GPSSW.exe.
            После этого откроется среда моделирования
            GPSS/World.
            Далее необходимо выбрать пункт меню
            File/Open
            и в открывшемся диалоговом окне «Новый
            документ» — Создать Model.
            В результате будет открыто окно Untitled
            Model
            1, в котором необходимо набрать текст
            программы.

            Файл
            с программой можно сохранить в файле с
            расширением .gps
            (пункты меню File/Save;
            File/Save
            As).

            Для
            запуска программы на выполнение
            необходимо выбрать пункт меню
            Command/Create
            Simulation.

            В
            результате выполнения программы
            моделирования работы вычислительной
            системы
            GPSS
            выдаст отчет:

            Основные
            обозначения:

            START
            TIME
            — время начала моделирования

            END
            TIME
            — время окончания моделирования

            BLOCKS
            — количество блоков, используемых в
            программе FACILITIES
            — количество устройств

            STORAGES
            — количество многоканальных устройств,
            для которых определяется емкость
            накопителя

            Далее
            приводится информация о блоках:

            LOC
            — номер блока, назначенный системой

            BLOCK
            TYPE
            — название блока

            ENTRY
            COUNT
            — количество транзактов, прошедших через
            блок за время моделирования CURRENT
            COUNT
            — количество транзактов, задержанных в
            блоке на момент конца моделирования

            RETRY
            — количество транзактов, ожидающих
            специальных условий для прохождения
            через данный блок

            Отчет
            о работе устройства FACILITY
            — название устройства

            ENTRIES
            — количество транзактов, прошедших через
            устройство

            UTIL.
            — вероятность загрузки устройства (часть
            периода моделирования, когда устройство
            было свободно)

            AVE.
            TIME
            — среднее время обработки одного транзакта
            устройством

            AVAIL.
            — состояние готовности устройства на
            момент конца моделирования (1 -готово к
            обслуживанию
            очередной заявки; 0 — не готово)

            OWNER
            — номер последнего транзакта занимающего
            устройство (если не занималось, то
            значение 0)

            PEND
            — количество транзактов, ожидающих
            устройство, и находящихся в режиме
            прерывания

            INTER
            — количество транзактов, прерывающих
            устройство в данный момент

            RETRY
            — количество транзактов, ожидающих
            специальных условий, зависящих от
            состояния
            объекта типа «устройство»

            DELAY
            — определяет количество транзактов,
            ожидающих занятия или освобождения
            устройства

            Статистика
            об очередях:

            QUEUE
            — имя очереди

            МАХ
            — максимальная длина очереди

            CONT.
            — текущая длина очереди

            ENTRY
            — общее количество входов

            ENTRY(O)-
            количество «нулевых» входов AVE.CONT.
            — средняя длина очереди

            AVE.TIME
            — среднее время пребывания транзактов
            в очереди

            AVE.(-O)
            — среднее время пребывания в очереди
            без учета «нулевых» входов

            RETRY
            — количество транзактов, ожидающих
            специальных условий

            Информация
            о списке текущих событий

            СЕС
            (Current
            Events Chain)

            XN
            — номер
            транзакта

            PRI
            — приоритет транзакта (по умолчанию — 0)

            Ml
            — время пребывания транзакта в системе
            с момента начал моделирования

            ASSEM
            — номер семейства транзактов

            CURRENT
            — номер блока в котором находится транзакт

            NEXT
            — номер блока в который перейдет транзакт
            далее

            PARAMETER
            — номер или имя параметра транзакта

            VALUE
            — значение параметра

            Информация
            о списке будущих событий

            FEC
            (Future Events Chain)

            XN
            — номер транзакта

            PRI
            — приоритет транзакта

            BDT
            — таблица модельных событий — абсолютное
            модельное время выхода транзакта из
            списка будущих событий (и перехода
            транзакта в список текущих событий)

            ASSEM
            — номер семейства транзактов

            CURRENT
            — номер блока в котором находится транзакт
            (0 — если транзакт не вошел в модель)

            NEXT
            — номер блока в который перейдет транзакт
            далее PARAMETER
            — номер или имя параметра транзакта

            VALUE
            — значение, параметра

            Приведем
            основные операторы, которые используются
            в программе.

            1.
            Для создания транзактов (заявок), входящих
            в модель, служит блок
            GENERATE
            (генерировать),
            имеющий следующий формат:

            GENERATE
            A,B,C,D,E

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

            Модификатор-интервал
            используется, когда интервал поступления
            транзактов является случайной величиной
            с равномерным законом распределения
            вероятностей. В
            этом
            случае в поле
            В
            может
            быть задан любой СЧА, кроме ссылки на
            функцию, а диапазон изменения интервала
            поступления имеет границы А-В,
            А+В.

            Например,
            блок

            GENERATE
            100,40

            создает
            транзакты через случайные интервалы
            времени, равномерно распределенные на
            отрезке [60; 140].

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

            В
            поле С
            задается
            момент поступления в модель первого
            транзакта. Если это поле пусто или равно
            0, то момент появления первого транзакта
            определяется операндами А и В.

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

            В
            поле Е
            задается
            приоритет, присваиваемый генерируемым
            транзактам. Число уровней приоритетов
            неограниченно, причем самый низкий
            приоритет — нулевой. Если поле Е пусто,
            то генерируемые транзакты имеют нулевой
            приоритет.

            Транзакты
            имеют ряд стандартных числовых атрибутов.
            Например, СЧА с названием PR
            позволяет ссылаться на приоритет
            транзакта. СЧА с названием Ml
            содержит так называемое резидентное
            время транзакта, т.е. время, прошедшее
            с момента входа транзакта в модель через
            блок GENERATE.
            СЧА
            с названием XN1
            содержит внутренний номер транзакта,
            который является уникальным и позволяет
            всегда отличить один транзакт от другого.
            В
            отличие
            от СЧА других объектов, СЧА транзактов
            не содержат ссылки на имя или номер
            транзакта. Ссылка на СЧА транзакта
            всегда относится к активному транзакту,
            т.е. транзакту, обрабатываемому в данный
            момент симулятором.

            Задания
            для самостоятельной работы:

            GENERATE
            360,300

            SEIZE
            В

            ADVANCE
            600,540 RELEASE В
            TERMINATE
            1 START 100

            Внесите
            изменения в программу, моделирующую
            работу вычислительного центра. Запустите
            и отладьте новые варианты программы.

            1. К
              компьютеру на обработку поступают 14
              заданий, интервал поступления заданий
              распределен по равномерному закону в
              диапазоне 3-11 мин.

            2. К
              компьютеру на обработку в нулевой
              момент времени поступают 5 заданий с
              уровнем приоритета равным 25.

            3. Задания
              поступают на обработку к компьютеру
              каждые 4-14 мин. Первое задание поступает
              на 20 минуте. Измените единицу модельного
              времени на 0,1 минуту.

            Как
            изменились характеристики работы
            моделируемой системы в результате
            внесенных изменений?

            2.
            Для удаления транзактов из модели
            служит
            блок
            TERMINATE
            (завершить),
            имеющий следующий формат: TERMINATE
            А

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

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

            Текущее
            значение счетчика завершений
            доступно
            программисту через системный
            СЧА
            TG1.

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

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

            GENERATE
            100,40
            TERMINATE
            1
            START
            1000

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

            GENERATE
            100,40 TERMINATE GENERATE 100000 TERMINATE 1 START 1

            Например,
            в модели из двух сегментов, первый
            (основной) сегмент выполняет те же
            функции, что и в предыдущем примере.
            Заметим, однако, что поле
            А блока
            TERMINATE
            в
            первом сегменте пусто, т.е. уничтожаемые
            транзакты не уменьшают содержимого
            счетчика завершений. Во втором сегменте
            блок
            GENERATE
            создаст
            первый транзакт в момент модельного
            времени, равный 100000. Но этот транзакт
            окажется и последним в данном сегменте,
            так как, войдя в блок
            TERMINATE,
            он
            обратит в 0 содержимое счетчика завершений,
            установленное оператором
            START
            равным
            1. Таким образом, в

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

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

            Замечание:
            Не
            путайте ограничитель транзактов в блоке
            GENERATE
            и счетчик завершения. Ограничитель
            задает число транзактов, которые войдут
            в модель, а счетчик -число транзактов,
            которые выйдут из модели. По окончании
            моделирования транзакты могут оставаться
            в модели.

            Задания
            для самостоятельной работы:

            Внесите
            изменения в программу, моделирующую
            работу вычислительного центра. Запустите
            и отладьте новые варианты программы.

            1. Моделирование
              заканчивается после того, как через
              модель пройдут
              300
              транзактов
              (заданий), транзакты должны поступать
              в модель каждые
              1-11
              минут.

            2. Задайте
              время моделирования работы системы
              8
              часов,
              единица модельного времени
              1
              секунда.

            Как
            изменились характеристики работы
            моделируемой системы в результате
            внесенных изменений?

            1. Моделирование
              одноканальных устройств

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

            • либо
              подождать своей очереди;

            • либо
              направиться в другое место;

            • либо
              прервать обслуживание текущего
              сообщения.

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

            1. ждать
              очереди, если необходимо;

            2. когда
              подходит очередь занять устройство;

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

            4. когда
            обслуживание закончится, освободить
            устройство.
            Второй и четвертый шаги
            реализуются блоками SEIZE
            и RELEASE.

            Блок
            SEIZE
            имеет следующий формат:

            SEIZE
            А

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

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

            RELEASE
            А

            Блок
            RELEASE
            предназначен для освобождения устройства
            тем сообщением, которым В поле А задается
            номер (имя) освобождаемого устройства.

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

            ADVANCE
            А

            Операнды
            в полях
            А
            и В
            имеют
            тот же смысл, что и в соответствующих
            полях блока GENERATE.
            Следует отметить, что транзакты,
            входящие в блок
            ADVANCE,
            переводятся
            из списка текущих событий в список
            будущих событий, а по истечении
            вычисленного времени задержки возвращаются
            назад, в список текущих событий, и их
            продвижение по блок-схеме продолжается.

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

            Например,
            транзакты, поступающие в модель из блока
            GENERATE
            через
            случайные интервалы времени, имеющие
            равномерное распределение на отрезке
            [60; 140], попадают в блок
            SEIZE
            и
            занимают устройство с номером 1. Далее
            в блоке ADVANCE
            определяется
            случайное время задержки транзакта,
            имеющее равномерное распределение на
            отрезке [30; 130], и транзакт переводится
            в список будущих событий. По истечении
            времени задержки транзакт возвращается
            в список текущих событий и входит в блок
            RELEASE
            и
            освобождает устройство 1. Заметим, что
            в списке будущих событий, а значит и в
            блоке
            ADVANCE
            может
            одновременно находиться произвольное
            количество транзактов.

            GENERATE
            100,40

            SEIZE
            1

            ADVANCE
            80,50

            RELEASE
            1

            В
            рассмотренных выше примерах случайные
            интервалы времени подчинялись равномерному
            закону распределения вероятностей. Для
            получения случайных величин с другими
            распределениями в GPSS
            используются вычислительные объекты:
            переменные и функции.

            Задания
            для самостоятельной работы:

            • Приведите
              фрагмент программы, который моделирует
              обработку детали на станке. Название
              устройства —

              MACHINE,

              время обработки — 10 ед. модельного
              времени.

            • Напишите
              сегмент программы, который описывает
              процесс шлифования изделия. Шлифование
              занимает 3-5 минут, в каждый момент
              времени может обрабатываться только
              одно изделие. Единица модельного времени
              — 1 секунда.

            Словарь компьютерных терминов на букву А

            Информация на данной странице актуальна на сегодня — 30.04.2021

            Словарь компьютерных терминов на букву А

            А

            АББРЕВИАТУРА [abbreviation]. Слово, составленное из первых букв или
            сокращенных частей слов, входящих в состав названий или словосочетаний,
            заменяющее эти названия или словосочетания. Например, ЭВМ —
            электронная вычислительная машина

            АБЗАЦ [paragraph]. 1. Часть текста, ограниченная двумя отступами.
            2. Б текстовых редакторах — часть документа между двумя соседними
            маркерами конца А. Б текстовом редакторе MS Word эти маркеры
            автоматически вносятся в текст при нажатии клавиши <Enter> (перевод строки) и
            видимы при нажатой кнопке 1Г (Непечатаемые знаки). Каждому А. можно
            придать свой формат, отличный от формата соседних абзацев

            АБОНЕНТ СЕТИ [network abonent, user node]. 1. Пользователь, имеющий
            доступ к ресурсам компьютерной сети или к сети компьютерной связи.
            2. Терминал, компьютер или рабочая станция, подключенные к
            вычислительной сети или сети компьютерной связи

            АБСОЛЮТНЫЙ АДРЕС, физический адрес [absolute address, physical
            address]. I. Адрес в виде цифрового кода, однозначно идентифицирующий
            реально существующие в вычислительной системе байт, ячейку памяти или
            устройство. А. а. непосредственно интерпретируется аппаратными средствами
            или микропрограммами центрального процессора вычислительной системы.
            А. а. либо указывается как неизменяемый адрес в машинной команде, либо
            вычисляется, исходя из логического адреса, и не может быть далее уточнен
            программными средствами. Ср. логический адрес. 2. Цифровой код,
            однозначно определяющий положение данных на носителе данных. Например, для
            магнитного диска А. а. представляет код, состоящий из номера поверхности,
            номера дорожки и номера сектора. См. адресация

            АБСТРАКТНЫЙ КЛАСС, базовый абстрактный класс [abstract class, abstract
            base class]. Б языке программирования C++ — класс, который не может быть
            использован для создания объектов, но выступает в качестве базы, на основе
            которой создаются другие классы. А. к. содержит хотя бы одну чисто
            виртуальную функцию. Ср. абстрактный тип данных

            АБСТРАКТНЫЙ ТИП ДАННЫХ [abstract data type]. Понятие, введенное в
            конце 1970-х годов в теоретических исследованиях по языкам
            программирования. А. т. д. рассматривается как множество значений и множество
            операций над этими значениями, причем для описания семантики операций
            используются формальные математические, в частности, алгебраические,
            методы. Например, для А. т. д. «стек значений типа Т» с операциями push
            (протолкнуть в стек) и pop (вытолкнуть из стека) выполняется аксиома ∀ x ∈
            T pop (push (x)) = x. Результаты исследований по А. т. д. имеют большое
            значение для объектно-ориентированного программирования, автоматического
            синтеза программ, искусственного интеллекта и других разделов информатики

            АБСТРАКТНЫЙ ФАЙЛ [named pipe]. To же, что именованный канал

            АБСТРАКЦИЯ [abstraction]. Процесс выявления основных характеристик
            какой-либо сущности с целью обособления ее от других видов сущностей.
            При проведении А. рассматривается множество различных сущностей в
            поисках общих основных характеристик. А. подразумевает, что деление
            сущностей на некоторые виды происходит с некоторой точки зрения. Одна и та
            же сущность с разных точек зрения может принадлежать к разным
            абстрактным типам. А. присутствует в любом моделировании, часто на многих
            уровнях и для различных целей. А. является одним из основных понятий
            унифицированного языка моделирования UML

            АВАРИЙНОЕ ЗАВЕРШЕНИЕ[abnormal end, abend]. Непредусмотренное
            прекращение исполнения программы из-за возникновения условий, делающих
            невозможным ее дальнейшее выполнение. Такими условиями могут быть
            машинный сбой, ошибка, обнаруженная операционной системой,
            переполнение, деление на ноль или извлечение квадратного корня из отрицательного
            числа и т. п. При А. з. операционная система предпринимает меры по
            сохранению работоспособности вычислительной системы, выдает информацию
            об аварийной ситуации, освобождает ресурсы, занятые задачей, и при
            возможности продолжает решение других задач. Ср. аварийный останов

            АВАРИЙНЫЙ ОСТАНОВ, авост [abrupt end, abend]. Автоматическое
            прекращение работы компьютера из-за отказа аппаратных средств или
            программного обеспечения. Ср. аварийное завершение

            АВАРИЙНЫЙ СИГНАЛ [alarm]. Сигнал, предупреждающий пользователя о
            возникновении чрезвычайной ситуации в работе вычислительной системы. Обычно это сообщение об ошибке или сбое в работе программных или
            аппаратных средств, сопровождаемое звуком. А. с. предваряет аварийное
            завершение или сопровождает аварийный останов

            АВАРИЯ [crash]. Неожиданный выход из строя программных или
            аппаратных средств. А. программы приводит к потере всех несохраненных данных и
            может потребовать перезагрузки операционной системы. А. аппаратных
            средств может привести к потере работоспособности всей вычислительной
            системы. Последствия такой А. устраняются ремонтом или заменой
            неисправных блоков. При этом возможны информационные потери. Например,
            при А. диска могут разрушиться хранящиеся на нем данные
            ABM [analog computer]. To же, что аналоговая вычислительная машина

            АВОСТ [abend, abrupt end]. To же, что аварийный останов

            АВТОКОД, язык ассемблера [autocode, assembly language]. Простейший язык
            программирования, ориентированный на конкретный компьютер. По форме
            и содержанию А. наиболее близок к машинному языку. Структура команд А.
            определяется структурой команд и данными машинного языка, но, в
            отличие от последнего, А. допускает применение буквенных обозначений для
            кодов операций к адресов. Например, на А. формула X = Y+ Ζ
            программируется следующим образом:
            MOV AX, Y; Загрузить Υ в регистр
            MOV ВХ, Ζ; Загрузить Ζ в регистр
            ADD АХ, ВХ; Добавить Ζ κ Υ
            MOV X, АХ; Сохранить результат в X
            А. может иметь макросредства и средства управления трансляцией.
            Трансляция программы с А. осуществляется программой-ассемблером

            АВТОМАТ [automation, automata]. 1. То же, что автоматическое устройство.
            2. То же, что конечный автомат

            АВТОМАТИЗАЦИЯ [automation, OLE automation]. 1. Система мероприятий
            по замене труда человека работой машин. 2. Способ управления
            программными объектами, используемый при связывании и внедрении объектов. А.
            позволяет одному приложению, которое называется клиентом А. или
            контроллером Α., использовать объекты и средства другого приложения, которое
            называется сервером А. Например, все приложения пакета программ
            Microsoft Office являются как клиентами, так и серверами А. См. связывание и
            внедрение объектов

            АВТОМАТИЗИРОВАННАЯ ОБУЧАЮЩАЯ СИСТЕМА (АОС) [automated
            training system, computer based training system (CBT)]. Комплекс
            программных, технических и учебно-методических средств, предназначенных для
            активного индивидуального обучения человека на основе программного
            управления этим обучением. Работа с АОС ведется в режиме диалога и
            напоминает диалог ученика с педагогом-репетитором. АОС делятся на
            специализированные, предназначенные для обучения одному какому-либо
            предмету, и универсальные, обеспечивающие возможность эффективного обучения
            нескольким предметам. Основу специализированных систем составляют
            обучающие программы, написанные на традиционных языках
            программирования, например, на Паскале или Си. К специализированным АОС относятся
            и тренажеры, управляемые компьютером. Универсальные системы
            располагают проблемно-ориентированным языком и специальными средствами
            программирования педагогами сценария обучения и программ управления
            обучением. Б состав универсальных АОС входят также библиотека программ
            управления познавательной деятельностью, архив данных о процессе
            обучения каждого обучаемого, средства дружественного интерфейса и т. п. АОС
            развиваются на базе как серийной вычислительной техники (персональные
            компьютеры, локальные вычислительные сети), так и специально созданных
            тренажеров. Обучаемый может работать с АОС как индивидуально, так и в
            условиях класса автоматизированного обучения. Развитием АОС являются
            интеллектуальные обучающие системы. Ср. обучающая программа, обучающее
            приложение к программному продукту

            АВТОМАТИЗИРОВАННАЯ ПОДГОТОВКА [computer-based training (CBT)].
            То же, что обучающее приложение к программному продукту

            АВТОМАТИЗИРОВАННАЯ РАЗРАБОТКА ПРОГРАМ, инструмент CASE
            [computer-aided software engineering (CASE), CASE-tool]. Набор
            согласованных средств разработки программ, в число которых входят языки визуального
            моделирования, генераторы кода и документации, автоматизированные
            средства тестирования, редакторы, компиляторы и другие компоненты. Как
            правило, инструмент А. р. п. ориентирован на определенный процесс
            разработки программного обеспечения и компоненты инструмента А. р. п. строго
            соответствуют фазам выбранного процесса. Ср. инструментальные
            программные средства

            АВТОМАТИЗИРОВАННАЯ СИСТЕМА [automated system]. Система
            программных и аппаратных средств, предназначенных для автоматизации
            процесса деятельности человека. Б отличие от автоматической системы А. с.
            всегда функционирует при участии человека. И человек является ее главным
            звеном. См. автоматизированная обучающая система, автоматизированная
            система управления, автоматизированное рабочее место, система
            автоматизированного проектирования

            АВТОМАТИЗИРОВАННАЯ СИСТЕМА УПРАВЛЕНИЯ(АСУ) [automated
            control system]. Комплекс программных и технических средств
            автоматизации управления различными объектами. Б отличие от систем
            автоматического управления в АСУ сбор и обработку информации, необходимой для
            выработки управляющих воздействий, осуществляют автоматические
            устройства — приборы и компьютеры, а окончательное решение принимает
            человек. Ср. офисное приложение

            АВТОМАТИЗИРОВАННОЕ ПРОЕКТИРОВАНИЕ [computer-aided design
            (CAD)]. См. система автоматизированного проектирования

            АВТОМАТИЗИРОВАННОЕ РАБОЧЕЕ МЕСТО(АРМ) [automated working
            place, workstation]. 1. Вычислительная система, предназначенная для
            автоматизации профессиональной деятельности. Основу АРМ составляет ЭБМ
            {персональный компьютер или рабочая станция), снабженная
            специализированным программным обеспечением. Наибольшее распространение получили
            АРМ для проектировщиков, конструкторов, технологов, исследователей,
            бухгалтеров, администраторов и т. п. АРМ позволяет существенно увеличить
            производительность труда профессионала. Например, конструкторы имеют
            A
            75
            возможность посвятить свое время целиком процессу конструирования,
            поскольку расчеты и подготовку чертежей машина «берет на себя». С помощью
            таких устройств, как световое перо или графический планшет, конструктор
            может быстро и легко вносить любые изменения в проект и тут же
            наблюдать результат на экране дисплея. При этом компьютер может представить
            какую-либо часть чертежа или проектируемой детали в увеличенном
            масштабе или под различными углами зрения. АРМ работают либо автономно,
            либо в составе локальной вычислительной сети. 2. Программное обеспечение
            автоматизации профессиональной деятельности

            АВТОМАТИЧЕСКАЯ СИСТЕМА[automatic system]. Система программных
            и аппаратных средств, функционирующая самостоятельно, без участия
            человека. Ср. автоматизированная система

            АВТОМАТИЧЕСКИЙ ПЕРЕХОД НА НОВУЮ СТРОКУ [word-wrap]. To же,
            что выравнивание текста. См. перенос слов

            АВТОМАТИЧЕСКИЙ ПОВТОР НАЖАТИЯ КЛАВИШИ[typematic].
            Автоматическое повторение ввода символа или команды, вызванное
            удерживанием соответствующей клавиши в нажатом состоянии. Например, при
            однократном нажатии клавиши <Page Down> на экране появится следующая
            страница, а если клавишу нажать и не отпускать, команда смены страницы
            будет автоматически повторяться, что приведет к листанию страниц.
            Продолжительность времени между двумя повторениями для клавиатуры
            персонального компьютера можно регулировать с помощью специальных команд
            операционной системы, например команды mode в MS-DOS или с помощью
            Панели управления Windows. Например, на рис. АЛ показано окно для
            настройки клавиатуры в операционной системе Windows

            АВТОМАТИЧЕСКИЙ СИНТЕЗ ПРОГРАММ [automatic program synthesis].
            Автоматическая генерация программы по некоторой спецификации. В
            зависимости от метода спецификации программы А. с. п. подразделяют на
            несколько категорий. Если спецификация задана в виде формального
            логического условия, связывающего входные и выходные данные, то говорят о
            дедуктивном А. с. п. Если спецификация задана в виде набора примеров, то
            говорят об индуктивном А. с. п., а если в виде формального, но
            неалгоритмического описания задачи, например, в виде диаграмм, то говорят о
            трансформационном А. с. п. Для А. с. п. обычно применяют методы
            искусственного интеллекта. В общем случае задача А. с. п. алгоритмически
            неразрешима, т. е. не существует алгоритма, который бы по произвольной
            спецификации строил соответствующую программу, однако известно множество
            частных, но практически важных случаев, в которых А.Л
            ΛΧ
            Скорость повтора:
            Ниже
            Короче
            Выше
            Нтобы проверить скорость повтора, поместите курсор в
            поле, нажмите любую клавишу и не отпускайте ее:
            Скорость мерцания курсора
            Ниже
            Выше
            ГЖ
            Отмена

            АВТОМАТИЧЕСКОЕ СОХРАНЕНИЕ, автосохранение [autosave].
            Сохранение, выполняемое программой с заданной периодичностью или после
            определенного числа нажатий клавиш. А. с. служит гарантией от случайных
            потерь данных. Оно применяется в приложениях Windows, периодически
            сохраняя изменения, вносимые в документ. Например, в редакторе
            MS Word можно установить периодичность А. с. от одной минуты до двух
            часов

            АВТОМАТИЧЕСКОЕ УСТРОЙСТВО, автомат [automation]. Устройство,
            способное функционировать без непосредственного участия человека

            АВТОНОМНАЯ ПРОГРАММА [autonomy program, stand-alone program].
            Программа, не зависящая от других программ в составе данной программной
            системы. Например, программа в виде загрузочного модуля, имеющая свои
            собственные средства инициализации и не требующая для своего
            выполнения управляющих действий операционной системы

            АВТОНОМНОЕ УСТРОЙСТВО [autonomy device, autonomy unit].
            Устройство, работающее независимо от других устройств вычислительной системы

            АВТОНОМНЫЕ ИСПЫТАНИЯ ПРОГРАММЫ [stand-alone program tests].
            Испытания программы по частям или целиком, но независимо от других
            программ, с которыми испытуемая программа должна взаимодействовать.
            Ср. комплексные испытания программного продукта. См. испытание программы

            АВТОРИЗАЦИЯ [authorization]. 1. Процесс проверки имеющихся у
            пользователя прав и разрешений на доступ к ресурсу. См. аутентификация. 2.
            Предоставление пользователю определенных полномочий на выполнение
            некоторых работ в вычислительной системе. Ср. права доступа

            АВТОРСКАЯ СИСТЕМА [authoring system]. То же, что система
            автоматизации авторской работы

            АВТОРСКИЙ ЯЗЫК[authoring language]. Язык программирования высокого
            уровня, используемый для создания продуктов мультимедиа, презентаций, а
            также программ, баз данных и материалов для автоматизированных
            обучающих систем

            АВТОСОХРАНЕНИЕ [autosave]. To же, что автоматическое сохранение

            АГЕНТ [agent]. Программа, действующая от имени пользователя, выполняя
            специфические функции в фоновом режиме. Выполнив задачу, программа
            А. сообщает об этом пользователю

            АГРЕГАЦИЯ [aggregation]. Б унифицированном языке моделирования UML
            форма ассоциации, описывающая отношение типа «часть—целое» между
            объектами. Отношение А. является менее строгим по сравнению с отношением
            композиции: часть может принадлежать нескольким целым и прекращение
            существования целого не означает прекращения существования его частей

            АДА [Ada]. Универсальный язык программирования высокого уровня,
            ориентированный на разработку программного обеспечения компьютеров, встроенных в
            системы автоматизированного управления. Назван в честь Августы Ады Лав-
            лейс, считающейся первым в мире программистом. Первая версия Α.,
            разработанная в США под руководством Дж. Ишбиа, появилась в 1980 г.
            Последняя версия, Ада-95 — в 1995 г. А. обладает средствами программирования
            процессов, протекающих параллельно в реальном времени. Программы на
            языке А. имеют модульную структуру, допускающую раздельную
            компиляцию модулей. Кроме того, в стандарте языка А. помимо собственно языка
            программирования впервые была определена и его поддерживающая среда
            программирования, т. е. средства разработки, корректировки и модернизации
            программ. Бее это позволяет создавать на языке А. очень большие
            программные проекты, например, программное обеспечение систем астронавигации

            АДАПТЕР [adapter]. Электронная схема, позволяющая приспособить друг к
            другу устройства с различными способами представления данных.
            Например, аналоговое устройство нельзя напрямую соединить с цифровым
            устройством: для этого аналоговый сигнал должен быть сначала преобразован в
            цифровой или наоборот. Чтобы связать два несовместимых компонента
            аппаратных средств, требуется устройство сопряжения, важной составляющей
            которого и является А. Обычно А. монтируется на отдельной плате. См.
            адаптер дисплея, звуковой адаптер

            АДАПТЕР ДИСПЛЕЯ, видеоадаптер, видеокарта [display adapter, video-
            adapter, videocard]. Адаптер, согласующий обмен графической информацией
            между центральным процессором и дисплеем. А. д. преобразует данные,
            поступающие из компьютера в цифровой форме, в соответствующее
            изображение на экране. Цифровой код текста или графического изображения
            размещается центральным процессором в видеопамяти. А. д. периодически
            «просматривает» содержимое видеопамяти или ее отдельных частей и по
            хранящемуся там коду «рисует» нужное изображение на экране дисплея.
            При этом он устанавливает формат экрана, управляет курсором и
            цветовыми характеристиками изображения. А. д., как правило, имеет несколько
            режимов работы, которые характеризуются типом отображаемой информации
            (текстовая или графическая), количеством используемых цветов,
            разрешающей способностью и размерами символов. См. текстовый режим, графический
            режим. А. д. современных персональных компьютеров позволяет выводить на
            экран дисплея изображения, получаемые с видеокамеры, видеомагнитофона
            или любого другого источника видеосигнала. Он состоит из четырех
            основных устройств: видеопамяти, видеоконтроллера, цифроаналогового
            преобразователя (ПАП) и постоянного запоминающего устройства (ПЗУ), которые
            могут монтироваться на отдельной плате, называемой видеоплатой или
            видеокартой. Видеопамять служит для хранения изображения.
            Видеоконтроллер отвечает за вывод изображения из видеопамяти на монитор и
            обработку запросов центрального процессора. ЦАП служит для преобразования
            формируемых видеоконтроллером цифровых видеоданных в аналоговый
            видеосигнал. В ПЗУ записаны наиболее универсальные программы управления
            выводом изображения на экран, экранные шрифты, служебные таблицы и
            т. п. ПЗУ не используется видеоконтроллером напрямую — к нему
            обращается только центральный процессор, и в результате выполнения им
            программ происходят обращения из ПЗУ к видеоконтроллеру и видеопамяти.
            ПЗУ необходимо только для первоначального запуска адаптера и работы в
            режиме MS-DOS; операционные системы с графическим интерфейсом —
            Windows или OS/2 — не используют ПЗУ для управления адаптером. Для
            ускорения вывода изображения на экран на плату адаптера могут
            устанавливаться дополнительные микросхемы — акселераторы или графические
            сопроцессоры. В IBM PC применяются следующие А. д., указанные в порядке
            возрастания графических возможностей: EGA (Enhanced Graphics Adapter) —
            A
            79
            улучшенный графический адаптер. Его максимальная разрешающая
            способность 640×350 пикселов. Может выводить одновременно 16 из 64 цветов.
            VGA (Video Graphics Adapter) — видеографический адаптер. Имеет
            текстовый режим 720×400 пикселов и графический режим 640×480 пикселов.
            Одновременно выводит 256 цветов. SVGA (Super VGA) — улучшенный VGA.
            Так обычно называются выпускаемые в последнее время различными
            фирмами платы, превосходящие по своим возможностям VGA. Разрешающая
            способность адаптеров некоторых фирм доходит до 1600×1280 и более
            пикселов. Количество выводимых цветов может достигать 16,7 млн. Также
            добавляются расширенные текстовые режимы вплоть до формата 132×50
            знакомест. Многие фирмы выпускают адаптеры с улучшенными
            характеристиками, поддерживающие нестандартные режимы

            АДАПТЕР PCMCIA [PCMCIA-adapter]. Тип адаптера, разработанный
            Международной ассоциацией производителей карт памяти для персональных
            компьютеров (PCMCIA). Предназначен для использования на портативных
            компьютерах. A. PCMCIA имеет небольшой размер и потребляет мало
            электроэнергии. Частота, на которой работает шина данных для его подключения,
            обычно равна 8,33 МГц

            АДАПТИВНАЯ ДИФФЕРЕНЦИАЛЬНАЯ ИМПУЛЬСНО-КОДОВАЯ
            МОДУЛЯЦИЯ (АДИКМ) [adaptive differential pulse code modulation (ADPCM)].
            Способ кодирования и сжатия данных о звуковых сигналах в цифровой
            форме. Позволяет передавать оцифрованную речь со скоростью свыше
            32 Кбит/с. Применяется при записи звуковых фрагментов на компакт-
            дисках. Стандарт АДИКМ разработан Международным советом по мультимедиа

            АДАПТИВНАЯ СИСТЕМА [adaptive system]. Система, автоматически
            настраивающаяся на условия применения. А. с. сама может изменять свои
            функциональные возможности в зависимости от изменения условий
            внешней среды. Например, операционная система Windows автоматически
            приспосабливается к имеющейся конфигурации компьютера
            АДАПТИВНОСТЬ [adaptively]. Способность устройств или программ
            изменять свои параметры в связи с изменениями в них самих или в зависимости
            от условий применения для повышения эффективности

            АДДИТИВНЫЙ ЦВЕТ [additive color]. Цвет, порожденный излучающим
            объектом. При смешении А. ц. осветляются, смешение трех основных А.
            ц. — красного, зеленого и синего — дает белый цвет. При попарном
            смешении основных А. ц. получают основные субтрактивные цвета

            АДИКМ [ADPCM]. То же, что адаптивная дифференциальная импульсно-
            кодовая модуляция

            АДМИНИСТРАТОР [administrator]. 1. То же, что системный администратор.
            2. То же, что администратор базы данных

            АДМИНИСТРАТОР БАЗЫ ДАННЫХ, администратор [database administrator].
            Человек или группа лиц, ответственные за состояние, развитие и
            использование базы данных организации или учреждения. А. б. д. обеспечивает
            работоспособность базы данных, контролирует и поддерживает полноту,
            правильность, непротиворечивость и целостность данных, необходимый уровень
            защиты данных. Он взаимодействует с пользователями и программистами,
            программы которых используют доступ к базе данных. Роль А. б. д.
            аналогична роли системного инженера, сопровождающего операционную систему

            АДРЕС [address]. 1. Номер, код или идентификатор места в памяти
            компьютера, где хранится или куда должна быть записана данная информация.
            Например, номер байта оперативной памяти или номер дорожки магнитного
            диска, имя внешнего устройства или узла сети. Различают логические и
            физические А. Логический А. указывается в машинной программе. При загрузке, а
            также при переадресации он преобразуется в зависимости от места,
            занимаемого программой и данными в оперативной памяти, в физический Α.,
            закрепленный в вычислительной системе за реально существующим
            запоминающим устройством или его частью. Это преобразование выполняется
            соответствующим программным обеспечением и аппаратными средствами. См.
            адресация. 2. Часть команды, определяющая местоположение операнда.
            3. Часть сообщения, указывающая адресат

            АДРЕС КОМАНДЫ [instruction address]. Адрес ячейки памяти или первого
            байта области памяти, которая занята командой

            АДРЕС ОПЕРАНДА [source address]. Адрес ячейки памяти или первого байта
            области памяти, откуда извлекается операнд

            АДРЕС IP[IP-address]. 1. Уникальный адрес, идентифицирующий узлы или
            компьютеры в сети, управляемой протоколами TCP/IP. В сети,
            представляющей собой объединение нескольких подсетей, указывает информацию
            маршрутизации. A. IP представляет собой 32-разрядное значение, которое
            идентифицирует данный компьютер. Каждый байт A. IP представляется
            десятичным числом и отделяется от других десятичной точкой. 2. То же, что
            интернет-адрес

            АДРЕСАТ [target]. Обладатель адреса (лицо, программа, устройство или
            компьютер), которому предназначаются сообщение, команда или данные.
            Например, А. считается и почтовый ящик, в который приходит сообщение
            по электронной почте, и пользователь — владелец этого ящика. Также А.
            является дисковод, на который послал команду центральный процессор, и
            программа, для которой с диска считываются данные

            АДРЕСАЦИЯ [addressing]. Определение операнда в машинной команде.
            Способ вычисления физического адреса и выполнения операций над адресными
            регистрами. Рассмотрим наиболее распространенную схему А. Чтобы при
            выполнении программы устройство управления могло определить, какую
            команду необходимо выполнить в данный момент, и найти данные,
            указанные в этой команде, вся основная память машины делится на отдельные
            адресуемые ячейки — байты или машинные слова. Каждому байту или слову
            присвоен уникальный физический адрес. В традиционной схеме А. эти адреса
            являются номерами, начиная от нуля с шагом единица. Таким образом, к
            любой команде или элементу данных можно обратиться по адресу его
            самого левого элемента. При таком абсолютном методе А. адрес 1234 означает
            1235-й байт или машинное слово при условии, что отсчет ведется от
            нулевой ячейки памяти. Однако при режиме мультипрограммирования место,
            занимаемое программой в оперативной памяти, зависит от наличия и
            расположения в ней других программ. Поэтому необходимо, чтобы программы
            были перемещаемыми, т. е. адреса внутри программ должны отсчитываться
            относительно некоторого начального базового адреса программы, который
            должен быть перемещаемым. Это же требуется и при независимой
            трансляции подпрограмм и отдельных программных модулей, адреса которых также
            отсчитываются от базового адреса и называются относительными адресами
            или смещениями. При загрузке программы в зависимости от места,
            занимаемого программой или ее сегментом, определяется значение ее базового
            адреса, которое посылается в базовый регистр процессора, и физический адрес
            ячейки интерпретируется аппаратурой как сумма содержимого базового
            регистра и относительного адреса. Например, если адресная часть команды
            содержит 1200, а содержимое базового регистра равно 300, то операнд будет
            выбираться из ячейки с физическим адресом 1500. Внутри циклов, которые
            есть почти в каждой программе, работает одна и та же последовательность
            команд, а изменяются только адрес или величина той или иной
            переменной. Для определения значения адреса, изменяемого в цикле, применяется
            так называемый индексный регистр, содержимое которого отражает значение
            параметра цикла. Адрес операнда в командах цикла определяется как
            указанный в команде относительный адрес плюс содержимое базового регистра
            плюс содержимое индексного регистра. При таком методе А. все данные
            могут смещаться при перемещении программы путем изменения значения
            базового регистра, а индексный регистр способствует простой организации
            выборки в цикле. При трансляции программ, написанных на языках
            программирования высокого уровня, компиляторы сами выбирают регистры,
            необходимые для базирования и индексации, а компоновщики и загрузчики
            устанавливают их нужные значения. Для уменьшения потерь времени на
            вычисление физических адресов во время выполнения программы такое
            вычисление производится специальными быстрыми аппаратными средствами

            АДРЕСАЦИЯ С ИНДЕКСИРОВАНИЕМ[indexed addressing]. To же, что
            индексная адресация

            АДРЕСНАЯ КОНСТАНТА [address constant, A-constant]. Константа, которая
            либо является адресом, либо используется при вычислении адресов. Обычно
            это числовая константа или числовое выражение, значение которого
            является адресом или составной частью адреса

            АДРЕСНАЯ ССЫЛКА [address reference]. Ссылка в форме адреса

            АДРЕСНАЯ ШИНА [address bus]. Шина или часть шины, предназначенная
            для передачи адреса

            АДРЕСНОЕ ПРОСТРАНСТВО ЗАДАЧИ, адресное пространство процесса
            [process address space]. Множество логических адресов, по которым может
            обращаться задача. Система управления памятью устанавливает соответствие
            между А. п. з. и физической памятью ЭВМ, и при выполнении задачи для
            каждого логического адреса вычисляет физический адрес. См. адресация,
            управление памятью, виртуальная память

            АДРЕСНОЕ ПРОСТРАНСТВО ПРОЦЕССА [process address space]. To же,
            что адресное пространство задачи

            АДРЕСНОЕ ПРОСТРАНСТВО ЦЕНТРАЛЬНОГО ПРОЦЕССОРА [CPU
            address space]. Множество физических адресов ячеек оперативной памяти, с
            которыми может работать центральный процессор. Для машин, работающих в
            двоичной системе счисления, размер А. п. ц. п. составляет 2″ ячеек, где η —
            разрядность адресной шины процессора. Очевидно, этот размер ограничивает
            емкость оперативной памяти, на которую рассчитан процессор и к которой
            он может иметь прямой доступ. Реально физическая оперативная память
            может быть меньше или больше той, которую позволяет иметь А. п. ц. п. Если
            количество физических адресов, с которыми работает центральный
            процессор, меньше его адресного пространства, то оперативную память
            компьютера можно расширить. Для увеличения размера памяти сверх А. п. ц. п.
            должны применяться специальные программные и аппаратные средства. См.
            адресация, управление памятью, виртуальная память

            АДРЕСНЫЙ РЕГИСТР [address register]. To же, что регистр адреса

            АКСЕССУАРЫ [accessory]. Добавочные принадлежности к компьютеру или другому цифровому устройству.
            Например, сумка для ноутбука или чехол для смартфона

            АКТИВАЦИЯ, фокус управления [activation, focus of control flow]. 1. To же,
            что активизация. 2. Выполнение операции. А. представляет собой период
            времени, в течение которого объект выполняет операцию (непосредственно
            или с помощью подчиненных операций). Посредством А. моделируется не
            только длительность выполнения операции, но и отношения потока
            управления между взаимодействующими объектами. А. является одним из
            основных понятий унифицированного языка моделирования UML. В обычных языках
            программирования А. соответствует вызов процедуры

            АКТИВИЗАЦИЯ [activation]. Приведение объекта в состояние готовности к
            действию или использованию. Например, А. экранных объектов (панелей,
            меню, окон, кнопок и пр.) позволяет пользователю начать диалог с системой

            АКТИВИЗАЦИЯ ФАЙЛА [file activation]. To же, что открытие файла

            АКТИВНАЯ ПРОГРАММА [active program]. Программа, которой передано
            управление центральным процессором. Противоп. неактивная программа

            АКТИВНАЯ ЯЧЕЙКА [active cell]. Ячейка электронной таблицы, с которой
            в настоящий момент работает или может работать пользователь. Она
            идентифицируется координатами строки и столбца, к которым принадлежит, и
            выделяется на экране контрастной рамкой. В А. я. пользователь
            может ввести данные, отредактировать или отформатировать ее содержимое

            АКТИВНОЕ ОКНО [active window]. Окно, с которым в настоящий момент
            работает или может работать пользователь. На нем активизированы
            элементы управления, через него возможен ввод данных. При одновременном
            отображении на экране нескольких окон (рис. А.З) А. о. не перекрывается
            другими окнами и выделяется контрастным цветом рамки или заголовка,
            наличием мерцающего курсора и т. п. Чтобы сделать окно активным, как
            правило, достаточно навести на него указатель мыши и нажать ее левую
            кнопку. Противоп. неактивное окно

            АКТИВНЫЙ ДИСК[active disc]. To же, что текущий диск

            АКТИВНЫЙ ФАЙЛ[active file]. To же, что открытый файл

            АКТИВНЫЙ РАБОЧИЙ СТОЛ [active desktop]. Собирательное название
            новых возможностей, добавленных фирмой Microsoft к обычному рабочему
            столу. На А. р. с. можно разместить любой объект веб-страницы
            (встроенную графику, гипертекстовые ссылки и т. п.), браузера и любой
            компонент Всемирной паутины WWW (например, доступные по WWW
            справочники). Веб-страницы, перечисленные в папке Favorites (Избранное) или
            размещенные на А. р. с, автоматически обновляются операционной системой
            Windows. Компонентами А. р. с. также являются веб-объекты, специально
            предназначенные для расположения на рабочем столе. Их содержимое
            обычно представляет собой новости, прогноз погоды, биржевые котировки
            и другую подобную информацию. Б компонентах А. р. с. применяются те же
            технологии, что и в других веб-объектах

            АЛГОЛ [Algol]. Алгоритмический язык, разработанный в 1958 г.
            Первоначально А. не был языком программирования, так как предназначался лишь
            для обмена вычислительными алгоритмами между людьми. Название языка
            произошло от английских слов ALGOrithmic Language (алгоритмический
            язык) Б дальнейшем на основе А. были созданы языки программирования
            Алгол60 и Алгол68. Первая редакция языка программирования АлголбО,
            ориентированного на программирование численных решений научно-технических задач, была разработана П. Науром, Дж. Бэкусом и др. и
            опубликована в 1960 г. Б Алгол60 впервые были реализованы идеи блочной структуры
            программ, определения способов передачи параметров в процедуры,
            рекурсивных процедур. Для описания синтаксиса Алгол60 впервые был
            использован ставший классическим формальный язык Бэкуса—Наура. Идеи Алгол60
            получили свое развитие во многих языках программирования высокого
            уровня. Б 1966—1969 гг. на основе АлголбО был разработан новый язык Алгол68.
            По сравнению с Алгол60 он обладает большими возможностями при
            программировании ввода и вывода данных и обработки текстов. Кроме того, в Алгол68
            появились средства описания параллельно выполняемых операторов.
            Формальная строгость и общность описания сделали язык слишком сложным для
            широкого распространения. Это послужило толчком для создания более простого
            языка Паскаль

            АЛГОРИТМ [algorithm]. Содержание и последовательность операций, точно
            определяющие решение задачи путем вычислительного процесса,
            преобразующего исходные данные в конечный результат. Характеристиками
            алгоритма являются: 1) однозначность результата при заданных исходных данных;
            2) возможность разбиения процесса на конечное число отдельных операций,
            каждая из которых может быть выполнена человеком или вычислительной
            машиной; 3) способность получения результата для множества исходных
            данных, соответствующих множеству однотипных задач. Например, один из
            А. вычисления с помощью компьютера среднего арифметического трех
            чисел представляет собой следующую последовательность операций: ввод с
            клавиатуры трех чисел; вычисление суммы введенных чисел; деление
            полученной суммы на 3; вывод результата на экран дисплея. Б приведенном
            примере для записи А. был применен русский язык. Существуют специально
            созданные алгоритмические языки. Вычислительной машине А. задается в виде
            программы. Могут существовать несколько А. решения одной и той же
            задачи. Среди них следует выбирать наиболее эффективный, для вычислительной
            реализации которого требуется наименьшее количество операций, машинного
            времени, памяти и т. п. Изучение условий существования и способов
            построения (разработки) эффективных А. составляет основу теории алгоритмов

            АЛГОРИТМИЧЕСКИЙ ЯЗЫК [algorithmic language]. Язык,
            предназначенный для записи, разработки и изучения алгоритмов, а также для обмена
            алгоритмами между людьми. А. я. является важным средством обучения.
            Например, при изучении информатики в школах применяется т. н. школьный
            А. я., в котором используются понятные школьнику служебные слова на
            русском языке. Б отличие от языков программирования, А. я. независим от ЭБМ.
            Б нем нет деталей, связанных с устройством машины. Обычно при
            разработке языка программирования высокого уровня сначала создается А. я. с тем
            же названием. Кроме того, языки программирования используются для обме-
            86
            A
            на алгоритмами и для их опубликования в научных изданиях. Поэтому
            понятие «А. я.» часто применяется в качестве синонима понятия «язык
            программирования»

            АЛТ-ВВОД СИМВОЛОВ [character alt-input]. Кодовый ввод символов с
            клавиатуры персонального компьютера. При нажатой клавише <Alt> следует
            набрать на малой цифровой клавиатуре код символа, после этого клавишу <Alt>
            отпустить. На экране появится тот символ, код которого был набран. Таким
            способом можно ввести любой допустимый вычислительной системой
            символ. Обычно при А.-в. с. применяется так называемая модифицированная
            альтернативная кодировка ГОСТа, первые 128 кодов которой
            являются десятичным представлением двоичного кода ASCII

            АЛУ [ALU]. To же, что арифметико-логическое устройство

            АЛФАВИТНО-ЦИФРОВОЕ ПЕЧАТАЮЩЕЕ УСТРОЙСТВО (АЦПУ) [line
            printer (LPT)]. To же, что линейный принтер

            АЛЬБОМНАЯ ОРИЕНТАЦИЯ СТРАНИЦЫ, ландшафтная ориентация
            страницы [landscape page orientation]. Такое расположение страницы, когда ее
            высота меньше ширины. Противоп. книжная ориентация страницы

            АЛЬФА-ВЕРСИЯ [alpha release]. Предварительная версия программы,
            предназначенная для альфа-тестирования

            АЛЬФА-КАНАЛ [alpha channel]. Дополнительный 8-разрядный канал,
            применяемый в некоторых графических платах кроме трех традиционных RGB-
            каналов. Б таких платах для кодирования цвета пиксела используются
            32 бита, причем младшие 24 бита содержат информацию о цвете,
            соответствующую RGB-каналам (по 8 бит на каждый цвет), а старшие 8 разрядов
            образуют А.-к. С его помощью можно формировать прозрачные области
            изображения, не зависящие от того или иного цвета

            АЛЬФА-ТЕСТИРОВАНИЕ[alpha testing]. Предварительная стадия
            испытания программы или программного обеспечения, предназначенная для общей
            оценки будущего программного продукта и определения необходимости
            включения в него тех или иных свойств. Ср. бета-тестирование

            АМЕРИКАНСКИЙ НАЦИОНАЛЬНЫЙ ИНСТИТУТ СТАНДАРТОВ(АНСИ)
            [American National Standards Institute (ANSI)]. Организация, определяющая
            стандарты, на основе которых в США разрабатываются аппаратные средства
            и некоторые виды программного обеспечения. Например, для языков С, Basic и
            SQL имеются стандарты, подготовленные ANSI

            АМЕРИКАНСКИЙ СТАНДАРТНЫЙ КОД ОБМЕНА ИНФОРМАЦИЕЙ [American standard code for information interchange, (ASCII)]. Стандартная
            A
            87
            схема кодирования текстовой информации, при которой каждый текстовый
            или управляющий символ представляется семиразрядным двоичным кодом.
            Этот код с отдельными модификациями используется в большинстве
            вычислительных систем. Многие клавиатуры при нажатии клавиши вводят в
            компьютер именно такой код. Зарубежные персональные компьютеры имеют
            набор ASCII-кодированных символов, в котором отсутствуют символы
            кириллицы (русские буквы), поэтому были созданы различные
            модификации таблицы А. с. к. о. и., дополненные буквами кириллицы. Бее эти
            модификации имеют общую кодировку первых 128 символов, совпадающую с
            А. с. к. о. и. Эти символы и их коды приведены в табл. А.1. Чтобы
            определить код символа по этой таблице, нужно к первому числу столбца, в
            котором находится символ, приписать справа первое число его строки.
            Например, символ # находится на пересечении столбца, первое число которого
            есть 010, и строки, первое число которой — ООП. Следовательно, его код
            0100011. Б литературе по программированию и при Алт-вводе символов
            применяется десятичная запись двоичного кода (см. двоичная система
            счисления). Например, код 0100011 символа # в десятичной системе счисления
            записывается числом 35. Обозначения: NUL — знак пробела; SON — начало заголовка; STX —
            начало текста; ЕТХ — конец текста; EOT — конец передачи; ENQ — запрос;
            АСК — подтверждение; BEL — звонок; BS — возврат на одну позицию;
            НТ — горизонтальная табуляция; LF — перевод строки; VT — вертикальная
            табуляция; FF — подача бланка; CR — возврат каретки; SO — переход на
            верхний регистр; SI — переход на нижний регистр; DLE — переключение
            кода; DC1, DC2, DC3, DC4 — управление устройствами 1, 2, 3 и 4
            соответственно; NAK — переспрос; SYN — режим синхронного ожидания; ЕТВ —
            конец передачи блока; CAN — отмена; ЕМ — конец носителя; SUB —
            замена; ESC — переход; FS — разделитель файла; GS — разделитель группы;
            RS — разделитель записи; US — разделитель блока; DEL — стирание

            АНАЛИЗ ТРЕБОВАНИЙ [requirements analysis]. Фаза процесса разработки
            программного обеспечения, во время которой анализируются требования и
            предметная область. На фазе А. т. разработчики фокусируют свое внимание
            на том, что им предстоит сделать, а на фазе проектирования — каким
            образом они будут это осуществлять

            АНАЛОГОВАЯ ВЫЧИСЛИТЕЛЬНАЯ МАШИНА (ABM) [analog computer].
            Вычислительная машина, которая обрабатывает информацию,
            представленную в форме непрерывно изменяемых физических величин, значения
            которых можно измерить. Такими величинами могут быть угловые или
            линейные перемещения, электрическое напряжение и пр., являющиеся аналогами
            математических переменных. Над аналоговыми величинами можно
            производить сложение, умножение, интегрирование и другие математические
            действия механическим или каким-либо физическим способом, измеряя
            результаты этих действий. Наибольшее распространение получили
            электронные АВМ. В них информация задается в виде электрического
            напряжения. Для решения математической задачи из элементов электрических
            цепей набирается электрическая схема, напряжение на выходе которой
            удовлетворяет тем же уравнениям, что и решение исходной математической
            задачи. Таким образом, напряжение является аналогом искомой
            математической переменной. Изменяя во времени параметры схемы, можно получать
            меняющиеся во времени решения. Поэтому физическое время также
            является аналоговой переменной в такой АВМ. К недостаткам АВМ относят
            сравнительно невысокую точность и малую универсальность, поэтому их
            используют в основном как управляющие устройства в различных системах
            управления и как измерительные устройства в системах сбора и обработки
            информации

            АНАЛОГОВАЯ ФОРМА ДАННЫХ [analog data form]. Способ
            представления, хранения и передачи данных в виде непрерывно изменяющихся в
            некотором диапазоне физических величин, таких как электрическое напряжение
            или электрический ток, или аналоговых сигналов. А. ф. д. применяется в аналоговых вычислительных машинах

            АНАЛОГОВОЕ УСТРОЙСТВО [analog device]. Устройство, в котором
            информация представляется в виде непрерывно изменяющихся в некотором
            диапазоне физических величин, таких как электрическое напряжение или
            электрический ток. См. аналоговый сигнал, аналоговая вычислительная
            машина. Противоп. цифровое устройство

            АНАЛОГОВЫЙ СИГНАЛ, непрерывный сигнал [analog signal, continuous
            signal]. Носитель информации в виде непрерывно изменяющегося
            электрического напряжения или электрического тока. Переменная во времени
            амплитуда А. с. соответствует количественной характеристике переносимой им
            информации и часто представляет измеренную физическую величину,
            например, температуру, скорость и т. п. Для обработки переносимой А. с.
            информации на компьютере необходим аналого-цифровой преобразователь. См.
            аналоговое устройство, аналоговая вычислительная машина. Противоп.
            дискретный сигнал, цифровой сигнал

            АНАЛОГО-ЦИФРОВАЯ ВЫЧИСЛИТЕЛЬНАЯ СИСТЕМА, гибридная
            вычислительная система [hybrid computer]. Вычислительная система, в которой
            сочетаются элементы аналоговых и цифровых вычислительных машин. Обычно
            в таких системах аналоговые устройства используются для решения
            уравнений, описывающих исследуемое явление или процесс в натуральном
            масштабе времени, а цифровые устройства — для хранения результатов
            решения, их последующей обработки и выдачи полученных данных в форме,
            удобной для восприятия человеком. Для преобразования непрерывно
            меняющихся во времени аналоговых величин в эквивалентные значения
            цифровых кодов здесь применяются специальные устройства —
            аналого-цифровые преобразователи. См. аналоговый сигнал, цифровой сигнал

            АНАЛОГО-ЦИФРОВОЙ ПРЕОБРАЗОВАТЕЛЬ (АЦП) [analog-to-digital
            converter (ADC)]. Устройство для автоматического преобразования аналогового
            сигнала в цифровой сигнал. Например, для автоматической обработки
            экспериментальных данных поступающие с измерительных приборов непрерывно
            меняющиеся во времени аналоговые величины с помощью АЦП
            преобразуются в эквивалентные значения цифровых кодов, которые вводятся в
            компьютер. Противоп. цифроаналоговый преобразователь

            АНИМАЦИОННАЯ ПОСЛЕДОВАТЕЛЬНОСТЬ [animation path].
            Последовательность изображений, быстрая смена которых на экране создает
            иллюзию движения объекта. См. анимация, твининг

            АНИМАЦИЯ [animation]. Создание иллюзии движения объекта на экране
            дисплея. Б основе А. лежит быстрая смена последовательно смещаемых
            относительно друг друга образов. Существует несколько способов Α.,
            реализуемых в различных системах программирования. При одном способе на
            экране быстро рисуются и стираются последовательные фазы движения. При
            другом фазы заранее рисуются в виде полноэкранных кадров и
            запоминаются в памяти компьютера, чтобы затем последовательно отобразиться на
            экране. Б развитых системах применяются средства Α., для которых
            достаточно задать изображение объекта и его начальное и конечное положение.
            Качество А. зависит от скорости смены кадров. Чем выше скорость, тем
            плавнее движение. Современные компьютеры позволяют выполнять до
            30 смен кадров в секунду

            АНТИВИРУСНАЯ ПРОГРАММА [antivirus program]. Обслуживающая
            программа, предназначенная для поиска, диагностики, профилактики и «лечения»
            файлов, зараженных компьютерным вирусом. Б процессе поиска и
            диагностики определяются зараженные файлы и тип вируса. Профилактика
            позволяет предотвратить заражение. Например, резидентная А. п. предотвращает
            несанкционированное пользователем изменение файлов операционной
            системы, запись в сектор начальной загрузки и т. п. Лечение подразумевает
            удаление вируса, восстановление поврежденных файлов и т. п.

            АОС [automated training system]. To же, что автоматизированная обучающая
            система

            АППАРАТНОЕ ОБЕСПЕЧЕНИЕ, техническое обеспечение [hardware].
            Совокупность входящих в состав вычислительной системы аппаратных средств,
            необходимых для ее функционирования. А. о. составляют процессоры,
            внешние устройства, линии связи и т. д. Они технически обеспечивают
            эффективную работу системы, ее способность предоставлять пользователю
            определенные виды обслуживания. Этот термин определяет часть вычислительной
            системы, не являющуюся программным обеспечением

            АППАРАТНОЕ ПРЕРЫВАНИЕ [hardware interrupt]. Прерывание, причиной
            которого является событие, произошедшее в аппаратных средствах. См.
            обработка прерываний, внешнее прерывание, внутреннее прерывание, прерывание
            от схем контроля

            АППАРАТНО-НЕЗАВИСИМЫЙ [hardware independent, device independent].
            Независимый от технических характеристик аппаратных средств
            конкретной вычислительной системы. Например, А.-н. формат хранения точечных
            рисунков позволяет воспроизвести рисунок максимально точно независимо
            от разрешающей способности и других параметров принтера, влияющих на
            качество изображения

            АППАРАТНЫЕ СРЕДСТВА, технические средства, оборудование [hardware].
            Электрические, электронные и механические схемы, блоки, приборы и
            устройства, составляющие материальную часть вычислительной системы. А. с.
            являются, например, и сам компьютер, и микросхемы, его составляющие.
            К А. с. также относятся дисплей, дисковод, принтер и пр. Противоп.
            программные средства

            АППАРАТНЫЙ [hardwired]. Реализованный аппаратными средствами.
            Противоп. программный

            АППАРАТНЫЙ БЛОК, блок [hardware block, block]. Конструктивно
            оформленная как единое целое совокупность взаимосвязанных устройств либо
            совокупность взаимосвязанных элементов или узлов одного устройства,
            выполняющих определенную функцию. Например, блок питания,
            обеспечивающий компьютер электроэнергией с заданными показателями, или
            системный блок, объединяющий основные устройства персонального компьютера

            АППАРАТНЫЙ КЛЮЧ [hardware key]. Реализованный аппаратными
            средствами ключ защиты от несанкционированного доступа и
            несанкционированного копирования. Например, при защите программ А. к. часто представляет
            собой устройство, присоединяемое к параллельному порту персонального
            компьютера. Защищаемая программа обращается к параллельному порту и
            запрашивает секретный код. Если А. к. к компьютеру не присоединен, то
            защищаемая программа определяет ситуацию нарушения защиты и
            выполняет соответствующие действия. Обычно А. к. сконструирован таким
            образом, что его присоединение не мешает пользоваться другими устройствами,
            например, принтером

            АППАРАТНЫЙ СБОЙ, машинный сбой, сбой [hardware failure, machine failure,
            failure]. Кратковременный отказ или ошибка в работе аппаратных средств
            вычислительной системы. Причинами, вызывающими А. с, как правило,
            являются изменение условий или несоблюдение правил эксплуатации
            оборудования, например, нестабильность питания, несоблюдение температурного
            режима, ненадежность соединений, попадание посторонних частиц в
            подвижные части и т. п.

            АППАРАТУРА [hardware, equipment]. Приборы и устройства, входящие в
            состав аппаратных средств вычислительной системы. Физическое
            оборудование компьютера

            АППЛЕТ [applet]. Прикладная программа. Термин А. получил
            распространение в последнее время в связи с технологиями Всемирной паутины WWW,
            позволяющей внедрять А. в веб-документы с целью построения
            интерактивных веб-страниц. Для создания таких А. обычно применяется язык
            программирования Java, поэтому часто их называют апплетами Java
            АППЛИКАЦИЯ, графическая заготовка, художественная заготовка, клипарт
            [clip art]. Заранее приготовленный графический рисунок или его фрагмент,
            предназначенные для вставки в документ. Современные графические и
            текстовые редакторы, а также настольные редакционно-издательские системы
            поставляются с библиотеками А.

            АРГУМЕНТ [argument]. Выражение, задающее объект или значение при
            обращении к процедуре, функции или макрокоманде, от которого зависит
            результат ее выполнения. См. фактический параметр

            АРИФМЕТИКО-ЛОГИЧЕСКОЕ УСТРОЙСТВО (АЛУ), арифметическое
            устройство (АУ) [arithmetic and logical unit (ALU)]. Часть процессора,
            выполняющая над данными арифметические, логические и другие машинные
            операции. Под контролем устройства управления в АЛУ из оперативной
            памяти поступают операнды, а из устройства управления — управляющие
            сигналы, указывающие, какую операцию над этими операндами следует вы-

            полнить и куда поместить результат по окончании работы. Например, при
            выполнении сложения двух чисел устройство управления обеспечивает
            выборку этих чисел из соответствующих ячеек оперативной памяти в АЛУ.
            Затем оно посылает сигнал «сложить» и после выполнения АЛУ операции
            сложения пересылает результат в нужную ячейку памяти или регистр. См.
            функциональная схема ЭВМ

            АРИФМЕТИЧЕСКИЕ ОПЕРАЦИИ [arithmetical operations]. Операции,
            выполняемые в соответствии с правилами арифметики. Б арифметико-
            логическом устройстве операндами и результатом А. о. является число. Б
            языках программирования операндами и результатом А. о. могут быть
            выражение, указатель и др. Б набор А. о. обычно входят: сложение (обозначается
            знаком +), вычитание (-), умножение (х или знак *, который труднее
            спутать с буквой х), деление (/) и возведение в степень (** или Т). Б языке
            программирования Си введены дополнительно две одноместные и одна
            двуместная А. о.: операция увеличения, или инкремент (+ +) и операция
            уменьшения, или декремент (- -) и операция деления по модулю (%).
            Операция увеличения увеличивает, а операция уменьшения уменьшает значение
            своего операнда на единицу. Существуют две возможности использования
            этих операций: первая, когда символы ++(—) находятся слева от
            операнда, — «префиксная» форма, и вторая, когда эти символы стоят справа от
            операнда, — «постфиксная» форма. Например, если а = 5 и ь = 5, то в
            результате операций + + а и — — ь переменные а и ь получат значения:
            а = 6, ь = 4. Тот же результат будет получен для а + + и ь — -. Однако
            префиксная и постфиксная формы различаются между собой, когда
            операция и ее операнд являются частью выражения. При этом действует правило:
            в префиксной форме значение операнда изменяется перед его
            использованием в выражении, а в постфиксной форме — после того, как значение будет
            использовано в выражении. Например, при а = 5 после выполнения
            оператора присваивания с = + + а будет с = биа = 6,а после выполнения
            оператора с = а + + будет с = 5, а = 6. Двуместная операция деления по
            модулю используется только в арифметике целых чисел. Ее результатом
            является остаток от деления целого числа, стоящего слева от знака операции
            %, на число, расположенное справа от него. Например, результатом
            арифметического выражения 7 % 3 (читается как «7 по модулю 3») будет 1, поскольку
            7 = 2 % 3 + 1

            АРИФМЕТИЧЕСКИЙ ОПЕРАТОР [arithmetic operator]. Б языках
            программирования — знак арифметической операции

            АРИФМЕТИЧЕСКИЙ СДВИГ [arithmetic shift]. Одновременный сдвиг всех
            разрядов числа без изменения позиции знака числа при сдвиге влево и с
            занесением значения знакового разряда в освободившиеся разряды при
            сдвиге вправо

            АРИФМЕТИЧЕСКИЙ УСЛОВНЫЙ ОПЕРАТОР [arithmetic IF statement].
            Условный оператор в языке Фортран, в котором проверяемое условие
            задается в форме арифметического выражения. А. у. о. имеет вид: if (A) ml, m2, m3,
            где а — арифметическое выражение, ml, m2, m3 — метки исполняемых
            операторов. Если значение выражения а отрицательно (а < о), то выполнение
            программы продолжается с оператора, помеченного меткой ml, если а = о,
            то управление передается оператору, помеченному меткой т2, если же
            а > о, то оператору, помеченному меткой тЗ. Например, после оператора if
            (к- 2) 23, 7, ίο при к < 2 управление передается оператору,
            помеченному меткой 23, при к = 2 — оператору, помеченному меткой 7, и при
            к > 2 — оператору, помеченному меткой ι о

            АРИФМЕТИЧЕСКИЙ ЦИКЛ [arithmetical cycle]. To же, что цикл со счетчиком

            АРИФМЕТИЧЕСКОЕ ВЫРАЖЕНИЕ [arithmetic expression]. Совокупность
            одной или нескольких констант, переменных, переменных с индексами и
            функций, соединенных знаками арифметических операций и скобками.
            Например, А. в. являются: 12.34, alfa, (а + в — с) * cos(3.14 * в).
            Значением А. в. является число. Последовательность выполнения операций в А. в.
            определяется скобками, а при их отсутствии устанавливается следующий
            порядок: 1) вычисление функций; 2) возведение в степень; 3) умножение и
            деление; 4) сложение и вычитание. Однотипные операции обычно
            выполняются последовательно слева направо

            АРИФМЕТИЧЕСКОЕ УСТРОЙСТВО (АУ) [arithmetical unit]. To же, что
            арифметико-логическое устройство
            АРМ [automated working place]. To же, что автоматизированное рабочее место

            АРТЕФАКТ [artifact]. Элемент информации, используемый или
            порождаемый в процессе разработки программного обеспечения (например, внешний
            документ или результат работы). А. может быть, например, модель,
            техническое задание или программный продукт

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

            АРХИВАТОР [archivator]. Программа или комплекс программ,
            выполняющие сжатие (архивирование) файлов для более компактного длительного
            хранения во внешней памяти и восстановление сжатых файлов в
            первоначальном виде (разархивирование). Б персональных компьютерах наиболее рас-
            пространены A. pkzip.exe/pkunzip.exe, arj.exe, rar.exe и в последнее время
            winzip.exe и winrar.exe. Бее они предоставляют возможность более
            компактного хранения файлов на дисках и позволяют: 1) упаковывать все,
            отдельные или соответствующие какому-либо шаблону файлы рабочего каталога в
            архивный файл; 2) добавлять файлы в архивный файл; 3) удалять файлы из
            архивного файла; 4) просматривать содержимое архивного файла;
            5) извлекать из архивного файла отдельные файлы или распаковывать все
            файлы архива; 6) создавать самораспаковывающиеся архивные файлы. См.
            сжатие данных

            АРХИВАЦИЯ [archivation]. To же, что архивирование

            АРХИВИРОВАНИЕ, архивация [archivation]. Сжатие одного или более
            файлов с целью экономии памяти и размещение сжатых данных в одном
            архивном файле. А. выполняется специальной программой — архиватором

            АРХИВНЫЙ ФАЙЛ [archived file]. 1. Файл, помещенный в архив. 2. Файл,
            являющийся результатом сжатия архиватора. В один А. ф. могут быть
            помещены несколько сжатых файлов. См. архиватор, сжатие файла

            АРХИТЕКТУРА [architecture]. Организационная структура системы,
            включающая в себя разделение системы на части, связи между этими частями,
            механизмы взаимодействия и основные принципы проектирования
            системы. См. архитектура вычислительной системы, архитектура компьютера,
            архитектура программного обеспечения

            АРХИТЕКТУРА ВЫЧИСЛИТЕЛЬНОЙ СИСТЕМЫ [computer system
            architecture]. Общая логическая организация вычислительной системы,
            определяющая процесс обработки данных и включающая архитектуру ЭВМ, а
            также структуру и характеристики программного обеспечения и принципы его
            взаимодействия с аппаратными средствами

            АРХИТЕКТУРА КЛИЕНТ-СЕРВЕР [client-server architecture]. Способ
            организации взаимодействия программ или компонентов многокомпонентной
            программы, подразумевающий наличие программы или компонента
            программы, называемой сервером, и одной или нескольких других программ или
            компонентов, называемых клиентами. Клиент имеет возможность
            асинхронно для сервера инициировать выполнение процедур сервера и получать
            результаты их выполнения. Как правило, А. к.-с. обеспечивает возможность
            нескольким клиентам взаимодействовать с сервером параллельно и
            независимо друг от друга. Программы, являющиеся информационными системами
            для доступа к базам данных, часто построены по А. к.-с. На основе А. к.-с.
            организовано взаимодействие программ, обеспечивающих работу Интернета.
            См. автоматизация, Всемирная паутина, связывание и внедрение объектов

            АРХИТЕКТУРА ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ [software architecture].
            Общая логическая организация системы программного обеспечения, вклю-
            чающая в себя разделение системы на модули, связи между ними,
            механизмы взаимодействия компонентов и основные принципы проектирования
            системы. См. архитектура

            АРХИТЕКТУРА СЕТИ, сетевая архитектура [network architecture]. 1. Общая
            логическая и техническая организация компьютерной сети, выраженная в
            виде совокупности сетевых аппаратных и программных решений, методов
            доступа и используемых протоколов. 2. Совокупность сетевых аппаратных и
            программных решений, методов доступа и используемых протоколов.
            Например, см. архитектура SNA

            АРХИТЕКТУРА, УПРАВЛЯЕМАЯ МОДЕЛЬЮ [model driven architecture
            (MDA)]. Концепция архитектуры программного обеспечения, в которой
            основным артефактом процесса разработки программного обеспечения является
            визуальная модель. Б качестве визуального языка моделирования используется
            унифицированный язык моделирования UML. А. у. п. предложена
            Консорциумом по объектным технологиям

            АРХИТЕКТУРА ФОН НЕЙМАНА, фоннеймановская архитектура [von
            Neumann architecture]. Архитектура ЭВМ, разработанная Джоном фон
            Нейманом. Она основана на следующих принципах: а) основными блоками
            вычислительной машины являются 1) центральный процессор, состоящий из
            устройства управления и арифметико-логического устройства, 2) память и
            3) устройства ввода/вывода; б) программа и данные хранятся в одной и той
            же линейно адресуемой памяти; в) устройство управления выбирает
            команды из памяти по очереди, одну за другой, интерпретирует их,
            соответственно управляет арифметико-логическим устройством, которое выполняет
            арифметические и логические операции над вызываемыми из памяти
            данными, и возвращает результат в память; г) устройства ввода/вывода
            используются для ввода программ и данных и вывода результатов расчетов
            АРХИТЕКТУРА ЭВМ [computer architecture]. 1. С точки зрения
            пользователя — это совокупность основных характеристик компьютера, таких как
            система команд, организация памяти, система адресации, операции ввода/
            вывода и управления и т. п. Компьютеры, имеющие одинаковую А. ЭВМ, с
            точки зрения программиста, являются совместимыми. Это означает, что
            независимо от конкретного исполнения их деталей и блоков компьютеры
            должны быть способны выполнить одну и ту же программу с одинаковым
            результатом. 2. С точки зрения разработчика вычислительной системы и
            конструктора аппаратных средств — это принцип действия, конфигурация и
            взаимное соединение основных логических узлов компьютера

            АРХИТЕКТУРА CISC [complex instruction set computing (CISC)].
            Архитектура процессора со сложной системой команд, каждая из которых выполняется
            в течение нескольких тактов процессора. Название дано в
            противоположность архитектуре RISC— процессоров с сокращенной системой команд,
            большинство из которых выполняется за один такт. К процессорам A. CISC
            относятся, например, широко распространенные процессоры компании
            Intel: от 8086 до 80486, а также процессоры семейства Pentium. Но в
            элементах этих процессоров часто используется архитектура RISC

            АРХИТЕКТУРА EISA [extended industry standard architecture (EISA)]. To же,
            что расширенная архитектура промышленного стандарта

            АРХИТЕКТУРА ETHERNET [architecture Ethernet]. Архитектура локальной
            вычислительной сети шинной топологии, разработанная компанией Xerox в
            1976 г. с последующей доработкой компаниями Intel и DEC. Б A. Ethernet
            управление доступом основано на методе CSMA/CD. На основе A. Ethernet
            Институтом инженеров по электротехнике и электронике (IEEE) и
            международной организацией по стандартизации (ISO) были разработаны стандарты
            IEEE 802.3 и ISO 8802.3, регламентирующие технологию сетей Ethernet.
            Связь между компьютерами в такой сети выполнена на коаксиальных
            кабелях. Скорость передачи данных до 100 Мбит/с. Б одной сети может работать
            до 1024 рабочих станций

            АРХИТЕКТУРА MDI [multi-document interface, multiple document interface
            (MDI)]. To же, что многодокументный интерфейс

            АРХИТЕКТУРА RISC[reduced instruction set computing (RISC)].
            Архитектура процессора с сокращенной системой команд, которые используются
            последовательно для выполнения более сложных операций. A. RISC
            характеризуется командами фиксированной длины, большим набором операций
            типа регистр—регистр и отсутствием косвенной адресации. Благодаря
            несложности команд и большому количеству регистров почти все команды
            занимают только один такт процессора, и поэтому он может работать на
            более высокой тактовой частоте, чем большинство процессоров
            архитектуры CISC. A. RISC обеспечивает простоту конструкции процессора и
            облегчает разработку трансляторов

            АРХИТЕКТУРА SNA [Systems Network Architecture (SNA)]. To же, что
            системная сетевая архитектура

            АСИНХРОННАЯ ПЕРЕДАЧА [asynchronous transmission]. To же, что
            асинхронная связь

            АСИНХРОННАЯ СВЯЗЬ, асинхронная передача [asynchronous connection,
            asynchronous transmission]. Режим передачи данных, при котором временной
            интервал передачи символа может изменяться, поскольку ограничен
            специальными синхронизирующими сигналами. Следовательно, при А. с. каждый
            передаваемый символ требует посылки дополнительных сигналов, но при
            этом не нужна синхронизация передающего и приемного устройств. Ср.
            синхронная связь

            АСПЕКТО-ОРИЕНТИРОВАННОЕ ПРОГРАММИРОВАНИЕ [aspect
            oriented programming (АОР)]. Новейшая парадигма программирования,
            нацеленная на упрощение программирования типичных и повторяющихся
            фрагментов программ. Например, пусть в программе требуется записывать
            определенную информацию в файл протокола. При обычном программировании
            потребуется вставить соответствующий фрагмент кода в каждое место
            программы, где требуется производить запись в файл протокола, причем эти
            фрагменты будут единообразны. Б А. о. п. такой фрагмент (он называется
            аспектом) требуется написать только один раз, а также указать, в каком
            контексте данный аспект должен быть применен. После этого аспекто-
            ориентированная система программирования автоматически сгенерирует
            необходимые фрагменты исходного кода и вставит их в нужные места

            АССЕМБЛЕР [assembler]. Общепринятое название транслятора с автокода

            АССОЦИАЦИЯ [association]. Б унифицированном языке моделирования UML
            семантическое отношение между двумя и более классификаторами,
            включающее в себя связи между их экземплярами. См. агрегация, композиция

            АССОЦИАЦИЯ ВЫЧИСЛИТЕЛЬНОЙ ТЕХНИКИ [association for
            computing machinery (ACM)]. Профессиональная организация предприятий и
            частных лиц, ведущих деятельность в сфере компьютерных технологий, в
            частности, занимающихся разработкой программ

            АССОЦИАЦИЯ СТАНДАРТОВ ПО ВИДЕОТЕХНИКЕ, индустриальный
            консорциум VESA, ассоциация VESA [Video Electronics Standards Association
            (VESA)]. Организация, занимающаяся разработкой стандартов
            видеоадаптеров и мониторов. Объединяет более 50 видеотехнических фирм.
            Консорциумом VESA была предложена специальная графическая шина VLB,
            обеспечивающая ускорение вывода изображения на экран

            АССОЦИАЦИЯ VESA [Video Electronics Standards Association (VESA)]. To же,
            что ассоциация стандартов по видеотехнике
            АСУ [automated control system]. To же, что автоматизированная система
            управления

            АТОМАРНЫЙ [atomic]. Действие или операция, выполняемые в виде
            единого блока, которые нельзя выполнить частично или прервать внешним
            событием. Как правило, атомарные операции невелики по размеру и просты
            (например, присваивание, простые арифметические или строчные
            вычисления). Атомарное вычисление происходит в определенной точке
            последовательности выполнения программы

            АТРИБУТ [attribute]. 1. Признак или свойство, характеризующие объект.
            Например, атрибутами выводимых на экран символов являются шрифт, цвет,
            размер и т. п. 2. Б реляционных базах данных — имя одного и того же поля
            всех кортежей одной таблицы. 3. Б языках разметки — свойство элемента.
            4. Б унифицированном языке моделирования UML А. называется именованное
            свойство какого-либо класса. Каждый объект этого класса содержит
            отдельное значение данного свойства. Ср. свойство класса

            АУ [arithmetic unit]. To же, что арифметико-логическое устройство

            АУДИОВИЗУАЛЬНЫЙ [audiovisual]. Определение, относящееся к данным,
            которые содержат изображение и его звуковое сопровождение, или к
            аппаратуре, воспроизводящей такие данные

            АУДИОДАННЫЕ, аудиоинформация .
            Информация о звуковых образах, представленная в цифровой форме,
            предназначенная для хранения, обработки и воспроизведения средствами
            вычислительной техники, а также для передачи по линиям связи. Примерами А.
            являются человеческая речь или музыкальное сопровождение
            видеоизображений, введенные в память компьютера. Ср. видеоданные.

            АУДИОИНФОРМАЦИЯ . 1. Звуковые образы,
            человеческая речь. 2. То же, что аудиоданные

            АУТЕНТИФИКАЦИЯ [authentication]. Процедура проверки правильности
            введенной пользователем регистрационной информации для входа в
            систему. А. используется для принудительного ограничения прав доступа к
            ресурсам и прав на выполнение операций в системе. См. пароль

            АУТЕНТИФИКАЦИЯ ЗАПРОС/ОТВЕТ [challenge/response authentication].
            То же, что аутентификация с запросом и ответом

            АУТЕНТИФИКАЦИЯ ПО СЕРТИФИКАТУ КЛИЕНТА [client certificate
            authentication]. Метод аутентификации, в котором идентичность
            пользователя проверяется без использования пароля. Проверка выполняется путем
            вычислений, в которых используются открытый ключ, хранящийся в цифровом
            сертификате пользователя, и закрытый ключ, находящийся в компьютере
            пользователя. См. шифрование с открытым ключом, шифрование с закрытым
            ключом

            АУТЕНТИФИКАЦИЯ С ЗАПРОСОМ И ОТВЕТОМ, аутентификация запрос/
            ответ [challenge/response authentication]. Защищенная процедура
            аутентификации, при которой сервер для контроля доступа использует алгоритмы типа
            запрос/ответ и систему безопасности операционной системы

            АЦП [analog-to-digital converter]. To же, что аналого-цифровой преобразователь

            АЦПУ [LPT]. То же, что линейный принтер

            АЭРОГРАФ [air brush]. Инструмент машинной графики, предназначенный
            для имитации разбрызгивания основным цветом.



            Всего данную страницу с 1998 года посетило: 124 посетителей


            Прежде, чем лететь к звездам

            А.Трубицин

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

            Полковник В. Г. Синельников:
            «За тренажерами – большое будущее»

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

            Как устроены тренажеры

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

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

            Тренажер модуля “Заря”,
            входящего в состав МКС.
            Шкафы внизу содержат модули УСО

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

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

            В качестве УСО используются
            PEP’овские машины
            (сейчас PEP — подразделение Kontron)
            под управлением ОS-9.

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

            Тренажеры виртуальные и реальные

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

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

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

            Еще одна разновидность тренажеров — специализированные, на которых отрабатывается определенная операция, например подлет к станции и стыковка. Хотя штатный режим стыковки — автоматический, реально в нем осуществляется лишь около половины стыковок. Другую половину приходится выполнять в ручном режиме. Чтобы добиться хороших навыков ручной стыковки, необходимо выполнить от 200 до 400 повторов операций, на что уходит от 50 до 80 тренировочных сеансов.

            Внутри стойки УСО.
            Количество каналов может
            достигать нескольких тысяч

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

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

            Как развивались тренажеры

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

            В первое время на борту и в тренажерах стояли простые, зачастую аналоговые вычислительные машины — МН-18. Затем по мере развития вычислительной техники они были заменены на цифровые ЭВМ — “Днепр”, М-220, М-222, ЕС ЭВМ.

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

            Первые распределенные вычислительные системы, которые строились в 1970-1980-е и состояли из четырех-шести больших вычислительных машин класса EC-ЭВМ и приблизительно из двух десятков СМ-ЭВМ, обеспечивали режим реального времени с характерной реакцией 100 мс. За этот период они успевали просчитать достаточно сложную динамику, обменяться между собой данными по каналам связи и представить информацию оператору. Тогда же была реализована схема распределенной тренажерной системы: — единый вычислительный комплекс обслуживал от семи додесяти тренажеров, работая одновременно на несколько тренировок.

            Крупный комплексный тренажер обслуживали три машины типа EC-1066, а также коммутационные ЭВМ и машины, которые использовались как комплексы УСО. Требования к тренажерам определялись возможностями вычислительной техники —- по мере поступления более мощных машин модели становились все сложнее, увеличивалась “глубина моделирования”.

            Любопытно, что штатной ОС для системы ЕС-ЭВМ была МVТ 6.1 — универсальная операционная система, предназначенная в первую очередь для пакетной обработки информации. Чтобы заставить ее функционировать в режиме реального времени, пришлось пойти на определенные ухищрения — разными способами перехватывать прерывания.

            Где-то в 1978-1979 гг. в ЦПК была создана система пакетной передачи сообщений в тренажерной сети ЭВМ. Для обмена информацией между разными процессами, исполнявшимися на различных машинах, обслуживающих тренажеры, была организована своеобразная почтовая служба: данные сопровождались заголовком, в котором указывались адреса отправителя и получателя и время генерации сообщения, а сформированный таким образом пакет попадал в коммуникационную машину, которая по таблицам коммутации определяла путь назначения. Пакеты были разной длины и могли адресоваться сразу нескольким адресатам. Проект разрабатывался независимо от развития технологии Ethernet, идея которой была сформулирована Робертом Меткалфом и Дэвидом Боггсом в 1973 г., а сетевой адаптер создан в 1982-м. Эта система увидела свет, когда летала орбитальная станция “Салют-7” (1982-1991), и использовалась на протяжении всей истории полетов станции “Мир”. Идеи сетевой передачи информации появлялись в различных проектах, поскольку это было обусловлено логикой развития вычислительной техники. В космических тренажерах ЦПК они нашли свое материальное воплощение, даже несколько опередив Ethernet, причем эти идеи сразу реализовывались для условий реального времени.

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

            Рассказывает Валерий Григорьевич Синельников, руководитель тренажерного управления Центра Подготовки Космонавтов им. Ю.А Гагарина. >— В конце 1970-х — начале1980-х годов был создан специализированный вычислительный комплекс тренажерной системы для подготовки космонавтов на базе ЕС-ЭВМ и СМ-ЭВМ. Затраты на его создание были большими, ведь в этой работе принимали участие большие коллективы специалистов нескольких институтов и предприятий. Долгие годы система успешно работала, и лишь в 90-е годы, с развалом кооперации электронной промышленности, когда закончился набор ЗИП и ЕСовские машины, не отличавшиеся повышенной надежностью (у них по паспорту допускался один сбой в четыре часа), начали выходить из строя, пришлось решать задачу продолжения эксплуатации. В комплексе могло быть занято до 20 машин, поэтому оказывалось, что каждый сбой происходит примерно через 30-40 мин. При этом экипаж в скафандрах не может ждать, когда перезагрузится вычислительный комплекс. Стали искать выход. Переход на современную технику означал переписывание огромного пакета программ, подготовленных на ассемблере и Фортране, на разработку которого были потрачены многие годы. Ведь была создана специальная распределенная оболочка, обслуживавшая комплекс, организованы необходимые каналы связи. Все было отлажено с учетом требований реального времени передачи информации. И мы столкнулись с такой проблемой — есть великолепный комплекс прикладного программного обеспечения, у которого отсутствует надежная аппаратная поддержка, так как старые аппаратные средства уже не выпускались из за развала промышленной кооперации.

            Пульт инструкторов —
            центр управления тренировкой

            Чтобы выйти из создавшегося положения, мы начали применять машины COMPAREX с системой команд совместимой с IBM серии 370 (у них надежность была значительно выше, чем у ЕС ЭВМ) и переносить на них в режиме имитации ОС ЕС МVТ 6.1 вместе со всем прикладным тренажерным ПО. Поскольку системы команд совпадали, основные проблемы при переносе возникли с канальными программами, из-за того, что у нас были нестандартные коммутаторы. Так как новые машины были более быстрыми, то пришлось потратить немало усилий, чтобы затормозить каналы ввода-вывода COMPAREX и привести их характеристики в соответствие с требуемыми. ЕСовские дисковые накопители сымитировали на уже появившихся ПК, для чего понадобилось разработать специальный адаптер, который представлялся ЕСовским диском. И в течение последних пяти лет, пока “долетывала” станция “Мир”, мы успешно проводили сложные комплексные тренировки на этом решении, практически без сбоев и отказов.

            Международная космическая станция…

            Современный этап развития тренажеров в ЦПК связан с началом проекта МКС. Он отличается тем, что сам объект моделирования — международная космическая станция — насыщен вычислительной техникой. При полном развертывании на МКС должно быть более двухсот компьютеров

            Управляющие компьютеры стандартизированы и выполняют каждый свою задачу: один поддерживает температуру, другой — контролирует газовый состав, третий — динамику и т. д. На американском сегменте станции это модули MDM на процессоре 386. Эти машины хорошо отработаны, имеют выход на шину MIL-1553, отличаются низким энергопотреблением и соответственно мало излучают тепла. Последнее очень важно, ведь в космосе излучаемое тепло — большая проблема, поскольку его необходимо отводить.

            Кроме управляющих компьютеров у экипажа есть лаптопы — обычные ноутбуки IBM ThinkPad 760-й серии в специальном космическом исполнении. Через них осуществляется выполнение всех операций на станции. Экипаж оснащается несколькими типами лаптопов — для управления станцией, для связи с центральным сервером и для информационной поддержки экипажа (электронная почта и т. п.). Одинаковые по аппаратному обеспечению, они имеют различные наборы ПО. Такой подход позволяет добиться повышенной надежности: если один компьютер выходит из строя, его легко заменить другим, просто перезагрузив набор программ. В результате у экипажа нет кнопок, а все управление осуществляется посредством лаптопа.

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

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

            Станция постоянно меняется — что-то привозится, что-то наоборот убирается. Причем американцы делают это целыми шкафами: эксперимент завершен — “Шаттл” забирает оборудование, заменяя его новым.

            …и ее тренажеры

            Сложность объекта моделирования поставила перед создателями тренажеров для проекта МКС новые задачи. Современные вычислительные системы на борту стали очень насыщенными и сложными. Создавать точную модель ее работы — задача бессмысленная. Поэтому берется готовая система и “обкладывается” средствами имитации. Получается даже не эмуляция бортовой системы, а ее перенос на аналогичную платформу, но в другом исполнении. Тренажер должен в первую очередь обеспечить бортовые компьютеры сигналами от всех недостающих частей комплекса, чтобы у него создать “впечатление” того, что он находится в космосе, а уж тот, в свою очередь, транслирует эти сообщения для экипажа. Естественно, что у бортовой системы собственные требования к скорости поступления информации, отличные от тех 100 мс, предельных для человека.

            Еще один момент. В МКС входит ряд российских и американских модулей, разрабатываются модули Европейского космического агентства и Японии, а также российский транспортный корабль. Хотя все они создавались отдельно, будучи состыкованными на орбите, они работают как единый комплекс с единой внешней динамикой. На американской части станции располагаются гиродины, поддерживающие ориентацию станции, а в российском сегменте — двигатели, с помощью которых время от времени осуществляется коррекция орбиты. Их деятельность тесно взаимосвязана, поэтому и тренажер должен отражать эту связь. Кроме того, у станции единая внутренняя среда — если повысилось содержание СО2, то это происходит по всему объему станции, разгерметизация также будет общей, как и пожар.

            Изнутри тренажер спускаемого
            аппарата
            «Союза-ТМА»
            в точности соответствует
            реальному кораблю

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

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

            Были созданы эмуляторы недостающих частей станции. В ЦПК отсутствует тренажер американского сегмента. Вместо этого стоит аппаратура, которая “подыгрывает”, эмулируя его. Она принимает исходные данные и выдает реакцию отсутствующего сегмента. Аналогично американский тренажер основного сегмента оснащен эмулятором российского сегмента станции. И хотя обмен между эмулятором и одноименным тренажером на другой стороне океана есть, он происходит уже не в режиме реального времени.

            Но тем не менее задача распределенного моделирования и организации взаимодействия между тренажерами стоит на повестке дня, если, конечно, будет развиваться кооперация в космическом пространстве. А пока экипаж вынужден тренироваться сессиями — то в Америке, то в России, причем по мере наращивания сегментов эти тренировки придется выполнять еще в Германии и Японии.

            Как создавались тренажеры МКС

            Когда начались переговоры специалистов ЦПК с НАСА по проекту МКС, стало ясно: несмотря на то что развитие тренажеров шло независимыми путями, техническая целесообразность привела к появлению похожих идеологий и решений, поэтому интегрировать их между собой было довольно легко. На нижнем уровне использовались открытые решения VME. На верхнем поначалу и отечественные, и американские специалисты использовали технику Silicon Graphics, поскольку в то время это были уникальные машины. При этом пришлось всю программную оболочку переносить на новую платформу. Сейчас в ЦПК установлены тренажеры орбитальных модулей “Звезда” и “Заря” и имитатор американского сегмента МКС, эмулирующий прохождение команд в этом сегменте.

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

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

            Перспективы развития тренажеров

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

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

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

            Тренажеры для школьников

            Донской филиал центра тренажеростроения в Новочеркасске открыл детский космоцентр, в котором собрал несколько тренажеров — макет корабля “Союз”, виртуальный тренажер МКС. Там же располагается тренажер вертолета “Черная акула”, используемого в качестве средства поиска спускаемого аппарата и спасения экипажа. В центре молодежь знакомится с современными технологиями, может попытаться, “будучи” на корабле “Союз”, пристыковаться к МКС и перейти на виртуальное рабочее место в российский или американский сегмент станции и выполнить там некоторые операции. Чтобы попробовать силы в стыковке, необходимо пройти соответствующую подготовку, ответить на вопросы по физике. Центр пользуется огромной популярностью у местных школьников.

            Аналогичная система тренажеров для образования развита и в Америке.

            Статья опубликована в PCWeek/RE № 12 от 13.04.2006 г.
            Печатается с разрешения редакции
            Статья помещена в музей 24.04.2006 года

            Самая сложная программа / Хабр

            От переводчика: я нашел на Quora вопрос: Какую программу или код можно назвать самыми сложными из когда-либо написанных? Ответ одного из учасников был настолько хорош, что вполне тянет на статью.

            Пристегни ремни.

            Самая сложная программа в истории была написана командой людей, имена которых нам неизвестны.

            Это программа – компьютерный червь. Червь был написан, судя по всему, между 2005 и 2010 годами. Поскольку этот червь является таким сложным, я могу дать лишь общее описание того, что он делает.


            Сначала червь появляется на USB диске. Кто-то мог найти диск, лежащий на земле, получить его по почте и заинтересоваться его содержанием. Как только диск вставлялся в компьютер c Windows PC, без ведома пользователя, червь автоматически запускал себя и копировал на этот компьютер. Существовало как минимум три способа, с помощью которых он мог себя запустить. Если не работал один, он пробовал другой. Как минимум два из этих методов запуска были абсолютно новыми и оба использовали две независимых, секретных ошибки в Windows о которых никто не знал до того момента, как появился этот червь.

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

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

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

            После этого червь копирует себя на любое другое USB устройство, которое вам пришлось вставить. Он делает это с помощью установки аккуратно разработанного ложного драйвера диска. Этот драйвер содержал цифровую подпись Realtek. Это означает, что авторы червя каким-то образом смогли пробиться в наиболее защищённое место крупной тайваньской компании и украсть самый секретный ключ компании так, что сама компания об этом не узнала.

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

            Червь, о котором мы говорим очень сложный. И мы ещё даже не начали.

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

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

            Червь ищет прикреплённые промышленные электрические моторы от двух конкретных компаний. Одна из этих компаний в Иране, а другая в Финляндии. Моторы, которые он ищет, называются «частотно-регулируемые приводы». Они используются для управления промышленными центрифугами. С помощью центрифуг можно очистить множество химических элементов.

            Например, уран.

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

            Но нет. Это сложный червь. И у червя есть другие планы.

            Как только он захватил все центрифуга в твоем заводе… червь просто засыпает.

            Проходят дни. Или недели. Или секунды.

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

            И затем, потихоньку, червь начинает крутить эти центрифуги… немножко неправильно. Совсем не намного. Просто, знаете, чуть-чуть слишком быстро. Или самую малость слишком медленно. Лишь немного за пределами безопасных параметров.

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

            Центрифуги не любят работать слишком быстро или слишком медленно. И камни им тоже не нравятся.

            Но у червя остался последний трюк. И он гениален.

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

            Червь проигрывал запись снова и снова, в цикле.

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

            А теперь представьте, что вы ответственны за очистку урана с помощью этого крупного промышленного завода. И вроде бы всё работает хорошо. Может двигатели звучат немного странно, но цифры на компьютере показывают, что моторы центрифуг работают так, как и положено.

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

            Что бы вы делали, если бы управляли этим заводом по обогащению урана? Вы бы проверяли всё снова и снова и снова, не понимая в чем проблема. Вы могли бы при желании поменять все компьютеры в заводе.

            Но центрифуги бы всё равно ломались. И у вас даже не было возможности узнать почему.

            Со временем, под вашим надзором, около 1000 центрифуг ломаются или отключаются. Вы сходите с ума в попытках выяснить, почему всё работает не так, как планировалось.

            Именно это и произошло на самом деле

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

            Создать программу, которая могла бы сделать ОДНУ из этих вещей само по себе маленькое чудо. Создать программу, которая может делать ВСЁ это и много другое…

            … для этого червю Stuxnet пришлось стать самой сложной программой из когда-либо написанных.

            Моделирование одноциклового процессора MIPS —

            число готов? описание присвоено в счет
            lab07 правда Моделирование одноциклового процессора MIPS Пт 28.02.08 08:00 Вс 03.08 23:59

            Срок сдачи: воскресенье, 8 марта, 23:59.

            целей для этой лаборатории

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

            Пошаговая инструкция

            В классе вы узнали о канале данных и о том, как работает одноцикловый ЦП. Теперь мы фактически реализуем одноцикловый ЦП с использованием PyRTL!

            Примечание. Эта лабораторная работа займет ЗНАЧИТЕЛЬНО больше времени, чем предыдущие. Планируйте также уделять больше времени отладке. В ваших интересах НЕ начинать задание в рабочие часы технических специалистов в понедельник / вторник, а начинать как можно раньше и использовать рабочие часы для помощи по отладке! На выполнение этой лабораторной работы вам дается несколько дополнительных дней, чем обычно, поэтому используйте свое время с умом и не откладывайте дела до последней минуты !!

            Задача

            Ваша задача — реализовать однотактный ЦП с использованием PyRTL, который может выполнять следующие 9 инструкций MIPS.

              ДОБАВИТЬ, И, ДОБАВИТЬ, LUI, ORI, SLT, LW, SW, BEQ
              

            Предоставленные файлы

            Мы предоставили вам 3 файла, ссылки на которые приведены здесь:

            1. cpu.py — это пример программы-исполнителя. Он содержит информацию о том, как тестировать и отлаживать вашу программу. Вам следует внимательно прочитать это после того, как вы выполнили все для этого задания.

            2. sample_test.s — это пример программы сборки, которую вы можете использовать для тестирования вашего процессора после ее завершения.

            3. i_mem_init.txt — Содержит собранные инструкции из sample_test.s , которые будут загружены в память команд вашего ЦП перед началом моделирования.

            Инструкции

            Вы можете реализовать ЦП, как хотите, но вот предлагаемый подход.

            Дизайн ЦП на бумаге

            Вам следует сослаться на схему ЦП на стр. 265 (рис. 4.17) вашего учебника (без переходов).Продумайте, какие компоненты, провода и управляющие сигналы вам понадобятся на высоком уровне. Рисунок воспроизведен здесь:

            Подсказка: ваш процессор будет почти идентичен этому!

            Вычислить управляющие сигналы

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

            В зависимости от инструкции, контроллер устанавливает одни сигналы управления как «вкл.», А другие как «выкл.». Ваша задача — выяснить, какие из них нужны для какой инструкции! Чтобы упростить вам задачу, мы сделали здесь таблицу.

            Для каждого столбца просто введите «1», если эта инструкция требует подтверждения управляющего сигнала, или «0» в противном случае. Если значение не имеет значения, вы можете ввести «0» или «1».

            Для 3-битного столбца ALU_OP введите любое число в диапазоне [0, 8). Этот номер сообщает ALU, что он должен делать со своими входами — добавлять их, сдвигать и т. Д. Поскольку вы создаете ALU, вы можете выбирать любые значения ALU_OP для каждой операции, если вы согласны.

            В качестве примера мы заполнили управляющие сигналы для инструкции «ADD». Мы присвоили ALU_OP 0 для добавления. Другие инструкции, которые также должны складывать значения вместе в ALU, будут использовать тот же ALU_OP, равный 0.

            Наконец, есть столбец «СВЯЗАННЫЙ». Этот столбец берет биты из всех 9 сигналов и автоматически объединяет их вместе. Затем он отображает число в шестнадцатеричном формате. Вы можете использовать это шестнадцатеричное значение в своем коде PyRTL, если хотите.

            Соберите и подключите свои аппаратные модули

            Из трех предыдущих лабораторных работ PyRTL вы должны иметь хорошее представление о том, как реализовать декодер инструкций, ALU, регистровый файл и память.Сделайте то же самое и здесь! Возьмите ЦП, который вы разработали на бумаге, и реализуйте его в cpu.py .

            Подсказка: вам понадобится 3 памяти в вашем коде.

            1. i_mem : хранит ваши инструкции.
            2. d_mem : хранит ваши данные.
            3. rf : хранит значения ваших регистров.

            Проверьте свой дизайн!

            Вы внедрили свой ЦП в PyRTL, но не знаете, правильно ли это. Как это проверить?
            Что ж, нам просто нужно написать несколько примеров программ MIPS и запустить их на вашем процессоре! Если программы работают без проблем, то, вероятно, ваш процессор исправен.Как ты это делаешь?

            1. Напишите программу MIPS.
            2. Соберите программу MIPS.
            3. Скопируйте и вставьте собранные инструкции (машинный код) в шестнадцатеричном формате в i_mem_init.txt
            4. python cpu.py

            Мы предоставили вам образец тестового примера в sample_test.s . Собранный тест можно найти в i_mem_init.txt . Более подробная информация о тестировании содержится в скелете cpu.py ; пожалуйста, внимательно прочтите эти файлы, чтобы понять, как тестировать и отлаживать свой код.

            Подача

            Требования

            Для тестирования вашего кода нам необходимы следующие 3 вещи:

            1. Ваша переменная памяти команд должна быть MemBlock с именем i_mem и должна быть доступна с верхнего уровня.
            2. Ваша переменная памяти данных должна быть MemBlock с именем d_mem и должна быть доступна с верхнего уровня.
            3. Переменная вашего регистрового файла должна быть MemBlock с именем rf и должна быть доступна с верхнего уровня.

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

              (venv) $ python -c 'import cpu; cpu.i_mem; cpu.d_mem; cpu.rf; print ("Хорошо!") '
            Хорошо пойти!
              

            Файлы для отправки

            Единственное, что вам нужно отправить для этой лабораторной работы, — это файл cpu.py . К выходным у нас будет готовая заявка на GradeScope. Пожалуйста, внимательно следите за любыми объявлениями Piazza, если мы внесем изменения в требования к подаче заявок.

            Автогрейдер

            В отличие от предыдущих лабораторных работ, мы НЕ будем выпускать автогрейдер для проверки ваших решений. Часть этого задания — научиться тестировать свой код! Вместо этого мы позволим вам делиться тестовым кодом (сборка MIPS) друг с другом на Piazza. Хотя это совершенно необязательно, вы можете написать свой собственный комплексный набор тестов в MIPS и поделиться программой на Piazza под нашим прикрепленным постом, а также вы можете загрузить тесты своих одноклассников, если они их загрузили.Мы (инструкторы) не несем ответственности за отладку каких-либо ошибок в этих тестовых наборах и не будем одобрять какие-либо из них. Если вы считаете, что в наборе тестов есть ошибка или проблема, вы должны прокомментировать под представлением автора свои замечания. Наконец, прохождение этих тестов не является гарантией получения каких-либо баллов за задание или автогрейдер.

            Подсказки

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

            1. Блок управления на самом деле довольно простой.Это отображение 1: 1 op / func из инструкции в набор управляющих битов. Самый простой способ реализовать это — использовать Mux ( pyrtl.conditional_assignment ).

            Пример:

             
            control_signals = pyrtl.WireVector (разрядность = 9, имя = 'control_signals')
            с pyrtl.conditional_assignment:
                с op == 0:
                    с func == 0x20:
                        control_signals | = 0x280
                    ...
            
            # Извлекаем соответствующие сигналы
            alu_op = control_signals [0: 3]
            ...
            
              
            1. В вашем учебнике есть управляющий сигнал «MemRead». В нашем процессоре этого не требуется.

            2. Вы, вероятно, столкнетесь с ошибками, если не добавите asynchronous = True в объявления pyrtl MemBlock для d_mem и rf .

            3. Вам понадобится WRITE ENABLE на d_mem и файл регистрации rf .

            4. Некоторые значения управляющего сигнала не имеют значения.Вы можете установить их на 0 или 1, поскольку они не имеют значения. Например: BEQ REG_DST значения не имеет. Это может быть либо 0, либо 1, поскольку мы все равно не записываем в регистровый файл во время инструкций BEQ.

            5. Записывать в нулевой регистр не должно. Всегда должно быть 0.

              .

            6. В ваших тестовых программах MIPS вы должны навсегда вернуться к той же инструкции. Вы не знаете точно, сколько циклов будет выполняться симуляция, и у нас нет инструкции «остановить», поэтому для плавного выхода вы должны просто продолжать цикл бесконечно, когда вы закончите со своей бизнес-логикой.

            7. При использовании pyrtl.corecircuits.shift_left_logical вы не можете передать константу в качестве второго аргумента, если не используете Const .

            Пример:

             
            shift_left_logical (some_wire_vector, 2) # ПЛОХО!
            shift_left_logical (some_wire_vector, Const (2)) # ХОРОШО!
            
              
            1. Не забудьте подписать расширение ваших непосредственных ценностей !! Если вы этого не сделаете, вы столкнетесь с некоторыми очень сложными для отладки ошибками при ветвлении! Вы можете сделать это с помощью .sign_extended () в WireVectors.

            2. Остерегайтесь ORI! Это инструкция I-типа, которая использует немедленное значение с нулевым расширением вместо значения с расширенным знаком.

            cpu-simulator · Темы GitHub · GitHub

            cpu-simulator · Темы GitHub · GitHub

            Здесь
            24 публичных репозитория
            соответствует этой теме …

            Симулятор микроархитектуры на уровне полного цикла системы на основе TinyEMU для одноядерных систем RISC-V

            Мифический симулятор ЦП для настоящих студентов

            💡 WepSIM: Симулятор процессора веб-элементов 📱💻🖥️

            • Обновлено
              14 февраля 2021 г.
            • HTML

            Симулятор ЦП, написанный на Python

            • Обновлено
              8 апр.2020 г.
            • Python

            Программный симулятор того, как ОС может планировать процессы

            Реализация 8-битного ЦП на основе архитектуры фон Неймана в HDL

            • Обновлено
              16 нояб.2017 г.
            • Verilog

            Визуализирует / анимирует поток данных между компонентами ОЗУ и ЦП при выполнении короткой программы сборки по вашему выбору

            • Обновлено
              20 апреля 2016 г.
            • AutoHotkey

            Это вторая версия моего предыдущего проекта RPNv1.Этот проект демонстрирует, как ЦП выполняет операции выборки, декодирования, выполнения и сохранения.

            • Обновлено
              25 октября 2015 г.
            • Python

            Программа командной строки C ++, которая имитирует пользовательский ЦП, в который можно загружать инструкции на пользовательском языке ассемблера и видеть изменения в реестрах.

            Простая реализация симулятора процессора RISC-V

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

            • Обновлено
              26 янв.2019 г.
            • Ява

            Реализация ЦП

            MIPS с использованием VHDL

            • Обновлено
              20 апреля 2019 г.
            • VHDL

            Библиотека

            C ++ для имитации процессора MIPS32.

            Объектно-ориентированный симулятор ЦП, реализованный на C ++ с использованием шаблона Factory 🏭💻 (2016)

            Моделирование архитектуры компьютера в терминале (Ассемблер + Симулятор)

            Простой графический интерфейс симулятора ЦП от JAVA — Computer Organization

            • Обновлено
              18 декабря 2017 г.
            • Ява

            • Обновлено
              21 июля 2017 г.
            • Python

            • Обновлено
              30 июн.2020 г.
            • JavaScript

            Имитатор процессора Y86-64, написанный на JavaScript (Node.js) и C ++ 11

            Реализация кэша регистров на архитектурном симуляторе Marssx86

            Проект с открытым исходным кодом для 8-битного RISC-процессора

            • Обновлено
              12 августа 2018 г.
            • Python

            Простой 16-разрядный имитатор ассемблера микропроцессора на базе Интернета (рабочий процесс 8085)

            • Обновлено
              2 янв.2019 г.
            • JavaScript

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

            • Обновлено
              28 нояб.2017 г.
            • HTML

            Потертый эмулятор процессора 6502 для изучения Котлина и архитектуры 6502

            • Обновлено
              4 янв.2020 г.
            • Котлин

            Улучшить эту страницу

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

            Куратор этой темы

            Добавьте эту тему в свое репо

            Чтобы связать ваш репозиторий с
            симулятор процессора
            тема, посетите целевую страницу репо и выберите «управлять темами».

            Учить больше

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

            Я не знаю, как работают процессоры, поэтому смоделировал один в коде

            Несколько месяцев назад меня осенило, что я не совсем понимаю, как компьютеры работают под капотом. Я до сих пор не понимаю, как работают современные компьютеры.

            Однако, пройдя через Но как это узнать? автор J.Кларк Скотт, книга, в которой описаны элементы простого 8-битного компьютера от вентилей NAND до регистров, ОЗУ, битов ЦП, ALU и ввода-вывода, у меня возникло желание реализовать это в коде.

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

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

            Примеры программ

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

            Он обрабатывает ввод с клавиатуры и отображает текст на дисплее, используя тщательно созданный набор глифов для профессионального шрифта, который я назвал «Daniel Code Pro».Единственный чит-бит — это заставить работать ввод с клавиатуры и вывод на дисплей. Мне пришлось подключить каналы go, чтобы общаться с внешним миром через GLFW, но остальное — это смоделированная схема.

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

            «Я видел, как тринадцатилетние дети делали это в Minecraft, вспомните, когда вы построили процессор REAL из телеграфных реле»

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

            Итак, я пытаюсь лучше понять этот материал, потому что я не знаю, что такое кеши L1 / L2, я не знаю, что означает конвейерная обработка, я не совсем уверен, что понимаю документы об уязвимостях Meltdown и Spectre . Кто-то сказал мне, что они оптимизируют свой код для использования кешей ЦП, я не знаю, как это проверить, кроме как поверить им на слово.Я не совсем понимаю, что означают все инструкции x86. Я не понимаю, как люди работают без нагрузки на GPU или TPU. Я не знаю, что такое ТПУ. Я не знаю, как использовать инструкции SIMD.

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

            Компьютер Скотт — это 8-битный процессор, подключенный к 256 байтам ОЗУ, все они подключены через 8-битную системную шину. Он имеет 4 регистра общего назначения и может выполнять 17 машинных инструкций. Кто-то построил здесь визуальный симулятор для Интернета, что действительно круто, я боюсь думать, сколько времени потребовалось, чтобы отслеживать все состояния проводки!

            Схема, на которой показаны все компоненты, составляющие ЦП Скотта.

            Авторские права © 2009-2016 Зигберт Филбингер и Джон Кларк Скотт.

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

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

            Во время разработки на самом деле это был просто случай чтения текста, просмотра диаграмм, а затем попытки перевести это, используя код языка программирования общего назначения и определенно не используя что-то, предназначенное для разработки интегральных схем. Причина, по которой я написал это на Go, в том, что я немного знаю Go. Скептики могут вмешаться и сказать, мерзкий идиот! Я не могу поверить, что вы не потратили все свое время на изучение VHDL, Verilog или LogSim или чего-то еще, но я уже написал свои биты, байты и NAND к тому моменту, я был слишком глубоко.Может быть, я выучу их в следующий раз и буду плакать о потраченном зря времени, но это мой крест.

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

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

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

            Разработка заняла некоторое время, может быть, около месяца или двух в мое свободное время, но как только ЦП был готов и успешно смог выполнить 2 + 2 = 5, я был счастлив.

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

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

            Как адаптеры ввода-вывода подключаются к окну GLFW

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

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

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

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

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

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

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

              main-getInput:
            ЗВОНИТЕ ROUTINE-io-poll
            ВЫЗОВ ROUTINE-io-drawFontCharacter
            JMP main-getInput  

            В основном цикле программы записи текста

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

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

            Хотя процессор очень прост и далек от того, что находится в моем ноутбуке, я думаю, что этот проект многому меня научил, а именно:

            • Как биты перемещаются между всеми компонентами с помощью шины
            • Как работает простой ALU
            • Как выглядит простой цикл Fetch-Decode-Execute
            • Что машина без регистра указателя стека + концепция стека отстой
            • Что машина без прерываний — отстой
            • Что такое ассемблер и что он делает?
            • Как периферийные устройства взаимодействуют с простым процессором
            • Как работают простые шрифты и подход к их отображению на дисплее
            • Как может выглядеть простая операционная система

            Итак, что дальше? В книге сказано, что никто не строил такой компьютер с 1952 года, а это означает, что у меня есть 67 лет материала, который нужно освежить, так что это должно занять меня на некоторое время.Я вижу, что руководство по x86 занимает 4800 страниц, этого достаточно для легкого чтения перед сном.

            Может быть, у меня будет небольшое увлечение операционной системой, флирт с языком C, прискорбный вечер, когда я попытаюсь припаять комплект PiDP-11, а затем, вероятно, назову это завершением. Я не знаю, посмотрим.

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

            Нужно ли мне знать что-либо об этом в моей повседневной работе? Наверное, помогает, но не совсем, но мне это нравится, так что как бы там ни было, спасибо за чтение xxxx

            Документация: CPUlator Computer System Simulator

            Документация: CPUlator Computer System Simulator

            CPUlator — это симулятор и отладчик компьютерной системы (ЦП, память и устройства ввода-вывода), которая работает внутри веб-браузера.Моделирование позволяет
            запуск и отладка программ без использования аппаратной платы.
            Когда вы загружаете программу в симулятор,
            программа будет вести себя (почти) идентично той же программе, работающей на реальном оборудовании.
            Моделируемые системы основаны на компьютерных системах.
            из программы Университета Альтера (Nios II и ARMv7) или SPIM (MIPS).

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

            Характеристики

            • Наборы инструкций : Nios II, ARMv7 и MIPS
            • Устройства ввода-вывода :
              • Nios II и ARMv7: Включает большинство устройств, имеющихся на DE1-SoC (и других моделях плат, используемых программой Altera University), включая поддержку прерываний.
              • MIPS: включает терминал, совместимый с SPIM
            • Нечего устанавливать : Работает полностью в веб-браузере
            • Отладчик : пошаговое выполнение, точки останова, точки наблюдения, трассировка, стек вызовов, проверка разборки, памяти и регистров
            • Отладочные утверждения : Необязательные утверждения времени выполнения выявляют множество потенциальных ошибок
            • Вход : принимает как исходный код сборки, так и исполняемые файлы ELF

            Сравнительная таблица

            Ниже приводится сравнение функций CPUlator с некоторыми популярными симуляторами, используемыми для обучения.

            0005 Модель памяти

            CPUlator MARS 4.5 QtSPIM 9.1.20 ARMSim # 1.91 ARMSim # 2.1
            Не требует установки Javascript 9000 браузер JS 9000 Windows, OSX, Linux .NET 3.0 .NET 3.0
            Бесплатно
            Открытый исходный код
            Editor

            6

            Завершение кода нет нет нет
            Ассемблер GNU нестандартный нестандартный нестандартный GNU GNU 905

            C или другие языки
            Отладчик
            Точки останова
            Одношаговый
            Обратный шаг 905
            Выйти из функции
            Изменить регистры (кроме ПК)
            Изменить память3

            6

            00 Показать стек

            Проверки соглашения о вызовах во время выполнения
            Точки наблюдения за данными
            Наборы команд 9000 MI5

            MIPS32 r5
            16 MI32 II r6 900 900 16 ARMv5
            ARMv5
            Самомодифицирующийся код может быть может быть
            MMU
            4 ГБ плоская 5 сегментов 5 сегментов 1 сегмент 1 сегмент
            Максимально полезная память 2042 МБ 4 + 4 + 4 МБ данных
            4 + 4 МБ код
            4 + 1 + 0.5 МБ данных
            256 + 64 КБ код
            64 КБ данных
            512 МБ данных
            96 КБ данных
            512 МБ код
            Устройства ввода / вывода
            Терминал
            Файловый ввод / вывод
            Другие устройства
            Скорость моделирования ( Минст / сек )

            63 13 900

            2 3

            Быстрый старт

            1. Выберите систему для моделирования.Этот параметр определяет, какие ЦП (набор команд) и устройства ввода / вывода будут включены
            2. В окне редактора используйте кнопку Compile and Load (F5), чтобы скомпилировать исходный код сборки и загрузить исполняемый файл в память
            3. Устанавливайте точки останова, шаг, запуск, остановку и отладку вашей программы.

            Если вы хотите смоделировать скомпилированный исполняемый файл вместо исходного кода сборки, см. Раздел «Компиляция кода» ниже.

            TL; DR

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

            1. Устройства ввода-вывода: CPUlator моделирует не только ЦП, но и устройства ввода-вывода. Панель устройств (по умолчанию правая) позволяет
              вы можете взаимодействовать с устройствами ввода / вывода.
            2. Утверждения отладки: Симулятор проверяет множество распространенных ошибок или необычного / неожиданного поведения в вашей программе во время выполнения и будет
              остановить выполнение с предупреждением, если возникнут какие-либо такие условия.Обычно лучше изменить вашу программу, чтобы избежать предупреждений,
              но при необходимости их можно отключить в Настройках → Проверки отладки.

            Системные требования

            CPUlator — довольно сложное клиентское веб-приложение, работающее как JavaScript в веб-браузере. Таким образом, CPUlator требует наличия достаточно свежего браузера. Я не проводил подробного тестирования, чтобы точно определить, какие версии браузера требуются, но я протестировал со следующими комбинациями:

            • Firefox 57–65, Linux
            • Firefox 52, Linux и Windows XP
            • Firefox 42, веб-звук не работает должным образом до Firefox 43
            • Chrome 63-72, Linux
            • Chrome 49, Windows XP: можно использовать, за исключением того, что некоторые значки не отображаются из-за плохой поддержки шрифтов Unicode
            • Internet Explorer 11: нет звука.Некоторые незначительные странности пользовательского интерфейса
            • Internet Explorer 10: функциональные, но без звука и неиспользуемые раскрывающиеся меню (без поддержки CSS flexbox).

            Настоятельно не рекомендуется использовать мобильные устройства с сенсорным экраном, поскольку пользовательский интерфейс предназначен для использования мыши (для изменения размера и перемещения панелей).

            • Chrome 63, Android
            • Safari, iOS 9.3.5: нет звука
            • Safari, iOS 6.1.3

            Что такое CPUlator?

            CPUlator — это функциональный симулятор компьютерной системы (ЦП и устройства ввода-вывода), отладчик и (интерфейс) ассемблер.

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

            Дизайн

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

            CPUlator заменяет как компьютерную систему, так и отладчик, а также, необязательно, ассемблер.Для простых программ (один исходный файл),
            использование встроенного редактора и ассемблера (ассемблер GNU) является наиболее удобным вариантом (на рисунке вверху, средний вариант). Для более сложных программ также возможно
            для сборки или компиляции вашего проекта в исполняемый файл ELF с помощью любых инструментов (например, Altera Monitor Program), а затем смоделировать исполняемый файл (рисунок выше, самый нижний вариант).

            Код компиляции

            Внутри симулятор CPUlator имитирует исполняемый машинный код (он не имитирует напрямую исходный код сборки).Вы можете скомпилировать исходный код, используя встроенный ассемблер, программу Altera Monitor или любые другие инструменты разработки, которые захотите. Встроенный редактор и ассемблер ограничены работой с
            единый исходный файл на языке ассемблера. Если вашей программе требуется более одного файла или она написана на другом языке (например, C), вы должны скомпилировать программу самостоятельно и
            имитировать скомпилированный исполняемый файл.

            Использование встроенного ассемблера

            Встроенный ассемблер — это интерфейс к ассемблеру GNU.При нажатии кнопки «Скомпилировать и загрузить» содержимое редактора выгружается на сервер, сохраняется в виде одного файла, а затем запускается через ассемблер GNU. Затем сервер отправляет обратно исполняемый файл ELF и любые выходные сообщения ассемблера, и исполняемый файл загружается в симулятор.

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

            Только ARMv7 : Ассемблер GNU по умолчанию использует «разделенный» синтаксис. Если вы пишете в новом «унифицированном» синтаксисе, используйте унифицированную директиву .syntax для изменения синтаксиса. Различия незначительны, поэтому на большинство программ это не повлияет. Дизассемблер CPUlator использует имена инструкций в унифицированном синтаксисе.

            Компиляция с использованием программы Altera Monitor

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

            При создании проекта, как обычно, укажите систему «DE1-SoC Computer» (или систему, которую вы будете моделировать). Это
            важно, потому что компилятор делает определенные предположения (например, размер системной памяти)
            которые зависят от компьютерной системы и должны соответствовать моделируемой модели.

            Когда будет предложено выбрать кабель для программирования, оставьте поле пустым, так как мы
            не буду его использовать.

            При появлении запроса не загружайте компьютерную систему на плату.

            Теперь вы можете «скомпилировать» свой проект, но не используйте «Загрузить» или «Скомпилировать и загрузить».
            Компиляция программы создает исполняемый файл filename.elf (или filename.axf для ARM) в каталоге вашего проекта. Чтобы загрузить исполняемый файл
            в симулятор CPUlator, используйте File → Load ELF Executable и выберите этот исполняемый файл.

            Использование симулятора

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

            1. Панель инструментов : Включает раскрывающиеся меню «Файл» и «Справка».
            2. Регистры и инструменты отладки : регистры, стек вызовов, трассировка, точки останова, точки наблюдения, таблица символов и статистика (счетчики производительности).
            3. Настройки : Список настроек довольно длинный. Прокрутите вниз, чтобы увидеть остальные.
            4. Редактор, разборка и память
            5. Сообщения
            6. Устройства ввода-вывода : Содержимое зависит от того, какие устройства ввода-вывода содержит выбранная вами система. Если ваша система не содержит устройств ввода-вывода с графической панелью, панель «Устройства ввода-вывода» не отображается.

            Панель инструментов

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

            Пошаговое выполнение одной инструкции. Переход отличается от шага в при пошаговом выполнении инструкции вызова . Шаг в волю, шаг в
            первая инструкция функции, в то время как Step over полностью пропустит функцию, остановившись на инструкции, следующей за вызовом .
            Это может быть полезно для пропуска больших предполагаемых безошибочных функций, таких как printf .Step Out запускает программу до тех пор, пока текущий
            функция возвращается к вызывающему.

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

            Функция Reload перезагружает ранее загруженный исполняемый файл в память. Если вы загрузили исполняемый файл ELF с диска, он не перезагружает
            программа с диска.Вам нужно будет снова выбрать и загрузить файл ELF. (Веб-браузеры обычно не позволяют программам JavaScript читать
            файл с диска без вмешательства пользователя, включая файл, который был изменен с момента последнего выбора пользователем, по соображениям безопасности.)

            Файловое меню

            Меню «Файл» включает операции по загрузке и сохранению файлов на диск.

            Open Assembly Source загружает файл в окно редактора. В качестве альтернативы копирование и вставка кода в окно редактора эквивалентно.

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

            Поделиться источником сборки загружает содержимое окна редактора и создает ссылку на него. Все, у кого есть ссылка, могут увидеть загруженный код. Новая ссылка откроется в новом окне.

            Загрузить исполняемый файл ELF загружает скомпилированный исполняемый файл ELF в симулятор. Затем вы можете запускать и отлаживать программу с помощью окон «Разборка» и «Память».Окно редактора не будет использоваться при имитации исполняемого файла.

            Меню справки

            Меню «Справка» содержит ссылку на документацию (эта страница) и некоторые примеры программ.

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

            Окно редактора

            Окно редактора предоставляет интерфейс для удобного написания простых (однофайловых) программ на языке ассемблера.Нажатие «Скомпилировать и загрузить»
            (или нажатие F5) скомпилирует код в редакторе и загрузит его в симулятор.
            См. Раздел «Компиляция кода» для получения дополнительных сведений или если вам нужно смоделировать более сложную программу.

            Завершение кода

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

            Окно для разборки

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

            Окно дизассемблирования дополнительно показывает строки исходного кода, которые сгенерировали машинный код, чередующиеся в том же окне, более светлым серым цветом.
            Количество отображаемого исходного кода зависит как от
            параметр Показать исходный код и указать, содержит ли ваша программа отладочную информацию.
            Для программ, скомпилированных с использованием встроенного ассемблера, включена отладочная информация и может отображаться полный исходный код. При моделировании исполняемых файлов ELF
            симулятор не имеет доступа к исходному коду, который сгенерировал исполняемый файл, поэтому он может только отображать
            имя файла исходного кода и номер строки, соответствующей каждой машинной инструкции.Отладчик CPUlator
            использует отладочную информацию в формате DWARF, встроенную в исполняемый файл ELF. Обычно компиляция с -g
            flag будет генерировать отладочную информацию в формате DWARF, поскольку DWARF обычно используется по умолчанию (или используйте —gdwarf2, чтобы явно указать формат DWARF версии 2).

            Сразу над окном разборки есть «Перейти к адресу, метке или регистрации».
            ввод текста. Это позволяет вам перейти к определенному месту в вашей программе.
            Коробка принимает шестнадцатеричные числа ( 3a8 ), метки ( _start ) или
            регистры ( шт ).

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

            Окно памяти

            Окно памяти показывает область памяти в виде массива 32-битных слов. Формат чисел и количество
            слов в строке можно настроить в окне «Настройки».
            Вы можете редактировать значения в памяти, щелкнув в всплывающем окне.
            текстовое поле, введите новое значение и нажмите Enter.Нажатие ESC приведет к
            отменить редактирование. Над окном памяти,
            Поле «Перейти к …» работает так же, как и окно «Разборка».

            Также отображается содержимое памяти в каждой строке, интерпретируемое как символы ASCII (для облегчения чтения текстовых строк). Непечатаемые символы
            показаны точкой (•), а нулевые байты (со значением 0) показаны черной точкой.

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

            Окно регистров

            Показывает текущие значения регистров ЦП. Регистры, которые изменились с момента последней остановки симулятора, выделены.
            в красном. Вы можете изменить значение регистра, щелкнув значение регистра,
            введите новый номер и нажмите Enter.

            Стек трассировки и вызовов

            Трассировка и стек вызовов показывают, что программа выполняла. Трассировка показывает последние 200 выполненных инструкций. Стек вызовов
            показывает текущий стек вызовов функций с момента последнего перезапуска процессора. Щелкните инструкцию в списке, чтобы
            выделите и прокрутите до инструкции в окне разборки.

            Точки останова

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

            Список в окне точки останова позволяет сделать точки останова условными. Условная точка останова
            останавливает программу, только если указанное условие истинно (ненулевое). Например, условие
            r3 == 0 вызовет срабатывание точки останова, только если регистр r3 равен нулю, когда эта инструкция
            достигается. Пустое условие трактуется как условие «истина» (безусловная точка останова).

            Точки наблюдения

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

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

            Символы

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

            Счетчики

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

            Окно устройств

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

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

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

            Окно настроек

            Параметры отображения чисел

            Это изменяет способ отображения чисел в различных местах симулятора.Для параметра байта ASCII байты отображаются как один символ ASCII, если он доступен для печати, или как две шестнадцатеричные цифры, если нет.

            Опции редактора

            В настоящее время здесь есть одна настройка: Включение или отключение автозавершения кода в редакторе.

            Опции разборки

            Параметр Показать исходный код определяет, сколько исходного кода должно отображаться в окне дизассемблирования. Есть три варианта:

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

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

            Система

            Изменение системы влияет на то, какие ЦП и устройства ввода-вывода находятся в системе.Для изменения системы требуется перезагрузка симулятора. См. Описание систем в разделе «Моделируемые системы».

            Предварительно выделенная память

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

            (Размер предварительно выделенной памяти равен размеру кучи Emscripten (Module.TOTAL_MEMORY), используемый частью симулятора, который использует asm.js.)

            Окно сообщений

            Окно сообщений внизу показывает сообщения, созданные
            ассемблер, симулятор и утверждения отладки. Кнопка очистки очищает окно.

            Отладочные утверждения

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

            Имитационные системы

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

            Процессоры

            В настоящее время существует четыре поддерживаемых архитектуры набора команд процессора:

            • Nios II : Моделирует Nios II / f без MMU.Поддерживаются все инструкции, включая FPh2 с плавающей точкой (fmuls, fadds, fsubs, fdivs) и внутренний контроллер прерываний. Некоторые исключительные условия не реализованы (например, разделить на ноль исключение), а некоторые реализуются иначе, чем аппаратное обеспечение (например, break останавливает симулятор вместо того, чтобы принимать программное исключение типа точки останова).

              Nios II Номер набора инструкций

            • ARMv7 : моделирует Cortex-A9. Включает инструкции с целыми числами и числами с плавающей запятой (VFPv3) и контроллер прерываний GIC.За исключением векторных инструкций MMU, Thumb, Thumb 2 и Neon. Некоторые условия исключения не реализованы, а некоторые реализуются иначе, чем аппаратное обеспечение (например, bkpt).

              • Регистры управления CP15 не реализованы, за исключением CP15 c1 CPACR для включения и выключения FPU.
              • FPU включается. Хотя настоящий ЦП включается с отключенным FPU, программа Altera Monitor включает FPU для вас, а CPUlator стремится соответствовать среде программы Altera Monitor.

              Справочное руководство по архитектуре ARM, выпуск ARMv7-A и ARMv7-R

            • MIPS32, выпуск 5 : Моделирует процессор MIPS32, выпуск 5, без MMU. Включает 64-битный FPU с двойной точностью. Реализованы ловушки, исключения, прерывания и системные вызовы. Существует также имитационная модель гипотетического варианта архитектуры, в которой все слоты задержки переходов отключены, потому что вводные курсы часто обучают MIPS без слотов задержки. Когда слоты задержки отключены, обратный адрес инструкций ветвления и ссылки ведет себя по-другому (указывая на инструкцию после ветвления, а не после слота задержки), и исключения больше не могут возникать в слоте задержки.

              MIPS32 Release 5, как правило, обратно совместим со старыми наборами инструкций MIPS, поэтому модель MIPS32r5 является правильной для использования, если вы не знаете, что используете версию 6.

              • FPU: FPU содержит 32 64-битных регистра с плавающей запятой и может выполнять операции как с одинарной, так и с двойной точностью. Операции с одинарной точностью используют нижнюю половину каждого регистра. Операции с двойной точностью могут использовать либо полные 64-битные регистры, либо пары нижней половины каждого регистра, как это было сделано на более старых процессорах MIPS.Этот ЦП загружается с FPU в 32-битном режиме и может быть установлен в 64-битный режим, изменив CP0.status FR на 1. Следующий фрагмент кода активирует 64-битный режим FPU, установив бит 26 из CP0.status FR :
                 li $ t0, 0x04000000 # Бит 26
                mfc0 $ t1, $ 12, 0 # Прочитать CP0.status (Сопроцессор 0, регистр 12, выберите 0)
                или $ t1, $ t1, $ t0 # Установить бит 26
                mtc0 $ t1, $ 12, 0 # Ответить на CP0.status 

                Смоделированный FPU игнорирует режимы округления и не поддерживает исключения с плавающей запятой.

              Набор команд MIPS32 v5.04

            • MIPS32, выпуск 6 : Моделирует процессор MIPS32, выпуск 6, без MMU. Включает 64-битный FPU с двойной точностью. Реализованы ловушки, исключения, прерывания и системные вызовы. Существует также имитационная модель гипотетического варианта архитектуры, в которой все слоты задержки переходов (и запрещенные слоты) отключены, потому что вводные курсы часто обучают MIPS без слотов задержки. Когда слоты задержки отключены, обратный адрес инструкций ветвления и ссылки ведет себя по-другому (указывая на инструкцию после ветвления, а не после слота задержки), и исключения больше не могут возникать в слоте задержки.

              Версия 6

              MIPS32 вносит серьезные изменения в набор инструкций и не имеет обратной совместимости с каким-либо более ранним набором инструкций MIPS. Имеется значительное количество новых инструкций, перекодированных инструкций и удаленных инструкций (например, addi был удален и заменен на addiu ). Если вы специально не используете версию 6, вероятно, вам подойдет модель MIP32 версии 5.

              • FPU: FPU содержит 32 64-битных регистра с плавающей запятой и может выполнять операции как с одинарной, так и с двойной точностью.Операции с двойной точностью используют полный 64-битный регистр, а операции с одинарной точностью используют нижнюю половину каждого регистра. Версия 6 запрещает использование пар регистров одинарной точности в качестве регистров двойной точности, как это было сделано в более старых архитектурах MIPS.
                Смоделированный FPU игнорирует режимы округления и не поддерживает исключения с плавающей запятой.

              Набор команд MIPS32 v6.06

            Компьютерные системы

            Компьютерная система, которую вы выбираете для моделирования, определяет ее ЦП и устройства ввода-вывода, которые она содержит.

            Nios II Generic

            Это процессор Nios II с 4 ГБ памяти и никаких других устройств ввода-вывода.

            Nios II DE1-SoC

            Это система Nios II со всеми устройствами ввода-вывода на стороне FPGA, которые есть в компьютере DE1-SoC, с 1 ГБ памяти DDR3, подключенной к HPS (система жесткого процессора), но без других устройств, подключенных к HPS.

            Есть несколько незначительных отличий:

            • JP1 прикреплен к упрощенной модели контроллера Lego, используемого в Университете Торонто.
            • Carworld UART — еще одно нестандартное устройство, используемое в Университете Торонто.
            • Не реализованные устройства: порт IrDA, обнаружение края видеовхода, акселерометр
            • Моделируется только один процессор Nios II. Компьютер DE1-SoC имеет четыре процессора: два Nios II и два ARM Cortex-A9.
            Nios II DE2-115

            Это система Nios II с устройствами ввода-вывода на базе медиа-компьютера DE2-115.

            Есть несколько незначительных отличий:

            • Не реализованные устройства: последовательный порт RS-232, ЖК-дисплей 16 × 2, порт IrDA
            Nios II DE2

            Это система Nios II с устройствами ввода-вывода на базе DE2 Media Computer.

            Есть несколько незначительных отличий:

            • Не реализованные устройства: последовательный порт RS-232, ЖК-дисплей 16 × 2, порт IrDA
            Nios II DE0

            Это система Nios II с устройствами ввода-вывода на базе DE0 Media Computer.

            Есть несколько незначительных отличий:

            • Не реализованные устройства: последовательный порт RS-232
            Nios II DE10-Lite

            Это система Nios II с устройствами ввода-вывода на базе компьютера DE10-Lite.

            Есть несколько незначительных отличий:

            • VGA: Моделируется буфер пикселей 160×120 16 бит на пиксель, который впервые появился в версии 17.0 университетской программы. Это отличается от пиксельного буфера в версии 16.1, который не работал, потому что он был настроен на использование разрешения выше, чем доступная память кадрового буфера.
            • Невыполненные устройства: Arduino GPIO
            ARMv7 Общий

            Это процессор ARMv7 с 4 ГБ памяти и никаких других устройств ввода-вывода.

            ARMv7 DE1-SoC

            Это система ARMv7 со всеми устройствами ввода-вывода на стороне FPGA, которые есть в компьютере DE1-SoC, 1 ГБ памяти DDR3, частным таймером Cortex-A9 и контроллером прерываний ARM GIC.Многие сложные устройства HPS (Ethernet, USB, SDHC и т. Д.) Опущены.

            Есть несколько незначительных отличий:

            • JP1 и JP2 опущены, потому что им не к чему прикрепляться.
            • Carworld UART — это настраиваемое устройство, используемое в Университете Торонто.
            • Переключатели и кнопки показывают 32 бита, но на реальной плате их 10
            • Семисегментные дисплеи показывают 8 цифр, но на реальной плате их 6
            • Не реализованные устройства: порт IrDA, обнаружение края видеовхода, акселерометр, таймеры HPS 0–3, HPS GPIO (кнопка и зеленый светодиод), HPS I2C, JTAG UART # 2,
            • Моделируется только один процессор ARMv7.Компьютер DE1-SoC имеет четыре процессора: два ARM Cortex-A9 и два Nios II.
            MIPS32r6 Общий

            Это процессор MIPS32 версии 6 с 4 ГБ памяти и без других устройств ввода-вывода. Есть две версии этой системы: одна, следующая за
            Спецификация MIPS32r6, в которой отключены все слоты задержки и запрещенные слоты.

            MIPS32r6 SPIM

            Это ЦП MIPS32 версии 6 с 4 ГБ памяти, некоторыми SPIM- и MARS-совместимыми службами системных вызовов и SPIM-совместимым терминальным устройством ввода-вывода.Есть две версии этой системы: одна, следующая за
            Спецификация MIPS32r6, в которой отключены все слоты задержки и запрещенные слоты.

            Система MIPS SPIM спроектирована так, чтобы быть похожей на систему, моделируемую симуляторами SPIM и MARS, но она не является точной заменой по двум причинам. Во-первых, MIPS32 выпуска 6 немного несовместим с более ранними (выпуск 5 и более ранними) процессорами MIPS, поэтому
            для работы большинства программ потребуются незначительные изменения (например, addi был удален из набора инструкций и заменен на addiu).Во-вторых, CPUlator использует ассемблер GNU, который имеет несколько незначительных отличий от специализированных ассемблеров, используемых в SPIM и MARS.

            Терминальное устройство ввода-вывода отображается в памяти в 16-байтовую область по адресу 0xffff0000 с использованием аппаратной строки IRQ 0 (соответствующей IP2 или биту 10 регистров cp0_cause и cp0_status). Реализованы системные вызовы SPIM и MARS, которые взаимодействуют с терминалом. Системные вызовы внутренне выполняют
            загружает и сохраняет для взаимодействия с оконечным устройством. Следовательно, можно использовать оба
            службы ввода-вывода с отображением памяти и системные вызовы для взаимодействия с терминалом, если вы знаете, как эти два метода будут мешать друг другу.Более подробную информацию см. В разделе Терминальное устройство SPIM.

            Службы системных вызовов

            Симуляторы SPIM и MARS предоставляют услуги системных вызовов (с использованием инструкции syscall), чтобы позволить программе MIPS
            для взаимодействия с внешним миром (в основном с терминалом). Для совместимости со многими курсами, которые полагаются на
            Системные вызовы, предоставляемые этими симуляторами, CPUlator также реализует подмножество этих сервисов.

            Реализованы следующие системные вызовы:

            $ v0 Сервис Входные аргументы Выходные аргументы
            1 Целое число для печати $ a0 (целое)
            36

            65

            Целое число без знака $ a0 (целое число)
            34 Вывести целое число (шестнадцатеричное) $ a0 (целое число)
            35 Вывести целое число (двоичное) $ a0 (целое число)
            2 Печать с плавающей точкой одинарной точности $ f12 (одинарная)
            3 Печать с плавающей запятой двойной точности $ f12 (двойная)
            4 Строка печати $ a0 ( const char *, указатель на строку с завершающим нулем)
            11 Печать символа $ a0 (char)
            5 Считывание целого числа 900 17

            $ v0 (целое число)
            6 Чтение с плавающей запятой одинарной точности $ f0 (одинарное)
            7 Чтение с плавающей точкой двойной точности $ f0 (двойное)
            8 Чтение строки $ a0 (char *, указатель на начало выходного буфера)
            $ a1 (целое число без знака, максимальное количество читаемых символов)
            12 Чтение символа $ v0 ( char)
            9 Выделить память (sbrk) $ a0 (int без знака, байты для выделения) $ v0 (указатель на выделенную память)
            10 Exit
            17 Exit2 $ a0 (целое число, код результата)
            32 Sleep $ a0 (unsigned int, миллисекунды)
            Обработчики исключений

            Как и другие системы MIPS, общий обработчик исключений обычно расположен по адресу 0x80000180 (настраивается через регистры сопроцессора 0).Ассемблеры SPIM и MARS используют директиву .ktext для помещения кода в сегмент .ktext, который обычно содержит обработчик исключений. Ассемблер GNU не использует директивы .ktext или .kdata. Вместо этого CPUlator использует собственный сценарий компоновщика, чтобы указать, что содержимое раздела .ktext должно загружаться по адресу 0x80000000 (и .kdata загружаться сразу после .ktext). Таким образом, вместо директивы .ktext используйте .section .ktext, «ax» («ax» означает размещаемый и исполняемый файл) и .org 0x180, чтобы разместить обработчик исключений по смещению 0x180 файла.ktext раздел.

            MIPS32r5 Общий

            Это процессор MIPS32 версии 5 с 4 ГБ памяти и без других устройств ввода-вывода. Есть две версии этой системы: одна, следующая за
            Спецификация MIPS32r5, в которой отключены все слоты задержки и запрещенные слоты.

            MIPS32r5 SPIM

            Это ЦП MIPS32 версии 5 с 4 ГБ памяти, некоторыми SPIM- и MARS-совместимыми службами системных вызовов и SPIM-совместимым терминальным устройством ввода-вывода.
            Есть две версии этой системы: одна, следующая за
            Спецификация MIPS32r5, в которой отключены все слоты задержки и запрещенные слоты.См. Раздел MIPS32r6 SPIM для получения подробной информации о реализации SPIM.

            Устройства ввода-вывода

            Все моделируемые устройства ввода-вывода обычно ведут себя так же, как устройства ввода-вывода в компьютерной системе DE1-SoC программы Altera University. В этом разделе описаны некоторые отличия или особенности пользовательского интерфейса симулятора.

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

            Светодиоды, переключатели, кнопки, семисегментные дисплеи

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

            Параллельный порт (GPIO)

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

            Состояние каждого бита отображается в виде флажка. Состояние флажка сообщает вам значение вывода (0 или 1), его направление (вход или выход) и то, запрашивает ли вывод прерывание (маска и край захватывают оба значения 1).

            Таймеры

            Таймеры

            включают в себя как интервальный таймер, так и частный таймер Cortex-A9. В симуляторе отображается внутреннее состояние таймера (счетчик, однократный или непрерывный режим и т. Д.). В раскрывающемся меню также есть функция Force Timeout Now, которая заставляет счетчик перескакивать на 1 и запускать тайм-аут (если таймер работает). Это полезно при отладке с длительными таймаутами.

            JTAG UART

            Устройство JTAG UART подключено к терминалу в программе Altera Monitor, поэтому здесь оно также подключено к терминалу в симуляторе.Будут показаны байты, отправленные от CPU к UART. Чтобы отправить байты в UART, сначала щелкните терминал на панели устройства UART, чтобы передать ему фокус клавиатуры, затем введите. Смоделированное устройство также показывает состояние FIFO чтения и записи.

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

            Клавиатура и мышь PS / 2

            Интерфейс симулятора предоставляет несколько методов отправки ввода для имитации того, что отправит клавиатура или мышь PS / 2.Выберите метод
            («Клавиатура», «Мышь» или «Пользовательский»), выбрав соответствующий параметр в раскрывающемся меню устройства PS / 2.
            Симулятор обычно не точно моделирует последовательность согласования включения с помощью клавиатуры или мыши, но имеет некоторую базовую поддержку для ответа на несколько команд (например, сброс).

            • Режим клавиатуры:
              1. Введите текст в текстовое поле в первой строке, чтобы сгенерировать коды включения и отключения (по крайней мере, для ключей, которые распознает веб-браузер), или
              2. Выберите конкретную клавишу во второй строке, чтобы отправить единый make или код взлома.
            • Режим мыши: установите поля x, y, z и кнопку, затем отправьте пакет движения. 4-байтовый пакет Intellimouse отображается в поле кода. Щелкните «3-байтовый пакет», чтобы отправить стандартный пакет движения мыши PS / 2 (первые три байта), или «4-байтовый пакет», чтобы отправить полный пакет Intellimouse. Обратите внимание, что настоящие мыши должны быть включены, прежде чем они будут отправлять пакеты движения, и должны быть переключены в режим Intellimouse, чтобы разрешить 4-байтовые пакеты. Эта последовательность инициализации здесь не моделируется.
            • Пользовательский режим: четыре строки «Пользовательский код» обеспечивают удобный доступ к четырем наиболее часто используемым кодам. Их можно использовать для отправки ACK 0xFA, для эмуляции последовательностей инициализации или для отправки любой другой последовательности байтов.

            Распознаются следующие команды:

            • Сброс FF: генерируется ответ FA AA.
            • F4, F5 и F6: они подтверждаются FA.
            • ED Установить светодиоды: каждый байт двухбайтовой команды подтверждается с помощью FA, а светодиоды устанавливаются с использованием значения второго байта.
            Буфер пикселей и символов VGA

            Моделирует устройство VGA из компьютерных систем Altera University Program.

            Детали устройства VGA DMA (включая перелистывание страниц) точно смоделированы. Таким образом, помимо возможности рисовать пиксели путем записи в буфер пикселей, расположение буфера пикселей может быть изменено на другую область памяти, а также можно моделировать переворачивание страницы. Буфер пикселей инициализируется случайными значениями, чтобы предотвратить использование дисплея без его предварительной очистки, но в DE1-SoC буфер пикселей инициализируется черным цветом (этого не было в более старом DE2, который использовал буфер кадра вне FPGA. SRAM).

            Аппаратно символьный буфер накладывается поверх пиксельного буфера. Такое поведение точно смоделировано.

            Контроллер DMA буфера символов был изменен, начиная с университетской программы 16.0, чтобы использовать тот же контроллер DMA в качестве буфера пикселей. Это включило поддержку переворачивания страниц, удалило оборудование для очистки символьного буфера и внесло некоторые другие несовместимые изменения в регистры. CPUlator только имитирует новый контроллер DMA символьного буфера v16.0.

            Аудиовход и выход

            Моделируемое аудиоустройство поддерживает вывод и ввод.Воспроизведение звука идет на аудиовыход вашего веб-браузера. Запись звука работает, но будет записывать пилообразную волну с периодом 32 отсчета (250 Гц при частоте дискретизации 8 кГц, 1500 Гц при частоте дискретизации 48 кГц), а не с микрофона.
            Это устройство моделирует аудиоустройство компьютерной системы Altera University Program

            .

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

            Компьютерные системы программы Университета Альтера изменили частоту дискретизации аудиоустройства с 48 кГц на 8 кГц, начиная с версии 17.0. Поскольку это изменение несовместимо с предыдущими версиями, CPUlator’s
            Частоту дискретизации аудиоустройства можно параметризовать (добавив & d_audio = 48000 в строку запроса), чтобы можно было моделировать как новые, так и старые системы.

            Отличия от реального оборудования:

            • Длина выходного FIFO составляет >> 8K выборок, а не 128. Интерфейс остается таким же, как и в аппаратном обеспечении: симулятор сообщит 128 доступных пространств FIFO, если их 128 или больше.
            • Длинные FIFO приводят к высокой задержке.В симуляторе звуки обычно задерживаются примерно на 300-600 миллисекунд из-за буферизации, тогда как аппаратная задержка составляет всего несколько миллисекунд. Большие буферы помогают снизить высокий уровень джиттера при работе в веб-браузере.
            • FIFO удаляются из очереди в имитаторе блоками по 2К выборки, но на реальном оборудовании по одной выборке за раз. Это не должно влиять на большинство правильных программ (отсутствие переполнения FIFO), но меняет способ звучания, если FIFO переполняется.
            • Аудио может быть требовательной рабочей нагрузкой, поэтому могут возникнуть проблемы с симулятором, работающим достаточно быстро, чтобы не отставать от воспроизведения звука.Если да, попробуйте использовать Firefox и / или более быстрый компьютер (Firefox поддерживает asm.js, поэтому симулятор работает в несколько раз быстрее, чем Chrome).
            Видеовход

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

            АЦП

            Устройство АЦП на DE1-SoC смоделировано, но просто возвращает другое число для каждого чтения вместо реального сигнала. Интерфейс АЦП основан на версии 16.0+ компьютера DE1-SoC, который включает действительный бит в бит [16] каждого канала. В интерфейсе версии 15.1 и ранее не использовался действительный бит.

            Контроллер Lego (У Т)

            Контроллер Lego — это специальное устройство, используемое в Университете Торонто, и не является частью стандартного компьютера DE1-SoC.

            Здесь моделируется базовая функциональность контроллера Lego, что позволяет вам взаимодействовать с контроллером из вашей программы, вручную указывать показания датчиков и наблюдать за состоянием двигателя, включенным / выключенным / ШИМ.

            • Регистры: Показывает текущее состояние четырех регистров GPIO в виде 32-битного слова. Наведите указатель мыши на двоичное представление.
            • Датчики:
              • Используйте ползунок для установки текущего значения датчика, что эквивалентно перемещению датчика вокруг
              • Большое число показывает текущее значение датчика
              • Маленькое число показывает текущий порог датчика, который используется в режиме состояния
            • Двигатели:
              • Треугольники вверх и вниз показывают текущее состояние двигателя (вперед, назад или выключено)
              • Светло-зеленый фон показывает сглаженную по времени версию состояния двигателя.Это полезно для отладки ШИМ двигателя, когда наблюдение за средним состоянием двигателя более полезно, чем за мгновенным состоянием
            • Режим: Показывает, находится ли контроллер в режиме значений или состояния.
            Carworld UART (УТ)

            Это специальное устройство, используемое в Университете Торонто, и не является частью стандартного компьютера DE1-SoC. Дальнейшая часть этого описания предполагает, что вы знаете лабораторное задание, с которым используется это устройство. Хотя это устройство не позволяет вам управлять игрой Carworld (поскольку нет возможности подключиться к игре), оно покажет вам, можете ли вы
            правильно отправлять и получать команды в / из игры.Дополнительные сведения см. Во всплывающем окне справки на устройстве.

            Терминал СПИМ

            Это устройство ввода-вывода с отображением памяти, которое в значительной степени совместимо с оконечным устройством, используемым в симуляторах SPIM и MARS. Устройство ввода-вывода использует отображаемый в памяти ввод-вывод и одну линию прерывания, которая сигнализирует прерывания как чтения, так и записи (это отличается от SPIM, который использует две линии IRQ).

            Для совместимости с SPIM и MARS оконечные устройства обычно размещаются по адресу 0xffff0000. К нему также могут получить доступ несколько
            системные вызовы.В CPUlator эти системные вызовы реализуются путем выполнения операций ввода-вывода с отображением в память (загрузка и сохранение). Таким образом, вы можете использовать оба
            методы доступа к терминальному устройству, если вы знаете, как системные вызовы могут изменить состояние устройства ввода-вывода.

            Терминальное устройство имеет четыре отображенных в память регистра (с той же функциональностью, что и в SPIM)

            Управление приемником
            ffff0000
            31: 2 1 0
            Разрешение прерывания Готов
            Данные приемника
            ffff0004
            Управление передатчиком
            ffff0008
            31: 2 1 0
            Разрешение прерывания Готов
            Данные преобразователя
            ffff000c

            Бит готовности управления приемником (ffff0000 бит 0) указывает, что по крайней мере один байт доступен для чтения вашей программой (имеется 64-байтовая очередь приема).Полученные
            Байт данных извлекается путем чтения регистра данных приемника (ffff0004). Каждое чтение удаляет один байт из очереди приема.
            Если бит разрешения прерывания приемника равен 1, то оконечное устройство ввода-вывода будет запрашивать прерывание всякий раз, когда оно будет готово (на линии IRQ HW0, соответствующей IP2).

            Бит готовности управления передатчиком (ffff0008 бит 0) указывает, что он готов принять как минимум один байт для передачи (имеется 64-байтовая очередь передачи). Чтобы отправить символ, байт должен быть записан в регистр данных передатчика (ffff000c).Каждая запись помещает один байт в очередь передачи, которая в конечном итоге (обычно в пределах 50 мсек) будет отображаться на терминале.
            Если бит разрешения прерывания передатчика равен 1, то оконечное устройство ввода-вывода будет запрашивать прерывание всякий раз, когда оно будет готово принять байт для передачи.
            В отличие от SPIM, прерывания приема и передачи используют одну и ту же линию прерывания HW0, соответствующую IP2. Если вы используете и прием, и передачу прерываний, готовый
            биты должны быть проверены, чтобы определить, какие запросы следует обслуживать.

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

            Устройства Pandemic Edition

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

            Балансир

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

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

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

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

            Наклон балки и управление двигателем
            ff400000
            31:24 23:16 15: 0
            Расстояние слева Расстояние справа Управление двигателем
            Положение
            ff400004
            31: 0
            Горизонтальное положение балки

            Расстояние слева и справа : Только чтение.Это 8-битовые целые числа без знака (от 0 до 255), которые указывают расстояние между левым и правым краями балки до земли (большее число — дальше). Луч сбалансирован, когда эти два числа совпадают.

            Управление двигателем : Чтение / запись. Это 16-битное целое число со знаком (от -32767 до +32767), используемое для управления мощностью двигателя. Установка этого значения в 0 останавливает двигатель, положительное число перемещается вправо, а отрицательное число — влево. Число с более высокой величиной приводит в движение двигатель с большим крутящим моментом и скоростью.

            Позиция : только чтение. Это 32-битовое целое число со знаком, указывающее горизонтальное положение центра луча. Это используется только в том случае, если вы хотите знать местонахождение
            балансир, чтобы переместить его в определенное место на земле. Центр земли равен 0, а левый и правый концы примерно ± 40000.

            История версий

            Январь 2016 г. Первый выпуск с поддержкой Nios II
            Октябрь 2016 г. Добавлен ARMv7
            15 сентября 2017 г. Симулятор называется CPUlator
            7 января 2018 г. Пользовательский интерфейс переписан
            26 января 2018 г. Добавлен MIPS32r6
            23 ноября 2018 г. Добавлен MIPS32r5
            1 февраля 2019 г. Обновлено устройство буфера пикселей VGA DE10-Lite (v.733)
            23 марта 2020 г. Добавить выходные данные отладки ARM GIC (версия 784)
            18 октября 2020 г. Добавить устройство балансировки балки (версия 802)

            Детали реализации

            Симулятор

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

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

            Процессор

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

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

            Модели процессоров CPUlator написаны на C ++ и представляют собой полностью оригинальный код.

            Шина памяти

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

            Внутри нет различий между памятью и устройствами ввода-вывода с отображением в память.
            У каждого устройства ввода-вывода есть диапазон адресов, который он обслуживает, и
            память — это всего лишь один из типов устройств.

            Загрузчик программ

            Процессор и система памяти — это законченная компьютерная система, но она все еще нуждается в
            метод загрузки программы в память компьютера.Это функция загрузчика программ.
            CPUlator реализует загрузчик исполняемого файла ELF. Загрузчик ELF анализирует содержимое файла ELF и
            использует несколько частей исполняемого файла:

            • Заголовки программы: Любой сегмент программы с «загружаемым» типом копируется из исполняемого файла ELF в
              память компьютерной системы в месте, указанном в заголовке программы. Загружаемые сегменты
              включают разделы кода (.text) и инициализированных данных (.data).
            • Заголовки разделов: расположение различных разделов (например,g., .text, .data) используются утверждениями отладки
              чтобы проверить, происходят ли выборки инструкций из раздела кода (помеченного как выделяемый и исполняемый).
            • Таблица символов: В таблице символов перечислены имена символов и их значения (обычно адрес). Эта информация
              извлекается и используется отладчиком.
            Устройства ввода-вывода

            Моделируется множество различных устройств ввода / вывода. Каждый реализован как класс C ++.
            Устройства ввода-вывода реагируют на обращения к памяти, которые нацелены на область памяти, назначенную устройству.

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

            Отладчик

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

            Остальная часть этого раздела обсуждает, как некоторые функции отладки реализованы в отладчике CPUlator.

            Дизассемблер

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

            Показан исходный код

            Часто бывает полезно показать строки дизассемблера и исходного кода, соответствующие машинным инструкциям.
            Для этого требуется отладочная информация для отображения исходного кода на / из машинных инструкций, а также доступ к самому исходному коду.Отладчик CPUlator извлекает информацию о номере строки из исполняемого файла ELF всякий раз, когда он загружается.
            CPUlator в настоящее время понимает только формат DWARF. Информация о номере строки формата DWARF находится в разделе .debug_line исполняемого файла ELF.
            Эта информация обеспечивает соответствие между машинными инструкциями и именем файла исходного кода и номером строки, который соответствует инструкции.

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

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

            Стек вызовов

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

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

            одинарный шаг

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

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

            Проверки выборки кода

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

            Считается, что процессор
            для выполнения кода, если адрес выборки команды (pc) находится в диапазоне адресов
            раздел, помеченный как доступный и исполняемый (например, раздел .text). Если процессор выполняет
            в разделе другого типа (например, .data обычно не помечается как исполняемый) или
            выполняет байты инструкций, которые не поступили из исполняемого файла ELF, вероятно, это ошибка.

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

            Ассемблер

            CPUlator включает веб-интерфейс для ассемблера GNU (gas), работающего на сервере.
            Ассемблер — это стандартный пакет binutils, скомпилированный для каждого поддерживаемого целевого набора инструкций, без каких-либо пользовательских модификаций.
            Кнопка «Скомпилировать и загрузить» отправляет содержимое окна редактора на сервер, на котором запускается ассемблер.
            во временном каталоге и отвечает
            сообщения вывода ассемблера и исполняемый файл ELF (если компиляция прошла успешно).Ассемблер — единственная часть CPUlator, работающая на сервере.

            Встроенный интерфейс для газа существует для удобства и не является необходимым. Любой компилятор или
            Ассемблер, который генерирует исполняемые файлы ELF, можно использовать с симулятором CPUlator.

            Веб-реализация

            CPUlator — это веб-приложение. За исключением ассемблера, все работает на стороне клиента в веб-браузере.
            Код разделен на две части (обе выполняются в веб-браузере):

            1. Ядро симулятора: ЦП, память, загрузчик ELF и устройства ввода-вывода
            2. Пользовательский интерфейс

            Ядро симулятора доставляется браузеру как asm.js, а пользовательский интерфейс — JavaScript.
            Видимые для пользователя части пользовательского интерфейса — это обычные HTML и CSS.

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

            Размер кода: по состоянию на 29 января 2018 г. проект (за исключением сторонних библиотек) содержит примерно 11000 строк C ++, 8000 строк JavaScript,
            1000 строк CSS, 150 строк PHP, 150 строк HTML и 50 строк сценария оболочки.

            Ядро симулятора

            Ядро симулятора написано на C ++, затем скомпилировано в asm.js с использованием Emscripten (будущая работа: WebAssembly).
            asm.js рассматривает скомпилированный код как хорошо изолированный «модуль», который не имеет ничего общего с остальной средой выполнения JavaScript.
            состояние за исключением возможности вызывать функции с одной стороны на другую.Таким образом, ядро ​​CPUlator
            устроен аналогично. Он изолирован от кода JavaScript пользовательского интерфейса и взаимодействует с помощью довольно небольшого набора функций (около 35).
            Ядро симулятора — это полностью оригинальный код.

            Ядро симулятора написано на C ++ как для скорости (asm.js быстрее, чем идиоматический JavaScript), так и потому, что его легче
            писать код низкоуровневой обработки битов на C ++, а не на JavaScript.

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

            Пользовательский интерфейс написан на JavaScript.Он взаимодействует с ядром симулятора (asm.js) и управляет элементами HTML DOM.
            Многие элементы пользовательского интерфейса используют существующие библиотеки JavaScript, за что я благодарен.

            Сторонний код
            • GNU binutils — Ассемблер (as) и компоновщик (ld), используемые для создания исполняемых файлов из исходного кода сборки
            • Коллекция компиляторов GNU — компилятор C
            • CodeMirror — используется для окон редактора, разборки и памяти
            • Dock Spawn — Пристыковываемые и плавучие панели.
            • jQuery и jQuery UI — используются для перетаскиваемых панелей устройств ввода-вывода, автозаполнения адресного поля, нескольких всплывающих подсказок и полос прокрутки.
            • term.js — Терминальное устройство ввода-вывода, поддерживающее различные escape-коды.
            • TableSorter — Сортируемая таблица, используемая в окне символов
            • FileSaver.js — небольшая библиотека для загрузки содержимого окна редактора в виде файла
            • Библиотека физики пули — физический движок C ++
            • three.js — библиотека Javascript WebGL для рисования трехмерной графики.

            Инструмент для моделирования компьютерных архитектур для классов компьютерной организации

            CPUSim3.1: AToolforSimulatingComputer

            ArchitecturesforCS3classes

            DALESKRIEN

            ColbyCollege

            ________________________________________________________________________ 

            CPUSim3.1iseducationalsoftwarepackage WritteninJavaforuseinCS3courses. CPUSim обеспечивает

            студентов активной обучающей среде, в которой они могутпроектировать, модифицировать, исопоставитьналичныйкомпьютер

            архитектур врегистрации передачауровеньивыше.«Они» могут запускать »ассемблированный язык» или «машинный язык»

            программ для этих «архитектур» посредством моделирования.

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

            программ, ассемблер, несколько окон для отображения. «Просмотр» регистров и ОЗУ во время выполнения

            программ; в обратном порядке во время выполнения,

            проверяя и изменяя при необходимости значения в регистрах и RAM после каждого шага.Обсуждаются эти функции и

            предлагаемых вариантов использования Сима ЦП в классах CS3.

            Категории  и Субъект  Дескрипторы: C.0 » [КомпьютерныеСистемыОрганизация-Общие]: №

            «Моделирование» компьютерной архитектуры; I.6. 5 Sim [SimulationandModeling]: Model

            Development; K.3.1  [ComputersandEducation]: ComputerUsesinEducation

            GeneralTer ms: Design, Языки

            Дополнительные Ключевые словаифразы: компьютерархитектураsi mulator, education

            ________________________________________________________________________ 

            1.ВВЕДЕНИЕ

            InaCS3курс, студенты не должны только читать о различных компьютерных архитектурах, но29

            в идеале должны должнодействовать опыт работы с такими архитектурами. К сожалению,

            , обеспечивающий этот опыт, может быть затруднен из-за затрат на обеспечение лаборатории с необходимыми

            . «Аппаратное обеспечение» и «время, необходимое» для того, чтобы студенты стали «профессиональными» в использовании »

            « инструментов »для работы с« оборудованием ». по этой причине было разработано «много» симуляторов ЦПУ

            [Abbatistaetal.2000; Agren1999; Yehezkeletal.2001; Yurcik2001] .

            К сожалению, «большая часть» этих пакетов имитирует только одну фиксированную архитектуру. Мы чувствуем

            , что «студенты» должны «быть» открыты «нескольким» компьютерным «архитектурам» и в идеале «должны» иметь «

            практический» опыт «, как и многие из них. по возможности, «и даже» имеют практический опыт

            при проектировании некоторой »простой архитектуры.« с использованием »симулятора, что позволяет учащимся

            «Такой» контроль над «моделированием», «инструкторы» имеют много »более

            возможностей для« предоставления »ценного» опыта.Например, инструкторы могли

            ________________________________________________________________________ 

            Адрес автора: Department ofComputerScience, 5841Mayfl owerHill, ColbyCollege, Waterville, ME

            04901, USA; email: [email protected]; web: http: //www.cs.colby.edu/~djskrien/

            Permissiontodigital / hard копия части этой работыдля личногоиликлассногоиспользованияпредоставляетсябезплаты

            при условии, чтокопиикопиинеиздаются илираспространяются для «коммерческих» или «коммерческих» преимуществ, «уведомление об авторских правах», №

            , «название» публикации, и «дата» появления, и «уведомление» что «копирование» осуществляется с разрешения «ACM», №

            Inc.Tocopyotherwi se, torepubli sh, topostonservers, или toredistributetolists, requirespriorspecific и / или fee.

            © 2001ACM1073-0516 / 01 / 0300-0034 $ 5.00

            Мастер-класс: Моделирование компьютера — Дети и технологии Миши Ледера

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

            Требование

            Белая доска или прямоугольная вертикальная поверхность, ножницы, цветная бумага,
            скотч, указка из картона, мелки.Цифры 0–9 и «+»,
            -, = ”вырезано из цветной бумаги

            Препарат

            Я дважды пробовала эту презентацию на небольшой группе детей 4-6 лет.
            (5 человек) и большая группа (20 человек). Также провел этот семинар в 3-х классах первоклассников государственной школы.

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

            У каждого участника компьютерного моделирования должно быть что-то, что его идентифицирует.

            Мышь: шлем (когда пользователь «щелкает» по нему)

            Процессор: очки большого ботаника

            Монитор (контроллер вывода): указатель мыши

            Презентация

            Часть 1. Рисуем компьютер

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

            Полностью пропустите эту часть, если у вас мало времени.

            Часть 2. Поговорим о том, что делает компьютер

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

            Часть 3. Калькулятор

            В какой-то момент попросите детей вырезать
            большие числа из цветной бумаги — цифры в калькуляторе,
            включая «+» и «=». Если время ограничено, обязательно
            приготовьте свои номера и операторов.

            Разговор о концепции калькулятора
            — начертите 10 больших цифр и +, -, = на бумаге или воспользуйтесь белой доской и
            наклеиваем вырезанные цифры скотчем.Позже это будет монитор.
            Дайте детям бумагу и попросите их записать ваши действия и записать
            ответ. Затем нажмите цифры на калькуляторе, например

            5, +, 3, =

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

            Часть 4. Мышь

            Выберите мышку-волонтер и пользователя.
            Пользователь держит мышь за плечи и перемещается вместе с ней. Есть
            пользователь двигается, и дети кричат ​​(«вверх» — вперед, «вниз» —
            назад, «влево» и «вправо»). Дайте мышке шлем. Попросите пользователя нажать на шлем и заставить мышь согнуть колени, и дети будут кричать «Щелкни».Детям так понравился шлем, что они продолжали стучать по нему. В результате мышь даже могла упасть, что несколько нервировало учителей 🙂

            После этого скажите пользователю, куда двигаться
            криком: «вверх, вниз, влево, вправо»

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

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

            Часть 5.Монитор, контроллер вывода

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

            Кричать «Вверх, вниз, влево, вправо» и
            убедитесь, что доброволец соответствующим образом перемещает указатель мыши. Спроси «что
            цифра, на которую указывает указатель мыши. Попросите детей направить
            добровольно на определенную цифру.

            Часть 6. Собираем все вместе

            Назначьте детей на следующие роли:

            • Пользователь — перемещает мышь и щелкает мышью.

            • Мышь

            • Контроллер мыши — часы
              мышь и кричит «вверх, вниз, влево, вправо, щелкните» Для большой группы
              детей, пусть они все сделают это, чтобы они были помолвлены

            • Выходной контроллер — перемещение
              курсор мыши на экране

            • Процессор / программа-калькулятор.-
              записывает уравнение и производит выходные данные (Часть 3) После того, как процессор
              завершает вычисление, он может записать полученное число и передать его
              автобус. Шина передаст его контроллеру вывода, который отобразит
              это на экране. Для большой группы детей все могут сосчитать

            • Автобус — когда кнопка мыши
              щелкнул, шина бежит к процессору / программе и сообщает ей, что было
              щелкнул. Как только процессор закончит вычисления, он выдает результат
              к шине, которая передает результат контроллеру вывода.Для
              большая группа детей автобус не нужен для простоты

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

            Часть 7: Продвинутый

            Прерывания

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

            S режим прохождения

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

            Моделирование реальных процессов с помощью Python — Real Python

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

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

            What Simulation Is

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

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

            • На автомойке машины проходят процесс мойки.
            • В аэропорту пассажиры будут проходить проверку безопасности.
            • В колл-центре клиенты будут разговаривать с продавцом по телемаркетингу.

            Эти отношения суммированы в таблице ниже:

            Система Агент Процесс
            Автомойка Автомобиль Мойка
            Аэропорт Пассажир Контроль безопасности
            Колл-центр Клиент Поговорите с продавцом-консультантом

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

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

            Как работает моделирование

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

              # Настроить среду
            env = simpy.Environment ()
            
            # Предположим, вы заранее определили checkpoint_run ()
            окр.процесс (checkpoint_run (env, num_booths, check_time, пассажира_прибытие))
            
            # Пошли!
            env.run (до = 10)
              

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

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

            1. env : объект среды для планирования и обработки событий
            2. num_booths : количество будок для проверки документов
            3. check_time: время, необходимое для проверки идентификатора пассажира
            4. Passenger_arrival : скорость, с которой пассажиры прибывают в очередь

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

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

            Напомним, вот три шага к запуску моделирования на Python:

            1. Создайте окружающую среду.
            2. Передайте параметры.
            3. Запустите моделирование.

            Но под капотом творится еще много всего! Вам нужно будет понять, как выбирать эти параметры, и вам нужно будет определить все функции, которые будут вызываться при запуске моделирования.

            Приступим!

            Как начать работу с

            simpy

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

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

              $ python3 -m pip install simpy
              

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

            Наконец, вам нужно будет выбрать, как вы хотите запустить симуляцию. В общем, вы можете выбрать один из двух вариантов:

            1. Запустите его в интерактивном режиме: используйте Jupyter Notebook, где каждый блок кода будет содержать определение своего собственного класса или функции. Результат будет отображаться в нижней части записной книжки.
            2. Запустите его в оболочке: сохраните вашу симуляцию как файл .py и скажите Python запустить его в вашем терминале.Вывод будет напечатан прямо на консоли.

            Выберите тот метод, который вам удобнее всего! Результат должен быть таким же.

            В этом руководстве вы будете видеть ссылки на автономный файл с именем simulate.py . По мере продвижения по этому руководству блоки кода будут ссылаться на simulate.py , чтобы помочь вам отслеживать, как все части сочетаются друг с другом. Для справки вы можете получить доступ к полному коду simulate.py по ссылке ниже:

            Не стесняйтесь сохранить файл simulate.py и продолжайте в своем любимом редакторе!

            Как моделировать с помощью

            simpy Package

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

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

            Менеджер особенно беспокоится о том, какой хаос может развернуться, когда эти блокбастеры начнут выходить: очереди в кинотеатре, работники на пределе своих возможностей, разъяренные кинозрители, пропускающие первые сцены … Этой ситуации определенно следует избегать!

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

            Мозговой штурм алгоритма моделирования

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

            1. Приезжайте в театр, выстраивайтесь в очередь и ждите, чтобы купить билет.
            2. Купить билет в кассе.
            3. Подождите в очереди, чтобы проверить билет.
            4. Получите билет, который проверит швейцар.
            5. Выберите, стоять ли в очереди к прилавку или нет:
              • Если они встают в очередь, то покупают еду.
              • Если они не выстраиваются в очередь, они переходят к последнему шагу.
            6. Иди поищи их место.

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

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

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

            Помня об этом, пора создать симуляцию!

            Настройка среды

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

              импортная простая
            случайный импорт
            статистика импорта
              

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

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

            Создание среды: определение класса

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

              класс Театр (объект):
                def __init __ (сам):
                    # Еще не все!
              

            А теперь пора подумать о деталях кинотеатра. Конечно, есть и сам театр, который вы назвали своей средой. Позже вы явно объявите театр как реальную среду , используя одну из функций simpy .А пока назовите его env для краткости и добавьте в определение класса:

              класс Театр (объект):
                def __init __ (self, env):
                    self.env = env
              

            Хорошо, а что еще может быть в театре? Вы можете понять это, продумав алгоритм моделирования, который вы спланировали ранее. Когда приедет кинозритель, ему нужно будет выстроиться в очередь в кассе, где кассир будет ждать его, чтобы выручить. Теперь вы узнали о театральной среде две вещи:

            1. Есть кассиры.
            2. Кинозрители могут приобрести у них билеты.

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

            Вы можете продолжить и назвать эту неизвестную переменную num_cashiers .Точное значение, которое примет эта переменная, можно будет выяснить позже. А пока просто знайте, что это незаменимая часть театральной среды. Добавьте его в определение класса:

              класс Театр (объект):
                def __init __ (self, env, num_cashiers):
                    self.env = env
                    self.cashier = simpy.Resource (env, num_cashiers)
              

            Здесь вы добавляете новый параметр num_cashiers в определение __init __ () . Затем вы создаете ресурс self.кассир и используйте simpy.Resource () , чтобы объявить, сколько может быть в этой среде в любой момент времени.

            Примечание. В simpy ресурсы — это части среды ( env ), количество которых ограничено. Использование одного из них требует времени, и только некоторые из них ( num_cashiers ) доступны для использования одновременно.

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

            Предположим, вы запросили у менеджера исторические данные о театре, такие как отзывы сотрудников или квитанции о покупке билетов. Основываясь на этих данных, вы узнали, что в среднем на оформление билета в кассе уходит от 1 до 2 минут. Как заставить simpy имитировать это поведение? Требуется всего одна строка кода:

              вывести self.env.timeout (random.randint (1, 3))
              

            env.timeout () сообщает simpy инициировать событие по прошествии определенного времени.В этом случае событие состоит в том, что билет был куплен.

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

            Давайте обернем это аккуратной функцией и добавим ее в определение класса:

              класс Театр (объект):
                def __init __ (self, env, num_cashiers):
                    себя.env = env
                    self.cashier = simpy.Resource (env, num_cashiers)
            
                def Purchase_ticket (я, кинозритель):
                    вывести self.env.timeout (random.randint (1, 3))
              

            Тот, кто инициирует событие в Purchase_ticket () , — это moviegoer , поэтому они должны быть переданы в качестве обязательного аргумента.

            Примечание. В следующем разделе вы увидите, как на самом деле кинозритель покупает билет!

            Вот и все! Вы выбрали ресурс с ограничением по времени, определили связанный с ним процесс и кодифицировали его в своем определении класса.Для этого урока вам нужно объявить еще два ресурса:

            1. Офицеры для проверки билетов
            2. Серверы по продаже еды

            После проверки данных, отправленных менеджером, вы определяете, что серверам требуется от 1 до 5 минут для выполнения заказа. Кроме того, официанты очень быстро проверяют билеты — в среднем 3 секунды!

            Вам нужно добавить эти ресурсы в свой класс и определить соответствующие функции check_ticket () и sell_food () .Вы можете понять, как должен выглядеть код? Когда у вас появится идея, вы можете развернуть блок кода ниже, чтобы проверить свое понимание:

              класс Театр (объект):
                def __init __ (self, env, num_cashiers, num_servers, num_ushers):
                    self.env = env
                    self.cashier = simpy.Resource (env, num_cashiers)
                    self.server = simpy.Resource (env, num_servers)
                    self.usher = simpy.Resource (env, num_ushers)
            
                def Purchase_ticket (я, кинозритель):
                    уступить себе.env.timeout (random.randint (1, 3))
            
                def check_ticket (я, кинозритель):
                    yield self.env.timeout (3/60)
            
                def sell_food (я, кинозритель):
                    вывести self.env.timeout (random.randint (1, 5))
              

            Внимательно ознакомьтесь с новыми ресурсами и функциями. Обратите внимание, как они следуют тому же формату, что и описанный выше. sell_food () использует random.randint () для генерации случайного числа от 1 до 5 минут, представляющего время, которое потребуется кинозрителю, чтобы разместить заказ и получить свою еду.

            Временная задержка для check_ticket () немного отличается, потому что помощники занимают всего 3 секунды. Поскольку simpy работает в минутах, это значение необходимо передавать как доли минуты, или 3/60 .

            Перемещение по окружающей среде: определение функции

            Хорошо, вы настроили среду, определив класс. У вас есть ресурсы и процессы. Теперь вам нужен кинозритель , чтобы ими пользоваться. Когда кинозритель приходит в кинотеатр, он запрашивает ресурс, ожидает завершения процесса и затем уходит.Вы создадите функцию под названием go_to_movies () , чтобы отслеживать это:

              def go_to_movies (env, кинозритель, театр):
                # Кинозритель приходит в театр
                прибытия_время = env.now
              

            Этой функции переданы три аргумента:

            1. env : Moviegoer будет управляться средой, поэтому вы передадите это в качестве первого аргумента.
            2. Moviegoer : эта переменная отслеживает каждого человека, когда он перемещается по системе.
            3. Theater : этот параметр дает вам доступ к процессам, которые вы определили в общем определении класса.

            Вы также объявляете переменную arrival_time для хранения времени, в которое зрителей прибывают в кинотеатр. Вы можете получить это время, используя вызов simpy на env.now .

            Вам нужно, чтобы каждый из процессов вашего Theater имел соответствующие запросы в go_to_movies () .Например, первый процесс в классе — это Purchase_ticket () , который использует ресурс кассира . Кинозрителю нужно будет сделать запрос к ресурсу кассира , чтобы помочь им в процессе Purchase_ticket () . Вот таблица, чтобы резюмировать это:

            Процесс в кинотеатре Запрос в go_to_movies ()
            Purchase_ticket () Запросить кассир
            check_ticket () Запрос помощник
            sell_food () Запросить сервер

            Кассир — это общий ресурс, а это значит, что многие кинозрители будут использовать одну и ту же кассу.Однако кассир может помочь только одному кинозрителю за раз, поэтому вам нужно будет включить в свой код некоторое время ожидания. Вот как это работает:

              def go_to_movies (env, кинозритель, театр):
                # Кинозритель приходит в театр
                прибытия_время = env.now
            
                с помощью Theater.cashier.request () в качестве запроса:
                    запрос на уступку
                    yield env.process (theatre.purchase_ticket (кинозритель))
              

            Вот как работает этот код:

            1. Theater.cashier.request () : кинозритель генерирует запрос на использование кассира .
            2. запрос выхода : кинозритель ожидает, пока кассир станет доступным, если все они в настоящее время используются. Чтобы узнать больше о ключевом слове yield , прочтите статью «Как использовать генераторы и yield в Python».
            3. yield env.process () : Moviegoer использует доступный кассир для завершения данного процесса. В данном случае это покупка билета со звонком на номер Theater.purchase_ticket () .

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

            Когда кассир освободится, кинозритель потратит некоторое время на покупку билета. окр.process () указывает моделированию перейти к экземпляру Theater и запустить процесс Purchase_ticket () на этом Moviegoer . Кинозритель повторит этот цикл запроса, использования, выпуска, чтобы проверить свой билет:

              def go_to_movies (env, кинозритель, театр):
                # Кинозритель приходит в театр
                прибытия_время = env.now
            
                с помощью Theater.cashier.request () в качестве запроса:
                    запрос на уступку
                    yield env.process (театр.Purchase_ticket (кинозритель))
            
                с Theater.usher.request () в качестве запроса:
                    запрос на уступку
                    yield env.process (theatre.check_ticket (кинозритель))
              

            Здесь структура кода такая же.

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

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

              def go_to_movies (env, кинозритель, театр):
                # Кинозритель приходит в театр
                прибытия_время = env.now
            
                с помощью Theater.cashier.request () в качестве запроса:
                    запрос на уступку
                    yield env.process (theatre.purchase_ticket (кинозритель))
            
                с Theater.usher.request () в качестве запроса:
                    запрос на уступку
                    yield env.процесс (Theater.check_ticket (кинозритель))
            
                если random.choice ([True, False]):
                    с помощью Theater.server.request () в качестве запроса:
                        запрос на уступку
                        yield env.process (theatre.sell_food (кинозритель))
              

            Этот условный оператор вернет один из двух результатов:

            1. True : кинозритель запросит сервер и закажет еду.
            2. Неверно : Кинозритель вместо этого пойдет искать свои места, не покупая закуски.

            Теперь помните, что цель этого моделирования — определить количество кассиров, помощников и серверов, которые должны быть в штате, чтобы время ожидания не превышало 10 минут. Для этого вам нужно знать, сколько времени потребовалось кинозрителям и , чтобы добраться до своих мест. Вы используете env.now в начале функции для отслеживания времени прибытия и снова в конце, когда каждый кинозритель завершает все процессы и направляется в кинотеатр:

              def go_to_movies (env, кинозритель, театр):
                # Кинозритель приходит в театр
                прибытия_время = env.сейчас
            
                с помощью Theater.cashier.request () в качестве запроса:
                    запрос на уступку
                    yield env.process (theatre.purchase_ticket (кинозритель))
            
                с Theater.usher.request () в качестве запроса:
                    запрос на уступку
                    yield env.process (theatre.check_ticket (кинозритель))
            
                если random.choice ([True, False]):
                    с помощью Theater.server.request () в качестве запроса:
                        запрос на уступку
                        yield env.process (theatre.sell_food (кинозритель))
            
                # Кинозритель направляется в театр
                wait_times.append (окр.сейчас - прибытие_время)
              

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

            Примечание. Вы можете сохранить время отправления в отдельной переменной, например, leave_time , но это сделает ваш код очень повторяющимся, что нарушает D.R.Y. принцип.

            Этот кинозритель готов посмотреть несколько превью!

            Создание вещей: определение функций

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

              def run_theater (env, num_cashiers, num_servers, num_ushers):
                театр = Театр (env, num_cashiers, num_servers, num_ushers)
              

            Поскольку это основной процесс, вам необходимо передать все неизвестные, которые вы заявили до сих пор:

            • num_cashiers
            • число_серверов
            • num_ushers

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

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

              def run_theater (env, num_cashiers, num_servers, num_ushers):
                театр = Театр (env, num_cashiers, num_servers, num_ushers)
            
                для кинозрителей в диапазоне (3):
                    окр.процесс (go_to_movies (env, кинозритель, театр))
              

            Вы используете range () , чтобы заполнить кинотеатр тремя кинозрителями. Затем вы используете env.process () , чтобы сообщить симуляции, что нужно подготовиться к перемещению их по театру. Остальные кинозрители доберутся до кинотеатра в удобное для них время. Таким образом, функция должна продолжать отправлять новых клиентов в кинотеатр, пока выполняется симуляция.

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

              def run_theater (env, num_cashiers, num_servers, num_ushers):
                театр = Театр (env, num_cashiers, num_servers, num_ushers)
            
                для кинозрителей в диапазоне (3):
                    env.process (go_to_movies (env, кинозритель, театр))
            
                в то время как True:
                    yield env.timeout (0.20) # Подождите немного перед генерацией нового человека
            
                    # Почти сделано!...
              

            Обратите внимание, что вы используете десятичное число 0,20 для представления 12 секунд. Чтобы получить это число, вы просто разделите 12 секунд на 60 секунд, то есть количество секунд в минуте.

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

              def run_theater (env, num_cashiers, num_servers, num_ushers):
                театр = Театр (env, num_cashiers, num_servers, num_ushers)
            
                для кинозрителей в диапазоне (3):
                    окр.процесс (go_to_movies (env, кинозритель, театр))
            
                в то время как True:
                    yield env.timeout (0.20) # Подождите немного перед генерацией нового человека
            
                    кинозритель + = 1
                    env.process (go_to_movies (env, кинозритель, театр))
              

            Вот и все! Когда вы вызываете эту функцию, симуляция генерирует 3 кинозрителя для запуска и начинает перемещать их по кинотеатру с помощью go_to_movies () . После этого новые кинозрители будут приходить в кинотеатр с интервалом в 12 секунд и перемещаться по кинотеатру в удобное для них время.

            Расчет времени ожидания: определение функции

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

              def get_average_wait_time (wait_times):
                average_wait = статистика.среднее (время_ ожидания)
              

            Эта функция принимает ваш список wait_times в качестве аргумента и использует statistics.mean () для вычисления среднего времени ожидания.

            Поскольку вы создаете сценарий, который будет использоваться менеджером кинотеатра, вам нужно убедиться, что вывод может быть легко прочитан пользователем. Для этого вы можете добавить функцию calculate_wait_time () :

              def calculate_wait_time (Время прибытия, Время отправления):
                average_wait = статистика.среднее (время_ ожидания)
                # Довольно распечатать результаты
                минут, frac_minutes = divmod (average_wait, 1)
                секунд = frac_minutes * 60
                возврат раунд (минуты), раунд (секунды)
              

            Последняя часть функции использует divmod () для возврата результатов в минутах и ​​секундах, чтобы менеджер мог легко понять вывод программы.

            Выбор параметров: определение функции пользовательского ввода

            При создании этих функций вы столкнулись с несколькими переменными, которые не были четко определены:

            • num_cashiers
            • число_серверов
            • num_ushers

            Эти переменные представляют собой параметры, которые вы можете изменить, чтобы увидеть, как изменяется моделирование.Если в блокбастере покупатели выстраиваются в очередь вокруг квартала, сколько кассиров должно работать? Что, если люди пролетают через кассы, но застревают на уступках? Какое значение num_servers поможет облегчить поток?

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

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

              def get_user_input ():
                num_cashiers = input ("Введите количество работающих кассиров:")
                num_servers = input ("Введите количество работающих серверов:")
                num_ushers = input ("Введите количество работающих помощников:")
                params = [num_cashiers, num_servers, num_ushers]
                if all (str (i) .isdigit () for i in params): # Проверить правильность ввода
                    params = [int (x) для x в params]
                еще:
                    Распечатать(
                        "Не удалось проанализировать ввод.При моделировании будут использоваться значения по умолчанию: ",
                        "\ n1 кассир, 1 сервер, 1 помощник.",
                    )
                    params = [1, 1, 1]
                вернуть параметры
              

            Эта функция просто вызывает функцию Python input () для получения данных от пользователя. Поскольку пользовательский ввод может оказаться беспорядочным, вы можете включить предложение if / else , чтобы отловить что-либо недопустимое. Если пользователь вводит неверные данные, моделирование будет выполняться со значениями по умолчанию.

            Завершение настройки: определение основных функций

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

              def main ():
              # Настраивать
              random.seed (42)
              num_cashiers, num_servers, num_ushers = get_user_input ()
            
              # Запускаем симуляцию
              env = simpy.Environment ()
              env.process (run_theater (env, num_cashiers, num_servers, num_ushers))
              env.run (до = 90)
            
              # Просмотр результатов
              мин, сек = get_average_wait_time (wait_times)
              Распечатать(
                  «Беговое моделирование... ",
                  f "\ nСреднее время ожидания составляет {mins} минут и {secs} секунд.",
              )
              

            Вот как работает main () :

            1. Настройте среду, объявив случайное начальное число. Это гарантирует, что ваш результат будет выглядеть так, как вы видите в этом руководстве.
            2. Запросить информацию у пользователя вашей программы.
            3. Создайте среду и сохраните ее как переменную env , которая будет перемещать симуляцию через каждый временной шаг.
            4. Скажите simpy запустить процесс run_theater () , который создает среду кинотеатра и заставляет кинозрителей перемещаться по ней.
            5. Определите, как долго вы хотите, чтобы симуляция запускалась. По умолчанию продолжительность моделирования составляет 90 минут.
            6. Сохраните вывод get_average_wait_time () в двух переменных: минут и секунд .
            7. Используйте print () , чтобы показать результаты пользователю.

            На этом настройка завершена!

            Как запустить моделирование

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

            • Theater : это определение класса служит схемой для среды, которую вы хотите моделировать. Он определяет некоторую информацию об этой среде, например, какие виды ресурсов доступны и какие процессы с ними связаны.

            • go_to_movies () : эта функция делает явные запросы на использование ресурса, проходит через связанный процесс и затем передает его следующему зрителю.

            • run_theater () : Эта функция управляет симуляцией. Он использует схему класса Theater для создания экземпляра театра, а затем вызывает go_to_movies () для создания и перемещения людей по театру.

            • get_average_wait_time () : Эта функция находит среднее время, которое требуется кинозрителю , чтобы пройти через кинотеатр.

            • calculate_wait_time () : Эта функция обеспечивает удобство чтения конечного вывода для пользователя.

            • get_user_input () : Эта функция позволяет пользователю определять некоторые параметры, например, сколько кассиров доступно.

            • main () : эта функция обеспечивает правильную работу вашего скрипта в командной строке.

            Теперь вам нужно еще две строки кода для вызова вашей основной функции:

             , если __name__ == '__main__':
                основной()
              

            Теперь ваш скрипт готов к работе! Откройте свой терминал, перейдите туда, где вы сохранили simulator.py и выполните следующую команду:

              $ python simulate.py
            Введите количество работающих кассиров:
              

            Вам будет предложено выбрать параметры для моделирования. Вот как выглядит результат с параметрами по умолчанию:

              $ python simulate.py
            Введите количество работающих кассиров: 1
            Введите количество работающих серверов: 1
            Введите количество работающих помощников: 1
            Запуск моделирования ...
            Среднее время ожидания составляет 42 минуты 53 секунды.
              

            Ух ты! Долго ждать!

            Когда что-то менять

            Помните, ваша цель — обратиться к менеджеру с решением относительно того, сколько сотрудников ему потребуется в штате, чтобы время ожидания не превышало 10 минут.Для этого вам нужно поэкспериментировать со своими параметрами, чтобы увидеть, какие числа предлагают оптимальное решение.

            Во-первых, попробуйте что-нибудь совершенно безумное и максимально используйте ресурсы! Скажем, в этом кинотеатре работали 100 кассиров, 100 официантов и 100 швейцаров. Конечно, это невозможно, но использование безумно больших чисел быстро скажет вам, каков лимит системы. Попробуйте сейчас:

              $ python simulate.py
            Вход Количество работающих кассиров: 100
            Введите количество работающих серверов: 100
            Введите количество работающих помощников: 100
            Беговое моделирование...
            Среднее время ожидания составляет 3 минуты 29 секунд.
              

            Даже если вы исчерпали ресурсы, время ожидания сократится только до 3 с половиной минут. Теперь попробуйте изменить числа, чтобы увидеть, сможете ли вы сократить время ожидания до 10 минут, как просил менеджер. Какое решение вы придумали? Вы можете развернуть блок кода ниже, чтобы увидеть одно возможное решение:

              $ python simulate.py
            Вход Количество работающих кассиров: 9
            Входные данные Количество работающих серверов: 6
            Введите количество работающих помощников: 1
            Беговое моделирование...
            Среднее время ожидания составляет 9 минут 60 секунд.
              

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

            Заключение

            Из этого руководства вы узнали, как построить и запустить симуляцию на Python с использованием фреймворка simpy .Вы научились понимать, как в системах агенты подвергаются процессам, и как вы можете создавать виртуальные представления этих систем, чтобы защитить их от перегрузки и задержек. Хотя тип моделирования может быть разным, в целом выполнение остается неизменным! Вы сможете применить полученные здесь знания в различных сценариях.

            Теперь вы можете:

            • Мозговой штурм алгоритма моделирования, шаг за шагом
            • Создайте виртуальную среду на Python с simpy
            • Определить функции, представляющие агентов и процессы
            • Измените параметры моделирования, чтобы найти оптимальное решение.

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