LINUX.ORG.RU

Пособие по системному программированию в ядре Linux

 , , ,


0

0

Вашему вниманию предлагается пособие начального уровня, посвящённое вопросам программирования в ядре Linux и предназначенное для студентов технического ВУЗа.

Выложен завершённый в целом черновик, опечатки пока устраняются. Замечания по существу прошу высказывать, не стесняясь.

>>> Подробности

Начинание возможно хорошее, но - насколько начального уровня? "Для начала запустите Eclipse, дважды кликнув по его значку на Рабочем столе"?

jcd ★★★★★
()
Ответ на: комментарий от jcd

> Начинание возможно хорошее, но - насколько начального уровня? "

Начального уровня для технического ВУЗа >_<

sv75 ★★★★★
() автор топика
Ответ на: комментарий от trapezoid

> поддерживаю начинание. ждём продолжений с большим количеством примеров

Это, к сожалению, вряд ли: пока на очереди более достойные задачи и еще два других курса.

sv75 ★★★★★
() автор топика
Ответ на: комментарий от sv75

> Не точно, но вариант "для ядра" проиграл, какие ещё варианты?

"для" лучше подходит. "Ядро Linux. Системное программирование" ?

phasma ★☆
()
Ответ на: комментарий от phasma

> "для" лучше подходит

Оно не подчеркивает идеи, что ядро нужно менять, а для объевшихся виндою студентов эта мысль часто сложна, и её хотелось бы выделить. Моё скромное неуверенное мнение.

> "Ядро Linux. Системное программирование"

Это название монографии страниц на триста.

В общем, в печать пойдёт в таком вариант (это всё равно никто не увидит), а в электронном виде возможно поменяю в дальнейшем.

sv75 ★★★★★
() автор топика
Ответ на: комментарий от sv75

Ядро Linux. Введение в системное программирование для студентов ВУЗов ?

phasma ★☆
()

Очень приятно наблюдать подобные учебные пособия, честно. Однако хотелось бы более мягкого и простого вхождения в тему с красивыми картинками и примерами вроде этого http://docs.blackfin.uclinux.org/doku.php?id=a_simple_module_example - что может быть проще и понятнее... А ещё мне нравится вот это http://free-electrons.com/training/drivers тут всё в мельчайших подробностях и простой форме описано что чего куда как + простые примеры. Было бы неплохо увидеть эти материалы в данном учебном пособии...

fpga
()

замените «Стандарт кодирования» на «Оформление кода», а то я сразу подумал на теорию информации и кодирования

shafff
()
Ответ на: комментарий от shafff

«Сервисные функции» -> «Служебные функции» или может даже «вспомогательные»

shafff
()

"Системное программирование - Ядро Linux. Учебное пособие." ИМХО самое подходящее название. "Программирование в ядре" способно разорвать мозг.

anonymous
()
Ответ на: комментарий от fpga

> Однако хотелось бы более мягкого и простого вхождения в тему с красивыми картинками и примерами вроде этого http://docs.blackfin.uclinux.org/doku.php?id=a_simple_module_example - что может быть проще и понятнее... А ещё мне нравится вот это http://free-electrons.com/training/drivers тут всё в мельчайших подробностях и простой форме описано что чего куда как + простые примеры. Было бы неплохо увидеть эти материалы в данном учебном пособии...

Но зачем, если они и так есть (в т.ч. в указанной литературе), а у меня есть (чуть более осмысленный) пример модуля в конце? Это всё-таки учебное пособие, а не тренинг "делай раз" (это называется -- "методические указания по лабораторным работам").

Ладно, добавлю пяток строчек с module_init еще к какому-нить примеру, или просто выложу все примеры. Или оба

sv75 ★★★★★
() автор топика
Ответ на: комментарий от anonymous

> "Системное программирование - Ядро Linux. Учебное пособие." ИМХО самое подходящее название.

Ага, особенно учитывая чтозадачи , решаемые ядром, типа управления памятью, процессорами и устройствами -- не рассматриваются.

В общем, если редактор не поменяет -- оставлю.

sv75 ★★★★★
() автор топика
Ответ на: комментарий от shafff

