![[붉은외계인] CS - 컴퓨터구조와 작동 원리 2 - 주변 장치](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdna%2FbWoKXK%2FbtsC1nYPXlt%2FAAAAAAAAAAAAAAAAAAAAADIimI938Ax7np7yBvNTzn7XXeU0isnLGCujB7vGTvhc%2Fimg.png%3Fcredential%3DyqXZFxpELC7KVnFOS48ylbz2pIh7yKj8%26expires%3D1751295599%26allow_ip%3D%26allow_referer%3D%26signature%3DCao3cfw5o1Fn%252BLr%252FkbPInBxs17U%253D)
해당 게시물을 읽기 전, 아래 게시물을 참고할 것.
2024.01.05 - [Fundamental/CS\OS] - [붉은외계인] CS\OS - 컴퓨터구조와 작동 원리 1 - CPU와 메모리
[붉은외계인] CS\OS - 컴퓨터구조와 작동 원리 1 - CPU와 메모리
1. 컴퓨터 작동 원리 구조도 컴퓨터의 구조와 작동 원리를, 구조도로 표현하자면 아래와 같다 ( 구조도 그리느라 애 좀 먹었다...) 제조사와 제조 방법에 따라 매우 달라지겠지만 핵심은 최대한
redalien.tistory.com
1. CPU의 명령어 사이클
주변 장치를 다루기 전에, 먼저 CPU의 명렁어 사이클에 대해서 알아야 한다
저번 게시물에서, CPU는 메모리로부터 명령어와 데이터를 읽어들이고 해석하는 장치라고 하였다
이러한 CPU는 일정 흐름으로, 메모리로부터 명렁어를 인출 하고, 실행하는데 이것을 명령어 사이클이라고 한다
간접 사이클은, 간접 주소 지정방식과 같이 메모리에 2번 접근해야하는 경우를 간접 사이클이라고 한다
그렇다면 인터럽트 사이클이란 무엇일까?
2. 인터럽트
인터럽트는 CPU의 이러한 사이클을 방해하는 신호를 인터럽트라고 한다
정확하게 말하자면, CPU의 사이클을 중지 시키고, 인터럽트 핸들러를 실행시켜 인터럽트를 처리한 후,
다시 실행 부분으로 복귀하는 것을 말한다
여기서, 인터럽트 핸들러는 어떠한 인터럽트가 발생하였을 때, 처리 방식이 기록된 프로그램이다
이것 또한 프로그램이기 때문에 메모리에 적재된다
CPU는 인터럽트 백터를 통해, 인터럽트 핸들러의 주소를 파악하고 실행한다
인터럽트 백터는 아래에서 언급하는, 장치 컨트롤러가 인터럽트 요청 신호와 함께 보낸다
인터럽트는 위의 그림과 같이, 2가지로 나눌 수 있다
여기서 말하는 동기 인터럽트의 예외는, 프로그램 코드를 실행하였을 때 발생하는 예외(Exception)가 맞다
비동기 인터럽트는 외부장치가 보내는 알림이라고 보면 된다 프린터가 완료됐다거나, USB에 백업이 완료됐다는 등이 해당된다
이러한 알림은 주변 장치(입출력장치,보조기억장치 등)와 연결된 장치 컨트롤러가 인터럽트 요청 신호를 보낸다
비동기 인터럽트는 막을 수 있는 인터럽트와, 막을 수 없는 인터럽트로 나뉜다
CPU는 위에서 언급한, 실행 사이클이 끝나면 항상 인터럽트 발생 여부를 확인하는데, 만약 인터럽트 발생 요청이 와있다면
플래그 레지스터의 인터럽트 플래그를 참조하여, 인터럽트의 처리 가능 여부를 장치 컨트롤러에게 회신한다
만약. 인터럽트 플래그가 0이라면 처리할 수 없다고 컨트롤러에게 회신한다
위에서 언급한 예시는 대부분 막을 수 있는 인터럽트에 해당된다
하지만 전기가 끊어졌거나 하드웨어가 고장났다는 등 위급한 상황들은 막을 수 없는 인터럽트에 해당된다
막을 수 없는 인터럽트는 인터럽트 플래그에 상관없이 CPU가 무조건 처리하게 되어 있다
3. 주변 장치의 다양한 입출력 방식 중, DMA 입출력 방식
주변 장치(보조 기억장치, 입출력장치 등)는 CPU와 데이터를 주고 받는 다양한 입출력 방식이 존재한다
이 중에서, DMA 입출력 방식만을 다뤄보려고 한다
DMA 입출력 방식은 DMA 컨트롤러가 메모리에 직접 접근하여, 주변 장치와 입출력하는 방법을 말한다
이러한 방식을 사용하기 위해서는 DMA 컨트롤러가 필수로 필요하며, 대부분의 PC는 이를 지원한다
DMA 입출력 방식의 포인트는 시작과 끝에만 CPU가 관여하고, 그 외에는 CPU가 관여하지 않는다는 점이다
DMA 입출력 방식의 과정을 아래 그림으로 살펴보자.
1. CPU는 DMA 컨트롤러에게, 인터럽트 백터, 메모리 주소 등 입출력에 필요한 정보들과 함께 입출력을 명령한다
2. DMA 컨트롤러는 직접적으로 메모리에 접근한다
3. DMA 컨트롤러는 메모리에 적재된 데이터를, 직접 장치 컨트롤러들과 입출력한다
4. 입출력이 끝나면, CPU에게 알림을 보낸 후, 작업을 종료한다
# 용어 설명
인터럽트 백터 : 메모리에 적재된, 인터럽트 핸들러를 식별하기 위한 정보이다 장치 컨트롤러가 보낸다
입출력 버스: 입출력 장치들의 데이터가 오고가는 통로이다
전체 과정을 그려보면 아래 그림과 같다
이것은 장치 컨트롤러가
장치 컨트롤러는 I/O Module, I/O Controler라고도 부르며, 말 그대로 주변 장치를 컨트롤 하는 하드웨어이다
CPU는 일반적으로, 이러한 하드웨어 조절 방법을 모르기 때문에 드라이버 또한 필수로 설치해주어야 한다
주변 장치를 컨트롤하는 장치 컨트롤러를 제어하기 위해서는, 장치 컨트롤러 내부의 레지스터를
읽기/쓰기를 하여야 제어가 가능할 것이다 장치 컨트롤러는 대표적으로 3개의 레지스터를 갖고 있다
제어 레지스터는 주변 장치가 수행할 명령어와 연산자를 저장하고,
상태 레지스터는 주변 장치의 에러를 검사하고, 입출력 준비 여부를 확인한다
마지막으로, 데이터 레지스터는 주고 받을 데이터가 담긴다
공부 내용을 위와 같이 정리해 보았다
다음 게시물은 아마 OS가 되지 않을까 싶다 :)
'Fundamental > CS' 카테고리의 다른 글
CS - File System 이해를 위한 보조기억장치 이해하기 (0) | 2025.04.10 |
---|---|
[붉은외계인] CS - 목적 파일, 실행파일 그리고 ELF, PE 포멧까지 (1) | 2024.02.07 |
[붉은외계인] CS - 컴퓨터구조와 작동 원리 4 - 운영체제의 자원 접근 및 할당(CPU 스케줄링, 스와핑, 페이징) (1) | 2024.01.16 |
[붉은외계인] CS - 컴퓨터구조와 작동 원리 3 - 운영체제의 프로세스 관리 (0) | 2024.01.16 |
[붉은외계인] CS - 컴퓨터구조와 작동 원리 1 - CPU와 메모리 (1) | 2024.01.05 |