내 잡다한 노트
fork( ) 정의와 특징 본문
# fork( )
: 기존 프로세스를 복사하여 새 프로세스를 만드는 시스템 함수
부모 프로세스의 fork 리턴 값은 자식 프로세스의 pid
자식 프로세스의 fork 리턴 값은 0
부모 프로세스와 자식 프로세스는 독립적으로 실행된다. 그래서 멀티프로세싱이라고
부를 수도 있다.
부모에서 fork가 호출되면 부모의 복사본인 새로운 자식이 생성되고, 둘 다
fork 호출이 발생한 지점부터 계속 실행된다. 즉, 부모에서 이미 실행된 코드는
하위에서 실행되지 않는다.
fork 호출 후, 메모리의 code, stack, data 부분에서 자식은 read only 상태로만
부모 메모리에 있는 변수 등을 보다가 활용을 해야하는 순간이 오면 그 변수를
새롭게 만들어서 부모 메모리의 변수와는 독립적으로 움직인다.
이렇게 하는 이유는 복사할 때 메모리의 모든 내용을 다 복사해버리면 프로세스가
무거워지니까 필요할때만 그때그때 복사해서 사용하는 식으로 한다.
이걸 COW : Copy On Write 이라고 한다.
'DevOps > 리눅스' 카테고리의 다른 글
리눅스 PAM (0) | 2023.09.02 |
---|---|
리눅스 보안 방화벽에 관해 (1) | 2023.09.02 |
vi 복사 명령어 (0) | 2023.04.05 |
특정 문자 및 문자열을 vi에서 찾기 명령어 (0) | 2023.03.29 |
gcc, Make, gdb (0) | 2023.03.23 |