Keep going

프로세스 스케줄링 본문

School/운영 체제

프로세스 스케줄링

코딩천재홍 2021. 4. 13. 01:21

Process Scheduling

  • ready 되어 있는 process가 여러개 있다면 어떤 프로세스에게 cpu를 줄 것인가
  • process scheduler : ready queue에 있는 여러가지 process 중에서 어떤 process가 다음 cpu 실행을 받을 것인가 결정함
  • 시스템안에서 여러가지 큐
    • job queue - DISC에서 main memory 나올 때까지 기다리는 큐
    • ready queue - cpu를 받기 위해 준비된 애들이 연결 되어 있는 애들
    • device queues - 장치에 있는 큐

 

  • 프로세스가 어떤 큐에 있는가를 기준으로 process를 나눠 볼 수있다.
  • process 처음 생겨나면 ready queue, cpu 받으면 실행
  • I/O 요청 → I/O queue
  • 할당된 시간이 지나면 ready queue
  • 자식 만들면 자식 실행되면서 자기는 ready queue
  • 인터럽트 발생하면 ready queue
  • 반복하다 cpu 받고 종료

 

Schedulers

  • long-term scheduler (job scheduler)
    • DISC에서 여러 job 중 main memory로 갖고 올 때 어떤 job을 갖고 올거냐 하는 것을 선택하는 스케줄러
    • 시간이 길다?
      • 메인 메모리에서 자리가 비어야만 job 하나를 갖고오기 때문에 실행되는 간격이 길다
    • 주요 작업
      • job queue에서 ready queue로 작업을 갖고 오는 것
      • invoked infrequently (가끔 한 번씩 실행)
      • 메인 메모리 작업 개수(degree of multiprogramming) 조정
    • 요즘 시스템에서는 batch 시스템을 잘 이용안하므로 대부분 long term scheduler 없는 경우 많다.
  • short-term scheduler (cpu scheduler)
    • ready queue 작업에서 어떤 작업한테 cpu를 줘서 실행시키느냐 결정
    • invoked frequently (자주 실행)
    • 사용자에게 여러 명의 프로그램 진행되는 것 같이 모양을 보여주기 때문에 수밀리초보다 한번씩 cpu schedulling 자주 실행 → 빨라야 함
    • 느리면 schedulling 하는데 오버헤드 커서 유용한 작업 못하기 때문에 shorterm scheduller는 아주 빨라야 한다.   

 

프로세스 구별

    • I/O bound process (I/O 중심 프로세스)
      • I/O 작업을 주로 하는 process
      • I/O가 전체 실행시간 부분 차지
    • CPU bound process (cpu 중심 프로세스)
      • 딥러닝 같은 방대한 계산해야하는 것들 
      • I/O들 일어나지 않고 CPU만 엄청나게 많이쓰게 된다.
    • 만약 메인 메모리에 I/O bound job, CPU bound job 여러개 있다면 어떻게 main memory에다가 집어넣는게 좋은 방법일까?
      • I/O bound job만 다 들어있는 경우
        • 잠깐 cpu쓰고 I/O 하러 감 → 나머지 cpu문제는 애들중에 어떤 I/O가 끝날때까지 놀아야 하는 것 → cpu 노는 시간 길어짐 
      • cpu bound job 만 다 들어있는 경우
        • 한 작업이 cpu 잡으면 한동안 안 내놓는다. → I/O 하러 잠깐 가면 그동안 2번째 작업은 CPU를 오래쓴다. → I/O는 이미 끝났고 놀고있다. → I/O idle time 길어진다.
      • I/O bound job, cpu bound job 섞여있는 경우
        • cpu 쓰다가 내놓으면 잠깐 i/o작업가고 i/o bound job이 잠깐 cpu 잠깐 쓰는 형태로 I/O 작업하는동안에도 CPU 많이 사용한다.
        • CPU와 I/O 동시에 동작하는 시간 많아짐
        • 시스템 전체 활용도 ↑
        • I/O bound job, cpu bound job 적당히 섞여서 메인 메모리에 들어와 있는 것 선호

 

운영체제 발달 과정에서 main memory 적을 때 생기는 일

  • terminal 연결된 여러명의 사용자가 사용한다고 생각해볼 때 사용자들이 작업을 막 만들면 main memory가 모자랄 수 있다.
  • Swapping : main memory에 있던 작업중에서 일부는 잠깐 DISC에 내려 보내고 여유 생기면 DISC로부터 갖고올 수 있다.
  • Swapper :  누구를 내려보낼 것인가와 DISC - swap area에 swap 된 작업 중 어떤 job을 갖고올 것인지 결정하는 것
  • mid term scheduler 중간 시간 간격으로 실행

 

 

Context Switch

  • 한 프로세스 실행되다가 다음 process로 넘어가려면 process 상태 save, 약간의 작업을 더하고 다음 실행을 process 상태 복원 그리고 실행
  • 중간에 시스템 호출이 일어나므로 사용자 모드에서 커널 모드로 바뀌어야 되고 커널모드에서 실행되다가 사용자 모드로 바뀌어야 한다.
  • Context switch : 한 프로세스는 실행되고 있다가 다른 프로세스 실행으로 바꾸는 작업
    • 어떤 프로세스를 실행하고 있다가 문맥을 저장하고 다른 프로세스 문맥으로 load해서 다른 프로세스 실행 하는 것 
    • 문맥 = Process control block
  • Context Switch 시간은 사용자 프로그램 실행하는 시간에 속하지 않는다.
  • context switch 시간이 길어지면 시스템 느려진다. PCB에 다양한 정보 저장할 수록 시간이 증가한다.
  • 요즘 하드웨어들은 Context Swith 지원하기 위한 기능들이 들어 있는 경우 많다.
    • register set 여러개 둬서 A 프로세스 실행할 때 A register set 사용하다가 B 프로세스 실행할 때 B register set 사용하면 레지스터 PCB에 저장/복원 안해도 된다. → 시간 단축 

 

 

'School > 운영 체제' 카테고리의 다른 글

프로세스 간 통신 (Interprocess communication)  (0) 2021.04.14
프로세스 연산  (0) 2021.04.14
프로세스  (0) 2021.04.12
운영체제 디버깅  (0) 2021.04.12
운영체제 구조  (0) 2021.04.12
Comments