|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
26.02.2011, 22:24 | #21 | ||
Форумчанин
Регистрация: 30.10.2009
Сообщений: 114
|
Цитата:
Цитата:
C# полностью абстрагирован от оборудования и транслируется в .NET байт-код, следовательно писать на этом языке r0-драйвера не получится. |
||
26.02.2011, 23:17 | #22 | |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
Цитата:
тем не менее ОС может предоставить сервисы(в терминологии MSIL - классы) для доступа к портам ввода-вывода, и так же доступа к нужной физ памяти. такая система возможна.(и вполне не трудно её сделать) такое не делается потому что скорость MSIL-кода меньше(даже с учетом JIT) Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
|
27.02.2011, 12:04 | #23 |
Форумчанин
Регистрация: 10.09.2009
Сообщений: 352
|
Драйверу не обязательно выполняться в ring0. Главное получать запросы от программ, обрабатывать их и передавать оборудованию, и наоборот. Т.е. если для C# есть нужный интерфейс связи с оборудованием (может быть написан на C+Asm и выполняться в ring0), то драйвер на C# вполне возможен.
|
27.02.2011, 13:48 | #24 | ||
Форумчанин
Регистрация: 30.10.2009
Сообщений: 114
|
Пепел Феникса
В конечном итоге это будет юзермодная программа. Цитата:
anyx Читай выше. Цитата:
В общем никто ничего не понял, можно прекратить оффтоп. |
||
27.02.2011, 14:26 | #25 | |||
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
Цитата:
Цитата:
Цитата:
1)драйвер не обязан выполнять всю работу в r0 2)драйверу достаточно иметь доступ к тому что ему реально нужно, а не все подрят. с вашей стороны не вижу ни одного внятного аргумента. Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
|||
27.02.2011, 17:11 | #26 |
добрый няша
Старожил
Регистрация: 29.10.2006
Сообщений: 4,804
|
следует отличать понятия "драйвер режима ядра" и просто "драйвер". Драйвер это более широкое понятие, чем "драйвер режима ядра".
Я знаю только два языка, на которых можно писать "драйвера режима ядра" это С и ассемблер (видел драйвер написанный на Delphi, но это больше "сазо-мазо" чем программирование). На С# я даже непредставляю как можно писать "драйвер режима ядра". |
27.02.2011, 19:08 | #27 |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
rpy3uH, рад видеть хороший ответ.
я по большей части говорю про драйвер пользовательского уровня, хотя в теории это все возможно и на уровне ядра. изначально прозвучало именно драйвер то есть обеспечивание работы оборудования, и для этого не обязательно ведь именно драйвер режима ядра главное чтоб работу делал, а не то где он выполняется. Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
27.02.2011, 21:39 | #28 | ||||||
Форумчанин
Регистрация: 30.10.2009
Сообщений: 114
|
Цитата:
Цитата:
Цитата:
Цитата:
Цитата:
Цитата:
|
||||||
27.02.2011, 21:43 | #29 | ||||
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
Цитата:
Цитата:
Цитата:
Цитата:
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
||||
27.02.2011, 22:55 | #30 |
Форумчанин
Регистрация: 10.09.2009
Сообщений: 352
|
В unix драйвера работают из-под ring3, а вместо прерываний и операций ввода/вывода используют функции, предоставляемые ядром. Поэтому из-за ошибки в драйвере вся система не вылетает (как в винде, с синим экраном), а вылетает только драйвер. Это снижает быстродействие, но не сильно. Фактически, на каждую операцию ввода/вывода приходятся лишние push, pop, call и ret и проверка процессором прав для вентиля (всё для вызова функции ядра). Т.е. в ring0 только функции работы с портами ввода/вывода, остальное в ring3.
P.S. Инфа из старой версии книги Танненбаума, сейчас, возможно, что-то иначе. |
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
как сделать меню справа и чтоб можна было статью писать справа? 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 |