인프런 강민철님의 강의를 듣고 정리한 내용입니다.
강의에서 나오는 많은 언어는 https://csnote.net/ 에서 확인할 수 있습니다.

하드웨어

인코딩

EUC-KR은 완성형 인코딩이다. 표현하지 못하는 한글이 있어 유니코드가 등장했으며, 유니코드도 UTF-8, UTF-16 등 다양한 인코딩 방식이 있다.

CPU

레지스터는 CPU 내부에 있는 메모리로, 가장 작은 단위의 메모리이다. CPU는 레지스터에서 계산을 수행하고 결과를 다시 레지스터에 저장한다.

CPU는 의존성이 없는 명령어를 병렬 실행할 수 있다. 비순차적 명령어 실행(Out-of-Order Execution)을 지원하는 CPU는 의존성이 없는 명령어의 순서를 조정해 사이클을 최적화한다.

RISC vs CISC

구분RISCCISC
명령어단순, 고정 길이복잡, 가변 길이
구조단순복잡
전력 소비낮음높음
대표 예시ARMx86

ARM은 RISC 아키텍처로, 전력 소비가 낮아 ARM 기반 VM에 “탄소 절감”이라는 표현이 붙기도 한다.

메모리

RAM 종류

  • DRAM (Dynamic RAM): 일반적으로 사용하는 RAM. DDR 세대가 올라갈 때마다(DDR2 → DDR3 → DDR4 → DDR5) 대역폭이 약 2배씩 증가한다.
  • SRAM (Static RAM): 데이터 상태를 유지할 수 있어 성능이 좋지만, 대용량에는 비효율적이다. 주로 캐시 메모리에 사용된다.

메모리는 주소의 시작점과 크기를 저장하고, 범위를 벗어난 요청을 거부한다.

저장장치

플래시 메모리

셀당 비트 수가 적을수록 입출력이 빠르고 수명이 길다. 대신 용량 대비 비용이 비싸다.

SSD

SSD는 삭제 단위가 쓰기 단위보다 크다. 따라서 Invalid 상태의 데이터가 존재하며, 유효한 데이터만 다른 블록에 새로 쓰고 원래 블록을 지우는 Garbage Collection이 수행된다.

RAID

여러 개의 하드디스크를 하나의 논리적인 디스크처럼 사용하여 안정성과 성능을 높이는 기술이다.

  • RAID 1: 단순 미러링(이중화)
  • RAID 4, 5, 6: 패리티 비트를 사용한 복구 지원

운영체제 (OS)

커널

커널이란 OS 내부에서 격리되어 적재된 영역으로, 하드웨어를 직접 제어하는 핵심 영역이다.

프로세스 스케줄링

I/O bound 작업은 CPU 소비가 적다. 일부 스케줄링 알고리즘에서는 I/O bound 작업의 우선순위를 높여 빠르게 처리하고, 남는 CPU 자원을 CPU bound 작업에 할당한다. (단, 이는 스케줄러 정책에 따라 다르다.)

자원별로 스케줄링 큐가 있으며, 우선순위가 적용되므로 단순 FIFO는 아니다.

메모리 관리

Swapping: 사용하지 않는 프로그램을 보조 기억 장치에 저장하는 기술이다.

외부 단편화: 연속 메모리 할당 시 빈 공간이 흩어져 총 잔여 메모리가 충분해도 할당이 실패하는 현상.

가상 메모리: 프로그램의 일부만 메모리에 로드하여 실제 메모리보다 큰 프로그램을 실행할 수 있게 하는 기술.

페이징: 메모리 주소를 페이지 단위로 나누어 불연속적으로 할당하는 기술. 페이지 테이블이 필요하다.

내부 단편화: 페이지보다 작은 프로세스가 있을 때 발생하는 메모리 낭비. 외부 단편화보다는 낭비가 적다.

페이지 테이블은 주로 메모리에 저장되지만, 자주 참조하는 부분은 TLB(캐시)에 저장된다.

파일 시스템

대부분의 OS에서 디렉토리는 특별한 형태의 파일이다. (Unix 계열 기준)


네트워크

패킷

패킷은 쪼개져서 전송되며, IP 계층에서는 기본적으로 순서가 보장되지 않는다. (TCP에서 순서 보장)

물리 계층

구리 선은 노이즈에 민감하여 일반적으로 Shield(차폐)가 필요하다.

물리 계층에는 주소 개념이 없다. 순수하게 전송/수신만 담당하며, 데이터 링크 계층부터 주소(MAC 주소)를 사용한다.


기타

128비트 CPU가 없는 주요 이유는 현재 64비트의 성능과 메모리 지원 용량이 대부분의 용도에서 충분하기 때문이다.