> замените «Стандарт кодирования» на «Оформление кода», а то я сразу подумал на теорию информации и кодирования

Хорошо.

sv75 ★★★★★
() автор топика

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

НО работа хорошая, я бы даже с согласия авторов помог в написании некотрых глав. =) если что могу оставить контактные данные(к примеру ник на LinuxForum'е или ICQ).

anonymous
()
Ответ на: комментарий от anonymous

> имхо, маловато реально полезных вещей, таких как: выделение памяти, управление процессами, создание кэшей и т.д. много "воды", все примеры довольно искусственны, материал суховат.

Цели пособия несколько иные, чем подготовка писателей реальных дров.

Про кеши (речь про kmemcache?) я решил не писать (вскольз упомянул), поскольку не вижу большого применения в учебных курсовых. Про malloc и списки азы написал, по-моему.

Про процессы хотелось бы услышать подробнее, что именно имелось в виду. Если речь, например, про свой (учебный) планировщик, то это у нас не в этом курсе, и работа над этим ведётся, но вяло.

> НО работа хорошая, я бы даже с согласия авторов помог в написании некотрых глав. =) если что могу оставить контактные данные(к примеру ник на LinuxForum'е или ICQ).

Лучше вышлите их на mstu@sevik.ru с пометкой в теме "Linux". На случай расширения до монографии пришлю план на критику.

sv75 ★★★★★
() автор топика

В названии обязательно должны быть слова "Краткий курс", ибо это соответсвует глубоким историческим традициям нашей Родины %)

tailgunner ★★★★★
()
Ответ на: комментарий от tailgunner

"Краткий курс" -- это если на гриф УМО страниц 200. Возможно, будет. Если статьи не начну писать.

sv75 ★★★★★
() автор топика
Ответ на: комментарий от sv75

>Про процессы хотелось бы услышать подробнее, что именно имелось в виду. Если речь, например, про свой (учебный) планировщик, то это у нас не в этом курсе, и работа над этим ведётся, но вяло.

учить изобретать велосипед не надо(хотя идея неплохая) =), но вот описать само управление процессами(wake_up, sleep_*, wait_* и пр.) было бы, на мой взгляд, полезно. я мог бы набросать небольшую главу(около 7-8 стр.) о написании драйверов символьных устройств, описал бы регистрацию устройств, методы выделения памяти, взаимодействия с userspace и т.д., привел бы пример простенького виртуального устройства. =)

anonymous
()
Ответ на: комментарий от anonymous

> я мог бы набросать небольшую главу(около 7-8 стр.) о написании драйверов символьных устройств, описал бы регистрацию устройств, методы выделения памяти, взаимодействия с userspace и т.д.

ИМХО, лучше уж перевести соответствующие главы LDD3.

tailgunner ★★★★★
()
Ответ на: комментарий от tailgunner

могу и LDD перевести =) ток для начинающего это будет совсем "не айс"

anonymous
()
Ответ на: комментарий от sv75

>Ладно, добавлю пяток строчек с module_init еще к какому-нить примеру, или просто выложу все примеры. Или оба

Да делайте что хотите, я просто хотел показать на указанных мной примерах, что учебное пособие должно быть таким, чтобы было интересно, просто, постепенно и с примерами прямо в самом начале. Там на соседних страницах по тем ссылкам много полезного учебного материала. В текущем состоянии пособие способно вызвать глубокий ужас и страх у студента, чувство бессилия и невозможности освоить всё это, желание перевестись на юридический факультет... :)

fpga
()

> предназначенное для студентов технического ВУЗа. Мелочь, конечно, но вуз пишется строчными буквами. Даже несмотря на то, что аббревиатура.

anonymous
()
Ответ на: комментарий от anonymous

Аббревиатуры пишуться большими, даже если они не имена собственные. Или пруфлинк.

sv75 ★★★★★
() автор топика
Ответ на: комментарий от fpga

> В текущем состоянии пособие способно вызвать глубокий ужас и страх у студента, чувство бессилия и невозможности освоить всё это, желание перевестись на юридический факультет... :)

