[OS] 메모리, 캐시, 운영체제의 메모리 관리
기본적으로 컴퓨터 구조를 다룰 때, CPU의 ALU가 연산을 시전하는 부분이라면 그 일련의 과정에 있어서 데이터를 저장하고 빼내는 등의, 일종의 창고 역할을 하는 부분이 필요한데, 그걸 넓은 의미에서의 메모리라고 한다. 메모리의 종류 종류로는 레지스터, 캐시(L1, L2, L3), RAM(주기억장치), 디스크(보조기억장치) 등이 있다. 저 순서대로 오른쪽으로 갈수록 더 많은 양의 데이터를 저장할 수 있지만, CPU로부터의 접근성이 떨어지고, 그렇기 때문에 가격도 싸진다.참고로 레지스터와 캐시의 일부(1은 항상, 2는 때때로)는 CPU 내부에 위치해 있다. 접근성이 최고인 셈. 각각을 알아보면, 1 레지스터: CPU가 즉시 사용할 수 있는 데이터를 저장하는 공간.2 캐시 메모리: CPU가 매우 빠르기 때..
[네트워크] QUIC 프로토콜
QUIC을 왜 쓰냐? 지난 40여년간 통신 쪽을 꽉 잡고 있었던 TCP도, 한계는 있었다.예를 들어, 연결 설정 지연, HOL 블로킹, 복잡한 프로토콜 스택 등이다.QUIC은 한마디로, TCP의 한계점들을 해결하기 위해 드드등장했다. 위의 한계점들을 아래와 같이 극복한다. 1 연결 설정 지연:TCP는 연결 설정을 위해 3-way handshake를 사용했고, TLS를 쓰면 추가적인 3-way handshake를 해야하기에 2번의 3-way HS가 필요했다. 이에 비해 QUIC은, 연결 설정 시 0 또는 1 RTT 핸드셰이크를 사용함. 심지어 한 번 연결했더라면, 0RTT로 가능함. 그리고, QUIC은 TLS를 자체 프로토콜 내에 통합했기 때문에, 별도의 TLS 핸드셰이크가 필요하지 않기 때문에 더욱 편..
[네트워크] TCP Congestion Control
버퍼 vs 슬라이딩 윈도우:앞서 다뤘던 슬라이딩 윈도우는 TCP에서 데이터 흐름을 제어하는 매커니즘인데, 송신자가 한번에 전송할 수 있는 데이터의 양을 제한하고, 수신자가 수신할 수 있는 데이터의 양을 제어함. 송신 윈도우 & 수신 윈도우의 두 개 윈도우로 구성됨.버퍼는 라우터, 스위치, 컴퓨터 등의 네트워크 장치에서 임시로 데이터를 저장하는 메모리 공간. 곧 다룰 라우터 버퍼는, 라우터에 붙어서, 데이터 패킷을 일시저장하고, 전송 지연을 관리하는 버퍼임. Congestion 혼잡이란, 여러 소스가 동시에 너무 많은 데이터를 네트워크게 빠르게 전송할 때 발생.예를 들면 아래와 같은 시나리오들을 포함한다. * 시나리오 1: 2 송신, 2 수신, 무한 버퍼 라우터, 재전송 없음 위에서 보이듯, 무한 버퍼이..