Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Клуб программистов > Свободное общение
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 26.02.2011, 22:24   #21
SnX
Форумчанин
 
Регистрация: 30.10.2009
Сообщений: 114
По умолчанию

Драйвер пользовательского уровня - это дикий изврат какой-то. В общем это "не то".
Цитата:
а почему же по вашему это невозможно?
Не стоит отвечать вопросом на вопрос.
C# полностью абстрагирован от оборудования и транслируется в .NET байт-код, следовательно писать на этом языке r0-драйвера не получится.
SnX вне форума Ответить с цитированием
Старый 26.02.2011, 23:17   #22
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Цитата:
C# полностью абстрагирован от оборудования и транслируется в .NET байт-код, следовательно писать на этом языке r0-драйвера не получится.
я отлично знаю что такое MSIL.
тем не менее ОС может предоставить сервисы(в терминологии MSIL - классы) для доступа к портам ввода-вывода, и так же доступа к нужной физ памяти.
такая система возможна.(и вполне не трудно её сделать)
такое не делается потому что скорость MSIL-кода меньше(даже с учетом JIT)
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 27.02.2011, 12:04   #23
anyx
Форумчанин
 
Регистрация: 10.09.2009
Сообщений: 352
По умолчанию

Цитата:
Сообщение от SnX Посмотреть сообщение
C# полностью абстрагирован от оборудования и транслируется в .NET байт-код, следовательно писать на этом языке r0-драйвера не получится.
Драйверу не обязательно выполняться в ring0. Главное получать запросы от программ, обрабатывать их и передавать оборудованию, и наоборот. Т.е. если для C# есть нужный интерфейс связи с оборудованием (может быть написан на C+Asm и выполняться в ring0), то драйвер на C# вполне возможен.
anyx вне форума Ответить с цитированием
Старый 27.02.2011, 13:48   #24
SnX
Форумчанин
 
Регистрация: 30.10.2009
Сообщений: 114
По умолчанию

Пепел Феникса
В конечном итоге это будет юзермодная программа.
Цитата:
для доступа к портам ввода-вывода
Для доступа к портам ввода-вывода в большинстве случаев не нужны никакие драйвера.

anyx
Читай выше.
Цитата:
нужный интерфейс связи с оборудованием (может быть написан на C+Asm и выполняться в ring0)
Как раз вот это и называется драйвер.



В общем никто ничего не понял, можно прекратить оффтоп.
SnX вне форума Ответить с цитированием
Старый 27.02.2011, 14:26   #25
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Цитата:
В конечном итоге это будет юзермодная программа.
пусть даже так, но тем не менее она свою работу делает, а именно обеспечивает работу оборудования.
Цитата:
Для доступа к портам ввода-вывода в большинстве случаев не нужны никакие драйвера.
ну вперед тогда с юзерспейса выполните in al,15.
Цитата:
Как раз вот это и называется драйвер.
0)драйвером не называется прослойка обеспечивающая легкий доступ высокого уровня к оборудованию
1)драйвер не обязан выполнять всю работу в r0
2)драйверу достаточно иметь доступ к тому что ему реально нужно, а не все подрят.

с вашей стороны не вижу ни одного внятного аргумента.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 27.02.2011, 17:11   #26
rpy3uH
добрый няша
Старожил
 
Аватар для rpy3uH
 
Регистрация: 29.10.2006
Сообщений: 4,804
По умолчанию

следует отличать понятия "драйвер режима ядра" и просто "драйвер". Драйвер это более широкое понятие, чем "драйвер режима ядра".
Я знаю только два языка, на которых можно писать "драйвера режима ядра" это С и ассемблер (видел драйвер написанный на Delphi, но это больше "сазо-мазо" чем программирование). На С# я даже непредставляю как можно писать "драйвер режима ядра".
rpy3uH вне форума Ответить с цитированием
Старый 27.02.2011, 19:08   #27
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

rpy3uH, рад видеть хороший ответ.
я по большей части говорю про драйвер пользовательского уровня, хотя в теории это все возможно и на уровне ядра.
изначально прозвучало именно драйвер то есть обеспечивание работы оборудования, и для этого не обязательно ведь именно драйвер режима ядра
главное чтоб работу делал, а не то где он выполняется.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 27.02.2011, 21:39   #28
SnX
Форумчанин
 
Регистрация: 30.10.2009
Сообщений: 114
По умолчанию

Цитата:
пусть даже так, но тем не менее она свою работу делает, а именно обеспечивает работу оборудования.
Под это описание может попасть любая программа использующая WinAPI. Программа открывания/закрывания лотка DVD/CD привода тоже будет считаться драйвером?
Цитата:
с юзерспейса выполните in al,15
Тупой пример.
Цитата:
с вашей стороны не вижу ни одного внятного аргумента.
Читать посты нужно внимательней.
Цитата:
я по большей части говорю про драйвер пользовательского уровня, хотя в теории это все возможно и на уровне ядра.
Что возможно? Не понял.
Цитата:
изначально прозвучало именно драйвер то есть обеспечивание работы оборудования, и для этого не обязательно ведь именно драйвер режима ядра
Все прекрасно поняли, что подразумевалось в начале. В следующем посте было конкретное уточнение:
Цитата:
... писать на этом языке r0-драйвера не получится
SnX вне форума Ответить с цитированием
Старый 27.02.2011, 21:43   #29
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Цитата:
Тупой пример.
пример четко показывающий ограничения r3.
Цитата:
Программа открывания/закрывания лотка DVD/CD привода тоже будет считаться драйвером?
нет, так как она не обеспечивает работу DVD-ROM, она работает с ним, а это разное.
Цитата:
Что возможно? Не понял.
возможно исполнение MSIL-кода в r0.(повторюсь)
Цитата:
такая система возможна.(и вполне не трудно её сделать)
такое не делается потому что скорость MSIL-кода меньше(даже с учетом JIT)
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 27.02.2011, 22:55   #30
anyx
Форумчанин
 
Регистрация: 10.09.2009
Сообщений: 352
По умолчанию

В unix драйвера работают из-под ring3, а вместо прерываний и операций ввода/вывода используют функции, предоставляемые ядром. Поэтому из-за ошибки в драйвере вся система не вылетает (как в винде, с синим экраном), а вылетает только драйвер. Это снижает быстродействие, но не сильно. Фактически, на каждую операцию ввода/вывода приходятся лишние push, pop, call и ret и проверка процессором прав для вентиля (всё для вызова функции ядра). Т.е. в ring0 только функции работы с портами ввода/вывода, остальное в ring3.

P.S. Инфа из старой версии книги Танненбаума, сейчас, возможно, что-то иначе.
anyx вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
как сделать меню справа и чтоб можна было статью писать справа? HTML pufystyj HTML и CSS 7 26.02.2011 14:11
где можна выучить XNA? Dixty Gamedev - cоздание игр: Unity, OpenGL, DirectX 5 25.02.2009 12:40
Где можна сплагиатить иконки??? HunterMan Свободное общение 7 10.06.2008 11:31