1. 프로세스의 주소 공간

프로세스 주소 공간에는 코드, 데이터, 스택으로 이루어져 있다.

코드 : 프로그램 소스 코드 저장
데이터 : 전역 변수 저장
스택 : 함수, 지역 변수 저장

* 구역을 나눈 이유는 ?

  • 최대한 데이터를 공유하여 메모리 사용량을 줄여야 한다.

  • Code는 같은 프로그램 자체에서는 모두 같은 내용이기 때문에 따로 관리하여 공유한다.

  • Stack과 data를 나눈 이유는, 스택 구조의 특성과 전역 변수의 활용성을 위한 것이다.

  • 프로그램의 함수와 지역 변수는 LIFO 특성을 가진 스택에서 실행된다.

2. 인터럽트 (Interrupt)

  • 프로그램을 실행하는 도중에 예외의 상황이 발생할 경우, 현재 실행 중인 작업을 즉시 중단하고, 발생된 상황을 우선 처리한 후 실행 중이던 작업으로 복귀하여 계속 처리하는 것.

  • 현재 수행중인 작업보다 더 중요한 작업(ex. 입출력, 우선 순위 연산 등)이 발생하면 그 작업을 먼저 처리한 후 하던 작업을 계속 한다.

  • 외부/내부 인터럽트는 CPU의 HW 신호에 의해 발생
  • SW 인터럽트는 명령어의 수행에 의해 발생

* 외부 인터럽트

  • 입출력 장치, 타이밍 장치, 전원 등 외부적인 요인으로 발생 ex) 전원 이상(Power fail), 기계 착오(Machine check), 외부(External) , 입출력(I/O)

* 내부 인터럽트

  • 잘못된 명령이나 데이터를 사용할 때 발생
  • Trap이라고도 함 ex) 0으로 나누기, 오버플로우/언더플로우, 기타 프로그램 Exception

* SW 인터럽트

  • 프로그램 처리 중 명령의 요청에 의해 발생한 것
  • SVC(SuperVisor Call) : 사용자가 프로그램을 실행시키거나 감시프로그램(Supervisor)을 호출하는 동작을 수행하는 경우, 복잡한 입출력 처리를 하는 경우

인터럽트 동작 순서

  1. 인터럽트 요청
  2. 프로그램 실행 중단 (현재 실행중이던 Micro Operation까지는 실행)
  3. 현재의 프로그램 상태 보존 : PCB(Process Control Block), PC(Program Counter) 등에 기록
  4. 인터럽트 처리루틴 실행 : 인터럽트를 요청한 장치를 식별
  5. 인터럽트 서비스 루틴 실행
  6. 상태복구 : 3번에서 저장해둔 PC를 다시 복구한다.
  7. 중단된 프로그램 실행 재개 : 6에서 복구한 PC의 값을 이용해 이전에 수행중이던 프로그램을 재개
* if) 인터럽트 기능이 없었다면
  • 컨트롤러는 특정한 어떤 일을 할 시기를 알기 위해 계속 체크를 해야 한다. (이를 폴링(Polling)이라고 한다.)

* 폴링 방식

  • 소프트웨어적인 방법
  • 회로가 간단하고 융통성이 있으며, 별도의 하드웨어가 필요 없다.

* 인터럽트 방식

  • 하드웨어적인 방법
  • 회로가 복잡하고 융통성이 없으나, 별도의 소프트웨어가 필요없이 하드웨어로 처리되므로 속도가 빠르다.