리눅스에서 쓰레드 컨텍스트 전환 동안 PC, SP, 레지스터와 같은 쓰레드 상태를 저장하는데 사용되는 구조체는 무엇입니까? freebsd에서의 TCB와 동등합니다. 가능한 경우 소스 파일 here을 가리 키십시오.리눅스의 쓰레드 제어 블록
우리는 프로세스 당 스레드가 아닌 PC 당 SP 등을 가지고 있으므로 PCB 자체만으로는 충분하지 않습니다.
리눅스에서 쓰레드 컨텍스트 전환 동안 PC, SP, 레지스터와 같은 쓰레드 상태를 저장하는데 사용되는 구조체는 무엇입니까? freebsd에서의 TCB와 동등합니다. 가능한 경우 소스 파일 here을 가리 키십시오.리눅스의 쓰레드 제어 블록
우리는 프로세스 당 스레드가 아닌 PC 당 SP 등을 가지고 있으므로 PCB 자체만으로는 충분하지 않습니다.
실제로는 task_struct
입니다. 리눅스에서는 태스크가 쓰레드, 프로세스 또는 그 사이의 어떤 것일 수 있습니다. 스레드는 다른 작업과 대부분의 것을 공유하는 작업 (VMA, 파일 설명자 등)에 부여하는 이름입니다.
이것은 스레드가 단지 특정 종류의 프로세스이며 동일한 기능 등을 통해 처리 될 수 있다는 생각과 일치합니다. 계획 9의 rfork()
및 Linux의 clone()
은 사용자 정의 가능한 프로세스 공유 수준이므로 동일한 기계를 사용하여 프로세스와 스레드를 만들게됩니다.
아마도 setcontext과 친구들이 필요 하겠지만 (코드는 이식성이 떨어지며 올바르게 진행하기가 어렵습니다)?
아니면 커널 내부에서 이야기하고 있습니까? 그럼 아마도 task_struct 당신이 무엇을 찾을 수 있을까 ??
예 - 나중을 찾고 있습니다.하지만 task_struct의 thread_info가 올바른지 확신 할 수 없습니다. 문맥 전환 중에 레지스터를 저장할 구조가없는 것 같습니다. 실제로 task_struct는 정확하게 PCB입니다. – Fakrudeen
나는 그 답을 모른다. 그러나'task_struct'에서 아마도 주소 공간과 주소 공간에서 그것을 가지고있는 쓰래드 작업 목록을 얻을 수 있을까? –