5장 병행프로세스와 동기화

CHO·2022년 12월 19일
0

OS(운영체제)

목록 보기
3/18

순서대로 공부 x
내가 부족하다고 느끼는 부분, 더 알아가고싶은 주제부터 공부한다.

핵심키워드:

병행이란? 함께 돌아간다. 동시에 실행이된다는 의미

1.병행프로세스

발생할 수 있는 문제점은?
1. 공유자원의 동시 사용의 한계
2. 자료 교환을 위한 통신상의 문제
3. 교착상태의 문제 (요게 데드락현상!)
4. 하나의 기능을 공통적으로 사용하는 두 프로세스 간의 동기화 문제

  1. 상호배제
    경쟁상태 : 프로세스들이 공유 데이터에 대해 서로 접근을 시도하는 상황 (이게 어떤 상황인데? 예시를 더 알려달라)

-> 임계자원 : 두 개 이상의 프로세스가 동시에 사용할 수 없는 자원 (그치 컴퓨터도 용량 한계가 있을테니까, 동시에 사용할 수 없는 부분이 꼭 존재하기 마련일겨~)
이에 대해 접근하고 실행하는 포로그램의 코드 영역을 임계영역이라고 한다.

임계 자원 안에 있는 영역이~임계영역

임계영역을 어떻게 성공적으로 실행시키지? (코드 어떻게 돌아가게 할까?)

"상호배제" 너 나와!

  1. 상호배제를 위한 소프트웨어 기법
    여기서~! 그 어렵다는 알고리즘이 무더기로 나온다 흑흑 ㅠㅠㅠ이해를 못해도 좋으니 일단 이런게있구나~라는 마!음!으!로! 가보자고!!

parbegin/parend 구조?

Peterson 알고리즘
: 두 프로세스 간의 상호배제를 해결한 알고리즘

Bakery 알고리즘
: 여러개의 프로세스들을 대상으로 하는 생호배제 알고리즘
: 임계영역에서 빠져나왔을 때 자신의 값을 0으로 반환함.이를통해 다른 프로세스가 임계영역에 진입할 수 있도록 해줌

임계영역의 진입을 막기 위해서는 while문을 계속해서 돌려야한다.
이런 현상을 바쁜대기(busy wait) or 스핀락(spinlock)이라고 한다

4.상호배제를 위한 하ㄴ드웨어 기법
-인터럽트 금지를 위한 사용기법

!임계영역 처리 동안 모든 종류의 인터럽트를 금지시킨다.

5.세마포어
: 세마포어는 세 개의 특수한 명령들만 접근할 수 있게 허용되는 보호 변수? 오 수호신 같은건가?

1) 이진.세마포어 : 0과 1의 이진값만을 가진다면 이진 세마포어라고 함
2) 계수(정수).세마포어 : 음이 아닌 모든 정수가 될 수 있으면 계수 혹은 정수 세마포어라고 한다.

block과 wakeup 방식
busy-wait 방식

세마포어를 활용한 상호배제

6.모니터
: 공유데이터들과 이들에 대한 임꼐영역들을 관리하는 소프트웨어의 구성체를 말함

왜 관리를 하지? 으응 그건 모니터의 진입 프로세스를 제한시키면, 상호배제를 자연스럽게 실행할 수 있는데 이게 ㄷ왜 중요한진 한번 찾아볼게^^...!


교착상태를 알아보자!

교착상태란
: 자원이 한정적인 상황에서 두 개 이상의 프로세스가 각자 먼저 하ㅗㄱ보한 자원을 가진채 상대방의 자원을 필요로할 경우 아무일도 못하고 계속 기다리는 것을 의미

발생하는 문제점
1. 해당 프로세스들이 더이상 실행되지 못해 사용자들에게 응답해주지 못한다
2. 보유 자원들이 교착상태에서 벗어나기 전까지는 전혀 활용되지 못한다.

즉, 제때 쓰지 못하고 프로세스와 자원들이 낭비되고 있다는 사실! 또한 사용자한테 불편함을 안겨주니 이거~ 완전 별로잖아!!!! (=무한대기상황과 비슷함ㅇㅇ)

무한대기?
운영체제가~ 프로세스들의 다양한 요청을 처리해주다가 몇몇 프로세스가 매우 오랜시간 ㅓ비스를 받지 못하는 경우를 말해!

무한대기와 교착상태의 ㅊ이점?

오랜시간 후에라도 외부적 조치없이 무한대기로부터 벗어나 서비스를 받을 수 있다는 상태가 바로 무한대기??

  1. 자원?
    교착상태를 일으키는 원인
  1. 선점가능성
    :선점 가능자원과 선점 불가능한 자원 2가지로 나뉜다.

1)선점가능자원 : cpu나 메모리 같은 자원처럼 한 프로세스에 의해서 사용 도중에 선점돼서 다른 프로세스에 할당해주다가 아시 원래 프로세스에게 돌려줘도 되는 자원을 의미함

2) 선점불가능 자원 : 선점이 될 경우 자원을 뺏긴 프로세스는 정상적인 진행을 포기해야하는 불이익을 받게 되는 경우의 자원을 의미함

사용방법에 따른자원의 구분?
1) 고융가능 자원
: 한 프로세스에게 할당된 자원을 동시에 다른 프로세스가 할당받아 사용하는 자원

2)배타적 사용자원
: 한 프로세스에게 할당된 자원을 동시에 다른 프로세삭 할당받아 가팅 사용할 수 없는 자원

profile
매일 개념 익히고 적용합니다

0개의 댓글