Тематика курсовых по системному ПО и ОС
От: LaptevVV Россия  
Дата: 11.07.14 08:01
Оценка:
В этом годе мне навесили еще одну курсовую.
По дисциплине "Системное ПО и ОС".
Уважаемый народ, кто какие темы может предложить?

С учетом того, что первая лаба по системному ПО выглядит так:

Написать интерпретатор виртуального компьютера по заданной архитектуре.

Требования к реализации
1. Объектно-ориентированный подход.
2. Модульный подход.
Процессор – отдельный класс, разделение на интерфейс и реализацию;
Выполнение команд – вызов функтора (не использовать оператор-переключатель!)
Память – динамический массив – поле-указатель в классе
Команды – иерархия классов-функторов;
Базовый класс – абстрактный класс Command с перегруженной операцией operator()
3. Во всех вариантах реализовать:
– целую арифметику знаковую и беззнаковую;
– дробную арифметику
– переходы
– команды ввода-вывода данных
Разработать и реализовать самостоятельно необходимые команды пересылки, если требуется по архитектуре.
-----------------------------------------------------------------------------------------------------------------
4. Тестирование виртуальной машины выполняет не ее разработчик.
Для тестировщика будут отдельно поставлены требования по написанию программ для тестируемой виртуальной машины с целью проверки ее работоспособности.

5. Разработанная и протестированная виртуальная машина будет передана на доработку другому программисту с целью дополнить систему команд новыми командами:
– битовые операции
– сдвиги
– двоично-десятичная арифметика

Фактически тут три лабы.
Тестирование — для того, чтобы учились тестировать чужой код. Будем писать все это в некоторый баг-трекер...
Доработка — чтобы а) учились анализировать чужой код; б) чтобы при написании своего думали о последователях...

Еще для виртуальной машины нужно написать загрузчик программ, а для этого — продумать структуру загружаемого кода...
Потом будет написание транслятора с ассемблера — с генерацией двоичного кода и соответственно, переписывания загрузчика.
Еще будет отладчик. Сначала командный, потом доделать его в оконнный — опять не сам, а передав другому.

И еще хотелось бы тут же втолкнуть Unit-тестирование.
Только не понимаю пока, где.
В кусовой хотелось бы такой раздел завести: Unit-тесты.
Но не всякая прога для этого подходит.
Поэтому прошу кидать идеи.
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Re: Тематика курсовых по системному ПО и ОС
От: ArtK  
Дата: 11.07.14 08:33
Оценка: 16 (2)
Здравствуйте, LaptevVV, Вы писали:

1. Реализовать различные алгоритмы кеширования — LRU/LFU/MQ/2Q/ACR/FIFO. Для некоторых алгоритмов нет описания в учебниках/книжках и нужно будет прочитать соответствующие статьи. Можно взять реальные логи запросов в какую-нибудь СУБД и предложить алгоритм, которые даёт наибольший кэш хит на данном конкретном ворклоаде.
2. Реализовать планировщик дискового ввода-вывода, который не позволяет деградировать запросам на произвольное чтение с диска на фоне последовательного чтения с диска. Задача вполне прикладная, т.к. в различных хранилищах часто возникает ситуация, когда идёт какая-то дисковая активность в фоне, при этом нужно обслуживать запросы к базе.
Re: Тематика курсовых по системному ПО и ОС
От: Isscander  
Дата: 11.07.14 17:55
Оценка: 9 (1)
Здравствуйте, LaptevVV, Вы писали:

LVV>В этом годе мне навесили еще одну курсовую.

LVV>По дисциплине "Системное ПО и ОС".
LVV>Уважаемый народ, кто какие темы может предложить?

