Computer Security

#28 프로세스 개념, 프로세스 생성 본문

리눅스 시스템 프로그래밍

#28 프로세스 개념, 프로세스 생성

쿠리 Kuri 2022. 10. 3. 18:30
반응형

Program 

실행 가능한 코드, 바이너리, 파일로 저장

 


Process

실행 중인 프로그램

프로그램 이미지,메모리 인스턴스, 커널 리소스 등의 정보


Thread

프로세스 내의 실행 단위

가상화 된 프로세서, 스택, 레지스터, 명령어 포인터 등 프로세서의 상태 포함한다.

프로세스 내의 모든 쓰레드는 같은 주소 공간을 공유

 

 

 

 

 

 


Process in memory

Process address space

text : compile 된 프로그램 코드

 

data : 전역 변수 등

 

heap : 동적 메모리 영역

 

stack : 함수 지역 변수, 함수 호출/리턴

 

 

 

 

 


Single-thread vs Multi-thread

Muti-thread

 

하나의 thread가 registers와 stack을 따로 가지고 있다.

code , data, files 같이 공유한다.

 

 

 

 

 

 


Process Hierarchy

 

프로세스들은 부모(parent) 프로세스와 자식(child) 프로세스가 존재한다.

 

부모(parent) 프로세스는 자식(child) 프로세스를 생성 가능하다.

 

자식(child) 프로세스가 할일을 마치고 종료되면 부모(parent) 프로세스가 정리작업을 해줘야한다.

 

모든 프로세스는 각자 고유의 pid(process id) 를 가지고 있다

 

init 프로세스는 부모 프로세스가 존재하지 않으며, pid는 항상 1이다.

 

 

 

 

 


프로세스 복제/생성 - fork()

pid_t fork(void);

파라미터

- 없음

 

 

반환 값

- 성공 시

   - parent process : Child process의 PID

   - child process : 0

 

- 실패 시

    - parent process : -1

    - child process : 생성되지 않음

 

 

 

 

 


pid/ppid 얻기 - getpid(), getppid()

pid_t getpid(void);
pid_t getppid(void);

파라미터

- 없음

 

 

반환 값

- getpid() : 현재 프로세스의 pid

- getppid() : 현재 프로세스의 부모 프로세스 pid

 

반응형
Comments