입출력(I/O) 관리

김두현·2023년 2월 7일
1

Backend Curriculum

목록 보기
15/19
post-thumbnail

Goal

  • 입출력 관리의 개념 및 방식을 파악한다.
  • Polling에 대해 파악한다.
  • Interrupt에 대해 파악한다.
  • 입출력 장치와 컴퓨터 간 데이터 교환 방식을 파악한다.
    • DMA

입출력 관리

  • 입출력 관리 : 컴퓨터와 하드웨어 장치 간 공통된 인터페이스 역할을 수행함으로써 원활한 동작을 돕는다.
    • 하드웨어 장치는 포트를 통해 컴퓨터에 접속한다.
      이러한 포트를 제어하는 제어기의 내부의 레지스터를 통해 입출력을 실행한다.

Polling

  • Polling : 하드웨어 장치의 상태를 확인하는 것
    • Busy bit : 레지스터가 포함한 정보로써 장치가 사용 가능한 지를 나타낸다.
    • 단점 : Polling의 주기가 짧으면 성능이 저하되고, 주기가 길면 실시간성이 저하된다.
      이를 개선하기 위해 Interrupt를 이용한다.

Interrupt

  • 인터럽트 : CPU가 프로세스 수행 중 입출력 장치의 상태 변화나 예외상황이 발생하면 CPU에게 인터럽트를 보내 알린다.
    • CPU는 하나의 명령어를 마칠 때마다 인터럽트 요청 라인을 확인한다.
      인터럽트 발생 시, 원래 작업을 중단한 후 인터럽트를 처리하고나서 작업을 재개한다.

직접 메모리 접근(Direct Memory Access)

  • DMA : 입출력 장치와 컴퓨터의 데이터 교환 방식에 쓰이는 방식
    • CPU가 대용량 입출력 장치와 데이터를 교환하게 되면 성능이 저하된다.
      따라서, PIO를 DMA에게 위임한다.
      • PIO(Programmed Input/Output) : CPU의 데이터 교환 방식
    • 작업 순서
    1. CPU가 입출력을 요청한다.
    2. DMA 제어기의 레지스터에 데이터에 대한 정보를 기록한다.
      (데이터가 위치한 주소 전송할 주소 전송할 데이터의 바이트 수 등)
    3. DMA 제어기가 입출력을 수행한다.
    4. 수행을 마치면 CPU에게 인터럽트를 보낸다.

✨오늘 내용은 여기까지✨


커리큘럼 남은 일정

인터넷

  • 인터넷 작동 원리
  • HTTP란?
  • 브라우저 동작 원리
  • DNS 작동 원리
  • 도메인 네임이란?
  • 호스팅이란?

    기본적인 프론트엔드 지식
  • HTML
  • CSS
  • JavaScript

    OS 및 일반적인 지식
  • 터미널 사용방법
  • OS 작동 방식
  • 프로세스 관리
  • 스레드와 동시성
  • 기본적인 터미널 명령어
  • 메모리 관리
  • 프로세스간 통신 (IPC)
  • 입출력(I/O) 관리
  • POSIX 기초
  • 기본적인 네트워크 개념

    버전 관리
  • Git 기본 사용법

    DataBase
  • PostgreSQL (변경 가능성 있음)
  • MongoDB

    DataBase 상세 정보
  • ORM
  • ACID
  • Transaction
  • N + 1 Problem
  • DataBase 정규화
  • Index와 작동 방식

    API
  • 인증
  • REST
  • JSON APIs

    캐싱
  • CDN
  • Server side
  • Client side

    웹 보안 지식
  • MD5, SHA family, scyrpt, bcrypt
  • HTTPS, CORS, SSL/TL, 보안 정책

    Testing
  • 통합 테스트
  • 단위 테스트
  • 기능 테스트

  • CI/CD

    개발과 설계 원칙
  • SOLID
  • KISS
  • YAGNI
  • DRY

    아키텍처 패턴
  • 모놀로틱 앱
  • 마이크로서비스
  • SQA
  • Serverless

    검색 엔진
  • ElasticSearch

    메세지 브로커
  • RabbitMQ, Kafka

    컨테이너화 vs 가상화
  • Docker

    GraphQL
  • Apollo

  • 웹 소켓

  • 웹 서버

    확장성
  • 측정, 모니터링, 원격측정
  • 마이그레이션 전략
  • 수평적 확장 vs 수직적 확장
  • 관찰 가능성을 고려한 확장

참고 자료

https://velog.io/@ragi/Back-end-입출력IO-관리


💕오류 지적 및 피드백은 언제든 환영입니다. 복제시 출처 남겨주세요!💕
💕좋아요와 댓글은 큰 힘이 됩니다.💕
profile
I AM WHO I AM

0개의 댓글