Computer/CS
-
이중화(Duplication, Duplex)Computer/CS 2024. 11. 22. 23:33
이중화이중화는 말 그대로 장비를 두개 놓는것이다.장비의 성능을 끌어 올리거나(병렬 수행), 서비스 지속성을 확보하기 위해(A 장비 down시 B장비로 운용 등)일반적으로 시스템의 결함내성을 위해서는 시스템의 중요 요소를 중복시켜 하나의 요소에 오류가 발생하더라도 중복된 다른 요소가 이를 대체하여 서비스를 계속 유지시키는 이중화 방식을 채택이중화 방식은 어느 한 쪽만이 동작하다가 장애 발생 시 다른 한 쪽이 동작을 이어감중요도가 낮은 트래픽이 흐르는 장비는 이중화로 괜찮지만, 중요한 데이터를 저장해야 하는 서버나 스토리지라면 삼중화, 사중화 시키기도한다.FailOver (절체)이중화에서 서비스 지속성을 확보하기 위해 평소에 사용하는 서버와 그 서버의 클론 서버를 가지고 있다가 사용 서버가 장애로 사용이 어..
-
RDMA (Remote Direct Memory Access)Computer/CS 2024. 6. 20. 10:33
RDMA(원격 직접 메모리 액세스, Remote Direct Memory Access)는 네트워크 상의 한 컴퓨터에서 다른 컴퓨터의 메모리에 직접 접근할 수 있게 해주는 기술입니다. 이 기술은 CPU의 개입 없이 네트워크 데이터 전송을 수행하므로, 낮은 지연 시간과 높은 대역폭을 제공합니다. RDMA는 주로 고성능 컴퓨팅(HPC), 데이터 센터, 클라우드 컴퓨팅 환경에서 사용됩니다.RDMA의 주요 특징낮은 지연 시간(Latency): CPU의 중재 없이 메모리 간의 직접 전송이 가능하므로 지연 시간이 매우 짧습니다.높은 대역폭(Bandwidth): 데이터 전송이 빠르고 효율적입니다.낮은 CPU 사용률: CPU 개입이 최소화되어 다른 작업을 처리할 수 있는 여유가 생깁니다.제로-카피(Zero-Copy): ..
-
프로세스Computer/CS 2021. 10. 9. 23:55
프로세스 현재 실행 중인 프로그램 I/O-bound 프로세스 : 계산보다 입출력 중심의 프로세스 CPU-bound 프로세스 : 입출력보다 계산을 많이하는 프로세스 - 프로세스 메모리 구조 : 리눅스 기준으로 1GB Kernel 영역, 3GB User 영역 ① text(code) 영역 : 코드 자체를 구성하는 메모리 영역으로 Hex파일이나 BIN파일 메모리 : 프로그램 명령이 위치하는 곳으로 기계어로 제어되는 메모리 영역 ② data 영역 : 전역변수(global), 정적변수(static), 배열(array), 구조체(structure) 등이 저장된다. : 초기화 된 데이터는 data 영역에 저장되고, 초기화 되지 않은 데이터는 BSS (Block Stated Symbol) 영역에 저장된다. : 프로그램이..
-
Multi Process와 Multi ThreadComputer/CS 2021. 10. 7. 01:43
프로세스와 쓰레드 프로세스는 메모리에서 실행되고 있는 프로그램의 인스턴스로 독립적인 개체이다. 운영체제로부터 시스템 자원을 할당 받는 작업의 단위이며 실행된 프로그램을 의미한다. 프로세스들은 각각 독립된 메모리영역을 할당 받으며 기본적으로 1개의 스레드를 가지고 있다. 스레드는 프로세스 내에서 실행되는 여러 흐름의 단위이며 프로세스가 할당 받은 자원을 이용하는 실행 단위 프로세스 내에서 Stack만 따로 할당받고 나머지 영역은 공유한다. 같은 프로세스 내에 쓰레드는 Code, Data, Heap과 같은 공간을 공유하기 때문에 다른 스레드에 접근할 수 있지만, 다른 프로세스에 존재하는 메모리에는 직접 접근할 수 없다. 멀티 프로세스(Multi Process) 개념 두개 이상 다수의 프로세서(CPU)가 협력..
-
누적합의 확장 IMOSComputer/CS 2021. 9. 30. 01:11
IMOS는 누적합의 개념으로 특정 구간에서 가장 많이 중첩되는 영역을 구할 수 있는 방법 중 하나이다. 예를 들어 가게에 Q명의 손님이 방문한다. 가게는 시간 0부터 T까지 운영되며, 각각의 손님 i의 방문 시각(si)과 퇴장 시각(ei)이 입력으로 주어진다. 가게 운영 중 손님이 가장 많이 방문했을 때의 손님 수는 몇 명인가? 이런 문제가 있다면 입력을 위와 같은 그림으로 나타낼 수 있을 것이다. 이 때 가장 단순하게 구현한다면 for문을 si부터 ei까지 돌리면서 해당 배열의 값을 +1 해주는 것이겠지만 이 경우는 쿼리 하나의 처리 시간이 T 쿼리의 갯수를 Q라고 했을 때 시간 복잡도는 Q(TQ)가 되어서 쿼리가 많아지고 시간이 길어지는 경우에는 풀 수 없게된다. 이 때 사용하는 IMOS는 입장과 퇴..
-
Hashing - Chaining, Open AddressingComputer/CS 2021. 9. 27. 04:50
# 해싱이란? 대부분의 탐색 방법들은 탐색 키를 저장된 키 값과 반복적으로 비교하면서 탐색을 원하는 항목에 접근한다. 반면 해싱은 키 값에 직접 산술적인 연산을 적용하여 항목이 저장되어 있는 테이블의 주소를 계산하여 항목에 접근한다. 이렇게 키 값의 연산에 의해 직접 접근이 가능한 구조를 해시 테이블(hash table)이라 부르고, 해시 테이블을 이용한 탐색을 해싱(hashing)이라 한다. 키들의 비교에 의한 탐색 방법은 정렬이 안 되어 있다면 O(n)이고 정렬이 되어 있다면 O(log_2n)이다. 정렬되어 있는 경우의 시간 복잡도가 O(log_2n)인 건 이진 탐색 알고리즘 혹은 이진 탐색 트리의 탐색 알고리즘의 시간복잡도를 생각하면 된다. 잘 모르겠다면 이진 탐색 또는 이진 탐색 트리 알고리즘 게..
-
HTTP 상태 코드Computer/CS 2021. 9. 27. 04:24
https://developer.mozilla.org/ko/docs/Web/HTTP/Status HTTP 상태 코드 - HTTP | MDN HTTP 응답 상태 코드는 특정 HTTP 요청이 성공적으로 완료되었는지 알려줍니다. 응답은 5개의 그룹으로 나누어집니다: 정보를 제공하는 응답, 성공적인 응답, 리다이렉트, 클라이언트 에러, 그리고 developer.mozilla.org HTTP 응답 상태 코드에 대해서 자세하게 알 필요는 없지만 기본적인 내용은 알고 있는 것이 좋을 것 같다. 특정 HTTP 요청이 성공적으로 완료되었는지 알려주고 응답은 5개의 그룹으로 나누어진다. 정보 제공, 성공, 리다이렉트, 클라이언트 에러, 그리고 서버 에러를 나타낸다. 자세한 내용은 MDN을 이용해서 찾아볼 수 있기 때문에 ..
-
로그인Computer/CS 2021. 9. 9. 00:29
로그인 방식 관리 기본적인 HTTP는 stateless의 성질을 가지고 있기 때문에 로그인을 구현하기 위해서는 모든 요청에 대하여 회원 정보를 같이 동봉하여 보내야한다. 이러한 문제점을 해결하기 위해서 로그인에 대한 정보(유저 ID, Password 등)를 Backend 혹은 Frontend 단에 저장하는 방식 회원 정보 조희 및 대조 아이디, 비밀번호 조회 (비밀번호의 경우 암호화 되어있기 때문에 암호화 된 데이터를 비교) 아이디를 조회해서 유저 정보를 가져오고 비밀번호 대조까지 일치하면 로그인을 위한 준비 완료 HTTP는 무상태 프로토콜이기 때문에 유저에 대한 정보를 저장하는 관리 방법이 필요하다. Session, Cookie Session 정의 - 연결 상태를 의미하는 보안적인 다이얼로그 및 시간대..