본문 바로가기

전체 글57

Race Condition Race Condition 발생 조건 1. 멀티프로세스/멀티스레드 환경 2. 두개 이상의 프로세스 또는 스레드가 같은 data에 접근할 때 Race Condition 이 발생하면 생기는 문제들 1. Mutual exclusion - 두 개 이상의 프로세스 또는 스레드가 공용 데이터에 동시에 접근을 하는 것을 막아야 함 2. Deadlock - 프로세스 또는 스레드가 각자 필요한 자원에 접근을 시도 할 때 서로 상대방의 작업이 끝나기만을 기다리는 상태 3. Starvation - Deadlock 상태가 계속 지속되어 프로세스나 스레드가 더 이상 작업을 영구적으로 진행할 수 없는 상태 Race Condition 해결 방법 1. Mutex - 공유 자원에 lock을 걸어 하나의 프로세스나 스레드만 접근 가능 .. 2023. 3. 24.
프로세스 vs 스레드, 멀티프로세스 vs 멀티스레드 프로세스(Process) 프로세스는 실행 중인 프로그램으로 디스크로부터 메모리에 적재되어 CPU 의 할당을 받을 수 있는 것을 말한다. 운영체제로부터 주소 공간, 파일, 메모리 등을 할당받으며 이것들을 총칭하여 프로세스라고 한다. 프로세스는 함수의 매개변수, 복귀 주소와 로컬 변수와 같은 임시 자료를 갖는 프로세스 스택과 전역 변수들을 수록하는 데이터 섹션을 포함한다. 또한 프로세스는 프로세스 실행 중에 동적으로 할당되는 메모리인 Heap을 포함한다. 프로세스 제어 블록(Process Control Block, PCB) PCB 는 특정 프로세스에 대한 중요한 정보를 저장 하고 있는 운영체제의 자료구조이다. 운영체제는 프로세스를 관리하기 위해 프로세스의 생성과 동시에 고유한 PCB 를 생성 한다. 프로세스.. 2023. 3. 24.
Blocking vs Non-Blocking & Sync vs Async Blocking, Non-Blocking 과 Sync, Async 의 차이점은 '관점'을 어디에 두느냐 이다. Blocking, Non-Blocking은 제어의 관점 Sync, Async 은 결과의 관점 Blocking A 함수가 B 함수를 호출 할 때, B 함수가 자신의 작업이 종료되기 전까지 A 함수에게 제어권을 돌려주지 않는 것 Non-blocking A 함수가 B 함수를 호출 할 때, B 함수가 제어권을 바로 A 함수에게 넘겨주면서, A 함수가 다른 일을 할 수 있도록 하는 것. Synchronous A 함수가 B 함수를 호출 할 때, B 함수의 결과를 A 함수가 처리하는 것. Asynchronous A 함수가 B 함수를 호출 할 때, B 함수의 결과를 B 함수가 처리하는 것. Sync - Blo.. 2023. 3. 24.
vscode - code snippet 사용법 (C++) mac 기준 1. cmd + shift + p 입력 후 Snippets 검색 2. cpp.json 선택 3. cpp.json 편집 { "c++ codingtest template": { "prefix": "cpp-start", "body": [ "#include ", "", "using namespace std;", "typedef long long ll;", "", "int main(void) {", " ios_base::sync_with_stdio(0);", " cin.tie(0);", " cout.tie(NULL);", " ", " return 0;", "}" ], "description": "c++ codingtest template" }, "dx / dy": { "prefix": "dxdy", .. 2023. 3. 24.
C++ 문자열 Split 함수 #include using namespace std; vector split(string input, string delimiter) { vector ret; long long pos = 0; string token = ""; while ((pos = input.find(delimiter)) != string::npos) { token = input.substr(0, pos); ret.push_back(token); input.erase(0, pos + delimiter.length()); } ret.push_back(input); return ret; } 예시 #include using namespace std; typedef long long ll; vector split(string input, s.. 2023. 3. 24.
주소창에 www.google.com 을 입력하면 생기는 일 주소창에 https://www.google.com/search?q=seoul&hl=ko을 입력하면 생기는 일 1. DNS 조회 https://www.google.com:443/search?q=seoul&hl=ko 포트번호는 생략 가능 DNS 서버로부터 www.google.com 의 IP주소를 받음 Recursive Query 는 Root DNS 서버에 너무 큰 부담을 준다는 단점이 있음 - Local DNS 서버 가입되어 있는 각 통신사의 기지국 DNS서버가 등록됨 ex) KT DNS, SKT DNS, LG DNS.. 도메인과 IP주소를 캐싱하여 가지고 있음 - Root DNS 서버 ICANN(국제인터넷주소관리기구)이 직접 관리하는 DNS서버로 TLD DNS 서버들의 IP주소를 저장하고 안내 하는 역할.. 2023. 3. 23.