Какие tutorails могут помочь в понимании аппаратного взаимодействия с C - PullRequest
2 голосов
/ 10 июля 2011

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

Может ли кто-нибудь указать мне правильное направление, как я должен идти

Ответы [ 2 ]

1 голос
/ 10 июля 2011

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

Вы, вероятно, нереалистичны в ожидании изучения этих двух вещей одновременно. Чтобы провести аналогию, представьте, что вам нужно построчно попросить что-нибудь объяснить пьесы Шекспира (скажем, «Венецианский купец») тому, кто не говорит по-английски, не понимает концепции кредитования денег или правовой системы.

Моя рекомендация: изучите кодирование на C подробно, пока не поймете, как в целом использовать указатели функций, и, что более важно, почему вы их используете, как пишете многопоточный код, зачем вам нужны такие понятия, как муты и семафоры. Затем также ознакомьтесь с общими принципами низкоуровневого программирования, например, Deitel & Deitel содержит много материалов о разработке ОС.

0 голосов
/ 10 июля 2011

Я много узнал о написании модулей, прочитав эту книгу (это бесплатно): http://lwn.net/Kernel/LDD3/

Это очень понятное введение в разработку ядра.

Возможно, вы также захотитевзгляните на эту старую статью: http://cm.bell -labs.com / cm / cs / who / dmr / cacm.html

Она очень кратко объясняет концепции Unix и может помочь вамчтобы все было просто.

...