글
(1) tssk 자료 구조체
: 태스크(프로세스)가 생성되면 커널은 alloc_task_struct 매크로를 통해 커널영역의 메모리에서 8KB를 할당받아 '프로세스 디스크립터'와 '커널 스택의 자료'를 저장한다.
○ 8KB는 task_union 공도체를 사용해서 관리
union task_union{
struct task_struct task;
unsigned long stack[INIT_TASK_SIZE/sizeof(long)];
○ 8KB는 2페이지 크기이다.
○ 2페이지의 아랫부분은 디스크립터로 사용 나머지 윗부분은 커널스택!
- 커널스택 -> 프로세스가 사용자 영역에서 커널모드로 전환시 커널이 이 프로세스에 대해 사용하는 스택영역이다.
- esp레지스터 값을 통해 current 값을 알아 낼 수 있고, 이 current는 태스크를 가리키는 변수이다.<current.h 에...>
(2) task_struct 구조체를 구성하는 멤버(유형별)
○ 태스크 식별정보 : 다른 태스크들과 구별하는 정보
- "pid-PID | pgrp-그룹ID | session-세션ID | tgid-쓰레드 그룹ID | leader" 로 구분한다.
○ 상태정보
- 태스크의 상태를 크게 5가지로 나타낸다
RUNNING : 태스크가 실행중이거나 준비상태
INTERRUPTIBLE : 대기상태
UNINTERRUPTIBLE : 대기상태 - but H/W인터럽트만 허용
ZOMBIE : 좀비상태
STOPPED : 수행중단 상태
○ 스케줄링정보
- need_resched : 우선순위 높은 다른 태스크가 새성되거나 시간할당을 모두 소비시(스케줄러를 호출해야 할 필요 있는경우)
- policy : 스케줄 정책
- rt_priority : 실시간 태스크 우선순위
- nice : 일반 태스크 우선순위(-20 ~ +19)
- counter : tick(틱)단위로 CPU시간을 할당받기 위해 사용
○ 태스크관계정보
- 모든태스크는 가족관계를 갖는다. (포인터를 이용해 관계를 짓는다.)
*p_opptr, *p_pptr - 부모 || *p_cptr - 자식 || *p_ysptr - 동생 || *p_osptr - 형
- 원형 이중연결리스트로 연결되있다
next_task , prev_task 이용
○ 시그널정보
- 시그널 : 태스크에게 비동기적인 사건을 알려주는 매커니즘
sig : 시그널 핸들러 정보 저장
pending : 대기중인 시그널 리스트
blocked : 블록된 시그널
sigpending : 블록되지 않은 대기중인 시그널 있는지 표시
○ 콘솔정보
○ 메모리정보
- 태스크의 명령어 및 데이터는 메모리 공간에 저장 ==> 메모리 디스크립터에 저장한다.
mm_struct *mm : 메모리에 접근하기위한 포인터 변수
mm_struct *active_mm : 태스크 실행시 사용한는 메모리공간에 대한 정보를 가리킴
○ 파일정보
- 태스크는 실행되면서 파일관리 가능하다.
struct files_struct *files ->태스크가 오픈한 파일관리를 위한 포인터변수
struct fd_struct *fd ->이것을 통해 루트 디렉토리, 현재잡업중인 디렉토리에 접근가능
○ 문맥교환정보
- 문맥 : 커널이 관리하는 태스크의 자원과 수행환경들의 집합
○ 시간정보
- real_timer : 타이머 핸들러에대한 정보
- start_time : 태스크가 생성된 시간
- times : 사용자레벨과 커널레벨에서 태스크가 싱행된 시간
○ 자원정보
- 커널은 태스크가 사용할 수 있는 자원의 양을 제한해 과도한 자원의 사용을 막는다.
struct rlimit rmilm[RPIM_NLIMITS]
└>rlim_cur -->현재 설정된 허용자원의 수
└>rlim_max -->최대로 허용할 수 있는 자원의 수
char comm[16] --> 태스크의 이름
○ 기타정보
※ 출처 : http://idkkangjs.blog.me/30091117058
'L inux > Kernel' 카테고리의 다른 글
프로세스 - 상태와 전이 (0) | 2011.09.27 |
---|---|
프로세스 - 생성과 소멸 (0) | 2011.09.26 |
프로세스 - 프로세스와 프로세스 디스크립터 (0) | 2011.09.26 |
모듈(Module) (0) | 2011.09.26 |
시스템 콜(System Call) - 3 (0) | 2011.09.26 |
RECENT COMMENT