Содержание для класса операционных систем Linux

Получите клавиатуру Kinesis Essential. Клавиши раскладываются лучше для быстрого набора текста.

34
задан Sweeney 16 June 2014 в 09:30
поделиться

9 ответов

Уровень виртуальной файловой системы абсолютно необходим для любого класса операционной системы Linux.

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

13
ответ дан 27 November 2019 в 16:50
поделиться

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

Если бы я снова был в университете, я, безусловно, был бы признателен за более глубокие уроки о примитивах синхронизации, параллелизме и так далее ... это сложные вопросы, к которым труднее подойти без надлежащего руководства. Помню, я был на выступлении Пола «Расти» Рассела о спин-блокировках и других примитивах синхронизации, который был абсолютно крутым, может быть, вы могли бы найти его на YouTube и позаимствовать некоторые идеи.

4
ответ дан 27 November 2019 в 16:50
поделиться

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

Вот список некоторых довольно хороших проектов / концепций, которые, на мой взгляд, должны быть включены в любой класс операционных систем:

  • Разница между пространством пользователя и пространством ядра
  • Управление процессами (например, fork () , exec () и т. д.)
  • Напишите небольшую оболочку, демонстрирующую знание fork () и exec ()
  • Как работают системные вызовы, то есть как мы переключаемся из пользовательского режима в режим ядра
  • Добавить простой системный вызов ядра Linux, и как планирование происходит в ядре Linux
  • . Измените планировщик задач Linux, добавив свою собственную политику планирования
  • Что такое разбиение по страницам? Как это работает? Почему у нас пейджинг? Как это работает в ядре Linux?
  • Добавьте системный вызов к ядру Linux, который, учитывая адрес, сообщит вам, присутствует ли этот адрес или он был заменен (или какое-либо другое назначение, связанное с разбиением на страницы).
  • Файловые системы - что это такое? Почему они существуют? Как они работают в ядре Linux?
  • Алгоритмы планирования работы дисков - почему они существуют? Кто они такие?
  • Добавить VFS в ядро ​​Linux
5
ответ дан 27 November 2019 в 16:50
поделиться

Ну, я только что закончил свой курс ОС в этом семестре, поэтому подумал, что присоединюсь.

Я был немного расстроен тем, что мы фактически не поигрались с самой ОС мы просто занимались системным программированием. Я бы порекомендовал провести лабораторные работы над чем-то, что есть в самой ОС, и это похоже на то, что вы хотите сделать.

Одна лабораторная работа, которая мне понравилась и показалась мне полезной, заключалась в написании наших собственных процедур malloc / free . Это было сложно, но в то же время довольно занимательно.

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

4
ответ дан 27 November 2019 в 16:50
поделиться

Мой список :

  1. Что заботит операционная система: Абстракция и расширение физического компьютера и управление ресурсами . . 1285] Как работает процесс сборки , т.е. как имплантируется специфичный для архитектуры / машинный код
  2. Как работают системные вызовы и как модули могут связываться
  3. Управление памятью / Виртуальная память / Подкачка и все остальное
  4. Как процессы рождаются, живут и умирают в POSIX и других системах
  5. пользовательское пространство и потоки ядра и в чем разница между процессами / потоками
  6. Почему монолитный дизайн ядра становится утомительным и каковы альтернативы
  7. Планирование (и некоторые из альтернативных / специфичных для домена планировщиков)
  8. Ввод / вывод , Разработка драйверов и то, как они динамически загружаются
  9. Ранние этапы загрузки и то, что ядро ​​делает для настройки среды
  10. Проблемы с часами, системами без mmu и т. Д.
  11. ... Я мог бы продолжить ...
  12. Чуть не забыл IPC и Unix "все является файлом" проектные решения
  13. POSIX, почему он существует, почему не должен

В в конце просто заставьте их пройти через современные операционные системы tanenbaum , а также провести тематические исследования некоторых других ядер, таких как установка микроядра Mach / Hurd и, возможно, некоторые распределенные и экзоядные вещи.

Дайте широкий взгляд на прошлое Linux. Я также интересуюсь

Для тех, кто очень увлечен , история операционных систем и их причины.

Я мог бы продолжить ...
  • Чуть не забыл IPC и Unix "все является файлом" проектные решения
  • POSIX, почему он существует, почему не должен
  • В конце концов, просто получите их изучить современные операционные системы Таненбаума , а также провести тематические исследования некоторых других ядер, таких как установка микроядра Mach / Hurd и, возможно, некоторых распределенных и экзоядерных вещей.

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

    Для тех, кто супергики , история операционных систем и почему они такие, какие есть.

    Я мог бы продолжить ...
  • Чуть не забыл IPC и Unix "все является файлом" проектные решения
  • POSIX, почему он существует, почему не должен
  • В конце концов, просто получите их изучить современные операционные системы Таненбаума , а также провести тематические исследования некоторых других ядер, таких как установка микроядра Mach / Hurd и, возможно, некоторых распределенных и экзоядерных вещей.

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

    Для тех, кто супергики , история операционных систем и почему они такие, какие есть.

    s современные операционные системы , а также проведу тематические исследования некоторых других ядер, таких как установка микроядра Mach / Hurd и, возможно, некоторых распределенных и экзоядерных вещей.

    Я также хочу дать более широкий взгляд на прошлое Linux, я думаю

    Для тех, кто super geeky , история операционных систем и почему они такие, какие есть.

    s современные операционные системы , а также проведу тематические исследования некоторых других ядер, таких как установка микроядра Mach / Hurd и, возможно, некоторых распределенных и экзоядерных вещей.

    Я также хочу дать более широкий взгляд на прошлое Linux, я думаю

    Для тех, кто super geeky , история операционных систем и почему они такие, какие есть.

    21
    ответ дан 27 November 2019 в 16:50
    поделиться

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

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

    Еще одна вещь, которую я хотел бы отметить, - это то, почему я не сохранил знания из класса. неорганизованность. В каждую неделю темы появлялись из ниоткуда, а дорожной карты не было. Придайте материалу логическую последовательность. Психическая организация - ключ к сохранению знаний.

    4
    ответ дан 27 November 2019 в 16:50
    поделиться

    Еще одна хорошая тема (или, возможно, упражнение для студентов) - виртуализация. Особенно "lguest" Расти Рассела, который разработан как простое введение в то, что требуется для виртуализации операционной системы. Документы тоже хорошо читаются.

    4
    ответ дан 27 November 2019 в 16:50
    поделиться

    Сетевая подсистема также весьма интересна. Вы можете проследить за пакетом, когда он идет от системного вызова сокета к проводу и наоборот.

    Забавные назначения могут быть такими:

    • создать межсетевой экран с полным состоянием с помощью netfilter
    • создать балансировщик нагрузки HTTP
    • разработать и реализовать простой протокол туннелирования
    3
    ответ дан 27 November 2019 в 16:50
    поделиться

    Ввод-вывод с отображением памяти и разделение 1g / 3g против 2g / 2g между адресным пространством ядра и адресуемым пространством пользователя в 32-битных операционных системах.

    Ограничения 32-битной архитектуры на размер жесткого диска и что это означает для проектирования файловых систем.

    Фактически, просто все плюсы и минусы перехода на 64-битную версию, что это означает и почему, а также история и почему еще не описаны.

    1
    ответ дан 27 November 2019 в 16:50
    поделиться
    Другие вопросы по тегам:

    Похожие вопросы: