Общение между запущенными копиями своих программ


Общение между запущенными копиями своих программ

Издано: 2003, BHV
Твердый переплет, 560 стр..

Способы обнаружения копии уже загруженной программы

В третьем номере журнала «Программист» за 2002 год была опубликована статья Андрея Нефедова «Запрет запуска копии приложения под Windows». Перечисленные в ней способы обнаружения уже запущенной копии программы сводились к одному — созданию какого-либо глобального именного объекта и последующей проверки его наличия. Основной недостаток такого подхода — отсутствие гарантий уникальности глобальных имен. Одно и то же имя могут использовать две различные программы, что приведет к очевидному конфликту — вторая не станет запускаться, если активная первая.

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

Распознать повторный запуск приложения можно тривиальным просмотром списка загруженных процессов — Windows запоминает имя и полный путь к файлу, породившему процесс. Это гарантированно исключает возможность конфликтов со всеми остальными приложениями, но чувствительно к переименованию и перемещению файлов, — в этом случае повторный запуск программы не будет распознан.

Но при ближайшем рассмотрении такой недостаток оборачивается достоинством — пользователь получает возможность одновременной работы с различными версиями одного и того же приложениями, установленными в «свои» каталоги!

Получить список процессов легче всего средствами TOOLHELP32. Для этого сначала необходимо вызовом CreateTollhelp32snapshot снять «слепок» состояния процессоров, а затем передать возращенный ею дескриптор функциям Process32First и Process32Next. Каждый процесс, в свою очередь, ассоциирован с одним или несколькими модулями, список которых можно получить с помощью функций Module32First и Module32Next, предварительно сделав «слепок» состояния владеющего ими процесса вызовом CreateTollhelp32snapshot.

Ниже приведен исходный текст программы, выводящий на экран полные имена файлов, загруженных или исполняющихся в данный момент. Имя же самой программы передается ей в нулевом аргументе командной строки. Программа прекрасно работает как под Windows 9x, так и под Windows NT\2000.

Листинг 8 Демонстрация отслеживания уже запущенной копии программы путем просмотра списка процессов средствами TOOLHELP

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

Демонстрационный пример реализации приведен ниже.

Листинг 9 Демонстрация отслеживания уже запущенной копии программы путем блокирования совместного доступа к дисковому файлу

Аккуратно написанная программа должна не просто завершать свою работу, обнаружив уже загруженную копию, но и переключать эту копию на передний план, — так работают практически все «фирменные» приложения. Для осуществления такой операции необходимо знать дескриптор главного окна программы.

Выяснить это поможет широковещательная рассылка сообщений. Передав функции SendMessage в качестве первого аргумента константу HWND_BROADCAST, можно заставить ее посылать сообщения всем top-level окнам. В сообщении следует указать уникальный код, позволяющий безошибочно идентифицировать данное приложение (см. врезку «пути достижения уникальности«).

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

Готовая реализация по причине экономии места здесь не приводится (как и все оконные Windows-приложения она слишком громоздка). Достаточно лишь отметить, что перед посылкой широковещательного сообщения, необходимо предварительно зарегистрировать это сообщение вызовом RegisterWindowMessage. Сам же отправитель широковещательного сообщения не получает.

Если требуется ограничить количество одновременно работающих копий одного и того же приложения, можно воспользоваться динамической ветвью реестра HKEY_DYN_DATA, создав в «своем» разделе специальную переменную увеличивающуюся на единицу при очередном запуске и уменьшающуюся при выходе из приложения. Почему необходимо использовать именно динамическую ветвь? Дело в том, что если работа программы будет аварийно завершена (например, погаснет свет или произойдет критическая ошибка), счетчик запущенных приложений, расположенный в статичной ветке реестра, окажется не обнулен! Напротив, HLEY_DUN_DATA хранится в оперативной памяти и очищается при каждой перезагрузке операционной системы. По этой же причине, никогда не следует хранить счетчик запущенных приложений во временном файле! (Разве, на виртуальном диске)

Способов обнаружения ранее запушенных копий программ существует очень много — всех не перечислишь! Поэтому, не следует «зацикливаться» на одном FindWindow – подходите к решению каждой задачи творчески. Экспериментируйте, ищите собственные методы! Уверяю, они есть. На последок еще один довольно неожиданный способ, основанный на буфере обмена.

Если приложение регистрирует свой собственный формат данных (как часто и бывает), передавая его название функции RegisterClipboardFormat, это может служить отличным индикатором наличия уже запущенной копии приложения!

Причем, после выхода из приложения зарегистрированный формат не удаляется и не существует функций API, удаляющих его «в ручную». Это обстоятельство можно использовать для создания программ, рассчитанных всего лишь на один запуск на каждый сеанс работы с Windows. Использование динамической ветви реестра дает не худший результат за одним небольшим исключением — манипуляции с реестром элементарно отслеживают даже неопытные пользователи, вооруженные мониторами реестра, и при желании они смогут легко заставить приложение запуститься повторно, удалив из реестра соответствующую запись.

Замечание: кстати, ограничение «однократный запуск на весь сеанс работы с Windows» очень хорошо подходит для Shareware-программ. Такая защита чрезвычайно проста в реализации и, в то же время, не может быть обманута рядовым пользователем. Конечно, профессиональных взломщиков она не остановит, но в большинстве случаев этого и не требуется!

Пути достижения уникальности: прежде чем использовать способы, предложенные Нефедовым в его статье, необходимо научиться формировать уникальные имена, гарантированно не используемые никакими другими приложениями.

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

Второй способ заключается в использовании генератора случайных чисел, с помощью которого формируется уникальное имя до компиляции приложения. В среду разработки Microsoft Visual Studio входит удобная и компактная утилита UUIDGEN, генерирующая 128 битный уникальный идентификатор. Вообще-то она предназначается для создания неконфликтных идентификаторов интерфейсов OLE и ActiveX объектов, но ничуть не хуже подходит и для нашего случая.

Хостинг в Европе для новичков (от 25 руб/мес) и VIP-хостинг для профессионалов (от 1000 руб/мес)

Скидка 25% на все тарифы хостинга по промокоду STDCITF

Взаимодействие между двумя приложениями

Я читал возможные варианты и из того, что нашел, если верно понял не подходит ничего (отрицать не буду, еще не отоспался после сданного диплома и могу быть не внимателен, прошу простить)

имею 2 приложения, ссылки будут ниже
идея: имеется 2 приложения одно главное с действиями и второе только просмотр.
в первом приложении(DF Admin) выбираю определенный чекбокс и в приложении втором (DF User)
меняется цвет лейбла.

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

