Главная страница
Навигация по странице:

  • Общесистемная часть

  • Задачи размещения в ВАП

  • Специальная часть.

  • 2.4 Описание классов и методов . Описание программной реализации:Форма

  • Реализация модели программно

  • Список литературы.

  • Курсовая работа. Задача размещения информации 12 Специальная часть. 14 1 Постановка задачи. 14 15


    Скачать 128.17 Kb.
    НазваниеЗадача размещения информации 12 Специальная часть. 14 1 Постановка задачи. 14 15
    АнкорКурсовая работа
    Дата01.06.2020
    Размер128.17 Kb.
    Формат файлаdocx
    Имя файлаKursovaya_rabota_po_SPO.docx
    ТипЗадача
    #127188

    Содержание




    1.Общесистемная часть. 2

    1.1.Понятие операционной системы. 2

    1.2.Организация памяти ЭВМ 3

    1.3.Организация доступа к ресурсу оперативной памяти. 6

    1.4.Стратегии размещения информации в памяти. 8

    1.5.Физическая память. 9

    1.6.Виртуальное адресное пространство 10

    1.7.Задача размещения информации 12

    2.Специальная часть. 14

    2.1 Постановка задачи. 14

    15

    2.2 Использование методов имитационного моделирования для решения поставленной задачи. 15

    2.3 Разработка имитационной модели. 17

    Заключение. 25

    Список литературы. 26

    Приложение. 26





    1. Общесистемная часть.

      1. Понятие операционной системы.


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

    При этом хорошая операционная система (ОС) должна обладать следующими свойствами:

    • Развиваемость - загрузка и запуск программ.

    • Посредничество – между аппаратурой и приложениями.

    • Настраиваемость – распознавание дополнительной новой аппаратуры.

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

    • «Прозрачность» - наличие минимума необходимой информации о работе системы.

    • Поддерживаемость программными приложениями.

    • Многозадачность – одновременная работа с несколькими программами.

    • Надежность – страховка от непоправимых ошибок, возможность безболезненного выхода из аварийных ситуаций.

    • Безопасность – наличие средств защиты информации от повреждения.

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


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

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

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

    Как и большинство устройств ЭВМ, память имеет иерархическую структуру. Обобщённая модель такой структуры, отражающая многообразие ЗУ и их взаимодействие. Все запоминающие устройства обладают различным быстродействием и емкостью. Чем выше уровень иерархии, тем выше быстродействие соответствующей памяти, но меньше её емкость.

    К самому высокому уровню - сверхоперативному - относятся регистры управляющих и операционных блоков процессора, сверхоперативная память, управляющая память, буферная память (кэш-память).

    На втором оперативном уровне находится оперативная память (ОП), служащая для хранения активных программ и данных, то есть тех программ и данных, с которыми работает ЭВМ.

    На втором оперативном уровне находится оперативная память (ОП), служащая для хранения активных программ и данных, то есть тех программ и данных, с которыми работает ЭВМ.



    Рисунок 1. Иерархическая структура памяти

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

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

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

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

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

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

    Сравнительно небольшая емкость оперативной памяти (8 - 64 Мбайта) компенсируется практически неограниченной емкостью внешних запоминающих устройств. Однако эти устройства сравнительно медленные - время обращения за данными для магнитных дисков составляет десятки микросекунд. Для сравнения: цикл обращения к оперативной памяти (ОП) составляет 50 нс. Исходя из этого, вычислительный процесс должен протекать с возможно меньшим числом обращений к внешней памяти.
      1. Организация доступа к ресурсу оперативной памяти.


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

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

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

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


    Стратегии размещения ставят своей целью определить, в какое место основной памяти следует помещать поступающую программу. Известно три стратегии размещения:

    • «первый подходящий»;

    • «наиболее подходящий»;

    • «наименее подходящий».

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

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

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

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


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

    Организация памяти — это способ представления и использования основной памяти. Распространенными способами организации памяти для системы с физической памятью являются:

    • однопрограммные (одноабонентские) системы;

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

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

    • мультипрограммные системы с переменными разделами;

    • системы со свопингом.

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

    • стратегии выборки;

    • стратегии размещения;

    • стратегии замещения.

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


    Структура оверлей – первый шаг к структуризации адресного пространства.

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

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

    Аспекты:

    1. Задачи, которые решает ВАП

    2. Системные требования к реализации ВАП

      • Увеличение степени использования ОП при параллельном развитии нескольких процессов

      • ВАП и ОП должны быть организованы таким образом, чтобы обеспечить минимальное время задержек при обращении к данным

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

    3. Механизм реализации системных требований (которые даны выше)

      • Создаются условия для подготовки вызова кванта (порции) информации, вероятность которого в данный момент является наиболее высокой

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

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

      • Предполагается возможность размещения больших непрерывных массивов информации в различных областях ОП

    Два уровня размещения информации:

    1. ОП

    2. Внешние запоминающие устройства (архивная среда)
      1. Задача размещения информации


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

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

    1. ОП и ВАП значительно отличаются по размерам

    2. Они отличаются методами доступа к информации

    Вводятся следующие коэффициенты:

    1. Nв или Nоп - размер адресных пространств, Nв>>Nоп

    2. Коэффициент расщепления АП – α =L/Nв для виртуальной памяти и β =L/Nоп, α << β <1

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

    1. С увеличением фрагментации уменьшается темп обслуживания процессов

    2. Уменьшается коэффициент мультиплексирования

    Задачи размещения в ВАП:

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

    Пример: Nоп=512Мб, Nвоп=4Гб

    ВАП состоит из последовательных номеров страниц от 0 до максимального количества страниц. Минимальной единицей выделения АП является целая страница. При развитии процесса программный код или массивы данных помещаются в ВАП, при этом каждому процессу выделяется область в ВАП, состоящая из смежных страниц. Для каждого нового процесса номера страниц выделяются строго в возрастающем порядке из числа еще не распределенных страниц. При этом все ВАП делится на 2 сектора: сектор страниц, которые заняты под существующие процессы, и свободный сектор, включающий в себя не распределенные на данный момент страницы. Для того чтобы помнить, что занято, а что нет необходим максимальный номер занятой страницы, или M0 – номер первой незанятой страницы.

    Если процесс завершился, то в занимаемом им ранее секторе образуются «псевдосвободные» страницы. При функционировании ВАП и решении задачи размещения псевдосвободные участки во внимание не принимаются.

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

    1. Специальная часть.

    2.1 Постановка задачи.


    Цели – Разработка модели задачи размещение информации в виртуальном адресном пространстве.

    Задачи:

    1. Разработка модели виртуального адресного пространства.

    2. Разработка процесса размещения программного кода в ВАП.

    3. Разработка механизма освобождения псевдосвободных ячеек в ВАП.

    4. Реализация и описание методов и классов модели ВАП с помощью ООП.





    .

    2.2 Использование методов имитационного моделирования для решения поставленной задачи.


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

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

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

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

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

    • Нет законченной постановки задачи и идет процесс познания объекта моделирования;

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

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

    • Необходимо произвести моделирование в ускоренном или замедленном масштабе времени.

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

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

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

    Каждая модель представляет собой комбинацию таких составляющих, как:

    • Компонент - составные части, которые при объединении образуют систему.

    • Переменные - описывают входы и выходы компоненты. В тех случаях, когда переменные изменяют состояние компоненты, их называют переменные состояния.

    • Параметры - значения, характеризующие состояние компоненты.

    • Функциональные зависимости - определяют поведение переменных в пределах компоненты.

    • Ограничения - представляют собой устанавливаемые пределы изменения переменных.

    • Целевые функции - характеризируют динамические свойства или иные свойства системы.

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

    2.3 Разработка имитационной модели.


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

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

    1. Виртуального адресного пространства характеризуется следующими параметрами:

    * Список загруженных процессов;

    * Индекс сегмента. Сегмент, в котором в определенный момент времени происходит вычислительный процесс;

    * Идентификатор процесса.

    Модель ВАП имеет следующие процедуры:

    * Добавить процесс;

    * Удалить процесс;

    2. Модель процесса имеет следующие параметры:

    * ID процесса;

    * Время обработки;

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

    Так как все перечисленные модели можно охарактеризовать, как объекты какой-то системы, то для их реализации необходим объектно-ориентированный язык программирования. Сегодня, при наличии широкого диапазона таких языков, сделать окончательный выбор не так уж и сложно. Все представленные модели реализованы в среде Microsoft Visual Studio 2010 C# в виде классов с соответствующими параметрами, процедурами и функциями. Так как данная среда позволяет построение диалогового приложения, причем, для этого уже имеются стандартные объекты и функции, их описывающие. Это позволяет сузить круг проблем, решение которых необходимо для решения поставленной задачи до минимума: программирование разработанных моделей и дизайн приложения.
    2.4 Описание классов и методов.

    Описание программной реализации:

    Форма:

    Данные:

    Random rnd; // Рандом

    List cells; // Список ячеек

    int IDCell, IDProcess; // ID ячейки и процесса

    int interval; // Отступ для рисования ячеек

    Методы:

    private void Place_Button_Click(object sender, EventArgs e) // Добавление процессов

    private void Timer_Tick(object sender, EventArgs e) // Таймер для обработки

    private void Main_Paint(object sender, PaintEventArgs e) // Отображение

    private void Clear_Button_Click(object sender, EventArgs e) // Сбросить по умолчанию

    private void Stop_Button_Click(object sender, EventArgs e) // Остановить

    private void Continue_Button_Click(object sender, EventArgs e) // Продолжить

    Ячейка:

    Данные/свойства:

    private Process process; // Процесс в ячейке

    public int ID { get; set; } // ID ячейки

    public bool Reserved { get; set; } // Занятость ячейки

    public int X { get; set; } // Координата X

    public int Y { get; set; } // Координата Y

    public int Width { get; set; } // Ширина

    public int Height { get; set; } // Высота

    public Font Font { get; set; } // Шрифт

    public Point TextPos { get; set; } // Координаты текста

    Методы:

    public void Draw(Graphics g) // Отображение

    public void Add(int id, int timeWork) // Добавить процесс

    public void Work(ListBox.ObjectCollection items)

    // Обработка процесса

    Процесс:

    Данные/свойства:

    public int ID { get; set; } // ID процесса

    public int TimeWork { get; set; } // Время обработки

    public int X { get; set; } // Координата X

    public int Y { get; set; } // Координата Y

    public int Width { get; set; } // Ширина

    public int Height { get; set; } // Высота

    public Font Font { get; set; } // Шрифт

    public Point TextPos { get; set; } // Координаты текста

    Методы:

    public Process(int id, int timeWork, int x, int y, int width, int height) // Конструктор

    public void Draw(Graphics g) // Отображение



      1. Реализация модели программно:

    Внешний вид главной формы:



    Рисунок 2. Внешний вид программы.

    Приложение состоит из компонентов следующих типов: Button (кнопки «разместить», «Очистить», «Продолжить», «Остановить»), NumericUpDown (установка количество процессов), PictureBox (графическое представление процессов и оперативной памяти), Timer (реализация механизма адресации), Label, TextBox.

    Для начала процесса моделирования необходимо задать количество процессов и нажать «Разместить»



    Рисунок 3. Внешний вид программы после запуска.

    Как необходимый элементы системы было добавлено удаление «псевдосвободных» процессов из ячеек в для беспрерывного функционирования системы.



    Рисунок 4. Внешний вид программы после запуска.

    В случае невозможности удаления процессов в связи с их обслуживанием программа выдаёт предупреждение о невозможности добавления процессов.

    Заключение.


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

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

    Список литературы.


    1. Г. Дейтел «Введение в операционные системы», М.: «Мир» 1987

    2. И.В. Максимей «Имитационное моделирование на ЭВМ», М.: «Радио и связь» 1988

    3. Бойс Д. Внутренний мир Windows 98. М. 1999.

    4. А.Я. Архангельский. Программирование в C++ Builder 5.M. 2000.





    Приложение.


    Код программы:
    Форма:

    using System;

    using System.Collections.Generic;

    using System.Windows.Forms;
    namespace Forms

    {

    public partial class Main : Form

    {

    Random rnd; // Рандом

    List cells; // Список ячеек

    int IDCell, IDProcess; // ID ячейки и процесса

    int interval; // Отступ для рисования ячеек
    // Конструктор

    public Main()

    {

    InitializeComponent();

    NumberProcesses_ComboBox.SelectedIndex = 0;

    rnd = new Random();

    cells = new List();

    for (int i = 0; i < 16; i++)

    {

    cells.Add(new Cell(IDCell++, 50, 25 + interval, 150, 25));

    interval += 25;

    }

    }
    // Разместить процессы

    private void Place_Button_Click(object sender, EventArgs e)

    {

    // Добавление процессов

    for (int i = 0; i < Convert.ToInt32(NumberProcesses_ComboBox.SelectedItem); i++)

    {

    Cell tmp = Least();

    if (tmp != null)

    {

    tmp.Add(IDProcess++, rnd.Next(5, 20));

    tmp.Reserved = true;

    }

    else break;

    }
    // Включение таймера

    if (!Timer.Enabled)

    {

    Timer.Start();

    Stop_Button.Enabled = true;

    Continue_Button.Enabled = false;

    }
    Invalidate();

    }
    // Таймер для обработки

    private void Timer_Tick(object sender, EventArgs e)

    {

    foreach (Cell it in cells)

    if (it.Reserved)

    it.Work(LOG_ListBox.Items);

    Invalidate();

    }
    // Отображение

    private void Main_Paint(object sender, PaintEventArgs e)

    {

    foreach (Cell it in cells)

    it.Draw(e.Graphics);

    }

    // Пустая ячейка с меньшим номером

    private Cell Least()

    {

    for (int i = 0; i < cells.Count; i++)

    if (cells[i].Reserved == false)

    return cells[i];

    return null;

    }
    // Сбросить по умолчанию

    private void Clear_Button_Click(object sender, EventArgs e)

    {

    NumberProcesses_ComboBox.SelectedIndex = 0;

    IDCell = IDProcess = interval = 0;

    LOG_ListBox.Items.Clear();

    cells.Clear();

    for (int i = 0; i < 16; i++)

    {

    cells.Add(new Cell(IDCell++, 50, 25 + interval, 150, 25));

    interval += 25;

    }

    Stop_Button.Enabled = false;

    Continue_Button.Enabled = false;

    Timer.Stop();

    Invalidate();

    }
    // Остановить

    private void Stop_Button_Click(object sender, EventArgs e)

    {

    Timer.Stop();

    Stop_Button.Enabled = false;

    Continue_Button.Enabled = true;

    }
    // Продолжить

    private void Continue_Button_Click(object sender, EventArgs e)

    {

    Timer.Start();

    Stop_Button.Enabled = true;

    Continue_Button.Enabled = false;

    }

    }

    }

    Ячейка(ВАП):

    using System.Windows.Forms;

    using System.Drawing;
    namespace Forms

    {

    public class Cell

    {

    private Process process; // Процесс в ячейке
    public int ID { get; set; } // ID ячейки

    public bool Reserved { get; set; } // Занятость ячейки
    public int X { get; set; } // Координата X

    public int Y { get; set; } // Координата Y

    public int Width { get; set; } // Ширина

    public int Height { get; set; } // Высота
    public Font Font { get; set; } // Шрифт

    public Point TextPos { get; set; } // Координаты текста
    // Конструктор

    public Cell(int id, int x, int y, int width, int height)

    {

    ID = id;

    Reserved = false;
    X = x;

    Y = y;

    Width = width;

    Height = height;
    Font = new Font("Arial", 8, FontStyle.Bold);

    TextPos = new Point(X + 5, Y + Height / 2 - 6);

    }
    // Отображение

    public void Draw(Graphics g)

    {

    SolidBrush brush = new SolidBrush(Color.LightGreen);

    Pen pen = new Pen(Color.DimGray);

    g.FillRectangle(brush, X, Y, Width, Height);

    g.DrawRectangle(pen, X, Y, Width, Height);

    brush.Dispose();

    pen.Dispose();

    TextRenderer.DrawText(g, "Ячейка " + ID, Font, TextPos, Color.DimGray);

    if (process != null) process.Draw(g);

    }
    // Добавить процесс

    public void Add(int id, int timeWork)

    {

    process = new Process(id, timeWork, X, Y, Width, Height);

    }
    // Обработка процесса

    public void Work(ListBox.ObjectCollection items)

    {

    process.TimeWork -= 1;

    if (process.TimeWork <= 0 || process.Width <= 0)

    {

    items.Add("Процесс: " + process.ID);

    process = null;

    Reserved = false;

    }

    else

    process.Width -= process.Width / process.TimeWork;

    }

    }

    }
    Процесс:

    using System.Windows.Forms;

    using System.Drawing;
    namespace Forms

    {

    public class Process

    {

    public int ID { get; set; } // ID процесса

    public int TimeWork { get; set; } // Время обработки
    public int X { get; set; } // Координата X

    public int Y { get; set; } // Координата Y

    public int Width { get; set; } // Ширина

    public int Height { get; set; } // Высота
    public Font Font { get; set; } // Шрифт

    public Point TextPos { get; set; } // Координаты текста
    // Конструктор

    public Process(int id, int timeWork, int x, int y, int width, int height)

    {

    ID = id;

    TimeWork = timeWork;
    X = x;

    Y = y;

    Width = width;

    Height = height;
    Font = new Font("Arial", 8, FontStyle.Bold);

    TextPos = new Point(X - 25, Y + Height / 2 - 6);

    }
    // Отображение

    public void Draw(Graphics g)

    {

    SolidBrush brush = new SolidBrush(Color.Tomato);

    Pen pen = new Pen(Color.DimGray);

    g.FillRectangle(brush, X, Y, Width, Height);

    g.DrawRectangle(pen, X, Y, Width, Height);

    brush.Dispose();

    pen.Dispose();

    TextRenderer.DrawText(g, ID.ToString(), Font, TextPos, Color.DimGray);

    }

    }

    }




    написать администратору сайта