본문 바로가기
CS/OS

[운영제제] 3-7주차. 프로세스 관리(스케줄링, 동기화)

by DenverAlmighty 2024. 12. 10.
반응형

 

KOCW에서 제공하는 경성대학교  양희재 교수 운영체제 강의를 듣고 정리한 글 입니다.

3-7주차. 프로세스 관리(스케줄링, 동기화)

 


3-7주차. 프로세스 관리(스케줄링, 동기화)

 

 

 

 

1. 세마포

1) 세마포 구조

class Semaphore {
    int value; // number of permits
    Semaphore(int value) {
        ...
    }
    void acquire() {
        ...
    }
    void release() {
        ...
    }
}


// acquire
void acquire() {
    value--;
    if (value < 0) {
    	// aquire 되면 세마포 큐에 들어가고, block 됨
        add this process / thread to list;
        block;
    }
}


// release
void release() {
    value++;
    if (value <= 0) {
    	
        remove a process P from list;
        wakeup P;
    }
}

value : number of permit

 

2) 세마포 사용

(1) 상호 배타 mutual exclusion

: 오직 한 쓰레드만 진입

// value=1이면 Parent/Child 중 1개만 들어올 수 있음.
sem.value = 1;

sem.acquire();
//Critical-Section
sem.release();

 

(2) Ordering

특정 프로세스를 먼저 실행되도록 하는 경우

// S1을 S2보다 먼저 실행하고싶은 경우

sem.value = 0;

/*P2*/
sem.acquire();
//S2;
//-

/*P1*/
//-
//S1;
sem.release();

/*
(1) P1 먼저 실행 시 S1먼저 실행됨 (O)
(2) P2 먼저 실행 시 aquire() 때문에 block되어 S2실행 못함. 
시간 지나 P1으로 차례 넘어간 경우 S1실행, P2 release() 되어 S2 실행됨. (O)
*/

 

은행계좌 문제, 세마포어 자세히

https://almighty-denver.tistory.com/275

 

[운영체제] 은행 계좌 문제 (세마포어)

세마포어를 사용해 임계구역 문제를 상호 배타 방식으로 해결하고, 프로세스 실행 순서를 제어한다.  1. Critical Section 임계 구역 문제 1) 임계 구역 문제란?임계 구역 : 멀티 프로세스 환경에서

almighty-denver.tistory.com

 

2. 전통적 동기화 문제

  • 1) 생산자-소비자 문제 Bounded Buffer Problem
  • 2) 공유 데이터베이스 접근 Readers-Writers Problem
  • 3) 식사하는 철학자 문제 Dining Philosopher Problem

 

1) 생산자-소비자 문제 Bounded Buffer Problem

(1) 생산자-소비자 문제

  • 생산자 프로세스가 데이터를 생산하면 소비자 프로세스는 그것을 소비한다.
  • -> 버퍼는 생산자와 소비자가 모두 접근하는 임계 구역인 셈이다.
  • -> 세마포어를 사용해서 상호 배제로 문제를 해결할 수 있다.
  • 예) 컴파일러(생산) > 어셈블러(소비), 파일 서버(생산) > 클라이언트(소비), 웹 서버(생산) > 웹 클라이언트(서버)

생산자 소비자 문제 

 

[운영체제] 생산자-소비자 문제

1. 생산자-소비자 문제 Bounded Buffer Problem1)  생산자-소비자 문제생산자 프로세스가 데이터를 생산하면 소비자 프로세스는 그것을 소비한다.-> 버퍼는 생산자와 소비자가 모두 접근하는 임계 구역

almighty-denver.tistory.com

세마포어를 사용해 임계구역 문제를 해결했고, 

세마포어 2개를 추가해 busy wait 문제를 해결했다.

 

2) 공유 데이터베이스 접근 Readers-Writers Problem

 

 

[운영체제] 동기화 예제 2) 공유 데이터베이스 접근 문제

1. 공유 데이터베이스 접근 문제 Readers-Writers Problem1)  공유 데이터베이스 접근 문제Reader : 데이터 읽기만. 수정 안함Writer : 데이터 읽고, 수정DB를 임계구역으로 다수 사용자 상호 배타적으로 접

almighty-denver.tistory.com

 

 

3) 식사하는 철학자 문제 Dining Philosopher Problem

(1) 식사하는 철학자 문제

동기화 문제 해결하다보니 교착 상태 발생했다.

(2) 교착 상태

교착 상태란?

: 두 개 이상의 작업이 서로 상대방의 작업이 끝나기 만을 기다리고 있기 때문에 결과적으로 아무것도 완료되지 못하는 상태

교착상태 필요 조건

  • Mutual exclusion (상호배타)
  • Hold and wait (보유 및 대기)
  • No Preemption (비선점) : 자원 할당 받으면 스스로 반납할 때 까지 자원 사용하도록 허용 (뺏지 않음)
  • Circular wait (환형대기) (자원 할당도 상에 원이 만들어짐)
  • -> 이 네 조건을 다 만족하면 교착상태가 발생할 수도있다.

 

자원 할당도란?

어떤 자원이 어떤 프로세스에게 할당되었는가?

어떤 프로세스가 어떤 자원을 할당 받으려고 기다리고 있는가?

자원: 사각형, 프로세스: 원, 할당: 화살표

  • 자원할당도에서 알 수 있는것
    • R1에 점 : 리소스 1개이다.
    • R1->P2 : P2가 R1 사용중이다.
    • P2가 R1 사용하려고 요청중이다.

 

자원 할당도란?

  • 아래 두가지를 나타낼 수 있는 방법
  • 어떤 자원이 어떤 프로세스에게 할당되었는가?
  • 어떤 프로세스가 어떤 자원을 할당 받으려고 기다리고 있는가?

데드락이 일어났을 때 자원 할당도 

데드락이 일어났을 때 자원 할당도

데드락이 일어나지 않게 하는 방법

: 교착상태 필요조건 중 하나라도 만족시키지 않으면 된다.

 

환형 대기를 깨는 방법

짝수번 프로세스는 왼, 오른쪽 들기,

홀수번 프로세스는 오, 왼쪽 들기

이렇게 바꾸면 환형 대기가 생기지 않는다. 

 

 

 

요약

운영체제에서 제일 중요한 작업 : 프로세스 관리

-> CPU 스케줄링, 프로세스(쓰레드)동기화( : 프로세스들이 자원 공유하고 영향주고 받으므로 중요)

프로세스 동기화에서 중요한 문제 : 임계구역, Bisy wait, Ordering.. -> 이런 문제 해결하다보니 교착상태 발생함.




728x90
반응형