👨‍🎓
Today I Learned
  • Today-I-Learend
  • 🍎WWDC
    • Developer Tools
      • Testing in Xcode
    • UIKit
      • UIDiffableDataSource
        • [WWDC 19] Advances in UI Data Sources
      • [WWDC2019] Advances in CollectionView Layout
  • 자료구조
    • Heap 자료구조
  • Clean code
    • 네이밍
    • 주석과 포맷팅
    • 함수
    • 클래스
    • 에러 핸들링
    • 가독성 높이기
    • 객체지향
  • Network
    • RestAPI
  • Swift
    • DateType
    • ARC
    • Availablity
    • KeyPath
    • Network
    • Never타입
    • Result
    • Selector
    • 검증함수
    • 메타타입
    • 동시성 프로그래밍
    • 메모리 안전
    • 에러처리
    • 접근제어 (Access Control)
    • 제네릭
    • 주요 프로토콜
  • 알고리즘
    • 그래프
    • 기초 알고리즘
    • 누적합(Prefix)
    • 복잡도
    • 비트마스킹
  • 운영체제
    • 운영체제의 개요
    • 프로세스와 스레드
    • CPU 스케줄링
    • 프로세스 동기화
    • 교착상태
    • 07. 메모리
    • 08.가상 메모리
    • 입출력 장치
    • 파일 시스템
  • UIKit
    • UITableView xib으로 만들어보기
  • 🖊️정보 기록
    • 코코아팟 배포하는 방법
  • iOS Project
    • 채팅 앱 만들기
      • Trouble shooting
      • 1. 디자인
      • 2. AutoLayout
    • 날씨 조회 어플리케이션
      • Figma를 이용한 UI 설계
      • TableView 연결하기
      • Networking
    • MVC -> MVVM으로 구조 변경해보기
      • MVC
      • MVVM
    • OAuth Project
      • 로컬 호스트를 이용한 로그인 페이지 제작
      • Github의 OAuth App 설정
    • Rest API 프로젝트
      • UI설계 (with Figma)
      • Network Model
      • MVVM 구조 전환
  • 🕶️UIKit
    • Compositional Layout
Powered by GitBook
On this page
  • 주변장치
  • 버스가 여러개 존재하는 이유
  • 입출력제어기
  • DMA
  • 마우스의 원리
  • 키보드의 원리
  1. 운영체제

입출력 장치

Previous08.가상 메모리Next파일 시스템

Last updated 2 years ago

주변장치

  • 주변장치의 종류 : 하드디스크, SSD, 키보드, 마우스 등

  • 주변장치의 내부 구조

    Untitled
  • 버스

    • 주변장치는 메인보드에 있는 버스로 연결된다.

      • 하나의 버스는 Adress Data Controll 버스로 이루어져 있어서 I/O 디바이스는 세 가지 버스를 따로 받을 수 있다.

    • 각 하드웨어에 맞는 외부 인터페이스가 존재한다.

    • 장치의 상태와 데이터를 보관할 수 있는 각종 레지스터들이 존재한다.

      • 입출력 작업을 할 때, 데이터를 저장하는 역할을 한다.

      • CPU가 사용하기 위해 메모리로 이동되기도 한다.

  • 캐릭터 디바이스와 블록 디바이스로 나눌 수 있다.

    • 데이터의 전송 단위가 캐릭터(글자)인지 블록인지

      • 캐릭터 디바이스 : 마우스, 키보드, 사운드카드, 직병렬 포트

      • 블록 디바이스 : 하드디스크, SSD, 그래픽 카드

    • 캐릭터 디바이스는 상대적으로 적은 양의 데이터를 전송한다.

버스가 여러개 존재하는 이유

  • 여러 주변장치는 메인보드 내 버스로 연결된다.

  • 예전에는 주변 장치를 하나의 버스로 연결했었다.

    • CPU가 작업을하는 중 I/O 명령을 만나면, 직접 입출력 장치에서 데이터를 가져와야했다.

    • 이에 입출력 중에는 CPU가 다른 작업을 할 수 없어서 CPU 사용률이 떨어졌다.

  • 입출력 제어기와 여러개의 버스를 추가하여 문제를 해결했다.

    • CPU는 I/O 명령을 만나면, 입출력 제어기에게 입출력 제어를 맡기고, 다른 작업을 실행한다.

    • 입출력 제어기는 두 개의 채널 (시스템 버스, 입출력 버스)로 구분한다.

      • 시스템 버스 : 고속으로 사용하는 CPU, 메모리

      • 입출력 버스 : 주변 장치

입출력제어기

  • 입출력 제어기의 버스 : 세부적으로 느린 장치와, 빠른 장치로 구분하기 위해 나뉜다.

    • 고속 입출력 버스

    • 저속 입출력 버스

  • 느린 장치와 빠른 장치를 구분해 속도 차이로 인한 병목현상을 해결했다.

  • 그래픽카드의 경우, 다루는 데이터가 고용량이며, 고속 입출력으로도 처리하지 못해서 시스템 버스에 바로 연결되어 사용한다.

  • 입출력 제어기는 여러 주변 장치를 처리하는데 입출력 버스에서 온 데이터를 메모리로 옮긴다.

    • 메모리는 CPU의 명령으로 움직이기 때문에 입출력 제어기가 메모리에 접근하기 위해서는 CPU가 필요했다.

    • 이에 CPU 도움 없이도 할 수 있도록 DMA 제어기(Direct Memory Access)가 추가됐다.

DMA

  • 직접 메모리 접근이라는 뜻이다.

  • 입출력 제어기가 CPU의 도움 없이 메모리에 접근할 수 있도록 하기 위해 필요한 것이다.

  • DMA를 이용해 입출력 제어기는 데이터를 직접 메모리에 저장하거나 가져올 수 있다.

  • CPU와 DMA가 사용하는 메모리가 겹치지 않도록, Memory mapped I/O 가 추가되었다.

    • CPU가 사용하는 메모리 영역과, DMA가 사용하는 메모리를 나누는 것이다.


마우스의 원리

  • 광학 마우스

    • 광학 마우스 아래에는 작은 카메라가 부착되어있다.

    • 카메라가 표면으로 1500회가 넘는 사진을 찍는다.

    • 디바이스 컨트롤 네 DSP로 사진을 보내면, 사진을 분석해서 X, Y 좌표를 알아낸다.

    • 움직임과 클릭을 인식하면, CPU에 인터럽트를 보내고 마우스 드라이버가 동작하여 데이터를 읽어간다.

    • 마우스 드라이버는 운영체제에게 이벤트 신호를 전달한다.

    • 이벤트를 프로그램에 전달하고, 해당 앱이 이벤트를 처리하게 된다.

키보드의 원리

  • 마우스와 근본적인 움직임은 동일하다.

    • 사용자가 키보드를 누른다.

    • 디바이스 컨트롤러가 무엇을 눌렀는지 인식하고, CPU에게 인터럽트를 보낸다.

    • 키보드 드라이버는 운영체제에게 이벤트를 보낸다.

    • 운영체제는 특정 앱에 보내고, 해당 앱은 동작을 수행하게 된다.

Untitled