파이프라인 성능을 저해하는 파이프라인 해저드의 개요 파이프파인 해저드의 개념 - 파이프라인 프로세서에서 명령어 의존성(데이터, 컨트롤, 자원)을 발생 시킬 수 있는 문제 - 파이프라인의 성능을 저해하는 요인, CPI(명령어당 실행 클럭 수)가 1이 되는 것을 방해하는 요소 ※ CPI(Cycles Per Instruction) : CPU가 한 개의 명령어를 처리하는데 소요되는 평균 사이클 수 파이프라인 해저드의 3가지 종류 구조적 해저드 - 하드웨어가 여러 명령들의 수행을 지원하지 않기 때문에 발생, 자원충돌(Resource Conflicts) 데이터 해저드 - 명령의 값이 현재 파이프라인에서 수행 중인 이전 명령의 값에 종속 - RAW, WAR, WAW 해저드가 존재 제어 해저드 - 분기(jump나 br..
명령어 파이프라인(Instruction Pipeline) 혹은 파이프라이닝(Pipelining)은 프로세서로 가는 명령어들의 움직임, 또는 명령어를 수행하기 위해 프로세서에 의해 취해진 산술적인 단계가 연속적이고, 다소 겹쳐서 수행하는 것을 의미한다. 파이프라인 기술이 없다면 프로세서는 메모리에서 명령어를 가지고 온 후, 연산을 수행하고, 다음번 명령어를 메모리로부터 가져오는 식으로 동작해야 하는 매우 비효율적인 방식으로 수행해야 한다. 즉, 명령어를 가져오는 동안에 프로세서의 산술연산 부분은 다음 명령어가 도착되기를 기다리며 쉬어야만 한다는 것이다. 파이프라인을 쓰게 되면, 하나의 명령어를 처리하는 동안 다음번 명령어를 가져올 수 있으며, 그것을 다음 명령어 연산이 수행될 수 있을 때까지 프로세서 근처..
식별자(Identifier)의 개념 - 데이터베이스에서 인스턴스(Instance)의 집합인 엔터티(Entity)를 구분할 수 있는 논리적인 값으로 하나의 Entity에 구성되어 있는 여러가지 속성 중에 대표할 수 있는 속성 - ex) 주민등록번호, ISBN(도서번호) 등과 같이 객체의 고유한 값들을 일반적으로 식별자라 부른다 식별자와 키(Key)를 동일한 의미로 보통 사용하는데 식별자의 용어는 논리 데이터 모델링 단계에서 사용하며, Key는 물리 데이터 모델링 단계에서 사용된다. 식별자의 특징 유일성 - 주식별자에 의해 엔터티(Entity)내의 모든 인스턴스들을 유일하게 구분한다. - ex) 대학교 학생들에서 학번 부여 최소성 - 주식별자를 구성하는 속성의 수는 유일성을 만족하는 최소의 수가 되어야 한다..
디지털 트윈(Digital Twin)은 미국의 GE(General Electric)가 2014년에 처음으로 제안한 용어로 2018년 가트너가 선정한 트렌드 기술 10에 포함할 정도로 중요하며 이 기술은 컴퓨터에 현실을 녹이는 것을 말한다. 대표적으로 구글 어스(Google Earth) 그리고 약간 벗어날 순 있지만 도시를 게임에 옮긴 GTA, 최근에는 도시를 똑같이 컴퓨터로 옮기는 작업등이 디지털 트윈이라 할 수 있다. 원래 디지털 트윈은 공장의 생산성 개선을 위해 나온 것으로 제품을 컴퓨터에 그대로 녹여낸다면 공장 관리자는 실시간으로 어느 곳이 문제가 있는지 쉽게 파악할 수 있다는 개념이다. 디지털트윈(Digital Twin)의 개요 디지털 트윈의 개념(정의) - 물리적(Physical) 세계와 동일한..
Intro 교착상태는 사실 교착상태라는 말보다는 Deadlock이라는 말을 훨씬 많이 사용하고 있으며, 개발자라면 한번 정도는 경험해볼만한 상황이기도 하다. 필자같이 데이터 분석가라면 대용량의 데이터를 처리하기 때문에 다른 사람들보다 이러한 상황을 자주 경험해봤다. 왜냐하면 다중 프로세스에서 발생하기 때문에 대용량을 처리하는 상황(최고의 속도를 위해서 수많은 Thread들과 마이크로서비스 등을 사용하기 때문)은 그야말로 최적의 상황이기 때문이다. 다중 프로세스 무한대기 상태, 교착상태의 개요 교착상태(Deadlock)의 개념 - 다중 프로세스(process) 환경하에 서로 다른 프로세스가 각자 자신이 소유한 자원을 포기하지 않고 상대 프로세스의 자원을 무한정 기다리고 있는 상태 - 교착상태에 있는 프로세..
B-Tree의 개요 B-Tree의 개념 - 데이터를 정렬하여 탐색, 삽입, 삭제 및 순차 접근이 가능하도록 유지하는 트리형 자료구조 - 이진 트리를 확장해 하나의 노드가 가질 수 있는 자식 노드의 최대 숫자가 2보다 큰 트리 자료구조의 일종 - 대부분의 이진 트리는 항목이 삽입될 때 하향식으로 구성되지만 B-트리는 상향식으로 구성됨. - B는 Balanced의 의미이며, leaf node가 한쪽 방향으로 쏠리는 현상이 적음 - B-Tree 에서 B를 Bi로 인식하는 사람들이 많으나, Balanced이다. 일반적인 트리와 다르게 자식노드가 3개 이상이 될 수 있기 때문이다. B-Tree의 특징 각 노드는 1/2이상 채워져야 하며 모든 리프 노드(leaf node)는 같은 레벨 (균형 트리) 탐색, 추가, ..
트랜잭션(Transaction)의 개요 트랜잭션의 개념 - 한번에 수행되어야 할 데이터베이스의 일련의 Read, Write 연산을 수행하는 단위 - 하나의 논리적 기능을 수행하기 위한 데이터베이스 처리작업의 단위 - 데이터베이스의 일관된 상태를 다른 일관된 상태로 변화시킴 트랜잭션의 특징(ACID) 원자성(Atomicity) - 트랜잭션은 분해가 불가능한 최소의 단위로 연산 전체가 처리 되거나 처리 되지 않아야 됨 (All or Nothing) - Commit/Rollback 연산 일관성(Consistency) - 일관성 있는 데이터베이스 상태를 보존함 - 트랜잭션 실행이 성공적으로 완료된 상태면, 데이터베이스는 모순이 없이 일관된 데이터 상태를 유지 고립성(Isolation) - 트랜잭션이 실행 중에 ..
함수적 종속성(Functional Dependency)의 개요 함수적 종속성의 개념 - 데이터베이스(Database, DB)의 릴레이션(Relation)에서 두 개의 애트리뷰트(attribute) 집합 간 제약의 일종 - 데이터들이 어떤 기준값에 의해서 항상 종속이 되는 현상 - Y는 X에 함수적으로 종속된다라고 정의하고 X -> Y로 표기 - X를 결정자(determinant set)라 하고, Y는 종속자(dependent attribute)라 한다. 함수적 종속성의 필요 종속된 테이블에 데이터를 배치하여 반복 차단 이상현상을 제거할 경우 데이터의 정합성을 유지할 수 있음 정규화 작업 수행 시 가장 중요한 작업으로 제2 정규형에서 BCNF까지 적용 함수 종속 다이어그램 (Functional Depend..
연결함정(Connection Trap) 연결함정의 개념 - 관계형 데이터베이스에서 데이터간에 관계가 모호해져서 원하는 결과를 얻을 수 없거나 업무 처리시 영향을 주는 ER모델의 문제점 연결함정의 유형 부채꼴 함정(Fan Trap) - 개체 집합(Entity Set) 사이에 관계성 집합(Relation set)이 정의되어 있지만 관계성이 모호한 경우 부채꼴 함정이라 한다 균열 함정(Chasm Trap) - 개체 집합 사이에 관계성 집합이 정의되어 있지만 일부 개체집합과 개체집합 사이에 관계성이 존재하지 않는 경우 균열 함정이라 한다. 부채꼴은 관계성이 모호한 것이고, 균열은 일부 개체의 관계성이 존재하지 않는 경우이다 부채꼴 함정의 사례 및 해결 방법 부채꼴 함정의 사례 유재석이라는 교수 경우 상경대학인것..
데이터베이스 무결성 확보를 위한, 동시성 제어 개요 개념 - 다중 사용자 환경을 지원하는 DB(데이터베이스) 시스템에서 여러 트랜잭션들이 동시에 성공적으로 실행될 수 있도록 지원하는 기능 - 동시성 제어는 병행성 제어와 같은 말 여러명이 동시에 접근하는 데이터베이스의 경우, 데이터를 삽입,갱신,삭제할 경우 다른 사용자에게 영향을 줄 수 있다. 이를 위해 데이터베이스는 트랜잭션을 관리하며 최소의 응답시간, 최대의 공유, 무결성, 일관성 등을 위해서 동시성 제어(concurrency control)는 필연적으로 구현되어 있어야 한다. 주요 목표 - 직렬화 : 동시 수행 트랜잭션 처리량을 최대화하면서, 직렬성 보장 - 성능 : 공유도 최대, 응답 시간 최소, 시스템 활동의 최대 보장 동시성 제어를 하지 않을 ..
인터럽트의 개념 - 프로그램의 실행 중 CPU의 현재 처리 순서를 중단시키고 다른 동작을 수행하도록 요구하는 시스템 동작 - 어떤 장치가 다른 장치의 일을 잠시 중단시키고 자신의 상태 변화를 알려주는 제어신호 - CPU가 특정 기능을 수행하는 도중에 급하게 다른 일을 처리하고자 할 때 사용할 수 있는 기능 대부분의 컴퓨터는 한 순간에는 하나의 일 밖에 처리할 수 없기에 어떤 일을 처리하는 도중에 우선 순위가 급한 일을 처리할 필요가 있을 때 대처할 수 있는 방안이 필요함 ex) 컴퓨터에 오류가 발생하여 현재 발생한 페이지 정보를 저장해야 할 때 주요개념 인터럽트 요청 (Interrupt ReQuest, IRQ) - CPU에 인터럽트를 요청하는 신호, CPU에게 인터럽트 요청 시 CPU가 각 장치를 구분할..
퀵 정렬(Quick Sort)의 개요 개념 기준 값인 피벗(Pivot)을 중심으로 작은 값은 좌측에 큰 값은 우측에 위치시켜 분할과 정복(Divide and Conquer)으로 정렬을 수행하는 알고리즘 특징 빠른 속도 : 선택정렬과 삽입정렬보다 빠른 정렬 수행 (다만 힙정렬보다는 느림) 분할과 정복 : 기준 값(Pivot)을 기준으로 앞, 뒤의 비교를 통해 스왑(Swap) 수행 재귀적 수행 : 분할을 마친 후 분할된 부분에서 반복 수행 - 수행시간 복잡도 : O(n-log2n) 퀵 정렬의 과정 1. 리스트(5,3,8,4,6,3,2)에서 피벗으로 4의 값을 선택 2. 4보다 작은 값(3,3,2)은 좌측, 4보다 높은 값은 (5,8,6) 3. 좌측과 우측에서 다시 Pivot(좌측은 3, 우측은 8)을 선정하..