본문 바로가기
카테고리 없음

[혼공컴운] 5주차_어떻게 해야 자원할당을 잘했다고 소문이 날까?

by Nam Kyeongmin 2024. 8. 12.

무시 아니고 다소 과격한 인사라고 해두죠

 

안녕하세요, 컴퓨터구조+운영체제 5주차 리뷰를 들고 온 2024년 8월입니다.

시간은 순간순간에는 참 천천히 흐르는 것 같다가도 멀리서 보면 빠르게 흘러가는 것 같아요.

이번 5주차에서는 프로세스, 스레드에 자원 할당하는 방법, 생길 수 있는 문제들,

그리고 해결하는 방법 위주로 학습을 진행했습니다.

그래서 제목도 '어떻게 해야 자원할당을 잘했다고 소문이 날까?'

ㅋㅋㅋㅋ 찰떡이죠?

그럼 지금부터 학습 리뷰, 레츠고~!

 

 

 

먼저 숙제인증 가보겠습니다~

- 기본 숙제(필수): p. 363의 확인 문제 1번 풀고 인증하기

기본 숙제(필수): p. 363의 확인 문제 1번 풀고 인증하기


- 추가 숙제(선택): Ch.12(12-1) 임계 구역, 상호 배제 개념을 정리하기

1. 임계구역

임계구역에 대한 이해를 위해서는 공유 자원에 대한 배경지식을 아는 것이 필요하다.

거창할 것 없이 공유자원은 일종의 '전역변수' 개념을 떠올리면 이해가 편하다. 

자원에 접근할 수 있는 프로세스/스레드의 제한이 없는(공개된) 경우, 공유자원이라고 부른다.

이러한 공유자원 중 동시에 여러 프로세스/스레드가 접근하면 오류가 발생하는 자원이 있는데

이들을 '임계구역'으로 구분한다.

2. 상호 배제

그렇다면 상호 배제란 무엇인가? 어렵게 생각할 것 없다.

이미 우리가 살펴 본 임계구역을 사용하기 위해 지켜야 할 조건이라고 볼 수 있다.

정의는 '한 프로세스가 임계구역에 진입했을 시, 다른 프로세스는 임계 구역에 진입 불가함'.

즉, 임계구역에 해당하는 자원을 원활히 사용하기 위해 지켜야 할 조건으로 이해 가능하다.

 


 

비교적 간단한 숙제 인증이 끝났다. 조금 아쉬우니 학습을 더 리뷰해 보자.

이번엔 사진으로 리뷰해 보는 시간을 가져보겠다.

세마포 wait와 signal을 학습하며

 

상호배제가 잘 이루어진 임계구역 사용방법을 위해 이용하는 도구 종류인 세마포를 학습하면서

wait함수와 signal함수를 공부하다가, signal함수의 if 조건문이 처음에는 이해가 되지 않았다.

프로세스가 작업하기 전 wait 함수를 호출하여 공유자원(S)을 1 감소시키고,

임계 구역 작업완료 후 signal 함수를 호출하여 공유자원(S)를 1 증가시키면,

if 문의 조건문은 S<=0이 아니라 S>=0 이여야 되는 것이 아닌가 의문을 가졌다.

 

구체적인 상황에 개념 적용해보기

 

그러나 옆 페이지에 나온 예시를 읽어보며 구체적 상황에 대입하여 바라보니

공유자원(S)의 개수가 프로세스 개수보다 작을 때, 다시 말해 프로세스의 개수가 많을수록

공유자원은 계속해서 감소되어(공유자원을 할당받지 못한 프로세스는 큐에 적재되어야 함)

사용 가능한 공유자원이 생겨 signal 함수를 호출했을 때에도 S가 마이너스일 경우가 발생하기 때문에

S는 S>=0이 아닌 S<=0의 조건을 가져야 한다는 것이다.

만약 전자의 조건으로 함수를 실행하면 사용가능한 공유자원이 생겨도 큐에 있는 프로세스에 자원을 할당할 수 없다.

이번 학습에서 나는 구체적인 상황 대입, 예시가 주는 학습의 힘을 제대로 경험했다 ㅋㅋ

 

식사하는 철학자 문제

 

프로세스 할당 중 발생할 수 있는 교착 상태에 대해 학습하면서

대표적인 예시로 '식사하는 철학자' 문제를 접했다. 전에 학교 전공으로 운영체제를 학습하다가

부족함을 느껴서 개인공부, 혼공컴운을 시작했다는 말을 한 적이 있는데, 그때 본 예시라 괜히 반가웠다.

그리고 그때 완전한 이해를 하지 못했다고 생각했는데 작가님의 설명으로 다시금 찬찬히 살펴보며

교착 상태에 대한 이해를 다질 수 있어서 좋았다. (왜 교착상태 문제가 발생한 것인지에 대한 이해 굿)

 

철학자가 식사하게 하려면

 

더하여 교착상태 해결방법(예방, 회피, 검출 후 회복)을 학습할 때 이 철학자 예시 문제를

거듭 설명하며 해결 방법을 적용한 결과를 함께 살펴볼 수 있어서 정말 좋았다. 👍

 

 

여담으로, 매주 학습 방식이 바뀌어서 나름의 스트레스, 신경이 쓰였는데 오히려 좋다.

다양한 방식으로 시도해 보면서 학습을 정리하니 기억도 더 잘 남는 것 같고

내가 어떤 방식으로 정리했을 때 더 잘 정리되는지 or 기억에 남는지를 직접 경험으로 파악할 수 있어

학습에 대한 분석이 명확해진다. (완전 럭키비키잖아~~?)

혹시 망설이거나 고민인 분들이 있다면 주저하지 말라는 조언을 남긴다.