Поле thread
При каждом переключении процессов аппаратный контекст замещаемого процесса должен быть где-то сохранен. Он не может быть сохранен в сегменте состояния задачи, что соответствовало бы подходу Intel, т. к. в Linux используется один сегмент состояния задачи для всех процессов, а не отдельный сегмент для каждого процесса.
Поэтому дескриптор процесса включает в себя поле thread типа thread_ struct, в котором ядро сохраняет аппаратный контекст, когда происходит переключение с этого процесса на другой. Как мы увидим далее, эта структура имеет поля почти для всех регистров процессора, кроме регистров общего назначения еах, еЬх и др., которые сохраняются в стеке режима ядра.
Выполнение переключения процессов
Мы по-прежнему будем предполагать, что prev указывает на дескриптор замещаемого процесса, a next -на дескриптор активизируемого процесса. Как мы увидим, prev и next являются локальными переменными функции schedule().
Add A Comment