2012-02-09 2 views
0

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

Я не уверен, правильно ли я сформулировал свой вопрос, дайте мне знать. Пожалуйста, предложите.

ответ

0

Вы задали довольно загруженный вопрос. Я рекомендую вам начать с учебника и работать оттуда. Книга почти всегда Computer Science студент использует это:

Operating System Concepts

+0

Я читал that.but, это определенно не запихивает все эти детали низкого уровня правильно? –

1

Это, вероятно, лучше просто начать читать код для конкретных операционных систем:

kernel/sched.c Функция Linux ядра в sched_fork(), вероятно, как хорошее место как и любой, чтобы начать чтение; он начинает новую задачу, поэтому я считаю, что он дает вам хороший обзор внутренних функций планировщика и управления памятью задач.

Ядро FreeBSD sys/kern/sched.c function sched_switch() непосредственно меняет местами между текущим процессом и следующим процессом; это, вероятно, легче читать, чем вариант Linux.

Другие операционные системы могут по-разному обрабатывать контекстные переключатели. (Один из моих менеджеров worked on an operating system that replaced the process table generic code with code to jump to the exact next task that would be scheduled, среди других прохладных времени выполнения оптимизаций данных конкретного.)

FXR website делает его очень легко следовать кода в различных операционных системах. (Спасибо, Роберт, если вы читаете!) Из списка FXR я бы предложил изучить Plan9, Minix и OpenSolaris - они дальше от дерева FreeBSD, чем другие связанные с BSD дистрибутивы.

+0

Хорошо выглядит полезно. Спасибо. Вы идете по комментариям и понимаете логику или действительно просматриваете всю логику кода? Боюсь, я не могу все понять. Пожалуйста, предложите несколько вещей/статей, подобных этому. Я действительно хочу хорошо разбираться в этих темах. –

+1

Обновлен, чтобы дать ссылку на код FreeBSD тоже - это очень хороший код. Когда дело доходит до комментариев против кода, я боюсь, вам нужно будет использовать оба. Разработчики ядра Linux очень сильно убеждены, что код должен стоять сам по себе и использовать комментарии только для указания тонкостей. (Это довольно сильный отказ от идеалов программирования Knuth для детальной встроенной документации.) Если вы посмотрите только на комментарии, вы пропустите основную часть, но если вы пропустите комментарии, вы никогда не поймете, почему некоторые вещи как они ... – sarnold

0

Начните с руководств по программированию системы Intel 3A, если вы хотите, чтобы понимание уровня h/w. Затем перейдите к исходному коду linux kernel и, как сказано sarnold.

Смежные вопросы