4.1 프로세스 소개
1) 프로세스란?
→ 리눅스 시스템 메모리에서 실행 중인 프로그램 (태스크와 유사한 의미)
※ 멀티프로세싱 : 다수의 프로세스를 실시간으로 사용
※ 멀티태스킹 : 같은 시간에 여러 프로그램 실행
- 프로세스를 관리하는 자료구조이자 객체를 태스크 디스크립터라고 부르고, task_struct 구조체로 표현됨
→ task_struct 구조체에는 메모리 리소스, 프로세스 이름, 실행 시각, 프로세스 아이디, 프로세스 스택의 최상단 주소와 같은 속성 정보가 저장됨
프로세스의 실행 흐름을 표현하는 중요한 공간은 스택 공간이며, 이 프로세스 스택의 최상단 주소에 thread_info 구조체가 있다.
- 리눅스 커널에서 프로세스를 표현할 수 있는 자료구조
① task_struct 구조체 : 태스크 디스크립터
② thread_info 구조체 : 프로세스 스레드 정보
→ 프로세스를 잘 알려면 프로세스 속성 정보와 실행 흐름을 저장하는 구조체를 잘 알아야 함
2) 태스크란?
→ 실행(Execution)의 의미, 실행 및 작업 단위
- 리눅스 커널에서 태스크는 프로세스와 같은 개념으로 쓰는 용어이다.
- 소스코드나 프로세스에 대한 설명을 읽을 때 태스크라는 단어를 보면 프로세스와 같은 개념으로 이해하자.
3) 스레드란?
→ 유저 레벨에서 생성된 가벼운 프로세스
- 일반 프로세스에 비해 컨텍스트 스위칭을 수행할 때 시간이 적게 걸림
(자신이 속한 프로세스 내의 다른 스레드와 파일 디스크립터, 파일 및 시그널 정보에 대한 주소 공간을 공유하기 때문)
- 스레드 그룹 안의 다른 스레드와 주소 공간 공유
- 커널 입장에서는 스레드를 다른 프로세스와 동등하게 관리
4.2 프로세스 확인하기
1) ps 명령어로 프로세스 목록 확인
★ ps : 실행 중인 프로세스를 출력하는 명령어
→ 리눅스 커널 내부의 init_task 전역변수를 통해 전체 프로세스 목록 출력
- "-ejH" 옵션 : 부모 자식 프로세스 관계를 토대로 출력
- 위 목록에서 보이는 프로세스를 커널 스레드, 커널 프로세스라고 하며, 커널 공간에서만 실행된다.
※ PID(Process Identifier) : 프로세스에 부여하는 고유의 정수형 ID
→ 리눅스 커널에서 pid_t라는 타입으로 <sys.types.h> 헤더 파일에 저장되어 있음
→ 리눅스 커널에서는 프로세스가 생성될 때 PID를 프로세스에게 알려줌
커널은 PID를 증가시키면서 프로세스에게 부여함
'2021 SUMMER STUDY > LINUX KERNEL' 카테고리의 다른 글
Week05_프로세스3 (0) | 2021.08.21 |
---|---|
Week04_프로세스2 (0) | 2021.08.15 |
Week02_커널 디버깅과 코드 학습 (0) | 2021.07.25 |
Week01_리눅스 소개와 전망 (0) | 2021.07.18 |