본문 바로가기

Linux/RaspberryPi

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

리눅스의 스레드 구현

 

리눅스의 스레드: 주소공간과 같은 자원을 프로세스와 공유

 

Kthread: 커널 스레드를 만드는 프로세스

-> 새로운 커널 스레드를 생성

    -> Kthread_create(int ...)

    -> 생성되었지만 BLOCK 상태

 

※ Kernel thread는 우선순위가 항상 높다(User thread 보다)

 

프로세스 종료

exit()를 집어넣지 않아도 컴파일러가 집어넣어준다.

 

자발적: exit()

비자발적: Signal, Exception

 

 

Process descriptor 제거

종료된 프로세스의 descriptor는 여전히 존재(task_struct)

  -> 자식 프로세스의 정보를 제공하기 위해 존재하며 부모가 가지고 오면 Delete

 

커널이 더 이상 필요 없다고 판단 되면제거

 

※ 좀비프로세스

자신이 종료할 때 자식 프로세스가 있으면 부모프로세스를 찾아주고 종료한다.

->exit() 안에 있음 다른부모가 결정되기 전까지 상태를 좀비프로세스라 한다.