Linux kernel 2016 — различия между версиями

Материал из SEWiki
Перейти к: навигация, поиск
(Новая страница: «Лектор - Евгений Александрович Баталов (<b>eabatalov89 sobaka gmail.com</b>) Практика - Евгений Александ…»)
 
(Зачет)
 
(не показано 20 промежуточных версий этого же участника)
Строка 9: Строка 9:
 
Занятия проходят по четвергам с 16 до 18-19, аудитория 206.
 
Занятия проходят по четвергам с 16 до 18-19, аудитория 206.
  
== Примерная инструкция по настройке development environment ==
+
== Инструкция по настройке development environment ==
TODO
+
[https://drive.google.com/open?id=0B-KXDlig5kwVLXQ3bkwzLUdYUW8 Инструкция]
  
 
== Репозиторий с кодом ядра и заданиями ==
 
== Репозиторий с кодом ядра и заданиями ==
[TODO TODO:Репозиторий] Далее будем называть его upstream.
+
[https://github.com/eabatalov/au-linux-kernel-spring-2016 Репозиторий] далее будем называть его upstream.
 
В upstream репозитории в директории linux лежат исходники ядра Linux, которыми мы будем пользоваться во время курса. По ходу курса в директории tasks будут выкладываться задания.
 
В upstream репозитории в директории linux лежат исходники ядра Linux, которыми мы будем пользоваться во время курса. По ходу курса в директории tasks будут выкладываться задания.
  
Строка 36: Строка 36:
 
- Ждем комментариев и оценки от преподавателя в ответе на issue, а также комментариев по коду в коммите.
 
- Ждем комментариев и оценки от преподавателя в ответе на issue, а также комментариев по коду в коммите.
  
- Оценка выставляется от 0 до 5 баллов.
+
- Оценка работы ставится в процентах
  
 
- issues, созданные позже дедлайна по-умолчанию не проверяются.
 
- issues, созданные позже дедлайна по-умолчанию не проверяются.
  
 
== Зачет ==
 
== Зачет ==
Тем кто наберет >=70% от максимально возможных баллов автоматом ставится зачет. Если нет автомата, то чтобы получить зачет, нужно будет успешно поговорить с преподавателем о нескольких темах из курса.
+
Тем кто наберет >=70% по курсу (общий балл в табличке), и кто имеет хотя бы по одной теоритической контрольной >= 60% автоматом ставится зачет. Если нет автомата, то чтобы получить зачет, нужно будет успешно поговорить с преподавателем о нескольких темах из курса.
 +
 
 +
12.05 - контрольная только по теории + лекция
 +
 
 +
19.05 - зачет + лекция
  
 
== Code style ==
 
== Code style ==
 
Лучше придерживаться стиля, который используется в коде заданий. При желании можно писать по-другому, главное не меняйте правила формирования имен:
 
Лучше придерживаться стиля, который используется в коде заданий. При желании можно писать по-другому, главное не меняйте правила формирования имен:
  
- upper case только для макросов и констант
+
- upper case только для констант и макросов-констант (макросов, не выглядящих как вызов функции)
  
 
- имена функций, типов пишутся в lower case + подчеркивание между словами
 
- имена функций, типов пишутся в lower case + подчеркивание между словами
Строка 54: Строка 58:
 
Если ошибка не позволяет нормально функционировать ядру, то нужно вызвать функцию panic().
 
Если ошибка не позволяет нормально функционировать ядру, то нужно вызвать функцию panic().
  
== Задание 1 ==
+
Список общепринятых ошибок:
Coming soon...
+
http://lxr.free-electrons.com/source/include/uapi/asm-generic/errno-base.h#L4
 +
 
 +
== Задания ==
 +
=== Задание 1 ===
 +
Выполните часть инструкции по установки development environment до комментария !!! END OF HOME TASK !!!.
 +
[https://drive.google.com/file/d/0B-KXDlig5kwVLXQ3bkwzLUdYUW8/view?usp=sharing инструкция]
 +
 
 +
Дедлайн: 18.02.2016 16:00
 +
 
 +
=== Задание 2 ===
 +
[https://github.com/eabatalov/au-linux-kernel-spring-2016/tree/master/tasks/linked_lists ссылка]
 +
 
 +
Дедлайн: 10.03.2016 00:00
 +
 
 +
=== Задание 3 ===
 +
[https://github.com/eabatalov/au-linux-kernel-spring-2016/tree/master/tasks/vsd1 ссылка]
 +
 
 +
Дедлайн: 24.03.2016 00:00
 +
 
 +
=== Задание 4 ===
 +
[https://github.com/eabatalov/au-linux-kernel-spring-2016/tree/master/tasks/vsd2 ссылка]
 +
 
 +
Дедлайн: 7.04.2016 00:00
 +
 
 +
=== Задание 5 ===
 +
[https://github.com/eabatalov/au-linux-kernel-spring-2016/tree/master/tasks/vsd3 ссылка]
 +
 
 +
Дедлайн: 28.04.2016 00:00
 +
 
 +
=== Задание 6 ===
 +
[https://github.com/eabatalov/au-linux-kernel-spring-2016/tree/master/tasks/mutex ссылка]
 +
 
 +
Дедлайн: 17.05.2016 00:00
  
 
[[Category:5 курс. Весна 2016]]
 
[[Category:5 курс. Весна 2016]]

Текущая версия на 16:14, 5 мая 2016

Лектор - Евгений Александрович Баталов (eabatalov89 sobaka gmail.com)

Практика - Евгений Александрович Баталов

Вступайте в google группу. Она же список рассылки курса.

Материалы курса + успеваемость

Занятия проходят по четвергам с 16 до 18-19, аудитория 206.

Инструкция по настройке development environment

Инструкция

Репозиторий с кодом ядра и заданиями

Репозиторий далее будем называть его upstream. В upstream репозитории в директории linux лежат исходники ядра Linux, которыми мы будем пользоваться во время курса. По ходу курса в директории tasks будут выкладываться задания.

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

Рекомендую при синхронизации выполнять не merge, а rebase. Это не обязательно, но позволит вам иметь чистую историю.

Добавьте преподавателя в свой репозиторий в качестве collaborator. Это позволит заводить на него issues и комментировать код прямо в коммитах. Ник преподавателя на github: eabatalov.

Чтобы быстро узнавать о том, что ваши задания проверены, рекомендую настроить email оповещения в вашем форке.

Для сливания нескольких коммитов в 1 используйте git rebase -i origin/master с командой squash. Подробнее здесь

Правила сдачи заданий

- Комитим решение задания в ветку master своего форка. Решение задания должно представлять из себя 1 коммит. Коммит должен модифицировать код задания, находящийся в каталоге tasks/<название_задания>/ репозитория upstream.

- Создаем новый issue. Ставим в качестве assignee преподавателя. Шаблон названия issue: AU Linux kernel 2016 запрос на проверку <название задания> <Фамилия Имя студента>. Шаблон комментария к issue: <ссылка на коммит в вашем репозитории>

- Ждем комментариев и оценки от преподавателя в ответе на issue, а также комментариев по коду в коммите.

- Оценка работы ставится в процентах

- issues, созданные позже дедлайна по-умолчанию не проверяются.

Зачет

Тем кто наберет >=70% по курсу (общий балл в табличке), и кто имеет хотя бы по одной теоритической контрольной >= 60% автоматом ставится зачет. Если нет автомата, то чтобы получить зачет, нужно будет успешно поговорить с преподавателем о нескольких темах из курса.

12.05 - контрольная только по теории + лекция

19.05 - зачет + лекция

Code style

Лучше придерживаться стиля, который используется в коде заданий. При желании можно писать по-другому, главное не меняйте правила формирования имен:

- upper case только для констант и макросов-констант (макросов, не выглядящих как вызов функции)

- имена функций, типов пишутся в lower case + подчеркивание между словами

Обработка ошибок

Все ошибки нужно обработать. В процессе обработки ошибки нужно освободить все более не используемые ресурсы. Далее нужно перейти в безопасное состояние, нахождение в котором не повлечет новых ошибок. Нужно сообщить об ошибке уровню выше, если он присутствует (например userspace'у или вызывающей функции). Если ошибка не позволяет нормально функционировать ядру, то нужно вызвать функцию panic().

Список общепринятых ошибок: http://lxr.free-electrons.com/source/include/uapi/asm-generic/errno-base.h#L4

Задания

Задание 1

Выполните часть инструкции по установки development environment до комментария !!! END OF HOME TASK !!!. инструкция

Дедлайн: 18.02.2016 16:00

Задание 2

ссылка

Дедлайн: 10.03.2016 00:00

Задание 3

ссылка

Дедлайн: 24.03.2016 00:00

Задание 4

ссылка

Дедлайн: 7.04.2016 00:00

Задание 5

ссылка

Дедлайн: 28.04.2016 00:00

Задание 6

ссылка

Дедлайн: 17.05.2016 00:00