DVD+R-PN-8.5x8BULK.jpg
article.cd_.dvd_.jpg

Принципы создания программного обеспечения

Программный ввод-вывод

Есть три фундаментально различных способа осуществления операций ввода-вывода. В этом разделе мы рассмотрим первый из этих способов — программный ввод-вывод. В следующих двух разделах будут рассмотрены другие способы (ввод-вывод, управляемый с помощью прерываний, и ввод-вывод, использующий DMA). Проще всего организовать ввод-вывод, возложив всю работу на центральный про­цессор. Этот способ называется программным вводом-выводом.

Чтобы проиллюстрировать программный ввод-вывод, лучше всего обратиться к примеру. Рассмотрим пользовательский процесс, которому нужно распечатать на принтере строку, состоящую из восьми символов: «ABCDEFGH». Сначала он собирает строку в буфере, который находится в пространстве пользователя.

Читать полностью

 

Обработчики прерываний

Хотя бывают случаи, когда вполне можно обойтись и программным вводом-выводом, все же для большинства операций ввода-вывода прерывания являются не чем иным, как суровой необходимостью. Они должны быть спрятаны как можно глубже в недрах операционной системы, чтобы о них было известно как можно меньшей части этой системы. Лучший способ их спрятать это заблокировать тот драйвер, который начал операцию ввода-вывода, до тех пор пока не будет завершен ввод-вывод и не будет получено прерывание. Драйвер может заблокировать себя сам, выполнив, к примеру, процедуру down на семафоре, или же процедуру wait на переменной состояния, или процедуру receive на сообщении, или еще что-либо подобное.

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

Читать полностью

 

Задачи, стоящие перед программным обеспечением ввода-вывода

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

sort <input >output

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

Читать полностью

 

Драйверы устройств

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

Читать полностью

 
Поиск

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

Реклама