есть ли какой-либо способ чтобы нажать например чекбокс приложения 1 (DF Admin) автоматически во всех открытых копиях программы 1 ставился этот чекбокс и конечно же во всех открытых копиях программы 2(DF User) менялся цвет.

Диалог с компьютером

Существует два режима работы с компьютером. Первый режим называется пакетным, а второй — диалоговым. Если мы посмотрим, как Чарльз Бэббидж планировал использовать свою Аналитическую машину, то увидим, что он рассчитывал на пакетный режим. Сначала на “складе” устанавливаюгся рычаги и шестерни в такое положение, которое соответствует исходным данным. Потом в “мельницу” закладывается пакет перфорированных карточек, отверстия которых соответствуют запланированным командам, после чего машина приводится в действие. Она работает, пока все команды из пакета не будут выполнены. По окончании работы состояние исполнительных механических органов покажет результат.

Примерно так же работали и первые электронные компьютеры. Сначала в их оперативную память вводили программы (последовательности команд). Затем в компьютер вводили данные, после чего компьютер запускали. Он работал до тех пор, пока не исполнялась последняя команда, а затем выключался. Результат работы находили в его оперативной памяти и/или к регистрах процессора.

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

Диалоговый режим работы гораздо более прогрессивен. В этом режиме компьютер находится в непосредственном взаимодействии с пользователем и техническими устройствами. Все персональные компьютеры сегодня работают в диалоговом режиме.


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

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

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

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

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

Человек воспринимает постоянную готовность операционной системы к обслуживанию событий как диалоговый режим работы. Она как бы постоянно предлагает создать событие, и мы этим пользуемся. Основные средства для создания событий — это клавиатура и мышь, но к компьютеру можно подключить и другие устройства. При установке они регистрируются операционной системой, и он настраивается на обработку событий, связанных с ними. Так благодаря операционной системе компьютер не только готов к диалогу с пользователем, но способен развиваться и совершенствоваться.

Операционная система представляет комплекс системных и служебных программных средств. С одной стороны, она опирается на базовое программное обеспечение компьютера, входящее в его систему BIOS (базовая система ввода-вывода), с другой стороны, она сама является опорой для программного обеспечения более высоких уровней — прикладного и служебного. Приложениями конкретной операционной системы принято называть программы, предназначенные для работы под управлением данной системы.

Основная функция всех операционных систем — посредническая. Она заключается в обеспечении нескольких видов интерфейса:

• между пользователем и программно-аппаратными средствами компьютера (интерфейс пользователя);

между программным и аппаратным обеспечением (аппаратно-программный интерфейс);

• между разными видами программного обеспечения (программный интерфейс).

Даже для одной аппаратной платформы, например такой, как IBM PC, существует несколько операционных систем. Различия между ними рассматривают в двух категориях: внутренние и внешние. Внутренние различия характеризуются методами реализации основных функций. Внешние различия определяются наличием и доступностью приложений данной системы, необходимых для удовлетворения технических требований, предъявляемых к конкретному рабочему месту.

Не нашли то, что искали? Воспользуйтесь поиском:

Определить, запущена ли программа

Можно ли сделать это, желательно при помощи Qt (чтоб мультиплатформенно было)?

Re: Определить, запущена ли программа

нигде толком не нашел

Re: Определить, запущена ли программа

Чтоб мультиплатформенно — под каждую платформу разный тест.

Re: Определить, запущена ли программа

> нигде толком не нашел

ты на каждый чих ищешь в инете готовые заготовки? программист-конструктор, блин. а подумать — это уже моветон?

Re: Определить, запущена ли программа

Нет, типичный Code-Monkey.

Re: Определить, запущена ли программа

Re: Определить, запущена ли программа

Когда я столкнулся с такой задачей, я, не мудрствуя лукаво, просто изготовил объект QSettings и завел там специальный ключ в который писал текущее время(скажем, каждые пару секунд). Когда стартовала вторая копия, она проверяла наличие этого ключа. Если время отличалось от текущего не более, чем на две секунды, значит запущена еще одна копия. Тогда та копия, что запущена последней просто записывала ключ что-нибудь типа jump up и завершалась. Вторая, более старая, копия, не более чем через две секунды, увидев ключ «jump up», должна показать свое окно. В принципе работало неплохо. Разве что не достаточно красиво, зато кросплатформенно.

Re: Определить, запущена ли программа

imho, лучше, все-таки, через pid-файлы. а взаимодействие между копиями — через сигналы

Личные тайны: как защитить свою переписку в мессенджерах

Рассказывает руководитель проекта «Банки.ру — мобильная связь и интернет» Антонина Самсонова.

Сейчас мы пользуемся тем, о чём раньше не могли и мечтать. Интернет на каждом шагу, гаджеты на любой вкус, электронные деньги, телемедицина, «умные» дома.

Но у любой медали есть обратная сторона. За цифровые блага мы вынуждены платить утратой конфиденциальности. В сети «гуляют» наши личные данные, злоумышленники могут залезть в электронный кошелёк, а личная переписка часто становится достоянием общественности.

Можно ли в таких условиях защитить свои тайны и личную жизнь? Давайте разбираться.

От кого мы защищаемся

Чтобы понять, насколько серьёзные методы защиты стоит применять, нужно определиться, от кого мы хотим защитить нашу переписку.


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

К примеру, вы общаетесь со смартфона и используете один из следующих мессенджеров: WhatsApp, Viber и Telegram. Сильная сторона этих программ (и их же слабость) — использование номера телефона в качестве уникального идентификатора.

Не имея доступа к номеру, никто в вашу переписку не заберётся. Но номер телефона — это ваша SIM-карта. Любой человек, у которого в руках оказался ваш телефон или сама SIM-карта, автоматически становится вами для мессенджера.

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

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

С этим разобрались. А кто ещё может читать ваши сообщения? Прежде всего, администраторы самих мессенджеров, спецслужбы и злоумышленники. И тут всё гораздо интереснее.

End-to-end-шифрование

Большинство специалистов по безопасности признают метод end-to-end-шифрования одним из самых надёжных. Он защищает практически от любого несанкционированного проникновения в переписку.

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

Давайте разберёмся, как это работает. В начале сеанса связи у каждого из собеседников генерируются по два ключа. Один ключ — открытый — передаётся по сети собеседнику и работает для зашифровки сообщения.

Второй — закрытый — остаётся на устройстве. Закрытый ключ используется для расшифровки сообщений. Расшифровать данные можно только при помощи этого ключа. Он никуда не передаётся, переписка становится защищённой.

