생산자와 소비자 문제 및 공유 자원과 임계 구역
·
운영체제/동기화란
생산자와 소비자 문제 및 공유 자원과 임계 구역이 글에서는 상호 배제를 위한 동기화의 개념을 이해하기 위해 고전적인 사례인 생산자와 소비자 문제를 살펴보고, 이어서 공유 자원과 임계 구역, 그리고 이로 인해 발생할 수 있는 레이스 컨디션에 대해 논의합니다.1. 생산자와 소비자 문제생산자와 소비자 문제는 두 프로세스(또는 스레드)가 공유된 버퍼에 데이터를 추가하거나 제거할 때 발생하는 전형적인 동기화 이슈입니다.생산자 (Producer):버퍼에 데이터를 넣고, 공유 변수인 총합을 1 증가시킵니다.소비자 (Consumer):버퍼에서 데이터를 제거하고, 총합을 1 감소시킵니다.두 프로세스는 동일한 총합 변수를 공유하기 때문에, 초기에 물건이 10개 있을 경우 총합은 10으로 설정됩니다.(그림 출처: 혼자 공부..
동기화(Synchronization)의 의미
·
운영체제/동기화란
동기화(Synchronization)의 의미현대의 운영체제에서 여러 프로세스가 동시에 실행되며, 상호 협력하고 자원을 공유한다. 이때 동기화(Synchronization) 라는 개념이 필수적이다. 동기화란 프로세스들 사이의 실행 시점을 조절하여 올바른 수행 결과를 보장하는 것을 말한다.실행 순서 제어: 특정 조건(작업 완료 등)이 충족되어야 다음 프로세스가 실행되도록 순서를 조정상호 배제(Mutual Exclusion): 공유 자원에 대해 동시에 접근함으로써 발생하는 충돌을 방지아래에서는 이 두 측면을 살펴보며 동기화의 구체적인 의미를 이해해 보자. 1. 프로세스 동기화란 무엇인가?운영체제에서 여러 프로세스(혹은 스레드)가 동시에 실행되면서 협력해야 할 때, 각 프로세스가 원하는 시점이나 조건을 정확히 ..
스케줄링 알고리즘의 종류
·
운영체제/CPU 스케줄링
다양한 스케줄링 알고리즘운영체제에서 프로세스에 CPU 등의 자원을 할당할 때는 여러 스케줄링 알고리즘을 사용한다. 각 알고리즘은 프로세스들을 어떤 순서로 우선 실행시킬지 결정하는 전략을 가지고 있으며, 실행 환경이나 요구사항(반응 속도, 처리량 등)에 따라 그 장단점이 달라진다. 이번 장에서는 대표적인 스케줄링 알고리즘들을 간략히 살펴본다. 1. 선입 선처리 스케줄링(FCFS: First Come First Served)1.1 개념준비 큐(Ready Queue)에 도착한 순서대로 프로세스에 CPU를 할당하는 비선점형 스케줄링 방식이다.단순하고 이해하기 쉽지만, CPU 사용 시간이 긴 프로세스가 먼저 오면 호위 효과(Convoy Effect) 가 발생해 이후 프로세스들이 장시간 대기하는 문제가 있다.(그림..
선점형과 비선점형 스케줄링
·
운영체제/CPU 스케줄링
선점형과 비선점형 스케줄링운영체제에서 프로세스에게 CPU 등 자원을 할당할 때, 이미 자원을 사용 중인 프로세스로부터 자원을 빼앗아 다른 프로세스에게 넘길 수 있는지 여부에 따라 스케줄링을 선점형(Preemptive) 과 비선점형(Non-Preemptive) 으로 구분한다. 이 장에서는 두 방식의 정의와 장단점을 살펴본다. 1. 선점형 스케줄링(Preemptive Scheduling)1.1 정의선점(Preemption) 이란 “남보다 앞서 차지한다”는 뜻이다.선점형 스케줄링은 운영체제가 프로세스가 자원을 쓰는 중이라도, 언제든 해당 자원을 빼앗아(강제적으로 중단시키고) 다른 프로세스에게 배분할 수 있는 방식을 말한다.예: 시분할(Time Quantum) 방식프로세스가 정해진 시간만큼 CPU를 쓰고 나면,..
프로세스 우선순위 (Process Priority)
·
운영체제/CPU 스케줄링
프로세스 우선순위 (Process Priority)운영체제는 여러 준비 상태(Ready) 프로세스 중 어떤 프로세스에 CPU를 먼저 할당할지 결정해야 한다. 이때 단순히 도착 순서(FCFS)만으로 CPU를 배분하면, 전체 시스템 효율이 떨어질 수 있다. 실제로는 프로세스마다 다른 우선순위(Priority)를 부여하여, 중요하거나 빨리 처리해야 하는 프로세스가 더 우선적으로 CPU를 쓸 수 있도록 한다. 1. 우선순위가 필요한 이유하나의 CPU에서 여러 프로세스가 동시에(또는 병행) 실행되려면, 운영체제(OS)가 CPU 스케줄링을 수행한다. 가장 단순한 방식으로는 도착 순서대로 차례로 CPU를 사용하게 할 수 있지만, 이는 항상 최적은 아니다. 왜냐하면 프로세스마다 다음과 같은 차이가 존재하기 때문이다:중..
프로세스와 스레드
·
운영체제/프로세스와 스레드
프로세스와 스레드운영체제에서 프로세스는 실행 중인 프로그램을 의미하며, 스레드는 그러한 프로세스 내부에서 실행 흐름을 담당하는 단위다. 전통적으로 하나의 프로세스는 하나의 실행 흐름(단일 스레드)을 가졌지만, 스레드 개념이 도입되면서 하나의 프로세스가 여러 스레드를 만들어 동시에 여러 작업을 처리할 수 있게 되었다. 이 글에서는 프로세스와 스레드의 개념, 멀티 프로세스와 멀티 스레드의 차이점, 그리고 프로세스 간 통신(IPC)에 대해 살펴본다. 1. 스레드란 무엇인가?스레드(Thread) 는 프로세스를 구성하는 실행의 흐름 단위이다.프로세스에 여러 스레드가 존재할 수 있으며, 각 스레드는 독립적인 실행을 진행한다.CPU 스케줄러는 스레드 단위로 CPU를 할당하기도 하여, 동시에 여러 스레드가(멀티 코어 ..
프로세스 생성 기법
·
운영체제/프로세스 상태와 계층 구조
프로세스 생성 기법운영체제는 새로운 프로세스를 생성하기 위해 보통 두 가지 주요 시스템 호출을 사용한다. 하나는 fork() 로 부모 프로세스를 복제하여 자식을 만들고, 다른 하나는 exec() 로 새로운 프로그램으로 메모리 공간을 교체하는 방식이다. 이 글에서는 fork()와 exec()가 어떻게 동작하는지, 왜 이런 방식으로 자식 프로세스가 만들어지고 실행되는지 좀 더 자세히 살펴본다. 1. fork() — 부모 프로세스 복제1.1 개념fork() 는 부모 프로세스를 복제해 새로운 자식 프로세스를 생성하는 시스템 호출이다.자식 프로세스는 부모 프로세스의 대부분 리소스(메모리, 열린 파일 디스크립터, 환경 변수 등)를 상속받는다.PID(프로세스 식별자)는 새로 할당되므로, 부모와 자식은 서로 다른 PI..
프로세스 계층 구조 (Process Hierarchy)
·
운영체제/프로세스 상태와 계층 구조
프로세스 계층 구조 (Process Hierarchy)운영체제에서 프로세스는 단일 개체로 독립적으로 실행되지만, 내부적으로 부모-자식 관계를 형성하며 트리(Tree) 형태의 계층 구조를 이룬다. 이는 프로세스가 시스템 호출을 통해 다른 프로세스를 생성할 수 있기 때문이다. 다음에서는 이러한 프로세스 계층 구조의 개념, 실제 예시, 그리고 최초 프로세스(PID=1)에 대해 살펴본다. 1. 부모 프로세스와 자식 프로세스부모 프로세스(Parent Process) 가 새로운 프로세스를 만들면, 만들어진 프로세스를 자식 프로세스(Child Process) 라고 부른다.부모와 자식은 서로 다른 PID를 갖는다.일부 운영체제에서는 자식 프로세스의 PCB에 PPID(Parent PID) 를 기록해 부모 프로세스를 추적..
프로세스 상태
·
운영체제/프로세스 상태와 계층 구조
프로세스 상태(Process States)운영체제에서 프로세스(Process) 는 실행 단위로서, 여러 단계(상태)를 거쳐가며 수행된다. 컴퓨터를 사용할 때 우리는 여러 프로세스를 동시에 사용하는 것처럼 보이지만, 사실은 하나의 CPU(또는 여러 CPU 코어)가 빠르게 프로세스 간을 전환(context switching) 하면서 마치 동시 실행되는 듯한 환경을 만든다. 이 전환 과정에서 각 프로세스는 여러 상태를 거치게 되는데, 운영체제는 각 프로세스의 상태 정보를 PCB(Process Control Block) 에 저장하고 관리한다. 아래에서는 전형적으로 많이 사용하는 프로세스 상태와 그 흐름을 살펴본다. 1. 프로세스 상태의 개념프로세스는 실행 중에 입출력이나 CPU 스케줄링 등 다양한 이벤트에 따라..
콘텐츠 협상과 표현
·
컴퓨터 네트워크/응용계층
콘텐츠 협상과 표현웹 서비스를 이용하다 보면, 같은 URL 에 접속했는데도 사용자 언어나 지역에 따라 다른 언어 페이지가 표시되는 경험이 있을 것이다. 예를 들어, 한국에서 접속하거나 한국어 계정으로 특정 URL에 접속하면 한국어 페이지가, 다른 지역에서 접속하거나 영어 계정으로 접속하면 영어 페이지가 표시되는 식이다.(그림 출처: 혼자 공부하는 컴퓨터 네트워크)이 현상을 가능케 하는 것이 바로 HTTP의 콘텐츠 협상(Content Negotiation) 이다. 한 마디로, 하나의 URI 가 여러 '표현(Representation)' 형태를 가질 수 있으며, 클라이언트의 선호도를 고려해 서버가 가장 적합한 표현을 골라 제공하는 메커니즘을 의미한다. 1. 콘텐츠 협상(Content Negotiation)이..