네트워크 관련된 글을 작성하는 이유는 지금껏 공부한 내용을 총 정리하기 위함도 있다. 앞으로 얼마나 걸릴지는 모르겠지만, 네트워크 지식을 쌓기 위해 필요한 지식들을 간략하게 짚고 넘어가 보자. 인터넷은 무엇인가? 이 질문에 대해 답하기 위한 방법은 두 가지가 존재한다. 첫 번째는 인터넷의 구성요소를 기술하는 것으로, 인터넷을 구성하는 기본적인 하드웨어와 소프트웨어 요소를 기술하는 방법이다. 두 번째 방법은 분산 애플리케이션에 서비스를 제공하는 인프라 구조 관점에서 인터넷을 기술하는 방법이 있다. 먼저 구성요소의 관점으로 인터넷에 대해 정의해보기로 하자. 구성요소로 본 인터넷 인터넷 용어로, 인터넷에 연결되는 모든 장치는 '호스트' 혹은 '종단 시스템'이라고 부른다. 따라서 우리가 사용하는 노트북, 데스크..
이번 주제는 운영체제의 페이징입니다. 본격적으로 페이징에 대해 공부하기 전, 페이징이 왜 필요한지?에 대해서 먼저 이해를 해보도록 하겠습니다. 모든 프로그램은 프로세스가 되기 위해 메인 메모리를 할당 받아야 합니다. 그리고 페이징이라는 개념이 등장하기 전, 하나의 프로세스는 무조건 연속적인 메모리 영역을 할당 받았습니다. 예를들어서 아래와 같이 말이죠. 현재 메모리에 OS, Process 5, Process 8, Process 2가 올려져 있다고 보시면 됩니다. 아직까지는 큰 문제가 보이질 않습니다. 이 상황에서 Process 5가 종료되어 할당받은 메모리를 해제하게 되었습니다. 메모리 영역에 구멍이 생긴 것을 볼 수 있습니다. 이렇게 연속적인 프로세스 할당으로 인해 메모리에 생긴 구멍을 'Hole'라고..
이제부터 스위치가 존재하는 근거리 네트워크 통신은 어떻게 이뤄지는지 알아볼 것이고, ARP 프로토콜이 왜 필요하고 어떻게 동작하는지 알아보겠습니다. 시작하기 앞서 스위치가 왜 필요한지?에 대해서 먼저 생각을 해보겠습니다. 컴퓨터가 통신할 수 있다는 것은 컴퓨터가 연결되어 있다는 의미입니다. 여러대의 컴퓨터를 연결하는 가장 단순한 방법은 무엇일까요? 바로 전부 연결해주면 됩니다. 하지만, 이 접근법은 너무 비용이 크다는 단점이 명확합니다. 연결한 선을 간단한 전선이라고 생각해봅시다. 그러면 100대의 컴퓨터가 서로 통신하고 싶은 상황에서 전선은 N * (N-1) / 2개가 필요합니다. 문제를 개선하기위해 위와같은 접근을 떠올렸습니다. 바로 어떤 허브를 두고, 모든 통신은 허브를 거쳐가도록 만드는 것이에요...
네트워크 계층의 핵심은 '송신 호스트에서 수신 호스트로 패킷을 전달'을 수행한다는 것입니다. 네트워크 계층의 역할이 끝나면, 데이터그램은 일련의 유무선 통신 링크와 스위치들을 거친 뒤에 목적지 호스트에 도달하게 됩니다. 그리고 이제부터 프로토콜 스택상 네트워크 계층에서 '링크 계층'으로 내려옵니다. 링크 계층이 어떻게 동작하는지 이해하기 앞서 몇가지 용어와 링크 계층이 수행하는 역할이 무엇인지 먼저 알아보겠습니다. 링크 계층 프로토콜을 실행하는 장치들을 '노드(node)'라고 부르고 여기에는 호스트, 라우터, 스위치 등이 포함됩니다. 또한 통신 경로상의 노드들을 연결하는 통신 채널을 '링크(link)'라고 부릅니다. 링크 계층의 기본 서비스는 통신 링크를 이용해 데이터그램을 한 노드에서 인접 노드로 이동..
먼저 CPU가 명령어를 실행하기 위해 어떤 사이클을 수행하는지 생각해봅시다. CPU의 명령어 실행 사이클은 크게 '명령어 인출'과 '명령어 실행' 단계로 이루어지는데요, 명령어 인출은 말그대로 CPU가 수행할 명령어를 꺼내오는 사이클을 말하고, 명령어 실행은 인출한 명령어를 실행하는 사이클을 말합니다. 이 과정에서 CPU의 많은 레지스터가 사용되지만 이번 주제는 메모리와 관련되어 있으니, MAR, MBR 레지스터만 아주 간단하게 그림으로 나타내보겠습니다. MAR은 Memory Address Register의 약자이고, MBR은 Memory Buffer Register의 약자입니다. 이름에서 알 수 있듯이, 이 두개의 레지스터는 Memory와 매우 밀접한 관계를 가지며 각각의 역할은 아래와 같습니다. MA..
DB 작업의 단위인 트랜잭션은 ACID라는 특징을 보장해야 하는데요, ACID 중 I는 Isolation의 약자입니다. Isolation의 특징을 보장해야 한다는 것은 하나의 트랜잭션이 데이터를 처리 하고 있을때, 다른 트랜잭션이 끼어들어 이 데이터를 훼손하지 못하도록 만드는 것을 말합니다. 먼저 Isolation을 보장하지 않는다면 어떤 문제가 발생하는지 보겠습니다. 그림과 같이 DB에 A = 1이라는 데이터가 저장되어 있다고 가정하겠습니다. 그리고 Transaction 1은 DB에서 꺼낸 X에 + 1을 수행하고 Transaction 2는 꺼낸 X에 -1을 수행한다고 가정합니다. 먼저 Transaction 1이 수행된다면, Transaction 1이 DB에 접근해 A 데이터를 가져오고, X = X + ..