#ассемблер #память #асинхронность #процесс #теория
Здравствуйте, извиняюсь за возможно глупый вопрос, но скажите пожалуйста где располагаются регистры eax, ebx, ecx, edx, edi, esi, в оперативной памяти или процессоре? Сам вопрос появился после того как я подумал, что если я не чего не путаю, то регистры всегда вроде-бы располагались в процессоре (ну если верить книжкам), но я не могу понять одного, как десятки процессов используют эти регистры грубо говоря асинхронно, процессор же не может разорваться на каждый процесс. Ну и вот с этого момента мне стало очень интересно как так может быть и я решил спросить у профессионалов.
Ответы
Ответ 1
регистры располагаются, конечно, в процессоре (если речь о современных распространённых процессорах). попеременно же используются они разными процессами благодаря механизму многозадачности. в грубом приближении: внутри процессора есть таймер, который время от времени посылает процессору сигнал («прерывание»), при получении которого процессор сохраняет текущее содержимое всех регистров в стек (находится в оперативной памяти, обычно каждый процесс имеет собственный стек; а сохраняются туда регистры не только с данными, но и со всякой контрольно-управляющей информацией, типа ip — instruction pointer — адресом следующей выполняемой команды) и передаёт управление по адресу обработчика данного прервывания (обработчик обычно реализован в ядре операционой системы). обработчик выбирает, какой процесс следует запустить следующим (какому процессу отдать очередной «квант времени»), и даёт процессору команду «загрузить в регистры то, что сохранённо там-то». восстановленный же из стека процесс продолжает работу «как ни в чём не бывало», до следующего срабатывания таймера.Ответ 2
Регистры в процессоре. Многозадачность - фича ОС, которая сохраняет контекст процесса, включая регистры. Так и получается что один набор регистров вполне досаточен для многих процессов.
Комментариев нет:
Отправить комментарий