[운영체제] 시스템 콜 명령어
- 최초 등록일
- 2002.12.18
- 최종 저작일
- 2002.12
- 7페이지/ 한컴오피스
- 가격 1,000원
목차
없음
본문내용
fork()
리눅스 기반의 모든 프로세스는 다른 프로세스에 의해서 생성된다. 리눅스에서 새로운 프로세스 fork가 되면 부모 프로세스가 당신이 시작한 원래의 프로세스가 되며 새로 생성된 프로세스의 자식 프로세스가 된다. 다른 운영체제는 메모리를 청소하고, 그 자리에 새로운 프로세스를 생성한다. 반면 유닉스는 결코 초기상태에서 프로세스를 생성하지 않는다.(init제외) 모든 프로세스 fork() 함수가 호출되는 그 시점에서 현재 존재하는 프로세스로부터 분리되어 생성된다.
fork()를 사용하는 이유
효율적 프로그래밍과 리소스 공유를 위해서이다. 예를 들어, 웹서버를 만든다고 가정해 보자. 웹서버의 경우에 사용자의 Request는 여러 개가 동시에 서버로 들어온다. 그러므로 한 번에 한 Request만 처리하여서는 원만한 서비스가 제대로 이루어 질 수 없다. 서버에 들어온 Request 수 만큼 fork() 시스템 콜을 호출하여 프로세스를 복제하면 ( Request의 수 + 1 ) 만큼의 동일한 웹서버 프로세스가 생성되고, 이 때 새롭게 생성된(복제된) 프로세스 한 개가 Request 한 개씩을 처리한다면, 원만한 서비스가 이루어질 것이다. 좀 더 정확하게 표현하자면, 웹서버는 Request가 발생하는 것을 기다리고 있다가, Request가 하나 발생하면 곧 바로 fork()를 호출하여 프로세스를 복제한 다음, 복제된 프로세스는 Request를 처리하고 원래 프로세스는 다시 다음 Request를 기다리면, 원만한 서비스가 이루어지게 된다.
참고 자료
없음