230822 CPU, Redux

나윤빈·2023년 8월 22일
0

TIL

목록 보기
39/55

1. 입출력 장치

1) 입력 장치

  • 입력 장치란 사용자가 컴퓨터에게 명령하는 창구를 말한다.
  • 입력 장치의 종류에는 키보드, 마우스, 터치스크린, 마이크, 스캐너, 카메라 등이 있다.
  • 사용자는 입력 장치들을 통해 컴퓨터에게 명령을 요청하거나 데이터를 입력한다.

2) 출력 장치

  • 출력 장치란 컴퓨터가 사용자에게 데이터를 보여주거나 처리 결과를 보여주는 창구를 말한다.
  • 출력 장치의 종류에는 모니터, 스피커, 프린터 등이 있다.
  • 컴퓨터는 출력 장치들을 통해 사용자에게 명령이나 데이터를 입력할 수 있는 화면을 보여주고, 명령에 대한 처리 결과를 보여주거나 들려준다.

2. CPU

1) 구성

  • ALU(산술논리 연산장치): 덧셈, 뺄셈과 같은 산술 연산과 논리 연산을 계산하는 디지털 회로이다.
  • CU(제어부)와 내부 버스
    • 제어부: 주기억 장치에 저장되어 있는 명령어를 순서대로 호출하여 해독하고, 제어 신호를 발생시켜 컴퓨터의 각 장치를 동작하도록 한다.
    • 내부버스: 기억, 연산, 제어 기능을 실현하기 위한 CP와 주기억장치, 입출력장치, 외부기억장치, 주변장치, 통신처리장치 등의 제어부 사이를 연결하는 버스이다.
  • Redisters(레지스터): 프로세서에 위치한 고속 메모리로 프로세서가 바로 사용할 수 있는 데이터를 담고 있는 영역이다. 용도에 따라 범용 레지스터와 특수목적 레지스터로 구분한다. 특수목적 레지스터의 종류는 다음과 같다.
    • 메모리 주소 레지스터: (MAR) : 읽고 쓰기 위한 주기억장치의 주소를 저장
    • 프로그램 카운터 (PC) : 다음에 수행할 명령어의 주소를 저장
    • 명령어 레지스터 (IR) : 현재 실행 중인 명령어를 저장
    • 메모리 버퍼 레지스터 (MBR) : 주기억장치에서 읽어온 데이터나 저장할 테이터를 임시로 저장
    • 누산기 (AC, ACCUMULATOR) : 연산 결과를 임시로 저장
  • CACHE Memory(캐시메모리): 처리속도를 높여주는 역할을 한다.

2) 동작

  • 명령어 인출: CU가 수행할 명령어 정보를 가지고 온다.
  • 명령어 해독: 보통 opcode라고 하는 명령어 코드를 인출하고 opcode의 성격에 맞게 레지스터들을 준비한다.
  • 실행: 해독된 명령어를 수행하는 과정으로 이때 산술/논리 관련 연산이리 경우 ALU가 주체가 되어 실행한다.
  • 반영: 명령어의 수행 결과를 반영함으로써 명령어 수행의 한 사이클이 종료된다.

3) 성능

  • 클럭: CPU 내부에서 일정한 주파수를 가지는 신호로, 이 신호로 모든 명령어가 동작된다. 클럭 주파스가 빠를수록 제한된 시간에 더 많은 명령을 처리할 수 있다.
  • 코어: 코어는 중앙처리 장치 역할을 하는 불록을 뜻한다. 따라서 멀티 코어들은 싱글 코어에 비해 마치 여러개의 CPU가 작동하듯 많은 연산을 빠르게 병령 리 할 수 있다.

3. Redux

Redux란 자바스크립트 애플리케이션에서 전역 상태를 관리하는 오픈 소스 라이브러리이다. 주로 React와 함께 사용되며, 애플리케이션의 상태를 단일한 Store에 저장하고 상태 변경을 예측 가능한 방식으로 관리하고 추적할 수 있도록 도와준다.

React의 경우 부모 컴포넌트가 자식 컴포넌트에 Props를 전달하는 단방향 방법으로 컴포넌트 간 애플리케이션의 상태를 공유한다. 이러한 계층 구조를 통한 상태 전달은 애플리케이션이 커지고 복잡해지면 Prop Drilling과 같은 문제가 발생할 수 있다.

이 때 Props Drilling이란 A 컴포넌트에서 B 컴포넌트로 Props를 전달할 때 직접 전달하지 않고 ‘하위 컴포넌트로 전달하는 용도로만 쓰이는’ C 컴포넌트를 거쳐서 전달하는 것을 말한다. 이처럼 중간 단계의 컴포넌트를 거치는 과정은 코드 복잡도를 증가 시킬 수 있으며, 유지 보수가 어려워진다는 문제점을 가진다.

Redux는 Props Drilling 가지는 문제점을 해결한다. Redux는 Reducer를 통해 상태 변경 로직을 Store에서 관리하고, 상태 변경을 예측 가능한 Action 객체로 관리한다. 이를 통해 어떤 액션이 어떤 상태를 변경하는가에 대한 추적과 유지 보수가 용이해지며, 복잡한 상태 변화를 통제할 수 있다.

profile
프론트엔드 개발자를 꿈꾸는

1개의 댓글

comment-user-thumbnail
2023년 8월 22일

확인했습니다.

답글 달기