프로세스 vs 스레드
프로세스는 독립된 메모리 공간을 가지며, 운영체제에서 실행되는 프로그램 단위.
스레드는 프로세스 내부에서 실행되는 흐름 단위로, 메모리(코드, 힙)를 공유
1.
프로세스: 메모리 공간을 독립적으로 가지는 실행 단위
2.
스레드: 프로세스 내 실행 단위, 메모리 공유 (멀티스레딩 효율 상승)
Context Switching
•
CPU가 작업을 전환할 때의 비용 → 과도한 스레드 생성 주의
•
Context Switching은 리소스를 많이 소모하므로, 불필요한 스레드 생성은 성능 저하로 떨어질 수 있음
◦
키워드: 스레드 풀, 스케줄링, 전환 비용
CPU 스케쥴링 알고리즘
•
OS는 CPU 사용을 공정하게 분배하기 위해 다양한 스케쥴링 방식을 많이 사용
◦
ex) Round Robin, Priority Scheduling
•
서버 성능 분석 시, 어떤 작업이 우선되고 병목이 발생하는지 파악하는 데 유용
◦
키워드: 우선순위, 대기시간, 처리량
메모리 구조
•
스택(Stack)은 함수 호출 시 할당되며, 정적이고 빠르지만 용량이 작음
동기화 (Mutex, Semaphore)
•
공유 자원 접근 제어 필수 (예: DB 트랜잭션, 캐시 접근 시 race condition 방지)
메모리 구조
•
스택/힙/데이터/코드 영역
•
OutOfMemoryError vs StackOverflowErro 차이 인지 필요