Что такое процесс в контексте операционных систем и Java?

«Что такое процесс в контексте операционных систем и Java?» — вопрос из категории Java Core, который задают на 22% собеседований Java Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Процесс — это экземпляр выполняемой программы, изолированный экземпляр с собственными ресурсами, который управляется операционной системой.

Ключевые характеристики процесса:

  • Изоляция: Имеет собное виртуальное адресное пространство в памяти.
  • Ресурсы: Владеет выделенными ресурсами (память, открытые файлы, сетевые сокеты).
  • Потоки: Может содержать один или несколько потоков выполнения (threads).
Отличие процесса от потока: Процесс Поток (Thread)
Изолированное адресное пространство Разделяет память процесса-родителя
Тяжеловесный, создание/переключение дорого Легковесный, создание/переключение дешевле
Коммуникация через IPC (каналы, сокеты) Коммуникация через общую память

Создание процесса в Java:

// Использование ProcessBuilder (рекомендуемый способ)
ProcessBuilder pb = new ProcessBuilder("notepad.exe", "myfile.txt");
pb.directory(new File("C:\Users")); // Установка рабочей директории
Process process = pb.start(); // Асинхронный запуск

// Чтение вывода процесса
InputStream inputStream = process.getInputStream();
// ... чтение из потока

int exitCode = process.waitFor(); // Блокировка до завершения
System.out.println("Код завершения: " + exitCode);

// Устаревший способ (Runtime.exec)
// Process p = Runtime.getRuntime().exec("cmd /c dir");

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