본문 바로가기
728x90

fork()2

fork()와 vfork()에 대해서. vfork() 함수는 fork()의 단점인 오버헤드(ex: 프로세스 구조체를 할당받는 시간과 메모리)를 낮춤으로써 고안되었다. vfork()가 도입됐지만 fork()함수 또한 상당히 개선되었다. 가장 주목할만한 점은, 'copy-onwrite'의 도입이다.프로세스의 주소공간의 복사는 ,같은 물리메모리들이 수정될때까지넌지시 허용되어왔다. 이것은 대략 , vfork()가 생기게된 원인에대해는 정당화되지 않는셈이다. 이것은 실제로 vfork()의 기능적인 면에서 시스템의 중요한 부분의 의미론적인 오류이다. 비록 호환성을 위해 아직 까지 vfork()가 존재하는것일지 모르지만, vfork()의 의미에 상관없이 fork()를 사용한다. 결국 fork()와 vfork()를 차이점에대해 어떨때 사용하는것에대해는 의미.. 2016. 8. 29.
프로세스와 쓰레드의 생성과 수행(부제 : 쓰레드와 프로세스의 차이점) 프로세스 생성 예제 이 예제는 전역변수 g와 지역변수 l을 가지고 있으며 fork()함수를 통해 새로운 프로세스를 생성한다. 그 결과, 16196번 pid를 가지는 부모 프로세스가 16197번 pid를 가지는 자식 프로세스를 생성하였음을 알 수 있다. 또한 이 프로그램에서는 자식 프로세스가 전역 변수와 지역 변수를 각각 1씩 증가시키고 있음을 알 수 있다. 반면, 부모 프로세스에서 g와 l변수 값을 출력하면 각각 원래 값인 2와 3이 출력됨을 알 수 있다. 이를 통해, 프로세스가 생성되면 주소공간을 포함하여 이 프로세스를 위한 모든 자원들이 새로이 할당됨을 알 수 있다. 따라서 자식 프로세스의 연산 결과는 자식 프로세스 주소 공간의 변수에만 향을 줄 뿐 프로세스 주소공간의 변수에는 영향이 없으며, 결국 .. 2016. 8. 29.
728x90