Сравнивайте с английским: нажмите на абзац — оригинал откроется в окне. Кнопка EN под абзацем показывает его прямо в тексте.
Введение
Конфликты расширений нередко были распространенной проблемой на компьютерах Apple Macintosh, работающих под классической ОС Mac, особенно System 7. Расширения представляли собой пакеты кода, расширяющие возможности операционной системы путем непосредственного изменения системных вызовов, получая контроль вместо операционной системы, когда приложения (включая Finder) выполняли системные вызовы. Обычно, после завершения задачи, расширение должно было передать (возможно, измененный) системный вызов в подпрограмму операционной системы. Если несколько расширений пытались изменить один и тот же системный вызов, они получали его по цепочке: первое расширение передавало управление следующему и так далее, в порядке их загрузки, пока последнее расширение не передавало его операционной системе. Если расширение не передавало следующее расширение то, что оно ожидало, возникали проблемы – от непредсказуемого поведения до полного сбоя системы. Это вызывалось различными факторами, такими как небрежно написанные и вредоносные расширения, изменяющие или нарушающие работу части системного программного обеспечения. Кроме того, расширения иногда конкурировали за системные ресурсы с приложениями, утилитами и другими расширениями, что приводило к сбоям и общей нестабильности. Некоторые пользователи без проблем загружали на свой компьютер все доступные расширения, в то время как другие тщательно избегали любых ненужных расширений, чтобы избежать проблем. Многие подходили к добавлению расширений разумно. Эта проблема усугубилась в середине 1990-х годов с появлением ресурсоемких мультимедийных технологий, таких как QuickTime, которые устанавливались в виде расширений. Кроме того, многие приложения, особенно Microsoft Office, требовали большого количества расширений. У многих пользователей Macintosh были установлены сотни расширений, различающихся по возрасту и качеству. Наиболее частыми причинами проблем были ошибочные, поврежденные и устаревшие расширения. Некоторым пользователям приходилось помнить об отключении проблемных расширений при запуске определенных программ. Более поздние версии System 7 включали Extensions Manager, который позволял отключать конкретные расширения или группы расширений при загрузке, устраняя конфликты нажатием клавиши пробела во время запуска компьютера. Этот инструмент также был доступен через открытие CDEV расширений в Панели управления, расположенной в меню Apple. Conflict Catcher и Now Startup Manager были сторонними утилитами, которые автоматически обнаруживали конфликты и проблемные расширения, а также другое программное обеспечение, запускаемое при загрузке. В противном случае это была трудоемкая задача, требующая отключения расширений группами до обнаружения конфликта, а также позволяла изменять порядок загрузки без переименования файлов. Расширения загружались только при запуске, поэтому любое изменение требовало перезагрузки. Чаще всего конфликты расширений возникали после выхода новой версии операционной системы, а также при установке сложного нового приложения, которое конфликтовало с существующими расширениями или устанавливало расширения, конфликтующие с уже установленными. Все это смягчалось простотой замены расширений и самой операционной системы: вместо изменения файлов конфигурации, как в других операционных системах, расширения и другое автоматически запускаемое программное обеспечение просто должны были находиться в определенной подпапке Папки системы, чтобы быть загруженными. Порядок их загрузки можно было изменить, переименовывая файлы в Finder в соответствии с убывающим ASCII-порядком для каждой подпапки системы. Кроме того, Mac без проблем поддерживал наличие двух (или более) Папок системы на жестком диске. Загружалась только "благословенная" Папка системы. Поэтому, при установке новой версии операционной системы или нового приложения, пользователь мог легко дублировать Папку системы, выполнить установку, а затем вернуться к предыдущей версии в случае возникновения проблем. Конфликты расширений прекратились с выпуском Mac OS X, который использует другой механизм расширений. Программное обеспечение по-прежнему может добавлять новые функции в Mac, но вместо использования расширения ядра, новый метод позволил Apple перенести все больше и больше расширений в пользовательское пространство, что является более безопасным и организованным подходом, который не может дестабилизировать всю систему.
Extension conflicts were sometimes a common nuisance on Apple Macintosh computers running the classic Mac OS, especially System 7. Extensions were bundles of code that extended the operating system's capabilities by directly patching OS calls, thus receiving control instead of the operating system when applications (including the Finder) made system calls. Generally, once an extension completed its task, it was supposed to pass on the (possibly modified) system call to the operating system's routine. If multiple extensions want to patch the same system call, they end up receiving the call in a chain, the first extension in line passing it on to the next, and so on in the order they are loaded, until the last extension passes to the operating system. If an extension does not hand the next extension in line what it is expecting, problems occur; ranging from unexpected behavior to full system crashes. This is triggered by several factors such as carelessly programmed and malicious extensions that change or disrupt the way part of the system software works. In addition, extensions sometimes competed for system resources with applications, utilities and other extensions, leading to crashes and general instability. Some users happily loaded every extension they could find on their computer, with little or no impact. Others fastidiously avoided any non essential extensions as a way of avoiding the problem. Many were judicious in the addition of extensions. This problem increased during the mid 1990s as resource hungry multimedia technologies such as QuickTime were installed as extensions. In addition, a number of applications, especially Microsoft Office, required a large number of extensions. Many Macintosh users had hundreds of extensions running on their systems, all of varying age and quality. Buggy, damaged and outdated extensions were the most common cause of problems. Some users had to remember to turn off problematic extensions when running certain programs. Later versions of System 7 included the Extensions Manager, which allowed users to disable specific extensions or groups of extensions at startup when troubleshooting the conflict by pressing the spacebar while the computer boots. This tool was also accessible by opening the Extensions CDEV in the Control Panels found in the Apple menu. Conflict Catcher and Now Startup Manager were third party utilities that automatically detected conflicts and problematic extensions and other software executing at boot, otherwise a time consuming task that required users to turn off extensions in sets until they found the conflict, as well as allowing load order to be altered without renaming items. Extensions were only loaded at startup time, meaning that any attempted change required a reboot. The most common time for extension conflicts to start was the release of a new version of the operating system, followed closely by the installation of a complex new application that either conflicted with existing extensions, or installed extensions that conflicted with the existing set. All of this was mitigated by the ease with which extensions and the operating system itself could be swapped in and out: Instead of modifying configuration files as on other operating systems, extensions and other automatically run software simply had to reside in a particular subfolder of the System Folder to be picked up. And load their order could be altered by renaming items in the Finder, based on descending ASCIIbetical order for each System subfolder. In addition, the Mac was perfectly happy to have two (or more) System Folders present on a hard drive. Only the "blessed" System Folder would be loaded at startup. So, when a new version of the operating system was to be installed, or a new application, the user could easily duplicate the system folder, perform the install, and then fall back if a problem resulted. Extension conflicts came to an end with the release of Mac OS X, which uses a different extension mechanism. Software can still add new features to the Mac but instead of requiring a kernel extension, the new method has allowed Apple to push more and more extensions into user space, which is a safer and more organized approach that cannot destabilize the entire machine.