티스토리 뷰

프로세스의 상태와 컨텍스트 스위치에서 언급된 스케줄러에 대해서 공부한 내용입니다.

 

프로세스 심화 - 컨텍스트 스위치(문맥 교환)

프로세스와 스레드 차이에 대해 간단히 알아보고 나서 프로세스의 컨텍스트 스위치에 대해서 깊게 알아봐야겠다고 느꼈습니다. Process와 Thread의 차이는 무엇일까? Process 컴퓨터에서 연속적으로

kkoon9.tistory.com

 

프로세스 심화 - 프로세스의 상태

컨텍스트 스위칭에 대해서 알아보면서 프로세스의 상태를 저장한다는 표현이 많이 나와서 프로세스의 상태에 대해서 정리해봤습니다. 프로세스 심화 - 컨텍스트 스위치(문맥 교환) 프로세스와

kkoon9.tistory.com

스케줄러

스케줄러는 어떤 프로세스에게 자원을 할당할지를 결정하는 OS 커널의 모듈입니다.

스케줄러에는 장기 스케줄러와 단기 스케줄러가 있습니다.

장기 스케줄러

작업 스케줄러라고도 부르며, 어떤 프로세스를 준비 큐에 삽입할지를 결정하는 역할을 합니다.

CPU에서 실행되기 위해서는 프로세스가 메모리를 보유해야 하죠.

장기 스케줄러는 프로세스에게 메모리를 할당하는 문제에 관여하게 됩니다.

단기 스케줄러

CPU 스케줄러라고도 부르며, 준비 상태의 프로세스 중에서 어떤 프로세스를  실행 상태로 만들지 결정하는 역할을 합니다.

시분할 시스템에서는 타이머 인터럽트가 발생하면 단기 스케줄러가 호출됩니다.

🤔 요새는 OS에 장기 스케줄러를 두지 않는다던데?

자원이 빈약하던 시절에 주로 사용되었다고 합니다.

적은 양의 메모리를 많은 프로세스들에게 할당하면 프로세스당 메모리 보유량이 지나치게 적어져 시스템의 효율이 떨어졌기 때문에 장기 스케줄러가 사용되었습니다.

이에 비해 현대에서는 프로세스가 시작 상태가 되면 장기 스케줄러 없이 곧바로 그 프로세스에 메모리를 할당해 준비 큐에 넣어주게 됩니다.

🤔 아무리 자원이 풍부해졌다지만, 장기 스케줄러의 역할이 필요하지 않을까?

그래서 현대에서는 장기 스케줄러 대신에 중기 스케줄러를 둔다고 합니다.

중기 스케줄러

너무 많은 프로세스에게 메모리를 할당해 시스템의 성능이 저하될 때, 프로세스의 수를 조절하기 위해 추가된 스케줄러입니다.

중기 스케줄러는 메모리에 올라와 있는 프로세스 중 일부를 선정해 이들로부터 메모리를 통째로 빼앗아 그 내용을 디스크의 스왑 영역에 저장합니다.

이를 스왑 아웃이라고 합니다.

🤔 많은 양의 프로세스가 메모리에 할당되면 왜 성능이 저하될까?

같은 양의 메모리를 여러 프로세스가 나눠가지는 상황이 됩니다.

보유 메모리량이 적어지게 되면 CPU 수행에 당장 필요한 프로세스의 주소 공간조차도 메모리에 올려놓기 힘들게 되죠.

그렇게 되면 오버헤드가 큰 디스크 입출력이 수시로 발생되어 성능 저하로 이어지게 되는 겁니다.

🤔 메모리를 빼앗는 기준이 뭐야?

0순위 프로세스는 봉쇄 상태에 있는 프로세스입니다.

봉쇄 상태인 프로세스는 당장 CPU를 획득할 가능성이 없기 때문에 뺏어버리는 겁니다.

봉쇄 상태인 프로세스를 스왑 아웃시켜도 메모리가 부족하다면 준비 상태인 프로세스도 스왑 아웃시킵니다.

중지 상태 추가

중기 스케줄러의 등장으로 인해 프로세스의 상태는 중지 상태가 추가되었습니다.

스왑 아웃된 프로세스 상태가 중지 상태입니다.

중지 상태는 중지 준비 상태와 중지 봉쇄 상태로 세분화할 수 있습니다.

  • 중지 준비 상태 : 준비 상태에서 스왑 아웃된 상태
  • 중지 봉쇄 상태 : 봉쇄 상태에서 스왑 아웃된 상태

중지 봉쇄 상태가 봉쇄되었던 조건을 만족하게 되면 중지 준비 상태로 변경되게 됩니다.

위 사진은 봉쇄 상태가 추가된 프로세스 상태입니다.

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/02   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28
글 보관함