본문 바로가기

전체 글138

[CS] 컨텍스트 스위칭 (Context Switching) Context Switching개념: 운영체제가 CPU를 사용하는 실행 주체 (프로세스/스레드) 를 바꿀때 이전 주체의 상태(Context)를 저장하고, 새 주체의 상태를 복원하는 과정.한정적인 코어에서 CPU 는 물리적으로 한번에 하나의 주체만 실행가능.운영체제가 일정 시간마다 다른 작업에게 CPU를 할당해 주는 구조.운영체제 입장에서 Context Switching 과정현재 실행중인 프로세스/스레드 상태(Context)를 PCB/TCB 에 저장스케줄러가 다음 실행할 주체를 선택선택된 주체의 상태를 복원CPU에게 새로운 실행 흐름을 넘겨줌 컨텍스트 스위칭 과정 [현재 실행 중인 프로세스 A → 프로세스 B로 전환하는 경우]1. 인터럽트 or 시스템콜 발생 (예: 타임 슬라이스 종료)2. 커널 모드 진입.. 2025. 7. 12.
[CS] 프로세스 vs 스레드 1. 개념차이프로세스OS 에서 실행중인 프로그램. OS 로 부터 자원을 할당받아 실행한다.하나의 프로그램은 여러개의 프로세스를 만들 수 있다. (크롬 다중실행등)프로세스는 실행단위 이며, 서로 독립적인 여러 실행 인스턴스가 만들어 질 수 있다.스레드프로세스 내부의 실행 흐름 단위한 프로세스 내에서 여러 쓰레드를 동시에 실행한다.해당 스레드는 프로세스의 메모리 자원을 공유한다. 2. 메모리 구조운영체제가 프로세스에 메모리를 할당하는 방식. 총 4개의 메모리 영역으로 나뉜다.코드영역 : 실행할 프로그램의 기계어 코드 (함수/if제어문/루프문)데이터영역 : 전역변수, static 변수힙영역 : 런타임중 new, malloc 으로 동적으로 할당되는 메모리스택영역 : 함수호출정보, 지역변수프로세스와 스레드의 메모.. 2025. 7. 9.
CS 준비를 위한 키워드정리 ✅ 1. 운영체제 (OS)📌 필수 개념프로세스 vs 스레드Context Switching시스템 콜 (System Call)커널 / 유저 모드멀티태스킹, 멀티스레딩스케줄링 알고리즘 (FCFS, RR, SJF, MLFQ)인터럽트와 인터럽트 핸들링동기 vs 비동기, 블로킹 vs 논블로킹📌 메모리 관리가상 메모리 / 페이징 / 세그멘테이션페이지 교체 알고리즘 (FIFO, LRU, LFU)페이지 폴트TLB (Translation Lookaside Buffer)📌 동기화 & 병행성임계 영역 / 세마포어 / 뮤텍스 / 스핀락데드락 (Deadlock) 조건, 예방, 회피병행 제어 이슈: 레이스 컨디션, 교착 상태메모리 모델 (volatile, memory barrier 등) ✅ 2. 네트워크📌 TCP/IP 4계.. 2025. 7. 6.
[Java] JVM GC 최적화 경험과 인사이트 1. 들어가며어느 날, 운영 중인 애플리케이션에서 갑작스럽게 응답 지연이 발생했다. 시스템 모니터링 결과, GC가 과도하게 실행되면서 STW(Stop-The-World) 시간이 증가하고 있었다. 처음에는 단순한 Minor GC 문제로 보였지만, 자세히 분석해보니 Old 영역에서 발생하는 Major GC와 Full GC가 원인이었다. 이 문제를 해결하기 위해 Heap Dump 분석, GC 로그 모니터링, JVM 옵션 튜닝을 진행하며 얻은 인사이트를 공유하고자 한다.2. JVM의 GC 종류와 특성GC의 종류 및 동작 방식GC는 JVM의 메모리 관리를 자동화하는 핵심 기능이지만, 잘못 설정하면 애플리케이션 성능에 심각한 영향을 미칠 수 있다. 대표적인 GC 방식은 다음과 같다.SerialGC단일 스레드로 GC.. 2025. 3. 1.
[Java] ThreadPool 비교: 어떤 쓰레드 풀이 가장 좋을까? 멀티스레딩을 다루다 보면, 쓰레드 관리를 어떻게 해야 할까? 라는 고민이 생깁니다.쓰레드를 마구 생성하면 메모리가 터지고(OutOfMemoryError), 그렇다고 하나씩 돌리면 너무 느리죠. 그래서 Java에서는 ThreadPool(쓰레드 풀) 을 제공합니다.그런데 이게 또 종류가 여러 가지라, “FixedThreadPool이 좋을까? CachedThreadPool이 좋을까?” 같은 고민이 생깁니다. 그래서 이번 글에서는 ThreadPool을 안 썼을 때와 썼을 때의 성능 차이를 직접 실험해보고, 어떤 경우에 어떤 쓰레드 풀을 써야 할지 정리해보겠습니다. 🚀  1. 실험 환경 • 10,000개의 작업을 처리해야 한다고 가정 • 각 작업은 단순히 숫자의 제곱을 계산하는 간단한 연산 • 여러 가지 Thr.. 2025. 2. 4.
반응형