IPC란? IPC는 Inter-Process Communication 의 줄임말로 프로세스간의 통신을 위한 메커니즘을 의미한다. 즉 IPC는 프로세스간의 통신을 돕는다. IPC는 다음과 같이 두 가지 모델이 존재한다. Shared Memory Message Passing 프로세스에 대해 자세히 알고 싶다면 다음을 참고하자. [운영체제] 프로세스란? 프로세스 메모리 구조, 상태, 스케줄링 프로세스(Process)란? 프로세스는 실행 중인 프로그램(program)을 뜻한다. 그렇다면 프로그램은 무엇인가? 프로그램은 명령어들의 모음을 포함한 디스크에 저장된 파일이다. 프로그램이 실행되면 이 code-lab1.tistory.com Shared Memory Shared Memory 방식은 말 그대로 프로세스들이 ..
프로세스 제어 블록(Process Control Block)란? 프로세스 제어 블록(이하 PCB)은 특정한 프로세스를 관리할 필요가 있는 정보를 포함하는 운영 체제 커널의 자료 구조이다. 쉽게 말하면 운영체제가 프로세스를 제어하기 위해 프로세스의 상태 정보를 저장해 놓는 구조체이다. PCB는 다음과 같은 항목들을 저장하고 있다. Process Id : 프로세스의 고유 번호 Process State : ready, wait, running 등의 실행 상태 Program Counter(PC) : 프로그램 카운터, 다음 실행될 명령의 포인터 CPU registers : CPU 레지스터 CPU scheduling information : CPU 스케줄링 정보 Memory-management information..
데이터베이스란? 데이터베이스(Database)는 통합 관리되는 데이터들의 집합을 뜻한다. 데이터베이스를 사용하는 이유는 뭘까? 다음과 같은 이유들을 들 수 있겠다. 데이터 공유 : 많은 사람들이 데이터를 공유할 수 있다. 중복의 제거 : 데이터를 한 곳에 모으면서 중복되는 데이터를 제거할 수 있다. 데이터 통합 : 흩어져 있는 데이터를 한 곳에 모을 수 있다. 보안성 : 권한이 있는 관리자만이 데이터를 관리한다면 데이터의 보안을 지킬 수 있다. 이외에도 다양한 이점이 있다. DBMS(DataBase Management System)란? DBMS는 데이터베이스 관리 시스템으로 데이터베이스 내의 데이터에 접근할 수 있도록 하는 소프트웨어들을 의미한다. DBMS는 어떻게 탄생하게 됐을까? DBMS 이전에는 파..
fork() 함수란?Unix 환경에서 fork() 함수는 함수를 호출한 프로세스를 복사하는 기능을 한다. 이때 부모 프로세스와 자식 프로세스가 나뉘어 실행되는데, 원래 진행되던 프로세스는 부모 프로세스(parent), 복사된 프로세스를 자식 프로세스(child) 라고 한다. fork() 함수는 프로세스 id, 즉 pid 를 반환하게 되는데 이때 부모 프로세스에서는 자식 pid가 반환되고 자식 프로세스에서는 0이 반환된다. 만약 fork() 함수 실행이 실패하면 -1을 반환한다. <p dat..
프로세스(Process)란? 프로세스는 실행 중인 프로그램(program)을 뜻한다. 그렇다면 프로그램은 무엇인가? 프로그램은 명령어들의 모음을 포함한 디스크에 저장된 파일이다. 프로그램이 실행되면 이 프로그램의 명령어들과 데이터가 메모리에 적재되고 이것이 프로세스가 된다. 프로세스의 메모리 구조 각 프로세스는 위 그림과 같은 구조를 갖는다. 각 영역은 다음과 같은 역할을 한다. Code 영역 : 프로그램을 실행시키는 실행 파일 내의 명령어들이 위치하는 공간 Data 영역 : 전역변수, static 변수들이 위치하는 공간 Heap 영역 : 동적할당을 위한 메모리 영역( malloc(), new 등) Stack 영역 : 지역 변수, 파라미터(함수에 전달되는 인자)가 위치하는 공간 프로세스 상태(Proces..
라우팅 알고리즘 라우팅 알고리즘이란 송신 측에서부터 수신 측 라우터의 네트워크를 통과하는 최적의 경로를 결정하는 알고리즘이다. 그러나 실제로는 여러 가지 이유로 최적의 경로를 결정하지 못할 수 있다. 예를 들어 'A기관은 B기관이 소유한 네트워크가 보낸 패킷을 전달해서는 안된다'와 같은 규칙 등이 존재할 수 있다. 그럼에도 불구하고 최대한 최적의 경로를 결정하는 라우팅 알고리즘은 네트워크 분야에서 매우 중요하다. 라우팅 알고리즘 분류 라우팅 알고리즘은 중앙 집중형 혹은 분산형인지로 구분할 수 있다. 중앙 집중형(global) 라우팅 알고리즘 : 네트워크 전체에 대한 완전한 정보를 가지고 출발지와 목적지 사이의 최소 비용 경로를 계산한다. 즉 모든 라우터가 연결 상태와 링크 비용을 알고 있다는 것이다. L..
벨만 포드 알고리즘(Bellman-Ford Algorithm) 벨만 포드 알고리즘은 그래프 상에서 최단경로를 찾는 알고리즘이다. 최단경로를 찾는 다른 알고리즘인 다익스트라(Dijkstra)알고리즘과 다른 점은 간선의 가중치가 음수여도 가능하다는 점이다. 다만 다익스트라보다 수행시간이 더 오래걸린다는 단점이 있다. 따라서 간선의 가중치에 음수가 없다면 다익스트라를, 음수가 있다면 벨만 포드를 사용하는게 일반적으로 좋다. 다익스트라 알고리즘에 대해 알고싶다면 다음 포스팅을 참고하자. [알고리즘] 다익스트라(Dijkstra) 알고리즘이란? | c++ 다익스트라 구현 다익스트라(Dijkstra) 알고리즘이란? 다익스트라 알고리즘은 그래프 상에서 시작 정점부터 나머지 각 정점까지의 최단거리를 계산하는 알고리즘이다..
Count to infinity 문제 Distance Vector 알고리즘(이하 DV 알고리즘)은 다른 라우터로 가는 최적 경로를 forwarding table에 저장해놓는다. 위와같은 상황에서 Y에서 X로 가는 비용이 60으로 증가한다면 어떻게 될까? ( 이해를 쉽게하기 위해 x라우터의 forwarding 정보는 무시하자 ) Y라우터는 인접 라우터들에 자신이 X로 가는 비용이 60으로 증가했음을 알리고, 최적 경로를 다시 계산하게 된다. 이 때Y라우터는 Z로부터 Z는 X라우터 까지 가는데 5의 비용이 든다는 정보를 얻게 된다. 오직 주변 노드의 정보로만 경로를 판단하기에 Y는 Z 노드까지만 가면 어떻게든 Z에서 X까지 5의 비용으로 갈 수 있다고 생각해 Y에서 Z를 가는 비용 1을 더해 X노드까지 6의..
서브넷의 등장 배경 흔히 사용되는 IPv4 주소 체계는 클래스를 나누어 IP를 할당한다. 하지만 이 방식은 매우 비효율적이다. 예를 들어 어떤 기관에 A 클래스를 할당한다고 하면 16,777,214개의 호스트를 할당할 수 있게 되는데, 이 기관이 100개의 호스트를 할당한다고 하더라도 16,777,114개의 호스트가 낭비되게 된다. 이러한 비효율성을 해결하기 위해 네트워크 장치들의 수에 따라 효율적으로 사용할 수 있는 서브넷(subnet)이 등장하게 되었다. 혹시라도 IP 클래스에 대해 모르겠다면 다음 포스팅을 참고하자. [네트워크] IP,IP 클래스, IPv4, IPv6이란? | IP 클래스 구분 IP 주소 IP는 Internet Protocol의 약자로 기기간 네트워크 통신을 할 때 쓰는 프로토콜을 ..
IP 주소 IP는 Internet Protocol의 약자로 기기간 네트워크 통신을 할 때 쓰는 프로토콜을 의미한다. IP에서 IP 기기의 주소를 나타내는 것이 바로 IP주소이다. 흔히 우리가 사용하는 IP는 이 IP주소를 의미한다. 우편배달을 예로 들자면 IP주소는 배달 주소를 나타내게 된다. 즉 IP주소를 사용하는 이유는 각각의 host들을 구분하여 데이터를 정확하게 송수신하기 위해서이다. 이러한 IP주소는 IPv4와 IPv6 체계로 나뉜다. 먼저 IPv4에 대해서 알아보자. IPv4 IPv4는 3자리 숫자가 4마디로 표기되는방식이다. 각 마디는 옥텟(octet)이라고 부른다. 위 주소는 내부적으로 32비트(각 마디당 8bit)로 처리된다. 예를 들어 192.168.123.123은 11000000.10..