Наверно у каждого, кто хоть раз самостоятельно переустанавливал операционную систему, возникал популярный вопрос: как узнать, какие драйвера необходимо установить на компьютер для его стабильной работы? Именно на этот вопрос мы и попытаемся ответить в данной статье. Давайте разбираться подробнее.
В теории, на компьютер или ноутбук нужно устанавливать софт для всех устройств, которые этого требуют. Со временем разработчики операционных систем постоянно расширяют базу драйверов Microsoft. И если во времена Windows XP приходилось устанавливать вручную чуть ли не все драйвера, то в случае с более новыми ОС множество драйверов устанавливаются уже автоматически. Тем не менее, остаются устройства, софт для которых приходится устанавливать вручную. Предлагаем вашему вниманию ряд способов, которые помогут вам в решении этого вопроса.
Для того, чтобы установить все необходимые драйвера, вам нужно поставить ПО для всех плат в вашем компьютере. Имеется в виду материнская плата, видеокарта и внешние платы (сетевые адаптеры, звуковые карты и так далее). При этом в «Диспетчере устройств» может быть не указано, что для оборудования нужны драйвера. При установке операционной системы просто использовалось стандартное ПО для устройства. Тем не менее, софт для таких девайсов необходимо устанавливать оригинальный. Большая часть всего устанавливаемого софта приходится на материнскую плату и интегрированные в нее чипы. Поэтому, сперва мы будем искать все драйвера для материнской платы, а потом уже для видеокарты.
Если вам лень искать и устанавливать весь софт вручную, то стоит присмотреться к программам, которые предназначены для облегчения этой задачи. Обзор на популярнейшие программы для автоматического поиска и обновления софта мы проводили в отдельной статье.
Вы можете использовать любую из описанных утилит. Но рекомендуем все же воспользоваться DriverPack Solution либо Driver Genius . Это программы с наибольшей базой драйверов и поддерживаемого оборудования. Мы уже рассказывали вам о том, как пользоваться DriverPack Solution.
Поэтому давайте мы расскажем вам о том, как найти и установить все драйвера с помощью программы Driver Genius. И так, начнем.
Если предыдущие способы вам не помогли, остается надеяться на этот вариант. Смысл его заключается в том, что искать ПО мы будем в ручную по уникальному идентификатору устройства. Дабы не дублировать информацию, рекомендуем ознакомиться вам с нашим уроком.
В нем вы найдете детальную информацию о том, как найти ID и что с ним делать далее. А также руководство по использованию двух наиболее крупных онлайн-сервисов по поиску драйверов.
Этот способ является самым малоэффективным из всех приведенных выше. Однако, в очень редких случаях помочь установить софт сможет именно он. Вот что для этого необходимо.
Это самые действенные способы определить устройства, для которых необходимо установить софт. Надеемся, один из предложенных вариантов поможет вам в решении этого вопроса. Не забывайте вовремя обновлять ПО для ваших устройств. Если у вас возникнут трудности с поиском или установкой драйверов, пишите в комментарии. Вместе мы все исправим.
Мы пригласили всех желающих поучаствовать в добровольной помощи в разработке очередных версий DRP, сегодня пришла пора рассказать о том, как именно мы создаем немаловажную вещь при работе с большими архивами драйверов (необходимые сис. админам и другим профессионалам, занимающимся «серийной» настройкой компьютеров) - индексы.
У каждого пользователя на локальном компьютере собирается индекс всех драйверов, присутствующих в системе – в том числе и самой операционной системой. Его наличие позволяет ускорять поиск драйверов для установленных устройств, а в дальнейшем – и для их обновления. Другими словами – без индекса нельзя, его создание и дальнейшие обновления критическим образом сказываются на скорости и эффективности работы нашего приложения.
Герои Silicon Valley работают над оптимизацией собственных алгоритмов
База данных в программе содержит ID всех устройств, самостоятельно отслеживает версии драйверов для них, сопоставляет их версии и актуальность. В случае наличия в базе более новой версии, программа автоматически предлагает установить для устройства новый драйвер. Можно найти драйвер для конкретного устройства и самостоятельно в интернете, выбрав соответствующий режим поиска драйвера.
Для эффективной работы программы необходимы архивы драйверов (в формате "7z "), а для быстрого поиска по ним, требуется проиндексировать файлы, содержащиеся внутри.
Кроме уже содержащихся (довольно обширных) в программе архивов драйверов, DriverPack Solution предоставляет возможность создания пользовательских драйверпаков. Это актуально как при наличии нестандартного оборудования, так и «привязанности» операционной системы пользователя к некоторым типам (возможно устаревших) драйверов.
Новые драйвера после их разархивации «разбросаны» по папкам, которые содержат массу файлов, на первый взгляд, совершенно «ненужных» пользователю.
Для того, чтобы выбрать «нужные» файлы, требуется в распакованных файлах найти один с расширением *.inf.
Именно он содержит (в секции
) перечень необходимых файлов, по которому и требуется скопировать список файлов в предварительно созданную пользователем папку.
Примечание: если среди распакованных файлов нет.inf-файла, то автоматическое создание пакета драйверов невозможно. Настоятельно не рекомендуется удалять файлы с расширением *.САТ – сведения о цифровой подписи.
Создается папка D (сокр. от «Drivers»), а драйверы помещаются в любую подпапку внутри директории D.
Имя подпапки (поддиректории) может быть любым, однако рекомендуется использовать максимально короткие имена. Стоит избегать длинных путей к файлам – это может привести к ошибкам и помешать установке.
При создании структуры папок пакета драйверов следует придерживаться определенных общепринятых правил именования. Обязательно должны использоваться только английские названия папок.
В созданных папках драйверы разделяются по производителям, тем самым образуя подпапки.
Названия производителей также рекомендуется максимально сокращать. Например: «NVidia» – «N», «ATi» – «A» и т. д. Внутри папки с именем производителя драйверы располагаются в папках 1-9, при необходимости число папок может быть увеличено. После создания необходимой структуры папок поместите ваши драйверы в соответствующие подпапки (примечание: распакованные файлы, .inf-файлы, но не архивы или программы установки).
Название папки | Английское название | Пояснение |
A | Additions | Дополнения |
B | Broadband | Широкополосные сетевые устройства (*DSL-модемы и им подобные) |
C | Chipset | Наборы системной логики (чипсеты) |
CPU | Central processor unit | Центральный процессор (необходим для AMD K8) |
D | Dial-Up | Модемы |
G | Graphics | Видеоадаптеры (Графические карты) |
L | LAN | Сетевые адаптеры |
M | Mass Storage | Контроллеры жестких дисков |
P | Printers | Принтеры |
S | Sound | Звуковые адаптеры |
VMWare | VMWare | Драйверы для виртуальной машины VMWare |
W | WLAN | Беспроводные адаптеры |
U | USB | USB-устройства (флешки, фотокамеры) |
Y | Misc | Разное (Все что не попало в другие разделы) |
Y | Monitor | Мониторы |
Z | Hid | Устройства ввода (Интелектуальные мыши, клавиатуры тачпады и т.п.) |
Последнее установлено по умолчанию. Можно увеличить или уменьшить значение этого параметра. Увеличение данного параметра позволяет достичь большей компрессии, но требует больше времени для создания архива.
Индексные файлы хранятся в *.txt - формате, и находятся папке «Indexes» а не в «dev_db» , как было ранее.
Структуру индексных файлов целесообразно рассмотреть на примере двух драйверов.
Содержимое индексного файла для 1-го:
– «PCI\VEN_8086&DEV_24D5&SUBSYS_680316F3 Audio_w7x64_912.2\ Audio_w7x64_912.2\3\1\Alcwdm18.inf Realtek.NTamd64 06/19/2009,6.0.1.6305 Realtek AC"97 Audio»
Содержимое индексного файла для 2-го:
– «HDAUDIO\FUNC_01&VEN_10DE&DEV_8067 Audio_w7x64_912.2\ Audio_w7x64_912.2\11\1\nvhda.inf VIDIA.NTamd64 11/11/2009,1.00.00.63 NVIDIA High Definition Audio»
Более развернуто объяснение структуры приведено в таблице:
Главное – это использовать маркеры операционных систем. Дополнительно есть маркеры для, практически, всех производителей ноутбуков.
При этом расположение и название папок и подпапок перестало иметь значение, единственное требование – наличие минимально одного маркера системы.
Фактически же маркер – конкретное название папки. Оно видно в названии одного из подкаталогов драйвер-пака: DRP\Drivers\DP_Chipset_14101.7z\Intel\WinAll \Chipset\9.4.0.1007_HECI\
В данном случае «WinAll» значит «все версии Windows».
Маркеры
Версия Windows = маркер (имя подпапки), характеризующий, что драйвер который находится внутри папки-маркера подходит для указанной ОС.
Индексируем новые драйвер-паки (создаем списки поддерживаемых устройств).
Если старые индексы удалены, то при запуске DRP, программа автоматически попросит вас произвести индексацию новых драйвер-паков - например программа для нового драйвер-пака «DP_Chipset_14112.7z»
создает файлы-индекса «DP_Chipset_14112_xxx.xxx»
в соответствующей папке в «X:\DRP\Indexes\»
.
Можно также удалить и старые индексы.
В папке «Indexes»
необходимо удалить все файлы старого драйвер-пака.
Имени файла индекса соответствуют имя драйвер-пака и найти его легко. Например, вы скачали драйвер-пак «DP_Chipset_14112.7z»
а у вас был «DP_Chipset_14111.7z»
, соответственно удаляем все файлы-индексы «DP_Chipset_14111_xxx.xxx»
, если же и скаченный и старый драйвер-пак имеют одинаковое имя например «DP_Chipset_14112.7z»
, то индексы «DP_Chipset_14112_xxx.xxx»
также нужно удалить т.к. список поддерживаемых устройств в новой версии драйвер-пака может отличаться.
Если вам лень выискивать нужный для удаления индекс - можно удалить все папку «Indexes» и тогда программа будет создавать индексы для всех драйвер-паков, а не только для нового, что займет больше времени, но результат будет идентичным.
Надеемся, что данное руководство по созданию индекса драйверов будет полезно не только
17.02.2017
Наверное каждый, кто переустанавливал операционную систему, попадал в неловкую ситуацию, когда нужно установить драйвера для видеокарты, а ее модель неизвестна. Или просто необходимо обновить драйвера на видеокарте, не ведая ее названия. Обычно в таких ситуациях пользуются установочным диском, который в обязательном порядке продается с видеокартой. Но что делать, если по каким-либо причиной такой диск отсутствует?
Для стабильной работы видеокарты необходимо не просто установить для нее драйвера, а и регулярно обновлять их, когда появляются новые версии. Тем более, что версия драйвера иногда влияет на производительность видеокарты. Давайте разберемся, как же узнать модель видеокарты и где скачать самые новые драйвера для нее.
К сожалению, определить модель видоекарты онлайн невозможно. Для определения воспользутесь специальными программами.
Есть несколько способов узнать точно, какая именно видеокарта у вас установлена.
Если по каким-то причинам упомянутый сайт не работает, всегда получить информацию о графическом чипе стандартными средствами Windows.
После того, как удалось узнать модель видеокарты, нужно установить или обновить драйвер для нее. Для этого есть несколько способов.
Как уже упоминалось выше, после определения видеокарты по ИД на портале devid.info/ru есть сразу же возможность качать необходимые драйвера.
Установка драйверов которые были скачаны с официальных сайтов является самым правильным и безопасным решением. На таких сайтах информация об обновлениях и изменениях выкладывается в первую очередь.
Вот как это выглядит процесс по поиску драйвера для видеокарт NVidia
В любом случае, после того как нужный драйвер будет закачан, вам останется лишь запустить программу установки и подождать пока она закончит свою операцию установки или переустановки. Для избежания проблем в будущем вы можете создать отдельный диск или флэш-накопитель с необходимыми системными программами. Особенно это пригодится в условиях отсутствия интернета, что тоже случается не редко.
Драйверы устройств обеспечивают интерфейс между ядром UNIX и аппаратной частью компьютера. Благодаря этому от остальной части ядра скрыты архитектурные особенности компьютера, что значительно упрощает перенос системы и поддержку работы различных периферийных устройств.
В UNIX существует большое количество драйверов. Часть из них обеспечивает доступ к физическим устройствам, например, жесткому диску, принтеру или терминалу, другие предоставляют аппаратно-независимые услуги. Примером последних могут служить драйверы /dev/kmem для работы с виртуальной памятью ядра /dev/null, представляющий "нулевое" устройство.
В процессе запуска системы ядро вызывает соответствующие процедуры инициализации установленных драйверов. Во многих версиях UNIX эти процедуры выводят на консоль сообщение о том, что драйвер найден, и инициализация прошла успешно, а также параметры драйвера и устройства.
Драйверы различаются по возможностям, которые они предоставляют, а также по тому, каким образом обеспечивается к ним доступ и управление. Можно рассматривать три основные типа драйверов:
Символьные.
Этот тип драйверов обеспечивает работу с устройствами с драйверы побайтовым доступом и обменом данными. К таким устройствам можно отнести модемы, терминалы, принтеры, манипуляторы мышь и т. д.
Доступ к таким драйверам не включает использование буферного кэша, таким образом ввод и вывод как правило не буферизуется. При необходимости буферизации для символьных драйверов обычно используется подход, основанный на структурах данных, называемых clist.
Блочные драйверы
Этот тип драйверов позволяет производить обмен данными с устройством фиксированными порциями (блоками).
Например, для жесткого диска данные можно адресовать и, соответственно, читать только секторами, размер которых составляет несколько сотен байтов. Для блочных драйверов обычно используется буферный кэш, который и является интерфейсом между файловой системой и устройством.
Хотя операции чтения и записи для процесса допускают обмен данными, размер которых меньше размера блока, на системном уровне это все равно приводит к считыванию всего блока, изменению части его данных и записи измененного блока обратно на диск.
Драйверы низкого уровня (raw drivers)
Этот тип интерфейса блочных драйверов позволяет производить обмен данными с блочными устройствами, минуя буферный кэш. Это, в частности, означает, что устройство может быть адресовано элементами, размер которых не совпадает с размером блока.
Обмен данными происходит независимо от файловой подсистемы и буферного кэша, что позволяет ядру производить передачу непосредственно между пользовательским процессом и устройством, без дополнительного копирования.
На рис. 5.1 приведена упрощенная схема взаимодействия драйверов устройств с другими подсистемами операционной системы UNIX.
Жесткий диск Гибкий диск Терминал
Рис. 5.1. Драйверы устройств UNIX
Не все драйверы служат для работы с физическими устройствами, такими как сетевой адаптер, последовательный порт или монитор. Часть драйверов служат для предоставления различных услуг ядра прикладным процессам и не имеют непосредственного отношения к аппаратной части компьютера. Такие драйверы называются программными или драйверами псевдоустройств. Можно привести несколько примеров псевдоустройств и соответствующих им программных драйверов:
/dev/mem /dev/nulf
Обеспечивает доступ к виртуальной памяти ядра. Зная виртуальные адреса внутренних структур ядра, процесс может считывать хранящуюся в них информацию. С помощью этого драйвера может, например, быть реализована версия утилиты ps(1), выводящей информацию о состоянии процессов в системе.
Обеспечивает доступ к разделу исполняемого файла ядра, содержащего таблицу символов. Совместно с драйвером /dev/kmem обеспечивает удобный интерфейс для анализа внутренних структур ядра.
Обеспечивает доступ к физической памяти компьютера.
Является "нулевым" устройством. При записи в это устройство данные просто удаляются, а при чтении процессу возвращается 0 байтов. Примеры использования этого устройства рассматривались в главе 1, когда с помощью /dev/null мы подавляли вывод сообщений об ошибках.
Обеспечивает заполнение нулями указанного буфера. Этот драйвер часто используется для инициализации области памяти.
Драйвер устройства адресуется старшим номером (major number) устройства. Напомним, что среди атрибутов специальных файлов устройств, которые обеспечивают пользовательский интерфейс доступа к периферии компьютера, это число присутствует наряду с другим, также имеющим отношение к драйверу, -- младшим номером (minor number). Младший номер интерпретируется самим драйвером (например, для клонов, оно задает старшее число устройства, которое требуется "размножить"). Другим примером использования младших номеров может служить драйвер диска. В то время как доступ к любому из разделов диска осуществляется одним и тем же драйвером и, соответственно, через один и тот же старший номер, младший номер указывает, к какому именно разделу требуется обеспечить доступ.
Доступ к драйверу осуществляется ядром через специальную структуру данных (коммутатор устройств), каждый элемент которой содержит указатели на соответствующие функции драйвера -- точки входа. Старшее число, по существу, является указателем на элемент коммутатора устройств, обеспечивая, тем самым, ядру возможность вызова необходимой функции указанного драйвера. Таким образом, коммутатор устройств определяет базовый интерфейс драйвера устройств.
Этот интерфейс различен для блочных и символьных устройств. Ядро содержит коммутаторы устройств двух типов: bdevsw для блочных и cdevsw для символьных устройств. Ядро размещает отдельный массив для каждого типа коммутатора, и любой драйвер устройства имеет запись в соответствующем массиве. Если драйвер обеспечивает как блочный, так и символьный интерфейсы, его точки входа будут представлены в обоих массивах.
Типичное описание этих двух массивов имеет следующий вид (назначение различных точек входа мы рассмотрим далее в этом разделе):
struct bdevsw { int (*d open)(); int (*d_close) () ; int (*d_strategy)(); int (*d_size) (); int (*d_xhalt) () ;
struct cdevsw {
int (*d_open) ();
int (*d^_close) () ;
int (*d_read) <) ;
int (*d_write) ()
int (*d_ioctl) ()
int (*d_xpoll) ()
int {*d_xhalt) ()
struct streamtab *d_str;
} cdevsw; Ядро вызывает функцию open {) требуемого драйвера следующим образом:
(*bdevsw.d_open)(dev, ...);
передавая ей в качестве одного из параметров переменную dev (типа dev t), содержащую старший и младший номера. Макрос getmajor() служит для извлечения старшего номера из переменной dev. Благодаря этому драйвер имеет возможность определить, с каким младшим номером была вызвана функция open (), и выполнить соответствующие действия.
Коммутатор определяет абстрактный интерфейс драйвера устройства. Каждый драйвер обеспечивает соответствующую реализацию функций этого интерфейса. Если драйвер не поддерживает каких-либо функций стандартного интерфейса, он заменяет соответствующие точки входа специальными заглушками, предоставляемыми ядром. Когда ядру требуется запросить какую-либо операцию у драйвера устройства, оно определяет элемент коммутатора, соответствующий данному драйверу (используя его старший номер), и вызывает требуемую функцию.
В названиях точек входа драйвера используются определенные соглашения. Поскольку в ядре системы одновременно присутствует большое количество различных драйверов, каждый их них должен иметь уникальное имя во избежание проблем при компиляции (точнее, при редактировании связей) ядра. Каждый драйвер имеет уникальное двухсимвольное обозначение, используемое в качестве префикса названий функций. Например, драйвер виртуальной памяти ядра /dev/kmem имеет префикс mm, таким образом функции этого драйвера будут иметь названия mmopen () , mmclose(),mmread() И mmwrite() .
В табл. 5.1 приведены некоторые точки входа, общие для различных типов драйверов, а символами хх, с которых начинается имя каждой функции, обозначен уникальный префикс драйвера. Стандартные точки входа драйвера отличаются для разных версий UNIX. Например, некоторые версии имеют расширенный коммутатор блочных устройств, включающий такие функции, как xxioctl (), xxread () и xxwrite (). В некоторых версиях включены точки входа для инициализации и сброса шины данных.
Таблица 5.1. Типичные точки входа в драйвер устройства
Точка входа |
Сим-вольный |
Низкого ный уровня |
Назначение |
|
Вызывается при каждой опера- ции открытии устройства. Обеспечивает необходимую реини-циализацию физического устройства и внутренних данных драйвера. Например, для каждого последующего открытия драйвера могут размещаться дополнительные буферы, обеспечивающие возможность независимой работы с устройством нескольким процессам |
||||
Вызывается, когда число ссылок на данный драйвер становится равным нулю, т. е. ни один из процессов системы не работает с устройством (не имеет открытым соответствующий файл устройства). Может вызывать отключение физического устройства. Например, драйвер накопителя на магнитной ленте может перемотать ленту в начало |
||||
Производит чтение данных от устройства |
||||
Является общим интерфейсом управления устройством. Драйвер может определить набор команд, которые могут быть переданы ему, например с помощью системного вызова |
||||
Вызывается при поступлении прерывания, связанного с данным устройством. Может выполнить копирование данных от устройства в промежуточные буферы, которые затем считываются функцией xxread () по запросу прикладного процесса. |
||||
Производит опрос устройства. Обычно используется для устройств, не поддерживающих прерывания, например, для определения поступления данных для чтения |
||||
Вызывается для останова драй- вера при останове системы или при выгрузке драйвера. |
||||
Общая точка входа для операций блочного ввода/вывода. Название функции говорит о том, что устройство может обеспечивать собственную стратегию обработки поступающих запросов, например, изменять их порядок для повышения производительности ввода/вывода. Если устройство занято, функция помещает запросы в очередь. В этом случае фактический ввод/вывод инициирует функция обработки прерывания, которая вызывается, когда устройство закончит предыдущую операцию ввода/вывода |
||||
Ядро вызывает те или иные функции драйвера в зависимости от запроса. Например, если процесс выполняет системный вызов read(2) для специального файла символьного устройства, ядро вызовет функцию xxread () для соответствующего символьного драйвера. Если же процесс запрашивает ту же операцию для обычного дискового файла, ядро вызовет процедуру xxstrategy() для блочного драйвера, обслуживающего данную файловую систему.
Вообще говоря, можно выделить пять основных случаев, в которых ядро обращается к функциям драйвера:
О Автоконфигурация. Обычно происходит в процессе инициализации UNIX, когда ядро определяет, какие устройства доступны в системе.
О Ввод/вывод. Запрос на операцию ввода/вывода может быть инициирован как прикладным процессом, так и некоторыми подсистемами ядра, например, подсистемой управления памятью.
О Обработка прерываний. Ядро вызывает соответствующую функцию драйвера для обработки прерывания, поступившего от устройства (если устройство способно генерировать прерывания).
П Специальные запросы. Ядро вызывает соответствующую функцию драйвера для обработки специальных команд, полученных с помощью системного вызова ioctl(2).
П Реинициализация/Останов. Некоторые типы аппаратных архитектур могут требовать сброса и реинициализации устройства. Определенные функции драйвера также вызываются при останове операционной системы.
На рис. 5.2 и 5.3 приведены схемы доступа к драйверам символьного и блочного устройств.
Как видно из рисунков, схема обработки запроса ядром UNIX различна для символьных и блочных устройств.
При обсуждении точек входа драйверов устройств следует иметь в виду, что большинство функций драйвера, отвечающих за передачу данных, осуществляют копирование информации из адресного пространства ядра, в котором находится сам драйвер, в адресное пространство задачи. Когда ядро вызывает функцию драйвера, все действия выполняются в системном контексте процесса. Однако схема вызова функций может быть различной:
П Функция может быть вызвана по запросу процесса. Например, если процесс выполняет системный вызов read(2), ядро вызывает соответствующую точку входа драйвера xxread(), обеспечивающего работу с файлом. В этом случае говорят, что функция имеет контекст задачи.
П Функция может быть вызвана другой подсистемой ядра операционной системы. Например, для блочного драйвера функция xxstrategy () может быть вызвана страничным демоном, для сохранения страниц во вторичной памяти (как правило, на жестком диске). Поскольку страничный демон представляет собой системный процесс, выполняющийся только в контексте ядра, функция xxstrategy () в этом случае имеет системный контекст.
Если функция вызывается в процессе обработки прерывания, то она имеет контекст прерывания -- специальный вид системного контекста. Функции драйвера, отвечающие за обработку прерывания, например xxintr () имеют этот тип контекста.
Рис. 5.3.
Различия в контексте и причинах вызова тех или иных функций драйвера позволяют представить драйвер устройства состоящим из двух частей: верхней части (top half) и нижней части (bottom half). Функции верхней части драйвера имеют синхронный характер, т. е. вызываются по определенным запросам прикладного процесса и выполняются в его контексте. Таким образом, для этих функций доступно адресное пространство и u-area процесса, и при необходимости эти функции могут перевести процесс в состояние сна (вызовом функции sleep (} ядра). Функции ввода/вывода и управления принадлежат верхней части драйвера.
Вызов функций нижней части носит асинхронный характер. Например, момент вызова функции обработки прерываний нельзя предугадать, и ядро не может контролировать, когда эта функция будет вызвана. Выполнение таких функций происходит в контексте ядра и обычно не имеет никакого отношения к контексту текущего процесса. Таким образом, функции системного контекста не имеют права адресовать структуры данных текущего процесса, например его u-area, а также не могут перевести процесс в состояние сна, поскольку это заблокирует процесс, не имеющий непосредственного отношения к работе драйвера.
Две части драйвера требуют синхронизации. Например, в случае, когда функции обеих частей используют одну и ту же структуру данных, функция верхней части при выполнении должна заблокировать прерывания на период работы с "разделяемой" областью памяти. В противном случае, прерывание может поступить в тот момент, когда целостность структуры данных нарушена, что приведет к непредсказуемым результатам.
Все представленные выше функции, за исключением xxhalt (), xxpoll () и xxintr {), принадлежат верхней части драйвера. Функция xxhalt {) вызывается ядром при останове системы и, таким образом, имеет системный контекст, не связанный с контекстом прикладного процесса.
Функция xxpoll () обычно вызывается при обработке ядром прерывания таймера для всех устройств, указанных как опрашиваемые. Это необходимо, в частности, для устройств, которые не могут или "не хотят" использовать аппаратные прерывания. Вместо этого xxpoll () может использоваться для эмуляции прерываний, например вызывая функцию xxintr (} на каждый n-ный тик системного таймера. Поэтому и функция xxpoll () и функция обработки прерывания xxintr () не могут рассчитывать на контекст прикладного процесса. В большинстве версий UNIX функции опроса и обработки прерываний вызываются не через коммутатор устройств, а через специальные таблицы ядра.
В UNIX SVR4 определены две дополнительные точки входа -- init () и start (). Драйвер регистрирует эти функции в таблицах ядра io init и io_start. Код начальной загрузки системы запускает функции xxinit () перед инициализацией ядра, а функции xxstart () сразу же после инициализации.
Сегодня мы рассмотрим:
Существуют различные причины, по которым необходимо на персональный компьютер. Не всегда это делается с использованием программ с автоматической подборкой драйверов.
Кроме этого, какой звуковой драйвер необходим для своего ПК, нужно знать и по причинам ухудшения работы устройств звука на компьютере.
Рассмотрим случаи, когда операционная система не в состоянии самостоятельно выбрать драйвер для звуковой карты персонального компьютера. В процессе переустановки системы и дальнейшей ее перезагрузки, это определяется отсутствием звуковых сигналов.
Причиной в создании такой ситуации может быть установленное звуковое оборудование на персональном компьютере, которое: редко встречается; дата выпуска старше, чем устанавливаемая ОС.
В таком случае надо в ручном режиме выполнить установку звукового драйвера. Есть несколько способов определения необходимого звукового драйвера для ПК.
Операционная система компьютера предлагает свою помощь в определении нужного звукового драйвера. Необходимо направить курсор на папку «Мой компьютер» нажимаем правую кнопку мыши (ПКМ), далее «Свойства», затем «Оборудование». Можно сделать проще: папка «Мой компьютер» нажимаем ПКМ, переходим в раздел диспетчер устройств.
Откроется список в диспетчере устройств, выбираем звуковую карту (нет драйвера, рядом с ней стоит восклицательный знак). Выделяем строку, вверху есть опция «Обновить драйвер», затем пункт «Поиск драйверов», когда все происходит с положительным результатом, будет предложено окно «Установить».
Когда автоматический выбор звукового драйвера не получился, надо пробовать найти его вручную, для этого переходим в любую поисковую систему (Google, Яндекс). Затем в поисковой строке вводим название своего звукового устройства на ПК и добавляем «+ драйвер», в открывшемся окне выбираем нужный для нас .
Какой необходим драйвер для персонального компьютера? Это легко увидеть на вкладке «Диспетчер устройств». Рекомендуется скачивать драйвер на официальном сайте производителя установленной материнской платы (когда звуковая карта встроена в нее). Предлагается также скачать драйвер с сайта, специализирующегося на обновлении этого оборудования для ПК.
После произведенного скачивания драйвера переходим снова на вкладку «Диспетчер устройств», открываем «Поиск драйверов на ПК», указываем место, куда его сохранили, «Установить».
Бывают случаи, когда пользователю компьютера сложно найти звуковой драйвер вручную и при помощи ОС, тогда предлагается его поиск специальной программе. В настоящее время для этих целей есть несколько программ: Driver Checker, Sam Drivers, Device Doctor, другие программы.
Работать с интерфейсом программ этого вида, понятно, на интуитивном уровне.
Бывают разные случаи, в которых необходимо определить звуковой драйвер для своего ПК, специалисты советуют: