빨간색으로 처리 스케줄러는 현재 CPU가 처리중인 프로세스를 우선 순위가 높은 프로세스 인 으로 대체합니다. 언제든지 CPU가 우선 순위가 높은 프로세스를 실행 중일 때 스케줄러가 CPU에 우선 순위 프로세스에 대해 알리기 위해 실행중인 프로세서의 경우 하나의 프로세스 만 프로세서에서 실행됩니다.프로세서가 높은 프로세스로 프로세스를 전환하는 방법을 알고 계십니까?
답변
프로세스 스케줄러는하지 않을 경우 현재 실행중인 프로세스가 다음에 실행해야하는 프로세스, 실행하고 계속할지 여부를 결정하기위한 책임 있는 운영 체제의 구성 요소입니다.
스케줄러가 processes
을 모니터하고 그들이 사용하는 CPU 시간을 돕기 위해 a programmable interval timer interrupts the processor periodically (typically 50 or 60 times per second)
. 이 타이머는 운영 체제가 자체 초기화 될 때 프로그래밍됩니다. 각 인터럽트에서 운영 체제의 스케줄러가 실행되어 현재 실행중인 프로세스가 계속 실행되어야하는지 또는 일시 중단되어야하는지, 또 다른 준비된 프로세스가 실행되도록 허용되어야하는지 여부를 결정합니다. 선점 예약에 사용되는 메커니즘입니다.
기본적으로 프로세스 스케줄러는 동일한 주 메모리 인 when active
에서 실행되지만 인터럽트에 의해 호출 된 후에 만 활성화됩니다. 그러므로, 그들은 항상 달리는 것은 아닙니다.
BTW, 그 대답은 훌륭한 개념적 질문이었습니다. 귀하의 주제에 대한 최고의 희망.
우선 순위가 높은 스레드/프로세스는 인터럽트가 스케줄러가 실행되어 다음에 실행할 스레드 세트를 결정할 때 우선 순위가 낮은 스레드를 선점하며 스케줄러 알고리즘은 우선 순위가 낮은 스레드가 필요하다고 결정합니다 우선 순위가 높은 우선 순위로 대체됩니다. 이미 실행중인 스레드에서
소프트웨어 인터럽트 (콜)를하고 예를 들어, 스레드의 상태를 변경 :
인터럽트는 두 가지 종류로 왔습니다. 다른 스레드가 대기중인 이벤트, 뮤텍스 또는 세마포어를 신호로 보내 실행 준비를합니다.
I/O 작업이 완료되었거나 일부 시간 초과 간격이 만료되어 실행중인 스레드 집합을 변경해야하므로 드라이버가 실행되고 종료시 스케줄러를 호출하도록 선택한 하드웨어 인터럽트 (예 : 디스크, NIC, KB, 마우스, 타이머).
보류중인 프로세스에 대한 검사를 계속하는 타이머 인터럽트입니까? – Vasu
@ user2773010 - 예,이 타이머 인터럽트는 실행중인 프로세스를 확인하거나 프로세스 스케줄러에서 예약 할 수 있습니다. –
@shekharsuman ** ** 귀하의 답변을 수락하는 포스터는 ** ** 특히 몇 분 밖에 안되는 때가 아닙니다. –
@ ChrisStratton-SORRY! 내 의견을 삭제합니다.하지만 사실, 나는 스택 오버플로에 대한 받아 들여지지 않고 업하지 않은 답변에 실망합니다. 스택 교환 메타 (Stack Exchange Meta)에서 언급 한 바에 따르면 정답과 업보트 모두를 친절하게 받아들입니다. "죄송합니다"라고 대답했지만, 대답이 유일한 응답자라면 내 습관이었습니다! 나는 그것을 처리하려고 노력할 것입니다. –