검색어 입력폼

[ 운영체제 ]fork 와 exec

저작시기 2006.09 |등록일 2006.10.21 한글파일한컴오피스 (hwp) | 3페이지 | 가격 1,000원

소개글

fork 와 exec 의 개념 설명
fork 와 exec 의 차이점
예제

목차

◈ fork
◈ exec
◈ fork 와 exec의 차이점
◈ 예제

본문내용

◈ fork
fork 함수는 원래 실행되던 프로세스의 복사본을 만드는 함수이다.
최초의 프로세스를 부모 프로세스라고 하고 fork 되어서 만들어진 프로세스를 자식 프로세스라고 한다. 자식프로세스는 fork 를 실행한 부모프로세스의 기존 태스크구조를 그대로 가져온다. 그리고 두 개의 프로세스는 동시에 실행된다. 하지만 fork로 새로 만들어진 자식 프로세스는 자신만의 process id를 가지게 된다.
다시 말해 fork 는 새로운 프로세스를 위한 메모리를 할당한후, fork 를 호출한 프로세스를 새로운 공간으로 전부 복사한다. 그리고 나서 원래 프로세스는 원래 프로세스대로 실행되고, fork 를 이용해서 생성된 프로세스도 그 나름대로 fork 시스템 콜이 수행된 라인의 다음 라인부터 실행이 된다는 것이다.
어떤 시스템이 기본적인 프로세스를 실행한 상태에서 대기중일때 어떤 요구가 들어오면 자식 프로세스를 하나 생성시킨후 요구에 대응한 일을 처리해준다. 그리고 요구된 사항이 종료되면 프로세스를 종료하고 다시 대기하게 되는것이다.
fork 함수는 멀티프로세싱을 위한 기본적인 함수라는 것을 알 수 있다.
fork 가 성공한다면 부모 프로세스에게는 자식의 process id를 반환하며, 자식 프로세스에게는 0을 반환한다. 만약 실패한다면 부모 프로세스에게 -1을 반환하며, 자식 프로세스는 생성되지 않는다.

◈ exec
exec도 fork와 마찬가지로 유닉스 시스템에서 새로운 프로세스를 생성시키기 위해서 사용하는 시스템콜 함수이다.
exec는 흔히 exec 계열함수군에 의해서 구현되며, exec 함수군에는 execl, execlp, execle.. 등이 있다. 옵션은 다음과 같다.

l : 인자를 list 형태로 전달 (const char *arg, ... 형태)
v : 인자를 vector 형태로 전달 (char *const argv[] 형태)
e : 환경변수를 전달 (char *const envp[] 가 끝에 붙는다)
p : 실행파일을 PATH 환경변수가 가리키는 디렉토리에서 검색
(p자가 안 붙은 함수에서는 전체 경로를 직접 지정)
execve : 현재 수행중인 프로세스는 즉시 종료되고 새로운 프로그램이 기존 프로세스의 문맥에서 수행을 시작한다.
다운로드 맨위로