> 3. 인터럽트란?

  • 프로세스가 수행 중에 다른 프로세스를 수행하기 위하여 현재 수행 중인 프로세스를 중단하거나 외부 입력장치에 의해 프로세스가 중단되는 상태를 인터럽트라고 한다.

  • 사용자에 의해서 새로운 프로그램이 실행 될 때, 현재 실행 중인 프로세스 상태를 잠시 중단하고, 새로운 프로그램을 실행 시키는 과정이다.

잠시 중단한 프로세스의 상태는 다시 실행을 시작하기 위해 중단되었던 시점의 정보를 잠시 저장한다.

  • 인터럽트는 입출력 연산, 하드웨어 실패, 프로그램 오류 등에 의해 발생한다.

  • 인터럽트가 발생한 경우, 진행 중인 프로그램 재개(Resume)에 필요한 레지스터 문맥(Register Context)을 저장한다.

3-1. 인터럽트의 처리를 위한 작업 순서

① 인터럽트가 발생하면 운영체제가 제어권을 받는다.

② 운영체제는 인터럽트 받은 현재의 프로세스 상태를 저장한다.

③ 운영체제는 인터럽트의 발생 원인을 찾아 지정되어 있는 루틴으로 제어권을 넘겨준다.

④ 인터럽트 처리 루틴이 인터럽트를 처리한다.

⑤ 인터럽트가 걸렸던 이전 프로세스의 상태로 복구된다.

⑥ 인터럽트가 걸렸던 시점 이후부터 프로세스가 실행된다.

3-2. 인터럽트 종류

  • SVC(SuverVisor Call) 인터럽트

프로세스 관리 호출, 기억장치 할당 후틴 호출, 입출력 수행 루틴 호출 시에 발생하는 인터럽트로 사용자가 새로운 프로그램을 실행할 때 발생한다.

새로운 프로그램을 실행하는 것은 사용자와 운영체제 정보 교환을 하므로 오퍼레이터(=사용자)와의 대화 시에 발생하는 인터럽트라고도 한다.

  • 입출력(I/O) 인터럽트

하드웨어적 인터럽트로 프린트나 디스크 저장 시에 입출력 채널 확인, 준비, 할당, 완료 시에 발생

  • 외부(Extern) 인터럽트

여러개의 프로세스가 운영되는 다중 프로그래밍 기법에서 임의의 프로세스는 CPU를 사용하기 위한 일정한 시간 간격(Time Slice)이 있는데 이를 시간할당량이라고 한다.

임의의 프로세스는 운영체제에 의해서 시간할당량이 확인되며, 운영체제가 관리하는 인터럽트 시계에 의해서 해당 프로세스가 종료된다. 이때 발생하는 인터럽트가 외부 인터럽트이다.

  • 재시작(Restart) 인터럽트

사용자가 ++ 키를 입력하거나 Reset 버튼을 이용하여 시스템을 재부팅하는 경우 발생

  • 프로그램 검사(Program Check) 인터럽트

실행 중인 프로그램에서 오버플로어(Overflow)나 언더플로어(Underflow)일 경우나 분모가 0인 나눗셈을 처리하는 경우 발생

  Overflow : 정해진 용량을 초과하는 경우

  Underflow : 아무것도 없는데 꺼낼려고 할 경우
  • 기계 검사(Machine Check) 인터럽트

컴퓨터 시스템 고장으로 발생

3-3. 인터럽트 처리

동기는 시간을 맞추는 행위

▶ 동기 인터럽트 (연속적)

: 명령어 실행 중 CPU에 의해 처리되는 인터럽트로 하나의 명령어가 종류 후 인터럽트 발생한다.

프로세스가 실행 중에 0으로 나누기를 할 때 발생하는 인터럽트

프로세스 내 명령어 실행 때문에 발생하는 인터럽트

프로세스 내 명령어가 보호 메모리 영역을 참조할 때 발생하는 인터럽트 등

▶ 비동기 인터럽트 (간혈적)

: 다른 하드웨어 장치가 CPU 클릭 시 시그널과 상관없이 생성하는 인터럽트이다.

키보드 혹은 마우스를 사용할 때 발생하는 것과 같은 인터럽트를 말한다.

"트랩(Trap)"

: 프로세스가 특정 시스템 기능을 사용하려고 할 때 그 기능을 운영체제에게 요청하는 방법

: 인터럽트 중에 소프트웨어적 인터럽트를 트랩이라고 할 수 있다.

: 인터럽트나 트랩이 발생하면 프로그램 카운터(PC)를 정해진 특정 번지로 변경하여 정해진 처리 루틴을 수행하게 된다.

> "인터럽트를 트랩 한다" = 특정한 인터럽트가 발생할 때까지 기다렸다가, 해당하는 루틴을 실행시킨다.

에러트랩 : 복원 루틴을 제공하기 위한 것

디버Block)깅 트랩 : 특정 명령의 실행을 기다렸다가 현재 프로그램을 중지시키고, 현재 상태를 분석하는 것

> 4. PCB (Process Control

PCB란?

운영체제 내에서 한 프로세스의 존재를 정의한다. 즉, 여러 개의 프로세스를 수행하는 다중 프로그래밍 환경 하에서 각 프로세스를 구분하기 위한 프로세스 제어 블록이다.

PCB 테이블은 프로세스들의 현재 상태를 기록한 정보 테이블이며 각 프로세스들의 주기억장치에 적대된 기억장치 위치 혹은 포인터와 식별자 등이 PCB 항목으로 기록된다.

4-1. PCB 항목

① 프로세스 식별자

② 프로세스 현재 상태

③ 프로그램 카운터(계수기)

④ 프로세스 우선순위

⑤ 프로세스가 적재된 기억장치 부분을 가리키는 포인터

⑥ 프로세스에 할당된 자원을 가르키는 포인터

⑦ 중앙처리장치(CPU, 처리기) 레지스터 정보

⑧ CPU의 각종 레지스터 상태를 가리키는 포인터

⑨ 계정 정보(시간 할당량)

⑪ 기억장치 관리 정보

⑫ 부모 프로세스를 가리키는 포인터

⑬ 자식 프로세스를 가리키는 포인터

4-2. 문맥교환 (Context Switching)

문맥교환이란?

  • 다중 프로그래밍 시스템에서 운영체제에 의하여 CPU가 할당되는 프로세스를 변경하기 위하여 현재 CPU를 사용하여 실행되고 있는 프로세스의 상태 정보를 저장하고, 앞으로 실행될 프로세스의 상태 정보를 설정한 다음에 CPU를 할당하여 실행되도록 하는 작업이다.

    • 인터럽트가 발생한 경우, 진행 중인 프로그램 재개(resume)에 필요한 레지스터 문맥(register context)을 저장한다.

!! CPU는 한 개의 프로세스 정보만 저장할 수 있기 때문에 PCB 테이블에 저장해 놓는 것이다!!

= 시간할당량에 따른 문맥 교환수, 인터럽트 횟수, 오버헤드 =

profile
오늘도 개발중인 ppm's Programming Log

0개의 댓글