[중간정리] 9주차 - Multiprocess/Multithread, 데드락, Semaphore/Mutex, C언어(포인터, 할당 및 해제)
·
크래프톤 정글/CS기초(키워드, 개념정리)
Multiprocess/Multithread 선택 기준안정성 vs 자원 사용시스템의 안정성이 매우 중요한 경우, 멀티프로세스가 선호리소스가 제한적인 환경에서는 멀티스레드가 더 효율적구현의 복잡성스레드는 공유 메모리로 인해 동기화 문제가 복잡해질 수 있음때문에 개발자의 동시성 제어에 대한 이해도가 중요응답 시간멀티스레드는 컨텍스트 스위칭이 빠르기 때문에 더 빠른 응답 시간을 요구하는 경우 유리함플랫폼 및 언어 지원사용 중인 언어나 플랫폼이 멀티스레드 또는 멀티프로세스 중 어느 쪽을 더 잘 지원하는지도 중요한 요소 데드락 해결 전략데드락 예방(Deadlock Prevention)데드락이 발생하는 4가지 필수 조건(상호배제, 점유 및 대기, 비선점, 환형 순환) 중 적어도 하나를 제거함으로써 데드락 방지ex)..
[CS기초] 9주차 개념정리
·
크래프톤 정글/CS기초(키워드, 개념정리)
9주차 개념 정리아래의 내용을 코드 블럭 우측 상단의 Copy 버튼을 눌러 복사한 뒤, 퀴즈 로봇(신명훈 학우 제작)의 프롬프트에 붙여넣기하면 핵심 개념들에 대한 퀴즈를 풀어볼 수 있습니다. □ Process • 실행 중인 프로그램 • 운영체제로부터 독립된 메모리 영역을 할당받아 실행됨 • 각 프로세스는 고유한 코드, 데이터, 힙, 스택 영역을 가짐 • 프로세스 간 통신은 파이프, 소켓 등 IPC(Inter-Process Communication)가 필요 • 컨텍스트 스위칭 시 오버헤드가 큼■ PCB(Process Control Block)운영체제가 각 프로세스를 관리하기 위해 유지하는 메타데이터를 담은 자료구조▶ 메타데이터 종류 • PID • 프로세스 상태 • 레지스터 값(Program Counter,..
[CS기초] Multi-Level Feedback Queue Scheduler (MLFQS)
·
크래프톤 정글/CS기초(키워드, 개념정리)
Multi-Level Feedback Queue Scheduler (MLFQS)운영체제는 CPU 자원을 효율적으로 분배하기 위해 다양한 스케줄링 알고리즘을 사용하는데요. 그중에서도 MLFQ (Multi-Level Feedback Queue)는 사용자 프로그램의 특성을 파악해 동적으로 우선순위를 조정하는 고급 스케줄링 기법입니다. MLFQ의 핵심 아이디어MLFQ는 이름 그대로 여러 개의 우선순위 큐(priority queue)를 사용하여 프로세스를 스케줄링합니다.여러 개의 큐각 큐는 서로 다른 우선순위를 가짐위쪽 큐일수록 높은 우선순위Time Quantum높은 우선순위 큐일수록 time slice(할당 시간)가 작음FeedbackCPU를 오래 사용하는 프로세스는 하위 큐로 강등, 입출력 위주 프로세스는 ..
[CS기초] Context Switching(문맥 교환) 핵심 정리
·
크래프톤 정글/CS기초(키워드, 개념정리)
Context Switching(문맥 교환) 핵심 정리이번 글에서는 운영체제에서 여러 작업(프로세스나 스레드)을 동시에 다루기 위해 필수적으로 수행되는 Context Switching의 개념과 흐름을 정리해보려고 하는데요. 이를 통해 멀티태스킹 환경에서 CPU가 어떻게 여러 작업을 번갈아 처리하는지를 이해하는 것이 목표입니다. Context Switching이란?Context Switching(문맥 교환)이란 CPU가 현재 실행 중인 작업(Process 또는 Thread)의 상태(Context)를 저장하고, 다음 실행할 작업의 상태로 전환하는 과정을 말하는데요. 즉 CPU가 A 작업을 잠시 멈추고 B 작업을 실행할 수 있게 하는 과정입니다. Context(문맥)의 구성 요소레지스터 값 (PC, SP ..
[CS기초] Deadlock(데드락)
·
크래프톤 정글/CS기초(키워드, 개념정리)
DeadlockDeadlock(교착 상태)은 둘 이상의 프로세스나 스레드가 서로가 가진 자원을 기다리며 영원히 진행되지 못하는 상태를 말하는데요. 운영체제에서 자원 할당과 동기화 문제가 발생했을 때 전형적으로 나타나는 동시성 버그 중 하나입니다. Deadlock이 발생하는 4가지 조건 (Coffman Conditions)Deadlock이 발생하려면 다음 네 가지 조건을 동시에 만족해야 합니다:상호 배제(Mutual Exclusion)한 자원을 동시에 둘 이상의 프로세스가 사용할 수 없음점유 및 대기(Hold and Wait)자원을 점유한 프로세스가 추가 자원을 기다림비선점(No Preemption)다른 프로세스가 점유한 자원을 강제로 회수할 수 없음환형 대기(Circular Wait)프로세스들이 원형으..
[CS기초] Race Condition, 동시성 버그의 핵심 원인
·
크래프톤 정글/CS기초(키워드, 개념정리)
Race Condition, 동시성 버그의 핵심 원인Race Condition(경쟁 조건)은 둘 이상의 스레드나 프로세스가 공유 자원에 동시에 접근할 때 발생하는 결과가 예측 불가능한 상태를 말합니다. 즉, '누가 먼저 실행되느냐'에 따라 결과가 달라지는 상황을 의미하지요. 이는 마치 경주(race)처럼, 누가 먼저 값을 읽고 쓰느냐에 따라 결과가 달라지기 때문에 이런 이름이 붙게 되었습니다. 예시로 보는 Race Conditionint counter = 0;void increment() { counter++;}increment()는 아래 세 단계로 이루어져 있습니다.counter 읽기1 증가counter에 쓰기그런데 만약 이 작업을 두 개의 스레드가 동시에 실행하면 다음과 같은 일이 발생할 수 ..
[CS기초] Semaphore와 Mutex, 동시성 제어의 핵심 도구
·
크래프톤 정글/CS기초(키워드, 개념정리)
Semaphore와 Mutex, 동시성 제어의 핵심 도구운영체제에서 동시성(Concurrency)은 여러 프로세스나 스레드가 CPU를 번갈아 사용하며 실행되는 환경을 의미합니다. 이때 공유 자원(Shared Resource)을 동시에 접근하게 되면 경쟁 상태(Race Condition)가 발생할 수 있는데요. 이를 해결하기 위해 사용하는 대표적인 도구가 바로 Semaphore와 Mutex입니다. 핵심 개념 요약항목Semaphore (세마포어)Mutex (뮤텍스)목적자원 개수 제어임계 구역 보호값의 범위0 이상 (N ≥ 1)0 또는 1소유 개념없음소유한 스레드만 unlock 가능사용 예시제한된 리소스 관리 (ex. DB 커넥션)공유 변수 보호구현 방식wait() / signal()lock() / unlo..
[CS기초] CPU Scheduling 알고리즘 핵심 정리
·
크래프톤 정글/CS기초(키워드, 개념정리)
CPU Scheduling 알고리즘 핵심 정리CPU Scheduling이란 다중 프로세스 환경에서 여러 프로세스들이 CPU를 공유할 때, 어떤 프로세스에 얼마나 CPU를 할당할지에 대한 순서를 결정하는 운영체제의 핵심 메커니즘인데요. CPU는 한 번에 하나의 작업만 처리할 수 있기 때문에, 효율적인 스케줄링이 시스템 성능에 매우 큰 영향을 주게 됩니다. 스케줄링 성능 기준어떤 스케줄링 방식이 좋은지 나쁜지에 대해서는, 다음과 같은 기준을 통해 판단하게 됩니다.Waiting Time: CPU를 기다리는 시간Turnaround Time: 프로세스 요청이 처리되는 총 시간Response Time: 요청 후 첫 반응까지 걸리는 시간Throughput: 단위 시간당 처리된 작업 수 (클수록 좋음)이러한 지표들을..