
Queue와 Stack
핵심: 데이터 접근 방식의 차이 (FIFO vs LIFO)
Queue (큐)
- FIFO (First-In, First-Out)
- 먼저 들어온 데이터가 먼저 나가는 구조의 자료구조
- 데이터가 생성되는 순서대로 처리해야 하는 작업 (예: 작업 스케줄링, 메시지 큐)에 사용
Stack (스택)
- LIFO (Last-In, First-Out)
- 가장 나중에 들어온 데이터가 가장 먼저 나가는 구조.
- 함수의 호출 스택, 되돌리기 (Undo) 기능 등에 사용
Stack과 Heap
- 핵심: 메모리 할당 방식, 저장 데이터 종류, 속도 차이.
Stack (스택)
- 메모리 관리
- 정적 메모리 할당. 컴파일 시 크기가 결정되고, 함수의 호출과 종료에 따라 자동으로 할당/해제
- 저장 데이터
- 지역 변수, 함수 호출 정보 (매개변수, 복귀 주소 등).
- 접근 속도
- 크기
Heap (힙):
- 메모리 관리
- 동적 메모리 할당. 런타임 시 필요에 따라 명시적으로 할당/해제해야 (예:
malloc, new).
- 저장 데이터
- 객체, 배열 등 크기가 동적으로 변할 수 있는 데이터.
- 접근 속도
- 크기
프로세스와 프로세서의 차이
프로세스 (Process)
- 실행 중인 프로그램의 인스턴스.
- 독립적인 메모리 공간과 자원을 할당받아 실행.
- 특징
- 자신만의 주소 공간, 독립적인 실행 흐름 (스레드 포함 가능).
프로세서 (Processor):
- 정의
- CPU (Central Processing Unit)와 같은 물리적인 하드웨어 장치.
- 특징
- 코어(Core)를 가질 수 있으며, 클럭 속도로 성능을 나타냄.
핵심: 프로세스는 실행 단위, 프로세서는 실행 장치.
멀티 프로세스와 멀티코어의 차이
핵심
- 멀티 프로세스는 여러 개의 독립적인 실행 단위, 멀티코어는 하나의 프로세서 내에 여러 개의 실행 유닛.
- 멀티코어 환경에서 멀티 프로세스를 활용하여 병렬성을 극대화할 수 있습니다.
멀티 프로세스 (Multi-Process)
- 여러 개의 독립적인 프로세스를 동시에 실행하는 방식.
- 장점
- 각 프로세스가 독립적인 메모리 공간을 가지므로 안정성이 높음.
- 하나의 프로세스가 문제가 생겨도 다른 프로세스에 영향을 주지 않음.
- 단점
- 프로세스 간의 자원 공유 및 통신이 복잡하고 오버헤드가 큼.
멀티코어 (Multi-Core)
- 하나의 프로세서 칩 내에 여러 개의 독립적인 실행 코어(Core)를 포함하는 하드웨어 구조.
- 장점
- 여러 개의 스레드를 동시에 병렬로 처리하여 성능을 향상.
- 프로세스 간 통신보다 스레드 간 통신이 더 효율적.
- 단점
- 단일 코어에서 순차적으로 실행되는 작업에서는 성능 향상이 미미할 수 있음.