본문 바로가기

CS

(23)
DNS 동작원리 DNS 는 Domain Name System이다. DNS는 사람이 읽을 수 있는 도메인 이름을 머신이 읽을 수 있는 IP주소로 변환한다. 스마트폰이나 노트북부터 대규모 소매 웹 사이트의 컨텐츠를 서비스하는 서버에 이르기까지 인터넷상의 모든 컴퓨터는 숫자를 사용하여 서로를 찾고 통신한다. 이러한 숫자를 IP주소라고 한다. 웹 브라우저를 열고 웹 사이트로 이동할 때는 긴 숫자를 기억해 입력할 필요가 없다. 그 대신, example.com 과 같은 도메인 이름을 입력해도 원하는 웹 사이트로 갈 수 있다. Amazon Route 53 과 같은 DNS 서비스는 전 세계에 배포된 서비스로, example.com 과 같이 사람이 읽을 수 있는 이름을 192.0.2.1과 같은 숫자 IP주소로 변환하여 컴퓨터가 서로 통..
교착상태 ( DeadLock ) OS 🌙 교착 상태란 프로세스들의 집합이 더 이상 진행을 못하고 영구적으로 블록되어 있는 상태로 정의된다. 교착 상태는 시스템 자원에 대한 경쟁 도중에 발생할 수도 있고 프로세스 간 통신 도중에 발생할 수도 있다. 집합 내의 한 프로세스가 특정 사건의 발생을 기다리며 대기하고 있고, 이 사건이 집합 내의 다른 블록된 프로세스에 의해 발생될 수 있을 때 이 프로세스의 집합은 교착상태가 된다. 교착 상태가 영구적인 이유는 기다리던 사건이 결코 발생하지 않기 때문이다. 교착 상태는 두 개 이상의 프로세스들이 서로 충돌되는 자원 요구를 할 때 발생한다. 교착상태( DeadLock 조건 ) 상호 배제 ( mutual exclusion ) 조건 한 순간에 한 프로세스만이 자원을 사용할 수 있다. 즉 한 프로세스에 의해 점유..
뮤텍스(Mutex)와 세마포어(Semaphore)의 차이💁‍♂️ 뮤텍스 ( Mutex ) 뮤텍스란 MUTual EXclusion 으로 우리말로 해석할 경우 ' 상호 배제 ' 라는 뜻이다. Critical Section 을 가진 Thread들의 running time 이 서로 겹치지 않게, 각각 단독으로 실행되게 하는 기술이다. 만약 어느 Thread에서 Critical Section을 실행하고 있으면 다른 Thread들은 그 Critical Section에 접근할 수 없고 앞의 Thread가 Critical Section을 벗어나기를 기다려야 한다! - 공유된 자원의 데이터를 여러 스레드가 접근하는 것을 막는 것. - 다중 프로세스들의 공유 리소스에 대한 접근을 조율하기 위해 Synchronized 또는 lock 을 사용한다. - 뮤텍스 객체를 두 스레드가 동시에 사..
프로세스 vs 스레드💻 프로그램 ( Program ) 어떤 작업을 위해 실행할 수 있는 파일을 의미한다. 프로세스 ( Process ) 컴퓨터에서 연속적으로 실행되고 있는 컴퓨터 프로그램을 의미한다. - 메모리에 올라와 실행되고 있는 프로그램의 인스턴스 ( 독립적인 개체 ) - 운영체제로부터 시스템 자원을 할당받는 작업의 단위 - 동적인 개념으로는 실행된 프로그램을 의미한다. 할당 받는 시스템 자원 - CPU 시간 - 운영되기 위해 필요한 주소 공간 - Code, Data, Stack, Heap 의 구조로 되어있는 독립된 메모리 영역 특징 - 프로세스는 각각 독립된 메모리 영역 ( Code, Data, Stack, Heap의 구조) 를 할당받는다. - 기본적으로 프로세스는 최소 1개의 스레드(메인 스레드)를 가지고 있다. - ..
Fisher's Linear Discriminant Analysis Fisher's linear discriminant 는 데이터를 여러 변수들의 선형결합으로 표현하였을 때, 서로 다른 그룹을 잘 구분할 수 있게 해 주는 coefficient 를 찾는 방법이다. d차원 상의 데이터 집합을 선형 결합으로 표현하였을 때, 속한 클래스의 구분이 가장 용이한 1차원 공간으로 프로젝션하는 방법으로 데이터를 분석하는 기법이다. 1차원으로 프로젝션해야 하는 특성상 복잡하게 분산 된 데이터에 대한 구분이 용이하지 않은 단점이 있다.
Index ( 인덱스 ) RDBMS에서 검색 속도를 높이기 위한 기술 데이터베이스에서 조회 및 검색을 더 빠르게 할 수 있는 방법/기술 혹은 이에 쓰이는 자료구조 자체를 의미하기도 한다. 자주 조회되는 Column 에 대한 Index Table 을 따로 만들어 SELECT 문이 들어왔을 때, Index 테이블에 있는 값들로 결과 값을 조회해 온다. 그래서 Index를 잘 사용한다면 "검색" 연산을 실행했을 때, 성능을 올릴 수 있게 된다. 테이블의 칼럼을 색인화한다. ( 마치 두꺼운 책의 목차와 같다고 생각하면 편하다. ) 데이터베이스 안의 레코드를 처음부터 풀스캔하지 않고, B+ Tree로 구성된 구조에서 Index 파일 검색으로 속도를 향상시키는 기술 B+ 트리 알고리즘 리프 노드에는 실제 데이터가 저장된다. 리프노드까지의 ..
Transaction ( 트랜잭션 ) 데이터베이스의 상태를 변화시키기 위해 수행하는 작업 단위 상태 변화란 SQL질의어를 통해 DB에 접근하는 것을 말한다. ( SELECT, INSERT, DELETE, UPDATE ) 작업 단위란 많은 SQL 명령문들을 사람이 정하는 기준에 따라 정하는 것이다. 작업단위를 정의하는 것. 더보기 예시) 사용자 A가 사용자 B에게 만원을 송금한다. 이때 DB 작업 1. 사용자 A의 계좌에서 만원을 차감한다 : UPDATE 문을 사용해 사용자 A의 잔고를 변경 2. 사용자 B의 계좌에 만원을 추가한다 : UPDATE 문을 사용해 사용자 B의 잔고를 변경 현재 작업 단위 : 출금 UPDATE문 + 입금 UPDATE문 → 이를 통틀어 하나의 트랜잭션이라고 한다. - 위 두 쿼리문 모두 성공적으로 완료되어야만 "하나..
SQL vs NoSQL SQL ( 관계형 DB ) SQL을 사용하면 RDBMS에서 데이터를 저장, 수정, 삭제 및 검색 할 수 있음. 관계형 데이터베이스에는 핵심적인 두 가지 특징이 있다. 1. 데이터는 정해진 데이터 스키마에 따라 테이블에 저장된다. 2. 데이터는 관계를 통해 여러 테이블에 분산된다. 데이터는 테이블에 레코드로 저장되는데, 각 테이블마다 명확하게 정의된 구조가 있다. 해당 구조는 필드의 이름과 데이터 유형으로 정의된다. 따라서, 스키마를 준수하지 않은 레코드는 테이블에 추가할 수 없다. 즉 스키마를 수정하지 않는 이상은 정해진 구조에 맞는 레코드만 추가가 가능한 것이 특징이다. 하나의 테이블에서 중복 없이 하나의 데이터만을 관리하기 때문에 다른 테이블에서 부정확한 데이터를 다룰 위험이 없어지는 장점이 있다. ..