Виртуальная машина — это, конечно, хорошо. Но это ИМХО скорее ближе к языкам программирования, чем к ОС.
Я бы в качестве темы предлагал написание модулей ядра/драйверов. Во-первых, к теме курса должно быть ближе. Во-вторых, практические навыки как-никак. Если к тому же найдется какая-то специализированная учебная железяка, типа интерфейсной карты, программатора — то еще лучше.
Как альтернатива — модификация кода ОС. Имплементация собственных системных вызовов, thread scheduler'a (хотя, в современном линуксе это может быть сложновато), может какой-то простенькой файловой системы...
Re[2]: Тематика курсовых по системному ПО и ОС
От: elmal  
Дата: 12.07.14 06:20
Оценка:
Здравствуйте, ArtK, Вы писали:

AK>2. Реализовать планировщик дискового ввода-вывода, который не позволяет деградировать запросам на произвольное чтение с диска на фоне последовательного чтения с диска. Задача вполне прикладная, т.к. в различных хранилищах часто возникает ситуация, когда идёт какая-то дисковая активность в фоне, при этом нужно обслуживать запросы к базе.

Мне вот интересно, когда такой планировщик майкрософт напишет ? А то ведь если идет фоновый процесс антивируса, или архиватор какой, или копирование файла большого — все, система умирает, тормоза дикие.
Re[3]: Тематика курсовых по системному ПО и ОС
От: smeeld  
Дата: 12.07.14 07:11
Оценка:
Здравствуйте, elmal, Вы писали:

E>Мне вот интересно, когда такой планировщик майкрософт напишет ? А то ведь если идет фоновый процесс антивируса, или архиватор какой, или копирование файла большого — все, система умирает, тормоза дикие.



Этот писал планировщики для Linux.
Re[4]: Тематика курсовых по системному ПО и ОС
От: elmal  
Дата: 12.07.14 07:14
Оценка:
Здравствуйте, smeeld, Вы писали:

S>Этот писал планировщики для Linux.

Мне сложно сказать насколько в линуксе с этой проблемой дела обстоят лучше или хуже. Мне интересно когда хорошо будет в винде ? Или хотя б какое железо нужно в винде чтоб такого не было. Обязательно террабайтный SSD?
Re[3]: Тематика курсовых по системному ПО и ОС
От: Cyberax Марс  
Дата: 12.07.14 07:28
Оценка: :)
Здравствуйте, elmal, Вы писали:

E>Мне вот интересно, когда такой планировщик майкрософт напишет ? А то ведь если идет фоновый процесс антивируса, или архиватор какой, или копирование файла большого — все, система умирает, тормоза дикие.

Постепенно доходят до этого. До недавнего времени планировщик в Винде масштабировался как O(n) от числа процессов.

Только в Линуксе к этому времени будет полное tickless-ядро
Sapienti sat!
Re: Тематика курсовых по системному ПО и ОС
От: Rinbe Россия  
Дата: 12.07.14 07:31
Оценка: 9 (1)
Здравствуйте, LaptevVV, Вы писали:

LVV>В этом годе мне навесили еще одну курсовую.

LVV>По дисциплине "Системное ПО и ОС".
LVV>Уважаемый народ, кто какие темы может предложить?

Написать программу которая работает с файлом, как с диском — виртуальный диск со свое файловой системой
Re[5]: Тематика курсовых по системному ПО и ОС
От: ArtK  
Дата: 12.07.14 07:42
Оценка:
Здравствуйте, elmal, Вы писали:

E>Здравствуйте, smeeld, Вы писали:


S>>Этот писал планировщики для Linux.

E>Мне сложно сказать насколько в линуксе с этой проблемой дела обстоят лучше или хуже. Мне интересно когда хорошо будет в винде ? Или хотя б какое железо нужно в винде чтоб такого не было. Обязательно террабайтный SSD?