Все ли популярные мессенджеры автоматически используют end-to-end-шифрование? К сожалению, нет. И тут нам приходят на помощь специалисты по безопасности и обнаружению целенаправленных атак.

До недавнего времени большинство мессенджеров не шифровало сообщения. Так, в Telegram end-to-end-шифрование реализовано только в функции секретных чатов, которая появилась в конце 2013 года. В этом случае никто не сможет получить доступ к сообщениям или подменить информацию (ни провайдер, ни разработчик мессенджера).

Важно понимать, что секретные чаты, а значит и end-to-end-шифрование, доступны только пользователям мобильных устройств. В десктопных версиях эта функция отсутствует (исключением является macOS). Недавно end-to-end-шифрование на базе Signal стало использоваться другими программами: WhatsApp, Facebook Messenger и Google Allo.

Viber внедрил протокол Proteus, но это практически Signal. В целом, обычный пользователь может считать свою переписку в этих мессенджерах защищённой. Но от взлома путём кражи аккаунтов iCloud или Google Account эти мессенджеры не защитят, так как они делают резервные копии истории переписки в облаке в незашифрованном виде. Тогда как Signal, WIRE и Telegram не копируют историю переписки в облако.

Как определить работает ли уже данное приложение или это его первая копия

Сидит программист в столовой, обедает, суп ест. В очках такой, задумчивый, программу думает. Народу никого, все уже поели, ушли. Подходит к нему официантка и заигрывает:
— Если Вы хотите хорошо провести время, то меня зовут Маша!
Программист медленно возвращается на землю и смотрит на официантку отрешенным взглядом и на автопилоте спрашивает:
— А если не хочу, то как Вас зовут?!

Каждый экземпляр программы имеет ссылку на свою предыдущую копию — hPrevInst: hWnd. Ее можно проверить перед созданием приложения и при необходимости отреагировать соответствующим образом. Если запущена только одна копия, то эта ссылка равна нулю. Только для Delphi 1. Пример использования hPrevInst:

Другой способ — по списку загруженных приложений

Данный пример не всегда применим — часто заголовок приложения меняется при каждом старте, поэтому рассмотрим более надежный способ — через FileMapping

Дело в том, что можно в памяти создавать временные файлы. При перезагрузке они теряются, а так существуют. Кстати, этот метод можно использовать и для обмена информацией между вашими приложениями. Пример с использованием FileMapping:

Часто при работе у пользователя может быть открыто 5-20 окон и сообщение о том, что программа уже запущено приводит к тому, что он вынужден полчаса искать ранее запущенную копию. Выход из положения — найдя копию программы активировать ее, для чего в последнем примере перед HALT необходимо добавить строку : SetForegroundWindow(Wnd);

Блокировка запуска второй копии при помощи Mutex На мой взгляд, это один из самых простых и надежных способов.

В данном примере при старте приложения создается мьютекс с некоторым уникальным именем (у каждого приложения оно должно бять свое !!). Если хоть одна копия приложения запущена, то в системе уже будет мьютекс с таким именем и возникнет ошибка ERROR_ALREADY_EXISTS. В противном случае мьютекс создается и существует, пока работает данная копия приложения Задать вопрос

Copyright © 2004-2020 «Delphi Sources». Delphi World FAQ

Обмен между приложениями

Взаимодействие между различными приложениями может осуществляться по разному, например, через сокеты. Но в .NET 4.0 была введена новая функциональность, которая представляет собой создание участка общей разделяемой памяти для приложений.

Основной функционал новой технологии заключается в пространстве имен System.IO.MemoryMappedFiles

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

Для этого нам потребуются два класса: MemoryMappedFile — он будет создавать участок разделяемой памяти и MemoryMappedViewAccessor — с его помощью мы будем проводить взаимодействие (чтение/запись) с общей памятью.

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

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

Теперь запускаем первое приложение, вводим сообщение и отправляем его в память. Затем запускаем второе приложение и видим наше сообщение из разделяемой памяти.

Вредоносные программы. Типы вредоносных программ

5. Вредоносные программы. Типы вредоносных программ.

Вредоносными являются программы, наносящие вред данным и программам, хранящимся на компьютере.


Основными типами вредоносных программ являются:

• Вирусы, черви, троянские и хакерские программы. Эта группа объединяет наиболее распространенные и опасные категории вредоносных программ. Защита от них обеспечивает минимально допустимый уровень безопасности.

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

• Потенциально опасное программное обеспечение. Эта группа включает программы, которые не являются вредоносными или опасными, однако при некотором стечении обстоятельств могут быть использованы для нанесения вреда вашему компьютеру.

За создание, использование и распространение вредоносных программ в России и большинстве стран предусмотрена уголовная ответственность.

Компьютерный вирус — это специально написанная, небольшая по размерам программа, которая может «приписывать» себя к другим программам («заражать» их), создавать свои копии и внедрять их в файлы, системные области компьютера и т. д., а также выполнять различные нежелательные действия с информацией на компьютере.

Название «вирус» по отношению к компьютерным программам при­шло из биологии именно по признаку способности к само­размножению.

Первые исследования саморазмножающихся искусственных конструкций проводились в середине прошлого столетия. Термин «компьютерный вирус» появился позднее — в 1984 году на седьмой конференции по безопасности информации. Официально его автором считается сотрудник Лехайского университета (США) Ф. Коэн.

Виру­сы могут незаметно для пользователя внедряться в файлы, загрузочные секторы дисков и документы. После заражения компьютера вирус может активизиро­ваться и заставить компьютер выполнять какие-либо дей­ствия. Активизация вируса может быть связана с различ­ными событиями (наступлением определенной даты или дня недели, запуском программы, открытием документа и т. д.).

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

Программа, внутри которой находится вирус, называется «зараженной». Когда такая программа начинает работу, то сначала управление получает вирус. Вирус находит и «заражает» другие программы, а также выполняет какие-нибудь вредные действия (например, портит файлы или таблицу размещения файлов на диске, «засоряет» оперативную память и т. д.).

Один из авторитетнейших «вирусологов» страны Евгений Касперский предлагает условно классифицировать вирусы по следующим признакам:

• по среде обитания вируса

• по способу заражения среды обитания

• по особенностям алгоритма вируса.

распространяются по компьютерной сети

внедряются в выполняемые файлы

внедряются в загрузочный сектор диска (Boot-сектор)

находятся в памяти, активны до выключения компьютера

не заражают память, являются активными ограниченное время

практически не влияют на работу; уменьшают свободную память на диске в результате своего распространения

