나를 기록하다
article thumbnail
반응형

쉽게 배우는 운영체제

스케줄링의 개요

CPU 스케줄링

CPU 스케줄러는 관리의 범주를 나누어 스케줄링한다. CPU 스케줄링은 규모에 따라 고수준 스케줄링, 중간 수준 스케줄링, 저수준 스케줄링으로 구분된다.

스케줄링의 단계

 

고수준 스케줄링

  • 가장 큰 틀에서 이루어지는 CPU 스케줄링은 고수준 스케줄링 또는 장기 스케줄링, 작업 스케줄링이라고 함
  • 많은 작업을 동시에 하면 시스템에 과부하가 걸려 작업이 원활하게 이루어지지 않음
  • 시스템 내의 전체 작업 수를 조절
    • 작업: 운영체제에서 다루는 일의 가장 큰 단위, 1개 또는 여러 개의 프로세스로 이루어짐
  • 고수준 스케줄링 단계에서 어떤 작업을 시스템이 받아들일지 또는 거부할지 결정
  • 일단 작업이 시작되면 시스템 자원을 사용하기 때문에 기존 작업에 영향을 미침
  • 작업 요청이 오면 스케줄러가 시스템의 상황을 고려하여 작업을 승인할지, 거부할지 결정
    → 승인 스케줄링이라고도 함
  • 이에 따라 시스템 내에서 동시에 실행 가능한 프로세스의 총 개수가 정해짐
  • 전체 시스템의 부하를 고려하여 작업을 시작할지 말지를 결정
    → 전체 프로세스 수가 결정 → 멀티프로그래밍 정도라고 함
  •  메인프레임과 같은 큰 시스템에서 규모가 큰 일괄 작업을 처리할 때 사용

 

저수준 스케줄링

  • 가장 작은 단위의 스케줄링
  • 어떤 프로세스에 CPU를 할당할지, 어떤 프로세스를 대기 상태로 보낼지 등을 결정
  • [예시]
    1. 준비 상태에 있는 프로세스 중 하나를 실행 상태로 보냄
    2. 실행 상태에 있는 프로세스를 대기 상태로 보냄
    3. 대기 상태의 프로세스를 준비 상태로 보냄
  • 아주 짧은 시간에 일어나기 때문에 단기 스케줄링이라고도 부름
  • 저수준 스케줄리에서는 실제로 작업이 이뤄짐
    → 오늘날의 CPU 스케줄러는 대부분 중간 수준 스케줄링과 저수준 스케줄링으로 구성됨

 

중간 수준 스케줄링

  • 고수준 스케줄링과 저수준 스케줄링 사이에 일어나는 스케줄링
  • 프로세스가 활성화된 후에도 여러 가지 사정으로 시스템에 과부하가 걸릴 수 있음
    → 시스템 부하 조절을 위한다면 중간 수준 스케줄링 고려
    → 이미 활성화된 프로세스 중 일부를 보류 상태로 보냄
    → 보류된 프로세스는 처리 능력에 여유가 생기면 다시 활성화됨
  • 중지(suspend)와 활성화(active)로 전체 시스템의 활성화된 프로세스 수를 조절하여 과부하를 막음
  • 일부 프로세스를 중지 상태로 옮김으로써 나머지 프로세스가 원만하게 작동하도록 지원
    → 보류 상태에 해당, 저수준 스케줄링이 원만하게 이루어지도록 완충하는(buffer) 역할

 

스케줄링의 목적

  • 모든 프로세스가 공평하게 작업하도록 하는 것
    → 특정 프로세스가 시스템 자원을 독적하거나 파괴하는 것을 막기 위해 중요도에 따라 우선순위 배정
  • 시스템 자원을 효율적으로 배분하여 전체적인 시스템의 성능을 높여야 함
  • 확장성도 고려해야 함(프로세스의 개수가 증가해도 성능에 갑작스러운 변화가 없어야 함)