Такой планировщик сильно специализированный, чтобы делать его для пользовательского десктопа, т.к. чудес не бывает, и низкая латентность произвольного чтения сказывается на скорости последовательного чтения. Не думаю, что пользователь будет в восторге, если фильм будет воспроизводиться с тормозами.
Тоже самое было с планировщиком процессов в Linux. Изначальный вариант (уже не помню название) давал большую производительность системы в целом, но был не очень отзывчивым. Для серверного ПО это самое то, но для десктопа не подходит, т.к. пользователи начинают нервничать, когда перетаскивание окна тормозит на их 2-х ядерном проце.
Re: Тематика курсовых по системному ПО и ОС
От: LaptevVV Россия  
Дата: 12.07.14 07:43
Оценка:
Проблема в том, что надо примерно 15 тем одинаковой примерно трудности.
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Re: Тематика курсовых по системному ПО и ОС
От: Mystic Украина http://mystic2000.newmail.ru
Дата: 12.07.14 07:52
Оценка: 9 (1) +1
Здравствуйте, LaptevVV, Вы писали:

LVV>И еще хотелось бы тут же втолкнуть Unit-тестирование.

LVV>Только не понимаю пока, где.
LVV>В кусовой хотелось бы такой раздел завести: Unit-тесты.
LVV>Но не всякая прога для этого подходит.
LVV>Поэтому прошу кидать идеи.

Мне кажется, что Unit-тестирование вообще лежит вне системного программирования. Это ООП технология, которая мало применима в реалиях, когда большая часть кода это вызовы системных функций, обращение к железу + карго-культы. То же и с виртуальной машиной, ее написать можно хоть на LISP, не говоря про PHP, что совсем далеко от атмосферы отладки драйверов, когда ошибка приводит к зависанию системы (hang), BSOD или kernel panic. Когда ошибки вылавливаются внимательным всматриванием в исходный текст программы, или ее изменениями чтобы по эффектам сделать диагноз. Вы предлагаете обычное офисное программирование со всеми удобствами, что мало поможет в бою.

Я бы смотрел на такие варианты:

1. Заказать (или разработать самим) PCI-железку с некоторым процессором внутри, с которым можно общаться. Появится целое поле от написания драйверов под Lunux/Free BSD/Windows + firmware. Плюс все прелести, о которых я написал выше.

2. Какие-нить фильтры под Windows для логирования обращений к драйверам.

3. Посмотрел бы в сторону MINIX (Linux как вариант) и написания разных улучшений/изменений. Например, свой планировщик задач, и т. п.

4. Что-нить, что бы грузилось и общалось с UEFI. В далекие-далекие времена я как-то подумал о том, что если за всю жизнь ты не написал ни строчки кода в ring 0, то ты как-бы виртуальный программист. Плюс достали на форумах люди, которые говорили о том, что на Delphi нельзя написать операционную систему. Так родился этот проект, где загрузчик MBR загружает программу на Turbo Pascal. Программа на Turno Pascal, работая исключительно с прерываниями BIOS (без 21h) подготавливает к загрузке DLL, написанную на Delphi. Потом переключается в защищенный режим и передает управление по адресу экспортируемой функции EntryPoint. А уже Delphi программа, будучи запущенной без всякого Windows, вешается на IRQ таймера и клавиатуры и что-то пишет в видеопамять. Дальше захотел прикрутить менеджер памяти, чтобы заработали классы, строки и т. п., но надхнення меня покинуло. Переписать все по нынешним стандартам, чем не курсовая?

5. Просто ПО, которое использует низкоуровневые особенности той или иной OS.
Re[6]: Тематика курсовых по системному ПО и ОС
От: elmal  
Дата: 12.07.14 07:53
Оценка:
Здравствуйте, ArtK, Вы писали:

AK>Такой планировщик сильно специализированный, чтобы делать его для пользовательского десктопа, т.к. чудес не бывает, и низкая латентность произвольного чтения сказывается на скорости последовательного чтения. Не думаю, что пользователь будет в восторге, если фильм будет воспроизводиться с тормозами.