уменьшают свободную память, создают звуковые, графические и прочие эффекты

могут привести к серьезным сбоям в работе

могут привести к потере программ или системных данных

Особенности Алгоритма вируса:

вирусы, не изменяющие файлы, создают для ЕХЕ-файлов файлы-спутники с расширением, СОМ

распространяются по сети, рассылают свои копии, вычисляя сетевые адреса

изменяют содержимое дисковых секторов или файлов

примитив, содержат большое количество ошибок

«стелс» — вирусы (невидимки)

перехватывают обращения DOS к пораженным файлам или секторам и подставляют вместо себя незараженные участки

не имеют ни одного постоянного участка кода, труднообнаруживаемые, основное тело вируса зашифровано

пишутся не в машинных кодах, а на WordBasic, живут в документах Word, переписывают себя в Normal. dot

Загрузочные вирусы. Загрузочные вирусы заражают за­грузочный сектор гибкого или жесткого диска. Принцип действия загрузочных вирусов основан на алгоритмах запус­ка операционной системы при включении или перезагрузке компьютера. После необходимых тестов установленного об­орудования программа системной загрузки считывает пер­вый физический сектор загрузочного диска (гибкого, жест­кого, оптического или флэш-диска в зависимости от параметров, установленных в BIOS Setup) и передает на него управление. При заражении дисков загрузочные вирусы «подставля­ют» свой код вместо программы, получающей управление при загрузке системы, и отдают управление не оригинально­му коду загрузчика, а коду вируса. При инфицировании диска вирус в большинстве случаев переносит оригиналь­ный загрузочный сектор в какой-либо другой сектор диска (например, в первый свободный). Профилактическая защита от таких вирусов состоит в отказе от загрузки операционной системы с гибких дисков и установке в BIOS вашего компьютера защиты загрузочного сектора от изменений. С помощью программы BIOS Setup можно провести настройку BIOS таким образом, что будет запрещена (заблокирована) любая запись в загрузочный сек­тор диска и компьютер будет защищен от заражения загру­зочными вирусами.

Файловые вирусы. Файловые вирусы различными спо­собами внедряются в исполнимые файлы и обычно активи­зируются при их запуске. После запуска зараженного файла вирус находится в оперативной памяти компьютера и яв­ляется активным (т. е. может заражать другие файлы) вплоть до момента выключения компьютера или перезагруз­ки операционной системы.

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


Макровирусы. Существуют макровирусы для интегри­рованного офисного приложения Microsoft Office (Word, Excel, PowerPoint и Access). Макровирусы фактически яв­ляются макрокомандами (макросами), на встроенном язы­ке программирования Visual Basic for Applications (VBA), которые помещаются в документ. При работе с документом пользователь выполняет раз­личные действия: открывает документ, сохраняет, печата­ет, закрывает и т. д. При этом приложение ищет и выпол­няет соответствующие стандартные макросы. Макровирусы содержат стандартные макросы, вызываются вместо них и заражают каждый открываемый или сохраняемый доку­мент.

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

Профилактическая защита от макровирусов состоит в предотвращении запуска вируса. При открытии документа в приложениях Microsoft Office сообщается о присутствии в них макросов (потенциальных вирусов) и предлагается за­претить их загрузку. Выбор запрета на загрузку макросов надежно защитит ваш компьютер от заражения макровиру­сами, однако отключит и полезные макросы, содержащиеся в документе.

Сетевые черви (англ. worm) являются вредоносными программами, которые проникают на компьютер, используя сервисы компьютерных сетей: Всемирную паутину, элек­тронную почту и т. д. Основным признаком, по которому типы червей разли­чаются между собой, является способ распространения чер­вя — как он передает свою копию на удаленные компьюте­ры. Однако многие сетевые черви используют более одного способа распространения своих копий по компьютерам ло­кальных и глобальных сетей. Активизация сетево­го червя может вызывать уничтожение программ и данных, а также похищение персональных данных пользователя.

Web-черви. Отдельную категорию составляют черви, ис­пользующие для своего распространения Web-серверы. За­ражение происходит в два этапа. Сначала червь проникает в компьютер-сервер и модифицирует Web-страницы сервера. Затем червь «ждет» посетителей, которые запрашивают ин­формацию с зараженного сервера (например, открывают в браузере зараженную Web-страницу), и таким образом про­никает на другие компьютеры сети.

Разновидностью Web-червей являются скрипты — ак­тивные элементы (программы) на языках JavaScript или VBScript, которые могут содержаться в файлах Web-стра­ниц. Заражение локального компьютера происходит при их передаче по Всемирной паутине с серверов Интернета в браузер локального компьютера.

Профилактическая защита от таких червей состоит в том, что в браузере можно запретить получение активных элементов на локальный компьютер. Еще более эффективны Web-антивирусные программы, которые включают межсетевой экран и модуль проверки скриптов на языках JavaScript и VBScript.

Почтовые черви. Почтовые черви для своего распрос­транения используют электронную почту. Червь либо отсы­лает свою копию в виде вложения в электронное письмо, либо отсылает ссылку на свой файл, расположенный на ка­ком-либо сетевом ресурсе. В первом случае код червя акти­визируется при открытии (запуске) зараженного вложения, во втором — при открытии ссылки на зараженный файл. В обоих случаях эффект одинаков — активизируется код чер­вя.

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

Профилактическая защита от почтовых червей состоит в том, что не рекомендуется открывать вложенные в почтовые сообщения файлы, полученные из сомнительных источни­ков. Рекомендуется своевременно скачивать из Интер­нета и устанавливать обновления системы безопасности опе­рационной системы и приложений.

Троянская программа, троянец (от англ. trojan) — вредоносная программа, которая выполняет несанкционированную пользователем передачу управления компьютером удаленному пользователю, а также действия по удалению, модификации, сбору и пересылке информации третьим лицам. Кроме того, троянские программы могут вызывать нарушение работоспособности компьютера или незаметно для пользователя использовать ресурсы ком­пьютера в целях злоумышленника. Троянские программы обычно проникают на компьютер как сетевые черви. Они различаются между собой по тем дей­ствиям, которые они производят на зараженном компьютере.

Троянские утилиты удаленного администрирования. Утили­ты скрытого управления позволяют принимать или отсы­лать файлы, запускать и уничтожать их, выводить сообще­ния, стирать информацию, перезагружать компьютер и т. д. При запуске троянец устанавливает себя в системе и за­тем следит за ней, при этом пользователю не выдается ника­ких сообщений о действиях троянской программы в систе­ме. В результате «пользователь» этой троянской программы может и не знать о ее присутствии в системе, в то время как его компьютер открыт для удаленного управления. Троянские программы данного типа являются одним из самых опасных видов вредоносного программного обеспече­ния, поскольку в них заложена возможность самых разнооб­разных злоумышленных действий, в том числе они могут быть использованы для обнаружения и передачи конфиден­циальной информации.

