Презентация Архитектура ЭВМ. Операционные системы. Асинхронный I/O онлайн
На нашем сайте вы можете скачать и просмотреть онлайн доклад-презентацию на тему Архитектура ЭВМ. Операционные системы. Асинхронный I/O абсолютно бесплатно. Урок-презентация на эту тему содержит всего 21 слайд. Все материалы созданы в программе PowerPoint и имеют формат ppt или же pptx. Материалы и темы для презентаций взяты из открытых источников и загружены их авторами, за качество и достоверность информации в них администрация сайта не отвечает, все права принадлежат их создателям. Если вы нашли то, что искали, отблагодарите авторов - поделитесь ссылкой в социальных сетях, а наш сайт добавьте в закладки.
Презентации » Устройства и комплектующие » Архитектура ЭВМ. Операционные системы. Асинхронный I/O
Оцените!
Оцените презентацию от 1 до 5 баллов!
- Тип файла:ppt / pptx (powerpoint)
- Всего слайдов:21 слайд
- Для класса:1,2,3,4,5,6,7,8,9,10,11
- Размер файла:113.60 kB
- Просмотров:93
- Скачиваний:1
- Автор:неизвестен
Слайды и текст к этой презентации:
№3 слайд
![Операции ввода вывода I O в](/documents_6/1b04129988a5dd026c937d8a62595c99/img2.jpg)
Содержание слайда: Операции ввода/вывода (I/O) в большинстве случаев значительно медленнее, по сравнению с обработкой данных в памяти. Устройство ввода/вывода может включать в себя механические части, которые должны физически двигаться (например, жесткий диск, который ищет дорожку для чтения или записи), это часто на несколько порядков медленнее, чем переключения электрического тока. Например, во время дисковой операции, которой требуется десять миллисекунд для выполнения, процессор, который работает на частоте один гигагерц, может выполнить десять миллионов циклов команд обработки.
Операции ввода/вывода (I/O) в большинстве случаев значительно медленнее, по сравнению с обработкой данных в памяти. Устройство ввода/вывода может включать в себя механические части, которые должны физически двигаться (например, жесткий диск, который ищет дорожку для чтения или записи), это часто на несколько порядков медленнее, чем переключения электрического тока. Например, во время дисковой операции, которой требуется десять миллисекунд для выполнения, процессор, который работает на частоте один гигагерц, может выполнить десять миллионов циклов команд обработки.
№4 слайд
![Простым подходом к вводу](/documents_6/1b04129988a5dd026c937d8a62595c99/img3.jpg)
Содержание слайда: Простым подходом к вводу/выводу было бы запустить процесс доступа, а затем ждать его завершения. Но такой подход (так называемого синхронного ввода/вывода или блокирующего ввода/вывода) будет блокировать выполнение программы, в то время, как коммуникация в процессе выполнения, оставив системные ресурсы простаивать на холостом ходу. Когда программа делает много операций ввода/вывода, это означает, что процессор может проводить почти все своё время простаивая в ожидании завершения операций ввода/вывода.
Простым подходом к вводу/выводу было бы запустить процесс доступа, а затем ждать его завершения. Но такой подход (так называемого синхронного ввода/вывода или блокирующего ввода/вывода) будет блокировать выполнение программы, в то время, как коммуникация в процессе выполнения, оставив системные ресурсы простаивать на холостом ходу. Когда программа делает много операций ввода/вывода, это означает, что процессор может проводить почти все своё время простаивая в ожидании завершения операций ввода/вывода.
№5 слайд
![В качестве альтернативы,](/documents_6/1b04129988a5dd026c937d8a62595c99/img4.jpg)
Содержание слайда: В качестве альтернативы, можно инициировать операцию ввода/вывода, а затем выполнять обработку, которая не требует завершения операции ввода/вывода. Такой подход называется асинхронный ввод/вывод. Любая задача, которая зависит от завершения ввода/вывода, (в том числе как использование значений ввода, так и критических операций, которые подтверждают, что операция вывода была завершена) по-прежнему вынуждена ожидать завершения операции ввода/вывода, и, таким образом, прежнему быть заблокированной, но другая обработка, которая не имеет зависимости от операции ввода/вывода может быть продолжена.
В качестве альтернативы, можно инициировать операцию ввода/вывода, а затем выполнять обработку, которая не требует завершения операции ввода/вывода. Такой подход называется асинхронный ввод/вывод. Любая задача, которая зависит от завершения ввода/вывода, (в том числе как использование значений ввода, так и критических операций, которые подтверждают, что операция вывода была завершена) по-прежнему вынуждена ожидать завершения операции ввода/вывода, и, таким образом, прежнему быть заблокированной, но другая обработка, которая не имеет зависимости от операции ввода/вывода может быть продолжена.
№8 слайд
![Процесс Для выполнения](/documents_6/1b04129988a5dd026c937d8a62595c99/img7.jpg)
Содержание слайда: Процесс
Для выполнения длительной операции ввода/вывода создается новый процесс. После завершения операции процесс уведомляет процесс родитель (например, с помощью сигнала) об этом.
Преимущества:
Простота реализации
Недостатки
Создание нового процесса является «тяжелой» операцией
Необходим обмен данными с дочерним процессом
№9 слайд
![Опрашивание Варианты -](/documents_6/1b04129988a5dd026c937d8a62595c99/img8.jpg)
Содержание слайда: Опрашивание
Варианты:
- Ошибка, если ещё не завершено (повторное обращение позднее)
- Оповещение, когда завершено, и может быть выполнено без блокировки (тогда, соответственно, пользуемся)
Доступно в традиционном Unix и Windows. Главная проблема опрашивания в том, что приходится тратить процессорное время на опрос неоднократно, во время когда нет других заданий, при этом уменьшается время, доступное для других процессов. Кроме того, поскольку опрос является по существу однопоточным, это не позволяет в полной мере использовать параллелизм ввода/вывода, на который способны аппаратные средства.
№10 слайд
![Перевод файлового дескриптора](/documents_6/1b04129988a5dd026c937d8a62595c99/img9.jpg)
Содержание слайда: Перевод файлового дескриптора в неблокирующий режим
int fd_set_blocking(int fd, int blocking) {
/* Сохраняем флаги*/
int flags = fcntl(fd, F_GETFL, 0);
if (flags == -1)
return 0;
if (blocking)
flags &= ~O_NONBLOCK;
else flags |= O_NONBLOCK;
return fcntl(fd, F_SETFL, flags) != -1;
}
№11 слайд
![Пример чтения с опросом int](/documents_6/1b04129988a5dd026c937d8a62595c99/img10.jpg)
Содержание слайда: Пример чтения с опросом
int count=0, full_count=1024; char buffer[1024];
while (full_count> 0) {
count = read(fd, buffer, full_count);
if(count < 0 && errno == EAGAIN) {
// Нет данных для чтения}
else if(count >= 0) {
//прочитали данные
full_count -= count;
} else {
// Ошибка чтения.
}
}
№12 слайд
![select pselect Функция select](/documents_6/1b04129988a5dd026c937d8a62595c99/img11.jpg)
Содержание слайда: select/pselect
Функция select (или pselect) является основной функцией большинства программ на языке C, эффективно обрабатывающих одновременно более одного файловового дескриптора (илисокета). Ее аргументами являются три массива файловых дескрипторов: readfds, writefds и exceptfds. Как правило, при использовании select программа ожидает "изменения состояния" одного или более файловых дескрипторов. Под "изменением состояния" понимается появление новых символов в потоке, с которым связан файловый дескриптор, или появление во внутренних буферах ядра места для записи в поток, или возникновение ошибки, связанной с файловым дескриптором (в случае сокета или канала это происходит, когда другая сторона закрывает соединение).
Таким образом, select просто следит за несколькими файловыми дескрипторами и является стандартным вызовом Unix для этих целей.
№15 слайд
![fd set fd in, fd out fd set](/documents_6/1b04129988a5dd026c937d8a62595c99/img14.jpg)
Содержание слайда: fd_set fd_in, fd_out;
fd_set fd_in, fd_out;
struct timeval tv;
// обнуляем наборы
FD_ZERO( &fd_in );
FD_ZERO( &fd_out );
// добалыем дескриптор в для записи
FD_SET( sock1, &fd_in );
// добавляем дексриптор для чтения
FD_SET( sock2, &fd_out );
// считаем какой и дескрипторо больше
int largest_sock = sock1 > sock2 ? sock1 : sock2;
// таймаут в 10 секунд
tv.tv_sec = 10;
tv.tv_usec = 0;
№17 слайд
![Особенности использования](/documents_6/1b04129988a5dd026c937d8a62595c99/img16.jpg)
Содержание слайда: Особенности использования select
Всегда старайтесь использовать select без указания времени ожидания. Ваша программа не должна ничего делать, если нет данных. Код, зависимый от времени ожидания, обычно плохо переносим и сложен для отладки.
Для повышения эффективности значение n должно быть правильно вычислено как указано выше.
Файловые дескрипторы не должны добавляться в наборы, если вы не планируете после вызова select проверить результат и соответствующим образом отреагировать.
После возврата из select должны быть проверены все файловые дескрипторы во всех наборах. В каждый дескриптор, готовый к записи, должны быть записаны данные, и из каждого дескриптора, готового к чтению, данные должны быть прочитаны, и т.д.
№18 слайд
![Особенности использования](/documents_6/1b04129988a5dd026c937d8a62595c99/img17.jpg)
Содержание слайда: Особенности использования select
Функции read(), recv(), write() и send() необязательно считывают/записывают данные в полном объеме. Такое, конечно, возможно при низком траффике или быстром потоке, однако происходит далеко не всегда. Вы должны рассчитывать, что ваши функции получают/отправляют только один байт зараз.
Никогда не считывайте/записывайте побайтно, если только вы не абсолютно уверены в том, что нужно обработать небольшой объем данных. Крайне не эффективно считывать/записывать меньшее количество байт, чем вы можете поместить в буфер за один раз..
№19 слайд
![Особенности использования](/documents_6/1b04129988a5dd026c937d8a62595c99/img18.jpg)
Содержание слайда: Особенности использования select
Функции read(), recv(), write() и send(), также как и select() могут возвратить -1 с errno установленным в EINTR или EAGAIN (EWOULDBLOCK), что не является ошибкой. Такие ситуации должны быть правильно обработаны (в вышеприведенной программе этого не сделано). Если ваша программа не собирается принимать сигналы, то маловероятно, что вы получите EINTR. Если ваша программа не использует неблокирующий ввод-вывод, то вы не получите EAGAIN. В любом случае, вы должны обрабатывать эти ошибки для полноты.
№20 слайд
![Особенности использования](/documents_6/1b04129988a5dd026c937d8a62595c99/img19.jpg)
Содержание слайда: Особенности использования select
Кроме случаев, описанных в 7., функции read(), recv(), write() и send() никогда не возвращают значение меньшее единицы, если не произошла ошибка. Например, read() при работе с каналом, на котором противоположная сторона завершила работу, возвращает ноль, но возвращает ноль только один раз. Если хотя бы одна из этих функций вернула 0или -1, то вы не должны больше использовать этот дескриптор. В примере выше я немедленно закрываю дескриптор и устанавливаю его в -1 для предотвращения его включения в набор.
№21 слайд
![Особенности использования](/documents_6/1b04129988a5dd026c937d8a62595c99/img20.jpg)
Содержание слайда: Особенности использования select
Значение времени ожидания должно быть инициализировано при каждом новом вызове select, так как некоторые операционные системы изменяют структуру.
Есть мнение, что сокетный уровень в Windows не обрабатывает правильно вне поточные данные. Кроме того, он неправильно работает с select при отсутствии файловых дескрипторов. Отсутствие файловых дескрипторов - это полезный способ перевести процесс в режим ожидания на период меньше секунды.
Скачать все slide презентации Архитектура ЭВМ. Операционные системы. Асинхронный I/O одним архивом:
Похожие презентации
-
Архитектура ЭВМ. Операционные системы. Потоки исполнения - Thread
-
Архитектура ЭВМ. Операционные системы. FIFO (first-in-first-out)
-
Архитектура ЭВМ. Операционные системы. Многозадачность
-
Архитектура операционных систем. Процессы и потоки
-
Архитектура операционных систем. Лекция1
-
Архитектура персональных ЭВМ. Системный таймер
-
Операционная система Windows. Программирование с использованием средств Win32 API. (Лекция 2)
-
Архитектура вычислительных систем. Синхронизация процессов
-
Операционные системы, процессы и потоки
-
Операционные системы. Алгоритмы планирования процессов