А комбинированный планировщик сделать нельзя? Чтоб в случае, если было четко видно, что наблюдаются дикие тормоза из за параллельно выполняющихся операций копирования или еще чего, алгоритм менялся на более адекватный. Пусть с задержкой даже 30 секунд будет переключение, главное чтоб система не помирала. А то иногда такое случается, что проще reset нажать, даже завершать работу штатно полчаса.
Re[6]: Тематика курсовых по системному ПО и ОС
От: smeeld  
Дата: 12.07.14 08:01
Оценка:
Здравствуйте, ArtK, Вы писали:


AK>Такой планировщик сильно специализированный, чтобы делать его для пользовательского десктопа, т.к. чудес не бывает, и низкая латентность произвольного чтения сказывается на скорости последовательного чтения. Не думаю, что пользователь будет в восторге, если фильм будет воспроизводиться с тормозами.

AK>Тоже самое было с планировщиком процессов в Linux. Изначальный вариант (уже не помню название) давал большую производительность системы в целом, но был не очень отзывчивым. Для серверного ПО это самое то, но для десктопа не подходит, т.к. пользователи начинают нервничать, когда перетаскивание окна тормозит на их 2-х ядерном проце.

Не понятен смысл поста. В Linux планировщики свой для каждую задачу:
Десктоп и вообще общий случай-выбараем CFQ.
СУБД и вообще необходимость гарантированности сброса данных на диск в определённый отрезок времени,
то есть эффект real time в дисковом IO-выбираем DEADLINE.
Если есть дисковая аппаратура, в которой планирование IO производится на уровне контроллера устройства
и взаимодействия с драйверами-выбираем самый простой, не нагружающий CPU планировщик NOOP.
Если накопители слабые и тормознутые, то, чтоб не грузить всю систему-выбираем ANTICIPATORY.
Переключение между планировщиками-от рута выполнить


echo deadline > /sys/block/disk_name_in_dev_directory/queue/scheduler
Re: Тематика курсовых по системному ПО и ОС
От: Pavel Dvorkin Россия  
Дата: 12.07.14 12:11
Оценка:
Здравствуйте, LaptevVV, Вы писали:

LVV>В этом годе мне навесили еще одну курсовую.

LVV>По дисциплине "Системное ПО и ОС".
LVV>Уважаемый народ, кто какие темы может предложить?

Темы предложить не проблема Берем какое-нибудь существующее решение и предлагаем написать его эмулятор. Эмулятор файловой системы, виртуальной памяти, командный процессор , стек TCP/IP и т.д.

Вопрос в другом. Сколько времени по учебному плану отведено студентам на эту курсовую ? И что значит "еще одну курсовую" ? Сколько их у студентов в семестре всего ?

То о чем я писал выше, тянет на 50-100 часов серьезной работы. Они есть по плану ? Если есть — вперед и с песнями. А если по плану 20 часов, то придется ограничиться рефератом на тему "Виртуальная память, ее симптомы и последствия"
With best regards
Pavel Dvorkin
Re[2]: Тематика курсовых по системному ПО и ОС
От: LaptevVV Россия  
Дата: 12.07.14 15:07
Оценка:
Здравствуйте, Pavel Dvorkin, Вы писали:

PD>Темы предложить не проблема Берем какое-нибудь существующее решение и предлагаем написать его эмулятор. Эмулятор файловой системы, виртуальной памяти, командный процессор , стек TCP/IP и т.д.

Интересно. Подумаю.
Помится у меня студенты из первых выпусков писали метод близнецов — еще на турбопаскале...
PD>Вопрос в другом. Сколько времени по учебному плану отведено студентам на эту курсовую ? И что значит "еще одну курсовую" ? Сколько их у студентов в семестре всего ?
PD>То о чем я писал выше, тянет на 50-100 часов серьезной работы. Они есть по плану ? Если есть — вперед и с песнями. А если по плану 20 часов, то придется ограничиться рефератом на тему "Виртуальная память, ее симптомы и последствия"
У студентов 1 курсовая в семестре.
Как ты знаешь, самостоятельная работа составляет примерно столько же, сколько аудиторная нагрузка — по любому нашему учебному классу.
Поэтому — вперед, и с песней!
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Re: Тематика курсовых по системному ПО и ОС
От: FoolS.Top Армения  
Дата: 15.07.14 14:47
Оценка:
Здравствуйте, LaptevVV, Вы писали:

