COMPUTING/OPERATING SYSTEM

혼공 컴퓨터구조 + 운영체제 5주차 공부 인증

Zeromm 2024. 1. 30. 11:32

여러 가지

안녕하세요. Zeromm입니다.

다시 새로운 한 주가 시작되었네요. 저는 어제 29일부터 다시 클래식기타 연습에 들어갔습니다. 3월 1일에 있을 연주회 준비 때문에 다 같이 모여서 연습하고 있습니다. 연습 시간은 2 to 10인데, 새벽에 헬스 다녀오면 오전시간이 꽤 남아있어서 혼공 5주 차도 쓰윽 공부할 수 있었네요. 이렇게 갓생 살다가 개강하고 바로 번아웃하면 안 되는데ㅎㅎ... 주말에는 좀 놀아야겠다고 느끼는 요즘입니다.

이번 주와 다음 주 혼공 분량은 조금 짧습니다. 계속 Chapter 3장 분량씩 매주 공부했었는데, 이제는 2장입니다. 그렇다고 절대 적은 분량은 아니고, 내용도 조금 복잡합니다. 그럼 연습 가기 전에 얼른 다 써 봅시다!

 

 

CHAPTER 12 프로세스 동기화

우리가 사회 구성원으로 살아갈 때, 다양한 상황 속에서 협력하며 살아갑니다. 그것은 업무 환경일 수도 있고, 사회생활일 수도 있고 정말 많겠죠. 물론 구성원 한 명 한 명이 탁월한 센스를 발휘하며 좋은 능률을 보여줄 수도 있습니다. 그렇지만 대다수 사회가 제시하는 '틀' 안에서 행동합니다. 그것이 효율적이고, 무엇보다 남들이 행하는 방식이거든요. 일관성 있는 행동을 보이며 서로 협력해야 하는 것이 사회를 살아가는 우리의 모습이기도 합니다.

컴퓨터도 똑같습니다. 컴퓨터라는 작은 사회 속에 다양한 부품들은 같은 '리듬'을 따라 움직입니다. 그 예로 앞에서 하드웨어적인 리듬인 '클럭'과 소프트웨어적인 리듬인 '스레드'를 배웠습니다. 클럭 속도에 맞춰 프로그램이 동작할 수 있다고 했었죠. 그렇다고 이 리듬만으로 모든 게 해결되진 않습니다. 프로그램들은 컴퓨터 사회가 제공하는 제한된 자원들을 가장 효율적으로 사용하기 위해 노력해야 합니다. 그러기 위해서 프로그램들끼리 암묵적인 '룰'이 필요하죠. 마치 사회 구성원들처럼 그들은 행동하는데, 이것을 '동기화'라고 합니다.

협력 = 악수라!

 

책에서는 동기화가 '작업들 사이에서 수행시기를 맞추는 것'이라고 설명합니다. 수행시기를 맞춘다는 게 어떤 목표를 해내기 위해 동시에 실행된다라기보다는, 효율적인 '자원 배분 순서'를 정한다고 보는 게 정확할 듯싶습니다. 프로그램들은 동기화를 통해 1) 실행 순서를 제어하고 2) 제한된 자원에 제한된 접근을 가능(상호배제)하게 합니다. 제한된 자원은 곧 '공유자원'이라는 말로 불리며, 이 자원에는 오직 한 프로세스만이 접근할 수 있기에 다른 프로세스를 제한하는 구역처럼 여겨집니다. 그래서 공유자원을 접근하는 코드 영역을 '임계 구역'이라는 말로 우리 책에서는 설명하고 있었습니다.

2번째 절에서는 3가지 방법으로 동기화하는 방법을 알려줍니다. 첫 번째 방법은 '뮤텍스 락'입니다. 뮤텍스락은 탈의실 메커니즘을 이용한 동기화 방법입니다. 임계 영역에 'lock'이라는 이진 전역변수를 걸어줌으로써 프로세스의 입출입을 제한합니다. 이것을 일반화한 방법이 세마포어라는 방식입니다. 세마포어는 여러 대의 기차가 신호기에 맞춰 멈추고 지나가는 '전철역'과 닮아있는 방식입니다. 전역변수 S를 사용해 프로세스를 기다리게 할지, 출입하게 할지 결정짓습니다. 두 방법 모두 자원에 대한 상호배제를 위한 동기화를 달성할 수 있습니다.

옛날에는 물리봉으로 기차 제어했었는데..

모니터 기법의 경우 자원과 자원으로 향하는 인터페이스가 특징적이었습니다. 이 방법은 특이하게 고급 언어 수준에서 객체 지향 설계가 이루어진다고 합니다. ( 상호 배제 기법, 모니터 (Monitor) < 도리의 디지털라이프 (skby.net) ) 뒤에 나올 교착 상태를 방지하는 기능도 하는 기법이라고 합니다. 그럴 법도 한 게 오직 하나의 스레드만을 접근시키고 나머지 스레드들은 큐에서 대기시키니 교착 상태에 빠질 수가 없습니다. 이 외에도 다양한 동기화 기법이 있는 듯 하니, 추가적인 학습을 진행하면 좋을 듯합니다.

 

CHAPTER 13 교착 상태