Ну и хрен с ними. От таких студенты всё равно проку мало. К счастью, у нас несколько иной контигент.

sv75 ★★★★★
() автор топика
Ответ на: комментарий от tailgunner

> ИМХО, лучше уж перевести соответствующие главы LDD3.

Лучше отправить читать LDD. Как я и делаю.

fixed

sv75 ★★★★★
() автор топика

А исходник в TeX не даш? :)

Я тоже пишу методичку, только по другому предмету.

Глянуть хотел как ты некоторые вещи реализовал в TeX.

Да и (стр. 9) я думаю если пишешь "Си" то тогда наверно и "Си++" а не "C++"?

Интересная методичка, мне понравилась. ;)

keeper_b ★★★★
()
Ответ на: комментарий от anonymous

> учить изобретать велосипед не надо(хотя идея неплохая) =), но вот описать само управление процессами(wake_up, sleep_*, wait_* и пр.) было бы, на мой взгляд, полезно. я мог бы набросать небольшую главу(около 7-8 стр.) о написании драйверов символьных устройств, описал бы регистрацию устройств, методы выделения памяти, взаимодействия с userspace и т.д., привел бы пример простенького виртуального устройства. =)

У меня есть давняя задумка: чтобы это не было копией LDD и чтобы не зацикливаться на Линуксе, монографию надо писать параллельно по 2-3 ядрам. Однако, пока нет возможности, а профит тут сомнительный. Поэтому пока пауза, до весны переключаюсь на другие занятия (у меня три курса сейчас, и по всем еще лабы и лекции готовы только в черне).

sv75 ★★★★★
() автор топика
Ответ на: комментарий от keeper_b

> А исходник в TeX не даш? :)

Выложу позже (страшноват он ещё). Или мыль на vsevolod.krishchenko@gmail.com

> Глянуть хотел как ты некоторые вещи реализовал в TeX.

Мыль вопросы.

> Да и (стр. 9) я думаю если пишешь "Си" то тогда наверно и "Си++" а не "C++"?

Логично.

sv75 ★★★★★
() автор топика
Ответ на: комментарий от sv75

>Ну и хрен с ними. От таких студенты всё равно проку мало. К счастью, у нас несколько иной контигент.

Это _неправильный_ педагогический подход. Есть такие студенты, которым вообще всё пофигу, пусть даже учебное пособие будет великолепнейшим, они не станут ничего изучать. Однако, если учебное пособие "кусок *****" то желание изучать такой материал пропадает начисто даже у способного студента. До чего же масса бездарных методичек на свете существует, а те немногие, которые написаны не как высер лишь бы было, а с душой - такое приятно изучать - одна такая методичка решила вообще мой профессиональный выбор. Всего ОДНА. Вот вы понаписали нечто - а обкатку на студентах это проходило? Или вы просто бросите это студентам "нате изучайте"? И пример я нашел только в конце, и то он перегружен. Какие такие семафоры и мьютексы, когда даже передача параметров модулю при загрузке не освещена? И много других мелочей, которые и есть ничто иное как _основы_... Ориентироваться надо на то, насколько понятен материал для новичка, а не "ну вроде всё что знал - написал, порядок" =( Вот такое моё личное мнение. И вам решать.

fpga
()
Ответ на: комментарий от sv75

> Не точно, но вариант "для ядра" проиграл, какие ещё варианты?

как насчёт "на уровне ядра" ?

AndreyKl ★★★★★
()
Ответ на: комментарий от fpga

> Вот вы понаписали нечто - а обкатку на студентах это проходило?

Всё наоборот -- в пособии собрано то, что я рассказываю словами в качестве ликбеза (важдому студенту дважды), и я решил что уместно иметь это в печатном виде.

Почему-то на ЛОР постоянно считают, что пособия на 20 листов покрывают работу препода в течении полугода :)

> Или вы просто бросите это студентам "нате изучайте"?

Да, и буду получать свою з/п ни за что, именно так, да.

> И пример я нашел только в конце, и то он перегружен. Какие такие семафоры и мьютексы

Семафоры и мьютексы изучены студентами в основном курсе системного программирования, и полагаются вполне известными. См. введение, там есть brain requirements.

