Реализация альтернативной API на примере CentOS

Архитектура строения операционной системы. Назначение API в операционных системах и разных платформах. Особенности строения API в ядре Linux. Реализация проекта для работы с CDROM на CentOS. Сравнение Linux и Windows. Реализация проекта на Win32 API.

Рубрика Программирование, компьютеры и кибернетика
Вид дипломная работа
Язык русский
Дата добавления 08.06.2017
Размер файла 1,6 M

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Таблица 7 - Сравнение установки операционных системах

Windows

Linux

Примечание

Размер иснталлятора

Представляет стандартизированный набор программных средств и размер варьируется от нескольких десятков дискет (Windows 3.11) до DVD-диска (Windows Vista/7/8) и USB флеш драйва (Windows 10). Существуют как официальные так и неофициальные инструменты по созданию своих дистрибутивов Windows. Возможна установка через сеть.

От одной дискеты до нескольких DVD дисков. Например, дистрибутив DSL занимает всего 50 МБ, предоставляя браузеры, офисные приложения и т.д. Многие дистрибутивы распространяются в нескольких вариантах (как правило, DVD с большим набором программ и выбором графической среды или Live CD для каждой графической среды (KDE, GNOME, Xfce) с набором программ для неё). Возможна установка через сеть, при которой всё необходимое программное обеспечение будет получено со специального сервера. Эти варианты могут совмещаться, если есть постоянное соединение с интернетом: установка большинства пакетов происходит с диска, а их новые версии и дополнительные программы устанавливаются с удаленного сервера.

Простота установки

Windows 7, довольно проста в установке, если предполагается установка на машину без присутствующих операционных систем. Установка Windows XP, может быть затруднена в случае, если установленное оборудование использует новые технологии. Может понадобиться использование дискеты 3,5" с драйвером [27], или ручная упаковка более поздних обновлений к оригинальному дистрибутиву с созданием нового образа установочного диска.

Очень просты в установке (SuSE, Mandriva, Ubuntu, Fedora и др.), в процессе позволяет менять множество настроек, легко устанавливается к существующим операционным системам. Есть дистрибутивы с установкой ориентированной на максимальную подвижность, например сетевую удаленную установку при минимальном размере (40 Мебибайт) на слабой аппаратуре (Debian, Vector Linux, ArchLinux, Slackware). Есть дистрибутивы, намеренно отказывающиеся от простоты в пользу осознанной ручной установки, чтобы максимально расширить функциональность для пользователя (Gentoo, ArchLinux, Slackware). Непопулярные, новые или персональные дистрибутивы также могут отличаться. Кроме того, есть возможность целиком скомпоновать систему из исходных кодов, не прибегая к менеджерам установки программного обеспечения (Linux from Scratch).

Время установки

Заявленное время составляет около часа (вплоть до 10-30 минут для Windows Vista/7, в зависимости от мощности компьютера). В случае необходимости, подготовка к установке может занять дополнительное время (например, создание дискет с драйверами для установки Windows XP на SATA жёсткий диск). Во время установки необходимо будет выполнить одну или несколько перезагрузок. Установка важных обновлений может занять дополнительное время и потребовать несколько перезагрузок.

От пары минут до часа и более, в зависимости от объёма устанавливаемого программного обеспечения, поставляемого с дистрибутивом и мощности дисковой подсистемы компьютера. В среднем составляет 6-30 минут для распространённых дистрибутивов, таких, как OpenSUSE или Ubuntu.

Компиляция полной системы из исходных кодов может быть выполнена, в зависимости от мощности компьютера, опыта пользователя, необходимого программного обеспечения за несколько минут, часов или дней.

Наличие драйверов

Драйверы некоторых устройств, использованных в системе, устанавливаются отдельно. Многие драйверы устанавливаются системой из набора драйверов на установочном носителе, некоторые недостающие драйверы можно получить через интернет с помощью средств системы. Процесс установки большинства драйверов автоматизирован. Оборудование, считающееся по каким-либо причинам устаревшим, не поддерживается разработчиками этого оборудования, в результате чего для него отсутствуют драйверы, поскольку для разных ОС Windows требуются различные драйверы устройств. На практике, для неинтегрированных устройств почти всегда приходится устанавливать драйверы отдельно. Это требует времени и дополнительных перезагрузок.

