운영체제(OS)/keyword 27

(Project1-Threads) 멀티 레벨 피드백 큐(MLFQS)

멀티 레벨 피드백 큐 스케줄링은 여러 개의 우선순위 큐를 사용하여 프로세스를 관리하는 스케줄링 알고리즘이다. 각 큐는 서로 다른 우선순위를 가지고 있으며, 일반적으로 높은 우선순위를 가진 큐일수록 CPU를 더 자주 할당받는다. ** 동작 방식 1. 프로세스 도착: 프로세스가 시스템에 도착하면, 가장 높은 우선순위 큐에 할당된다. 2. 시간 할당: 각 큐에서 실행 중인 프로세스는 일정 시간 동안 CPU를 사용할 수 있다. 3. 우선순위 하락: 만약 프로세스가 할당된 시간 동안 완료되지 못하면 또는 입출력 연산 등으로 중단되면, 해당 프로세스는 낮은 우선순위 큐로 이동한다. 4. 우선순위 상승: 반면에 프로세스가 해당 큐에서 일정 시간 동안 성공적으로 CPU를 사용하면, 우선순위가 높은 다음 우선순위 큐로 ..

(Project1-Threads) 컨텍스트 스위칭(Context Switching)

Context Switching(컨텍스트 스위칭)은 컴퓨터 시스템에서 실행 중인 프로세스나 스레드를 변경하는 프로세스이다. 이는 다양한 상황에서 발생하며, 프로세스 또는 스레드 간에 현재 상태 및 실행 정보를 저장하고 복원하는 과정을 포함한다. 컨텍스트 스위칭은 주로 다음과 같은 상황에서 발생한다. 프로세스 스케줄링: 여러 프로세스가 CPU를 사용하려고 경쟁할 때, 스케줄러에 의해 현재 실행 중인 프로세스를 중지하고 다른 프로세스를 실행하는 과정이 컨텍스트 스위칭이다. 인터럽트 처리: 하드웨어나 소프트웨어에서 발생하는 인터럽트에 응답하기 위해 현재 실행 중인 작업을 중단하고 인터럽트 서비스 루틴을 실행하는 것이 컨텍스트 스위칭이다. 시스템 호출 및 예외 처리: 프로세스가 시스템 호출이나 예외 상황에 직면..

(Project1-Threads) 데드락(Deadlock)

deadlock(교착 상태)은 컴퓨터 과학에서 여러 프로세스나 스레드가 서로의 작업이 끝나기를 기다리며 아무것도 진행하지 못하는 상태를 나타낸다. deadlock이 발생하는 이유는 다음과 같다. 상호 배제 (Mutual Exclusion): 리소스가 한 번에 하나의 프로세스나 스레드에 의해서만 사용될 수 있는 경우 발생 보유 및 대기 (Hold and Wait): 프로세스나 스레드가 어떤 리소스를 보유한 상태에서 다른 리소스를 기다리는 경우 발생 비선점 (No Preemption): 어떤 프로세스나 스레드에 할당된 리소스는 그 프로세스나 스레드에 의해서만 해제될 수 있는 경우 발생 순환 대기 (Circular Wait): 프로세스나 스레드 간에 순환 형태로 리소스를 기다리는 경우 발생 deadlock이 ..

(Project1-Threads) 경쟁 상태(Race Condition)

race condition(경쟁 상태)은 소프트웨어나 하드웨어에서 여러 실행 스레드나 프로세스가 공유된 자원에 동시에 접근할 때 예상치 못한 결과가 발생하는 상황이다. race condition이 발생하는 이유는 다음과 같다. 공유 자원 접근: 여러 스레드가 동시에 공유된 자원에 접근할 때, 어떤 스레드가 먼저 그 자원을 변경하면서 예상치 못한 결과가 발생할 수 있다. 비동기적 실행: 스레드나 프로세스의 실행 순서가 예측하기 어려운 경우 race condition이 발생할 수 있다. 특히, 동기화 메커니즘이 없을 때 문제가 될 수 있다. 1st run과 2nd run은 공유자원에 대한 스레드 1,2의 작업이 원자적으로 일어나면서 문제를 발생시키지 않는다. 반면 3rd run은 스레드 1과 2의 공유자원에..

(Project1-Threads) 세마포어와 뮤텍스(Semaphore, Mutex)

세마포어와 뮤텍스는 동기화 기법으로, 여러 프로세스 또는 스레드 간의 자원 공유를 관리하기 위해 사용된다. 뮤텍스 (Mutex): 뮤텍스는 상호배제를 제공하여 여러 스레드 간의 임계 영역(공유 자원에 대한 접근이 일어나는 부분)에 대한 동기화를 달성한다. 뮤텍스는 임계 영역에 들어가기 전에 해당 자원에 대한 락(lock)을 획득하고, 사용이 끝나면 언락(unlock)을 통해 다른 스레드가 해당 자원에 접근할 수 있도록 한다. 뮤텍스의 특징: 상호배제: 한 번에 하나의 스레드만이 임계 영역에 접근 가능하다. 데드락 방지: 뮤텍스는 데드락을 방지하기 위한 기능을 제공한다. 세마포어 (Semaphore): 세마포어는 정수형 변수로, 상호배제뿐만 아니라 스레드 간의 특정 자원의 개수를 나타내기도 한다. 세마포어..

(Project1-Threads) CPU Scheduling 알고리즘

CPU Scheduling 알고리즘은 운영체제에서 프로세스들이 CPU를 사용하는 순서를 관리하는 중요한 개념이다. 각각의 CPU Scheduling 알고리즘은 특정한 방식으로 프로세스를 선택하고 CPU를 할당하여 시스템의 성능을 최적화한다. FCFS (First-Come, First-Served) Scheduling: FCFS는 프로세스가 도착한 순서대로 CPU를 할당하는 가장 간단한 스케줄링 알고리즘이다. 먼저 도착한 프로세스가 먼저 CPU를 사용하며, 선착순으로 대기열에서 처리된다. Round Robin Scheduling: Round Robin은 각 프로세스에 동일한 시간의 할당량을 부여하는 방식으로 동작한다. 할당된 시간이 지나면 해당 프로세스는 대기열의 맨 뒤로 이동하고 다음 프로세스에게 CPU..

(Project1-Threads) 프로세스와 스레드(Process, Thread)

프로세스 (Process) 프로세스는 실행 중인 프로그램으로, 운영체제로부터 시스템 자원을 할당받아 독립적으로 실행된다. 각 프로세스는 각자의 주소 공간, 파일, 메모리, CPU 시간 등을 가지며 서로 영향을 미치지 않는다. 프로세스의 특징: 독립성: 각 프로세스는 독립된 메모리 공간에서 실행되며, 하나의 프로세스가 다른 프로세스에게 영향을 주지 않는다. 안전성: 프로세스는 운영체제에 의해 보호되어야 하며, 다른 프로세스의 데이터에 직접 접근할 수 없다. 자원 할당: 각 프로세스는 CPU, 메모리 등의 자원을 운영체제로부터 할당받는다. 스레드 (Thread) 스레드는 프로세스 내에서 실행되는 경량 프로세스로, 동일한 프로세스 내의 스레드들은 프로세스의 자원을 공유한다. 스레드는 프로세스의 코드, 데이터,..