
두 가지 모두 프로세스를 내부 및 외부로 교체하는 것과 관련이 있는 것 같습니다.
페이징에서는 기존 프로세스의 페이지를 교체하고 디스크의 다른 페이지(내 생각으로는 가상 메모리)로 교체하지만 컨텍스트 전환의 경우 프로세스를 먼저 PCB에 저장한 다음 다른 페이지를 복원하여 교체합니다. PCB를 메모리에 넣습니다.
둘 사이의 차이점은 무엇입니까? 내 현재 추측/이해는 다음과 같습니다.
컨텍스트 전환은 전체 프로세스와 관련되므로 모든 페이지가 한 번에 교체될 수 있습니다.
따라서 프로세스 제어 블록 또는 PCB에는 페이지가 포함됩니다(그렇지 않은 경우 두 페이지는 어떻게 관련되어 있습니까?).
답변1
공통점보다 차이점이 더 많은 것 같아요.
컨텍스트 전환은 기본적으로 프로그램 코드를 실행하는 데 필요한 모든 CPU 컨텍스트를 나타냅니다. 여기에는 CPU 레지스터 값, 플래그, 명령어 포인터 및 스택 포인터, 우선 순위 수준, 가상 메모리 설정(페이지 테이블) 등과 같은 항목이 포함됩니다.
실제 내용을 포함할 필요는 없습니다.메모리일반적으로 프로세스의 메모리를 완전히 교체하는 것은 느리기 때문에 그렇지 않습니다. 시스템이 동시에 여러 프로그램을 메모리에 저장할 수 있고 프로그램이 메모리의 어느 부분을 사용할지 알 수 있는 방법이 있다면 다른 프로세스로 전환할 때 프로세스의 전체 메모리를 교체할 필요가 없습니다. .
(Wikipedia에 따르면 그들은 예전에교체하다하지만 전체 프로세스는 1960년대에 이루어졌습니다.)
페이징은 일반적으로 실행 중인 프로세스에 보이지 않는 방식으로 주 메모리와 일부 보조 저장소 사이에서 메모리 블록("페이지")을 이동하는 프로세스입니다.
최신 시스템에서는 프로세스 간 컨텍스트 전환에 페이지 테이블 다시 로드가 포함되지만 일반적으로 모든 것이 메모리에 맞기 때문에 페이징이 전혀 필요하지 않습니다. 반면, 스왑이 필요할 만큼 충분한 메모리를 사용하는 경우 단일 프로세스 내에서도 페이징이 발생할 수 있습니다.
따라서 실제로 컨텍스트 전환과 페이징은 다소 직교하며 둘 다 멀티태스킹 가상 메모리 OS의 개념일 뿐입니다.
답변2
컨텍스트 전환은 페이징과 관련이 없으며 동시에 두 개의 서로 다른 프로그램을 실행할 수 있게 해줍니다. 컨텍스트는 사용자 공간 또는 커널 공간 코드가 실행되고 있는 것이며 전환이 사용자 공간에서 커널 공간으로 또는 그 반대로 이동하는 것입니다.
페이징은 메모리 페이지를 다른 용도로 사용하기 위해 교체하려는 메모리 페이지를 해당 공간에 넣을 교체 공간이 있는 경우에만 발생합니다. 스왑 공간이 없으면 페이징은 없지만 컨텍스트 전환은 발생합니다.
컨텍스트가 사용자 공간에서 커널 공간 코드로 전환되면(그리고 다른 앱의 다른 사용자 공간 코드로 전환될 수도 있음) 페이징이 반드시 수행되지 않습니다. 즉. 원래 프로세스 메모리는 자동으로 교체되지 않습니다. 따라서 두 번째 프로세스가 실행되는 동안에도 여전히 메모리를 사용하게 됩니다.