CPU 스케줄링의 목적
1. 공평성 2. 효율성 3. 안정성 4. 확장성 5. 반응 시간 보장 6. 무한 연기 방지

스케줄링 시 고려 사항

선점형 스케줄링과 비선점형 스케줄링

  • 선점형 스케줄링(preemptive scheduling): 어떤 프로세스가 CPU를 할당받아 실행 중이더라도 운영체제가 CPU를 강제로 빼앗을 수 있는 스케줄링 방식
    • 예시) 인터럽트 처리: CPU가 인터럽트를 받으면 현재 실행 중인 작업을 중단하고 커널을 깨워 인터럽트를 처리하게 하며, 인터럽트 처리가 완료되면 원래의 작업으로 돌아감
    • 장점: 하나의 프로세스가 CPU를 독점할 수 없기 때문에 빠른 응답 시간을 요구하는 대화형 시스템이나 시분할 시스템에 적합
    • 단점: 문맥 교환 같은 부가적인 작업으로 인해 낭비가 생김
    • 대부분의 저수준 스케줄러는 선점형 스케줄링 방식 사용
  • 비선점형 스케줄링(non-preemptive scheduling): 어떤 프로세스가 CPU를 점유하면 다른 프로세스가 이를 빼앗을 수 없는 스케줄링 방식
    • 예시) 과거의 일괄 작업 시스템
    • 장점: 스케줄러의 작업량이 적고 문맥 교환에 읳나 낭비도 적음
    • 단점: CPU 사용 시간이 긴 프로세스 때문에 CPU 사용 시간이 짧은 여러 프로세스가 오랫동안 기다리게 되어 전체 시스템의 처리율이 떨어짐

선점형과 비선점형

 

CPU 집중 프로세스와 입출력 집중 프로세스

  • CPU 버스트: CPU를 할당받아 실행하는 작업
  • 입출력 버스트: 입출력 작업을 할당받아 실행하는 작업

CPU 집중 프로세스

  • 수학 연산과 같이 CPU를 많이 사용하는 프로세스, CPU 버스트가 많음

입출력 집중 프로세스

  • 저장장치에서 데이터를 복사하는 일과 같이 입출력을 많이 사용하는 프로세스, 입출력 버스트가 많음

CPU 집중 프로세스와 입출력 집중 프로세스가 같이 있을 때는 입출력 집중 프로세스를 먼저 실행 상태로 옮기는 것이 효율적.

입출력 집중 프로세스가 실행 상태로 가면 입출력 요구에 의해 대기 상태로 옮겨지기 때문에 다른 프로세스가 CPU를 사용할 수 있다.

 

전면 프로세스와 후면 프로세스

전면 프로세스

  • GUI를 사용하는 운영체제에서 화면의 맨 앞에 놓인 프로세스
  • 현재 입력과 출력을 사용하는 프로세스, 사용자와 상호작용이 가능하여 상호작용 프로세스라고도 함

후면 프로세스

  • 사용자와 상호작용이 없는 프로세스
  • 압축 프로그램처럼 사용자의 입력 없이 작동하기 때문에 일괄 작업 프로세스라고도 함

 

정리

우선순위 비교


다중 큐

준비 상태의 다중 큐

  • 매번 모든 프로세스 제어 블록을 검색하면 효율성이 상당히 떨어지기 때문에 준비 상태의 다중 큐를 이용한다.
  • 프로세스의 우선순위에 따라 여러 개의 큐를 만들면 일일이 찾지 않아도 돼 편리하다.

준비 상태의 다중 큐

 

프로세스의 우선순위를 배정하는 방식

  • 고정 우선순위 방식(static priority)
    • 운영체제가 프로세스에 우선순위를 부여하면 프로세스가 끝날 때까지 바뀌지 않는 방식
    • 구현은 쉬우나 시스템 변화에 대응하기 어려워 작업 효율이 떨어짐
  • 변동 우선순위 방식(dynamic priority)
    • 프로세스 생성 시 부여받은 우선순위가 프로세스 작업 중간에 변하는 방식
    • 구현은 어려우나 시스템의 효율성을 높일 수 있음

 

