2017-09-27 1 views
0

주류 아키텍처 (예 : x64)를 사용하는 현대 개인용 컴퓨터의 컨텍스트 전환에 대한 배경 설명을 찾고 있습니다.컨텍스트 스위치 : 언제 결정합니까?

주로 컨텍스트 스위치가 하드웨어에 의해 수행되는 동안 컴퓨터에서 다중 스레드 및/또는 다중 프로세스를 실행할 때 작업 스케줄링 및 컨텍스트 전환을 결정합니다. 그것은 CPU 자체, 운영 체제, 컴파일러/가상 머신 ...입니까?

전환 할시기를 결정하기 위해 어떤 전략을 사용하는지 알고 싶습니다. 예를 들어, 끝없는 루프에서 독립적 인 더미 추가 작업을 수행하는 백 개의 스레드를 시작하면 언제 컨텍스트 전환이 발생합니까?

답변

1

이것은 복잡한 주제이며 여기서는 간단한 응답으로 정의 할 수 없습니다. 하지만 몇 가지 중요한 점을 명중 시키십시오. Windows 나 다양한 유닉스 파생물과 같은 최신 OS를 가정하고 내장 된 실시간 시스템을 무시할 것입니다.

컨텍스트 스위치가 하드웨어에서 수행되지 않습니다. 이것을 이해하는 것이 중요합니다. 그것은 스케줄러로 알려진 OS 하위 시스템을 통해 소프트웨어에서 수행됩니다. 스케줄러는 마이크로 초 (microsecond)를 여러 번 발사하고 다음에 실행할 스레드를 결정하는 영광스러운 인터럽트 컨트롤러입니다. 이렇게하기위한 알고리즘은 다수이며 많은 PHD 논문의 주제입니다. 신속하게 발견 한 좋은 개요는 다음과 같습니다. http://www.studytonight.com/operating-system/cpu-scheduling

좋은 운영 체제에 대한 책이 자세히 설명되어 있습니다. 너무 많은 것이 있으므로 독약을 선택하십시오.

마지막 단계는 일정을 어떻게 완료 하는지를 전체 레벨에서 파악하려면 가상 주소 지정 체계가 실제로 스레드와 프로세스를 구별하는 방식을 이해하는 데 도움이됩니다. 쓰래드는 쓰레드와 가상 메모리 공간을 캡슐화하는 Scheduler put 프로세스 측면에서 결정적으로 중요합니다.

나는 이것이 도움이 될지는 모르겠다. 그러나 나는 적어도 오해 하나를 바로 잡을 수 있었고 OS 쓰레드 스케줄링에 대한 간단한 기사에서 당신을 지적했다.

+0

처음으로 감사드립니다. 그것은 스위치가 CPU가 아닌 시스템에 의해 수행되는 것이 옳습니다. 나는 단락을 끝까지 읽어야한다 :-) 하드웨어 스위치가 사용 가능하지만 사용되지 않는다고 말할 때. (https://en.wikipedia.org/wiki/Context_switch#Hardware_vs._software). 그림이 조금 더 선명 해졌고 그것이 내가 원했던 것입니다. –

+0

당신은 오신 것을 환영합니다. 하드웨어 컨텍스트 스위칭은 임베디드 실시간 시스템에서 사용되는데, 그 이유는 이러한 시스템을 토론의 목적을 위해 따로 보관해야하는 이유입니다. 대부분의 사람들은 결코 그들을 만나지 않을 것입니다. – sagneta

관련 문제