Вытесняющие/невытесняющие алгоритмы.
В случае вытесняющего алгоритма операционная система в любой момент времени может прервать выполнение текущего потока и переключить процессор на другой поток. В невытесняющих алгоритмах поток, которому предоставлен процессор, только сам решает, когда передать управление операционной системе.
Алгоритмы с квантованием.
Каждому потоку предоставляется квант времени, в течение которого поток может выполняться на процессоре. По истечении кванта операционная система переключает процессор на следующий поток в очереди. Квант обычно равен целому числу интервалов системного таймера1.
Алгоритмы с приоритетами.
Каждому потоку назначается приоритет (priority) – целое число, обозначающее степень привилегированности потока. Операционная система при наличии нескольких готовых к выполнению потоков выбирает из них поток с наибольшим приоритетом.
В Windows реализован смешанный алгоритм планирования – вытесняющий, на основе квантования и приоритетов.
Поток может находиться в нескольких состояниях. Перечислим основные состояния:
• Готовность (Ready) – поток готов к выполнению и ждет своей очереди занять процессор.
• Выполнение (Running) – поток выполняется на процессоре.
• Ожидание (Waiting) – поток не может выполняться, поскольку ждет наступление некоторого события.
• Кроме основных существует ещё несколько состояний – Инициализация (Init), Завершение (Terminate), Состояние простоя (Standby), Переходное состояние (Transition), Состояние отложенной готовности (Deferred ready).
|
|
В операционной системе Windows имеется 32 уровня приоритета – от 0 до 31.
Поток имеет два значения приоритета – базовый и текущий. При создании потока базовый приоритет потока принимается равным базовому приоритету процесса-владельца. Можно изменить базовый приоритет потока при помощи WinAPI-функции SetThreadPriority. Параметрами этой функции являются дескриптор потока и относительный приоритет, который определяет смещение базового приоритета.
Текущий приоритет потока при создании потока равен базовому, но в дальнейшем может динамически повышаться и понижаться операционной системой (эта процедура будет рассмотрена далее). Заметим, что для потоков с базовым приоритетом Real Time текущий приоритет не изменяется и всегда равен базовому.
Этапы развития технологии программирования (4 этапа).
В историческом аспекте в развитии технологии программирования можно выделить несколько этапов.
1. Первый этап - “стихийное” программирование – отсутствие сформулированной технологии, когда программирование было, по сути, искусством. Этап охватывает период от появления первых ЭВМ до середины 60-х годов 20 века. Развитие программирования шло по пути замены машинных языков ассемблерами, а затем алгоритмическими языками (Fortran, Algol) и повторного использования подпрограмм, что повысило производительность труда программиста. Стихийно использовалась разработка “снизу-вверх” – подход, при котором вначале проектировали и реализовывали сравнительно простые подпрограммы, из которых потом пытались построить сложную программу.
|
|
2. Второй этап – структурный подход к программированию. Этот подход сложился в 60 – 70 годы 20 века и представлял собой совокупность рекомендуемых технологических приемов, охватывающих все этапы разработки программного обеспечения. В основе структурного подхода лежит декомпозиция сложных систем с целью последующей реализации в виде отдельных небольших подпрограмм. В отличие от используемого ранее процедурного подхода к декомпозиции, структурный подход требовал представления задачи в виде иерархии подзадач простейшей структуры. Проектирование осуществлялось “сверху-вниз” и подразумевало реализацию общей идеи, обеспечивая проработку интерфейсов подпрограмм. Поддержка принципов структурного программирования была заложена в основу процедурных языков программирования (PL/1, Algol-68, Pascal, C). Появилась и начала развиваться технология модульного программирования, которая предполагает выделение групп подпрограмм, использующих одни и те же глобальные данные, в отдельно компилируемые модули.
|
|
3. Третий этап – объектный подход к программированию. Сложился с середины 80-х до конца 90-х годов 20 века. Объектно-ориентированное программирование определяется как технология создания сложного программного обеспечения, основанная на представлении программы в виде совокупности объектов, каждый из которых является экземпляром определенного типа (класса), а классы образуют иерархию с наследованием свойств. Взаимодействие программных объектов осуществляется путем передачи сообщений. Развитие объектного подхода в технологии программирования привело к созданию сред визуального программирования. Появились языки визуального ООП, такие как Delphi, C++ Builder, Visual C++, C#.
4. Четвертый этап – компонентный подход и CASE-технологии (с середины 90-х годов 20 века до нашего времени). Этот подход предполагает построение программного обеспечения из отдельных компонентов – физически отдельно существующих частей программного обеспечения, которые взаимодействуют между собой через стандартизованные двоичные интерфейсы. В отличие от обычных объектов объекты-компоненты можно собирать в динамически вызываемые библиотеки или исполняемые файлы, распространять в двоичном виде (без исходных текстов) и использовать в любом языке программирования, поддерживающем соответствующую технологию. В настоящее время рынок компонентов – реальность, поддерживаемая Интернетом и массовой рекламой и публикациями.
|
|
Важнейшая особенность современного этапа технологии программирования – широкое использование компьютерных технологий создания и сопровождения программных систем на всех этапах их жизненного цикла. Эти технологии получили название CASE-технологий (Computer-Aided Software/System engineering – разработка программного обеспечения/программных систем с использованием компьютерной поддержки). Сегодня существуют CASE-технологии, поддерживающие как структурный, так и объектный, в том числе, компонентный подходы к программированию.
Дата добавления: 2019-07-15; просмотров: 336; Мы поможем в написании вашей работы! |
Мы поможем в написании ваших работ!