Троянские программы — шпионы. Данные троянцы осуществляют электронный шпионаж за пользователем за­раженного компьютера: вводимая с клавиатуры информа­ция, снимки экрана, список активных приложений и действия пользователя с ними сохраняются в каком-либо файле на диске и периодически отправляются злоумышленнику. Троянские программы этого типа часто используются для кражи информации пользователей различных систем онлайновых платежей и банковских систем.

Рекламные программы. Рекламные программы (англ. Adware: Advertisement — реклама и Software — программное обеспечение) встраивают рекламу в основную полезную про­грамму и могут выполнять функцию троянских программ. Рекламные программы могут скрытно собирать различную информацию о пользователе компьютера и затем отправлять ее злоумышленнику.

Сетевые атаки. Сетевые атаки на удаленные серверы ре­ализуются с помощью специальных программ, которые по­сылают на них многочисленные запросы. Это приводит к от­казу в обслуживании (зависанию сервера), если ресурсы атакуемого сервера недостаточны для обработки всех посту­пающих запросов. Многие из них сбивают очерёдность обработки поступающих запросов, сбрасывают защиту от большого количества запросов.

DoS-программы (от англ. Denial of Service — отказ в об­служивании) реализуют атаку с одного компьютера с ведома пользователя. DoS-программы обычно наносят ущерб уда­ленным компьютерам и сетям, не нарушая работоспособно­сти зараженного компьютера.

DDoS-программы (от англ. Distributed DoS — распреде­ленный DoS) реализуют распределенные атаки с разных компьютеров, причем без ведома пользователей зараженных компьютеров. Для этого DDoS-программа засылается на компьютеры «жертв-посредников» и после запуска в зависи­мости от текущей даты или по команде от хакера начинает сетевую атаку на указанный сервер в сети.

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

Утилиты взлома удаленных компьютеров. Утилиты взлома удаленных компьютеров предназначены для проник­новения в удаленные компьютеры с целью дальнейшего управления ими (используя методы троянских программ типа утилит удаленного администрирования) или для внедре­ния во взломанную систему других вредоносных программ.

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

Руткиты. Руткит (от англ. root kit — «набор для полу­чения прав root») — программа или набор программ для скрытого взятия под контроль взломанной системы. Это утилиты, используемые для сокрытия вредоносной активности. Они маскируют вредоносные программы, чтобы избе­жать их обнаружения антивирусными программами. Руткиты модифицируют операционную систему на компьютере и заменяют основные ее функции, чтобы скрыть свое со­бственное присутствие и действия, которые предпринимает злоумышленник на зараженном компьютере.

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

Основные признаки проявления вирусов

При заражении компьютера вирусом важно его обнаружить. Для этого следует знать об основных признаках проявления вирусов. К ним можно отнести следующие:

— прекращение работы или неправильная работа ранее успешно функционировавших программ;

— медленная работа компьютера

— невозможность загрузки операционной системы

— исчезновение файлов и каталогов или искажение их содержимого;

— изменение даты и времени модификации файлов;

— изменение размеров файлов;

— неожиданное значительное увеличение количества файлов на диске;

— существенное уменьшение размера свободной оперативной памяти;

— вывод на экран непредусмотренных сообщений или изображений;

— подача непредусмотренных звуковых сигналов;

— частые зависания и сбои в работе компьютера.

Следует отметить, что вышеперечисленные явления необязательно вызываются присутствием вируса, а могут быть следствием других причин. Поэтому всегда затруднена правильная диагностика состояния компьютера.

Методы защиты от компьютерных вирусов.


Для защиты от вирусов можно использовать:

· общие средства защиты информации, (копирование информации и разграничение доступа). Они полезны и как страховка от физической порчи дисков, неправильной работы программ, ошибочных действий пользователя, несанкционированного доступа;

· профилактические меры, позволяющие уменьшить вероятность заражения вирусом;

· специализированные программы для защиты от вирусов.

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

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

Программы-доктора или фаги не только находят зараженные вирусами файлы, но и удаляют из файла тело программы-вируса, возвращая файлы в исходное состояние. В начале своей работы фаги ищут вирусы в оперативной памяти, уничтожая их, и только затем переходят к «лечению» файлов. Среди фагов выделяют полифаги, т. е. программы-доктора, предназначенные для поиска и уничтожения большого количества вирусов. Наиболее известные из них: Aidstest, Scan, Norton AntiVirus, Doctor Web.

Учитывая, что постоянно появляются новые вирусы, программы-детекторы и программы-доктора быстро устаревают, и требуется регулярное обновление версий.

Программы-вакцины, или иммунизаторы — это резидентные программы, предотвращающие заражение файлов. Они модифицируют программы и диски таким образом, что это не отражается на работе программ, но тот вирус, от которого производится вакцинация, считает эти программы или диски уже зараженными и поэтому не внедрится. Вакцины применяют, если отсутствуют программы-доктора, «лечащие» этот вирус. Вакцинация возможна только от известных вирусов. Эти программы крайне неэффективны и практически не используются.

Программы-ревизоры запоминают исходное состояние программ, каталогов и системных областей диска тогда, когда компьютер не заражен вирусом, а затем периодически или по желанию пользователя сравнивают текущее состояние с исходным. Для поиска новых вирусов используются алгоритмы эв­ристического сканирования, т. е. анализа последовательнос­ти команд в проверяемом объекте. Если «подозрительная» последовательность команд обнаруживается, то антивирус­ная программа выдает сообщение о возможном заражении объекта. Как правило, сравнение состояний производят сразу после загрузки операционной системы. При сравнении проверяются длина файла, код циклического контроля (контрольная сумма файла), дата и время модификации, другие параметры. Программы-ревизоры имеют достаточно развитые алгоритмы, обнаруживают стелс-вирусы и могут даже очистить изменения версии проверяемой программы от изменений, внесенных вирусом. К числу программ-ревизоров относится широко распространенная в России программа Adinf.

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

— попытки коррекции файлов с расширениями COM, EXE;

— изменение атрибутов файла;

— прямая запись на диск по абсолютному адресу;

— запись в загрузочные сектора диска;

— загрузка резидентной программы.

