Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Базовые информационные процессы и технологии.docx
Скачиваний:
14
Добавлен:
18.04.2015
Размер:
242.88 Кб
Скачать

Закон Мура

В 1960-е годы, в самом начале информационной революции, Гордон Мур, впоследствии один из основателей Intel, обратил внимание на интересную закономерность в развитии компьютеров.

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

В современной формулировке:

  • Количество транзисторов, размещаемых на кристалле интегральной системы, удваиваются каждые 24 месяца.

Процессы в операционной системе

Операционная система:

  • Для каждого выполняемого приложения ОС создает процесс

  • В каждый момент времени ОС работает с множеством процессов

  • Одна из главных задач ОС состоит в распределении ресурсов между процессами

  • Ресурсы операционная память и процессорное время

Процесс – владелец ресурсов

  • Когда ОС создает процесс, то выделяет ему ресурсы

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

  • Код программы выполняют потоки и именно потокам ОС выделяет процессорное время

  • При создании процесса ОС создает поток

Процесс

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

Процессу ОС выделяет ресурсы, необходимые для выполнения программы, например:

  • Адресное пространство процесса содержит его программы код, данные и стек

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

  • Устройства ввода-вывода используются в соответствии с их назначением

Процесс – пассивный объект, владелец ресурсов, контейнер для выполнения потоков.

Поток

Поток – абстракция, представлявшая последовательное выполнение команд программы.

      • Процесс может иметь несколько потоков:

        • Потоки совместно используют

        • Глобальные и статические переменные

        • Динамически распределяемую память (кучу)

        • Системные ресурсы

      • Каждый поток имеет свои собственные:

        • Программный счетчик (IP)

        • Значение регистров

        • Локальные переменные

Процесс – совокупность взаимодействующих потоков и выделяемых ресурсов

Зачем нужны процессы с несколькими потоками?

Для параллельной обработки нескольких однотипных запросов

Для разделения исполнительных активностей, параллельно решающих различные задачи

      • Обеспечение пользовательского интерфейса

      • Математические вычисления

      • Фоновая печать

Для создания параллельных программ, эффективно использующих аппаратные ресурсы

Для улучшения структуры программы

Состояния потока в многозадачной ОС

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

Готов к выполнению – поток обладает всеми необходимыми для выполнения ресурсами за исключением ресурса «Время ЦП»

Ожидается – выполнение потока заблокировано до наступления некоторого внешнего события (например, поступления входных данных или освобождения ресурса)

Управление потоками

(2,3) – осуществляются ядром операционной системы (планировщиком)

(4) – продолжение работы невозможно

      • Для продолжения работы требуется наступление какого-либо события

      • Поток затребовал недоступный в данный момент ресурс

      • Поток переводится в состояние ожидания ядром операционной системы во время обработки системного вызова

      • Поток заблокирован внешним по отношению к нему вызовом

(5) – проводится ядром ОС в момент выполнения условия ожидания.

Постановка задачи планирования

Потокам для выполнения нужен ЦП

Если потоков боле, чем процессор

Вытесняющие алгоритмы планирования….

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

Недостатки многопоточного программирования

Велики накладные расходы

      • На создание и обслуживание потока ОС требуется память и время

      • Создание и уничтожение потока – это достаточно дорогие операции, поэтому излишнее увлечение много поточностью может привести к потере эффективности работы

Реализация многопоточного приложения требует усложнения алгоритма

Классы, поддерживавшие многопоточное программирование, определены в пространстве имен System.Threading

Основной класс пространства имен – класс Thread

Имя

Описание

Sleep()

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

IsAlive

Возвращает True, если поток запущен

IsBackground

True, если поток – «фоновый»

Join()

Блокирует вызывающий поток до тех пор, пока указанный поток (тот,, для которого вызван Join()) не завершится

Start()

Инструктирует CLRзапустить поток как можно скорее