Производители встроенного оборудования стараются создавать свои новые продукты, чтобы они без проблем работали даже на старых, но популярных Windows (напр. XP), в которых драйверов на это устройство быть не может, но есть драйверы более старых устройств, которые оказываются подходящими благодаря разработчикам устройств.

Большинство драйверов устанавливается автоматически при инсталляции операционной системы или доступно для загрузки через интернет. Множество драйверов уже включено в ядро. Производители некоторых устройств (ТВ-тюнеров и др.) иногда не выпускают драйверы для Linux, поэтому устройства могут оказаться неработоспособными (в этом случае могут помочь драйверы открытого сообщества для систем на одном чипе SoC). Применение некоторых драйверов требует принятия лицензионного соглашения. Некоторые драйверы (беспроводные карты) могут поставляться только в закрытом виде. Возможно использование Windows-драйверов для некоторых из устройств. На непопулярных системах, или на системах в которых отсутствуют правила добавления конкретного устройства, может потребоваться скачивать и устанавливать драйвера вручную. Если в системе нет системы управления пакетами (популярные RPM, APT), то драйверы требуется устанавливать средствами, предоставленными их разработчиком.

Инсталляция с помощью ознакомительного CD (Live CD)

Официальных свободно-распространяемых ознакомительных CD не существует. Но можно специально создать работающую систему в облегченном варианте на диске (WinPE) с диска или флеш-накопителя или с помощью специально созданного загрузочного диска (BartPE). До выхода Vista, Windows PE распространялся только среди поставщиков компьютеров в виде "OEMPreinstallationKit", в настоящее время его можно бесплатно скачать с официального сайта Microsoft в составе Windows Automated Installation Kit.

Многие полноценные дистрибутивы (Knoppix, openSUSE, Ubuntu) имеют ознакомительный диск (live CD). С помощью таких дисков можно осуществлять восстановление работоспособности системы, в том числе с другой операционной системой. Также многие live-CD предоставляют возможность установки ОС на компьютер с этого же диска.

Поставляемое программное обеспечение

Несколькопрограммдляработысмультимедиаисетьюинтернет (браузер Internet Explorer, проигрыватель Windows Media Player, текстовыередакторы Notepad, WordPad, графическийредактор Paint), почтовыйклиент Outlook Express. Дополнительное ПО может быть включено производителем оборудования. Windows Vista включает в себя также почтовую программу Windows Mail, мультимедиа-центр Windows Media Center и др., в зависимости от версии. Офисный пакет Microsoft Office не включается в поставку (кроме Windows RT), так как является отдельным коммерческим продуктом, но иногда может быть включена ознакомительная версия. На практике без установки дополнительных компонентов Windows Media Player не может воспроизводить видео, а встроенная в Windows XP (SP1) программа записи дисков не может записывать DVD и сильно ограничена в функционале. Кроме того, в системе отсутствуют средства работы с архивами, отличными от. zip и. cab

Во всех основных дистрибутивах присутствует множество программ для самых разных задач: мультимедиа, графики, интернета, офисной работы, игр, а также системные утилиты и дополнительные визуальные оболочки. Однако из-за недостаточной открытости форматов файлов собственнических продуктов для Microsoft Windows существует ряд проблем с совместимостью форматов файлов между такими продуктами и свободными приложениями. Например, сложный текст, созданный в OpenOffice.org, и сохранённый в собственническом формате Microsoft Office, не всегда корректно читается в Microsoft Office; и наоборот, OOo не всегда может точно декодировать форматы Microsoft Office. Существуют специализированные дистрибутивы. В них набор программ скорректирован в сторону решаемых задач, например Ubuntu Studio, Edubuntu, BackTrack. Единообразие (в рамках системы управления пакетами) позволяет очень гибко настраивать список устанавливаемого ПО, а в случае подключения к репозиторию - так же установить дополнительное ПО во время установки ОС.

