CS 21

[자료구조] map/unordered_map

순서map이란?map의 특unordered_map이란?map과 unordered_map의차이점해싱해시충돌map이란?레드 블랙 트리 또는 이진 탐색 트리 기반으로 데이터를 저장하는 컨테이너 자료구조pair로 이루어진 컨테이너로 key를 기준으로 오름차순 정렬된 상태임map의 특징key와 value 쌍으로 이루어진 트리로 중복을 허용하지 않음.first, second가 pair 객체로 저장되며 first는 key second는 value로 저장됨시간 복잡도는 O(log n)이다.unordered_map이란?해시 테이블을 기반으로 데이터를 저장하는 컨테이너 자료구조정렬되지 않은 상태로 데이터를 저장하며, 데이터를 삽입한 순서와 다를 수 있음.중복된 키를 허용하지 않음시간 복잡도는 O(1)이다.map과 unor..

CS/자료구조 2025.09.12

[CS] RVO

순서RVO란?RVO의 작동방식RVO의 이점NRVORVO란?C++같은 프로그래밍 언어에서 함수가 객체를 반환할 때 발생하는 불필요한 복사 생성자 또는 이동 생성자 호출 작업을 제거하는 컴파일러 최적화 기법임.리턴할 객체를 호출자의 메모리 공간에 직접 생성해버리는 방식.RVO의 작동방식임시 객체 생성 및 복사/이동 생략컴파일러 최적화RVO의 이점성능 향상: 객체 복사 및 이동은 비용이 많이 드는 작업일 수 있는데, RVO는 이러한 작업을 생략하여 프로그램 실행 속도를 높임코드의 투명성: 개발자는 RVO를 직접 구현할 필요 없이 컴파일러에게 맡길 수 있어, 효율적인 코드를 작성하는데 집중할 수 있NRVONamed Return Value Optimization으로 함수 내에서 이름을 가진 지역 객체를 반환할 때..

CS 2025.09.05

[CS] TCP/UDP

순서TCP란?TCP의 특징TCP의 장단점UDP란?UDP의 특징UDP의 장단TCP와 UDP의 차이IPICMP 프로토콜ARP 프로토콜ACKUE에서의 UDPTCP란?서버와 클라이언트간에 데이터를 신뢰성 있게 전달할 수 있도록 하는 프로토콜두 호스트 간의 연결을 설정하고, 데이터 패킷이 손실 없이 올바른 순서대로 전달되도록 보장하며, 네트워크의 혼잡을 제어하는 등 다양한 기능을 수행하여 인터넷 통신의 핵심적인 역할을 함TCP의 특징연결지향: 통신을 시작하기 전에 3-way handshake를 통해 연결을 수립신뢰성 보장: 전송한 데이터가 도착했는지 확인, 손실된 패킷 재전송, 순서 보장순서 보장: 데이터가 바이트 스트림으로 전달됨, 패킷 단위가 아닌 연속된 데이터 흐름으로 처리됨흐름 제어: 송신 속도를 조절하여..

CS 2025.09.03

[CS]뮤텍스와 세마포어

순서뮤텍스란?뮤텍스의 특징세마포어란?세마포어의 특징공통 개념뮤텍스와 세마포어 비교뮤텍스란?Mutual Exclusion한 번에 하나의 스레드만 접근 가능함임계영역을 보호하는 용도이다.뮤텍스의 특징1:1 접근 제어로 동시 접근이 불가함소유권 개념으로 잠근 스레드만 해제 가능함재진입 가능 여부일반 Mutex: 소유자가 아니면 재진입 불가 > 데드락 가능Recursive Mutex: 소유자가 재진입 가능세마포어란?동시 접근 가능한 스레드 수를 카운트로 관리카운트 = 1이면 뮤텍스와 동일하게 동작 > Binary Semaphore카운트 > 1이면 여러 스레드가 동시에 접근 가능 > Counting Semaphore세마포어의 특징여러 스레드 허용 가능 > 임계영역 공유 가능소유권 없음 > unlock은 다른 스레..

CS 2025.08.28

[CS]리틀 엔디안과 빅 엔디안

순서엔디안이란?LSB와 MSB리틀 엔디안이란?빅 엔디안이란?리틀 엔디안과 빅 엔디안 비교실제 사용 예엔디안이란?컴퓨터에서 메모리에 멀티바이트 데이터를 저장할 때 바이트 순서를 결정하는 방LSB와 MSBLSB: 가장 작은 단위의 비트로 값이 가장 작은 자리인 2의 0승 자리이다.MSB:가장 큰 단위의 비트로 값이 가장 큰 자리인 2의 7승 자리이다.리틀 엔디안이란?가장 작은 바이트를 먼저 저장하는 방식메모리 주소 낮은 쪽 > LSB, 높은 쪽 > MSB빅 엔디안이란?가장 큰 바이트를 먼저 저장메모리 주소 낮은쪽 > MSB, 높은 쪽 > LSB리틀 엔디안과 빅 엔디안 비교구분리틀 엔디안빅 엔디안순서LSB > MSBMSB > LSB메모리 주소 낮은 쪽가장 작은 바이트가장 큰 바이트사용 예x86 아키텍처, x8..

CS 2025.08.28

[CS]스택 오버 플로우

