CS
CPU 스케줄링 (Scheduling) 개념
단계프로세스 스케줄링은 수행 단계의 따라 장기, 중기, 단기 스케줄링의 세 가지로 나뉘는데 이것은 스케줄링이 요구되는 시점을 기준으로 구분한다. 장기 스케줄링어느 작업을 커널에 등록시켜 프로세스로 만들어 줄 것인가를 결정하는 것으로 작업 스케줄링(Job Scheduling)이라고도 한다. 이 단계는 요청된 일을 프로세스로 만들어 시스템에 알려진 일거리로 추가하느냐를 결정하는 것으로 다중 프로그래밍의 정도를 조절하는 역할을 한다. 중기 스케줄링보류 상태의 프로세스들 중에서 어느 프로세스에게 메모리를 할당해 줄 것인가를 결정한다. 단기 스케줄링준비 상태에 있는 프로세스들 중에서 어느 프로세스에게 CPU를 할당할지를 결정하는 단계이다. 프로세스 스케줄러 또는 디스패처(Dispatcher)라 불리는 것에 의해..
논리게이트의 종류(AND, OR, NOT, NAND, NOR, XOR, XNOR)
논리게이트는 디지털 회로를 만드는데 있어서 가장 기본적인 요소인데 대부분의 논리게이트는 두 개의 입력과 한 개의 출력 가지게 된다.AND 게이트논리곱이라고 부르며 두 개의 입력이 서로 1일 때만 출력이 발생한다, 둘 중 하나라도 0이면 출력은 0이다.OR 게이트논리합이라고 부르며 두 개의 입력 중 하나가 1이면 출력은 1이고, 모두 0일 땐 0이다NOT 게이트반전 게이트다, 1이 입력되면 0이, 0이 입력되면 1이 출력된다BUFFER 게이트입력이 그대로 출력이 되는 게이트다, 입력과 출력의 신호 차이는 없지만, 일종의 시간 지연기능을 갖는다.NAND 게이트NOT 게이트와 AND의 결합이다, 즉 논리곱의 반대가 되는 것이다. 논리곱은 본래 입력 두 개가 모두 1일 때만 출력이 1이 되었는데, 이것은 그와 ..
RIP, OSPF, BGP 장단점
RIP (Routing Information Protocol), OSPF (Open Shortest Path First) 및 BGP (Border Gateway Protocol)는 모두 동적 라우팅 프로토콜이다.RIP - 거리 벡터 라우팅 프로토콜라우터가 인접한 이웃과 정보를 교환하면서 전체 네트워크에 대한 정보를 점차 완성해 나가는 방식이다. 장점)구성이 간단하다작은 네트워크에서 잘 작동한다단점)홉수 제한이 15개로 작다수렴 속도가 느리다무한 계산 문제가 발생할 수 있다OSPF - 링크 상태 라우팅 프로토콜라우터가 전체 네트워크의 상태 정보를 가지고 있으며, 이를 기반으로 최단 경로 트리를 계산하여 최적의 경로를 결정하는 방식이다. 장점)VLSM (Variable Length Subnet Mask)을 ..
라우팅 알고리즘
1. 동적 라우팅에 사용되는 알고리즘① 거리벡터(Distance Vector) : RIP, IGRP가. 개요- 모든 이웃 라우터들에게 자신이 가진 모든 정보(불완전한 정보 포함)를 주기적으로 알려준다.- 목적지 네트워크의 distance vector 정보를 서로 교환하여 라우팅 테이블을 작성- 목적지까지 경로를 제공하지 않으며, 단지 목적지까지의 최소비용(홉수)만 제공 나. 특징- 노드 변경 시 주기적으로 이웃한 노드와 자신의 라우팅 테이블을 공유 [산기, 14년3회]- 소규모 네트워크에 적합, 라우팅 테이블을 서로 교환 다. 장단점- 장점 : 네트워크의 distance 값에 대한 정보만 저장하기 때문에 장비의 메모리를 적게 사용- 단점 : 일정 시간마다 주기적으로 라우팅 정보를 발송함으로 네트워크 트래..
IP와 IP 주소 / 서브넷 (Subnet) 개념
CIDR 표기법을 사용하여 IP 주소의 범위를 지정하는 CIDR 블록을 VPC에 할당하고 VPC가 할당받은 IP 주소의 범위를 더 작은 범위로 쪼개어 Subnet이라는 작은 네트워크를 만들고 주소를 할당하는 원리다.IP와 IP 주소란?IP(Internet Protocol)이란 네트워크 환경에서 데이터를 전송하기 위한 Network Layer에 속하는 프로토콜이다. 이때, 데이터를 전송하기 위해서는 목적지와 출발지 주소가 필요한데 이때, 사용되는 개념이 IP 주소이다. 우리가 흔히 우편물을 보낼 때, 어디서 보내는지(출발지 주소)와 어디로 보내는지(목적지 주소)를 작성하는 것과 동일한 원리라고 생각하면 된다. IP 주소는 네트워크 환경에서 Host(컴퓨터, 서버)와 Router 등 네트워크를 구성하는 장비..
ATM (Asynchronous Transfer Mode)
개요가상 회선을 사용하는 비동기 통신 기술첫 번째 패킷이 전송될 때 송신자와 수신자 간에 최적의 전송 경로를 확정시킴.전송 경로가 확정되면 두 번째 패킷부터는 포워딩(Forwarding) 만 수행하기 때문에 전송 속도가 빠름.인터넷 은 패킷이 전송될 때마다 최적의 경로를 계산하고 데이터를 전송하는 포워드를 수행함, ATM은 한 번만 경로를 결정하면 메시지는 포워드만 하기 때문에 안정적으로 빠르게 데이터를 전송할 수 있음.결론적으로 회선 교환 네트워크과 패킷 교환 네트워크의 장점을 결합한 것특징고속으로 안정적 통신이 가능함.비동기 전송 모드를 사용음성, 영상과 같은 멀티미디어 전송과 데이터 전송이 가능IP 헤더를 사용하지 않고 53 바이트의 고정길이 셀(Cell)이라는 ATM 전용 헤더 사용가상 경로 설정..
NAT와 NAPT의 개념과 원리
NAT란NAT는 Network Address Translation의 약자이다.현재 사용하는 XXX.XXX.XXX.XXX 형태의 IP 주소는 IPv4 형식으로 4 옥텟으로 표현하도록 되어 있다.여기서 옥텟이란 8개의 연속적인 비트의 집합을 의미하는 것으로 바이트와 같은 단위라고 봐도 무방하다. 즉, IPv4 에서의 주소는 4바이트로 표현할 수 있고 따라서 최대 개수는 2^32 = 4,294,967,296 이다.이는 약 43억 개이므로 충분하다고 생각할 수 있지만 사실 IP 주소는 그렇게 여유롭지 않다. 그래서 IP 주소의 절약을 위해 NAT 시스템을 도입하였다.NAT는 하나의 공인 IP를 여러개의 사설 IP로 변환하는 시스템이다.랜카드를 두 개 이상 가진 공유기(라우터)가 사설망과 외부망의 사이에서 중개자..
JWT (Json Web Token)
개념Json 객체 인증에 필요한 정보들을 담은 후 비밀키로 서명한 토큰으로, 인터넷 표준 인증 방식이다. 공식적으로 인증(Authentication) & 권한허가(Authorization) 방식으로 사용된다. 프로세스 사용자가 아이디와 비밀번호 혹은 소셜 로그인을 이용하여 서버에 로그인 요청을 보낸다.서버는 비밀키를 사용해 json 객체를 암호화한 JWT 토큰을 발급한다.JWT를 헤더에 담아 클라이언트에 보낸다.여기까지가 JWT를 발급받기까지의 (로그인 전)과정이다. 로그인 이후에는 다음과 같은 과정이 이루어진다.클라이언트는 JWT를 로컬에 저장해놓는다.API 호출을 할 때마다 header에 JWT를 실어 보낸다.서버는 헤더를 매번 확인하여 사용자가 신뢰할만한지 체크하고, 인증이 되면 API에 대한 응답..
0Auth란?
OAuth는 인터넷 사용자들이 비밀번호를 제공하지 않고 다른 웹 사이트 상의 자신들의 정보에 대해 웹 사이트나 애플리케이션의 접근 권한을 부여할 수 있는 공통적인 수단으로서 사용되는 접근 위임을 위한 개방형 표준이다. 이 매커니즘은 여러 기업들에 의해 사용되는데 이를테면 아마존, 구글, 페이스북, 마이크로소프트, 트위터가 있으며 사용자들이 타사 애플리케이션이나 웹 사이트의 계정에 관한 정보를 공유할 수 있게 허용한다 (로그인 API)OAuth가 쓰이기 전에는 인증방식의 표준이 없었기 때문에 기존의 기본 인증인 아이디, 비밀번호를 썼는데 이는 보안상 취약한 구조다. 기본 인증이 아닐 경우는 각 애플리케이션들이 각자의 개발한 회사의 방법대로 사용자를 확인했다. OAuth는 이렇게 제각각인 인증방식을 표준화한..
[C++] 추상 팩토리 메서드 패턴 코드
/** * Each distinct product of a product family should have a base interface. All * variants of the product must implement this interface. */class AbstractProductA { public: virtual ~AbstractProductA(){}; virtual std::string UsefulFunctionA() const = 0;};/** * Concrete Products are created by corresponding Concrete Factories. */class ConcreteProductA1 : public AbstractProductA { public: std::..