대기 상태의 다중 큐

  • 시스템의 효율을 높이기 위해 대기 상태에서는 같은 입출력을 요구한 프로세스끼리 모아둠.

대기 상태의 다중 큐

  • 준비 큐는 한 번에 하나의 프로세스를 꺼내어 CPU를 할당하는 반면, 대기 큐는 여러 개의 프로세스 제어 블록을 동시에 꺼내어 준비 상태로 옮긴다.
  • 이렇게 동시에 끝나는 인터럽트를 처리하기 위해 인터럽트 벡터(interrupt vector)라는 자료구조 사용
  • 인터럽트 벡터에는 동시에 완료된 입출력 정보와 처리 방법이 담김
  • 이 정보에 따라 완료된 프로세스 제어 블록은 모두 준비 상태로 이동

프로세스 상태와 다중 큐


스케줄링 알고리즘

스케줄링 알고리즘은 비선점형 알고리즘과 선점형 알고리즘으로 나뉜다.

  • 비선점형 알고리즘: FCFS 스케줄링, SJF 스케줄링, HRN 스케줄링
  • 선점형 알고리즘: 라운드 로빈 스케줄링, SRT 스케줄링, 다단계 큐 스케줄링, 다단계 피드백 큐 스케줄링
  • 둘 다 가능: 우선순위 스케줄링

 

스케줄링 알고리즘의 선택 기준

  1. CPU 사용률
  2. 처리량
  3. 대기 시간: 프로세스가 생성된 후 실행되기 전까지 대기하는 시간
  4. 응답 시간: 첫 작업을 싲가한 후 첫 번째 출력(반응)이 나오기까지 걸리는 시간
  5. 반환 시간: 대기 시간을 포함하여 실행이 종료될 때까지 걸리는 시간

+) 실행 시간: 프로세스 작업이 시작된 후 종료되기까지 걸리는 시간

 

CPU 알고리즘의 효율성을 평가할 때 사용률과 처리량은 계산하기 어려워 주로 대기 시간, 응답 시간, 반환 시간을 계산한다.

대기, 응답, 실행, 반환 시간의 관계

스케줄링 알고리즘의 성능을 비교할 때는 주로 평균 대기 시간을 본다. 평균 대기 시간은 모든 프로세스의 대기 시간을 합한 뒤 프로세스의 수로 나눈 값이다.

평균 대기 시간

 

FCFS(First Come First Served) 스케줄링

동작 방식

  • 준비 큐에 도착한 순서대로 CPU를 할당하는 비선점형 방식, 선입선출 스케줄링이라고도 함
  • 초기의 일괄 작업 시스템에서 사용
  • 프로세스가 큐에 도착한 순서대로 실행
  • 비선점형 방식
  • 프로세스가 끝나야 다음 프로세스 실행
  • 모든 프로세스의 우선순위 동일

FCFS

 

성능

프로세스 도착 순서와 작업 시간의 예 1(단위: 밀리초)

  • 3개 프로세스의 평균 대기 시간은 (0 + 27 + 42) / 3 = 23밀리초

FCFS 스케줄링의 평균 대기 시간

 

평가

  • 단순하고 공평하지만 처리 시간이 긴 프로세스가 CPU를 차지하면 다른 프로세스들은 하염없이 기다리느라 시스템의 효율성이 떨어짐
    → 콘보이 효과(convoy effect) 또는 호위 효과라고 함
  • 현재 작업 중인 프로세스가 입출력 작업을 요청하는 경우 CPU가 작업하지 않고 쉬는 시간이 많아져 작업 효율이 떨어진다는 것
  • 시분할 시스템 → 입출력 요청한 프로세스를 대기 상태로 보내어 처리 가능
  • 일괄 작업 시스템 → 프로세스의 상태 변화 X → 작업 효율 저하

 

