728x90
[OS]
1. 프로세스와 쓰레드의 차이점
- 프로세스(Process): 실행 중인 프로그램으로, 운영체제로부터 독립적인 메모리 공간(Code, Data, Stack, Heap)을 할당받음.
- 쓰레드(Thread): 프로세스 내에서 실행되는 흐름의 단위로, Code, Data, Heap을 공유하지만, 개별적인 Stack을 가짐.
차이점:
구분 | 프로세스 | 쓰레드 |
메모리 공간 | 독립적 | 프로세스 내에서 공유 |
실행 단위 | 독립 실행 | 프로세스 내에서 실행 |
생성 비용 | 높음 (새로운 메모리 할당 필요) | 낮음 (메모리 공유) |
통신 방식 | IPC(Inter Process Communication) 필요 | 프로세스 내 공유 메모리를 사용 |
2. 멀티프로세스와 멀티쓰레드의 특징
- 멀티프로세스:
- 여러 개의 프로세스를 실행하여 병렬 처리.
- 각 프로세스는 독립적인 메모리를 가지므로 안정성이 높음.
- 하지만, 프로세스 간 통신(IPC)이 필요하여 속도가 느림.
- 멀티쓰레드:
- 하나의 프로세스에서 여러 개의 쓰레드를 실행하여 병렬 처리.
- 공유 메모리를 사용하여 빠른 데이터 접근 가능.
- 하지만, 하나의 쓰레드가 비정상 종료되면 전체 프로세스가 영향을 받을 수 있음.
3. 동기와 비동기의 차이
- 동기(Synchronous):
- 요청을 보내고 응답이 올 때까지 대기.
- 처리 순서가 보장되지만, 하나의 작업이 끝날 때까지 다음 작업을 진행할 수 없음.
- 비동기(Asynchronous):
- 요청을 보내고 응답을 기다리지 않고 다른 작업을 수행.
- 응답이 도착하면 별도의 콜백 함수 또는 이벤트 핸들러를 통해 처리.
- CPU 활용도가 높고 속도가 빠르지만, 제어가 복잡해질 수 있음.
4. 데드락(Deadlock)
- 정의: 두 개 이상의 프로세스(또는 쓰레드)가 서로가 가진 자원을 기다리면서 무한 대기 상태에 빠지는 현상.
- 발생 조건(교착 상태 조건):
- 상호 배제(Mutual Exclusion): 한 번에 하나의 프로세스만 자원을 사용 가능.
- 점유 대기(Hold and Wait): 자원을 점유한 상태에서 다른 자원을 요청하며 대기.
- 비선점(No Preemption): 강제로 자원을 회수할 수 없음.
- 순환 대기(Circular Wait): 프로세스 간 순환적으로 자원을 기다림.
- 해결 방법:
- 교착 상태 예방: 위 조건 중 하나 이상을 제거.
- 회피 (Deadlock Avoidance): 은행원 알고리즘(Banker's Algorithm) 활용.
- 탐지 및 복구: 데드락 발생 시 프로세스 종료 또는 자원 회수.
꼬리 질문 및 답변
Q1. 프로세스 간의 통신(IPC) 방법에는 어떤 것들이 있나요?
- 메시지 큐(Message Queue): 운영체제가 제공하는 메시지 큐를 통해 데이터 송수신.
- 공유 메모리(Shared Memory): 여러 프로세스가 같은 메모리 공간을 사용.
- 파이프(Pipe): 한 프로세스의 출력을 다른 프로세스의 입력으로 전달.
- 소켓(Socket): 네트워크를 통해 원격 프로세스 간 통신.
Q2. 멀티쓰레드 환경에서 발생할 수 있는 문제점과 해결 방법은?
- 경쟁 조건(Race Condition): 여러 쓰레드가 동일한 자원을 동시에 접근하며 발생하는 문제.
- → 해결: 뮤텍스(Mutex) 또는 세마포어(Semaphore) 사용
- 데드락(Deadlock): 두 개 이상의 쓰레드가 서로 자원을 점유한 상태에서 무한 대기.
- → 해결: 락 순서(lock ordering) 또는 타임아웃(timeout) 설정
- 기아 상태(Starvation): 우선순위가 낮은 쓰레드가 자원을 계속 할당받지 못하는 문제.
- → 해결: 우선순위 조정 또는 공정한 스케줄링(Fair Scheduling) 적용
Q3. 동기와 비동기 방식에서 성능을 최적화하는 방법은?
- 동기 방식 최적화:
- 멀티쓰레드 활용하여 동기 작업을 병렬 처리.
- 블로킹 작업 최소화 및 캐싱 활용.
- 비동기 방식 최적화:
- 이벤트 기반 프로그래밍(Event Loop) 활용.
- 논블로킹 I/O를 적극 사용하여 처리 속도 향상.
- Promise/Future 패턴 활용하여 가독성 개선.
'게임서버-스파르타코딩NodeJs_7기 > 모의면접' 카테고리의 다른 글
면접카타 - 기타 37~45 (0) | 2025.02.28 |
---|---|
면접카타[네트워크] 29~36 (0) | 2025.02.27 |
면접카타 [DB] -23,24 : NoSQL와 트랜션 (0) | 2025.02.24 |
면접카타 [DB] - 21,22 무결성, JOIN (0) | 2025.02.21 |
면접카타 [DB]-19,20 기본키, 외래키, ER모델, 정규화 (0) | 2025.02.20 |