테스크 구조체
테스크는 Task_Struct이라는 구조체에서 관리를 한다.
Task_Struct은 Page table fd를 포함하고 있다. User Space에서는 System call 함수를 호출하여 Kernel Stack(8KB)에 접근할 수 있으며 kernel Stack의 Current Macro를 통해 Task_struct의 접근하여 우선순위나 fd등에 접근 할 수 있다.
Process Context
리눅스에서는 Stack이 3개로 쓰여진다.
interrupt Stack: 인터럽트 발생 시 사용하는 Stack 이다. (CPU 에서는 Core 갯수만큼만 있다)
Kernel Stack: 시스템 콜 함수를 호출하였을 시 사용하는 Stack이다. (USER Process 만큼만 있다.)
USER Stack: 일반적으로 사용하는 Stack이다.
부모/자식 프로세스 구조
프로세스에서 부모 프로세스를 찾는 건 쉽지만 자식이 많으면 어떤 자식이 있는지 찾기가 쉽지 않다.
따라서 자식 프로세스들은 Sibling이라는 자료구조를 사용하여 서로 연결시켜놓았고 부모 프로세스는 Node하나로 자식 프로세스들을 찾을 수 있다
'Linux > RaspberryPi' 카테고리의 다른 글
Raspberry Pi Compute Module 3 b+ EMMC OS 올리기 (0) | 2021.06.01 |
---|---|
리눅스 및 커널 프로그래밍 스터디 정리 #5 (2) | 2021.01.15 |
리눅스 및 커널 프로그래밍 스터디 정리 #4 (0) | 2021.01.15 |
리눅스 및 커널 프로그래밍 스터디 정리 #3 (0) | 2021.01.13 |
리눅스 및 커널 프로그래밍 스터디 정리 #2 (0) | 2021.01.12 |