본문 바로가기
이론/운영체제

[OS] 컴퓨터 기본 구성요소/인터럽트

by ohojee 2023. 6. 23.

기본 구성요소

컴퓨터는 처리기(CPU), 주기억장치(메모리), 입출력모듈, 시스템 버스로 이루어짐

CPU: 메모리와 데이터 교환

  • PC(Program Counter: 프로그램 카운터)
  • IR(Instruction Register: 명령어 레지스터)
  • MAR(Memory Address Register: 메모리 주소 레지스터): 다음에 읽거나 기록할 메모리 내 주소 저장
  • MBR(Memory Buffer Register: 메모리 버퍼 레지스터): 메모리에 기록되거나 메모리로부터 읽힐 데이터 저장
  • IO AR(IO Address Register: 입출력 주소 레지스터)
  • IO BR(IO Buffer Register: 입출력 버퍼 레지스터)

주기억장치: 주소가 부여된 장소들의 집합

입출력 모듈: 외부장치-처리기, 메모리 사이의 데이터 전송

명령어 실행

CPU는 메모리에서 한 번에 하나의 명령어를 읽음(명령어 레지스터에 현재 명령어 적재 → 프로그램 카운터 1 증가(프로그램 카운터에 다음 명령어 주소 저장)) → 수행(실행) → 프로그램 카운터에 있는 주소에 해당하는 명령어 읽음 → 실행 반복

인터럽트

입출력 모듈은 처리기 속도에 비해 현저히 느림 ⇒ 처리기의 처리율을 향상시키기 위함

종류: 프로그램 인터럽트, 타이머 인터럽트, 입출력 인터럽트, 하드웨어 실패 인터럽트

1. 인터럽트 없음                        2. 인터럽트: 짧은 입출력 대기                   3. 인터럽트: 긴 입출력 대기

입출력 프로그램에서의 인터럽트

  1. 입출력 연산 준비
    • 출력될 데이터를 버퍼에 복사
    • 장치 명령을 위한 매개변수 준비
  2. 입출력 명령
    • 인터럽트 사용 x: 실제 명령을 내리면 입출력이 끝날 때까지 기다려야 함(주기적으로 입출력 장치 상태 점검 or 연산이 완료되었는지 테스트 연산을 반복적으로 수행하며 대기)
    • 인터럽트 사용 o: 사용자 프로그램으로 제어 넘김, 외부 장치는 실제 입출력 작업 실행외부 장치가 다시 서비스할 준비가 되면 인터럽트 요청 신호 전달 → 처리기는 수행 중이던 작업 보류, 인터럽트 처리기라는 프로그램으로 분기 → 입출력 실행한 프로그램 마저 실행
    • ⇒ 입출력 작업이 사용자 프로그램의 명령어와 동시 실행
  3. 연산 완료
    • 연산 성공, 실패를 나타내는 플래그 설정

인터럽트 처리

  1. 처리기로 인터럽트 신호 전달
  2. 인터럽트에 응답하기 전, 수행 중인 명령어 완료
  3. 처리기는 요청된 인터럽트가 있는지 검사 → 인터럽트를 발생시킨 장치로 수신 확인 전달
  4. 인터럽트 루틴으로 넘기기 전 수행 중이던 프로그램을 재기하기 위한 정보(문맥) 제어스택에 저장
  5. ex) 프로그램 상태 워드, 다음 명령어 위치, 프로그램 카운터 내용, 처리기 레지스터 내용 etc
  6. 인터럽트 처리 루틴의 진입 위치를 프로그램 카운터에 저장 → 인터럽트 처리 루틴 실행
  7. 인터럽트 처리기는 모든 레지스터의 내용을 스택에 저장
  8. 인터럽트 처리
  9. 처리 완료 → 저장된 레지스터 값 검색 → 레지스터에 다시 저장
  10. 문맥 정보를 통해 인터럽트 발생 이전으로 복원

중첩 인터럽트

인터럽트는 중첩되어 발생 가능

  • 순차적 인터럽트 처리
  • 하나의 인터럽트 처리 시 다른 인터럽트 요구 신호 무시 → 인터럽트 처리 루틴 완료 후 사용자 프로그램이 재개되기 전 인터럽트 발생했는지 검사
  • 중첩된 인터럽트 처리
  • 인터럽트 간 우선순위 정의 ⇒ 낮은 우선순위의 인터럽트는 높은 인터럽트에 의해 인터럽트 될 수 o