SJF 스케줄링

동작 방식

  • 준비 큐에 있는 프로세스 중에서 실행 시간이 가장 짧은 작업부터 CPU를 할당하는 비선점형 방식
  • 최단 작업 우선 스케줄링이라고도 함
  • 프로세스에 CPU를 배정할 때 시간이 오래 걸리는 작업이 앞에 있고 간단한 작업이 뒤에 있으면 그 순서를 바꾸어 실행
  • FCFS의 콘보이 효과를 완화하여 시스템의 효율성 높임
SJF 스케줄링은 SPF(Shortest Process First) 또는 쵣나 프로세스 우선 스케줄링이라고도 함

SJF 스케줄링의 동작

 

성능

SJF 스케줄링의 평균 대기 시간

  • 3개 프로세스의 평균 대기 시간은 (0 + 24 + 36) / 3 = 20밀리초

 

평가

  • 장점
    • 작은 작업을 먼저 실행하여 시스템의 효율성 좋아짐
  • 사용하기 힘든 이유
    1. 운영체제가 프로세스의 종료 시간을 정확하게 예측하기 어려움
    2. SJF 알고리즘은 공평성에 위배
      → 해당 프로세스보다 크기가 작은 작업에 계속 준비 큐에 들어오면 해당 프로세스의 작업이 계속 연기됨
      → 아사(starvation) 현상 또는 무한 봉쇄(infinite blocking) 현상이라고 함

 

HRN 스케줄링

동작 방식

  • SJF 스케줄링에서 발생할 수 있는 아사 현상을 해결하기 위해 만들어진 비선점형 알고리즘
  • 최고 응답률 우선 스케줄링이라고도 함
  • 서비스를 받기 위해 기다린 시간과 CPU 사용 시간을 고려하여 스케줄링하는 방식
HRN 스케줄링에서 프로세스의 우선순위를 결정하는 기준
우선순위 = (대기 시간 + CPU 사용 시간) / CPU 사용 시간

 

성능

  • 스케줄링 방식에 에이징을 구현한 셈

HRN 스케줄링의 평균 대기 시간

  • 평균 대기 시간은 (0 + 24 + 36) / 3 = 20밀리초

 

평가

  • 실행 시간이 짧은 프로세스의 우선순위를 높게 설정하면서도 대기 시간을 고려하여 아사 현상을 완화함
  • SJF 스케줄링과 비교 시 대기 시간이 긴 프로세스의 우선순위를 높임으로써 CPU를 할당받을 확률을 높임
  • 여전히 공평성이 위배 → 많이 사용되지 않음

 

라운드 로빈 스케줄링

동작 방식

  • 한 프로세스가 할당받은 시간(타임 슬라이스) 동안 작업을 하다가 완료하지 못하면 준비 큐의 맨 뒤로 가서 자기 차례를 기다리는 방식
  • 우선순위가 적용되지 않은 가장 단순한 선점형 스케줄링 방식

 

성능

  • 타임 슬라이스가 10밀리초인 시스템에서의 평균 대기 시간

라운드 로빈 스케줄링의 평균 대기 시간

  • 총 대기 시간: 0(P1) + 7(P2) + 14(P3) + 19(P1) + 19(P2) + 8(P1) = 67밀리초
  • 평균 대기 시간: 67 / 3 = 22.33밀리초
  • 프로세스가 CPU를 일정 시간 동안 사용한 후 다른 프로세스에 넘겨주어야 하므로 앞의 긴 작업을 무작정 기다리는 콘보이 효과가 줄어듦

 

