목록CS (4)
s-nova 님의 블로그
멀티스레드 프로그래밍을 이해하려면 먼저 프로그램, 프로세스, 스레드, 코어가 각각 무엇인지,그리고 이들이 어떻게 맞물려 돌아가는지를 정확히 알아야 합니다. 1. 핵심 개념 정리 개념설명프로그램$^{\text{Program}}$저장장치에 있는 실행 가능한 파일 또는 명령들의 묶음. 아직 실행되지 않은 정적인 상태.프로세스$^{\text{Process}}$프로그램을 실행하면 메모리에 올라가 실제로 실행 중인 인스턴스가 된 상태. 하나의 프로그램을 여러 번 실행하면 각각 독립된 프로세스가 생성된다.스레드$^{\text{Thread}}$프로세스 안에서 실제로 CPU를 타고 도는 실행 흐름의 단위. 하나의 프로세스는 하나 이상의 스레드를 가진다.코어$^{\text{Core}}$CPU 안에 있는 연산 장치. 코어..
네트워크 프로그래밍을 시작하면 가장 먼저 만나는 질문이 있습니다. "TCP를 쓸까, UDP를 쓸까?" 두 프로토콜의 특징과 차이점을 한눈에 정리해보겠습니다. 1. 한 줄 요약 TCP$^{\text{Transmission Control Protocol}}$UDP$^{\text{User Datagram Protocol}}$안전하고 꼼꼼한 "트럭 배송"$($전화 통화처럼 연결 후 대화$)$빠르지만 분실 책임 없는 "총알 배송"$($편지처럼 그냥 보내고 끝$)$ 2. 연결 지향성TCP와 UDP의 가장 근본적인 차이는 연결 여부입니다. TCP $($연결형 서비스$)$UDP $($비연결형 서비스$)$전송을 위한 논리적 경로를 먼저 수립한 뒤 데이터를 보냄$($3-way handshake: SYN → SYN-AC..
프로그램이 실행되면 운영체제는 프로세스마다 고유한 메모리 공간을 할당합니다. 이 공간은 크게 네 구역으로 나뉘며, 각각 코드$^{\text{Code}}$, 데이터$^{\text{Data}}$, 스택$^{\text{Stack}}$, 힙$^{\text{Heap}}$ 영역이라고 합니다. 1. 전체 구조 개요 코드$^{\text{Code}}$: 실행할 명령어 $($기계어$)$ 저장 — 위 이미지의 TEXT 영역에 해당데이터$^{\text{Data}}$: 전역/정적 변수, 상수 등 — 위 이미지의 BSS + DATA + CONST + rodata에 해당힙$^{\text{Heap}}$: 동적 메모리 $($new, malloc$)$스택$^{\text{Stack}}$: 함수 호출과 지역 변수 📌 BSS란? BSS$..
1. CPU와 RAM의 역할본격적인 이야기 전에 무대를 먼저 정리하고 가겠습니다. CPU$^{\text{Central Processing Unit}}$: 계산을 담당하는 프로세서입니다. 덧셈, 비교, 분기 등 모든 연산을 처리합니다.RAM$^{\text{Random Access Memory}}$: 데이터를 임시로 저장하는 주기억장치입니다. 프로그램이 실행되는 동안 코드, 변수, 함수 호출 정보 등이 여기에 올라옵니다. CPU는 연산 속도가 매우 빠르지만 저장 공간이 작은 레지스터$^{\text{Register}}$를 내부에 가지고 있습니다. 계산할 데이터는 RAM에서 레지스터로 가져온 뒤 처리하고, 결과를 다시 RAM에 쓰는 방식으로 동작합니다. 그리고 이 RAM 안에 여러 영역이 나뉘어 있는데, 그 중..