Практика совместной поставки компанией Microsoft программ вместе с Windows была признана в США незаконной.

Программы, которые можно установить дополнительно

Огромный выбор собственнических и свободно распространяемых программ (Однако нет централизованного хранилища необходимого для работы свободного программного обеспечения, поддерживаемого производителем ОС). Как правило, они поставляются со всеми необходимыми библиотеками, устанавливаются с помощью специальной программы-инсталлятора. Хотя в windows есть собственная система установки/удаления программ, многие программы устанавливаются уникальными инсталляторами. Деинсталляция тоже проста, хотя программы удаления зачастую оставляют глобальные пометки (например, для ограничения срока работы), а иногда - и бинарные файлы (например, библиотеки). Отсутствие централизованного хранилища и общее правило включать в дистрибутив все необходимые библиотеки может приводить к конфликтам, когда одна прикладная программа перезаписывает общую библиотеку другой программы (например, на библиотеку другой версии); такие конфликты часто называются dll hell. Имеется возможность установки некоторых простых программ путём простого копирования файлов в системную директорию (бинарный формат файлов). Некоторые программы могут работать только на определённых версиях ОС.

Большой выбор свободно распространяемых программ и небольшой выбор коммерческих. Однако для ряда задач приложений гораздо меньше, чем для Windows, или они отсутствуют. Созданы версии некоторых Win32-программ для Linux. Программы, включенные в официальные дистрибутивы и их репозитории, устанавливаются в большинстве вариантов с помощью специальной программы для установки/удаления программ, обеспечивающей наличие необходимых библиотек (система управления пакетами), либо ручной компиляцией из исходных кодов с поиском необходимых библиотек (в случае редких программ - например, устаревших или находящихся на ранней стадии разработки). Применяется несколько специальных упаковочных форматов (RPM, DEB), позволяющих распространять программы в пакетах для разных дистрибутивов. При инсталляции ПОв пакете часто может требоваться инсталляция других пакетов, которые устанавливаются автоматически, либо их можно скачать из Интернета. Это используется для того, чтобы избежать конфликта библиотек (dll hell): две программы могут использовать один и тот же пакет, а операционная система самостоятельно заботится о том, чтобы поддерживать актуальность его версии. Дополнительным преимуществом такого подхода можно считать то, что в совокупности размер пакетов, требуемых для установки программы для Linux меньше, чем размер дистрибутива той же программы для Windows. Ряд программ (в основном собственнические или не очень популярные) может инсталлироваться только на одну или некоторые из версий ядра и дистрибутива. Некоторые программы должны устанавливаться пользователем самостоятельно, либо из исходных кодов, иногда с применением командной строки.

Для Linux разработаны и другие инсталляторы, такие как loki installer, klik или autopackage. Однако до сих пор они малораспространены.

Подготовка диска

По умолчанию устанавливает только себя, затирая возможность запуска других ОС, кроме других инсталляций Windows. Разделы с "родной" файловой системой NTFS легко могут быть расширены и уменьшены (под Vista/7 уменьшить размер раздела можно системными средствами, под XP - только с помощью программ сторонних производителей). При этом графическая программа для этой задачи обладает меньшим функционалом, чем утилита командной строки. Возможно динамическое разделение диска (Dynamic Disks).

Возможна установка нескольких операционных систем. В большинстве дистрибутивов есть возможность запуска полноценной системы с компакт диска, а значит работать со всеми функциями, включая мощную графическую утилиту переразметки GParted, работающую с большим набором файловых систем, включая NTFS. Динамические диски поддерживаются с использованием LVM или EVMS, часто поставляемых вместе с дистрибутивом.

Программа-загрузчик

При установке автоматически настраивается для загрузки других имеющихся на компьютере инсталляций систем семейства Windows NT/9x (NTLDR), для загрузки Linux и других подобных систем необходимо ручное редактирование файла BOOT. INI. Также возможно применение сторонних загрузчиков, таких как GRUB.

Может загружать операционные системы по выбору пользователя с помощью встроенных менеджеров GRUB или LILO. Также имеются средства безопасности (например запрос пароля), которых нет в загрузчике Windows.