순서스택이란?스택 오버플로우란?스택 오버플로우 발생 원리스택 오버플로우 증상스택 오버플로우 예방 방법스택이란?함수 호출과 지역 변수 저장을 위해 프로세스 메모리 내에 할당된 영역임후입선출 구조(LIFO)를 가지고 함수 호출 시 스택 프레임을 생성하며 함수 종료 시 스택 프레임을 제거함스택 오버플로우란?스택이 가득 차서 더 이상 스택 프레임을 할당할 수 없는 상태발생하는 상황무한 재귀 호출너무 큰 지역 변수 배열 선언스택 크기를 초과하는 깊은 함수 호출스택 오버플로우 발생 원리각 함수 호출마다 스택 프레임이 추가됨스택은 운영체제에서 제한된 크기스택 프레임 누적 > 스택 한계 초과 > 스택 오버플로우스택 오버플로우 증상프로그램이 비정상 종료디버거에서 스택 트레이스 확인 가능심한 경우 시스템 레벨 오류 발생 ..

CS 2025.08.28

[CS]busy-waiting

순서busy-waiting이란?busy-waiting의 특징busy-waiting과 대기 방식 비교busy-waiting이란?스레드가 원하는 조건이 될 때까지 CPU를 계속 사용하면서 반복적으로 확인하는 상태루프 안에서 계속 기다리면서 CPU를 소모하는 대기락이 해제되기를 기다리면서 계속 반복 검사할 때 발생busy-waiting의 특징CPU 사용률 증가: 조건을 만족할 때까지 CPU를 계속 점유 => 다른 작업 방해 가능간단하지만 비효율적임: 락을 얻을 때까지 반복 확인만 하므로 CPU가 낭비됨실시간/저지연 환경에서 유용할 수 있음: 짧은 시간 안에 락이 풀릴 것이 확실할 때, 컨텍스트 스위칭 오버헤드 없이 바로 잡기 위해 사용busy-waiting과 대기방식 비교비교 방식CPU 점유컨텍스트 스위칭특징..

CS 2025.08.28

[CS]임계영역과 데드락

순서임계영역이란?데드락이란?데드락의 발생 조건임계영역이란?한 번에 하나의 스레드만 접근해야 하는 코드 영역이다.공유 자원을 여러 스레드가 동시에 수정하면 경쟁 상태가 발생할 수 있음이를 방지하기 위해 임계영역을 설정하고, 스레드가 진입할 때 락을 걸고 나올 때 해제함데드락이란?둘 이상의 스레드가 서로 상대방이 가진 자원을 기다리며 무한 대기 상태에 돌입한 것을 뜻함데드락 상태가 되면 시스템이나 프로그램 일부가 더 이상 진행하지 못함데드락의 발생 조건상호 배제: 자원은 한 번에 하나만 사용 가능점유 및 대기: 자원을 점유한 상태에서 다른 자원을 기다림비선점: 자원 강제 회수가 불가능순환 대기: 스레드가 순환 형태로 기다림요약임계영역은 공유 자원을 안전하게 다루기 위한 필수 도구데드락은 임계영역을 잘못 설계..

CS 2025.08.28

[CS] 컨텍스트 스위칭

순서컨텍스트란?컨텍스트 스위칭이란?컨텍스트 스위칭의 과정컨텍스트 스위칭 주의점컨텍스트 스위칭의 비용프로세스 vs 스레드에서의 컨텍스트 스위칭 차이C++/UE 관점레이스 컨디션컨텍스트란?프로세스나 스레드가 실행되던 상태를 말함레지스터 값프로세스 메모리 상태CPU 상태커널에서 관리하는 PCB 정보위 정보들을 저장해뒀다가 나중에 다시 불러오면 마치 중단된 지점에서 다시 이어서 실행되는 것 처럼 보이게 됨.컨텍스트 스위칭이란?CPU가 실행 중인 프로세스나 스레드의 상태를 저장하고, 다른 프로세스나 스레드의 상태로 교체하는 과정운영체제가 멀티태스킹을 지원하기 위해 필수적으로 수행하는 작업즉, 하나의 CPU에서 여러 프로그램 또는 스레드가 동시에 실행되는 것처럼 보이게 하는 핵심 기술컨텍스트 스위칭 과정실행 중인 ..

CS 2025.08.28

[CS] 캐시의 지역성

순서캐시란?캐시의 계층캐시의 지역성캐시의 지역성이 미치는 영향캐시란?CPU와 메인 메모리(RAM) 사이에 존재하는 작은 고속 메모리이다.CPU는 매우 빠르지만 메인 메모리는 상대적으로 느리기 때문에 이 속도 차이를 줄이기 위해 자주 쓰일 데이터를 캐시에 저장함.캐시는 보통 SRAM 기반으로 되어있음캐시의 계층L1캐시: 가장 빠르고 작으며 CPU 코어 가까이에 있음L2캐시: L1보다 크고 느리나 여전히 CPU 내부에 위치함L3캐시: CPU 코어 전체가 공유하고, 용량이 크며 상대적으로 느림이후에 없으면 RAM에서 가져옴즉 캐시는 CPU > L1 > L2 > L3 > RAM 순서로 데이터를 탐색함캐시의 지역성캐시의 지역성이란 캐시 성능을 높여주는 메모리 접근 패턴이다.시간 지역성: 최근에 접근한 데이터는 가..

CS 2025.08.28