Minix или Linux для изучения дизайна операционной системы?

Я хочу изучить дизайн операционной системы. Мне было интересно, стоит ли мне заняться Minix или GNU/Linux в процессе? Мне нравятся книги, поэтому я буду следить в основном за книгой, хотя видеоресурсы (предположительно записанные на видео лекции) также будут приветствоваться.

Я формально изучил C и C# и могу программировать на них программы малого и среднего размера. У меня также есть очень базовое понимание структур данных.

Если я выберу маршрут Minix, что мне выбрать: версию 2 (более простую??) или версию 3?


person haziz    schedule 24.11.2011    source источник
comment
can program [...] medium sized programs in them -› Я бы оспорил это мнение, если бы вы только формально изучили их и имеете лишь самое базовое представление о структурах данных. Для меня программы среднего размера находятся в регионах 100kLoC, а это означает, что вам нужно хорошее понимание того, как организовать код, как выбрать хорошие имена для ваших сущностей, пространства имен, хороший дизайн классов и интуиция, основанная на многолетнем опыте. Это сводится к следующему: если вы еще не написали хорошую и чистую программу среднего размера, вы не можете знать, способны ли вы уже это сделать.   -  person Sebastian Mach    schedule 24.11.2011
comment
@phresnel Я думаю, что ваше определение компетентности в программировании исключает большинство студентов университетов, специализирующихся в области компьютерных наук; от большинства из них ожидается, что они пройдут курс программирования операционных систем.   -  person haziz    schedule 06.04.2015
comment
уметь программировать — это не то же самое, что компетентность в программировании. Сначала я писал игры и прочее, они работали хорошо, но сейчас w.r.t. хороший стиль программирования и идиоматичность, я бы оценил их как неудачные.   -  person Sebastian Mach    schedule 07.04.2015


Ответы (5)


Я бы выбрал маршрут Minix только из-за моего личного опыта с ним. Minix очень прост и написан с образовательной точки зрения. С другой стороны, ядро ​​​​Linux существует уже очень давно и поэтому сильно оптимизировано. Не думаю, что это хорошее начало.

Я бы не слишком беспокоился о том, какая версия миникса. Концепция остается прежней. В более новых версиях вы можете запустить X на нем, что может быть полезно, но в то же время добавляет сложности. Просто выберите ту версию, в которой вы найдете хорошую книгу.

person Yuri    schedule 24.11.2011
comment
На этот раз это только Linux, а не GNU/Linux, я думаю :) - person Sebastian Mach; 24.11.2011
comment
@phresnel хм, не уверен, GNU Hurd тоже ядро, верно? Таким образом, GNU/Linux в данном случае будет означать ядро ​​GNU или ядро ​​​​Linux. Верно? - person Yuri; 24.11.2011
comment
Linux — это ядро, GNU/Linux — это ядро ​​Linux в сочетании с инструментами GNU. GNU Hurd — это и ядро, и инструменты, созданные FSF. - person Some programmer dude; 24.11.2011
comment
Я так понимаю, он хочет изучать ядра. Ото, я пропустил, когда Хазиз сказал «GNU/Linux». Разве тогда это не будет GNU/Minux против GNU/Linux против...? О, это сбивает с толку при недостатке кофеина. - person Sebastian Mach; 24.11.2011
comment
Я набрал GNU/Linux по привычке, большая часть того, что я буду изучать, — это ядро ​​​​Linux, хотя я хотел бы также рассмотреть некоторые из основных утилит GNU, таких как gcc, gdb и GNU Make, в какой-то момент, возможно, позже. Я пока не готов заняться дизайном компилятора, по крайней мере пока не буду заниматься ядром. Если я решу изучить ядро ​​Linux, я также могу выбрать более старую версию (?? 2.4 или даже намного раньше), чтобы упростить ее. Это будет зависеть от того, какую книгу или ресурс я выберу, поскольку я, скорее всего, попытаюсь сопоставить версию используемого ядра. - person haziz; 24.11.2011
comment
Minix также существует уже давно... но над Linux работали больше. - person Prof. Falken; 14.12.2011
comment
Миникс был первым. Над ним много работали.. Но по замыслу он был небольшим. Это то, чему Линус научился, это отличное начало. - person baash05; 26.03.2012

Операционные системы: проектирование и реализация охватывает Minix, поэтому может хороший аргумент про Minix.

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

Я бы выбрал Миникс.

(с другой стороны, у O'Reilly есть несколько книг по Linux, но я думаю, что я бы все равно остановился на Minix, взяв эту фат-книгу в качестве справочника)

person Sebastian Mach    schedule 24.11.2011
comment
+1 за книгу - она ​​очень хорошо структурирована, этой книгой я тоже пользовался, единственная проблема заключалась в том, что у меня было второе издание (для Minix 2), а не для Minix 3. - person Zoltán; 24.11.2011
comment
Меня привлекает Minix из-за книги Таненбаума и истории его использования в качестве учебного пособия. Отчасти поэтому я задал вопрос, хотя я использую Linux каждый день. - person haziz; 24.11.2011

На стажировке мне пришлось изменить драйвер жесткого диска в Minix, чтобы он обслуживал запросы по алгоритму лифта, а не по принципу «первым пришел — первым обслужен». Я должен был сделать это в Minix 2, но я хотел сделать это в Minix 3, потому что мне не нравятся старые технологии.

За те 2 месяца, что я над ним работал, больше всего расстроило то, что Minix 3 компилировался в VMWare на ноутбуке с процессором I5, 4 Гб оперативной памяти под управлением Windows 7 примерно за 20 минут. Наконец, через 2 месяца я сдался. на Minix 3 и переключился на Minix 2, который скомпилировался примерно за 20 с.

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

Скажу лишь, что в то время я только что получил степень магистра компьютерных наук и имел 5-летний интенсивный опыт программирования на C (просто чтобы вы не подумали, что я программист-самоучка, который только что решил перейти к программированию, перепроектировав операционную систему: D)

РЕДАКТИРОВАТЬ: В конце концов, я предлагаю вам попробовать скомпилировать Minix 3, чтобы посмотреть, как это у вас получится. Если вам больше повезет, определенно выберите этот, потому что он имеет более современные концепции ОС, с другой стороны, если вы новичок, вы, вероятно, многому научитесь в Minix 2. Я так и сделал.

person Zoltán    schedule 24.11.2011

Как уже говорили другие авторы, начать работу с Linux может быть сложно, потому что теперь он настолько велик и сложен, что барьер для входа взлетел до небес. Но если вы выберете этот путь, я рекомендую начать с одной небольшой подсистемы и сосредоточиться на ней.

person wages    schedule 24.11.2011

Есть и другие возможности, FreeBSD или даже GNU/Hurd (или даже ваша собственная игрушечная ядро). И это зависит от того, что вы действительно хотите узнать.

Если вы знаете Linux и знаете, как писать драйверы, разумно написать собственный модуль ядра драйвера Linux.

Это также зависит от вашего точного определения операционной системы. Это не обязательно то же самое, что и ядро ОС.

Не все операционные системы «подобны Unix», например. койоты, Кенгуру, ... См. также tunes.org

Книга Дж. Питрата Искусственные существа (совесть сознательной машины) есть интересные идеи о том, какой может быть ОС.

person Basile Starynkevitch    schedule 24.11.2011