가상 메모리 2

[OS/운영체제] 가상 메모리 (Virtual Memory) - (2)

COW (Copy-on-Write) 지금까지는 프로세스가 어떻게 요구 페이징 시스템에서 시작하는지에 대해 알아보았다. 하지만, fork()를 통해 생성되는 프로세스들은 이러한 요구 페이징 과정을 페이지 공유와 유사한 방법을 통해 건너뛸 수 있다. 이를 통해 프로세스의 빠른 생성과 생성된 프로세스에게 할당되어야 하는 새 페이지들의 수를 최소화할 수 있다. 우리는 앞에서 fork()를 통해 생성된 자식 프로세스는 부모 프로세스의 복사본이라고 했다. 일반적으로 fork()는 부모 프로세스의 주소 공간을 복사해 자식 프로세스를 생성하고, 이는 페이지에 대해서도 동일하다. 하지만 자식 프로세스가 생성된 이후 즉시 exec() 시스템 콜을 발생시키면 이러한 복사 과정은 필요 없는 과정이 된다. 대신 우리는 부모와 ..

운영체제 2020.11.14

[OS/운영체제] 가상 메모리 (Virtual Memory) - (1)

가상 메모리 (Virtual Memory) 지금까지 살펴본 메모리 관리 기법은 명령어가 반드시 물리적 메모리에서 실행되어야 한다는 필요에 의해 사용되었다. 연산이 반드시 물리적 메모리에서 실행되어야 한다는 것은 당연한 것처럼 보이지만, 물리적 메모리의 크기에 따라 한계를 가지게 된다. 프로그램은 일반적으론 발생하지 않는 오류들에 대한 코드들과 같이 프로그램을 실행하는 동안 어쩌면 절대로 실행되지 않을 부분들이 존재한다. 또한 배열, 테이블과 같은 자료구조들은 보통 실제로 필요한 양보다 더 많은 양의 메모리를 할당받는다. 이런 상황들을 보았을 때, 프로그램의 모든 부분이 항상 동시에 필요하진 않을 수 있다. 따라서, 프로그램의 일부만 실제 메모리를 할당하여 실행하는 방법은 효과적일 것이다. 프로그램은 더 ..

운영체제 2020.11.14