개발자 기술면접 꼬리물기 질문
  • 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. 컨텍스트 스위치(Context Switching)이 무엇인지 설명해주세요.
  • Q. 컨텍스트 스위칭이 발생할 때 프로세스의 정보는 어디에 저장되나요?
  • Q. 컨텍스트 스위칭이 자주 일어나면 어떤 문제가 발생할 수 있나요?
  1. 운영체제

컨텍스트 스위칭(Context Switching)

Q. 컨텍스트 스위치(Context Switching)이 무엇인지 설명해주세요.

먼저 컨텍스트란 CPU가 해당 프로세스를 실행하기 위한 해당 프로세스의 정보를 말합니다. 컨텍스트 스위치란 멀티프로세스 환경에서 CPU가 어떤 하나의 프로세스를 실행하고 있는 상태에서 인터럽트 요청에 의해 다음 우선 순위의 프로세스가 실행되어야 할 때 기존의 프로세스의 상태 또는 레지스터 값(Context)을 저장하고 CPU가 다음 프로세스를 수행하도록 새로운 프로세스 상태 또는 레지스터 값을 교체하는 작업입니다. 이러한 컨텍스트 스위칭은 커널(Kernel)에 의해 수행되며, 대표적인 예시로 여러 프로세스와 스레드들을 동시에 실행하는 것처럼 보이기위해 사용됩니다.

Q. 컨텍스트 스위칭이 발생할 때 프로세스의 정보는 어디에 저장되나요?

프로세스의 정보는 PCB(Process Control Block)라고 하는 자료구조에 저장됩니다. PCB는 운영체제가 프로세스를 관리하기 위해 프로세스 마다 하나씩 가지고 있는 데이터 구조입니다. PCB에는 프로세스 상태, 프로그램이 다음에 실행할 명령어의 주소, CPU 레지스터 값과 스케줄링 정보 등 다양한 정보를 저장하고 있습니다. 이러한 PCB는 운영체제 커널 영ㅇ역에 존재하며, 컨텍스트 스위칭이 발생할 때마다 현재 실행 중인 프로세시의 상태를 PCB에 저장하고, 새로운 PCB 정보를 CPU에 복원하는 작업이 이루어집니다.

Q. 컨텍스트 스위칭이 자주 일어나면 어떤 문제가 발생할 수 있나요?

첫번째로 메모리 사용량이 증가하고 시스템 성능 저하가 발생합니다. 각 프로세스의 컨텍스트 정보를 PCB에 저장하고 관리하고, 컨텍스트 스위칭이 일어날 때마다 CPU는 실행 중이던 프로세스의 상태를 저장하고 새로운 프로세스의 상태를 불러와야 하는데, 이 과정에서 상당한 리소스가 필요합니다. 둘째, 캐시 적중률(Cache Hit Rate)이 감소합니다. 프로세스가 바뀔 때마다 캐시 메모리에 저장된 데이터가 무효화되고 새로운 프로세스의 데이터로 채워져야 하기 때문에, 캐시의 효율성이 떨어지게 됩니다. 셋째, CPU가 실제 작업을 처리하는 시간보다 컨텍스트 스위칭에 소요되는 시간이 더 많아질 수 있어, 전반적인 시스템의 처리량(Throughput)이 감소하게 됩니다. 이런 문제들을 "스레싱(Thrashing)"이라고 하며, 시스템의 실제 작업 처리 능력을 크게 저하시킬 수 있습니다.

PreviousJIT & AOT 컴파일Next프로세스와 스레드

Last updated 6 months ago