КС:2015:Проект:xv6 — различия между версиями
Romaha (обсуждение | вклад) м (→Итоговая оценка) |
Romaha (обсуждение | вклад) |
||
(не показано 9 промежуточных версии этого же участника) | |||
Строка 21: | Строка 21: | ||
== Критерии оценивания == | == Критерии оценивания == | ||
− | === Первая контрольная точка (24 октября 2015 г.) === | + | === Первая контрольная точка (24 октября 2015 г. 10:20) === |
Необходимо иметь приватный git-репозиторий на [https://bitbucket.org bitbucket.org] с проектом, в который приглашен ментор (в качестве администратора). В репозитории должно быть: | Необходимо иметь приватный git-репозиторий на [https://bitbucket.org bitbucket.org] с проектом, в который приглашен ментор (в качестве администратора). В репозитории должно быть: | ||
* 0-й коммит, являющийся копией исходного проекта xv6-public. | * 0-й коммит, являющийся копией исходного проекта xv6-public. | ||
* Коммит с реализацией helloworld, запускаемой внутри виртуальной машины с xv6. | * Коммит с реализацией helloworld, запускаемой внутри виртуальной машины с xv6. | ||
− | === Вторая контрольная точка ( | + | * Файл README.md, содержащий: |
+ | ** фамилию и имя студента, | ||
+ | ** номер группы, | ||
+ | ** краткое описание задач ко '''2ой контрольной точке''', написанное самостоятельно и более развернуто (так, как Вы сами понимаете эти задачи). | ||
+ | |||
+ | === Вторая контрольная точка (21 ноября 2015 г. 10:20) === | ||
Необходимо выполнить следующее: | Необходимо выполнить следующее: | ||
* Реализовать расширение системного вызова ''exec()'' для исполняемых скриптовых файлов, продемонстрировать его использование. | * Реализовать расширение системного вызова ''exec()'' для исполняемых скриптовых файлов, продемонстрировать его использование. | ||
* Реализовать системный вызов ''mkfifo()''. | * Реализовать системный вызов ''mkfifo()''. | ||
+ | * Обновить файл README.md информацией о решении задач данной КТ. | ||
+ | * Обновить файл README.md информацией о выбранных к решению задач из списка к '''Итоговой оценке''' с более развернутым описанием (так, как Вы сами понимаете эти задачи и решение). | ||
=== Итоговая оценка === | === Итоговая оценка === | ||
− | * '''3 балла (базовая часть)'''. Реализованы требования на зачёт в конце второй контрольной точки ( | + | * '''3 балла (базовая часть)'''. Реализованы требования на зачёт в конце второй контрольной точки (21 ноября 2015 г.). |
* '''+2 балла'''. Добавление прав пользователей (без групп пользователей), реализация входа в систему по паролю (хранить не пароль, а его хеш), безопасная смена пароля пользователя. | * '''+2 балла'''. Добавление прав пользователей (без групп пользователей), реализация входа в систему по паролю (хранить не пароль, а его хеш), безопасная смена пароля пользователя. | ||
* '''+2 балла'''. Реализация механизма ненадежных сигналов. | * '''+2 балла'''. Реализация механизма ненадежных сигналов. | ||
Строка 40: | Строка 47: | ||
Максимальный итоговый балл: 10. | Максимальный итоговый балл: 10. | ||
+ | |||
+ | === Help === | ||
+ | * [https://goo.gl/Fa0n9m Материалы] |
Текущая версия на 19:51, 25 ноября 2015
Содержание
Что это за проект
Введение
xv6 — современная реализация 6-й версии операционной системы UNIX для архитектуры x86, написанная на ANSI C. Она используется в учебных целях в MIT и других университетах США и Европы в курсах, связанных с проектированием операционных систем. ОС xv6 - достаточно простая система (около 9000 строк кода с подробными комментариями), чтобы изучить её за один семестр, но при этом она содержит все основные идеи и архитектуру UNIX. Подробнее можно почитать на странице курса, а также в справочном руководстве [ PDF ].
Что требуется
Требуется в существующей реализации ОС доработать некоторый набор функциональных возможностей, представленных в современных POSIX-совместимых системах.
Чему вы научитесь
Работе с эмуляторами физических машин, писать код и отлаживать в режиме ядра, добавлять новые системные вызовы.
Начальные требования
1. Владение техническим английским языком.
2. Умение разрабатывать программы на Cи или C++.
Критерии оценивания
Первая контрольная точка (24 октября 2015 г. 10:20)
Необходимо иметь приватный git-репозиторий на bitbucket.org с проектом, в который приглашен ментор (в качестве администратора). В репозитории должно быть:
- 0-й коммит, являющийся копией исходного проекта xv6-public.
- Коммит с реализацией helloworld, запускаемой внутри виртуальной машины с xv6.
- Файл README.md, содержащий:
- фамилию и имя студента,
- номер группы,
- краткое описание задач ко 2ой контрольной точке, написанное самостоятельно и более развернуто (так, как Вы сами понимаете эти задачи).
Вторая контрольная точка (21 ноября 2015 г. 10:20)
Необходимо выполнить следующее:
- Реализовать расширение системного вызова exec() для исполняемых скриптовых файлов, продемонстрировать его использование.
- Реализовать системный вызов mkfifo().
- Обновить файл README.md информацией о решении задач данной КТ.
- Обновить файл README.md информацией о выбранных к решению задач из списка к Итоговой оценке с более развернутым описанием (так, как Вы сами понимаете эти задачи и решение).
Итоговая оценка
- 3 балла (базовая часть). Реализованы требования на зачёт в конце второй контрольной точки (21 ноября 2015 г.).
- +2 балла. Добавление прав пользователей (без групп пользователей), реализация входа в систему по паролю (хранить не пароль, а его хеш), безопасная смена пароля пользователя.
- +2 балла. Реализация механизма ненадежных сигналов.
- +2 балла. Реализация виртуального каталога (/proc).
- +2 балла. Реализация легковесных процессов, или нитей (threads) с механизмами управления и синхронизации.
- +1 балл. Реализация межпроцессных бинарных семафоров (mutex).
- +(2+) балла. Реализация системного вызова mmap(). Количество баллов будет зависеть от полноты реализации mmap().
Максимальный итоговый балл: 10.