task_struct 2.4.18과 2.6.11 비교
- 최초 등록일
- 2006.08.31
- 최종 저작일
- 2006.04
- 28페이지/ 어도비 PDF
- 가격 2,500원
소개글
■ 개 요
프로세스(process)는 모든 멀티프로그래밍 운영체제의 필수 개념이다. 프로세스는 일반적으로 실행상태에 있는 프로그램의 인스턴스로 정의한다. 리눅스 소스 코드에서는 프로세스를 가리켜 ‘작업(task)’ 또는 ‘쓰레드(thread)’라고 부른다.
■ Task_struct 란?
프로세스를 다루려면 커널은 각 프로세스가 무엇을 하고 잇는지 명확히 알아야 한다. 예를 들어, 커널은 프로세스의 우선 순위, 프로세스가 실행 상태에 있는지 아니면 어떤 사건을 기다리며 블록 상태에 있는지, 프로세스에 어떤 주소 공간이 할당되어 있는지, 어떤 파일을 다룰 수 있는지 등을 알아야 한다. 이것이 프로세스 디스크립터(process descriptor) 즉 한 프로세스와 관련된 모든 정보를 담고 있는 task_struct 자료 구조의 역할이다.
목차
■ 개 요
■ Task_struct란
■ Task_struct 2.4.18
■ Task_struct 2.6.11
■ 고 찰
본문내용
▶ Task_struct source 2.4.18 분석
285 volatile long state; /* -1 unrunnable, 0 runnable, >0 stopped */
State 변수는 프로세스의 현재 스케줄링 상태를 나타내기 위한 코드를 포함한다. 이 변수에 대한 값은 같은 파일인 include/linux/sched.h 파일에 정의되어 있는 다음과 같은 값을 가진다. volatile로 선언된 것은 인터럽트 루틴에서 이 값을 바꿀 수 있기 때문이다. 비동기적으로 변하는 것이 반영되도록 하기 위해서이다.
#define TASK_RUNNING 0 실행중
#define TASK_INTERRUPTIBLE 1 휴식상태-시그널로 실행중으로 변환가능
#define TASK_UNINTERRUPTIBLE 2 휴식상태-조건이 맞을때까지 대기
#define TASK_ZOMBIE 3 소멸되었지만 테스크 구조가 남아있음
#define TASK_STOPPED 4 시그널에 의해 정지상태에 있음
#define TASK_SWAPPING 5 사용되지 않음
286 unsigned long flags; /* per process flags, defined below */
flag 변수는 프로세스가 어떠한 동작을 하고 있는 중인지 좀 더 상세한 정보를 가지고 있는 변수로 이에 해당하는 값 또한 include/linux/sched.h 파일에 다음과 같은 상수로 정의되어 있다. 이 값들은 앞의 state 변수의 값들과 달리 여러 개가 조합으로 설정될 수 있다.
참고 자료
없음