평가

  • 아무래도 콘베이 효과가 줄지만, FCFS 보다 무조건 좋은 알고리즘이라고 할 수 없다.
  • 여기서 p2, p1 의 순서만 바꾸더라도 FCFS 와 대기시간이 동일하고, 이런 경우 문맥교환의 비용이 추가되어 더 비효율적인 알고리즘이 된다.
  • 따라서, 다음과 같이 장단점을 파악하여 타임 슬라이스를 잘 관리해야 함
    • 타임 슬라이스가 큰 경우, FCFS 와 가깝게 동작하게 되고, 또한 워드 프로세스와 비디오 플레이어가 동시에 실행되고 있을 때, 비디오가 엄청 끊겨 보이게 됨
    • 타임 슬라이스가 작은 경우, 사용자는 하나의 프로세스가 아니라, 여러개의 프로세스가 동시에 실행되는 것처럼 보임. 하지만 많은 문맥교환으로 인해 시스템 효율이 극으로 떨어지게 됨

 

SRT 우선 스케줄링

동작 방식

  • SJF 스케줄링과 라운드 로빈 스케줄링을 혼합한 방식, 최소 잔류 시간 우선 스케줄링이라고도 함
  • SJF 스케줄링의 선점형 버전
  • SRT 스케줄링은 기본적으로 라운드 로빈 스케줄링을 사용하지만 CPU를 할당받을 프로세스를 선택할 때 남은 작업 시간이 가장 적은 프로세스 선택
  • 라운드 로빈 스케줄링이 큐에 있는 순서대로 CPU를 할당한다면 SRT 스케줄링은 남은 작업 시간이 적은 프로세스에 CPU를 먼저 할당

SRT 스케줄링의 동작

 

성능

  • 타임 슬라이스가 10밀리초인 시스템

SRT 스케줄링의 평균 대기 시간

  • 총 대기 시간: 0(P1) + 4(P3) + 16(P2) + 27(P1) = 47밀리초
  • 평균 대기 시간: 47 / 3 = 15.66밀리초

 

평가

  • 현재 실행 중인 프로세스와 큐에 있는 프로세스의 남은 시간을 주기적으로 계산하고, 남은 시간이 더 적은 프로세스와 문맥 교환을 해야 하므로 SJF 스케줄링에는 없는 작업이 추가
  • SJT 스케줄링과 마찬가지로 운영체제가 프로세스 종료 시간을 예측하기 어렵고 아사 현상 일어나기 떄문에 잘 사용 X

 

우선순위 스케줄링

동작 방식과 성능

  • 프로세스의 중요도에 따라 우선순위를 반영한 스케줄링
  • [예시] 다음과 같이 FCFS 스케줄링에 우선순위를 적용해보자

FCFS 스케줄링에 우선순위를 적용한 결과

  • (비선점형 방식) SJF 스케줄링: 작업 시간이 짧은 프로세스에 높은 우선순위 부여
  • (비선점형 방식) HRN 스케줄링: 작업 시간이 짧거나 대기 시간이 긴 프로세스에 높은 우선순위 부여
  • (선점형 방식) SRT 스케줄링: 남은 시간이 짧은 프로세스에 높은 우선순위를 부여

 

우선 순위 알고리즘의 종류

  1. 고정 우선순위 알고리즘
  2. 변동 우선순위 알고리즘

 

평가

  • 준비 큐에 있는 프로세스의 순서를 무시하고 우선순위가 높은 프로세스에 먼저 CPU를 할당 → 공평성 위배 & 아사 현상 발생
  • 프로세스의 우선순위를 매번 바꿔야 함 → 오버헤드 발생 → 시스템 효율성 저하
  • 이런 단점에도 불구하고 프로세스의 우선순위는 시스템의 효율성이 아니라 프로세스의 중요도를 기준으로 결정됨

 

다단계 큐 스케줄링

  • MLQ(Multi-Level Queue) 스케줄링은 우선순위에 따라 준비된 큐를 여러 개 사용하는 방식
  • 라운드 로빈 방식으로 운영되는 큐는 우선순위에 따라 다단계로 나뉘어 있어 프로세스가 큐에 삽입되는 것만으로 우선순위가 결정됨
  • 우선순위는 고정형 우선순위 사용
  • 다단계 큐에 있는 모든 프로세스의 작업이 끝나야 다음 우선순위 큐의 작업 시작

