Как зайти в Даркнет?!
25th January, 01:11
6
0
Как в tkinter из поля ввода Entry получить значение в одну переменную и обновить строку кнопкой, затем получить ещё одно введённое значение и затем сложить их. Ниже пример кода
21st July, 19:00
895
0
Программа, которая создает фейковые сервера в поиске игровых серверов CS 1.6 Steam
21st March, 17:43
948
0
Очень долго работает Update запрос Oracle
27th January, 09:58
914
0
не могу запустить сервер на tomcat HTTP Status 404 – Not Found
21st January, 18:02
905
0
Где можно найти фрилансера для выполнения поступающих задач, на постоянной основе?
2nd December, 09:48
938
0
Разработка мобильной кроссплатформенной военной игры
16th July, 17:57
1724
0
период по дням
25th October, 10:44
3955
0
Пишу скрипты для BAS только на запросах
16th September, 02:42
3720
0
Некорректный скрипт для закрытия блока
14th April, 18:33
4613
0
прокидывать exception в блоках try-catch JAVA
11th March, 21:11
4381
0
Помогите пожалуйста решить задачи
24th November, 23:53
6086
0
Не понимаю почему не открывается детальное описание продукта
11th November, 11:51
4351
0
Нужно решить задачу по программированию на массивы
27th October, 18:01
4396
0
Метода Крамера С++
23rd October, 11:55
4309
0
помогите решить задачу на C++
22nd October, 17:31
4002
0
Помогите решить задачу на python с codeforces
22nd October, 11:11
4492
0
Python с нуля: полное руководство для начинающих
18th June, 13:58
2599
0
Каков наилучший способ узнать linux или BSD kernel внутренностей?
Я хотел бы получить более глубокое знание внутренних компонентов операционной системы. Управление процессами, управление памятью и тому подобное.
Я думал о том, чтобы учиться, узнавая либо linux, либо BSD kernel.
Какой из них kernel лучше для целей обучения?
Что лучшее место, чтобы начать?
Можете ли вы порекомендовать какие-нибудь хорошие книги?
В колледже у меня был класс операционных систем, где мы использовали книгу Таненбаума . В классе мы реализовали драйвер устройства в операционной системе Minix . Это было очень весело, и мы многому научились.
Однако следует отметить одну вещь: если вы выберете Minix, он предназначен для обучения. Это микроядро, в то время как Linux и BSD являются монолитными kernel, так что то, что вы узнаете, может быть не переведено 100%, чтобы иметь возможность работать с Linux или BSD, но вы все равно можете получить много из этого, не обрабатывая столько же информации.
В качестве дополнительной заметки , если вы читали просто для удовольствия, Лайнус действительно играл с Minix до того, как написал Linux, но этого было недостаточно для его целей.
Как пользователь Linux я бы сказал, что Linux имеет большое сообщество для людей, чтобы узнать о kernel. http://kernelnewbies.org -это отличное место, чтобы начать задавать вопросы и изучать, как работает kernel. Я не могу сделать рекомендацию книги, но как только вы прочитали исходный материал по kernelnewbies, источник очень хорошо документирован.
Помимо уже упомянутых хороших книг (особенно хороша реализация Opeating System Design &), возьмите 1.x release Linux Kernel, загрузите его в VMWare или VirtualBox и начните играть оттуда.
Вам нужно будет потратить много времени на просмотр исходного кода. Для этого проверьте http://lxr.linux.no/ , который является просматриваемой связанной версией источника и делает жизнь намного проще. Для самой первой версии Linux (0.01) проверьте http://lxr.linux.no/linux-old+v0.01/ . Веселье начинается с http://lxr.linux.no/linux-old+v0.01/boot/boot.s . По мере того как вы переходите от версии к версии, проверьте ChangeLog и копайтесь в тех частях, которые изменились, чтобы спасти вас от повторного прочтения всего этого снова.
Как только вы овладеете понятиями, посмотрите на 2.0, затем 2.2 и т. д. Будьте готовы потратить на этот процесс много времени.
Заметив отсутствие BSDs здесь, я решил скинуться:
- Разработка и внедрение операционной системы FreeBSD (книга мертвого дерева)
- Unix и BSD курсы (курсы и видео)
- FreeBSD руководство по архитектуре (онлайн-книга)
Я сам не посещал ни одного из этих курсов, но я слышал, как Маршалл Кирк McKusick говорил в других случаях, и он действительно хорош в том, что делает.
И, конечно, man-страницы BSD, которые являются отличным ресурсом, поскольку они поддерживаются в гораздо большей степени, чем ваша средняя man-страница Linux. Возьмем, например, man-страницу uvm(9) , описывающую интерфейс виртуальной памяти в OpenBSD.
Не совсем связано, но я также рекомендую видеоисторию дистрибутивов программного обеспечения Berkeley , поскольку она дает хорошее введение в BSD части истории и культуры UNIX, а также множество веселых анектодов из прошлого.
Я рекомендую вам BSD ядер! BSD ядра имеют гораздо меньше хакеров, так что следить за их эволюцией проще. Либо в ядрах BSD и Linux есть отличные хакеры, но некоторые люди утверждают, что BSD lower fame отфильтровывает новичков. Кроме того, принятие проектных решений проще, когда источники не обновляются 100 раз в день.
Среди вариантов BSD мой любимый - NetBSD. Это может быть не тот безболезненный выбор, который вы хотите для вашего рабочего стола, но поскольку он имеет сильный акцент на портативность, качество довольно хорошее. Я думаю, что эта часть говорит все это:
Некоторые системы, по-видимому, имеют философию “If it works, it's right”. В этом свете философию NetBSD можно было бы описать как “It doesn't work unless it's right”
Если вы работаете достаточно долго, вы будете знать, что NetBSD-это настоящая радость для изучения хорошего кодирования. Хотя профессионально вы найдете больше шансов с Linux
Какой бы выбор вы ни выбрали, начните присоединяться к их почтовым спискам, следите за обсуждениями. Изучите некоторые патчи и, наконец, попытайтесь сделать свое собственное исправление ошибок. Что касается книг, ищите статьи Диомидиса Спинеллиса и его книгу . Это не совсем книга kernel, но имеет NetBSD примеров и очень помогает решать большие программы.
Нет никакой замены для погружения в код. Попробуйте найти драйвер или подсистему, которая вас интересует, и пошарить с ней. С помощью таких инструментов, как VMware Workstation , очень легко внести любые изменения, которые вы хотите, сделать снимок VM и запустить измененный kernel. Если kernel запаникует на boot, кого это волнует? Просто вернитесь к снимку и исправьте проблему.
Для книг я настоятельно рекомендую Linux Kernel разработки Роберта Лав. Это чудесно написанная книга-много информации, организованной здраво и с юмором... совсем не сухое чтение.
Когда я учился в университете, я провел семестр, изучая операционные системы, и в рамках этого у меня было задание, где мы должны были реализовать файловую систему на основе RAM в Linux.
Это был фантастический способ понять внутренности Linux keurnel и понять, как все это сочетается - и чертовски весело играть с тем,как он взаимодействует со стандартными инструментами.
Я сам не пробовал, но вы можете перейти к Linux с нуля и начать создавать свой собственный дистрибутив Linux. Звучит как нечто, что займет кучу времени, но приведет к глубокому знанию внутренностей Linux kernel и того, как работает каждая часть. Конечно, вы можете дополнить это обучение, следуя любому из других советов здесь.