LVV>В этом годе мне навесили еще одну курсовую.

LVV>По дисциплине "Системное ПО и ОС".
LVV>Уважаемый народ, кто какие темы может предложить?

Прерывания будут реализованы? Например, вызов несуществующей команды, и т.п.
Feierlich, misterioso
Re[2]: Тематика курсовых по системному ПО и ОС
От: LaptevVV Россия  
Дата: 15.07.14 15:28
Оценка:
Здравствуйте, FoolS.Top, Вы писали:

LVV>>В этом годе мне навесили еще одну курсовую.

LVV>>По дисциплине "Системное ПО и ОС".
LVV>>Уважаемый народ, кто какие темы может предложить?

FT>Прерывания будут реализованы? Например, вызов несуществующей команды, и т.п.

В каком смысле?
Если в виртуальной машине, то это можно сделать — как развитие лабы по виртуальным машинам.
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Re[2]: Тематика курсовых по системному ПО и ОС
От: Lonely Dog Россия  
Дата: 18.07.14 09:36
Оценка:
Здравствуйте, Mystic, Вы писали:


M>4. Что-нить, что бы грузилось и общалось с UEFI.

UEFI это круто. Там много всего интересного. Я вот только не уверен, что это задача из области системного программирования. Вполне себе прикладное API. Да, есть шанс получать кирпич вместо системы (если она перестанет грузится). Да, есть проблемы с отладкой. Но в целом, UEFI не очень сложен. У меня правда был небольшой опыт, всего несколько месяцев. Возм, если начать копать...

PS: Жаль, что у меня таких лаб не было. Хотя, не уверен, что смог бы работать полный день при таких нагрузках.
Re[3]: Тематика курсовых по системному ПО и ОС
От: Mystic Украина http://mystic2000.newmail.ru
Дата: 18.07.14 11:57
Оценка:
Здравствуйте, Lonely Dog, Вы писали:

LD>Здравствуйте, Mystic, Вы писали:



M>>4. Что-нить, что бы грузилось и общалось с UEFI.

LD>UEFI это круто. Там много всего интересного. Я вот только не уверен, что это задача из области системного программирования. Вполне себе прикладное API. Да, есть шанс получать кирпич вместо системы (если она перестанет грузится). Да, есть проблемы с отладкой. Но в целом, UEFI не очень сложен. У меня правда был небольшой опыт, всего несколько месяцев. Возм, если начать копать...

LD>PS: Жаль, что у меня таких лаб не было. Хотя, не уверен, что смог бы работать полный день при таких нагрузках.


Ну... а что такое системное программирование? По-моему, его отличают такие аспекты:
1. Отсутствие комфортных средств отладки. В некоторых местах отладка вообще невозможна (взаимодействие с другим железом)
2. Работа с другим низкоуровневым API (куча значений пакуется в байты/биты)
3. Знание архитектуры

Имхо, для развития таких навыков UEFI вполне себе подходит.
Re[4]: Тематика курсовых по системному ПО и ОС
От: Lonely Dog Россия  
Дата: 18.07.14 13:37
Оценка:
Здравствуйте, Mystic, Вы писали:


M>Ну... а что такое системное программирование? По-моему, его отличают такие аспекты:

M>1. Отсутствие комфортных средств отладки. В некоторых местах отладка вообще невозможна (взаимодействие с другим железом)
M>2. Работа с другим низкоуровневым API (куча значений пакуется в байты/биты)
M>3. Знание архитектуры

M>Имхо, для развития таких навыков UEFI вполне себе подходит.

Да, наверное соглашусь.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.