Как выполняется в пк управление файлами схема

Обновлено: 03.07.2024

Написание консольного файлового менеджера
Добрый день, в университете задали проект по созданию консольного Файлового менеджера на C++ в.

Совте о создании файлового менеджера
Мне нужно написать файловый менеджер с удобным интерфейсом.Какие библиотеки и функции мне нужно.

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

Реализация файлового менеджера
Нужно сделать программу что-то вроде "Файлового менеджера"(Упрощённый, то есть отображение.

Мне кажется что проще будет сначала код написать, а уже по нему блок-схему.
Основные блоки такой программы:
- считывание списка файлов в текущей директории
- отображение и навигация по этому списку
- по выбранной кнопке (enter скорее всего, но может и стрелка вправо) либо переход на директорию ниже, либо запуск исполняемого файла. В последнем случае либо дожидаемся его завершения, либо нет.
Собственно для простейшего файлового менеджера этого достаточно. Просто крутимся в цикле, выполняя эти команды. Если хочется чего-то более-менее функционального, можно добавить командную строку, вторую панель (как в mc или total commander'е), работу с буфером обмена, горячие клавиши для частых действий и прочие свистелки. Нет, код не нужно. Просто рассписать в блоках действия, типа "начало" , потом идут действия, и "конец". Простейший файловый мененджер нужно рассписать, да и всё.
Я думаю должны быть еще такие действия "что сделать с файлом?" - копировать,пеерместить удалить. ). Короче, не знаю как это сделать все, в этом я ноль.
Можете мне помочь нарисовать эту блок схему, пожалуйста?) Мучаюсь уже 2 дня.
По таким вот елементам блок схемы нужно делать(на картинке) Вот чтобы копировать или переместить, придется либо делать двухпанельник, либо изучать буфер обмена. И то и другое - усложнение, не факт что нужное на этом этапе.
Рисовать блок-схему я не буду: и лень искать где это удобнее сделать, да и это ваша задача.

Может и двухпанельный будет, у меня тема по курсачу"Создание файлового менеджера в visual studio", а алгоритм(блок схема) для практики нужна.
Я думаю будет такой как на картинке, там есть кнопки внизу "переместить, удалить, копировать. "(их же тоже в блок схеме нужно как-то расписать).
Может нарисуете?) Пожалуйста.
Хотя бы в пейнте кистью быстренько.
Был бы очень благодарен.

Может нарисуете?) Пожалуйста.
Хотя бы в пейнте кистью быстренько.

Добавлено через 1 минуту
Понятия не имею как будете модифицировать блок-схему при изменении кода

Управление личными файлами на компьютере сопряжено со следующими сложностями.

  • Файлы теряются (куда сохранено? как названо?);
  • Навигация в файловом менеджере отнимает много времени;
  • Система каталогов позволяет с относительным удобством классифицировать файлы только по одному признаку.

Решение

  • cпециальным образом именовать любой сохраняемый файл;
  • хранить все файлы в одной папке;
  • обращаться к файлам через единственный интерфейс — строку поиска (например, Spotlight в OS X).

Специальное именование

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

  • Когда — это дата. Удобней всего указывать дату создания содержания файла. Дата должна быть указана в начале имени файла в формате yymmdd. Пример: «141027»;
  • Что или что есть этот файл? — это класс объекта. Это может быть книга, бизнес-план, идея, квитанция, билет на самолет, фото паспорта, отсканированный чек — что угодно. Ответ на вопрос должен быть указан в имени файла в формате o=что есть этот файл. «o» — это сокращение от «object». Вы можете выбрать свое сокращение, конечно. Примеры: «o=book», «o=businessPlan», «o=thought»;
  • Зачем — это краткое имя задачи (проекта), для решения которой этот файл существует. Ответ на вопрос зачем должен быть указан в имени файла в формате t=задача. «t» — это сокращение от «task». Примеры: «t=myNewKillerApp», «t=новыйЯзыкПрограммированияКоторыйЯУчу», «t=ремонт».

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

  • client=имяКлиента — для имени заказчика, которому вы делаете проект;
  • v=номерВерсии — для версии файла;
  • Или даже, если содержание файла связано с какими-то сильными чувствами (например, потому что это особая для Вас книга, цитата, фотография котика), то можно ввести параметр «feeling», сокращенно «f», и добавлять в имя файла, например, следующее «f=passion», «f=humor».

Значения параметров можно делать вложенными. Например, «o=summary.book».

Кроссплатформенность

Та самая общая папка со всеми файлами должна храниться в месте, которое автоматически копируется в облако. Для примера, будем везде далее говорить о DropBox. Тогда в папке «Dropbox» будет наша общая папка, например, «bigBox». Так файл становится доступен с любого устройства по умолчанию.

Но файлы определенного типа иногда следует сохранять в отдельных специальных папках, а не в общей. Это нужно для синхронизации файлов отдельных приложений на смартфоне. Например, все текстовые файлы пойдут в одну папку (например, «textBox»), все pdf — в другую (например, «pdfBox»). Приложения на смартфоне для управления текстовыми файлами и pdf-файлами будут синхронизироваться именно с этими папками, каждое — со своей.