Изза отсутствия поддержки Linux в загрузчике Windows в случае установки Windows и Linux на одной машине проще сначала установить Windows, а затем Linux. Существуют дополнительные загрузчики операционных систем по выбору. В случае переустановки Windows загрузчик можно восстановить при помощи Live CD.

Установка Linux когда-то была затруднительной для среднего пользователя. В настоящее время почти все дистрибутивы содержат упрощённую процедуру установки и демонстрационный диск (Live CD), который дает возможность загрузить систему прямо с CD или DVD и пользоваться ей, не устанавливая на жёсткий диск.

Установщик Windows тоже включает в себя программу-помощника (wizard), как и дистрибутивы Linux.

Особенности Linux, а именно: открытость, изначальное предпочтение открытых программных компонентов закрытым, нестандартность поставки (огромное количество дистрибутивов со своими особенностями), центральные безопасные источники программ, наличие бита выполнения, исходный запрет на работу под пользователем root, наличие средств ограничения прав (SELinux, AppArmor) - делают возможным только точечное, намеренное заражение и исключают возможность масштабной жизнедеятельности вредоносных программных кодов. Количество вирусов под Linux исчисляется несколькими десятками (обычно разработанными в учебных целях), так как открытость ядра позволила закрыть большинство уязвимостей в нём. Число вредоносных программ вообще, написанных под Linux, включая вирусы и трояны, выросло в последние годы, и более чем удвоилось в течение 2005 от 422 до 863, однако открытая модель разработки приводит к тому, что большинство данных программ в настоящее время неработоспособно - уязвимости, которыми они пользовались, как правило, закрываются в течение нескольких дней после обнаружения. Справедливости ради надо заметить, что некоторые открытые программы со сложным кодом всё-таки содержат уязвимости, которые долгое время были не обнаруженными. Например, Heartbleed был обнаружен только спустя два года.

