Linux kernel 3MIT осень 2017 — различия между версиями

Материал из SEWiki
Перейти к: навигация, поиск
(Подключение к видеоконференции)
(Задание 7)
 
(не показаны 23 промежуточные версии этого же участника)
Строка 7: Строка 7:
 
[https://drive.google.com/open?id=0B-KXDlig5kwVfmNyYWZGYVJsYWFsR1B0WjdIVW16YzRJLVZqNTU5SWNFejdPY0syMzN1RGc Материалы курса + успеваемость]
 
[https://drive.google.com/open?id=0B-KXDlig5kwVfmNyYWZGYVJsYWFsR1B0WjdIVW16YzRJLVZqNTU5SWNFejdPY0syMzN1RGc Материалы курса + успеваемость]
  
Занятия проходят в форме видеоконференций Google Hangouts по субботам.
+
== Инструкция для участников видеоконференции ==
Скорее всего занятия будут начинаться с 12 утра по московскому времени и проводится раз в 2 недели по 2-3 пары в день.
+
К видеоконференции можно будет подключиться из оборудованного класса, находящегося в офисе JetBrains БЦ Таймс, либо можно подключиться из дома, так как специального оборудования для участия не требуется.
+
  
== Подключение к видеоконференции ==
+
=== Создание видеоконференции ===
  
=== Подключение из класса в БЦ Таймс ===
+
* Если в аудитории для видеоконференций в БЦ Таймс к началу лекции находится хотя бы 1 человек, то он должен начать видеоконференцию по [https://docs.google.com/document/d/1b8j0y6b1cyXANRBLTB92fLiK0jhIo3RxRoRruxOEu-s/edit?usp=sharing инструкции] и отправить письмо с ее идентификатором в список рассылки курса au-linux-kernel-autumn-2017@googlegroups.com
TODO
+
* Отсутствие письма в списке рассылки курса к моменту начала занятия + 3 минуты означает, что видеоконференцию должен создать преподаватель. В список рассылки курса он пришлет URL, по которому можно будет подключиться к видеоконференции с личных компьютеров (способ подключения с оборудования в аудитории на данный момент не известен).
  
=== Подключение с домашнего компьютера ===
+
=== Подключение к видеоконференции ===
TODO
+
 
 +
* Если вы находитесь в аудитории БЦ Таймс и конференция создана из нее, то вы уже подключены
 +
* Если вы не находитесь в аудитории БЦ Таймс и конференция создана из нее, то перейдите на личном компьютере по URL <nowiki>https://meet.google.com/CONFERENCE_ID</nowiki>, где CONFERENCE_ID - идентификатор конференции, полученный вами в письме
 +
* Если конференция создана преподавателем, то перейдите на личном компьютере по URL, полученному вами в письме
 +
 
 +
=== Завершение видеоконференции ===
 +
 
 +
Если видеоконференция была создана из аудитории, то нужно выполнить шаги из раздела "Что нужно сделать в конце видеоконференции" [https://docs.google.com/document/d/1b8j0y6b1cyXANRBLTB92fLiK0jhIo3RxRoRruxOEu-s/edit?usp=sharing инструкции]
  
 
== Инструкция по настройке development environment ==
 
== Инструкция по настройке development environment ==
Строка 39: Строка 44:
 
== Правила сдачи заданий ==
 
== Правила сдачи заданий ==
  
- Комитим решение задания в ветку master своего форка. Решение задания должно представлять из себя 1 коммит. Коммит должен модифицировать код задания, находящийся в каталоге tasks/<название_задания>/ репозитория upstream.
+
- Комитим решение задания в ветку master своего форка. Решение задания должно представлять из себя 1 коммит. В общем случае коммит не должен менять стартовый код, идущий вместе с заданием, находящимся в директории tasks/<название_задания>/ репозитория upstream. Коммит должен добавлять ваше решение в стартовый код.  
  
 
- Создаем новый issue. Ставим в качестве assignee преподавателя. Шаблон названия issue:
 
- Создаем новый issue. Ставим в качестве assignee преподавателя. Шаблон названия issue:
Строка 51: Строка 56:
  
 
== Зачет ==
 
== Зачет ==
Тем кто наберет >=70% за практические задания (% выполнения в табличке) автоматом ставится зачет. Если нет автомата, то чтобы получить зачет, нужно будет успешно поговорить с преподавателем о нескольких темах из курса. Также в курсе будут проверочные работы, форма которых будет объявлена позже.
+
Для получения зачета необходимо набрать >=70% за практические задания (% выполнения в табличке), после этого студент допускается к устному зачету, во время которого выставляется зачет за курс. Для получения устного зачета студент должен подготовиться по одной из выбранных им тем и побеседовать о ней с преподавателем, показав, что студент понимает ее. Каждому студенту нужно выбрать тему [https://docs.google.com/spreadsheets/d/1UAoxAF6LvoYJQNpfWUu-D29oHdiftLP_zzvmMgKP5_o/edit?usp=sharing здесь]
 +
 
 +
Время зачета - Суббота 23 декабря 13:30 - 17:30 по Московскому времени.
  
 
== Code style ==
 
== Code style ==
Строка 66: Строка 73:
 
Список общепринятых ошибок:
 
Список общепринятых ошибок:
 
http://elixir.free-electrons.com/linux/latest/source/include/uapi/asm-generic/errno.h
 
http://elixir.free-electrons.com/linux/latest/source/include/uapi/asm-generic/errno.h
 +
 +
== Расписание занятий ==
 +
* Суббота 30 сентября 12:30 - 16:30 по Московскому времени
 +
* Суббота 7 октября 12:30 - 16:30 по Московскому времени
 +
* Суббота 14 октября 12:30 - 16:30 по Московскому времени
 +
* Суббота 28 октября 11:30 - 15:30 по Московскому времени
 +
* Суббота 4 ноября 13:30 - 17:30 по Московскому времени
 +
* Суббота 11 ноября 13:30 - 17:30 по Московскому времени
 +
* Суббота 25 ноября 13:30 - 17:30 по Московскому времени
 +
* Суббота 2 декабря 13:30 - 17:30 по Московскому времени
 +
* Суббота 9 декабря 13:30 - 17:30 по Московскому времени
  
 
== Задания ==
 
== Задания ==
Строка 79: Строка 97:
  
 
Дедлайн: 25.09.2017 00:00
 
Дедлайн: 25.09.2017 00:00
 +
 +
=== Задание 3 ===
 +
Стартовый код и задание (в task.txt):
 +
[https://github.com/eabatalov/au-linux-kernel-autumn-2017/tree/master/tasks/vsd1 ссылка]
 +
 +
Дедлайн: 21.10.2017 00:00
 +
 +
=== Задание 4 ===
 +
Стартовый код и задание (в task.txt):
 +
[https://github.com/eabatalov/au-linux-kernel-autumn-2017/tree/master/tasks/vsd2 ссылка]
 +
 +
Дедлайн: 4.11.2017 00:00
 +
 +
=== Задание 5 ===
 +
Стартовый код и задание (в task.txt):
 +
[https://github.com/eabatalov/au-linux-kernel-autumn-2017/tree/master/tasks/vsd3 ссылка]
 +
 +
Дедлайн: 25.11.2017 00:00
 +
 +
=== Задание 6 ===
 +
Стартовый код и задание (в task.txt):
 +
[https://github.com/eabatalov/au-linux-kernel-autumn-2017/tree/master/tasks/mutex ссылка]
 +
 +
Дедлайн: 9.12.2017 00:00
 +
 +
=== Задание 7 ===
 +
Стартовый код и задание (в task.txt):
 +
[https://github.com/eabatalov/au-linux-kernel-autumn-2017/tree/master/tasks/vsd4 ссылка]
 +
 +
Дедлайн: 23.12.2017 00:00
  
 
[[Category:3 курс. Осень 2017]]
 
[[Category:3 курс. Осень 2017]]

Текущая версия на 02:40, 9 декабря 2017

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

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

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

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

Инструкция для участников видеоконференции

Создание видеоконференции

  • Если в аудитории для видеоконференций в БЦ Таймс к началу лекции находится хотя бы 1 человек, то он должен начать видеоконференцию по инструкции и отправить письмо с ее идентификатором в список рассылки курса au-linux-kernel-autumn-2017@googlegroups.com
  • Отсутствие письма в списке рассылки курса к моменту начала занятия + 3 минуты означает, что видеоконференцию должен создать преподаватель. В список рассылки курса он пришлет URL, по которому можно будет подключиться к видеоконференции с личных компьютеров (способ подключения с оборудования в аудитории на данный момент не известен).

Подключение к видеоконференции

  • Если вы находитесь в аудитории БЦ Таймс и конференция создана из нее, то вы уже подключены
  • Если вы не находитесь в аудитории БЦ Таймс и конференция создана из нее, то перейдите на личном компьютере по URL https://meet.google.com/CONFERENCE_ID, где CONFERENCE_ID - идентификатор конференции, полученный вами в письме
  • Если конференция создана преподавателем, то перейдите на личном компьютере по URL, полученному вами в письме

Завершение видеоконференции

Если видеоконференция была создана из аудитории, то нужно выполнить шаги из раздела "Что нужно сделать в конце видеоконференции" инструкции

Инструкция по настройке 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 autumn 2017 запрос на проверку <название задания> <Фамилия Имя студента>. Шаблон комментария к issue: <ссылка на коммит в вашем репозитории>

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

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

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

Зачет

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

Время зачета - Суббота 23 декабря 13:30 - 17:30 по Московскому времени.

Code style

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

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

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

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

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

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

Расписание занятий

  • Суббота 30 сентября 12:30 - 16:30 по Московскому времени
  • Суббота 7 октября 12:30 - 16:30 по Московскому времени
  • Суббота 14 октября 12:30 - 16:30 по Московскому времени
  • Суббота 28 октября 11:30 - 15:30 по Московскому времени
  • Суббота 4 ноября 13:30 - 17:30 по Московскому времени
  • Суббота 11 ноября 13:30 - 17:30 по Московскому времени
  • Суббота 25 ноября 13:30 - 17:30 по Московскому времени
  • Суббота 2 декабря 13:30 - 17:30 по Московскому времени
  • Суббота 9 декабря 13:30 - 17:30 по Московскому времени

Задания

Задание 1

Развернуть development environment по инструкции до # !!! END OF HOME TASK !!!

Дедлайн: 5.09.2017 14:30

Задание 2

Стартовый код и задание (в task.txt): ссылка

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

Задание 3

Стартовый код и задание (в task.txt): ссылка

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

Задание 4

Стартовый код и задание (в task.txt): ссылка

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

Задание 5

Стартовый код и задание (в task.txt): ссылка

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

Задание 6

Стартовый код и задание (в task.txt): ссылка

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

Задание 7

Стартовый код и задание (в task.txt): ссылка

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