При попытке какой-либо программы произвести указанные действия «сторож» посылает пользователю сообщение и предлагает запретить или разрешить соответствующее действие. Примером программы-фильтра является программа Vsafe, входящая в состав пакета утилит MS DOS.

Ни один тип антивирусных программ по отдельности не дает полной защиты от вирусов. Современные антивирусные программы обеспечивают комплексную защиту программ и данных на компьютере от всех типов вредоносных программ и методов их проникновения на компьютер (Интернет, локальная сеть, электронная почта и съемные носители информации). Принцип работы антивирусных программ основан на проверке файлов, загрузочных секторов дисков и оперативной памяти и поиске в них известных и новых вредоносных кодов.

Следует отметить, что антивирусные программы могут видеть угрозу там, где её нет (ложные срабатывания). Различные методы шифрования и упаковки вредоносных программ делают даже известные вирусы не обнаруживаемыми антивирусным программным обеспечением. Для обнаружения этих «замаскированных» вирусов требуется мощный механизм распаковки, который может дешифровать файлы перед их проверкой. Однако во многих антивирусных программах эта возможность отсутствует и, в связи с этим, часто невозможно обнаружить зашифрованные вирусы.

Лучшей стратегией защиты от вирусов является многоуровневая, «эшелонированная» оборона. Средствам разведки в «обороне» от вирусов соответствуют программы-детекторы, позволяющие проверять вновь полученное программное обеспечение на наличие вирусов. На переднем крае обороны находятся программы-фильтры. Эти программы могут первыми сообщить о работе вируса и предотвратить заражение программ и дисков. Второй эшелон обороны составляют программы-ревизоры, программы-доктора и доктора-ревизоры. Самый глубокий эшелон обороны — это средства разграничения доступа. Они не позволяют вирусам и неверно работающим программам, даже если они проникли в компьютер, испортить важные данные. В «стратегическом резерве» находятся архивные копии информации. Это позволяет восстановить информацию при её повреждении.

Большинство антивирусных программ сочетает в себе функции постоянной защиты (антивирусный монитор) и функции защиты по требованию пользователя (антивирус­ный сканер).

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

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

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

Межсетевой экран. Межсетевой экран (брандмауэр) — это программное или аппаратное обеспечение, которое про­веряет информацию, входящую в компьютер из локальной сети или Интернета, а затем либо отклоняет ее, либо пропус­кает в компьютер, в зависимости от параметров бранд­мауэра. Межсетевой экран обеспечивает проверку всех Web-страниц, поступающих на компьютер пользователя. Каждая Web-страница перехватывается и анализируется межсетевым экраном на присутствие вредоносного кода. Распознавание вредоносных программ происходит на основании баз, исполь­зуемых в работе межсетевого экрана, и с помощью эвристиче­ского алгоритма. Базы содержат описание всех известных на настоящий момент вредоносных программ и способов их обезвреживания. Эвристический алгоритм позволяет обнару­живать новые вирусы, еще не описанные в базах.

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

Если на компьютере используются такие программы, как программа передачи мгновенных сообщений или сете­вые игры, которым требуется принимать информацию из Интернета или локальной сети, межсетевой экран запраши­вает пользователя о блокировании или разрешении подклю­чения. Если пользователь разрешает подключение, брандма­уэр Windows создает исключение, чтобы в будущем не тревожить пользователя запросами по поводу поступления информации для этой программы.

Межсетевой экран позволяет:

1. блокировать хакерские DoS-атаки, не пропуская на за­щищаемый компьютер сетевые пакеты с определенных серверов (определенных IP-адресов или доменных имен);

2. не допускать проникновение на защищаемый компьютер сетевых червей;

3. препятствовать троянским программам отправлять конфи­денциальную информацию о пользователе и компьютере.

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

Проверка скриптов в браузере. Проверка всех скриптов, обрабатываемых в браузере, производится следующим обра­зом:

• каждый запускаемый на Web-странице скрипт пере­хватывается модулем проверки скриптов и анализиру­ется на присутствие вредоносного кода;

• если скрипт содержит вредоносный код, модуль про­верки скриптов блокирует его, уведомляя пользовате­ля специальным всплывающим сообщением;

• если в скрипте не обнаружено вредоносного кода, он выполняется.


Техника безопасности по защите от компьютерных вирусов

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

1. оснастите свой компьютер современными антивирусными программами и постоянно обновляйте их версии;

2. перед считыванием информации с дисков и флеш-накопителей, записанных на других компьютерах, всегда проверяйте их на наличие вирусов, запуская антивирусные программы своего компьютера;

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

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

5. обязательно делайте архивные копии ценной для вас информации;

6. не оставляйте диски и флэш-накопители в дисководах и разъёмах компьютера при его включении или перезагрузке, чтобы исключить заражение компьютера загрузочными вирусами;

7. используйте антивирусные программы для входного контроля всех файлов, получаемых из компьютерных сетей.

8. Критически подходите к предоставляемой вам в сети информации. Одна из задач распространителей вредоносного ПО — спровоцировать пользователя на совершение определенных действий (посещение определенной страницы, установка определенной программы, отправка платного sms-сообщения). Злоумышленники, как правило, используют интерес пользователей к рефератам, программам для взлома лицензий, «ускорителям работы интернета», «супер — антивирусам», сообщениям типа «Вашу страницу взломали и сейчас заблокируют. Перейдите по ссылке и введите свой номер телефона», денежным выигрышам. Например, «Вы й пользователь! Пройдите по этой ссылке и получите 1 $!». Это обман и попытки заставить вас скачать зараженный файл или перечислить деньги со счёта вашего телефона.

9. Не открывайте ссылки, присланные по почте, ICQ, через социальные сети, если вы не знаете отправителя, а тема письма вызывает у вас подозрения. Даже если письмо прислано вашим знакомым, но название сайта вам не знакомо, удостоверьтесь, что ссылку вам прислал именно он, связавшись с ним другим способом.

10. периодически проверяйте систему антивирусными программами разных фирм.

1. Перечислите основные типы вредоносных программ.

2. Что такое компьютерный вирус?

3. Кто является автором термина «компьютерный вирус»?

4. Назовите известных вам «компьютерных вирусологов».

5. Какова классификация компьютерных вирусов по Касперскому?
Кратко охарактеризуйте каждый из 16 видов.

6. Какие программы относятся к вирусоподобным?

7. Какие программы называют спутниками?

8. Какие программы называют червями? Каковы их разновидности? В чём их особенности?

9. Каковы разновидности троянских программ? В чём их особенности?

10. Каковы разновидности хакерских утилит? В чём их особенности?

11. Для чего нужны антивирусные программы?