> когда даже передача параметров модулю при загрузке не освещена

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

sv75 ★★★★★
() автор топика
Ответ на: комментарий от sv75

>> когда даже передача параметров модулю при загрузке не освещена

> Кому понадобиться -- ткнем в документацию и поясним словами. Возможно, стоит добавить, но тогда уж и параметры загрузки ядра, а это не влезает в заданный печатный объём, так что оставлю на расширение до грифа УМО, если не сяду писать дисер.

Параметры модулю - на пол страницы текста ;)

fpga
()
Ответ на: комментарий от fpga

А пособие всего 20-ть страниц! Хорошо, сделаю пример на пустой модуль с параметром.

sv75 ★★★★★
() автор топика
Ответ на: комментарий от sv75

ВОТ http://free-electrons.com/doc/embedded_linux_kernel_and_drivers/img167.html Ну там ещё пояснения на соседних крошечных страничках. Знаете, просто дайте своим студентам помимо всего прочего ссылку на этот ресурс... Никому хуже не будет. Возможно, у студентов проснется интерес к предмету с большей силой :)

fpga
()
Ответ на: комментарий от fpga

Дам конечно, у меня список всех полезных ссылок ведётся.

sv75 ★★★★★
() автор топика
Ответ на: комментарий от AndreyKl

Да, grep это подтверждает.

sv75 ★★★★★
() автор топика

Советы старого редактора

s/утилита/"служебная программа" (ненужная транслитерация)

s/директория/каталог (существующее слово -- совсем уж безобразная транслитерация эпохи PDP-11, тем более что оно встречается непоследовательно и путаница с каталогом LDAP тут явно не грозит)

s/исходник/"исходный код" или "файл исходного кода" (надо уважать читателей, особенно в печатной книге!!!)

s/xx-битный/xx-разрядный (для архитектуры), дабы не путать с длиной битовой строки.

s/логирование/"запись в журнал" или "запись в протокол" (опять слэнг, недопустимый для печатного материала!)

Не следует использовать написание вида <тип>-файл, поскольку здесь <тип> -- это просто строка без грамматической функции (или, если угодно, имя собственное). Микрософт со своей рекомендацией подобной записи в руководстве по стилю проявил вопиющую некомпетентность в русском языке.

Настоятельно советовал бы выкинуть транслитерацию "конфигурация" вообще, поскольку она настолько многозначна, что только приводит к путанице, и заменить её словом "настройка" или "состав" в зависимости от контекста (ещё есть "комплектация" для оборудования и "топология" для сетей, но не для данного текста). Выполнение этой замены требует определённой мозговой работы, но зато резко повышает читаемость и понимаемость текста. Слово "конфигурация" запрещено Саном и Микрософтом для использования в русскоязычных документах из жалости к читателям.

По возможности следует избегать действительного залога для неодушевлённых сущностей: так, в предисловии не "Пособие описывает...", а "В пособии описаны...".

s/шаг/этап или действие. Дословный перевод слова step вне контекста пошагового выполнения кода при отладке звучит не по-русски.

Стр.20: исправьте "глобальную переменная"

Стр.22: исправьте "утилиты загрузЫки"

Со знаками пунктуации караул, по пятку на странице найти всегда можно... :(

А вообще -- отличная работа. Так держать, коллеги!!!

Orlusha ★★★★
()
Ответ на: комментарий от AndreyKl

> Кстати, стоит ли писать опечатки или я это зря, всё равно ещё похоже не вычитано?

Да хуже думаю не будет, спасибо. Не вычитано, поскольку еще получаю замечания по существу, но изменений в целом будет видимо пока немного.

2Orlusha:

Значительную часть учту, но не всё. В частности, "настройка ядра" не годится (это процесс получается), как и "состав ядра", а ещё варианты не приходят в голову.

Пунктуацию ещё вычитаю.

sv75 ★★★★★
() автор топика
Ответ на: Советы старого редактора от Orlusha

> А вообще -- отличная работа. Так держать, коллеги!!!

Присоединяюсь :) Самого главного и не сказал - спасибо за работу!

AndreyKl ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.