이번 13장은 되게 익숙했었습니다. 테이블에 앉아있는 5명의 철학자도 제가 공부했던 컴공개론서에 있었던 기억이 있습니다 ㅋㅋ 그때 교착상태를 배우면서 함께 '병목 현상'도 배웠던 걸로 기억합니다. 전자의 경우, 제한된 자원을 다 같이 쓰려는 바람에 꼼짝도 못 하는 경우를 말했고, 후자는 집중적인 자원 사용으로 속도가 느려지는 현상을 말합니다. 두 경우 효율성의 저하를 낳기 때문에 엔지니어들은 해결법과 예방법 모두 고심하게 됩니다. 

도로에서 볼 수 있는 교착상태와 병목상태

교착상태를 막으려면 교착 상태가 왜 발생하는지를 알아야 합니다. 마치 병을 치료하는 의사가 병에 대해 잘 알고 있는 것과 마찬가지죠. 교착상태는 상호배제와 점유&대기, 비선점, 원형 대기 이 4가지 요건을 충족시켰을 때 발생합니다. 그래서 이 조건 어느 하나를 깨뜨려준 채 유지한다면 교착상태는 발생하지 않겠지요. 대개는 원형 대기를 깨뜨려줌으로써 교착상태를 예방한다고 합니다.

또한, 교착상태가 발생하더라도 얼마든지 해결할 수 있는 방법은 존재합니다. '선점에 의한 회복'과 '강제종료에 의한 회복'이 있습니다. 앞서 봤다시피 비선점 조건을 깨뜨려주기 위해 자원 '선점'을 해버리면 문제는 해결됩니다. 또한, 아예 이 상태를 무시하고 프로세스를 강제종료시키는 방법도 있습니다. 제가 게임하다 멈추면 ctrl+alt+del 단축기로 관리자를 불러내 강제종료한 것과 비슷하네요. 이 방법을 사용하면, 진행 중이던 작업 상태를 날려버릴 가능성도 있습니다. 그렇지만 꼼짝도 못 한 채, 프로세스가 도로 위에 갇히는 것보다 새로운 도로에서 프로세스를 다시 시작하는 것이 사용자나, 컴퓨터 입장에서 모두 좋을 수도 있겠습니다.

기본미션 - p.363의 확인문제 1번 풀고 인증하기

1번은 옳은 설명입니다. 임계구역을 가리키는 전역변수 lock을 잠근 뒤 (False) 임계구역에 진입합니다.

2번은 뮤텍스락의 일반화된 방법이니 맞는 설명입니다.

3번은 뮤텍스락과 세마포의 차이에서 비롯되는 특징입니다. 세마포는 순서제어까지 해낼 수 있습니다.

4번은 세마포와 뮤텍스락의 단점입니다. 그러나 세마포는 프로세스를 대기상태로 바꿈으로써 바쁜 대기를 피할 수 있습니다. 그러므로 '해야 합니다'라는 표현에서 틀린 선지가 되겠습니다.

선택미션 - CH12의 임계구역과 상호배제 개념을 정리하기

앞에서 '임계구역'은 공유자원에 접근하는 코드 중 동시에 실행하면 문제가 생기는 코드 영역을 말합니다. 때문에 임계 구역에 진입한 프로세스가 있다면 다른 프로세스가 접근해선 안되지요. 이렇게 접근을 제한하는 것을 '상호배제' 원칙이라고 합니다.

필기자료

컴퓨터 구조 + 운영체제_5주차.pdf
3.73MB

 

신호기 사진 : 경부선 일반철도에도 첨단신호시스템 - 아시아경제 (asiae.co.kr)

병목현상  : 병목 현상 - 나무위키 (namu.wiki)

교착상태 : [OS] 교착 상태(deadlock)의 개념과 발생 원인 | Hoyeon (hoyeonkim795.github.io)

마무리 및 소감

저번 주에 제가 카이스트 다녀왔습니다. 저희 학교 교수님들과 저희 학교 출신 카이스트 교수님을 뵈면서 많은 이야기를 나눌 수 있었습니다. 특히 연구하는 생명과학자에 대해 많이 여쭈어보았는데요, 연구 쪽 비전이 상당하는 것을 알고 조금은 꿈이 부풀기 시작했습니다. 특히나 요즘은 연구함에 있어서 많은 재능과 경험을 요구한다고 합니다. 통계, 빅데이터, 인공지능, 공학 등 다양한 분야에도 힘을 쓸 수 있으면 연구가 더 풍부해지고, 유니크한 연구진이 될 수 있을 것 같다고 들었습니다. 심지어는 이런 타 분야들도 섭렵한 연구 인재들을 양성하는 것은 이제 불가피하다고 합니다. 제가 방학마다 혼공학습단과 컴퓨터공부를 하고 있는 게 어쩌면 더 큰 꿈으로 도약하기 위한 발돋움이 될 수 있지 않을까 싶습니다.

블로그에 어떤 사진을 올려야 할지가 참 어렵네 ㅎㅎ..카이스트 시설이 정말 엄청나다는 것 정도만 알고 계십쇼!

 

11시에 끝내기로 마음먹었는데, 벌써 30분이나 더 지나버렸네요. 그래도 너무 늦지 않아서 다행입니다. 얼른 마무리하고 점심 식사하러 가야겠습니다. 다들 즐거운 한 주 되시길 바라겠습니다. 

 

출처

혼자 공부하는 컴퓨터구조 + 운영체제 p.340 ~ p 387