2010-03-13 3 views
1

나는 스레드, 미들웨어 스레드 및 OS 스레드를 구현하는 두 가지 방법을 비교 한 책을 읽었습니다. 이 문장의 의미가 정확히 무엇인지 모르겠다 : "운영 체제 멀티 스레드의 어려움은 성능 오버 헤드입니다. 스레드를 전환하는 운영 체제이기 때문에 시스템 호출이 관련되어 있습니다. 트랜잭션 수준의 미들웨어가 작동하는 사용자 수준에서 실행되는 스레드 작업보다 비용이 많이 듭니다. " 및 시스템 호출과 성능의 관계는 무엇입니까?운영 체제 멀티 스레딩의 문제점은 무엇입니까?

+0

무엇이 질문입니까? –

+0

업데이트되었습니다! – ghedas

+0

다음은 차이점에 대한 개요입니다 * http://www.cs.cf.ac.uk/Dave/C/node29.html#SECTION002920000000000000000 – zebrabox

답변

1

이 책은 약간 날짜가 맞았으며, 미들웨어 스레드 (일명 섬유)가 많이 사용되었습니다 10 년 전. 예, 컨텍스트 스위치는 상대적으로 비싸며 2000 ~ 10,000 개의 CPU 명령어가 있습니다. 커널 전환과 글로벌 잠금을 필요로합니다. 사용자 스레드는이 비용의 상당 부분을 피할 수 있으며 CPU 상태 만 전환하면됩니다.

하지만 무료로 제공되지 않습니다

  • 당신은 당신의 자신의 스케줄러
  • 의 I/O 작업에 사용자 스레드 블록, 모든 사용자 스레드가 차단 만들어야합니다
  • 사용자 컨텍스트 스위치가 CPU 캐시를 끊습니다.

후자의 문제는 캐시를 날려 버리는 것이 정말 비싸다. CPU 코어는 메모리와 비교하여 매우 빠르게되어 캐시를 폐기하는 비용이 OS 컨텍스트 스위치와 비슷하게됩니다. CPU 코어를 많이 확보하는 것은 저렴합니다.

0

대부분의 최신 운영 체제의 경우. (Windows, * nix, MAC OS) 운영 체제 커널은 보호 된 주소 공간에 있습니다. 보호 된 공간의 무결성을 유지하기 위해 해당 공간은 알려진 위치의 사용자 공간에서만 입력 할 수 있습니다. 따라서 사용자 공간에서 일반적인 함수 호출을 만드는 것보다 운영 체제를 호출하는 것이 다소 비용이 많이 듭니다. http://en.wikipedia.org/wiki/System_call.

286 CPU는 사용자 공간에서 커널 공간으로 갈 때 속도가 상당히 느리지 만 최신 x86 및 IA64와 같은 최신 CPU 아키텍처는 사용자 공간에서 커널 공간으로 가능한 빨리 전환하도록 특별히 설계된 특수 명령을 가지고 있습니다. 사용자 공간에서 정상적인 함수 호출보다 여전히 더 비싸지 만, 나는이 책이 나타내는 우려 수준을 정당화한다고 생각하지 않는다.

0

인용 한 텍스트에서 알 수 있듯이 시스템 호출은 일반적으로 사용자 수준의 스레드 작업보다 비용이 많이 듭니다.

시스템 호출 비싼 만들 수있는 몇 가지를 (사용자 수준 함수 호출에 비해) :

  • 저장/복원 프로세서 상태
  • 는 커널 공간에 액세스하기위한 가상 메모리 환경을 업데이트
  • 시스템 호출이 완료되면 OS 스케줄러를 통한 출장이있을 수 있습니다.
+0

왜 이런 일이 발생할 수 있습니까? "프로세서 상태 저장/복원 중" – ghedas