다단계 큐 스케줄링의 동작

  • 우선순위에 따라 다양한 스케줄링이 가능한 선점형 방식
  • 우선순위가 높은 프로세스가 우선순위가 낮은 프로세스보다 먼저 작동 가능
  • 우선순위에 따라 타임 슬라이스를 조절하여 작업 효율 높일 수 있음
  • 예시) 전면 프로세스는 반응 속도를 높이기 위해 타임 슬라이스를 작게, 후면 프로세스는 사용자와 상호작용이 없으므로 FCFS 방식
    → 프로세스의 우선순위와 작업 형태를 고려하여 스케줄링 가능
  • 우선순위가 높은 상위 큐 프로세스의 작업이 끝나기 전에 하위 큐 프로세스의 작업을 할 수 없음
  • 이런 문제를 해결하기 위해 제안된 것이 다단계 피드백 큐 스케줄링

 

다단계 피드백 큐 스케줄링

  • MLFQ(Multi-Level Feedback Queue) 스케줄링은 우선순위가 낮은 프로세스에 불리한 다단계 큐(MLQ) 스케줄링의 문제점 보완한 방식
  • MLQ와 같이 여러 개의 큐를 사용하나 MLFQ는 CPU를 사용한 후 프로세스의 우선순위가 낮아짐
  • CPU를 사용한 후의 프로세스는 원래의 큐로 되돌아가지 않고 우선순위가 하나 낮은 큐의 끝으로 들어감
  • 프로세스가 CPU를 한 번씩 할당받아 실행될 때마다 프로세스의 우선순위를 낮춤
    → MLQ에서 우선순위가 낮은 프로세스의 실행이 연기되는 문제 완화
  • 우선순위에 따라 타임 슬라이스의 크기가 다름 → 우선 순위가 낮아질수록 해당 큐의 타임 슬라이스가 커짐
    → 어렵게 얻은 CPU를 좀 더 오랫동안 사용할 수 있도록 우선순위가 낮은 큐의 타임 슬라이스를 크게 설정

다단계 피드백 큐 스케줄링의 동작

  • 마지막 큐에 있는 프로세스는 무한대의 타임 슬라이스
    → 프로세스가 실행 상태에 들어가면 CPU를 빼앗기지 않고 끝까지 작업을 마친다는 것을 의미
  • MLFQ는 오늘날 운영체제가 CPU 스케줄링을 할 때 일반적으로 사용하는 방식, 변동 우선순위 알고리즘의 전형적인 예

인터럽트 처리

오늘날의 운영체제는 입출력 시 인터럽트를 이용하여 시스템의 효율을 높인다.

 

인터럽트의 개념

  • 인터럽트 처리는 입출력뿐 아니라 시스템 보호에 매우 중요한 역할
  • 초기의 컴퓨터 프로그래밍 방식 : 순차적 프로그래밍

윈도우 버튼

  • 순차적 프로그래밍으로 구현하려면 버튼이 눌려진 여부를 주기적으로 직접 확인해야 함
  • 오늘날의 프로그래밍에서는 버튼이 눌리면 프로세스에 알려줌 → 이벤트 드리븐(event driven)이라 함
  • 과거와 달리 다양한 입출력장치가 개발되어 운영체제가 모든 입출력을 관리하기 어려워지자 이벤트 드리븐 방식과 마찬가지로 입출력을 요청하고 입출력이 완료되면 이벤트를 발생시켜 이 사실을 알리게 되었는데 이를 인터럽트라 함.

 

동기적 인터럽트와 비동기적 인터럽트

