유성이의 공부일지(8) - 혼자공부하는 컴퓨터 구조 + 운영체제 8장

2024. 7. 9. 20:34·공부 기록일지

08-1. 장치 컨트롤러와 장치 드라이버 

장치 컨트롤러

- 입출력 장치는 CPU, 메모리보다 다루기가 더 까다로움
- 키보드, 모니터, USB 메모리, CD_ROM, SSD, 마우스, 프린터, 스피커, 마우스 등 매우 많음
- 장치가 이렇게 다양하면 자연스레 장치마다 속도, 데이터, 전송 형식 등도 다양함
- 따라서 다양한 입출력장치와 정보를 주고 받는 방식을 규격화하기 어려움
- 전송률이란 데이터를 얼마나 빨리 교환할 수 있는지 나타내는 지표
- 장치 컨트롤러는 입출력 제어기, 입출력 모듈 등으로 다양하게 불리기도 함
- 모든 입출력 장치는 각자의 장치 컨트롤러를 통해 컴퓨터 내부와 정보를 주고 받음
- 장치 컨트롤러는 하나 이상의 입출력 장치와 연결되어 있음
- 버퍼링이란 전송률이 가장 높은 장치와 낮은 장치 사이에 주고 받은 버퍼라는 임시 공간에 저장하여 전송률을 비슷하게 맞추는 방법
- 일반적으로 전송률이 높은 CPU와 일반적으로 낮은 입출력 장치와의 전송률 차이를 데이터 버퍼링으로 완화 시킴
- 데이터 레지스터는 CPU와 입출력장치 사이에 주고 받을 데이터가 담기는 레지스터
- 상태 레지스터는 입출력장치가 입출력 작업을 할 준비가 되었는지, 입출력 작업이 완료되었는지, 입출력 장치에 오류는 없는지 등의 상태 정보 저장
- 제어 레지스터는 입출력장치가 수행할 내용에 대한 제어 정보와 명령을 저장
- 이러한 레지스터들이 담긴 값들은 버스를 타고 CPU나 다른 입출력 장치로 전달되기도 하며, 장치 컨트롤러에 연결된 입출력 장치로 전달됨!!
 

장치 드라이버

- 장치 컨트롤러의 동작을 감지하고 제어함으로써 장치 컨트롤러가 컴퓨터 내부와 정보를 주고 받을 수 있게 하는 프로그램
- 프로그램이기에 당연히 실행 과정에서 메모리에 저장됨
- 장치 컨트롤러는 입출력 장치를 연결하기 위한 하드웨어 통로, 장치 드라이버는 입출력 장치를 연결하기 위한 소프트웨어 통로

08-2. 다양한 입출력 방법

프로그램 입출력

- 기본적으로 프로그램 속 명령어로 입출력 장치를 제어하는 방법
- CPU가 프로그램 속 명령어를 실행하는 과정에서 입출력 명령어를 민나면 CPU는 입출력장치에 연결된 장치 컨트롤러와 상호작용 하며 입출력 작업을 수행함
 
중요!!
- CPU가 여러 장치 컨트롤러 속 레지스터를 알고 있는 방법은 다음과 같다

  • 프린터 컨트롤러의 상태 레지스터를 읽어라
  • 프린터 컨트롤러의 데이터 레지스터에 100을 써라
  • 키보드 컨트롤러의 상태 레지스터를 읽어라
  • 하드 디스크 컨트롤러의 데이터 레지스터에 'a'를 써라
메모리 맵 입출력 질문 - 인프런

 
메모리 맵 입출력

- 메모리에 접근하기 위한 주소 공간과 입출력장치에 접근하기 위한 주소 공간을 하나의 주소 공간으로 간주하는 방법
- 1,024개의 주소를 표현할 수 있는 컴퓨터가 있을떄 전부 메모리 주소를 표현하는데 사용하지 x
- 512는 메모리 주소, 그 나머지는 장치 컨트롤러의 레지스터를 표현하기 위해 사용함
- 메모리 맵 입출력 방식에서 CPU는 메모리의 주소들이나 장치 컨트롤러의 레지스터들이나 모두 똑같이 메모리 주소를 대하면 됨
 
 

8-2 다양한 입출력 방법 - 이신우(vlog)

 
고립형 입출력

- 메모리를 위한 주소 공간과 입출력 장치를 위한 주소 공간을 분리하는 방법
- 고립형 입출력 방식에서 CPU는 입출력장치에 접근하기 위해 메모리에 접근하는 명령어와는 다른 입출력 명령어를 사용함
 

인터럽트 기반 입출력

- 입출력 장치에 의한 하드웨어 인터럽트를 더 정확하고 자세하게 이해가능
- CPU는 장치 컨트롤러에 입출력 작업을 명령하고, 장치 컨트롤러가 입출력 장치를 제어하며 입출력을 수행하는 동안 CPU는 다른일 가능 o
- 장치 컨트롤러가 입출력 작업을 끝낸 뒤 CPU에게 인터럽트 요청 신호를 보내면 CPU는 하던 일을 잠시 백업하고 인터럽트 서비스 루틴 실행
- 인터럽트를 기반으로 하는 입출력을 인터럽트 기반 입출력 이라고 함
- 폴링이란 입출력 장치의 상태는 어떤지, 처리할 데이터가 있는지를 주기적으로 확인하는 방식
- NMI가 발생한 경우 CPU는 우선순위가 높은 인터럽트 부터 처리함
- 프로그래머블 인터럽트 컨트롤러(PIC)는 여러 장치 컨트롤러에 연결되어 장치 컨트롤러에서 보낸 하드웨어 인터럽트 요청들의 우선 순위 판단 후 CPU에 지금 처리해야 하는 하드웨어 인터럽트는 무엇인지 알려주는 장치
 

DMA 입출력

- DMA는 입출력장칭롸 메모리가 CPU를 거치지 않고도 상호작용 할 수 있는 입출력 방식
- 직접  메모리에 접근 할 수 있는 입출력 기능
- DMA 입출력을 하기 위해서는 시스템 버스에 연결된 DMA 컨트롤러라는 하드웨어 필요!!
 

DMA 입출력 과정

  • CPU는 DMA 컨트롤러에 입출력 장치의 주소, 수행할 연산(읽기/쓰기), 읽거나 쓸 메모리의 주소 등과 같은 정보로 입출력 작업을 명령함
  • DMA 컨트롤러는 CPU 대신 장치 컨트롤러와 상호작용하며 입출력 작업을 수행함
  • 이때 DMA 컨트롤러는 필요한 경우 메모리에 직접 접근하여 정보를 읽거나 씀
  • 입출력 작업이 끝나면 DMA 컨트롤러는 CPU에 인터업트를 걸어 작업이 끝났음을 알림

- 사이클 스틸링은 CPU 입장에서는 마치 버스에 접근하는 주기를 도둑맞은 기분이 드는 DMA의 시스템 버스 이용
 

입출력 버스

- 장치 컨트롤러들이 시스템 버스가 아닌 입출력 버스로 DMA 컨트롤러를 입력하게 해 시스템 버스의 사용 빈도를 줄임
- 입출력 버스에는 PCI 버스, PCI Express(PCIe) 버스 등이 있음
- 우리가 사용하는 거의 모든 입출력 장치들은 이렇게 입출력 버스와 연결되는 통로를 통해 시스템 버스와 CPU를 주고 받음 
 
 
 
 

'공부 기록일지' 카테고리의 다른 글

유성이의 공부일지(10) - 혼자공부하는 컴퓨터 구조 + 운영체제 10장  (0) 2024.07.10
유성이의 공부일지(9) - 혼자공부하는 컴퓨터 구조 + 운영체제 9장  (0) 2024.07.09
유성이의 공부일지(7) - 혼자공부하는 컴퓨터 구조 + 운영체제 7장  (0) 2024.07.07
유성이의 공부일지(6) - 혼자공부하는 컴퓨터 구조 + 운영체제 6장  (0) 2024.07.06
유성이의 공부일지(5) - 혼자공부하는 컴퓨터 구조 + 운영체제 5장  (0) 2024.07.04
'공부 기록일지' 카테고리의 다른 글
  • 유성이의 공부일지(10) - 혼자공부하는 컴퓨터 구조 + 운영체제 10장
  • 유성이의 공부일지(9) - 혼자공부하는 컴퓨터 구조 + 운영체제 9장
  • 유성이의 공부일지(7) - 혼자공부하는 컴퓨터 구조 + 운영체제 7장
  • 유성이의 공부일지(6) - 혼자공부하는 컴퓨터 구조 + 운영체제 6장
메테오유성
메테오유성
유성이가 하고 싶은 이야기를 올리는 일기장
  • 메테오유성
    유성의 이것저것
    메테오유성
  • 전체
    오늘
    어제
    • 분류 전체보기 (32)
      • IT 이야기 (3)
      • 공부 기록일지 (19)
      • 책 기록일지 (0)
      • UX 리서치 연구일지 (9)
      • 알고리즘 문제 풀이 (0)
      • HCI Research (0)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    운영체제
    apple
    도허티의 임계
    테슬러의 법칙
    디자인 회복 탄성력
    선택적 주의력
    포스텔의 법칙
    우선순위 스케줄링
    자동인지 처리
    여정 지도
    샘플 레이아웃 패턴
    kneighbors()
    테스트 세트
    Google
    디자인 작업 프로세스
    rr 스케줄링
    유비쿼스트 결제 프로세스
    메일 침프
    스레드
    it
    타조 알고리즘
    배너 무시
    교착 상태 예방
    변화 무시
    심미적 사용성 효과
    train_test_split()
    폰 레스토프 효과
    ferret-ui
    WWDC
    대기 큐
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
메테오유성
유성이의 공부일지(8) - 혼자공부하는 컴퓨터 구조 + 운영체제 8장
상단으로

티스토리툴바