[컴퓨터과학 운영체제] 리눅스 pcb (task_struct)분석
- 최초 등록일
- 2005.06.23
- 최종 저작일
- 2005.04
- 14페이지/ 한컴오피스
- 가격 1,500원
소개글
리눅스의 pcb인 task_struct 구조체에 대하여 source level에서 자세히 분석하였다.
목차
없음
본문내용
task란 프로그램의 수행환경, 스케줄링의 단위, 주소 공간과 제어 흐름의 집합, PCB(Process Control Block) 등 여러 가지로 정의된다. 특별히, Linux에서는 보통 Process와 task의 의미가 따로 구분되지 않고 사용되어 지는 것으로 보인다.
커널은 태스크의 생성, 태스크의 소멸, 상태전이(state transition), 문맥교환(context switch) 등 다양한 태스크 관리 기능을 가지고 있다. 태스크의 문맥(context)은 크게 세부분으로 구분할 수 있다.
첫 번째 부분은 태스크의 정보를 유지하기 위해 커널이 할당한 자료 구조들이다. 대표적인 자료 구조로는 태스크 구조(task_struct), 세그먼트 테이블, 페이지 테이블, 파일 디스크립터, 파일 테이블 등이 있다.
두 번째 부분은 태스크의 수행 이미지(태스크를 구성하는 명령어들과 데이터들)이다. 태스크의 수행 이미지는 텍스트(text), 데이터(data), 스택(stack), heap 공간 등으로 구성되며, 이들의 일부는 주기억장치에 그리고 다른 일부는 디스크(swap 공간 또는 파일 시스템)에 존재한다.
세 번째 부분은 문맥 교환(context switch)할 때 태스크의 현재 실행 위치에 대한 정보를 유지하는 곳으로 쓰레드(thread) 구조 또는 하드웨어 레지스터 context라고 불린다. 이 부분은 실행중이던 태스크가 대기 상태나 준비상태로 transition 될 때 이 태스크가 어디까지 실행했는지 기억해 두는 공간으로, 이후 이 태스크가 다시 실행될 때 기억해 두었던 곳부터 다시 시작하게 된다.
참고 자료
Understanding the Linux Kernel