12. В чем особенность программ-детекторов?

13. Что такое сигнатура?

14. В чем особенность программ-докторов?

15. В чем особенность программ-вакцин?

16. В чем особенность программ-ревизоров?

17. В чем заключается алгоритм эвристического сканирования?

18. В чем особенность программ-фильтров?

19. Чем отличается антивирусный монитор от антивирусного сканера?

20. Для чего нужен межсетевой экран? Что он умеет делать?

21. Зачем нужна проверка скриптов в браузерах?

Кабинет Информатики

Приветствую Вас Гость | RSS
Главная | Регистрация | Вход Вторник, 12.11.2020, 21:08
Меню сайта
Категории раздела
Статьи с сайтов [47]

Новости.
Конкурсы
Статистика
Форма входа

Свободно распространяемые программы

Свободно распространяемые программы — это такие бесплатные программы, которые предоставляют конечному пользователю большую свободу действий. Также называется открытым программным обеспечением (Open Source Software).

Вы можете их абсолютно бесплатно распространять, использовать и модифицировать. Самый большой плюс данных программ состоит в том, что их разрешено бесплатно использовать в организациях, школах, университетах, в том числе и дома. Большинство представленных программ распространяются по лицензиям GNU GPL v2, GNU GPL v3, GNU LGPL, BSD и MIT.

Почему стоит перейти на свободные программы?

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

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

Cайт «Континет свободы» предлагает к вашему вниманию именно свободное программное обеспечение, а не просто бесплатные программы. Это связано с тем, что большинство бесплатных программ запрещено использовать в офисе, то есть в организации, компании. Уточнить запрещено или разрешено использование в офисе можно, если прочитать лицензионное соглашение данного программного обеспечения. В нём будет написано об использовании только для дома или домашнего офиса, или будет написано, что запрещено использовать с целью коммерческой прибыли. Домашний офис, это когда на работу вы приходите со своим личным ноутбуком, и на нём у вас и находится эта программа. Данный ноутбук не должен числиться за организацией. Не надо путать с вашим личным компьютером, который стационарно стоит в офисе — это не будет считать домашним офисом.

Какая выгода для разработчиков свободных программ?

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

У вас может создаться логичный вопрос, раз программа является бесплатной для всех, и даже более, её можно модифицировать, то какая может быть от неё выгода для её разработчика? Действительно, на первый взгляд это может показаться как минимум странным. Для начала, перечислим типы разработчиков:

  • Энтузиасты;
  • Коммерческие компании;
  • Студенты.

Теперь рассмотрим каждый тип разработчиков. Энтузиасты разрабатывают такие свободные программы пока это им интересно, но тут момент, что раз открыт исходный код, то на смену одного энтузиаста обязательно придет другой. В свободно распространяемых программах обычно нет рекламы, как например, в бесплатной версии антивируса аваст, где он на каждом углу предлагает купить платную версию. Хотя нужно признать, что бывают редкие исключения. Коммерческие организации могут писать программы по свободным лицензиям, дабы не вести её поддержку. Это один из вариантов. Также они могут саму программу распространять свободно, а также предлагать услуги по её установке, настройке, обслуживанию, или просто просить деньги за то, что запишут вам её на диск, но никак не за саму программу! Иногда компании разрабатывают параллельно два продукта. Один продукт является минимальной версией второго. И этот минимальный продукт они распространяют по свободной лицензией. Делают это обычно для привлечения внимания ко второму продукту. Студенты — Линукс изначально и появился на свет, как курсовой проект одного студента.

Свободно распространяемое ПО может быть трех основных видов: общедоступное, свободно распространяемое (freeware) и ПО с открытыми кодами.

Общедоступное ПО не охраняется авторским правом, а стало быть, может использоваться, распространяться и модифицироваться без ограничений. Тем не менее оно не может быть применено кем-либо для создания нового программного продукта, который, оказавшись впоследствии под защитой авторского права, изменит тем самым общественный статус такого ПО. Поскольку авторское право — неотъемлемый атрибут любого распространяемого ПО, необходимо прямое указание автора на принадлежность его программы к public domain, то есть на то, что она отчуждена от прав автора и является общей собственностью. Многие из Интернет-стандартов, включая TCP/IP и HTML, относятся к общедоступному ПО. При распространении оно может как сопровождаться исходными кодами, так и не иметь их.

Свободно распространяемое ПО (Freeware) представляет собой такой тип ПО, создатель которого сохраняет за собой свои авторские права. Эти программы можно копировать и использовать бесплатно, но нельзя модифицировать. Также необходимо получить предварительное согласие автора на применение кода. Как правило, авторы выпускают компьютерные программы в формате freeware с ограниченными функциями, чтобы оценить, насколько они будут востребованы, и в случае успеха меняют его статус на коммерческий. Иногда разработчики таких программ не хотят в дальнейшем тратить деньги на их техническую поддержку. Некоторые виды freeware могут находиться только в личном пользовании — применение их в коммерческих целях не допускается; другие требуют предварительной регистрации. В этом случае пользователь должен послать свои данные автору, чтобы получить доступ к компьютерной программе. Нередко freeware (а иногда даже shareware) ошибочно причисляют к public domain software. На самом деле лишь малая часть этих программ относится к категории общедоступных. Платить за такие программы не нужно, однако авторские права на них остаются за автором. Из этого следует, что автор продолжает отслеживать судьбу программы и может даже перевести ее в статус условно бесплатного или коммерческого ПО.

Программное обеспечение с открытыми исходными текстами (open code software) характеризуется в первую очередь свободным доступом к исходным текстам. Его пользователи имеют право свободно выполнять следующие операции:

  • запускать программу для любых целей;
  • изучать, как программа работает, и модифицировать её;
  • распространять копии программы;
  • модифицировать программу и передавать ее улучшенный вариант третьим лицам.

Объединение преимуществ свободного доступа к исходным текстам с основными правами предоставляет пользователю такого ПО значительно более высокий уровень свободы по сравнению с теми, кто имеет дело с другими видами компьютерных программ. Программы с открытым исходным текстом (ОИТ) дают пользователю возможность без всяких ограничений управлять ПО, копировать его, распространять, изучать и изменять. Модель интеллектуальной собственности на такое ПО отличается от той, на которой строится большинство коммерческих программных продуктов. Коммерческая модель предполагает в большинстве случаев только право на запуск программы и право пользователя сделать для себя резервную копию.

