Опыт системного программирования на С в Linux/Unix.

Тема в разделе "WASM.BEGINNERS", создана пользователем yaku_toi, 26 мар 2011.

  1. yaku_toi

    yaku_toi New Member

    Публикаций:
    0
    Регистрация:
    22 фев 2011
    Сообщения:
    6
    Доброго времени суток.

    Я начинающий программист с диким желанием получить опыт и навыки.
    Навык программирования на С у меня достаточно низкий (или просто так кажется) и мне хотелось бы его развить.

    Можете посоветовать какую нибудь задачу из разряда системного программирования в Linux? Можно с примесью криптографии так как именно ей и ИБ собираюсь заниматься в дальнейшем.

    Заранее спасибо.
     
  2. kernel16

    kernel16 Human Vl

    Публикаций:
    0
    Регистрация:
    29 окт 2010
    Сообщения:
    316
    э-э-э LinuxLocker)
     
  3. ohne

    ohne New Member

    Публикаций:
    0
    Регистрация:
    28 фев 2009
    Сообщения:
    431
    как и везде, фильтры какие-нибудь: сетевой, ввода-вывода и тп
     
  4. WIN32

    WIN32 Member

    Публикаций:
    0
    Регистрация:
    20 янв 2007
    Сообщения:
    338
    просто читай исходники ядра :) с как говорится Entry. Мне помогло. Правда я читал OpenBSD сорцы, в итоге получилось добавить в крипто систему ядра алго шифрования ГОСТ-89
     
  5. Nafanya

    Nafanya Member

    Публикаций:
    0
    Регистрация:
    26 июл 2006
    Сообщения:
    581
    Наверное еще рано. Решите, что нибудь из ряда прикладных задач. Например, разработайте многопоточный параллельный сервер, и протестируйте его параллельную работу с помощью нескольких клиентов. В качестве базы, возьмите примеры из замечательной книги "Разработка сетевых приложений типа клиент/сервер для Linux/Posix"

    Эта книга очень полезная, т.к. в ней представлено много практических примеров, а не только сухая теория.
     
  6. Nafanya

    Nafanya Member

    Публикаций:
    0
    Регистрация:
    26 июл 2006
    Сообщения:
    581
    Если вы любите ИБ, то Вам будет полезно знать как функционирует клинт-серверное ПО, что такое тупиковые ситуации и т.д.
     
  7. yaku_toi

    yaku_toi New Member

    Публикаций:
    0
    Регистрация:
    22 фев 2011
    Сообщения:
    6
    Всем огромное спасибо!
    kernel16
    Можно по подробнее?

    Nafanya
    Спасибо за книгу! Буду читать.
     
  8. Nafanya

    Nafanya Member

    Публикаций:
    0
    Регистрация:
    26 июл 2006
    Сообщения:
    581
    yaku_toi
    По системному программированию под Linux, опять же в контексте сетей, могу порекомендовать книгу "The Linux Networking Architecture- Design and Implementation of Network Protocols in the Linux Kernel".

    Книгу эту найти довольно не просто в интернете, но можно, она на английском. Эта книга рассчитана как минимум на специалиста в области Computer Science. Можете просто скачать её, с той целью, чтобы оценить уровень необходимый для разработки системного ПО (в книге рассматривается разработка новых сетевых протоколов).

    Когда Вы этого уровня достигните, то можете смело приступать.
    А пока имеет смысл тренироваться на прикладных задачах.
    Желаю удачи.
     
  9. r90

    r90 New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2005
    Сообщения:
    898
    Nafanya
    Это системный уровень. Прикладное программирование -- это рисование окошек. Не только окошки, конечно же, но как правило.
    Вы путаете деления kernel-space vs. user-space; и system coding vs. application coding. Это достаточно распространённая путаница, поскольку при переводе на русский, "user space code" превращается в "прикладной код", при тупом (не учитывающем контекста) переводе обратно получаем "application code". Но вообще-то, system code -- это не то же самое, что и kernel code.
     
  10. Nafanya

    Nafanya Member

    Публикаций:
    0
    Регистрация:
    26 июл 2006
    Сообщения:
    581
    r90

    Почему системный то? Если разрабатывается протокол 7-го уровня модели OSI, то бишь прикладной протокол, который клиент и сервер будет использовать для общения. И при чем здесь системное программирование?

    Системный уровень - это:
    1) Memory managment
    2) Process managment
    3) Network subsystem
    4) Filesystems
    5) Device drivers

    При системном программировании, разработку можно отнести к какому-либо из 5-ти перечисленных классов.

    Из вики:
    Систе́мное програ́ммное обеспече́ние — это комплекс программ, которые обеспечивают эффективное управление компонентами вычислительной системы, такими как процессор, оперативная память, каналы ввода-вывода, сетевое оборудование, выступая как «межслойный интерфейс» с одной стороны которого аппаратура, а с другой приложения пользователя.

    Сервер с клиентом никак на "межслойный интерфейс" не похожи.
     
  11. featurelles

    featurelles New Member

    Публикаций:
    0
    Регистрация:
    29 мар 2009
    Сообщения:
    562
    yaku_toi
    Попробуй написать фаервол и низкоуровневый сниффер..а также их обход. Заодно попробуй с протоколом tcp разобраться.
    Из книг, почитай "Linux. Сетевая архитектура" она на русском... И разбирайся...разбираться в этом деле очень долго. Правда долго. Т.к. в разных версиях ядра, реализация сетевого стека отличается. ((((...
    Насчёт криптографии, именно в ядре. Можешь посмотреть их реализацию в исходниках ядра, Однако , когда я их смотрел.. было ни черта не понятно. Проще самому разобраться в определённом алгоритме, и самому его реализовать на СИ..и не парить себе мозг.
     
  12. 0dh

    0dh New Member

    Публикаций:
    0
    Регистрация:
    23 мар 2011
    Сообщения:
    31
    в описании книги написано, что она о ядрах 2.2, разве с тех пор ничего не менялось?
     
  13. yaku_toi

    yaku_toi New Member

    Публикаций:
    0
    Регистрация:
    22 фев 2011
    Сообщения:
    6
    Всем еще раз огромное спасибо!
     
  14. pr0mix

    pr0mix New Member

    Публикаций:
    0
    Регистрация:
    30 июл 2008
    Сообщения:
    107
    напиши вирус(ы) - это интереснейшое занятие, получишь много знаний и опыта=)