일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 시그널
- pwncollege
- radare2
- pwn.college
- 리눅스 커널
- 워게임
- 프로그래밍
- css
- 커널
- 시스템해킹
- 어셈블리어
- Pwnable.kr
- Leviathan
- Bandit
- 드론
- px4
- 시스템 프로그래밍
- 컴퓨터구조
- 리눅스
- C++
- 시스템
- 리버싱
- wargame
- 알고리즘
- 리눅스커널
- C언어
- 시스템프로그래밍
- kernel
- 취약점
- write up
- Today
- Total
Computer Security
#28 프로세스 개념, 프로세스 생성 본문
Program
실행 가능한 코드, 바이너리, 파일로 저장
Process
실행 중인 프로그램
프로그램 이미지,메모리 인스턴스, 커널 리소스 등의 정보
Thread
프로세스 내의 실행 단위
가상화 된 프로세서, 스택, 레지스터, 명령어 포인터 등 프로세서의 상태 포함한다.
프로세스 내의 모든 쓰레드는 같은 주소 공간을 공유
Process in memory
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
'리눅스 시스템 프로그래밍' 카테고리의 다른 글
#30 프로그램 실행과 종료처리 (0) | 2022.10.05 |
---|---|
#29 프로세스 개념, 프로세스 생성(실습) (2) | 2022.10.04 |
#27 I/O Multiplexing : epoll (실습) (0) | 2022.10.02 |
#26 I/O Multiplexing : epoll (0) | 2022.10.01 |
#25 I/O Multiplexing(select) (실습) (0) | 2022.09.30 |