Когда речь идет о свободном ПО, в первую очередь имеется в виду именно свобода его использования, а не цена. Генеральная общественная лицензия была разработана, чтобы гарантировать пользователю:

  • право на распространение копий свободного ПО (и возможность при желании брать плату за эту услугу);
  • возможность получения исходного кода ПО;
  • право модифицировать ПО или использовать его компоненты в новых свободных программах.

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

Операционные системы

  • Современные операционные системы, Э. Таненбаум, 2002, СПб, Питер, 1040 стр., (в djvu 10.1Мбайт) подробнее>>
  • Сетевые операционные системы Н. А. Олифер, В. Г. Олифер (в zip архиве 1.1Мбайт)
  • Сетевые операционные системы Н. А. Олифер, В. Г. Олифер, 2001, СПб, Питер, 544 стр., (в djvu 6.3Мбайт) подробнее>>

4.1 Взаимодействие между процессами

Ситуации, когда приходится процессам взаимодействовать:

Передача информации от одного процесса другому

Контроль над деятельностью процессов (например: когда они борются за один ресурс)

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

Два вторых случая относятся и к потокам. В первом случае у потоков нет проблем, т.к. они используют общее адресное пространство.

4 .1.1 Передача информации от одного процесса другому


Передача может осуществляться несколькими способами:

Каналы (трубы), это псевдофайл, в который один процесс пишет, а другой читает.

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

Почтовые ящики (только в Windows), однонаправленные, возможность широковещательной рассылки.

Вызов удаленной процедуры, процесс А может вызвать процедуру в процессе В, и получить обратно данные.

Схема для канала

Схема для сокетов

4 .1.2 Состояние состязания

Состояние состязания — ситуация когда несколько процессов считывают или записывают данные (в память или файл) одновременно.

Рассмотрим пример, когда два процесса пытаются распечатать файл. Для этого им нужно поместить имя файла в спулер печати, в свободный сегмент.

in — переменная указывающая на следующий свободный сегмент

out — переменная указывающая на следующее имя файла для печати

Распишем события по пунктам.

Процесс А считывает переменную in (равную 7), и сохраняет ее в своей переменной next_free_slot.

Происходит прерывание по таймеру, и процессор переключается на процесс В.

Процесс В считывает переменную in (равную 7), и сохраняет ее в своей переменной next_free_slot.

Процесс В сохраняет имя файла в сегменте 7.

Процесс В увеличивает переменную next_free_slot на единицу (next_free_slot+1), и заменяет значение in на 8.

Управление переходит процессу А, и продолжает с того места на котором остановился.

Процесс А сохраняет имя файла в сегменте 7, затирая имя файла процесса В.

Процесс А увеличивает переменную next_free_slot на единицу (next_free_slot+1), и заменяет значение in на 8.

Как видно из этой ситуации, файл процесса В не будет напечатан.

4 .1.3 Критические области

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

Условия избегания состязания и эффективной работы процессов:

Два процесса не должны одновременно находиться в критических областях.

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

Невозможна ситуация, когда процесс вечно ждет (зависает) попадания в критическую область.

Взаимное исключение с использованием критических областей

4 .1.4 Взаимное исключение с активным ожиданием

Рассмотрим методы взаимного исключения

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

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

Вводится понятие переменной блокировки, т.е. если значение этой переменной равно, например 1, то ресурс занят другим процессом, и второй процесс переходит в режим ожидания (блокируется) до тех пор, пока переменная не примет значение 0.

метод блокирующих переменных

Проблема, как и с процессом печати, после того как первый процесс считает 0, второй может занять процессор и тоже считать 0. Заблокированный процесс находится в режиме активного ожидания, постоянно проверяя, не изменилась ли переменная блокировки.


В этой модели, процессы могут выполняться строго по очереди, используя переменную.

Заблокированный процесс постоянно находится в цикле, проверяя, не изменилась ли переменная.

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

Существуют еще алгоритмы с активным ожиданием (алгоритм Петерсона, команда TSL), но у всех них есть общий недостаток — расходуется бесцельно время процессора на циклы проверки изменения переменной.

4 .1.5 Примитивы взаимодействия процессов

Вводится понятия двух примитивов.

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

wakeup — системный запрос, в результате которого блокированный процесс будет запущен.

Основное преимущество — это отсутствие активного ожидания..

Проблема заключается в следующем, если спулер пуст, то wakeup срабатывает в пустую.

Проблема переполненного буфера (проблема производителя и потребителя)

Рассмотрим два процесса, которые совместно используют буфер ограниченного размера, один процесс пишет в буфер, другой считывает данные.

Чтобы первый процесс не писал, когда буфер полный, а второй не считывал, когда он пуст, вводится переменная count для подсчета количества элементов в буфере.

Проблема переполненного буфера

В этой ситуации оба процесса могут попасть в состояние ожидания, если пропадет сигнал активации.

Алгоритм такой ситуации:

Процесс В, считал count=0 (заблокироваться он еще не успел)

Планировщик передал управление процессу А

Процесс А, выполнил все вплоть до wakeup, пытаясь разблокировать процесс В (но он не заблокирован, wakeup срабатывает впустую)

Планировщик передал управление процессу В

И он заблокировался, и больше сигнала на разблокировку не получит

Процесс А в конце концов заполнит буфер и заблокируется, но сигнала на разблокировку не получит.

Семафоры — переменные для подсчета сигналов запуска, сохраненных на будущее.

Были предложены две операции down и up (аналоги sleep и wakeup).

Прежде чем заблокировать процесс, down проверяет семафор, если он равен нулю, то он блокирует процесс, если нет, то процесс снова становится активным, и уменьшает семафор на единицу.

up увеличит значение семафора на 1 или разблокирует процесс находящийся в ожидании..

down уменьшает значение семафора на 1 или блокирует процесс, если семафор =0.

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

Решение проблемы переполненного буфера с помощью семафора

Применим три семафора:

full — подсчет заполненных сегментов (в начале = 0)

empty — подсчет пустых сегментов (в начале = количеству сегментов)

mutex — для исключения одновременного доступа к буферу двух процессов. (в начале = 1)

Мьютекс упрощенная версия семафора, он управляет доступом к ресурсу. Показывает, блокирован или нет ресурс.

Решение проблемы переполненного буфера с помощью семафора

Применение семафоров для устройств ввода/ вывода

Для устройств ввода/вывода семафор выставляется равный нулю. После запуска управляющего процесса выполняется down, и т.к. семафор равен нулю, процесс блокируется. Когда нужно активизировать процесс управления, выполняется up.

Илон Маск рекомендует:  Что такое код feof
Понравилась статья? Поделиться с друзьями:
Кодинг, CSS и SQL