동기적 인터럽트

  • 프로그램의 문제 때문에 발생하는 인터럽트
  • 컴퓨터 작업자가 의도적으로 프로세스를 중단하기 위해 발생시킨 인터럽트
  • 입출력장치 같은 주변장치의 조작에 의한 인터럽트
  • 산술 연산 중 발생하는 인터럽트

비동기적 인터럽트

  • 하드디스크 읽기 오류, 메모리 불량 등 하드웨어 오류로 발생하는 인터럽트
  • 키보드 인터럽트, 마우스 인터럽트

 

인터럽트 처리 과정

  • 인터럽트 번호와 그 번호에 붙어 있는 함수의 쌍으로 이루어져 있다.

윈도우 버튼에 연결된 함수

  • 시스템에는 많은 인터럽트가 존재하고 각각의 인터럽트에는 고유 번호(인터럽트 번호)가 있다.
  • 윈도우에서는 이 번호를 IRQ라고 하며, 시스템에서 인터럽트가 발생하면 IRQ로 인터럽트를 식별함
  • 인터럽트는 한순간에 여러 개가 동시에 발생하기도 하는데 이렇게 동시에 발생하는 인터럽트를 하나로 묶어서 처리하는 개념이 인터럽트 벡터이다.

인터럽트 처리 과정

  • 인터럽트 벡터는 인터럽트의 집합
  • 인터럽트가 발생하면 인터럽트 벡터의 번호가 0에서 1로 바뀜
  • 인터럽트 핸들러: 해당 인터럽트가 발생하면 어떤 일을 처리할 것인지가 정의된 함수

 

인터럽트 처리 과정

  1. 인터럽트 발생
  2. 현재 실행 중인 프로세스는 일시 정지 상태, 재시작하기 위해 현재 프로세스 관련 정보 임시 저장
  3. 인터럽트 컨트롤러가 실행되어 인터럽트의 처리 순서 결정
    이때, 여러 개의 인터럽트가 동시에 발생했다면 우선순위를 고려하여 중요한 인터럽트부터 처리하도록 순서 결정
  4. 먼저  처리할 인터럽트 결정시 인터럽트 벡터에 등록된 인터럽트 핸들러 실행
    *인터럽트 핸들러: 인터럽트 처리를 위해 미리 정의된 함수
    *인터럽트 벡터: 인터럽트와 인터럽트 핸들러를 일대일로 연결한 자료구조
  5. 인터럽트 벡터에 연결된 핸들러가 인터럽트 처리를 마치면 일시 정지도니 프로세스가 다시 실행되거나 종료
    (발생된 인터럽트가 입출력 완료라면 일시 정지도니 프로세스 다시 실행, 다른 프로세스의 메모리 영역 침범이나 오류라면 종료)

 

인터럽트와 이중 모드

이중 모드

  • 이중 모드(dual mode): 운영체제가 두 모드(커널 모드, 사용자 모드)를 전환하며 일 처리를 하는 것
  • 운영체제가 자원을 보호하기 위해 사용하는 기법
  • 사용자 프로세스가 시스템 자원에 직접 접근시 문제 발생 우려
  • 커널은 시스템 호출을 통해서만 자원에 접근하도록 제한 → 사용자 프로세스가 커널 모드에서 실행되지 못하게 함
  • 커널이 제공하는 시스템 호출은 사용하기 어렵고 매우 제한적
    → 다양한 방법으로 시스템 호출을 사용할 수 있도록 운영체제는 API 제공

시스템 호출과 API

사용자가 커널 모드로 진입하는 두 가지 경우

  1. 시스템 호출 사용: 사용자 프로세스가 원해서 진입하는 것, 자발적
  2. 인터럽트 발생: 비자발적, 잘못된 명령을 수행하여 동기적 인터럽트가 발생한 것이므로 프로세스 강제 종료

→ 사용자 프로세스가 자발적으로 커널 모드에 진입할 수 있는 유일한 수단은 시스템 호출

반응형
profile

나를 기록하다

@prao

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!

profile on loading

Loading...