Enjoy Programming

Fork란? 본문

카테고리 없음

Fork란?

LEETAEEON 2022. 1. 13. 06:43

개발 공부를 하며 한번씩 접하는 fork 라는 단어.. fork한...

 

이게 뭔 말이야 싶어 mdn을 뒤적였더니 나왔다..

 

Fork는 프로젝트에 누군가의 자신의 수정 사항을 추가하기 위한 어떤 시점에 있는 기존 소프트웨어 프로젝트의 사본!이라고 한다.

 

기본적으로, 만약 소프트웨어의 라이센스가 허가한다면, 코드를 복사하여 자신의 추가사항을 가지고 그 코드를 개발할 수 있는데, 이것이 fork가 되는 것이다.

 

fork는 무료 오픈소스 소프트웨어 개발에서 볼 수 있고 이는 Git을 사용한 기여 모델 덕에 더 많이 사용되는 용어이다.

 

또 검색해보니! 비슷한 내용이긴 하나  프로그래밍의 관점으로 서술한 내용이 있어 끄적여 보면

 

fork 함수는 원래 실행되던 프로세스의 복사본을 만드는 함수이다.

최초의 프로세스를 부모 프로세스라고 하고 fork 되어서 만들어진 프로세스를 자식 프로세스라고 한다. 자식프로세스는 fork 를 실행한 부모프로세스의 기존 태스크구조를 그대로 가져온다. 그리고 두 개의 프로세스는 동시에 실행된다. 하지만 fork로 새로 만들어진 자식 프로세스는 자신만의 process id를 가지게 된다.

다시 말해 fork 는 새로운 프로세스를 위한 메모리를 할당한후, fork 를 호출한 프로세스를 새로운 공간으로 전부 복사한다. 그리고 나서 원래 프로세스는 원래 프로세스대로 실행되고, fork 를 이용해서 생성된 프로세스도 그 나름대로 fork 시스템 콜이 수행된 라인의 다음 라인부터 실행이 된다는 것이다.

어떤 시스템이 기본적인 프로세스를 실행한 상태에서 대기중일때 어떤 요구가 들어오면 자식 프로세스를 하나 생성시킨후 요구에 대응한 일을 처리해준다. 그리고 요구된 사항이 종료되면 프로세스를 종료하고 다시 대기하게 되는것이다.

fork 함수는 멀티프로세싱을 위한 기본적인 함수라는 것을 알 수 있다.

fork 가 성공한다면 부모 프로세스에게는 자식의 process id를 반환하며, 자식 프로세스에게는 0을 반환,

 

실패한다면 부모 프로세스에게 -1을 반환하며, 자식 프로세스는 생성되지 않는다.