프로세스란 무엇인가 ..공부해보자.
Process Descriptor : 한 프로세스와 관련된 모든 정보를 담고 있는 task_struct 자료구조?
리스트의 각 task task_struct를 프로세스 디스크립터라한다.
?? 커널은 task_t 데이터 타입을 struct task_struct 와 같은 것으로 정의?
Figure 3.1. The process descriptor and task list.
Figure 3.3 Flow chart of process states
0 :TASK_RUNNIG
1 :TASK_INTERUPTIBLE
2: TASK_UNINTERRUPTIBLE
4: TASK_STOPPED
- 프로세스 실행 중단. SIGSTOP , SIGTSTP, SIGTTIN, SIGTTOU 일 경우
8: TASK_TRACED
16: EXIT_ZOMBIE
- 프로세스가 종료되었지만 부모프로세스가 wait4() , waitpid() 시스템 콜을 호출하여 종료 프로세스의 정보를 반환하지 않은 경우 -----------보충
32: EXIT_DEAD
- 보충----------------
64: TASK_DEAD
128 : TASK_WAKEKILL
256 : TASK_WAKING
커널에서는 set_task_state , set_current_state 매크로를 사용하여 프로세스의 상태를 설정
같은 그룹에 있는 스레드의 PID 가 같은가? 표준을 위해 리눅스는(Thread Group) 도입. 스레드들이 공유하는 식별자는 스레드 그룹의 리더, 즉 그룹 내 첫 번째 경량 프로세스의PID이며 프로세스 디스크립터의 tgid 필드에 저장된다. getpid() 시스템콜은 pid값 대신 tgid 값을 반환하므로 멀티스레드 애플리케이션의 모든 스레드는 같은 식별자를 공유한다. 대부분의 프로세스는 구성원이 1개인 스레드 그룹에 속하므로 tgid 필드는 pid 필드와 값이 같다..QQ~~.....?????????????????????????????
다시정리하자. 모르겠다.
thread_info 구조체(arch/x86/include/asm/thread_info.h)프로세스의 저수준(Low-level) 정보
104P 이해불가.
struct thread_info {
--------------arm----------- /* |
http://m.blog.daum.net/english_100/71 참고이해하도록
프로세스 디스크립터 포인터(Process Descriptor Pointer)를 통해 프로세스를 참조한다.
참고 : 그림및 내용 http://www.makelinux.net/books/lkd2/ch03lev1sec1
리눅스 커널의 이해(개정 3판)
http://forum.falinux.com/zbxe/index.php?document_srl=551428&mid=lecture_tip
'리눅스커널' 카테고리의 다른 글
systemcall (0) | 2015.04.15 |
---|---|
스와퍼(Swapper)프로세스 (0) | 2015.04.15 |
schedule()함수 (0) | 2015.04.15 |
프로세스1-3 (0) | 2015.04.14 |
불연속메모리할당 (1) | 2015.04.10 |