- 실행중인 프로그램을 프로세스라고 함
- 하나의 프로그램으로 여러 프로세스를 생성 가능
- 격리
- 다중처리
- 공유
- PID 는 getpid() 시스템 콜을 통해 확인
- 스택에는 다음과 같은 정보가 담겨 있음
-> 함수 인자와 지역 변수
-> 호출 연결 정보
- 유닉스 전통적인 key/value
환경변수 관련한 시스템콜
- 환경변수 출력하기 : printenv
- 환경변수 설정하기 : setenv
- 환경변수 읽기 : getenv
- 주로 부팅 시 설정 값을 활용하기 위해 사용
- fork() : 프로세스 생성
- exit() : 프로세스 종료
- wait() : 자식 프로세스 대기
-> 자식프로세스가 끝나야 자식프로세스의 자원을 초기화 가능하기 때문- execve() : 프로그램 실행(실행파일 메모리 로드)
- fork() 시, 자식프로세스의 파일 디스크립터는 부모의 파일 디스크립터와 같은 매모리를 가리킴
- 데이터에 대한 변경이 일어날때 아래와 같이 새로운 메모리를 쓰고 그 위치를 가리키게 됨
copy on write
- 이러한 방식이 fork() 속도를 높이는데 활용
- 자식프로세스의 종료를 기다림
- waitpid()를 통해 특정 프로세스의 종료를 기다릴 수 도 있음
- fork() 와 쌍이 되는 프로그램 실행을 위한 시스템 콜
- fork() 하지 않고 execve()만 호출되면 이전의 프로세스가 종료되고 execve()로 인한 새로운 프로세스만 실행됨