본문 바로가기

CS110

[GPDB Administrator 교육 2일차] 보호되어 있는 글 입니다. 2022. 12. 14.
[GreenplumDatabase 교육 1일차] GreenplumDatabase - greenplum은 구조적으로 병렬 아키텍처 1. Greenplum Fundamental Concepts 1) Greenplum Architecture (0) 스케일업과 스케일 아웃 Scale up - 시스템 리소스에 대한 요구가 증가하게 될 경우, 하나의 물리 서버의 리소스 크기(CPU, Memory)를 늘리는 방법 Scale Out - (Greenplum Architecture) - 시스템 리소스에 대한 요구가 증가하게 될 경우, 여러 서버를 증설하는 방법 - 하나의 서버는 각 서버와 독립적으로 테스크를 수행 - Scale Out 구조의 GPDB를 정상적으로 동작하게 하려면 운영 방법에 대한 이해가 필요 https://dheldh77.tistory.com/entry.. 2022. 12. 13.
[컴퓨터구조] 저장장치 물리적 특성에 따른 메모리 분류 1) 메모리의 물리적 특성 (1) 휘발성 - 전원이 제거되면 저장된 내용이 사라지는 특성 (2) 비휘발성 - 전원이 제거되어도 저장된 내용이 사라지지않는 특성 (3) 삭제 가능 - 한 번 기록된 내용을 지우고 다른 내용으로 갱신가능한 특성 (4) 삭제 불가능 - 한 번 기록된 내용을 삭제 불가능한 특성 2) ROM(Read Only Memory) - 비휘발성 - 읽기전용 (1) Masked ROM - 생산 공장에서 저장된 내용에 대한 변경이 불가능 (2) PROM(Promgrammable ROM) - Programmble하다는 것은 프로그래머가 필요에 따라 수정가능하다는 의미 - 생산 공장에서 저장된 내용된 것이 아무것도 없으며, 사용자가 필요에 따라 한 번 저장 가능 (.. 2020. 7. 15.
[컴퓨터구조] 인터럽트(Interrupt) 인터럽트 - CPU의 정상적인 동작을 방해하는 것 - 인터럽트란 CPU가 프로세스 실행 중에 입출력 장치나 예외상황 등의 이벤트가 발생해 해당 작업을 먼저 수행하는 기능 1) 인터럽트(External Interrupt) - 프로그램 외부 상황(CPU 외의 다른 장치)에 따라 발생 시점이 일정하지 않게 발생 - 하드웨어 인터럽트 - 비동기식 인터럽트 - I/O Interrupt, Timer Interrupt 등 2) 트랩(Internal Interrupt) - 프로그램 내에서 발생하는 인터럽트로 CPU로부터 발생하는 운영오류 등을 포함 - 소프트웨어 인터럽트 - 동기식 인터럽트 - Divide by zero, Overflow 등 인터럽트 처리 과정 1) 인터럽트 요청 신호 발생 - 프로그램 실행 도중 인터.. 2020. 7. 14.
[컴퓨터구조] 레지스터(Register) 레지스터(Register) - 명령어를 실행하기 위해 필요한 데이터와 상태, 명령어를 저장하는 기억 소자 - CPU 내부에 존재하며, 기억 장치 중 가장 빠르며 용량이 작음 - 데이터 레지스터와 제어용 레지스터로 구분 데이터 레지스터 - CPU가 명령어를 처리하는 과정에서 임시로 처리할 데이터를 저장하거나 메모리의 주소를 저장할 목적으로 사용 - 데이터 레지스터(Data Register), 주소 레지스터(Address Register), 범용 레지스터(General Register)로 구분 1) 주소 레지스터 (1) 스택 포인터(SP, Stack Pointer) - CPU는 현재 실행하고 있는 프로그램의 메모리 영역을 스택으로 관리 - SP는 현재 스택 영역에서 가장 마지막 부분(가장 최근에 저장된)을 .. 2020. 7. 14.
[컴퓨터구조] 시스템 버스(System bus) 시스템 버스(System bus) - 컴퓨터의 구성요소를 서로 연결하고 데이터 전달을 위한 경로 - 주소 버스, 데이터 버스, 제어 버스로 구성 1) 주소 버스(Address Bus) - 메모리의 주소나 I/O Unit의 포트 번호를 전달 - CPU와 Memory는 단방향으로 데이터 전달이 가능한 버스를 이용함으로써 주소 전달은 CPU에서 메모리로만 가능 - CPU, Memory는 I/O Unit과 양방향으로 데이터 전달이 가능한 버스를 사용 2) 데이터 버스(Data Bus) - 데이터 전달 - 각 구성요소(CPU, Memory, I/O Unit)는 양방향으로 데이터 전달이 가능한 버스를 사용 3) 제어 버스(Control Bus) - 제어 신호 전달 - Read와 Write신호가 전달 - 각 구성요소.. 2020. 7. 14.
[컴퓨터구조] 명령어(Instruction) 명령어 사이클 - CPU는 명령어 사이클을 반복해 프로그램을 실행 - Fetch와 Execution 단계로 이루어져 있음 1) 인출 단계(Fetch stage) - 메모리에 저장된 명령어를 읽어들임 - 현재 실행할 명령어를 읽어 명령어 레지스터(IR, Instruction Register)에 저장 - 다음에 실행할 명령어를 읽어 프로그램 카운터(PC, Program Counter)에 저장 2) 실행 단계(Execution stage) - 명령어 레지스터에 저장된 명령어를 실행 - 제어장치는 명령어를 해독하고 제어신호를 생성해 각 구성요소에 전달 - 제어신호에 따라 ALU는 해당하는 연산을 수행 - 각 신호와 데이터는 내부버스를 통해 전달 - 연산에 필요한 데이터와 명령어는 레지스터에 저장 명령어의 종류 .. 2020. 7. 13.
[컴퓨터구조] 컴퓨터의 구성 요소 컴퓨터 구성요소 1) 중앙처리장치(CPU, Central Processing Unit) - 메모리에 저장된 명령어를 읽어들여 수행하는 주체 - 명령어 사이클(Fetch/Execution)을 반복해 프로그램을 실행 (1) ALU(Arithmetic and Logic Unit) - 데이터 처리 - 산술/논리 연산을 수행하는 장치 (2) 제어장치(CU, Control Unit) - 명령어 레지스터에 저장된 명령어를 해석 - 각 컴퓨터 구성요소를 제어할 제어신호를 생성 - 컴퓨터 구성요소는 제어장치의 관리를 받음 (3) 레지스터(Register) - 명령어를 실행하기 위해 필요한 데이터와 상태, 명령어를 저장 (4) 내부 버스(Internal Bus) - CPU 내부의 구성요소 간 데이터 전달과 연결을 위한 경.. 2020. 7. 13.
[알고리즘] 합병정렬(Merge Sort) 합병정렬(Merge Sort) - 분할 정복(Divide and Conquer) 알고리즘 - 주어진 배열을 두 개의 배열로 계속 분할한 뒤, 합치면서 정렬 - 합병 과정에서 O(n), 분할 과정에서 O(logn)으로 O(nlogn)의 시간복잡도를 가짐 - 합병을 위한 배열을 추가로 필요로 함 선택정렬(Selection Sort) 과정 1) 분할 n개의 데이터가 주어졌을 때, 더 이상 분할할 수 없도록 배열을 두 개로 분할한다. 2) 합병 분할과정에서 나누어진 배열을 정렬을 유지한 상태로 합쳐나간다. 3) 합병 과정 자세히보기 위의 두 배열을 합치는 과정을 통해 합병 단계를 자세히 살펴보면 두 배열을 합칠 새로운 공간을 하나 만든다. 두 배열을 첫번째 위치를 표시하는 인덱스 i(left), j(mid + .. 2020. 7. 13.
[알고리즘] 버블정렬(Bubble Sort) 버블정렬(Bubble Sort) - 제자리 정렬(In-placed sorting) 알고리즘 - 인접한 두 개의 데이터의 대소값을 비교해 정렬하는 방식 - 1 cycle 이 후, 가장 큰 값이 맨 뒤에 위치 - 구현이 간단 - 시간 복잡도 : O(n^2) 선택정렬(Selection Sort) 과정 n개의 데이터가 주어졌을 때, 첫번째 인덱스부터 시작해 인접한 두 개의 값을 비교해 값을 비교해가며 정렬을 한다. 한 사이클을 다 돌게 되면 가장 큰 값이 맨 뒤에 위치하게 된다. 두번째 사이클도 첫번째 사이클과 마찬가지로 첫번째 인덱스부터 시작해 인접한 두 값을 비교해 정렬을 한다. 단, 맨 뒤의 값은 이전 사이클에서 이미 가장 큰 값이 위치하기 때문에 n - 1 번째 인덱스까지 정렬을 한다. 즉, i번째 사이.. 2020. 7. 13.
[알고리즘] 삽입정렬(Insertion sort) 삽입정렬(Insertion Sort) - 제자리 정렬(In-placed sorting) 알고리즘 - 카드를 정렬하는 방법과 유사 - 주어진 데이터에서 첫 번째 인덱스부터 시작해 이미 정렬된 부분에서 가장 적절한 위치를 찾아 삽입하는 방식 - 주어진 데이터의 정렬 상태에 따라 O(n)에서 O(n^2)의 시간 복잡도를 가짐 선택정렬(Selection Sort) 과정 n개의 데이터가 주어졌을 때, 첫번째 인덱스부터 가장 적절한 위치를 찾는다. 그림에서 체크 표시가 이미 정렬된 상태의 데이터 중 삽입이 가능한 위치가 된다 첫번째 인덱스에서는 정렬된 상태의 데이터가 없기 때문에 가능한 위치는 맨앞이 된다 두번째 인덱스를 정렬할 때, 이미 첫번째 사이클에서 정렬된 7의 앞과 뒤, 두 곳에 위치할 수 있다. 8은 7.. 2020. 7. 13.
[알고리즘] 선택정렬(Selection sort) 선택정렬(Selection Sort) - 제자리 정렬(In-placed sorting) 알고리즘 - 주어진 배열 중 최소 값을 찾아 맨 앞의 값과 위치를 바꿔가며 정렬 - 1 Cycle을 수행하고 나면 가장 작은 값의 데이터가 맨 앞에 오게 됨 - 구현이 간단 - 시간 복잡도 : O(n^2) 선택정렬(Selection Sort) 과정 정렬해야할 n개의 데이터가 주어졌을 때 최초 모든 데이터에 대해 최소값을 찾아 맨 앞의 인덱스에 위치 시킨다. 한 사이클이 돌아갔을 때, 가장 작은 값이 맨 앞의 인덱스에 위치된 것을 알 수 있다. 다시 두번째 인덱스부터 시작해 가장 작은 값을 찾아 두번째 인덱스에 위치시킨다. 이러한 과정을 n번째 인덱스까지 반복하면 정렬할 수 있다. 소스코드 package algorith.. 2020. 7. 13.