페이징과 컨텍스트 전환의 차이점은 무엇입니까? [폐쇄]

페이징과 컨텍스트 전환의 차이점은 무엇입니까? [폐쇄]

둘 다 들어오고 나가는 프로세스를 포함하는 것처럼 보입니다.

페이징에서는 기존 프로세스의 페이지를 교환하고 이를 디스크(내 생각으로는 가상 메모리)의 다른 페이지로 교체하지만 컨텍스트 전환을 사용하면 먼저 이를 PCB에 저장한 다음 다른 프로세스를 재개하여 프로세스를 교환함으로써 이 작업을 수행할 수도 있습니다. PCB를 메모리에 넣습니다.

둘 사이의 차이점은 무엇입니까? 현재 내 추측/이해는 다음과 같습니다.

  1. 컨텍스트 전환은 전체 프로세스에 적용되므로 모든 페이지를 한 번에 교체할 ​​수 있습니다.

  2. 따라서 프로세스 제어 블록 또는 PCB에는 페이지가 포함됩니다(그렇지 않은 경우 둘은 어떻게 관련되어 있습니까?).

답변1

유사점보다 차이점이 더 많은 것 같아요.

컨텍스트 전환은 기본적으로 프로그램 코드를 실행하는 데 필요한 모든 CPU 컨텍스트를 나타냅니다. 여기에는 CPU 레지스터 값, 플래그, 명령어 및 스택 포인터, 우선 순위, 가상 메모리 설정(페이지 테이블) 등이 포함됩니다.

실제 내용을 포함할 필요는 없습니다.메모리프로세스의 메모리는 일반적으로 그렇지 않습니다. 프로세스의 메모리를 완전히 교체하는 것은 느리기 때문입니다. 시스템이 동시에 여러 프로그램을 메모리에 저장할 수 있고 프로그램이 메모리의 어느 부분을 사용할지 알 수 있는 방법을 갖고 있다면 다른 프로세스로 전환할 때 전체 메모리를 교체할 필요가 없습니다.

(위키피디아에 따르면 그들은교체하다그러나 모든 과정은 1960년대에 이루어졌다. )

페이징은 일반적으로 실행 중인 프로세스에 보이지 않는 방식으로 주 메모리와 일부 보조 저장소 간에 메모리 블록("페이지")을 이동하는 프로세스입니다.

최신 시스템에서 프로세스 간 컨텍스트 전환에는 페이지 테이블 다시 로드가 포함되지만 일반적으로 모든 것이 메모리에 맞기 때문에 페이징이 전혀 필요하지 않습니다. 반면, 스와핑이 필요할 만큼 충분한 메모리를 사용하는 경우 단일 프로세스 내에서도 페이징이 발생할 수 있습니다.

따라서 실제로 컨텍스트 전환과 페이징은 상당히 직교하며 멀티태스킹 가상 메모리 운영 체제의 두 가지 개념일 뿐입니다.

답변2

컨텍스트 전환은 페이징과 아무 관련이 없으며 동시에 두 개의 다른 프로그램을 실행할 수 있습니다. 컨텍스트는 사용자 공간 또는 커널 공간 코드가 실행되는 곳이며 전환은 사용자 공간에서 커널 공간으로 또는 그 반대로 이동하는 것입니다.

페이징은 다른 용도로 사용할 수 있도록 교체 중인 메모리 페이지를 배치할 수 있는 교체 공간이 있는 경우에만 발생합니다. 스왑 공간이 없으면 페이징은 발생하지 않지만 컨텍스트 전환이 발생합니다.

컨텍스트가 사용자 공간에서 커널 공간 코드로(그리고 다른 애플리케이션에 대한 다른 사용자 공간 코드로) 전환될 때 페이징이 반드시 발생하는 것은 아닙니다. 즉. 원래 프로세스 메모리는 자동으로 교체되지 않습니다. 따라서 두 번째 프로세스가 실행될 때 여전히 메모리를 사용합니다.

관련 정보