1) 데드락

ㅁ 교착상태(Deadlock)
  - 2개 이상의 프로세스들이 자원을 점유한 상태에서 각각 다른 프로세스들이

     점유한 자원을 요청하여, 서로 상대방의 작업이 끝나기를 무한정 기다리는 

     현상

  - 상호배제에 의해 발생되는 문제점

  - 예) 골목길을 주행하던 차량이 마주오는 다른 차량을 마주쳤을 때, 상대방

           이 비켜주기만을 기다리는 상태


ㅁ 교착상태의 조건

  - 상호배제, 점유대기, 비선점, 순환대기

    = 상호배제(관련포스트) - http://blog.naver.com/donjobani/30115762196

    = 점유대기 : 자원을 점유하고 있으면서, 다른 프로세스에 할당된 자원을

                       할당받기 위해 대기하고 있는 상태

    = 비선점(관련포스트) - http://blog.naver.com/donjobani/30115688758

    = 순환대기 : 각 프로세스가 순환적으로 다음 프로세스의 요구자원을 가짐


ㅁ 교착상태의 해결

  - 예방, 회피, 발견, 회복 기법


  * 예방(Prevention) 기법

    = 교착상태가 발생되기 전에 제어하는 기법

    = 교착상태의 조건 중 하나를 제거(부정)하여 발생되지 않게 함

    = 일반적으로 자원의 낭비가 가장 심함

  - 상호배제 부정

    = 실현되지 않음. 다수의 프로세스가 공유자원을 동시에 사용할 수 있도록 함

  - 점유대기 부정

    = 프로세스 실행 전 모든 자원을 할당함으로서 대기상황을 제거

  - 비선점 부정

    = 자원을 점유하고 있는 프로세스가 다른 자원을 필요로 할때, 점유 중인 자원

       을 반납

  - 순환대기 부정

    = 자원에 고유번호를 할당한 후, 프로세스가 점유한 자원의 고유번호에 기준

       하여 어느 한 방향으로만 요구하도록 함


  * 회피(Avoidance) 기법

  - 교착상태가 발생하면 이를 피해나가는 기법

  - 은행원 알고리즘(Banker's Algorithm)

    = dijkstra가 제안했으며, 은행에서 현금을 할당하는데에서 유래

    = 각 프로세스에게 자원을 할당하여 교착상태가 발생하지 않음

    = 모든 프로세스 작업이 완료되는 상태는 안전상태

    = 교착상태가 발생할 수 있는 상태를 불안전상태


  * 발견(Detection) 기법

  - 교착상태의 발생여부를 점검하여, 발견하는 기법 


  * 회복(Recovery) 기법

  - 교착상태를 일으킨 프로세스를 종료하거나 할당된 자원을 선점하여 자원,

     프로세스를 회복




2) CPU 처리



3) 다중프로세서

다중 처리(多重處理)는 컴퓨터 시스템 한 대에 둘 이상의 중앙 처리 장치(CPU)를 이용하여 병렬로 처리하는 것을 가리킨다. 또, 이 용어는 하나 이상의 프로세서를 지원하는 시스템의 능력, 또는 이들 사이의 태스크를 할당하는 능력을 가리키기도 한다.[1] 다중 처리 시스템(Multiprocessing System)은 다중 처리가 적용된 시스템을 뜻한다.

다중 처리 시스템에서는 여러 개의 프로세서가 하나의 메모리를 공유하여 사용하는 시스템이며, 일반적으로 하나의 운영 체제가 모든 프로세서들을 제어한다.

[편집]특징

  • 프로세서를 여러 개 사용하여 여러 개의 작업을 동시에 수행함으로써 작업 속도를 높일 수 있다.
  • 프로세서 중 일부에 문제가 발생하더라도 다른 프로세서를 이용해 처리할 수 있으므로 신뢰성이 높다.


4)세마포머

1.상호배제를 준수하기 위한 기법인 세마포어의 개요

 .세마포어(Semaphore)의 정의

    .여러개의 프로세스에 의해서 공유되는 자원의 접근제어를 위한 도구

 .세마포어의 특징

    .공유자원에 대한 베타제어

    .상호배제를 위한 알고리즘

    .공통된 변수를 매개로 각 프로세스 진행여부 결정

 

 

2.세마포어의 종류

 - 이진세마포어 : 0,1 값만을 가짐(상호배제,프로세스 동기화)

 - 계수세마포어 : 0이상의 모든 정수 값(생산자/소비자 관계 등)

 

2.세마포어의 동작원리 및 사용

 .세마포어의 동작원리

      P(s) : Delay Until s > 0 ;

               S : s 1;

      V(s) : s = s + 1;   

 

 

P : 임계영역의 진입을 결정하는 함수

     s0보다 크면 호출한 프로세스가 자원을 배정받고 s값에서 1을 뺌으로서

     타 프로세스의 진입을 막는다.

V : 프로세스가 임계영역을 벗어나서 하는 작업

     s값에서 1을 더함으로써 타 프로세스의 사용을 허가한다.

.세마포어의 사용

   1)세마포어로 제어할 자원을 설정한다.

   2)해당 자원을 사용하기 전에 세마포어값을 확인한다.

   3)세마포어 값이 0보다 크면 자원을 사용하고, 세마포어값을 1 감소시킨다.

   4)세마포어 값이 0이면 0보다 커질때까지 block되며,

      0보다 커지게 되면 2)번부터 시작하게 된다.

 

3.세마포어의 관리 및 세마포어 조작

 .원자화된 연산 필요

    .세마포어 정보는 유저레벨의 함수가 아닌 커널에서 전용 구조체를 이용하여 관리

 

4.P연산과 V연산을 통한 세마포어의 적용 방법



1. 세마포어 왜 필요?
   한정된 자원을 여러개의 프로세스들이 사용해야 할 경우, 프로세스들 간에 자원 사용시 충돌이 없도록 하기
위해서 세마포어를 사용

2. 사용예(일상적인 예를 사용)
   사람 두명이 있고, 화장실 대변기는 한개이다. 두명이 동시에 화장실을 사용할수 없으므로, 두명중 우선
순위가 높은 사람에게 먼저 화장실 사용을 허가한다. 사용중인 화장실은 다른 사람이 사용할수 없다.
사용이
끝난 화장실은 기다리던 다른 사람에게 사용을 허가한다.

뮤텍스 와 세마포어 어떻게 다른가? 자바

2011/06/09 12:02

복사 http://blog.naver.com/cabsoft88/90115377264

이 글은 Niclas Winquist씨가 2005년에 쓴 화장실에 비유한 글을 번역하였습니다.

 

뮤텍스 : 뮤텍스는 화장실에 들어가기 위한 열쇠로 비유할 수 있습니다. 즉 화장실에 들어갈 수 있는 열쇠를 한 사람이 갖고 있다면, 한 번에 열쇠를 갖고 있는 그 한 사람만이 들어갈 수 있습니다. 화장실에 열쇠를 갖고 있는 사람이 들어가 볼일을 다 본 후에는 ?줄을 서서 기다리고 있는(대기열-큐) 다음 사람에게 열쇠를 주게 됩니다.  

 

공식적인 정의(심비안 개발자 라이브러리에서 발췌) : 뮤텍스는 한 번에 하나의 쓰레드만이 실행되도록 하는 재 입장할 수 있는 코드 섹션에 직렬화된  접근이 가능하게 할 때 사용됩니다. 뮤텍스 객체는 제어되는 섹션에 하나의 쓰레드만을 허용하기 때문에 해당 섹션에 접근하려는 다른 쓰레드들을 강제적으로 막음으로써 첫 번째 쓰레드가 해당 섹션을 빠져나올 때까지 기다리도록 합니다.

 

뮤텍스는 값이 1인 세마포어입니다.

 

세마포어: 세마포어는 빈 화장실 열쇠의 갯수라고 보면 됩니다. 즉, 네 개의 화장실에 자물쇠와 열쇠가 있다고 한다면 세마포어는 열쇠의 갯수를 계산하고 시작할 때 4의 값을 갖습니다. 이 때는 이용할 수 있는 화장실 수가 동등하게 됩니다. 이제 화장실에 사람이 들어갈 때마다 숫자는 줄어들게 됩니다. 4개의 화장실에 사람들이 모두 들어가게 되면 남은 열쇠가 없게 되기 때문에 세마포어 카운트가 0이 됩니다. 이제 다시 한 사람이 화장실에서 볼일을 다 보고 나온다면 세마포어의 카운트는 1이 증가됩니다. 따라서 열쇠 하나가 사용가능하기 때문에 줄을 서서 기다리고 있는 다음 사람이 화장실에 입장할 수 있게 됩니다.

 

공식적인 정의(심비안 개발자 라이브러리에서 발췌): 세마포어는 공유 리소스에 접근할 수 있는 최대 허용치만큼 동시에 사용자 접근을 할 수 있게 합니다. 쓰레드들은 리소스 접근을 요청할 수 있고 세마포어에서는 카운트가 하나씩 줄어들게 되며 리소스 사용을 마쳤다는 신호를 보내면 세마포어 카운트가 하나 늘어나게 됩니다.


Posted by 모과이IT
,