КС:2015:Проект:xv6 — различия между версиями

Материал из Wiki - Факультет компьютерных наук
Перейти к: навигация, поиск
(Описана тема проектного семинара xv6)
 
м (Уточнение требований)
Строка 21: Строка 21:
 
== Критерии оценивания ==
 
== Критерии оценивания ==
  
=== Требования на зачет в конце 1-го модуля ===
+
=== Первая контрольная точка (24 октября 2015 г.) ===
Реализовать расширение системного вызова ''exec()'' для исполняемых скриптовых файлов, продемонстрировать его использование. Реализован системный вызов ''mkfifo()''.
+
Необходимо иметь приватный git-репозиторий на [https://bitbucket.org bitbucket.org] с проектом, в который приглашен ментор (в качестве администратора). В репозитории должно быть:
 +
* 0-й коммит, являющийся копией исходного проекта xv6-public.
 +
* Коммит с реализацией helloworld, запускаемой внутри виртуальной машины с xv6.
 +
=== Вторая контрольная точка (14 ноября 2015 г.) ===
 +
Необходимо выполнить следующее:
 +
* Реализовать расширение системного вызова ''exec()'' для исполняемых скриптовых файлов, продемонстрировать его использование.  
 +
* Реализовать системный вызов ''mkfifo()''.
  
 
=== Итоговая оценка ===
 
=== Итоговая оценка ===

Версия 12:48, 23 октября 2015

Что это за проект

Введение

xv6 — современная реализация 6-й версии операционной системы UNIX для архитектуры x86, написанная на ANSI C. Она используется в учебных целях в MIT и других университетах США и Европы в курсах, связанных с проектированием операционных систем. ОС xv6 - достаточно простая система (около 9000 строк кода с подробными комментариями), чтобы изучить её за один семестр, но при этом она содержит все основные идеи и архитектуру UNIX. Подробнее можно почитать на странице курса, а также в справочном руководстве [ PDF ].

Что требуется

Требуется в существующей реализации ОС доработать некоторый набор функциональных возможностей, представленных в современных POSIX-совместимых системах.

Чему вы научитесь

Работе с эмуляторами физических машин, писать код и отлаживать в режиме ядра, добавлять новые системные вызовы.

Начальные требования

1. Владение техническим английским языком.

2. Умение разрабатывать программы на Cи или C++.

Критерии оценивания

Первая контрольная точка (24 октября 2015 г.)

Необходимо иметь приватный git-репозиторий на bitbucket.org с проектом, в который приглашен ментор (в качестве администратора). В репозитории должно быть:

  • 0-й коммит, являющийся копией исходного проекта xv6-public.
  • Коммит с реализацией helloworld, запускаемой внутри виртуальной машины с xv6.

Вторая контрольная точка (14 ноября 2015 г.)

Необходимо выполнить следующее:

  • Реализовать расширение системного вызова exec() для исполняемых скриптовых файлов, продемонстрировать его использование.
  • Реализовать системный вызов mkfifo().

Итоговая оценка

  • 3 балла (базовая часть). Реализованы требования на зачёт в конце первого модуля.
  • +2 балла. Добавление прав пользователей (без групп пользователей), реализация входа в систему по паролю (хранить не пароль, а его хеш), безопасная смена пароля пользователя.
  • +2 балла. Реализация механизма ненадежных сигналов.
  • +2 балла. Реализация виртуального каталога (/proc).
  • +2 балла. Реализация легковесных процессов, или нитей (threads) с механизмами управления и синхронизации.
  • +1 балл. Реализация межпроцессных бинарных семафоров (mutex).
  • +(2+) балла. Реализация системного вызова mmap(). Количество баллов будет зависеть от полноты реализации mmap().

Максимальный итоговый балл: 10.