Удобство решения в том, что:

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

Закладки браузера

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

  • Можно не пользоваться закладками браузера вообще, а сохранять ссылки в виде файлов типа webloc в OS X или файлов типа Internet Shortcut в Windows. (В OS X это делается путем перетаскивания ссылки из строки браузера (за поле слева) в окно Finder'а). Если говорить об iOS, то для нее потребуется установить приложение Webloc Tool, которое позволит открывать webloc-файлы из Dropbox. В таком подходе придется мириться с тем, что закладки не будут доступны из браузера и придется переключаться;
  • Можно использовать браузер, по закладкам которого возможен поиск в десктопной ОС (Safari в OS X, например). Тогда придется мириться с необходимостью на смартфоне искать данные не только в Dropbox, а еще и в закладках браузера.

Дополнительный софт для упрощения работы с файлами

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

  • Теxt Expander Software, софт, который ввод нескольких символов превращает в текст большего объема. Например, у меня настроено так, что если я ввожу с клавиатуры «dd» и пробел, то появляется текущая дата в формате, нужном для именования файла; если я вхожу «nn», то появляется полный шаблон имени файла: «текущая_дата o= t= f=». Вообще же различных сокращений при использовании такого софта появляется десятки;
  • Софт для переименования группы файлов разом;
  • Notational Velocity (или его продвинутая альтернатива — nvALT) позволяет удобно работать с текстовыми заметками в OS X; позволяет легко сохранять web-страницы в markdown.

Pros and Cons

Преимущества

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

Недостатки

  • Имена и значения параметров могут забыться, что может помешать найти нужный файл. Хотя это может случаться, система избыточна: если файл не найден по одному признаку классификации, он может быть найден по другому. А в случае обнаружения ошибки, она может быть исправлена переименованием;
  • Опечатки могут помешать найти нужный файл. Поэтому особенно важно использовать Теxt Expander Software;
  • Нет возможности средствами ОС получить список значений определенного параметра. Например, чтобы увидеть все задачи, для которых сохранены файлы («t=»), или увидеть все возможные классы объектов («o=»). Для того, чтобы создать такой список, понадобится писать дополнительный софт.

Альтернативы

Атрибуты файла в файловой системе

C атрибутами следующие проблемы:

  • Именовать файл проще и быстрее. Средств для минимально эффективного управления атрибутами файла не существует;
  • Атрибуты теряются при перемещении файла. Например, в некоторых случаях резервного копирования. (Это причина того, почему в имени файла следует указывать дату. Это реализует надежную сортировку по дате.);
  • Атрибуты не сохраняются при использовании облачного хранилища. И тот же dropbox не реализует поиск по ним со смартфона, например.

С тэгами следующие проблемы:

  • Именовать файл проще и быстрее, чем назначить тэги;
  • Тэги — это атрибуты файла в файловой системе и c ними те же проблемы, что с любыми атрибутами (см. параграф выше). Хотя фанаты тэгов, которые не захотят применить предложенный подход, могут перенять идею именования тэгов в формате параметр=значение.

Ссылки

Со ссылками следующие проблемы:

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

Evernote

С Evernote следующие проблемы.

  • С Evernote нельзя в полной мере реализовать главное преимущество подхода — все данные доступны через один интерфейс — потому что Evernote использует свою базу данных, и потому что Evernote не для хранения всего. (Но все-таки, например, в OS X Spotlight ищет и в базе данных Evernote, поэтому можно идти на какие-то компромиссы при большой любви к преимуществам Evernote);
  • Evernote штука сложная и поэтому ненадежная. Я трижды за последние несколько лет пытался с ним работать и постоянно сталкивался с ошибками, приводящим к невозможности найти нужные данные.

Как начать работать в новой концепции

Для начала можно оставить все уже хранимые файлы нетронутыми, а все новые сохранять по описанное системе. Самое первое с чем можно разобраться — это содержание различных Inbox (Desktop, Downloads).

Заключение

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

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

Перечислим основные операции с файлами и каталогами:

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

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

Создание нового файла или каталога. Перейдите в нужную папку и щёлкните в ней правой кнопкой мыши, после чего выберите из контекстного меню пункт New (Создать). Далее следует выбрать пункт Folder (Папка) для создания нового каталога или же один из доступных типов файла для создания файла. Например, если необходимо создать текстовый файл, из этого меню следует выбрать пункт Text Document (Текстовый документ).

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

Итак, значок нового каталога или файла появится в окне Проводника (Konquerora), после чего ему можно дать любое имя. Закончив ввод имени, нажмите Enter.

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

Для удаления файла (перемещения его в корзину) выберите в Проводнике удаляемый файл и нажмите клавишу Delete. Можно также щёлкнуть правой кнопкой мыши и выбрать соответствующую команду из контекстного меню. Можно удалить сразу несколько файлов, выделив их. Чтобы выделить несколько файлов, щёлкните на каждом из них по очереди, удерживая клавишу Ctrl. Если удерживать клавишу Ctrl и щёлкнуть мышью на уже выделенном файле, то он будет исключён из выделения.

Рве. 8.2S Программа Konqueror в Linux
Для выделения файлов можно также использовать клавишу Shift. Чтобы выделить сразу несколько файлов, которые стоят друг за другом в Проводнике, щёлкните мышью сначала на первом файле, а затем, удерживая клавишу Shift, на последнем, или наоборот.

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

Если вы совершенно уверены в том, что удаляемый файл больше не потребуется, можно удалить его сразу, не помещая в Корзину. Для этого, выделив его, нажмите сочетание Shift-Delete. В Konqueror для этого также имеется соответствующий пункт контекстного меню.

Кроме того, если в Konqueror нажать сочетание Ctrl-Shift-Delete, то выделенный файл или группа файлов будут не только удалены из файловой системы, но и физически «затёрты», чтобы полностью исключить возможность даже частичного восстановления. Правда, эта функция работает, если вы от неё не отказались при установке системы Linux. В Windows аналогичной функции нет.

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

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

Можно также использовать метод Drag-and-Drop, т. е. перетаскивание файлов мышью при нажатой левой кнопке. При этом нужно иметь в виду следующее:

Смена текущего каталога. В левой части Проводника (Konquerora) выберите из дерева папок нужный каталог и щёлкните на нём мышью. При этом в правой части окна отобразится содержимое выбранного каталога (папки). Кроме того, можно ввести путь к нужной папке в адресной строке в верхней части окна Проводника, подобно тому, как вводят адреса Интернета (об этом см. в гл.9).

Переименования файлов. Щёлкните на нужном файле правой кнопкой мыши и выберите из контекстного меню пункт Rename (Переименовать). Можно также выделить нужный файл, щёлкнув на нём мышью, и нажать клавишу F2. При этом откроется поле ввода, куда можно ввести новое имя файла. По окончании ввода нажмите клавишу Enter.

Разумеется, всё, что описано выше, касается стандартных графических средств управления файлами в Windows и Linux — Explorer и Konqueror. На самом деле возможности этих программ гораздо шире.

Кроме того, можно пользоваться командами, вводя их в командной строке. Некоторые основные команды Windows (DOS) и Linux были приведены выше.

Внешние устройства, выполняющие операции ввода-вывода, можно разделить на три группы:

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

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

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

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

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

Устройства ввода-вывода, как правило, состоят из электромеханической и электронной части. Обычно их выполняют в форме отдельных модулей – собственно устройство и контроллер ( адаптер ). В ПК контроллер принимает форму платы, вставляемой в слот расширения. Плата имеет разъем , к которому подключается кабель , ведущий к самому устройству. Многие контроллеры способны управлять двумя, четырьмя и даже более идентичными устройствами. Интерфейс между контроллером и устройством является официальным стандартом ( ANSI , IEEE или ISO ) или фактическим стандартом, и различные компании могут выпускать отдельно котроллеры и устройства, удовлетворяющие данному интерфейсу. Так, многие компании производят диски, соответствующие интерфейсу IDE или SCSI , а наборы схем системной логики материнских плат реализуют IDE и SCSI -контроллеры.

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

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

7.2. Назначение, задачи и технологии подсистемы ввода-вывода

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

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

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

На подсистему ввода-вывода возлагаются следующие функции [5, 17]:

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

Эволюция ввода-вывода может быть представлена следующими этапами [17].

  1. Процессор непосредственно управляет периферийным устройством.
  2. Устройство управляется контроллером. Процессор использует программируемый ввод-вывод без прерываний (переход к абстракции интерфейса ввода-вывода).
  3. Использование контроллера прерываний. Ввод-вывод, управляемый прерываниями.
  4. Использование модуля (канала) прямого доступа к памяти. Перемещение данных в память (из нее) без применения процессора.
  5. Использование отдельного специализированного процессора ввода-вывода, управляемого центральным процессором.
  6. Использование отдельного компьютера для управления устройствами ввода-вывода при минимальном вмешательстве центрального процессора.

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

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

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

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

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

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

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

Перед выполнением операции обмена ЦП программирует DMA - контроллер , устанавливая его регистры (шаг 1 на рис. 7.1). Затем ЦП дает команду дисковому контролеру прочитать внести данные во внутренний буфер и проверить контрольную сумму. После этого процессор продолжает свою работу. Когда данные получены и проверены контроллером диска, DMA может начинать работу.

DMA - контроллер начинает перенос данных, посылая дисковому контроллеру по шине запрос чтения (шаг 2). Адрес памяти уже находится на адресной шине, так что контроллер знает, куда пересылать следующее слово из своего буфера. Запись в память является еще одним стандартным циклом шины (шаг 3). Когда запись закончена, контроллер диска посылает сигнал подтверждения контролеру DMA (шаг 4). Затем контроллер DMA увеличивает используемый адрес памяти и уменьшает значение счетчика байтов. После этого шаги 2, 3 и 4 повторяются, пока значение счетчика не станет равным нулю. По завершению цикла копирования контроллер DMA инициирует прерывание процессора, сообщая ему о завершении операции ввода-вывода.

Работа DMA

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

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

Точки прерывания DMA

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

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

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

Читайте также: