2017-05-14 4 views
0

내가 운영 체제는 다음과 같은 방법을 사용하여 스케줄링을 구현 읽었습니다 :프로세스 일정을 구현하는 유일한 방법은 하드웨어 타이머를 사용하고 있습니까?

  • CPU는 모든 X에게 인터럽트를 (밀리 초)을 발생시키는 하드웨어 타이머가 있어야합니다.
  • 는 타이머 인터럽트 화재되면, 타이머 인터럽트 핸들러는 CPU가 (내가 말을해야 추측하거나 다른 스레드) 다른 프로세스 을 실행을 시작하게됩니다 명령을 실행합니다.

내 질문은 방금 방금 스케쥴을 구현하는 방법을 설명 했습니까?

1) Preemtive 멀티 태스킹

당신이 당신의 작업 스위치를 트리거 인터럽트 소스를 USW 수 preemtive 멀티 태스킹 :

답변

2

번호 기본적으로 운영 체제에서 멀티 스레딩을 구현하는 두 가지 방법이있다. 대부분의 경우 장기 실행 태스크가 실행되고 다른 하드웨어 이벤트가 발생하지 않은 경우 타이머 내부에서 태스크가 전환됩니다. 다른 하드웨어 이벤트가 발생한 경우 하드웨어 이벤트를 처리 할 수 ​​있도록 더 높은 우선 순위로 스레드를 차단하는 작업 스위치를 수행 할 수도 있습니다. 시스템 호출이 실행될 때마다

2) 협동 멀티 태스킹 협동 멀티 태스킹

운영 체제는 스레드를 스위칭한다. 이는 응용 프로그램이 (예 : Windows 3.11, 고전적인 Mac OS와 같은 초기 멀티 태스킹 시스템에서 사용 된 Yield와 같은) 작업 전환을 명시 적으로 트리거 할 수있게 해주는 특별한 시스템 호출 일 수 있습니다. 또한 사용자 모드 내에서 협업 멀티 태스킹을 완벽하게 구현할 수 있습니다.

오늘날 대부분의 운영 체제는 하이브리드 방식을 사용합니다. 하드웨어 이벤트에 반응합니다 (긴 실행 스레드가 절대로 시스템 루틴을 호출하지 않으며 다른 I/O가 발생하지 않으면 타이머가됩니다). 응용 프로그램이 syscall을 수행하거나 시스템 제공 라이브러리를 호출 할 때마다 협력 방식.

0

타이머 인터럽트는 동일한 우선 순위의 스레드 또는 프로세스 간의 시간 슬라이스 컨텍스트 전환에 필요합니다. 일부 멀티 스레드 선점 형 임베디드 운영 체제의 대안은 모든 스레드를 다른 우선 순위로 만드는 것입니다. 따라서 시간 조각이나 타이머 인터럽트가 필요하지 않습니다. 인터럽트는 컨텍스트 스위치 (시스템 호출을 사용하여 다른 스레드를 알리는 스레드 이외에)를 트리거하는 데 계속 사용될 수 있지만 타이머 인터럽트는 필요하지 않습니다.