블로그 이미지
No pain, no gain!
lepoussin

Tag

Notice

Recent Post

Recent Comment

Recent Trackback

Archive

calendar

1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
  • total
  • today
  • yesterday
05-05 06:07
1. 입출력 장치 제어
  1) I/O 맵 방식(I/O-mapped peripheral)
    - 입출력 장치 전용의 주소 공간을 확보
    - in 또는 out과 같은 별도의 명령 사용
  2) 메모리 맵 방식(Memory mapped peripheral)
    - 메모리의 일부를 입출력 장치 공간으로 할당
    - 주의사항 : I/O 영역 변수는 volatile 타입으로 선언, I/O 영역은 Non-cacheable로 설정

2. 입출력 장치의 자원관리
  - 입출력 장치로 입력 또는 출력 되는 데이터를 프로세서와 메모리 사이에 주고 받는 방법
  1) 폴링(Polling) 방식 : 프로세서가 하나의 프로그램이나 장치들이 어떤 상태에 있는지를 지속적으로 검사하는 방식
  2) 인터럽트 : 외부의 입출력 장치에서 프로세서에게 처리를 요청하면 프로세서는 현재 처리하고 있는 프로그램
을 일시적으로 멈추고 입출력 처리하는 방식
    - 프로세서는  한 번에 한 개의 명령만을 수행 → 모든 작업이 동시에 수행되는 것처럼 보이게 할 수 있음(멀티태스킹)
    - 인터럽트 제어기 : 여러 개의 입출력 장치로부터 구동되는 인터럽트를 효과적으로 처리하기 위한 장치
      ⑴ 마스크(Mask) 레지스터 : 여러 입출력 장치의 인터럽트에 대한 사용여부를 제어위한 레지스터
      ⑵ 펜딩(Pending) 레지스터 : 어떤 인터럽트가 발생되었는지를 저장
      ⑶ 과정
        ① 마스크 레지스터에 의하여 사용하도록 설정된 인터럽트 중 하나라도 인터럽트가 발생하면 프로세서로 인터럽트 요청 신호(IRQ)가 구동
        ② 프로세서는 인터럽트를 인지하여 처리하기 전에 펜딩 레지스터를 검사하여 발생된 인터럽트 중 우선순위가 가장 높은 인터럽트를 처리
    - 모든 인터럽트 발생은 프로세스에 하드웨어적으로 알려짐
    - 인터럽트 발생 시, 사용자 프로그램의 개입없이 정해진 절차에 의해서 정해진 위치에 있는 명령이나 주소정보를 이용하여 실제 인터럽트를 서비스 하는 절차(ISR : Interrupt Service Routine)가 있는 위치로 분기한 다음 발생된 인터럽트의 처리 여부를 결정하고 해당 입출력 동작 수행
    - 인터럽트 벡터(Vector) : 인터럽트 발생시 프로세서가 처리하기 위한 명령 또는 주소가 저장된 공간
      ⑴ 고정 인터럽트 방식(Fixed Interrupt) : 인터럽트가 발생하면 처리할 주소가 고정
      ⑵ 벡터 인터럽트 방식(Vectored Interrupt) : 주변 장치가 인터럽트를 처리할 주소를 제공하는 방식으로 서로 다른 벡터 주소를 가짐
  3) DMA(Direct Memory Access) : 프로세서의 개입 없이 입출력 장치와 기억장치 사이에 데이터를 전송하는 방식
    - 프로세서 → DMA 제어기 : 전송할 데이터가 저장된 주기억 장치의 시작 주소, 입출력 장치의 주소, 전송할 데이터의 크기 및 제어 정보
    - DMA 제어기 : 프로세서나 다른 버스 마스터가 주기억장치를 액세스하지 않는 동안에 시스템 버스를 사용하여 데이터를 전송하는 제어기
   
posted by lepoussin