Minix против Linux для изучения дизайна операционной системы? - PullRequest
8 голосов
/ 24 ноября 2011

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

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

Если я выберу маршрут Minix, я должен заняться версией 2 (проще?) Или версией 3?

Ответы [ 5 ]

16 голосов
/ 24 ноября 2011

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

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

7 голосов
/ 24 ноября 2011

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

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

Я бы пошел на Minix.

(с другой стороны, у О'Рейли есть несколько книг по Linux; но я думаю, что я бы все-таки пошел с Minix, имея эту справочную книгу в качестве справочной)

5 голосов
/ 24 ноября 2011

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

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

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

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

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

0 голосов
/ 24 ноября 2011

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

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

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

Не все операционные системы "Unix-подобны", например coyotos , Kangaroo ,... См. Также tunes.org

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

0 голосов
/ 24 ноября 2011

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

...