목록기반기술 (6)
제리의 배움 기록
스위치는 망을 구성하는 네트워크의 기본 장비 중 하나입니다. 스위치는 endpoint host들의 연결점이자 망 간 통로 역할을 합니다. 스위치에 연결된 호스트들은 스위치에서 할당한 대역에 맞게 IP를 설정하고 스위치로 게이트웨이를 설정해야합니다. endpoint들이 스위치를 통해 통신하도록 구성함으로써 endpoint들을 통합적으로 관리하고 외부와의 통신을 지원합니다. 스위치와 스위치 간에는 별도의 망으로 구성하여 통신의 유무를 설정할 수 있고, 이 사이에 방화벽을 두어 제어할 수도 있습니다. 스위치의 구성 아래는 스위치로 망을 나누고 각 망에 endpoint들이 연결된 구성의 예시입니다. 위 예시에서 각 endpoint 한 대의 스위치에 연결되어있습니다. 이 때, 스위치A가 장애로 다운되어 버린다면 ..
모놀리틱과 분산시스템 전통적인 시스템은 모놀리틱 구조로 서비스가 커지면 scale-up 형태로 시스템을 확장해나갔습니다. 서비스를 하기 위해서는 실제 서버 장비를 구매하여 구축하여야 하는데, 비용이 큰 서버 장비를 여러 개 도입하는 것은 부담이 큰 일이었습니다. 이 때문에 서비스가 커져서 서버 자원이 더 필요한 경우에는 단일 서버에서(안정성을 고려한다면 이중화, 삼중화) 서버의 capacity를 늘리는 방향으로 발전해왔습니다. 모놀리틱 인프라 구조는 쉽고 단일 관리 포인트라는 특징으로 장애시 확인해야할 범위가 특정되어 있는 장점이 있지만, 반대로 하나의 서버에서 모든 서비스를 처리하니 서버 장애시 전체 서비스가 중단되는 단점이 있습니다. 또한, 기술구조를 서비스 별로 분류하기 어려운 점, 서버에 올라간 ..
UTF-8 인코딩 유니코드 유니코드란 전세계의 모든 언어를 컴퓨터상에서 표현할 수 있도록 글자와 코드를 1:1로 맵핑한 표준 코드 입니다. 표준 체계 정의를 통해 사용자나 환경에 따라 문자가 다르게 표현되는일 없이 일관되게 사용할 수 있습니다. 유니코드 값을 나타내기 위해서는 코드 포인트를 사용합니다. 예를 들어, 'A'의 유니코드 값은 U+0041로 표현합니다. 유니코드는 공식적으로 31비트 문자집합이지만 현재까지는 21비트 이내로 모두 표현 가능합니다. UTF-8 실제로 유니코드를 컴퓨터에서 사용하기 위해서는 컴퓨터가 이해할 수 있도록 인코딩 하여야 합니다. utf-8은 유니코드를 위한 문자 인코딩 방식 중 하나입니다. 글자마다 byte 길이가 다름 가변을 구분하기 위해서는 첫 바이트에 표식을 넣음 ..
동시성과 병렬성 구분 동시성 싱글 코어에서 멀티 스레드를 동시에 처리한다고 느끼게 동작 (사용자가 느끼지 못할 만큼 빠르게 컨텍스트 스위칭이 일어남) 병렬성 멀티 코어에서 멀티 스레드를 실제로 동시에 처리 [참고] codeproject article - concurrency vs parallelism
스핀락이란 다른 스레드가 임계영역에 lock을 점유한 상황에서 lock을 반환하기 까지 계속 loop를 돌며 확인하고 기다리는 것입니다. 뮤텍스(Mutex)의 경우에는 다른 스레드가 lock을 점유한 경우에 sleep 상태로 빠집니다. 이후 다른스레드가 작업이 끝나고 lock을 반환하면 awake 되면서 lock 획득을 재시도 합니다. 장점 스핀락은 스레드의 상태를 변경하지 않고 CPU를 계속 점유하기 때문에 컨텍스트 스위칭으로 인한 오버해드가 발생하지 않습니다. 임계영역의 작업이 간단하여 lock의 점유-반환 시간이 짧다면, 컨텍스트 스위칭 비용을 아끼면서 효율적으로 작업을 처리할 수 있게 됩니다. 단점 하지만, 임계영역의 작업이 복잡하고 lock의 점유-반환 시간이 길다면, CPU가 다른 스레드의 작..
교착상태란? 두 개 이상의 작업들이 서로의 작업이 끝나기를 기다리면서 더이상 처리와 응답이 불가능해지는 상태 프로세스(스레드)는 아래 4가지 조건을 모두 만족할 경우 교착상태에 빠질 수 있습니다. 교착상태(deadlock) 발생 조건 상호배제 (mutual exclusion) 프로세스들이 필요로 하는 자원에 대해 배타적인 통제권을 요구합니다. ex) 프로세스 1번, 2번과 자원 A가 있다고 하였을때, 1번이 자원 A를 무한히 점유하게 되면 2번은 자원 A를 기다리며 교착상태에 빠질 수 있습니다. 점유와 대기 (hold and wait) 프로세스가 할당된 자원을 가진 상태에서 다른 자원을 기다립니다. ex) 프로세스 1번, 2번, 3번과 자원 A, B가 있고, 1번은 A를 점유, 2번은 B를 점유하고 있는..