운영체제

운영체제

[운영체제] 모니터: 고급 동기화 메커니즘

모니터의 개념모니터는 세마포어의 단점을 해결하고자 고안된 고급 동기화 메커니즘이다. 모니터는 프로그래밍 언어 수준에서 지원되며, 고수준의 추상화를 제공하여 프로그래머가 저수준의 동기화 작업에 직접 관여할 필요가 없도록 한다. 이로 인해 코드의 복잡성을 줄이고, 오류 가능성을 감소시킬 수 있다.    모니터의 작동 원리모니터는 내부적으로 한 번에 하나의 프로세스만이 모니터에 정의된 연산을 실행할 수 있도록 제한한다. 모든 공유 변수는 모니터 내에 캡슐화되어 있으며, 이 변수들에 대한 접근은 모니터가 제공하는 절차(함수)를 통해서만 가능하다. 모니터는 자동으로 임계 구역에 대한 진입과 퇴출을 관리한다.    Java에서의 모니터 사용Java에서는 synchronized 키워드를 사용하여 메소드나 코드 블록을..

운영체제

[운영체제] 세마포어(Semaphore)

세마포어(Semaphore)의 기본 개념 세마포어는 다중 프로세스 환경에서 공유 자원에 대한 접근을 제어하기 위해 사용되는 변수다. 이는 상호 배제(Mutual Exclusion, 뮤텍스)를 보장하여 여러 프로세스가 동시에 공유 자원을 사용할 때 발생할 수 있는 경쟁 상태(Race Condition)를 방지한다.   직관적인 예시 - 프린터실과 열쇠회사에서 여러 직원이 공유 프린터를 사용한다고 가정해 보자. 프린터는 한 번에 한 사람만 사용할 수 있는 제한된 자원이다. 만약 프린터가 제한된 자원이 아니라고 하면, 여러 직원들이 한 번에 프린터를 사용하여 예상하지 못한 결과를 출력할 수 있다. 그러므로 아래와 같이 프린터를 사용하려면 프린터 방에 들어가서 한 명씩 프린터를 사용하도록 해야 한다.  여기서 ..

운영체제

[운영체제] 공유자원과 임계구역

공유자원과 임계구역 이란? 프로세스 간 통신(IPC)이 발생할 때, 여러 프로세스가 공동으로 사용하는 변수나 파일 등을 공유자원이라고 한다. 이러한 자원은 프로세스들이 데이터를 읽고 쓰는 데 사용되며, 자원의 접근 순서에 따라 연산 결과가 달라질 수 있다. 공유자원을 접근하는 코드 영역 중에서 여러 프로세스에 의해 동시에 실행되면 안 되는 부분을 임계 구역이라고 한다. 임계 구역의 관리가 제대로 이루어지지 않을 경우, 경쟁 조건(Race Condition) 이 발생하여 데이터의 일관성과 정확성이 훼손될 수 있다.   동기화 문제의 이해와 예시 공유자원을 다룰 때, 특히 멀티프로세싱 환경에서는  프로세스들이 어떤 순서로 실행될지 예측하기 어려운 경우가 많다. 이는 운영체제의 컨텍스트 스위칭이 프로세스들 사..

운영체제

[운영체제] 프로세스 간 통신(IPC, Inter-Process Communication)

프로세스 간 통신(IPC) 이란?프로세스는 운영체제의 기본 실행 단위로, 일반적으로 독립적으로 실행된다. 그러나 때때로 프로세스들은 데이터를 주고받으며 상호 작용할 필요가 있다. 이러한 상호 작용을 가능하게 하는 기술을  프로세스 간 통신(IPC, Inter-Process Communication)이라고 한다. 프로세스 간 통신은 대표적으로 3가지의 종류가 존재한다.  프로세스 간 통신 종류 1.  같은 시스템 내의 프로세스 간 통신 1-1) 파일 기반 통신여러 프로세스가 동일한 파일에 접근하여 데이터를 읽고 쓰는 방식으로 통신한다. 이 방법은 상대적으로 구현이 간단하지만, 동시성 관리가 필요할 때 복잡해질 수 있다. 1-2) 파이프 통신파이프는 데이터가 일방향으로 흐르는 통신 채널로, 주로 부모 프로세..

운영체제

[운영체제] MLFQ (Multi-Level Feedback Queue) 스케줄링 알고리즘

MLFQ (Multi-Level Feedback Queue) 스케줄링 이란? MLFQ (Multi-Level Feedback Queue) 스케줄링은 현대 운영 체제에서 널리 사용되는  고급 CPU 스케줄링 방법 중 하나이다. 이 방법은 여러 우선순위를 가진 큐를 사용하고, 프로세스의 행동에 따라 동적으로 우선순위를 조정하여 CPU와 I/O 자원의 효율적 사용을 극대화합니다.  MLFQ의 기본 원리타임 슬라이스와 우선순위MLFQ는 각기 다른 타임 슬라이스를 가진 여러 개의 큐를 사용한다. 우선순위가 높은 큐에 있는 프로세스는 짧은 타임 슬라이스를 받고, 우선순위가 낮은 큐에 있는 프로세스는 긴 타임 슬라이스를 받는다. 피드백프로세스가 할당된 타임 슬라이스 내에 작업을 마치면 (주로 I/O 요청으로 인해) ..

운영체제

