4.1 프로세스 소개

 

1) 프로세스란?

 

→ 리눅스 시스템 메모리에서 실행 중인 프로그램 (태스크와 유사한 의미)

※ 멀티프로세싱 : 다수의 프로세스를 실시간으로 사용

※ 멀티태스킹 : 같은 시간에 여러 프로그램 실행

 

- 프로세스를 관리하는 자료구조이자 객체를 태스크 디스크립터라고 부르고, task_struct 구조체로 표현됨

→ task_struct 구조체에는 메모리 리소스, 프로세스 이름, 실행 시각, 프로세스 아이디, 프로세스 스택의 최상단 주소와 같은 속성 정보가 저장됨

 

프로세스의 실행 흐름을 표현하는 중요한 공간은 스택 공간이며, 이 프로세스 스택의 최상단 주소에 thread_info 구조체가 있다.

 

- 리눅스 커널에서 프로세스를 표현할 수 있는 자료구조

① task_struct 구조체 : 태스크 디스크립터

② thread_info 구조체 : 프로세스 스레드 정보

→ 프로세스를 잘 알려면 프로세스 속성 정보와 실행 흐름을 저장하는 구조체를 잘 알아야 함

 

2) 태스크란?

 

→ 실행(Execution)의 의미, 실행 및 작업 단위

 

- 리눅스 커널에서 태스크는 프로세스와 같은 개념으로 쓰는 용어이다.

- 소스코드나 프로세스에 대한 설명을 읽을 때 태스크라는 단어를 보면 프로세스와 같은 개념으로 이해하자.

 

3) 스레드란?

 

→ 유저 레벨에서 생성된 가벼운 프로세스

 

- 일반 프로세스에 비해 컨텍스트 스위칭을 수행할 때 시간이 적게 걸림

   (자신이 속한 프로세스 내의 다른 스레드와 파일 디스크립터, 파일 및 시그널 정보에 대한 주소 공간을 공유하기 때문)

- 스레드 그룹 안의 다른 스레드와 주소 공간 공유

- 커널 입장에서는 스레드를 다른 프로세스와 동등하게 관리

 

4.2 프로세스 확인하기

 

1) ps 명령어로 프로세스 목록 확인

 

★ ps : 실행 중인 프로세스를 출력하는 명령어

→ 리눅스 커널 내부의 init_task 전역변수를 통해 전체 프로세스 목록 출력

 

라즈베리파이에 "ps -ely" 명령어 입력

 

라즈베리파이에 "ps -ejH" 명령어 입력

 

- "-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

+ Recent posts