Для Microsoft Windows создано очень большое число вирусов и деструктивных программ (их количество исчисляется десятками миллионов. Для борьбы с ними используется специальное программное обеспечение - антивирусы. Вирусы бывают разных видов: от сравнительно безобидных не приносящих особого вреда пользователю, до деструктивных, которые изменяют настройки системы, уничтожают важные данные пользователя или похищают банковские данные. В линейке Windows NT всегда присутствовало чёткое разделение пользовательских прав. Тем не менее, большинство пользователей домашних компьютеров всегда использует права администратора, что негативно сказывается на защищённости системы. С появлением Windows Vista, эта проблема была частично решена при помощи комплекса технологий User Account Control: теперь Windows в явном виде запрашивает подтверждение действий, требующих прав администратора, даже если пользователь является администратором.

В Linux (как и во всех других UNIX-подобных системах) всегда присутствовало чёткое разделение пользовательских прав. Имеется только одна учётная запись системного администратора ("суперпользователя") - root. Этот пользователь может выполнять ничем не ограниченные действия над системой: изменять настройки, устанавливать и удалять программы, изменять системные файлы, останавливать отдельные компоненты или всю систему, и даже полностью удалить её одной командой. Также имеются учётные записи обычных пользователей: они могут только изменять личные настройки (внешний вид, настройки программ), и выполнять операции с файлами только в пределах своего домашнего каталога (или в других каталогах, если разрешит root). Обычному пользователю разрешено устанавливать программы только в свой домашний каталог или в те каталоги, где у него есть разрешение на запись данных. В большинстве современных дистрибутивов Linux работа непосредственно из-под учётной записи root невозможна; пользователь всегда работает с ограниченными правами, запуск же учётной записи root производится только для выполнения отдельных действий, и для каждого такого запуска требуется ввод пароля root (su) или текущего пользователя (sudo) для подтверждения полномочий. Запуск учётной записи root производится только в том случае, если текущий пользователь имеет права на администрирование системы, и правильно ввёл свой пароль; этот же механизм взаимодействия с пользователем Microsoft чуть позже заимствовала для Windows в рамках технологии "UserAccountControl". Антивирусы, существующие под Linux [проприетарные (Dr. Web, Антивирус Касперского, avast! и др.) и свободные (ClamAV)], предназначены для проверки и защиты Windows. Они позволяют сканировать сетевой трафик на шлюзах, почтовых серверах, файлсерверах, проверять выбранные отдельные файлы, каталоги, сменные и другие носители, по желанию пользователя, при обращениях на чтение/запись файлов, по расписанию, с графической оболочкой или без таковой.

В Linux намного меньше уязвимостей из-за чего он часто используется там, где нужна секретность данных (правительственные организации, банки).

Одной из особенностей данной системы является возможность действительно тонкой настройки любого из её компонентов. Linux предоставляет все преимущества открытого программного обеспечения и только от пользователя зависит насколько безопасно то, что он с ней делает. В условиях EULA других продуктов такой подход имеет определённое преимущество.

Для Microsoft Windows из-за монопольной позиции и результирующего большого процента рынка постоянно выпускается огромное количество игр разных жанров. Распространяются в большинстве своём за оплату, но есть и бесплатные казуальные игры. Большое количество игр также объясняется тем, что Windows - наиболее популярная операционная система на настольных компьютерах. Для написания трёхмерных игр для Windows обычно используются API DirectX и XNA (реже OpenGL).

Для Linux существует меньше игр, но эта ситуация постепенно улучшается. Основной причиной является малый процент рыночного сегмента. В большинстве своём это также свободное программное обеспечение, однако и здесь встречаются проприетарные игры (в основном это игры, портированные из Windows). Наиболее популярными жанрами здесь являются казуальные игры, шутеры от первого лица (в основном они написаны на свободных движках Quake, например Tremulous, Xonotic, Nexuiz, Urban Terror, Warsow, или же это портированные из Windows игры), а также стратегии.

Для написания трёхмерных игр здесь используется только интерфейс OpenGL, так как DirectX является проприетарным ПО и официально существует только в версиях для платформ Microsoft (Windows, Xbox, Zune и других). Проекты Wine и Cedega предоставляют реализацию DirectX в связке с реализацией среды Win32 API с довольно хорошей, но не идеальной, совместимостью. Несмотря на это после выхода интернет магазина Windows Store в Windows 8 корпорация Valve заявила о том, что Windows 8 является катастрофой в "PC-пространстве" и что Linux является наиболее жизнеспособной платформой для разработки игр, нежели Windows, в связи с чем уже выпустила версию клиента Steam для операционной системы Ubuntu.

Как заявил в своем интервью Гейб Ньюэлл, глава Valve: "Мы хотим, чтобы все 2500 игр в Steam легко шли под Linux." В настоящий момент портирована часть из них, в том числе Dota 2, Counter-Strike 1.6, Counter-Strike: Source, Serious Sam 3 и другие.

После этого заявления компания System76 выпустила мощный игровой ноутбук с предустановленной операционной системой Ubuntu 12.04 в надежде на успешность проекта Valve.

Заключение

На основании проделанной работы мы изучили исторический аспект развития операционных систем, рассмотрели строение API в операционных системах Linux и Microsoft Windows, провели анализ реализации API самого ядра Linux и успешно реализовали 2 проекта на языке программирования C++ с применением API Linux и Windows.

Таким образом, задачи, поставленные в техническом задании выполнены.

Список литературы

1. В. Костромин, Свободная система для свободных людей, март 2012 г.

2. В. Костромин, Linux для пользователя, 2014 г.

3. Соловьев Алексей, Разработка модулей ядра ОС Linux, 2014 г.

4. Даниэл Дж. Баррет, Linux основные команды карманный справочник, 2013 г.

5. А. Чекмарев, Windows 7: Руководство администратора, 2015 г.

6. М. Руссинович, Внутреннее устройство Microsoft Windows, 2012 г.

7. Ричард Саймон, Microsoft Windows API, Справочник системного программиста, 2013 г.

8. Брюс Эккель, Философия C++. Практическое программирование, 2013 г.

9. Стенли Липпман, Жози Лажойе, Барбара Э. Му, Язык программирования C++. Вводный курс, 2012 г.

10. Стенли Липпман, Основы программирования на С++, Том 1, 2016 г.

11. Стенли Липпман, Основы программирования на С++, Том 2, 2016 г.

12. Скотт Мейерс, 55 верных советов улучшить структуру и код ваших программ, 2012 г.

13. Герб Саттер, Решение сложных задач на С++, 2012 г.

14. Андрей Александреску, Современное проектирование на C++, 2014 г.

15. Герб Саттер, Андрей Александреску, Стандарты программирования на C++, 2016 г.

16. Бен Клеменс, Программирования на C в 21 веке, 2017 г.

17. Электронные источники:

18. https: // ru. wikipedia.org/wiki/Linux

19. https: // ru. wikipedia.org/wiki/Windows

20. https: // ru. wikipedia.org/wiki/API

21. https: // ru. wikipedia.org/wiki/%D0%AF%D0%B4%D1%80%D0%BE_Linux

22. https: // www.kernel.org/

23. https: // www.centos.org/

24. https: // ru. wikipedia.org/wiki/%D0%A1%D1%80%D0%B0%D0%B2%D0%BD%D0%B5%D0%BD%D0%B8%D0%B5_Microsoft_Windows_NT_%D0%B8_Linux

25. http://ru. d-ws. biz/articles/WinOrLin. shtml

26. http://citforum.ru/programming/unix/ipc_intro/

27. http://citforum.ru/programming/unix/linux_api/

28. https: // en. wikipedia.org/wiki/Linux_kernel_interfaces

29. https: // www.ibm.com/developerworks/ru/library/linux_windows_13/

30. https: // github.com/

31. https: // ru. wikipedia.org/wiki/CentOS

32. https: // ru. wikipedia.org/wiki/Windows_7

33. https: // gcc. gnu.org

34. https: // ru. wikipedia.org/wiki/G%2B%2B

35. https: // www.visualstudio.com/ru/downloads/

36. https: // stackoverflow.com/questions/2171177/what-is-application-binary-interface-abi

Приложение А

Код программы для работы с CD-ROM

#include <stdio. h>

#include <unistd. h>

#include <sys/fcntl. h>

#include <linux/cdrom. h>

#define BUF_SIZE 75*2352

typedef struct wav_header {

char riff [4];

long filesize;

char rifftype [4];

char chunk_id1 [4];

long chunksize1;

short wFormatTag;

short nChannels;

long nSamplesPerSec;

long nAvgBytesPerSec;

short nBlockAlign;

short wBitsPerSample;

char chunk_id2 [4];

long chunksize2;

} wav_header;

int msf_to_frames (struct cdrom_msf0 * msf) {

return (msf->minute * 60 + msf->second) * 75 + msf->frame;

}

void frames_to_msf (int frames, struct cdrom_msf0 * msf) {

msf->frame = frames % 75;

msf->second = (frames / 75) % 60;

msf->minute = (frames / 75) / 60;

}

int main (int argc, char ** argv) {

int cdd, fd, track, start, stop, disc_stat;

char buf [BUF_SIZE];

struct cdrom_tochdr toc;

struct cdrom_tocentry entry;

struct cdrom_read_audio rdaudio;

struct wav_header hdr;

if (argc! = 3) {

printf ("Использование: %s <трек><аудиофайл>\n", argv [0]);

return 1;

}

cdd = open ("/dev/cdrom", O_RDONLY);

track = atoi (argv [1]);

disc_stat = ioctl (cdd, CDROM_DRIVE_STATUS, CDSL_CURRENT);

if ( (disc_stat! = CDS_DISC_OK) && (disc_stat! = CDS_NO_INFO) && (disc_stat! = - 1))

{

close (cdd);

printf ("Устройство не готово\n");

return 1;

}

ioctl (cdd, CDROMREADTOCHDR, &toc);

if ( (track < toc. cdth_trk0) || (track > toc. cdth_trk1)) {

close (cdd);

printf ("Неверный номер трека\n");

return 1;

}

entry. cdte_format = CDROM_MSF;

entry. cdte_track = track;

ioctl (cdd, CDROMREADTOCENTRY, &entry);

if ( (entry. cdte_ctrl & CDROM_DATA_TRACK)! = 0) {

close (cdd);

printf ("Выбран не аудио-трек\n");

return 1;

}

start = msf_to_frames (&entry. cdte_addr. msf);

entry. cdte_track = (track < toc. cdth_trk1)? track + 1: CDROM_LEADOUT;

ioctl (cdd, CDROMREADTOCENTRY, &entry);

stop = msf_to_frames (&entry. cdte_addr. msf);

fd = open (argv [2], O_WRONLY|O_CREAT, 0777);

memcpy (hdr. riff, (const void *)"RIFF",

4);

memcpy (hdr. rifftype, (const void *)"WAVE",

4);

memcpy (hdr. chunk_id1, (const void *)"fmt ",

4);

hdr. chunksize1 = 16;

hdr. wFormatTag = 1; // WAVE_FORMAT_PCM;

memcpy (hdr. chunk_id2, (const void *)"data",

4);

hdr. nChannels = 2;

hdr. nSamplesPerSec = 44100;

hdr. nBlockAlign = 4;

hdr. nAvgBytesPerSec = 44100 * hdr. nBlockAlign;

hdr. wBitsPerSample = 16;

hdr. chunksize2 = (stop-start) *2352;

hdr. filesize = hdr. chunksize2 + 44;

write (fd, &hdr, sizeof (hdr));

rdaudio. addr_format = CDROM_MSF;

rdaudio. buf = buf;

while (start < stop) {

frames_to_msf (start, &rdaudio. addr. msf);

start += (rdaudio. nframes = (stop - start) > 75? 75: stop - start);

ioctl (cdd, CDROMREADAUDIO, &rdaudio);

write (fd, buf, rdaudio. nframes*2352);

}

close (cdd);

close (fd);

}

Приложение Б

Код программы дляполучение информации с жёсткого диска

#include <windows. h>

#include <stdio. h>

DWORD dwSectPerClust = 0, dwBytesPerSect = 0, dwNumbFreeClust = 0, dwTotalNumbOfClust = 0;

typedef struct DIOCRegs {

DWORD reg_EBX;

DWORD reg_EDX;

DWORD reg_ECX;

DWORD reg_EAX;

DWORD reg_EDI;

DWORD reg_ESI;

DWORD reg_Flags;

} DIOC_REGISTERS;

void PrintError ()

{

char str [256];

LPVOID lpMsgBuf;

FormatMessage (

FORMAT_MESSAGE_ALLOCATE_BUFFER |

FORMAT_MESSAGE_FROM_SYSTEM |

FORMAT_MESSAGE_IGNORE_INSERTS,

NULL,

GetLastError (),

MAKELANGID (LANG_NEUTRAL, SUBLANG_DEFAULT),

(LPTSTR) &lpMsgBuf,

0,NULL

);

CharToOem ( (LPCSTR) lpMsgBuf, str);

printf ("%s\n", str);

}

void PrintInfoDrive (LPCSTR lpDriveName = "c: \\")

{

GetDiskFreeSpace (

lpDriveName,

&dwSectPerClust,

&dwBytesPerSect,

&dwNumbFreeClust,

&dwTotalNumbOfClust

);

printf ("Drive name: %s\n", lpDriveName);

printf ("SectorsPerClustre: %d\n", dwSectPerClust);

printf ("BytesPerSector: %d\n", dwBytesPerSect);

printf ("NumberFreeOfCluster: %d\n", dwNumbFreeClust);

printf ("TotalNumberOfCluster: %d\n",dwTotalNumbOfClust);

printf ("------------------------------------\n");

DWORD dwTotalSize = dwBytesPerSect * dwNumbFreeClust;

printf ("Free space: %d kb\n", (dwTotalSize/1024));

}

int ReadSector (UINT sector, LPCSTR lpDriveName = "\\\\. \\C: ")

{

OSVERSIONINFO verInfo = {0};

verInfo. dwOSVersionInfoSize = sizeof (verInfo);

GetVersionEx (&verInfo);

HANDLE hDrive;

char *buf;

DWORD dw, n;

switch (verInfo. dwPlatformId)

{

case VER_PLATFORM_WIN32_NT:

hDrive = CreateFile (

lpDriveName,

GENERIC_READ,

FILE_SHARE_READ,

NULL,

OPEN_EXISTING,

FILE_ATTRIBUTE_NORMAL,

NULL

);

if (hDrive == INVALID_HANDLE_VALUE)

{

PrintError ();

return 1;

}

buf = new char [dwBytesPerSect];

SetFilePointer (hDrive, (sector-1) * dwBytesPerSect, NULL, FILE_BEGIN); // c 1

ReadFile (hDrive, (LPVOID) buf, dwBytesPerSect, &dw, NULL);

CloseHandle (hDrive);

for (n = 0; n < dw; n++)

printf ("%c", buf [n]);

delete [] buf;

break;

case VER_PLATFORM_WIN32_WINDOWS:

break;

default:

printf ("Error!!! \n");

return 1;

}

return 0;

}

int main ()

{

PrintInfoDrive ();

printf ("------------------------------------\n");

ReadSector (20);

return 0;

}

Размещено на Allbest.ru


Подобные документы

  • Анализ серверных операционных систем на базе ядра Linux. Подходы к построению маршрутизации и оценка полученных результатов. Установка операционной системы CentOS 6.6 и закономерности ее настройки. Принципы и основные этапы тестирования созданного шлюза.

    курсовая работа [2,9 M], добавлен 19.11.2015

  • Основные понятия операционных систем. Современное оборудование компьютера. Преимущества и недостатки операционной системы Linux. Функциональные возможности операционной системы Knoppix. Сравнительная характеристика операционных систем Linux и Knoppix.

    реферат [1,5 M], добавлен 17.12.2014

  • Основные моменты истории операционных систем, связывающих аппаратное обеспечение и прикладные программы. Характеристика операционной системы Microsoft Windows Seven, анализ операционной системы Linux. Преимущества и недостатки каждой операционной системы.

    курсовая работа [63,0 K], добавлен 07.05.2011

  • Графические интерфейсы и расширения для DOS. История развития операционной системы Microsoft Windows. Новшества ее современных версий: пользовательский интерфейс, языковая интеграция, системы защиты. Хронология развития и архитектура системы GNU/Linux.

    реферат [38,9 K], добавлен 25.10.2010

  • Изучение общих понятий операционной системы Android, разработанной для коммуникаторов, планшетных компьютеров, основанной на ядре Linux. Разработка программного обеспечения Android. Преимущества и недостатки мобильной операционной системы Windows Mobile.

    реферат [60,6 K], добавлен 16.04.2012

  • Назначение команды "diskcomp". Текст и запуск командного файла. Сравнение команды в Windows 7 и Windows XP. Разработка файла-сценария в ОС Linux. Создание файла в подкаталоге. Создание файла "oglavlenie.txt" с отсортированным по времени списком файлов.

    курсовая работа [1,6 M], добавлен 22.08.2012

  • Схемы графической аутентификации, их реализация и внедрение в операционных системах Linux. Оценка вероятности взлома графического пароля. Буквенно-цифровые пароли. Схемы треугольника и подвижной рамки. Исследование удобства и простоты использования.

    дипломная работа [5,1 M], добавлен 25.01.2013

  • Разработка приложения, которое осуществляет удаленный доступ управления компьютером с операционной системой Linux с компьютера с ОС Windows. Реализация функциональной части. Графический интерфейс клиента и сервера. Разработка интеграционных тестов.

    курсовая работа [1,1 M], добавлен 28.04.2014

  • Назначение серверных операционных систем. Сравнительный анализ серверных операционных систем Windows и Linux и сравнение их по важным показателям таким как: пользовательский графический интерфейс, безопасность, стабильность работы, возможность и цена.

    курсовая работа [50,1 K], добавлен 03.07.2012

  • Основные сходства и отличия операционных систем Microsoft Windows и GNU/Linux: конфигурации, цена и широта технической поддержки; оценка стоимости владения и статистика использования на настольных компьютерах; простота инсталляции и наличие драйверов.

    курсовая работа [294,9 K], добавлен 12.05.2011

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.