는POSIX 컨텍스트 스위치잘 정의되어 있나요? C에서 스레드를 전환하는 것과 동일합니까? C 컴파일러가 컨텍스트 전환을 위한 모든 것을 생성할 수 있습니까? 아니면 스레드 전환이나 "컨텍스트" 전환을 위한 루틴에 여전히 어셈블리 프로그래밍이 필요합니까? "컨텍스트"의 의미가 정의되어 있습니까? 스레드와 동일하지 않습니까?
답변1
사용된 POSIX 용어컨텍스트 스위치그것을 엄격하게 정의하려고 하지 않고 적어도 두 가지 다른 목적을 위해(또는 심지어공급정의):
- 사이를 전환하다실, 그리고
- 사이를 전환하다프로세스
대신 POSIX는 사용자가 해당 용어의 의미를 이미 알고 있다고 가정합니다. 예를 들어,
프로세스 또는 스레드를 대신하여 시스템 서비스를 실행하는 데 소요된 시간을 포함하여 프로세스 또는 스레드를 실행하는 데 소요된 시간입니다. 스레드 옵션이 지원되는 경우 프로세스의 CPU 시간 시계 값은 구현에 따라 정의됩니다. 이 정의에 따르면, 단일 스레드 프로세스에서도 프로세스에 있는 모든 스레드의 모든 실행 시간의 합은 프로세스 실행 시간과 같지 않을 수 있습니다. 왜냐하면 실행 중에 시간이 계산되는 방식이 구현에 따라 다를 수 있기 때문입니다.컨텍스트 스위치또는 다른 이유로.
추가 자료: