2014-08-19 1 views
8

x86에서는 실행중인 프로세스간에 작업을 전환하는 데 TSS를 사용할 수 있지만 TSS를 하나만 사용하고 소프트웨어 작업 전환을 수행하는 것이 좋습니다 (특히 포트 커널을 TSS가없는 다른 하드웨어에 배포합니다.작업 전환 64 비트

x86-64 (64 비트)에서는 TSS가 없으므로 (예 : x86과 비슷하지 않음) 누군가가 작업 전환을 수행하지 않으면 어떻게됩니까? (이전부터 적어도 하나)?

답변

7

당신은 그것을 당신이 다른 플랫폼에서 할 것 같은 방식으로 할 것 : 적절한 레지스터의 내용을 저장 :

  • 스택 포인터
  • 명령 포인터
  • 중 일반 - 범용 레지스터는
  • 당신은 유지해야하는 다른 상태 (FPU/MMX/SSE 레지스터 등) 아키텍처
,691에 적합

에서 전환하려는 작업에 대해 전환하고 전환하려는 작업에 대해 동일한 작업을 복원하십시오.

종종 전환하는 스택에 모든 상태를 푸시하고 전환하려는 스택에서 전환을 푸시하면됩니다. 이렇게하면 백그라운드에서 대기중인 내용을 추적하기 위해 스택 포인터 만 전달하거나 커널이 관리해야합니다.

5

Actually, it seems there is a TSS in 64 bit mode, 하드웨어 컨텍스트 스위칭에 사용되지 않습니다. 대신 상위 권한 레벨로의 전송이 발생할 경우 커널 스택을 지정하는 데 사용됩니다.

그러나 다른 작업 간의 제어를 변경하려면 소프트웨어 컨텍스트 전환을 사용해야합니다.