[운영체제] Round Robin (RR) 스케줄링 알고리즘

Round Robin (RR) 스케줄링 알고리즘 이란? Round Robin (RR) 스케줄링은 타임 슬라이스 또는 타임 퀀텀이라고 불리는  고정된 시간 단위 동안 모든 준비 상태의 프로세스에  CPU 시간을 순차적으로 할당하는 방법이다. 이 방법은 각 프로세스가 공평하게 CPU 시간을 받도록 설계되었다.   RR 스케줄링의 기본 원리타임 슬라이스 설정각 프로세스는 타임 슬라이스만큼 CPU 시간을 받는다. 타임 슬라이스는 보통 몇 밀리초에서 몇 초 사이다.  순환 큐 사용준비 상태의 프로세스는 순환 큐에 들어가 타임 슬라이스가 지나면 큐의 뒤로 이동한다.  콘텍스트 스위칭타임 슬라이스가 끝나면 현재 프로세스는 작업을 중단하고 다음 프로세스로 전환한다. 이때 콘텍스트 스위칭이 발생한다.    RR 스케줄링..

운영체제

[운영체제] SJF (Shortest Job First) 스케줄링 알고리즘

SJF (Shortest Job First) 스케줄링 알고리즘 이란? SJF(Shortest Job First), 또는 최소 작업 우선 스케줄링은  프로세스의 실행 시간(Burst Time)이 가장 짧은 작업을 먼저 실행하는 알고리즘이다.  이 스케줄링 전략은 평균 대기 시간을 최소화하는 데 효과적이라는 이론적 배경을 가지고 있다.   SJF의 장점1) 효율성SJF는 Burst Time이 짧은 작업을 우선적으로 처리함으로써 전체적인 작업 완료 시간을 단축시킨다.  이로 인해 시스템의 처리량이 증가하고 평균 대기 시간이 감소하는 효과가 있다.  SJF의 단점1) Burst Time 예측의 어려움프로세스의 실행 시간을 미리 정확히 예측하는 것은 매우 어렵다.  사용자 상호작용이나 외부 이벤트에 따라 프로세스..

운영체제

[운영체제] FIFO(First In, First Out) 스케줄링 알고리즘

FIFO(First In, First Out) 스케줄링 알고리즘 이란? FIFO(First In, First Out), 또는 FCFS(First-Come, First-Served) 스케줄링은  가장 기본적인 형태의 프로세스 스케줄링 알고리즘이다.  이 알고리즘은 프로세스가 스케줄링 큐에 도착한 순서대로 CPU 시간을 할당한다.  FIFO는 각 프로세스가 CPU를 완전히 사용하고 종료될 때까지 다음 프로세스는 대기해야 한다.  FIFO 알고리즘의 장점단순성과 예측 가능성 FIFO는 매우 단순하고 이해하기 쉽다.  프로세스의 도착 순서에 따라 CPU 시간이 할당되기 때문에, 스케줄링 로직이 복잡하지 않다.  FIFO 알고리즘의 단점병목 현상(Convoy Effect) 긴 작업 시간을 가진 프로세스가 도착하면..

운영체제

[운영체제] 컴퓨터 시스템 스케줄링의 주요 목표

컴퓨터 시스템 스케줄링의 주요 목표 컴퓨터 시스템의 스케줄링은 자원의 효율적 관리와 최적의 성능을 달성하기 위해 중요하다.  스케줄링 알고리즘은 다음과 같은 여러 목표를 달성하기 위해 설계되어 있다.1. 리소스 사용률 최대화스케줄링의 주된 목표 중 하나는 CPU와 I/O 장치 같은 시스템 리소스의 사용률을 최대화하는 것이다.  이는 시스템의 효율성을 높이고, 자원이 낭비되지 않도록 함으로써 전반적인 성능을 개선한다. 2. 오버헤드 최소화 스케줄링 프로세스 자체도 시스템의 자원을 소모한다.  따라서 스케줄링 알고리즘은 필요한 계산량을 최소화하며,  자주 발생하는 콘텍스트 스위칭을 줄임으로써 오버헤드를 최소화하는 것을 목표로 한다.3. 공평성 보장 스케줄링은 모든 프로세스가 공평하게 CPU 시간을 할당받도록..

운영체제

[운영체제] CPU 스케줄링 - 다중 큐

CPU 스케줄링 - 다중 큐 방식  프로세스가 생성되면 준비상태로 전환되고 준비상태에서 CPU를 기다리고 있는 프로세스들은 CPU 스케줄러에 의해 실행상태로 전환된다.실행상태에 있는 프로세스는 CPU 할당시간이 다 되었다면,  다시 준비상태로 전환되고 i/o 요청이 있다면 대기상태로 작업이 끝났다면 완료상태로 전환된다.여기서 프로세스가 대기하고 있는 "준비상태"와 "대기상태"는 Queue로 관리된다.   준비상태 프로세스프로세스가 실행상태에서 준비상태로 돌아갈 때,   운영체제는 해당 프로세스의 우선순위를 보고 그에 맞는 준비 큐에 넣는다.  CPU 스케줄러는 "준비상태의 다중큐" 에 들어있는 프로세스들  중에 적당한 프로세스를 선택해서 실행상태로 전환시킨다.   대기상태 프로세스 프로세스가 실행상태에서..

ssh9308
'운영체제' 카테고리의 글 목록