본문 바로가기

Linux/RaspberryPi

리눅스 및 커널 프로그래밍 스터디 정리 #1

테스크 구조체

 

 

테스크는 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하나로 자식 프로세스들을 찾을 수 있다