기본 구성요소

컴퓨터는 처리기(CPU), 주기억장치(메모리), 입출력모듈, 시스템 버스로 이루어짐

CPU: 메모리와 데이터 교환

  • PC(프로그램 카운터)
  • IR(명령어 레지스터)
  • MAR(메모리 주소 레지스터): 다음에 읽거나 기록할 메모리 내 주소 저장
  • MBR(메모리 버퍼 레지스터): 메모리에 기록되거나 메모리로부터 읽힐 데이터 저장
  • IO AR(입출력 주소 레지스터)
  • IO BR(입출력 버퍼 레지스터)

주기억장치: 주소가 부여된 장소들의 집합

입출력 모듈: 외부장치-처리기, 메모리 사이의 데이터 전송

명령어 실행

CPU는 메모리에서 한 번에 하나의 명령어를 읽음(명령어 레지스터에 현재 명령어 적재 → 프로그램 카운터 1 증가(프로그램 카운터에 다음 명령어 주소 저장)) → 수행(실행) → 프로그램 카운터에 있는 주소에 해당하는 명령어 읽음 → 실행 반복

인터럽트

입출력 모듈은 처리기 속도에 비해 현저히 느림 ⇒ 처리기의 처리율을 향상시키기 위함

종류: 프로그램 인터럽트, 타이머 인터럽트, 입출력 인터럽트, 하드웨어 실패 인터럽트

  1. 인터럽트 없음 2. 인터럽트: 짧은 입출력 대기 3. 인터럽트: 긴 입출력 대기

입출력 프로그램에서의 인터럽트

  1. 입출력 연산 준비
    • 출력될 데이터를 버퍼에 복사
    • 장치 명령을 위한 매개변수 준비
  2. 입출력 명령
    • 인터럽트 사용 x: 실제 명령을 내리면 입출력이 끝날 때까지 기다려야 함(주기적으로 입출력 장치 상태 점검 or 연산이 완료되었는지 테스트 연산을 반복적으로 수행하며 대기)
    • 인터럽트 사용 o: 사용자 프로그램으로 제어 넘김, 외부 장치는 실제 입출력 작업 실행외부 장치가 다시 서비스할 준비가 되면 인터럽트 요청 신호 전달 → 처리기는 수행 중이던 작업 보류, 인터럽트 처리기라는 프로그램으로 분기 → 입출력 실행한 프로그램 마저 실행
    • ⇒ 입출력 작업이 사용자 프로그램의 명령어와 동시 실행
  3. 연산 완료
    • 연산 성공, 실패를 나타내는 플래그 설정

인터럽트 처리

  1. 처리기로 인터럽트 신호 전달
  2. 인터럽트에 응답하기 전, 수행 중인 명령어 완료
  3. 처리기는 요청된 인터럽트가 있는지 검사 → 인터럽트를 발생시킨 장치로 수신 확인 전달
  4. 인터럽트 루틴으로 넘기기 전 수행 중이던 프로그램을 재기하기 위한 정보(문맥) 제어스택에 저장
  5. ex) 프로그램 상태 워드, 다음 명령어 위치, 프로그램 카운터 내용, 처리기 레지스터 내용 etc
  6. 인터럽트 처리 루틴의 진입 위치를 프로그램 카운터에 저장 → 인터럽트 처리 루틴 실행
  7. 인터럽트 처리기는 모든 레지스터의 내용을 스택에 저장
  8. 인터럽트 처리
  9. 처리 완료 → 저장된 레지스터 값 검색 → 레지스터에 다시 저장
  10. 문맥 정보를 통해 인터럽트 발생 이전으로 복원

중첩 인터럽트

인터럽트는 중첩되어 발생 가능

  • 순차적 인터럽트 처리
  • 하나의 인터럽트 처리 시 다른 인터럽트 요구 신호 무시 → 인터럽트 처리 루틴 완료 후 사용자 프로그램이 재개되기 전 인터럽트 발생했는지 검사
  • 중첩된 인터럽트 처리
  • 인터럽트 간 우선순위 정의 ⇒ 낮은 우선순위의 인터럽트는 높은 인터럽트에 의해 인터럽트 될 수 o

댓글