본문 바로가기
개발/컴퓨터 사이언스

스케쥴링

by Dahna 2022. 11. 20.

스케쥴링

목차

  • 소스코드의 컴파일 과정
    1. Preprocessing(전처리)
    2. Compile -> assembly
    3. Liking
  • 스케쥴링
    • 선점형(Preemptive) 스케쥴링
      • Round Robin
      • MFQ(multi feedback queue) 스케쥴링
        • 주요 문제점
          • starvation problem
          • DeadLock
    • 비선점형(Non-Preemptive) 스케쥴링

 

소스코드의 컴파일 과정

  • 프로그램이 되기 위해서는 main 함수가 필요하다.
  1. Preprocessing(전처리)
  • 코드 줄바꿈 없애고 한줄로 바꿈(c언어)
  • 컴파일할수 있는 단계까지 전처리
    • 매크로 대체, 조건부 컴파일 지시문 테스트, file include
  1. Compile -> assembly(binary file(=object file)로 바꿔줌. .o file)
  • 공유 라이브러리는 .so파일로 공유된다.
  • 컴파일 시 -c옵션을 주면 컴파일까지 실행된 object file을 얻을 수 있다.
  1. Liking
  • 헤더 파일을 불러들여 오브젝트 파일을 연결하고 프로그램으로 변환한다.
    • 헤더파일: 함수 선언부만 존재하는 파일
  • Dynamic link
    • 공유라이브러리를 가리키도록 처리한다.
    • 프로그램의 실행 시점에 해당 함수의 구현부가 있는 프로세스를 동시에 메모리에 올려 코드를 수행한다.
    • 공유 라이브러리가 업데이트되었을때 다시 컴파일할 필요가 없고(함수가 추가되는게 아니라면), 업데이트가 쉽다.
  • Static link
    • 컴파일할 때 함수의 구현부를 실행파일에 삽입한다.
    • 파일 공유 시 해당 파일만으로 실행이 가능한 이점이 있다.
    • 파일 크기가 커지고, 업데이트 시 복잡도가 비교적 높으며 다시 컴파일 해줘야한다.

스케쥴링

  • 여러 프로세스가 CPU를 점유하는 순서와 시간을 결정하는 매커니즘

선점형(Preemptive) 스케쥴링

Round Robin

  • time slice(quantum)
  • 현재 실행중인 프로세스가 일정 시간이 지나면 CPU에서 내려오게 한다.

MFQ(multi feedback queue) 스케쥴링

중요한 관점
  • priority(우선순위)
    • 먼저 실행된다
  • time slice
    • 오래 점유한다.
운영체제별 구현 방식
  • 윈도우는 우선순위, time slice를 각각 정 할수 있음
  • 리눅스는 우선순위, time slice를 각각 정할 수 없도록 구현되어 있음. 오픈소스이기때문에 커스텀도 가능함.
주요 문제점
  • starvation problem
    • 우선순위가 낮아서 처리되지 않는 프로세스가 존재할 수 있는 문제점이 있다. 해결 방법으로는 우선순위가 낮은 프로세스의 우선순위를 높여주어 해결할 수 있다.
  • DeadLock(교착 상태)
    • 두 개 이상의 프로세스가 서로 자원을 얻지 못해서 다음 처리를 하지 못하는 상태(무한히 다음 자원을 기다리게 되는 상태)
    • 교착상태가 존재하는 프로세스는 IPC를 사용중이라는 뜻
    • 해결 방법: 공유 자원(트리티컬 섹션) 관리 -> 필요한 자원을 선점했을 때에만 프로세스를 수행할 수 있도록 atomic instruction으로 공유 자원의 접근 가능 상태를 관리한다.

비선점형(Non-Preemptive) 스케쥴링

  • 프로세스에 yield 함수를 추가하여, yield 함수가 실행되면 CPU에서 내려감
  • FCFS(first come first served)(fifo) 방식
  • 프로세스를 강제로 내려오게 할 수 없으므로, 모든 프로그램을 신뢰할수 있을때만 씀

Real Time 스케줄링

  • 프로세스가 일정 시간안에 들어가는게 보장되어야 할 때 사용된다.(로켓, 로봇 등에 사용되는 프로그램)

'개발 > 컴퓨터 사이언스' 카테고리의 다른 글

[운영체제] Memory Management  (0) 2022.12.04
Process와 Thread  (1) 2022.10.11
운영체제와 Kernel  (2) 2022.10.04
Instruction과 Pipelining  (0) 2022.09.27
CPU와 RAM  (1) 2022.09.21

댓글