목록CS지식/운영체제 (Operating System) (17)
변수의 기록

자바 스레드의 상태 – OS 프로세스와 어떻게 다를까?멀티스레드 프로그래밍을 하다 보면, Runnable, Blocked, Waiting 같은 자바 스레드 상태들이 헷갈릴 수 있습니다.운영체제(OS)의 프로세스 상태와도 비슷한 듯 다른 이 구조, 이번 글에서 명확하게 정리해보겠습니다.1. OS의 프로세스 상태 (Process States in OS)운영체제에서 프로세스는 기본적으로 다음과 같은 상태를 가집니다: 상태설명New프로세스가 막 생성됨 (아직 실행 준비 X)Ready실행 준비 완료, CPU 할당을 기다림RunningCPU에서 실행 중Waiting (Blocked)I/O 등 외부 자원을 기다리며 대기Terminated실행 완료 후 종료됨 특징:CPU 중심적인 상태 변화실행 준비 / 실행 중 / ..

데드락(Deadlock) 정리 – 원인과 해결 방법**데드락(교착 상태)**은 둘 이상의 프로세스나 스레드가 서로가 점유한 리소스를 기다리며 무한 대기하는 상태를 말합니다. 이런 상황은 시스템 자원을 병렬로 사용하는 환경에서 자주 발생할 수 있어, OS 수준의 제어가 필요합니다. 도로는 리소스 차는 프로세스 조건1.각 차들은 2개의 도로(숫자) 리소스를 가져야함.가지려다가 두번쨰 사진처럼 교착상태를 마주하게 됨. 이것이 데드락. 🧩 데드락 발생의 4가지 조건데드락은 아래 4가지 조건이 모두 충족될 때 발생합니다. 하나라도 깨지면 데드락은 발생하지 않습니다. 조건설명예시1. Mutual Exclusion (상호배제)리소스는 하나의 프로세스만 점유 가능(공유x)프린터, 락(lock)2. Hold..

1. 모니터(Monitor)란?정의: 모니터는 **상호배제(Mutual Exclusion)**와 **조건 동기화(Conditional Synchronization)**를 제공하는 고수준 동기화 추상화.주요 구성 요소:뮤텍스 락(Mutex Lock): 임계 구역(Critical Section)에 동시에 하나의 스레드만 들어갈 수 있도록 함.엔트리 큐(Entry Queue): 락을 얻기 위해 대기 중인 스레드들이 대기.컨디션 변수(Condition Variable): 특정 조건을 기다리는 스레드들이 대기하는 공간.웨이팅 큐(Waiting Queue): 컨디션 변수를 통해 조건을 기다리는 스레드들이 들어감. 상황 1 - producer 에서 item을 넣어주고 consumer에서는 꺼내 씀조건 - 1. bu..
2025년 04월 7일LOCK 동기화 공부 ✅ 1. 레이스 컨디션 (Race Condition)여러 스레드(또는 프로세스)가 동시에 공유 자원에 접근할 때,실행 순서에 따라 결과가 달라지는 예측 불가능한 상황📌 예시 (공유 변수 증가):int counter = 0; Thread A: counter++;Thread B: counter++; 두 스레드가 거의 동시에 counter++를 실행하면,실제 결과는 1이 될 수도 있음 (정상은 2여야 함)➡ 데이터의 일관성, 정확성이 깨짐✅ 2. 동기화 (Synchronization)여러 스레드나 프로세스가 공유 자원에 올바른 순서로 접근하도록 제어하는 것레이스 컨디션을 방지하기 위한 필수 메커니즘올바른 동기화 없이는 공유 자원 보호 불가능➡ 락(lock), 세마포..

✅ [1] Spinlock (스핀락)🔹 개념락이 풀릴 때까지 계속 루프 돌며 기다리는 방식test_and_set() 같은 원자적(atomic) 명령어 사용CPU가 제공하는 하드웨어 수준의 atomic 연산을 통해 동기화가 이뤄짐🔹 핵심 특징빠르게 락이 풀릴 거라고 예상될 때 유리락이 오래 걸리면 busy-waiting으로 CPU 낭비 심함멀티코어 환경에서만 유리 🔹 Java에서?Java는 직접적인 스핀락 지원은 없음→ AtomicBoolean + 루프로 유사하게 구현 가능 → 또는 LockSupport.park() + CAS 활용으로 구현 ✅ [2] Mutex (뮤텍스)🔹 개념상호배제를 위한 소유권 있는 락락을 얻은 스레드만 해제할 수 있음Java에선 ReentrantLock, synchroni..

2025년 4월 6일운영체제 bound 공부 CPU-bound vs IO-bound: 서버 성능 최적화를 위한 핵심 개념 정리웹 개발이나 서버 운영을 하다 보면 "CPU를 많이 쓰는 작업", "IO 때문에 느린 작업"이라는 표현을 자주 듣는다.이 글에서는 그 차이를 명확히 이해하고, 시스템 설계나 튜닝 시 어떤 선택을 해야 하는지 정리✅ CPU-bound와 IO-bound란? 구분CPU-boundIO-bound의미CPU 연산이 병목인 작업입출력(IO)이 병목인 작업예시영상 인코딩, 머신러닝, 압축웹서버, DB 조회, 파일 저장, 외부 API 호출병목 위치연산 처리 속도네트워크/디스크 응답 지연CPU 사용률높다낮고 대기가 많다IO 대기거의 없다많다 🔄 CPU Burst vs IO Burst✔️ Burs..

🔁 컨텍스트 스위칭의 개념과 구조📌 컨텍스트 스위칭이란?컨텍스트 스위칭(Context Switching)은 CPU가 현재 실행 중인 작업(프로세스 또는 스레드)을 중단하고, 다른 작업으로 전환하는 과정이다. 이 과정에서 현재 작업의 상태(레지스터 값, 프로그램 카운터, 스택 포인터 등)를 저장하고, 다음 작업의 상태를 복원한다.컨텍스트 스위칭은 크게 두 종류로 나뉜다:프로세스 컨텍스트 스위칭스레드 컨텍스트 스위칭🧠 프로세스 컨텍스트 스위칭개념서로 다른 프로세스 간 전환주소 공간, 페이지 테이블, TLB, PCB 등이 모두 변경메모리 보호를 위해 각 프로세스는 독립된 가상 주소 공간을 가지므로 MMU와 협업이 필요동작 과정현재 프로세스의 PCB(Process Control Block) 저장다음 프로세..

가상 메모리(Virtual Memory)에 대한 개념 및 동작 원리 정리2025년 04월 04일가상메모리 공부1. 가상 메모리의 개념가상 메모리(Virtual Memory)란, 운영체제가 물리적 메모리(RAM)의 용량 한계를 극복하기 위해 제공하는 논리적 메모리 공간이다. 이는 프로세스가 실제로는 물리 메모리에 존재하지 않더라도, 마치 자신만의 연속적인 메모리 공간을 갖는 것처럼 동작하도록 만들어준다. 가상 메모리는 각 프로세스에게 독립적인 주소 공간을 제공함으로써, 메모리 보호와 다중 프로세스 실행을 가능하게 한다.가상 메모리는 실제 메모리와 1:1로 대응하지 않으며, 일부 주소 영역은 실제 메모리에 존재하지 않고 디스크의 스왑(Swap) 공간에 저장될 수 있다. 이로 인해 실행 중인 프로세스의 전체 ..