시스템 호출의 실행을 얻을 수 있었고 커널에서 처리 중입니다. 그러나 나에게 아직 명확하지 않은 것은 거의 없습니다. swi 루틴에 들어가면 커널은 사용자 모드 레지스터를 스택에 저장합니다. 질문은 -리눅스 시스템 콜
누가 스택인가? (swi 핸들링과 해당 시스템 호출 루틴은 스택 프레임이 필요합니다.
커널 자체의 스택 인 경우, 스택이 할당 된 곳에서 ..? 현재 스택을 사용할 것인가? 그렇다면 현재는 커널에서 그 순간에 실행될 수있는 프로세스 일 수 있습니다. 이것은 현재 스택을 소모하지 않습니까?
swi 핸들러에서 현재 실행중인 사용자 프로세스 스택을 사용하는 경우 커널이 현재 액세스 할 사용자 주소 공간이됩니다. 이것이 가능합니까? 커널 주소 지정 가능 메모리가 1GB 이내이므로 (4GB RAM 메모리 시스템에서 커널 대 사용자 주소 공간 비율이 1 : 3 인 경우).
감사합니다. 사용자 모드 SP, LR은 SWI 처리기에 들어가면 저장됩니다. 하지만 현재 (리눅스 커널의 task_struct가 활성화되어 있음) SWI 핸들러 스택의 정보를 볼 수 있습니다. 어떻게 가능합니까? –