Материалы сайта
Это интересно
Структура файловой системы Linux и UNIX
МЕТОДИЧЕСКИЕ УКАЗАНИЯ к курсовой работе по курсу «Операционные системы» ОБЩИЕ ЗАМЕЧАНИЯ 1. Работа выполняется бригадой из 1 ( N ( 2 человек. 2. Я не возражаю против того, чтобы несколько бригад делали один и тот же вариант, лишь бы это были независимые работы. Точнее: при совпадении двух работ с точностью до косметических отличий работа будет принята только у одной бригады. 3. Предложения своих тем поощряются, однако такие темы следует предварительно согласовать. Темы из списка можно брать и делать, даже не записываясь на них. 4. Для выполнения работ, кроме лекций и имеющихся книг (например, Финогенова по MS-DOS и Рихтера по Windows) рекомендуется использовать справочные руководства, имеющиеся в виде файлов. Два руководства по DOS лежат в каталоге USERS\DR\DOCS): – справочник по прерываниям под редакцией Ральфа Брауна: подробнейшее описание (на английском) всех прерываний DOS и BIOS, а также связанных с ними (т.е. практически всех) структур данных; – программа-справочник TechHelp v.6.06, тоже достаточно подробная; ее удобно установить резидентно; 5. Если в работе делаются какие-либо небезопасные вещи с файловой системой, то, умоляю, отлаживайте ее на дискетах. 6. Если в качестве работы выполнен реферат, то следует учитывать, что откровенное списывание с литературы (оно же копирование или сканирование) достаточно легко выявляется с помощью нескольких уточняющих вопросов. Постарайтесь писать только то, что сами до конца понимаете. 7. На возможное замечание: «Задания разной трудности» отвечаю: разной. Выбирайте себе по самолюбию. РЕЗИДЕНТНЫЕ ПРОГРАММЫ DOS Р1. Разработать программу, перенаправляющую весь вывод с принтера в указанный при запуске файл. Р2. Разработать программу, протоколирующую в файле все вызовы файловых функций DOS (начало и конец обработки, какой процесс вызвал, имя файла, какая операция), а также чтение/запись по int13h. Р3. Разработать программу шифрования EXE-файлов и резидентную программу, которая при попытке запуска такого файла спрашивает ключ, расшифровывает и запускает. Р4. Разработать программу «мягкого удаления», которая выполняет функции удаления и перезаписи файлов путем перемещения файла в специальный каталог («корзину»), а при нехватке места – предупреждает. Р5. Разработать аналог межзадачного «буфера обмена» (clipboard) для DOS, т.е. написать программу, которая по Ctrl + Ins просит выделить область на экране и копирует из нее текст в свой буфер, а по Shift + Ins подсовывает содержимое этого буфера в буфер клавиатуры. Р6. Разработать программу, которая предупреждает о попытке открыть на запись файл с расширением EXE или COM и просит подтвердить. Выдавать при этом имя выполняемой программы, запросившей такую операцию. В порядке исключения разрешить программам беспрепятственно писать в свой собственный файл. Р7. Разработать программу, которая по нажатию горячей клавиши начинает отслеживать запуски резидентных программ, а по другой горячей клавише удаляет все эти программы из памяти. Р8. Разработать программу, которая оповещает пользователя о наступлении моментов времени, перечисленных в специальном файле-расписании. Каждая строка этого файла содержит время (часы, минуты), дату (но можно указать и «ежедневно» или, например, «каждый вторник») и текст сообщения. Р9. Разработать программу, которая по нажатию горячей клавиши насильственно завершает текущий процесс (не себя!). Желательно предварительно выдать имя файла текущего процесса и попросить подтверждения. Р10. Разработать программу, которая периодически, с указанным при запуске интервалом времени выполняет сброс на диск для всех открытых на запись (или чтение/запись) файлов из SFT. Р11. Разработать программу, которая выполняет протоколирование в файл и/или на экран всех входов в прерывания и выходов из них. Должны быть предусмотрены средства для динамического (по горячей клавише) изменения множества отслеживаемых прерываний и их конкретных функций (например, «только int21 с AH от 0 до 0Ch, а также все функции int16h»), а также для включения/выключения вывода на экран и в файл. Р12. Разработать программу, по горячей клавише выдающую список блоков распределения памяти, включая UMB и ROM. Кроме размеров блока, указывать программу-владельца, тип блока (PSP, окружение) и векторы прерываний, указывающие на этот блок. Возможно, понадобится скроллинг. Р13. Разработать программу, по горячей клавише выдающую текущее состояние дисковых буферов (номера секторов, состояние «чистый/грязный», порядок в очереди и т.п.) Р14. Разработать программу, по горячей клавише выдающую текущее состояние SFT с подробной информацией по каждому файлу. Возможно, понадобится скроллинг. Р15. Разработать самоперемещающуюся, экономящую память резидентную программу, т.е. такую, которая при установке освобождает блок окружения и пытается переместить свои коды и PSP на его место. Можно также наложить коды программы на вторую половину PSP, если не используется DTA. Что именно делает программа после установки – выберите сами. Р16. Разработать программу типа «Profiler» для DOS, т.е. программу, которая накапливает статистику о работе DOS: сколько процентов времени занимает ожидание ввода с клавиатуры, дисковые операции, печать, вообще функции DOS и чего еще придумаете. НЕРЕЗИДЕНТНЫЕ УТИЛИТЫ DOS У1. Разработать программу, проверяющую целостность файловой системы на диске (корректность дерева каталогов, совпадение копий FAT, наличие потерянных цепочек кластеров и пересекающихся файлов, соответствие размеров файлов длинам цепочек кластеров... Вроде бы, это все). Можно еще по отдельному ключу добавить проверку файлов на читаемость. У2. Разработать программу «безопасного форматирования», которая приводит FAT и ROOT в пустое состояние, но сохраняет возможность отменить это действие, сделав все, как было (конечно, пока на этот диск не было записи). Вероятно, для этого понадобится наличие некоторого объема свободного места на диске. Подумайте, как обойтись минимумом. У3. Разработать программу, выдающую для указанного файла (или нескольких файлов) список занимаемых кластеров (лучше в форме карты) и при желании пользователя делающую файл непрерывным. У4. Разработать программу дефрагментации дискового пространства (т.е. перезаписи всех файлов в непрерывные отрезки диска, и чтобы свободное место оставалось только в конце диска). У5. Разработать программу для очистки неиспользуемого дискового пространства. Она должна записывать нули во все свободные кластеры и сжимать каталоги, уничтожая записи об удаленных файлах. Учесть возможность освобождения кластеров при сжатии каталога. У6. Разработать программу, работающую как аналог команды SET, но изменяющую указанную переменную окружения не только для текущего процесса, но и для всех его предков (при условии наличия свободного места в соответствующем окружении). У7. Разработать программу, которая увеличивает указанную числовую (т.е. состоящую только из цифр и, может быть, знака) переменную окружения на указанную константу (по умолчанию на 1). Построить пример BAT-файла, использующего эту программу для организации цикла. У8. Разработать программу, выдающую информацию о всех установленных резидентных программах: имена файлов, блоки памяти, перехваченные векторы. У9. Разработать программу, выдающую подробную информацию о всех установленных драйверах устройств (из заголовков драйверов). У9. Разработать программу типа EXE2BIN, т.е. преобразующую EXE-файл в COM- файл (если это возможно). ИССЛЕДОВАНИЕ DOS И1. Исследовать различные варианты нестандартного форматирования дискеты и возможности работы с такими дискетами. И2. Исследовать возможность создания дискеты с тремя копиями FAT вместо обычных двух. Проверить корректность работы DOS с такой дискетой. И3. Исследовать реентерабельность прерываний int25h, int26h и int10h (в литературе приводятся разные мнения по этому вопросу). МОДЕЛИРОВАНИЕ АЛГОРИТМОВ М1. Провести моделирование нескольких алгоритмов выбора замещаемой страницы (например, алгоритмов LRU, FIFO, случайного выбора, наилучшего выбора) и оценить их эффективность при различных вариантах распределения обращений к страницам. М2. Промоделировать ситуацию фрагментации дискового пространства для ОС с сегментированным размещением файлов. Исследовать зависимость степени фрагментации от заполнения диска и среднего размера файлов. Придумать и рассмотреть 1-2 способа выделения кластеров, уменьшающих фрагментацию. М3. Промоделировать работу приоритетного планировщика процессов, сравнить эффективность работы системы со статическими приоритетами и для 2-3 различных алгоритмов динамического назначения приоритетов. РЕФЕРАТЫ Реф1. Структура файловой системы NTFS. Реф2. Управление доступом в Windows NT. Реф3. Структура EXE-файлов в Windows (формат PE). Реф4. Средства управления памятью в Win32. Реф5. Средства перехвата сообщений в Windows (Hooks). Реф6. Процессы и потоки (threads) в Win32. Реф7. Структура файловой системы LINUX. Реф8. Алгоритмы и структуры данных, реализующие многозадачность в UNIX. Реф9. Средства управления процессами в стандарте POSIX. НАДЕЮСЬ ДОБАВИТЬ ЕЩЕ ТЕМЫ В БЛИЖАЙШИЕ ДНИ