본문 바로가기

thread_info

(3)
[리눅스커널] current_thread_info()/current 함수와 자료구조 분석하기 리눅스 커널 코드를 읽으면 다음 매크로를 자주 볼 수 있습니다.+ current_thread_info()+ current 위 매크로를 활용해서 프로세스 태스크 디스크립터와 struct thread_info 구조체 필드 정보를 읽어 프로세스를 제어합니다. 4.10.1 current_thread_info()이전 절에서 프로세스 스택 최상단 주소에 struct thread_info 구조체에 프로세스 실행을 저장한다고 분석했습니다. current_thread_info() 매크로 함수는 프로세스가 어떤 함수를 실행하더라도 struct thread_info 구조체가 있는 스택 최상단 주소를 전달합니다. current_thread_info() 매크로 함수 구현부를 분석하기 전에 매크로 함수가 어느 코드에서 쓰는 지 ..
[리눅스커널] struct thread_info: 프로세스 컨택스트 정보를 어떤 자료구조에 저장할까? 프로세스 컨택스트 정보는 어떻게 저장할까? 리눅스 커널에서는 프로세스 실행 흐름은 컨택스트란 용어로 표현합니다. 컨택스트 종류는 다음과 같습니다. 1. 프로세스 컨택스트: 프로세스가 스케줄링 될 수 있는 상태 2. 인터럽트 컨택스트: 인터럽트가 발생한 후 인터럽트 핸들링을 위한 동작 중 3. Soft IRQ 컨택스트: Soft IRQ 서비스를 실행 중이며 Soft IRQ 서브루틴(하부 함수 흐름) 동작 중 컨택스트 정보는 struct thread_info 구조체 preempt_count 멤버에서 확인할 수 있습니다. 커널은 이 값을 읽어서 컨택스트 종류를 식별합니다. 커널에서는 어떻게 프로세스가 어떤 컨택스트에서 실행하는지 파악할까요?in_interrupt()와 in_softirq() 매크로 함수를 통해..
[리눅스커널] 프로세스 세부 실행 정보를 저장하는 struct thread_info 스레드 정보(struct thread_info)프로세스 상세 정보를 저장하는 자료구조는 태스크 디스크립터입니다. 이와 더불러 프로세스 세부 실행 정보를 저장하는 struct thread_info 자료구조가 있습니다. 커널이 프로세스를 생성할 때 프로세스마다 고유한 스택 공간을 부여합니다. 스택 최상단 주소에 struct thread_info 구조체 필드가 저장돼 있습니다. 이 구조체 필드는 커널이 프로세스를 제어할 때 필요한 중요 정보를 담고 있습니다.+ 프로세스 컨택스트 정보+ 선점 스케줄링 여부+ 컨택스트 스위칭 시 저장한 레지스터 세트 이번 절에서는 프로세스 동작을 표현하는 struct thread_info 구조체에 대해서 알아봅시다. struct thread_info 구조체 각 멤버에 대해 알아보..