| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | ||
| 6 | 7 | 8 | 9 | 10 | 11 | 12 |
| 13 | 14 | 15 | 16 | 17 | 18 | 19 |
| 20 | 21 | 22 | 23 | 24 | 25 | 26 |
| 27 | 28 | 29 | 30 |
- 무상증자 #유상증자 #주가영향
- #벽걸이 에어컨 # 에어컨 청소 # 에어콘 청소 # 치킨값 벌기
- #리뉴올PC #중고모니터 #중고컴퓨터 #후기
- 보안
- 파생상품 #선물 #옵션 #증거금
- 정보보안
- 증권투자권유자문인력 #파생투자권유자문인력 #펀드투자권유자문인력 #금융3종
- 비상용메모리
- 커널
- 포지션 #파생 #선물 #옵션
- 네트워크카드 #NIC # 인터페이스카드 #커널
- RMS #리스크관리시스템 #risk
- TCP
- Node #Zone #PageFrame
- cme #블룸버그 #로이터
- #연말정산 #꿀팁 # 소득공제 # 세액공제 #고향사랑기부제 # 돈많이벌자 #세테크 #세법
- 국내상장 해외etf #해외etf #세금 #나스닥 #코스피
- 메모리사용류
- fix #프로토콜 #유래 #
- 디피헬만알고리즘
- AWS #회원가입 #AWS Developer Associate #SAA
- VIRT #RES #SHR #메모리커밋
- 주택임차차입금 원리금 상환액 #소득공제 #공부 #세테크
- 시스템정보확인 #top명령어 #cpu
- 옵션 #콜옵션 #풋옵션 #청산
- 병목확인
- loadaverage #시스템부하
- OWASP #웹취약점
- 종합과세 #분리과세 #분류과세 #세금 #공부
- 옵션 #선물 #증거금 #Margin
- Today
- Total
일서방
테스크(TASK) 본문
■리눅스의 task 관리 구조

프로세스는 자신이 사용하는 자원과 그자원에서 수행되는 수행흐름으로 구성된다.
리눅스에서는 이를 관리하기 위해 각 프로세스마다 task_struct라는 자료 구조를 생성한다. 새로운 스레드가 생성되어도 스레드를 우히ㅐ task_struct 자료 구조를 하나 더 생성한다. 결국 리눅스에서는 프로세스가 생성되든 쓰레드가 생성되든 task_struct라는 동일한 자료구조를 생성하여 관리한다.

사용자의 프로세스 혹은 스레드생성 요청은 라이브러리를 거쳐 시스템 호출을 통해 리눅스 커널에 전달된다.
fork() , clone() , pthread_create()는 커널에 구현되어 있는 sys_clone() 시스템 호출을 사용하며 , vfork()는 sys_vfork()를 사용한다. sys_clone()과 sys_vfork()는 모두 커널 내부함수인 do_fork()를 호출한다.
fork와 clone모두 마지막으로 호출되는 함수는 do_fork인데 이유는 리눅스 입장에서 보면 모두 'task'를 생성하기 때문이다.
fork는 비교적 부모 태스크와 덜공유하는 task이고 , clone으로 생성되는 task는 비교적 부모 태스크와 많이 공유하는 테스크이다.
테스크의 문맥은 크게 세부분으로 구분할 수있다.
첫번째 부분은 시스템 문맥(System Context)으로 테스크의 정보를 유지하기 위해 커널이 할당한 자료구조들이다.
대표적인 자료구조로는 task_struct , 파일 디스크립터 , 파일 테이블 , 세그먼트 테이블 , 페이지 테이블 등이 있다.
두번째 부분은 메모리 문맥(Memory Context)으로 텍스트 , 데이터, 스택 , heap 영역 , 스왑 공간 등이 여기에 포함된다.
세번째 부분은 하드웨어 문맥(Hardware Context)으로 문맥교환(context switch)할 때 테스크의 현재 실행 위치에 대한 정보를 유지하며 , 쓰레드(thread) 구조 또는 하드웨어 레지스터 문맥이라고 불린다. 이 부분은 실행중이던 테스크가 대기상태나 준비상태로 전이할 때 이 테스크가 어디까지 실행했는지 기억해두는 공간으로, 이후 이 테스크가 다시 실행될 때 기억해 두었던 곳부터 다시 시작하게 된다.
■ task identification
테스크를 인식하기 위한 변수들이다. 대표적으로 테스크ID를 나타내는 PID, 테스크가 속해있는 쓰레드 그룹 ID를 나타내는 tgid , pid를 통해 해당 테스크의 task_struct를 빠르게 찾기 위해 커널이 유지하고 있는 해쉬 관련 필드 등의 변수가 있다.
한편, audit_context 구조체를 통해 이 테스크에 대한 사용자 접근 권한을 제어할 때 이용되는 uid(사용자ID) , euid(유효 사용자 ID) , suid(저장된 사용자 ID)
'IT공부 > 리눅스커널이야기' 카테고리의 다른 글
| 버디 할당자(Buddy Allocator) , 슬랩 할당자(Slab Allocator) (0) | 2025.12.22 |
|---|---|
| Node , ZONE , pageFrame (0) | 2025.12.19 |
| 커널 소스 (0) | 2025.09.30 |
| 혼잡제어 , Congestion window(cwnd) (0) | 2025.09.22 |
| TCP 재전송과 타임아웃 (0) | 2025.09.22 |