CS 13

최성원·2022년 2월 4일
0

CS

목록 보기
12/16

Day-13

5장 컴퓨터 아키텍처와 운영체제

-컴퓨터는 어떻게 프로그램과 메모리를 관 리할까

3. 인터럽트

순서도는 작업이 이뤄지는 순서를 표현하는 다이어그램이다.


이런 방법을 폴링 이라고 부른다.

인터럽트 시스템

  • 요즘 쓰이는 프로세서 대부분에 들어감
  • 적절한 신호가 들어오면 CPU 실행을 잠깐 중단시킬 수 있는 핀이나 전기 연결을 포함
  • 많은 프로세서 칩에는 통합 주변장치가 들어있고 이런 장치(온칩 I/O 장치라고도 함)들은
    내부적으로 인터럽트 시스템에 연결되어 있음

  • 칩에 연결된 전기적 접점

작동방식

  • CPU가 주의를 기울여야 하는 주변장치는 인터럽트 요청을 생성
  • 프로세서는 현재 실행 중인 명령어를 끝까지 실행
  • 현재 실행 중인 프로그램을 잠시 중단시키고 인터럽트 핸들러(함수) 라는 전혀 다른 프로그램 실행
  • 필요한 작업을 다 마치고 나면 원래 실행중이던 프로그램이 중단된 위치부터 다시 실행을 계속함
  1. 인터럽트에 대한 응답 시간
    1. 인터럽트 처리를 정해진 시간 안에 끝내야함
      1. ex) 배달기사에게 시간을 너무 많이 소모하면 쿠키가 타버림
  2. 인터럽트를 서비스하고 나중에 다시 원래대로 돌아오기 위해서는 현재 상태를 저장할 방법이 필요함
    1. ex) 인터럽트가 걸린 시점에 실행 중이던 프로그램이 레지스터에 어떤 값을 저장하고 있었다면, 인터럽트 핸들러는 그 레지스터를 저장했다가 나중에 원래 프로그램으로 돌아오기 전에 레지스터값을 복구해주어야 함

인터럽트 시스템은 서비스 후 돌아올 프로그램 위치를 스택에 저장함.
인터럽트 핸들러는 자신이 덮어 쓸 레지스터를 모두 저장해야 할 책임이 있음.
이렇게 약속하면 인터럽트 핸들러가 저장해야 하는 요소를 최소화해서
가장 빨리 인터럽트를 서비스 할 수 있다.

컴퓨터가 어떻게 인터럽트 핸들러 위치를 찾을까?

  • 보통은 인터럽트 핸들러 주소를 저장하기로 약속한 메모리 주소가 존재함
  • 이 주소에는 여러 인터럽트 벡터가 들어있고,
    CPU가 지원하는 각 인터럽트에 대한 핸들러 주소를 지정함
  • 인터럽트 벡터는 단지 메모리 위치를 가리키는 포인터다.
  • 인터럽트가 일어나면 컴퓨터는 인터럽트 벡터에 저장된 주소를 살펴보고 제어를 그 주소로 옮긴다.

인터럽트 벡터

  • 많은 기계가 물리적인 주소를 벗어나는 사용하려고 시도하거나
  • 스택 오버플로가 일어나는 등의 예외상황에도 제공됨

인터럽트 제어

  • 인터럽트를 중단시킬 수 있는 마스크가 있는 경우가 자주 있음
  • 인터럽트가 많이 있는 기계에는 종종 인터럽트간의 우선순위가 있음
    (더 중요한 인터럽트를 더 먼저 처리하게 해줌)
  • 대부분의 기계에는 일정 시간이 지나면 인터럽트를
    발생시킬 수 있는 내장 타이머도 하나 이상 들어있음.

다른 일반 프로그램들은 접근할 수 없는 물리적(하드웨어) 인터럽트에 접근할 수 있는 경우가 종종 있음
운영체제는 일종의 가상 인터럽트나 소프트웨어 인터럽트 시스템을 제공하기도 함
ex) 유닉스 운영체제는 시그널 메커니즘을 제공
최근 개발된 시스템들은 보통 이를 이벤트라고 부름

4. 상대 주소 지정

여러 프로그램을 동시에 실행하려면, 각 프로그램을 서로 전환시켜 줄 수 있는
일종의 관리자 프로그램이 필요

  • 이러한 프로그램을 운영체제 or 운영체제 커널 이라고 부름
  • OS와 OS가 관리하는 프로그램을 구분하기 위해 OS를 시스템 프로그램이라고 부르고 다른 모든 프로그램을 사용자 프로그램이나 프로세스라고 부름

    간단한 OS 작동
    OS는 타이머를 사용해 사용자 프로그램을 전환시켜줄 때가 됐는지 판단함.

시분할

  • 사용자 프로그램의 실행 시간을 조절하는 스케줄링 기법
  • 시간을 정해진 간격으로 나누고, 정해진 시간 간격 동안 사용자 프로그램을 실행함
    • 사용자 프로그램 상태 or 문맥은 레지스터의 상태와 프로그램이 사용 중인 메모리의 상태를 뜻함.
    • 메모리에는 스택도 포함된다.


이렇게 각 프로그램에게 각기 다른 공간을 허용할 수 있으면 훨씬 더 빠르게 시분할 실행이 가능함

179페이지에서 사용된 ‘주소 지정 모드’

절대 주소 지정

  • 명령어 주소가 특정 메모리 주소를 가리킨다는 뜻
  • 1000번지에서 실행되도록 만들어진 프로그램을 2000번지에 읽어 들이면 제대로 실행되지 않음
    ⇒ 컴퓨터들은 이런 문제를 인덱스 레지스터를 추가해 해결함
    
    - 인덱스 레지스터의 값을 명령어에 들어있는 주소와 더해서 유효 주소를 계산
    - 사용자 프로그램이 1000번지에서 실행되도록 만들어졌다면, OS는 이 프로그램을 3000번지에서 실행하기 위해 인덱스 레지스터를 2000으로 설정할 수 있음

    상대 주소 지정
  • 명령어에 들어있는 주소를 0부터 시작하는 위치로 해석하지 않고, 명령어의 주소를 기준으로
    하는 상대적인 주소로 해석
  • 프로그램을 메모리의 원하는 위치로 자유롭게 재배치 할 수 있음
profile
각성구

0개의 댓글