Изоляция процессов — это набор различных аппаратных и программных технологий [1], разработанных для защиты каждого процесса от других процессов в операционной системе . Это достигается путем предотвращения записи процесса A в процесс B.
Изоляция процесса может быть реализована с помощью виртуального адресного пространства , где адресное пространство процесса A отличается от адресного пространства процесса B, что не позволяет процессу A записывать данные в процесс B.
Безопасность легче обеспечить, запретив межпроцессный доступ к памяти, в отличие от менее безопасных архитектур, таких как DOS , в которой любой процесс может записывать данные в любую память любого другого процесса. [2]
В системе с изоляцией процессов ограниченное (контролируемое) взаимодействие между процессами может быть все еще разрешено по каналам межпроцессного взаимодействия (IPC), таким как общая память , локальные сокеты или интернет-сокеты . В этой схеме вся память процесса изолирована от других процессов, за исключением случаев, когда процесс разрешает ввод от сотрудничающих процессов.
Системные политики могут запрещать IPC в некоторых обстоятельствах. Например, в системах обязательного контроля доступа субъектам с разными уровнями чувствительности может быть запрещено общаться друг с другом. Последствия для безопасности в этих обстоятельствах являются широкими и охватывают приложения в систематике шифрования сетевых ключей, а также распределенные алгоритмы кэширования. Протоколы, определяемые интерфейсом, такие как базовая архитектура доступа к облаку и совместное использование сети, также затронуты. [3]
Операционные системы, которые поддерживают изоляцию процессов путем предоставления отдельных адресных пространств для каждого процесса, включают:
Internet Explorer 4 использовал изоляцию процессов, чтобы позволить отдельным оконным экземплярам браузера иметь собственные процессы; однако, в разгар войны браузеров , это было отменено в последующих версиях, чтобы конкурировать с Netscape Navigator (который стремился сосредоточиться на одном процессе для всего пакета Internet). Эта идея процесса на экземпляр не будет пересмотрена до тех пор, пока десятилетие спустя, когда просмотр с вкладками не станет более распространенным.
В « многопроцессной архитектуре » Google Chrome [4] и « слабо связанном IE (LCIE) » Internet Explorer 8 [5] вкладки, содержащие веб-страницы, содержатся в собственных полуотдельных процессах уровня ОС, которые изолированы от основного процесса браузера, чтобы предотвратить сбой одной вкладки/страницы от сбоя всего браузера. Этот метод (известный как многопроцессный или процесс-на-вкладку ) предназначен как для управления памятью, так и для обработки, позволяя проблемным вкладкам сбоить отдельно от браузера и других вкладок, а также для управления безопасностью.
Erlang (язык программирования) реализует аналогичную концепцию в пользовательском пространстве, реализуя строго разделенные легковесные процессы.