Computer Science
August 1, 2021

BCS: Потоки и процессы

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

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

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

Монитор - дополнительная надстройка над mutex'ом, в Java реализуется с помощью ключевого слова synchronized.

Семафор - средство для синхронизации доступа к какому-либо ресурсу. Особенность в том, что при создании механизма синхронизации он использует считчик, который указывает сколько потоков одновременно могут получать доступ к общему ресурсу. Семафоры в Java представлены специальным классом Semaphore.

Mutex - специальный объект для синхронизации потоков, прикреплен к каждому объекту Java, поэтому есть у всех экземпляров класса. Mutex - одноместный семафор.

*ЗАМЕТКА НА СТАДИИ РАЗРАБОТКИ*