개발자 기술면접 꼬리물기 질문
  • Welcome
  • 01 Java
    • 01-01. Generic
    • Garbage Collection
    • 자료형과 객체 비교
    • 힙(Heap)과 메모리(Memory)
    • JDK 버전과 JRE
    • 스레드(Thread)
    • 예외(Throwable)
    • Call By Value와 Call By Reference
    • String, equals, StringBuffer
    • Thread와 비동기
  • 02 Spring
    • 02-01. Spring 동작 방식
    • @Autowired, @RequiredArgsConstructor
    • 인증(Authentication)과 인가(Authorization)
    • 트랜잭션(Transaction)
    • QueryDSL과 SQL Injection
    • SecurityContextHolder
    • @EqualsAndHashCode
  • 알고리즘과 자료구조
    • Set 자료구조
    • 정렬 알고리즘
    • 우선순위 큐 (Priority Queue)
    • DFS와 BFS
    • 힙(Heap) 자료구조
    • 스택(Stack)과 큐(Queue)
    • 암호화 알고리즘
    • LinkedList
    • 자료구조 - 해시 테이블(HashTable)
    • 자료구조 - ConcurrentHashMap
  • 데이터베이스
    • 기본
    • 인덱스 (Index)
    • 정규화 (Normalization)
    • 파티셔닝과 샤딩(Partitioning & Sharding)
    • 트랜잭션(Transaction)과 락(Lock)
    • 덤프(Dump)
    • Redis
    • 격리 수준(MySQL)
  • 네트워크
    • 전송 계층 (Transport Layer)
    • 네트워크 계층 (Network Layer)
    • Http와 Https
    • IP(Internet Protocol)
    • 프록시 서버
    • Http Protocol
    • 소켓(Socket)
    • 로드 밸런싱(Load Balancing)
  • 디자인 패턴
    • 전략 패턴 (Strategy Pattern)
    • 싱글톤 패턴 (Singleton Pattern)
    • 템플릿 메서드 패턴과 전략 패턴
    • 데코레이터 패턴 (Decorator pattern)
  • 웹
    • CORS 정책
    • 동시성 제어
    • N+1 문제
    • 웹 브라우저 동작원리
    • URI, URL, URN
    • 채팅 아키텍처 설계
  • 개발자
    • 개발 방법론 TDD
  • 운영체제
    • JIT & AOT 컴파일
    • 컨텍스트 스위칭(Context Switching)
    • 프로세스와 스레드
    • 싱글 스레드와 멀티 스레드
  • 코딩테스트
    • Stack / Queue (스택 / 큐)
    • Heap(우선 순위 큐)
    • DP(동적 계획법)
    • DFS(깊이 우선 탐색)
    • BFS(너비 우선 탐색)
    • Greedy(그리디 알고리즘)
    • 해시(Hash)
    • 투 포인터 알고리즘
    • Shortest path
    • 수학적 사고
Powered by GitBook
On this page
  • Q. 멀티태스킹과 멀티프로세싱의 차이점을 설명해주세요.
  • Q. 프로세스와 스레드의 차이점은 무엇일까요?
  • Q. CPU 바운드 작업과 I/O 바운드 작업의 차이는 무엇인가요?
  • Q. 웹 애플리케이션 서버에서 스레드 개수는 어떻게 결정하는 것이 좋을까요?
  1. 운영체제

프로세스와 스레드

Previous컨텍스트 스위칭(Context Switching)Next싱글 스레드와 멀티 스레드

Last updated 5 months ago

Q. 멀티태스킹과 멀티프로세싱의 차이점을 설명해주세요.

멀티태스킹은 운영체제 소프트웨어 관점에서 하나의 CPUI가 여러 작업을 동시에 처리하는 것처럼 보이게 하는 기술입니다. CPU 시간을 작은 단위로 분할해서 여러 작업을 번갈아 수행합니다. 반면 멀티프로세싱은 하드웨어 관점에서 여러 CPU를 사용하여 실제로 동시에 여러 작업을 처리하는 기술입니다.

Q. 프로세스와 스레드의 차이점은 무엇일까요?

프로세스는 실행 중인 프로그램의 인스턴스로, 독립적인 메모리 공간과 시스템 자원을 가지는 컨테이너 역할을 합니다. 반면 스레드는 프로세스 내에서 실제로 작업을 실행하는 단위로, 같은 프로세스 내의 스레드들은 메모리와 자원을 공유합니다. 프로세스는 서로 독립적이지만, 스레드는 같은 프로세스 내에서 자원을 공유하므로 더 가볍고 생성과 관리가 용이합니다.

Q. CPU 바운드 작업과 I/O 바운드 작업의 차이는 무엇인가요?

CPU 바운드 작업은 복잡한 수학 연산이나 데이터 처리처럼 CPU의 연산 능력을 많이 사용하는 작업을 말합니다. 반면 I/O 바운드 작업은 데이터베이스 쿼리나 파일 읽기/쓰기처럼 입출력 작업이 많은 경우를 말합니다. 이때 스레드는 대부분의 시간을 I/O 작업이 완료되기를 기다리는데 소비하며 CPU는 상대적으로 덜 사용됩니다.

Q. 웹 애플리케이션 서버에서 스레드 개수는 어떻게 결정하는 것이 좋을까요?

웹 애플리케이션의 특성상 대부분 I/O 바운드 작업이 많기 때문에, CPU 코어 수보다 많은 스레드를 생성하는 것이 일반적입니다. 하나의 요청이 CPU를 1% 정도만 사용한다면, 이론적으로는 100개의 스레드를 만들어 동시에 100명의 사용자 요청을 처리할 수 있습니다. 단, 너무 많은 스레드를 생성하면 컨텍스트 스위칭 비용이 증가하므로, 실제 운영 환경에서는 성능 테스트를 통해 최적의 스레드 개수를 결정해야 합니다.

연관된 문서

컨텍스트 스위칭
자바에서의 스레드