본문 바로가기

CS

(15)
[CS] 조인의 종류와 원리 조인(Join) 두 개 이상의 테이블을 묶어 하나의 결과물을 만드는 것 MySQL에서는 JOIN, MongoDB에서는 lookup이라는 쿼리로 처리할 수 있다. 하지만 MongoDB의 lookup은 성능이 떨어지므로, 여러 테이블을 조인하는 작업이 많을 경우, 관계형 데이터베이스를 써야 한다. 두 테이블의 조인을 위해서는 기본키와 외래키 관계로 맺어져야 하고, 이를 일대다 관계라고 한다. 조인의 종류 INNER JOIN, (LEFT, RIGHT, FULL) OUTER JOIN, CROSS JOIN, SELF JOIN 이 있다. INNER JOIN(내부 조인)은 두 테이블을 조인할 때, 두 테이블에 모두 지정한 열의 데이터가 있어야 한다. OUTER JOIN(외부 조인)은 두 테이블을 조인할 때, 1개의 ..
[CS] 프로세스와 스레드 프로그램(program) 윈도우의 *.exe 파일이나 Mac의 *.dmg 파일과 같은 컴퓨터에서 실행 할 수 있는 파일 프로세스(process) 컴퓨터에서 실행되고 있는 프로그램 운영체제로부터 자원을 할당받은 작업의 단위 스레드(thread) 프로세스 내 작업의 흐름 프로세스가 할당받은 자원을 이용하는 실행 흐름의 단위 프로그램이 메모리에 올라가면 프로세스가 되는 인스턴스화가 일어나고, 이후 운영체제의 CPU 스케줄러에 따라 CPU가 프로세스를 실행한다. 프로세스 상태 생성 상태(create) 프로세스가 생성되고 아직 준비가 되지 않은 상태로 이때 PCB가 할당된다. 대기 상태(ready) 메모리 공간이 충분하면 메모리를 할당받고, 아니면 아닌 상태로 대기하고 있으며, CPU 스케줄러로부터 CPU 소유권..
[CS] 네트워크 기기 네트워크는 여러 개의 네트워크 기기를 기반으로 구축된다. 네트워크 기기는 계층별로 처리 범위를 나눌 수 있다. 상위 계층을 처리하는 기기는 하위 계층을 처리할 수 있지만, 그 반대는 불가능하다. 물리계층 전송에 필요한 두 장치 간 실제 접속과 절단 등 기계적, 전기적, 기능적, 절차적 특성에 대한 규칙을 정의한다. 디지털 신호를 전기 신호로 전송한다. 장비 설명 허브 - 여러 대의 컴퓨터를 연결하여 네트워크로 보내거나, 하나의 네트워크로 수신된 정보를 여러 대의 컴퓨터로 송신하기 위한 장비 - L1 스위치(더미 허브)라고도 하며, 자신에게 꽂혀있는 모든 장비에 데이터를 전부 전달한다. 리피터 - 전송되는 신호가 원래 형태와 다르게 왜곡되거나 약해질 경우, 원래 신호 형태로 증폭하여 다시 전송하는 장비 -..
[CS] 네트워크 분류 / 네트워크 성능 분석 명령어 / 네트워크 프로토콜 표준화 네트워크 분류 네트워크는 규모에 따라 근거리 통신망 LAN, 도시권 통신망 MAN, 광역 통신망 WAN 등으로 구분된다. LAN (Local Area Network) 근거리 통신망은 지리적으로 한정된 범위 안에 분산된 컴퓨터 및 각종 기기를 통신 회선으로 연결한 네트워크이다. 가정, 사무실, 학교 등의 비교적 좁은 지역을 커버하며, 고속 데이터 전송이 가능하다. 보통 이더넷(Ethernet)이나 와이파이(Wi-Fi)와 같은 기술을 이용해서 구축한다. 통신회선을 이용해 공간을 어떻게 구성하느냐에 따라 버스형, 스타형, 링형, 메시형, 트리형으로 구분된다. 장점 데이터 전송 속도가 빠르고, 데이터의 손실률이 낮다. 네트워크 구성이 비교적 간단하며, 관리가 용이하다. 네트워크 내의 자원을 여러 사용자가 공유할..
[CS] OSI 7계층 - 세션, 표현, 응용 계층 5계층 - 세션 계층 (Session Layer) 통신 세션*을 구성하는 계층으로, 네트워크 상 양쪽 연결을 관리하고 연결을 지속시켜주는 계층이다. 포트(Port)번호를 기반으로 연결한다. 응용 프로그램 간 통신을 하기 위한 세션을 OS를 통해 확립, 유지, 중단하는 작업을 수행한다. 전송 중단시 데이터를 재전송하거나 연결을 복구한다. 동기화를 하여 송수신 중 오류가 발생하면, 동기점 이후부터 재전송한다. 동시송수신(Duplex, 전화), 반이중(Half-Duplex, 무전기), 전이중(Full-Duplex, TV) 방식의 통신과 함께 체크 포인팅과 종료, 다시 시작 과정 등을 수행한다. 규칙(프로토콜) : NetBIOS, SSH, TLS 단위 : 데이터 * 세션 : 클라이언트와 웹 서버 간 네트워크 연..
[CS] 가상메모리 스와핑 메모리에서 사용되지 않는 프로세스들을 보조기억장치로 내보내고, 실행할 프로세스를 메모리에 적재하여 실행하는 메모리 관리 기법 메모리 할당 비어 있는 메모리 공간에 프로세스를 연속적으로 할당하는 방식 최초 적합 메모리 내의 빈 공간을 순서대로 검색하다가 적재할 수 있는 공간을 발견하면 그 공간에 프로세스를 배치하는 방식 방식이므로 검색을 최소화할 수 있고 결과적으로 빠른 할당이 가능 최적 적합 운영체제가 빈 공간을 모두 검색해 본 후, 프로세스가 적재될 수 있는 공간 중 가장 작은 공간에 프로세스를 배치하는 방식 최악 적합 운영체제가 빈 공간을 모두 검색해 본 후, 프로세스가 적재될 수 있는 공간 중 가장 큰 공간에 프로세스를 배치하는 방식 외부 단편화 메모리에 남아있는 공간이 요청한 메모리 공간보..
[CS] DBMS 기능과 종류 DBMS 기능 DBMS 요구사항 DB를 효율적이고 직관적이고 안전하게 사용할 수 있게 해주는 기능 효율적으로, 동일한 데이터가 저장되는 것을 방지하는 중복 제어기능 무결성 제약 조건을 정의/검사하는 기능 직관적으로, 서로 다른 데이터 간의 관계를 표현해주는 관계 표현 편리한 인터페이스 제공 안전하게, 접근하는 사용자마다 다른 권한을 주는 접근통제 기능 데이터가 잘못 수정/삭제 되었을때 백업하는 기능 Transaction(트랜잭션) 데이터베이스의 상태를 변환시키는 하나의 논리적 기능을 수행하기 위한 작업의 단위 트랜잭션의 특성 원자성(Atomicity) : 트랜잭션의 연산은 데이터베이스에 모두 반영되도록 완료되든지 아니면 전혀 반영되지 않도록 복구되어야 한다. 또한 트랜잭션 내의 모든 명령은 반드시 완벽히..
[CS] 데이터베이스(DB 구조와 유형) 데이터베이스(DB) 조직체의 응용 시스템들이 공유해서 사용하는 운영 데이터들이 구조적으로 통합된 것 특징 데이터의 대규모 저장소로 여러 사용자에 의해 동시에 사용된다. 모든 데이터가 중복을 최소화하면서 통합된다. 운영 데이터 뿐 아니라 그 데이터에 관한 설명까지 포함한다. (설명 : 데이터베이스 스키마 or 메타데이터) 프로그램과 데이터 간 독립성이 제공된다. (프로그램 메모리가 아닌 개별적인 저장공간에 저장되기 때문) 효율적으로 접근이 가능하고 질의를 할 수 있다. (쿼리) 데이터베이스 관리 시스템(DBMS : Database Management System) 데이터베이스를 정의하고, 질의어를 지원하고, 리포트를 생성하는 등 작업을 수행하는 소프트웨어 DBMS의 기능 사용자가 새로운 데이터베이스를 생성..
[CS] B-Tree & B+Tree B-Tree 이진 트리와는 다르게 하나의 노드에 많은 정보를 가지거나, 두 개 이상의 자식을 가질 수 있다. 하나의 노드에 여러 정보를 담게 되고, 여러 자식을 가질 수 있게 되면서 차수라는 개념이 등장함. 규칙에 맞게 정해진 범위만큼의 키가 하나의 노드에 포함될 수 있다. B-Tree는 균형이진트리의 연속이라 자연히 균형을 유지한다. 아무리 최악의 경우라도 O(logN)의 검색 성능을 보여준다. 규칙 노드의 자료수가 N이면, 자식 수는 N+1이어야 함 각 노드의 자료는 정렬된 상태여야함 루트 노드는 적어도 2개 이상의 자식을 가져야함 루트 노드를 제외한 모든 노드는 적어도 M/2개의 자료를 가지고 있어야함 외부 노드로 가는 경로의 길이는 모두 같음. 입력 자료는 중복 될 수 없음 하나의 노드에 여러 자..
[CS] 트라이(trie) 트라이(trie) 문자열의 자동 완성 기능과 같이 문자열을 저장하고 탐색하는데 유용한 자료구조 각 Trie의 노드는 형태의 Map을 가지고 있다. 여기서 Key는 하나의 알파벳이 되고, Value는 Key에 해당하는 자식 노드가 된다. 루트 노드는 비어있고, 자식 노드를 가지고 있다. 예를 들어, DOG, CAR, CAT, COW라는 단어로 이루어진 Trie를 도식화하면 아래와 같다. 만약, 'CAT'이라는 문자열을 찾으려면, 루트 노드에서부터 차례대로 root -> [C] -> [A] -> [T] 를 탐색한다. 정렬된 트리 구조이다. (데이터에 따라 이진트리일 때도 있다) Trie는 자식노드를 맵 형태로 가지고 있다. 루트를 제외한 노드의 자손들은 해당 노드와 공통 접두어를 가진다. 루트 노드는 빈 문..
[CS] 해시(Hash) 해시(Hash) Array로 되어있는데 index값을 몰라?!?!? 그럼 key값을 해시함수로 돌려서 index를 찾아내! (무조건 정수값) 임의의 길이를 가진 데이터를 고정된 길이를 가진 데이터로 매핑한 것 원본 데이터를 키(Key), 매핑 과정을 해싱(Hashing), 결과물로 나온 데이터를 해쉬값(Hash value), 데이터를 해싱하는 함수를 해시함수(Hash function) 라고 한다. 예를 들어 우리가 (Key, Value)가 ("John Smith", "521-1234")인 데이터를 크기가 16인 해시 테이블에 저장한다고 하자. 그러면 먼저 index = hash_function("John Smith") % 16 연산을 통해 index 값을 계산한다. 그리고 array[index] = "5..
[CS] 중앙처리장치 (CPU) 중앙처리장치 연산장치 (산술논리연산장치) 산술연산과 논리연산을 수행한다. 연산에 필요한 데이터를 레지스터에서 가져오고, 연산 결과를 다시 레지스터로 전달한다. 제어장치 명령어를 순서대로 실행할 수 있도록 제어하는 장치 주기억장치에서 프로그램 명령어를 꺼내 해독하고, 그 결과에 따라 명령어 실행에 필요한 제어 신호를 기억장치, 연산장치, 입출력장치로 보낸다. 또한 이들 장치가 보낸 신호를 받아 다음에 수행할 동작을 결정한다. 레지스터 고속 기억장치 명령어 주소, 코드, 연산에 필요한 데이터, 연산 결과 등을 임시로 저장한다. 용도에 따라 범용 레지스터, 특수목적 레지스터로 구분된다. 중앙처리장치 종류에 따라 사용할 수 있는 레지스터 개수와 크기가 다르다. 범용 레지스터는 연산에 필요한 데이터나 연산 결과를..
[CS] 컴퓨터 구조 (Computer Architecture) 컴퓨터는 하드웨어와 소프트웨어로 나뉜다. 하드웨어 : 중앙처리장치(CPU), 기억장치(RAM, HDD), 입출력장치(마우스, 프린터) 소프트웨어 : 시스템 소프트웨어(운영체제, 컴파일러), 응용 소프트웨어(워드프로세서, 스프레드시트) 하드웨어 하드웨어는 중앙처리장치, 기억장치, 입출력장치로 구성되며, 시스템 버스로 연결되어 있다. 시스템 버스는 데이터와 명령 제어 신호를 각 장치로 실어나르는 역할을 한다. 중앙처리장치 주기억장치에서 프로그램 명령어와 데이터를 읽어와 처리하고, 명령어의 수행 순서를 제어한다. 중앙처리장치는 비교와 연산을 담당하는 산술논리연산장치(ALU)와 명령어의 해석과 실행을 담당하는 제어장치, 속도가 빠른 데이터 기억장소인 레지스터로 구성되어 있다. 소형 컴퓨터에서는 CPU를 마이크로..
[CS] 프로세스 생명주기와 프로세스 메모리 프로그램이 저장되어 있는 곳 : 보조기억장치 프로그램이 로딩되는 곳 : 주기억장치 프로그램을 실행해주는 주체 : 프로세스 작업을 처리해주는 주체 : 쓰레드 프로세스 생명주기 프로세스 상태 신규 : 프로세스가 이제 막 메인메모리에 올라온 상태로 아직 실행하는 것은 불가능함. 수용(admit)이 되어야 준비단계로 넘어감. 준비 : 변수 초기화 등 기초 준비작업이 모두 끝나 실행할 수 있는 상태. 발송(dispatch)되어야 수행상태가 됨. [준비상태가 되는 경우] 신규 프로세스가 수용됨 대기 프로세스의 입출력/이벤트가 완료됨 수행 프로세스가 중단됨 수행 : CPU가 실제로 프로세스를 수행하고 있는 상태. 선점 스케쥴링에 의해 중단되면 -> 준비 (ex. CPU 과부하로 판단되는 경우) 입출력/이벤트가 필요하..
[CS] CPU와 메모리 CPU 심화 스케쥴링(Scheduling) 제어장치(CU)의 핵심 기능 프로세스를 어떻게 CPU를 할당시켜서 작업을 처리하게 할까? CPU 공통 배정조건 오버헤드 ↓ : 프로세스가 필요한 자원보다 많이 사용하지 않도록 사용률 ↑ : 프로세스가 최대한 자원을 많이 받고 빨리 처리하도록 기아 현상 ↓ : 프로세스가 자원 할당을 못받고 대기하지 않도록 목표에 따른 배정 조건 배치 시스템 : 가능하면 많은 일을 수행. 시간(time) 보단 처리량(throughout)이 중요 대화형 시스템 : 빠른 응답 시간. 적은 대기 시간이 중요 실시간 시스템 : 실시간(time) 즉, 최소 응답시간(dead line) 이 중요! 스케쥴링의 단위 CPU Burst : 프로세스 사용중 연속적으로 CPU를 사용하는 구간. 실제 ..