Процесс начинает выполнять системный вызов open (например файла устройства). Может ли процесс уснуть в середине выполнения? Исходные данные: Система однопроцессорная. Предположим, что за время исполнения кода процессы, открывающие файл, не получают никаких сигналов. В коде драйвера для open() не вызываются функции вида interruptible_sleep_on(). Допустим сам код в драйвере выглядит так :
static int n_open(struct tty_struct *tty, struct file *fl){
//step_1 ......... //step_2 .........
return 0; }
Два процесса (р1 и р2) открывают файл. Допустим первым начал исполнение кода процесс р1. Выполнив step_1, процесс "засыпает". Далее процесс р2 выполняет код от начала до конца. Потом процесс р1 просыпается и завершает выполнение кода.
Возможна ли такая ситуация? Или же р1 выполнит код от начала до конца и заснуть по середине не может? Повторюсь - система однопроцессорная.
Или процессы р1 и р2 могут исполнить код только последовательно, сначала один процесс, а затем другой?