OS 5SE осень 2017 — различия между версиями

Материал из SEWiki
Перейти к: навигация, поиск
Строка 3: Строка 3:
 
Контакты: <code>[mailto:os-au@osll.ru os-au@osll.ru]</code>
 
Контакты: <code>[mailto:os-au@osll.ru os-au@osll.ru]</code>
  
* [https://github.com/OSLL/os-au-2017 Репозиторий с заданиями и wiki]
 
* [https://stepik.org/course/3636/syllabus Курс домашних заданий]
 
* [https://stepik.org/course/1780/syllabus Курс «Операционные системы»]
 
* [https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-828-operating-system-engineering-fall-2012/lecture-notes-and-readings/ Lecture Notes and Readings]
 
** [https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-828-operating-system-engineering-fall-2012/labs/MIT6_828F12_lab1.pdf lab1]
 
** [https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-828-operating-system-engineering-fall-2012/labs/MIT6_828F12_lab2.pdf lab2]
 
  
* Вот эти курсы и особенно дополнительные модули к ним содержат хорошие источники:
+
* '''[https://github.com/OSLL/os-au-2017 Репозиторий курса на гитхабе]'''
** https://stepik.org/course/253/syllabus
+
** [https://github.com/OSLL/os-au-2017/tree/master/docs Презентации]
** https://stepik.org/course/548/syllabus
+
 
 +
* '''[https://stepik.org/course/3636/syllabus Лабораторные работы]'''
 +
** [https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-828-operating-system-engineering-fall-2012/lecture-notes-and-readings/ Задания лабораторных работ]:
 +
**# [https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-828-operating-system-engineering-fall-2012/labs/MIT6_828F12_lab1.pdf C, Assembly, Tools, and Bootstrapping]
 +
**# [https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-828-operating-system-engineering-fall-2012/labs/MIT6_828F12_lab2.pdf Memory Management]
 +
**# [https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-828-operating-system-engineering-fall-2012/labs/MIT6_828F12_lab3.pdf User Environments]
 +
 
 +
* '''Учебные материалы''' (дополнительные модули содержат хорошие источники):
 +
** [https://stepik.org/course/1780/syllabus «Операционные системы»]
 +
** [https://stepik.org/course/253/syllabus «Введение в архитектуру ЭВМ. Элементы операционных систем»]
 +
** [https://stepik.org/course/548/syllabus «Основы программирования для Linux»]
  
  

Версия 17:18, 4 октября 2017

Преподаватель: Кринкин Кирилл Владимирович

Контакты: os-au@osll.ru




Как запустить vagrant, qemu, и запатчить решение

   sudo vagrant up --provider=docker
   sudo vagrant ssh default

Содержимое conf/env.mk

   QEMU=/usr/bin/qemu-system-i386
   QEMUEXTRA=-curses

Параметр QEMUEXTRA можно не ставить (и так даже лучше); вместо этого нужно запускать QEMU с помощью make qemu-nox - тогда QEMU запустится прямо в вашей консоли и вы не будете страдать.


Если вам не хочется потом каждый раз удалять переменную QEMUEXTRA из гит-диффа, можете создать линку на исполняемый файл под именем qemu:

   sudo ln /usr/bin/qemu-system-i386 /usr/bin/qemu

После этого все будет находиться.


При проблемах с gdb (типа warning: File "/home/vagrant/lab/.gdbinit" auto-loading has been declined by your `auto-load safe-path' set to "$debugdir:$datadir/auto-load:/vagrant/lab/.gdbinit".) действовать так, как он укажет: добавить в файл /home/vargant/.gdbinit одну из двух строк:

   add-auto-load-safe-path /home/vagrant/lab/.gdbinit  
   set auto-load safe-path / 

И так и так работает.


Если у вас проблемы с дублированием букв внутри QEMU, не паникуйте и просто проверьте команды help и kerninfo - скорее всего удваивание букв будет проигнорировано и команды выполнятся.

Для выхода их QEMU используюйте сочетание клавиш ctrl-a x.


Для создания файла с патчем работает следующая схема:

   sudo touch patch
   sudo chmod a+rw patch
   git diff > patch

Совы не то, чем кажутся или The desc field contains the line number and the value contains the code address for the start of that source line: http://www.sourceware.org/gdb/onlinedocs/stabs.html#Line-Numbers


При отправке патчей проверять сначала на своих репозиториях и следить за тем, чтобы концы строк были не ос-специфичными (типа \r\n на винде). С такими различиями патчи не применяются и падают с ошибкой

Можно избежать проблемы с концами строк, если трансферить патч следующим образом:

   vagrant ssh -c  "cat /home/vagrant/lab/patch" | dos2unix > patch

Если вам лень вручную переносить изменения из виртуальной машины в файлы в вашем форкнутом репозитории, можете воспользоваться утилитой patch:

   cd solutions/${вставь_свою_фамилию}/lab1
   patch < your_patch.txt

Скорее всего программа не поймет, где именно лежат ваши измененные файлы, и попросит указать пути к ним. Но это всяко лучше чем руками копировать все это.