오늘의 생각
매우 힘든 하루였다.
오늘도 개념 위주로 배웠는데, 이론과 개념의 양이 압도적으로 많았다. 아마 이제껏 하루에 배운 양 중 제일 많지 않을까...싶다.
그래서 모든 개념들을 온전히 이해하고 사용하기에는 무리가 있는 것 같다.
두고두고 복습을 통해 조금이라도 이해도를 높일 예정이다.
오늘의 키워드
하드웨어, 소프트웨어, 입력장치(Input), 출력장치(Output), 중앙처리장치(CPU), 저장장치(Memory), 주 기억 장치, 보조 기억 장치, 폰 노이만 구조, 산술/논리 연사 장치(ALU), 레지스터, 범용 레지스터 (General-Purpose Register), 전용 레지스터 (Dedicated-Purpose Register), IR, PC, AC, 제어장치 (Control Unit), 프로그램 계수기, 명령 레지스터, 명령해독기, 고정 배선 제어, 동작코드 (Op-code), 오퍼랜드 (Operland), FI, DI, EI, WB, RISC, 파이프라이닝, 슈퍼스칼라, CISC, nano-second, 리프레시 시간, 메모리 엑세스 시간, 사이클 시같, RAM, ROM, 자기 디스크, 광 디스크, 플래시 메모리, 캐시 메모리, Cache Hit, Cache Miss, Hit Ratio, 인출 방식 (Fetch Algorithm), 쓰기 정책 (Write Policy), 교체 알고리즘, 사상 (Mapping) 기법, 운영체제, 운영 프로그램, 시스템 콜, 프로세스, 유저 메모리 영역 관리 (Virtual Address Descriptors), 핸들 테이블 (Handle Table), 디스패칭, 프로세서 (Processor), 스레드, 가상 CPU, 수행 코드, 처리 데이터, 싱글 스레드, 멀티 스레드 , 시분할, 동시성, 병렬성 (Concurrency), 유니코드 (Unicode), ASCII 문자, UTF-8, UTF-16, 비트맵 (Bitmap), 래스터 그래픽, 벡터 (Vector), 가비지 컬렉션, 저수준 언어, 고수준 언어, 메모리 생존 주기, 참조 (Reference), 렉시컬 스코핑, 레퍼런스 카운팅, 트레이싱, mark and sweep, 루트 (Roots), 메모리 누수
오늘의 학습내용
- 컴퓨터 구조의 정의 및 컴퓨터 기본 구성 요소
- 폰 노이만 구조와 CPU의 구조
- CPU의 기능과 명령어 수행 과정 및 명렁어 처리 방식
- 메모리 분류별 특성 및 성능, 메모리의 종류
- 운영체제의 목적 및 기능, 시스템 자원 관리
- 프로세스의 정의 및 구성 요소, 특징
- 프로세서와 프로세스의 차이
- 스레드의 구성요소 및 특징, 스레드가 필요한 이유
- 싱글 스레드와 멀티 스레드의 장단점
- 동시성과 병렬성의 차이
- 유니코드의 정의 및 인코딩과 디코딩의 기준
- UTF-8 과 UTF-16의 인코딩 방식
- 비트맵과 벡터의 구성 원리 및 차이점
- 가비지 컬렉션의 정의 및 저수준 언어와 고수준 언어
- 가바지 컬렉션의 대표적인 방법과 구동 원리
- 메모리 누수의 주요 원인 및 3가지 형태
어려웠던 keyword / 활용한 질문
Q. CPU에서 명령어의 수행 과정에 대해 설명할 수 있나요?
A. CPU의 명령어 수행 과정은 읽기 - 해석 - 실행 - 기록 순으로 진행됩니다. 먼저 메모리에서 명령을 수령한 후, 해당 명령을 해석, 수행, 수행한 결과의 기록으로 이어집니다. 또한, 명령어 처리 방식에는 단순한 명령을 조합해서 하나의 기능을 수행하는 RISC와 하나의 기능에 하나의 명령을 내리는 CISC가 있습니다.
Q. 프로세스와 프로세서의 차이점에 대해 설명해 주세요.
A. 프로세서는 어떠한 하드웨어 또는 시스템을 가리키며, 프로세스는 특정 목적을 수행하기 위해 나열된 작업의 목록입니다. 프로세서는 하드웨어적인 측면과 소프트웨어적인 측면으로 정의할 수 있습니다. 하드웨어적인 측면에서 컴퓨터 내에서 프로그램을 수행하는 중앙처리장치를 의미하고, 소프트웨어적인 측면에서 데이터 포멧을 변환하는 역할의 데이터 처리 시스템입니다. 프로세스는 그저 메모리에 적재되어 프로세서에 의해 실행 중인 프로그램입니다.
Q. 대표적인 가비지 컬렉션의 방법은 무엇이 있을까요?
A. 대표적인 가비지 컬렉션 방법으로 레퍼런스 카운팅과 트레이싱이 있습니다. 이는 어떤 객체가 다른 객체에 접근할 수 있다는 "참조" 개념에 의존해 작동합니다. 레퍼런스 카운팅이란 객체의 참조 횟수를 계산하는 방법으로 레퍼런스 카운트가 0이 되면 메모리에서 해제시키는 방법입니다. 이 때, 순환 참조로 인한 레퍼런스 카운팅은 가비지 컬렉션에 걸리지 않기 때문에 트레이싱 방법을 활용할 수 있습니다. 트레이싱은 한 객체에 flag를 두고, 가비지 컬렉션 사이클마다 메모리 관리자가 모든 객체를 추적해서 사용 중인지 아닌지를 표시하고 표시되지 않은 객체를 삭제하는 단계를 통해 메모리를 해제합니다.
'개발자 일기 > 일일회고 (TIL)' 카테고리의 다른 글
부트캠프 73일차 (최적화Optimization) (0) | 2022.12.05 |
---|---|
부트캠프 71, 72일차 (GraphQL, TDD) (0) | 2022.12.02 |
부트캠프 69일차 (React Hooks 페어 과제) (0) | 2022.11.29 |
부트캠프 68일차 (React.lazy(), Suspense) (0) | 2022.11.28 |
부트캠프 67일차 (Virtual DOM, React Hooks) (0) | 2022.11.25 |
댓글