마지막챕터 : 컴퓨터
[ 소통을 원하지는 않습니다 ]
[혼공컴운] 혼공학습단 13기 활동 회고((1.01^365=?)


활동 기간: 2025.01.06 ~ 02.23(6주)
책이름: 혼자 공부하는 컴퓨터 구조 + 운영체제 
저자: 강민철
출판사: 한빛미디어
판본 표시: 초판 발행. 2022년 08월 16일

출처: 혼공게시판




입문자용 책을 위한 소소한 고찰..

 


한빛미디어에서 운영하는 "혼공학습단" 13기에 참여했습니다. 

개발자는 아니고, 컴퓨터, 네트워크, 소프트웨어를 하찮은 수준에서 관리하고 있습니다. 워라벨이라는 시소(seesaw)가 한 쪽으로 기울어진 게 아니라 완전히 주저앉은 직장입니다. 단점은 굳이 말하지 않아도 짐작할 수 있겠지만, 유일한 장점은 업무난이도가 낮고 상대적으로 여유시간이 있는 편이라는 점입니다. 

AI 등장으로 다양한 분야에서 혼자 학습할 수 있는 환경이 훨씬 풍부해졌다고 생각되지만, 초보적인 영역에서는 멘토 혹은 가이드가 꼭 필요하다고 보는 편입니다. 

평소 기본을 다지기 위해 몇 권의 컴퓨터 기초 관련 서적과 유튜브 강좌들을 보며 초심자들을 위해 씌여지는 책들이 가졌으면 하는 미덕들이 떠올랐습니다. 


1. 초보자용 서적은 "쉽게" 씌여지는 게 당연하지만, "쉽게"라는 부사는 넣지 않는 않는 것이 좋을 것 같습니다. 


배경지식이 거의 없다시피한 초심자나 비전공자에게는 전공 관련 서적이 대부분 가파른 언덕입니다. "쉽게"라는 부사가 적당한 주기로 등장하는 경우가 많은데, 읽는 사람이 쉽다고 느끼는 경우는 생각보다 많지 않습니다. 오히려 "쉽게" 쓴 걸 본인의 능력이 부족해서 이해 못하는 게 아닌가하는 자괴감에 빠지는 경우가 생각보다 꽤 있다고 보시는 게 좋을 것 같습니다. 자매품 "간단하게도" 있습니다. 
"쉽고 간단하게" 썼다는 데 그 부사의 뒷부분이 하나도 이해가지 않으면 책을 덮는 사람들이 있습니다. 
"쉽게", "간단하게"는 정말 주의해서 적확하고(=정확하게 맞아 조금도 틀리지 아니하다), 정확하게(=바르고 확실하다) 사용하면 좋겠습니다. 습관적으로 부사를 넣어서 책의 페이지수를 늘리지 말아주세요. 나무가 웁니다. 


2. 입문자 혹은 비전공자용 서적들은 용어에 해당 업계에서 사용하는 원어(주로 영어)를 같이 써주면 좋겠습니다.  


이어서 뭔가 설명이 잘 납득하지 못해서 학습자가 다시 검색, 질문해서 헤쳐나갈 때가 많은데, 책을 쓴 사람이 이해를 돕기 위해, 혹은 지은이가 더 적확한 뜻을 담고 있다고 생각하는 단어로 설명한 경우에 검색결과가 별로 좋지 않을 때가 있습니다. 이때 원어가 같이 써 있으면 도움이 된다고 생각됩니다. 

 


3. 문장을 길게 쓴다고 해서, 부사를 더 많이 넣는다고 해서, 더 쉽고 자세하게 설명할 수는 없습니다. 


이건 누구나 하는 실수 아닌 실수라고 생각됩니다. 수학자 블레즈 파스칼조차 "시간이 없어서 길게 썼네"라고 할 정도로 글을 간결하게 쓰는 건 아주 어려운 일입니다. 대개 내용이 좋지 않은 책들은 부실한 설명을 보충하려고 문장이 장황하게 길어지고, 내용이 좋은 책들은 중요하고 관련있는 내용들이 간결하고 빽빽하게 들어차는 바람에 읽는 이를 주눅들게 합니다. 
이런 부분을 모두 개선해야 좋은 초보자용 책이라고 생각되지만, 이게 쉬운 일은 아니죠. 그런 책이 발견되면 집에 신주단지 모시듯 보관할 겁니다.  

 


3. 가독성도 중요하지만, 흐름을 유지하도록 구성하는 것도 중요합니다.

 
비단 초보자용 책들 뿐 아니라 대부분의 서적에 해당되는 부분이지만, 눈이 시원시원하게 페이지가 만들어졌으면 좋겠고, 불필요하게 책의 앞뒤로 이동하지 않도록 구성하는 게 좋을 것 같습니다. 간단한 퀴즈나 복습용 퀴즈의 답을 굳이 페이지 뒤에 배치하지 말아주세요. 왔다갔다 하느라 정신만 사납습니다. 
어차피 초보자들의 약간 불성실하게(?) 책을 읽을 것 같으면 같은 내용을 약간 다른 관점이나 관련성을 중심으로 반복 설명으로 넣어주세요. 불성실하게 읽는 사람들은 책을 어디까지 읽었는지도 헷갈리고, 이 내용이 어디서 나왔는지 이전 부분도 기억 못하는 경우가 왕왕 있습니다. (경험담입니다. ^^;;) 어디서 읽어도 굳이 앞부분이나 뒷부분을 찾는 일이 별로 없도록 서술해주세요. 어쩔 수 없는 경우에는 "목차"라는 걸 활용할 수도 있습니다. 


4. 목차는 생각보다 중요합니다. 


오랜만에 책을 이어서 읽을 때도 목차가 중요하지만, 책을 다 읽은 후에도 목차를 보며 머릿속으로 복습할 때도 좋습니다. 각 챕터 요약의 문맥을 읽고 목차를 봤는데, 뭔가 이질감이 느껴질 때면 가끔.. 약간.. 불안합니다. ^^;;
 

5. 가급적 실습해 볼 수 있는 가이드나 이미지 자료, 풍부한 참고자료가 있으면 좋겠습니다. 


이번에는 지은이의 gitbub, 유튜브 영상 등 참고자료가 풍부한 편이었지만, 그래도 읽는 사람이 되도록 직접 입력해보고 해당 설명이 어느 부분에 있는지 확인하는 구성도 추가되었으면 좋겠습니다. 
윈도우, 리눅스 운영체제에서 명령어를 입력한 뒤 결과에 대한 설명이 꽤 있다고 생각됩니다. 


6. 입문서, 풍부한 추가자료 외에 다양한 SNS를 활용한 소통과 주기적인 현황 점검 페이지도 좋았습니다. 


10여권이 마다 수십개의 게시글들이 달리는데, 일일이 답글을 달리는 걸 보면서 궁금한 점은 AI를 활용했는가였습니다. AI를 활용했다고 보기에는 답글의 내용이 다채로워 보였고, AI를 안 썼다고 하기에는 양이 너무 무리라고 생각될 정도로 많다고 느꼈기 때문입니다. ^^;;


7. 혼공학습단의 책들도 서로 연관성이 있을 것 같습니다. 

 

13기에서 어떤 책을 읽었다면, 14기에서는 어떤 책을 읽으면 좋을지, 혹은 14기 참여할 때, 13기의 어떤 책이 좋았는지 공유해 보는 SNS 페이지도 있으면 좋겠습니다. 


책 잘 읽었습니다. 올해는 책을 좀 더 읽고 싶고, 느슨했던 지식들을 다시 재정비해서 주변에서 컴퓨터와 씨름하는 비전공자들(사실상 컴맹)에게 체계적인 가이드 역할을 해줄 수 있으면 좋겠다는 바램이 있습니다. 좋은 커리어가 있다면 멘토라고 하고 싶으나.. 차마.. 쿨럭.. 

 

올해 목표는 이런 거라고 말하고 나니 2월이 끝나가네요. ㅋㅋㅋ

요즘은 이런 거 안 주나요?

  Comments,     Trackbacks
[혼공컴운] 6주차_컴퓨터 구조+운영체제 14장~15장 & 책리뷰

Chapter 14 가상 메모리(Virtual Memory)

14-1 연속 메모리 할당

- 스와핑(Swapping)은 메모리에서 사용되지 않는 일부 프로세스를 보조기억장치로 내보내고 실행할 프로세스를 메모리로 들여보내는 메모리 관리 기법입니다. 

- 최초 적합(First fit) 방식은 최초로 발견한 적재 가능한 빈 공간에 프로세스를 배치하는 방식입니다. 

- 최적 적합(Best fit) 방식은 프로세스가 적재될 수 있는 가장 작은 공간에 프로세스를 배치하는 방식입니다. 

- 최악 적합(Worst fit) 방식은 프로세스가 적재될 수 있는 가장 큰 공간에 프로세스를 배치하는 방식입니다. 

- 외부 단편화(External fragmentation)는 프로세스를 할당하기 어려울 만큼 작은 메모리 공간들로 인해 메모리가 낭비되는 현상을 의미합니다. 


14-2 페이징을 통한 가상 메모리 관리

- 페이징(Paging)은 물리 주소 공간을 프레임(Frame) 단위로 자르고 프로세스의 논리 주소 공간을 페이지 단위로 자른 뒤 각 페이지를 프레임에 할당하는 가상 메모리 관리 기법입니다. 

- 페이지 테이블(Page table)을 통해 페이지가 적재된 프레임을 찾을 수 있습니다. 페이지 테이블에는 페이지 번호와 프레임 번호뿐 아니라 유효 비트(Valid bit), 보호 비트(Protection bit), 접근 비트(Reference bit), 수정 비트(Modified bit) 등이 있습니다. 

- PTBR(Page Table Base Register)은 각 프로세스의 페이지 테이블이 적재된 주소를 가리킵니다. 

- TLB(Translation Lookaside Buffer)는 페이지 테이블의 캐시 메모리 역할을 수행하기 위해 페이지 테이블의 일부를 저장합니다. 

 

 


14-3 페이지 교체와 프레임 할당

- 요구 페이징(Demand paging)은 페이지가 필요할 때에만 메모리에 적재하는 기법입니다. 

- 페이지 교체 알고리즘(Page Replacement Algorithm)은 FIFO(First-In First-Out), 최적(Optimal), LRU(Least Recently Used) 페이지 교체 알고리즘 등이 있습니다.

- 스래싱(Thrashing)이란 지나치네 비번한 페이지 교체로 인해 CPU 이용률이 낮아지는 문제를 뜻합니다. 

- 프레임 할당(Frame allocation) 방식에는 균등 할당(Equal allocation)과 비례 할당(Proportional allocation), 작업 집합(Working set)모델과 페이지 폴트율(Page fault rate) 기반 프레임 할당 방식이 있습니다.

 

 

 

 

Chapter 15 파일 시스템(File System)

15-1 파일과 디렉터리

- 파일(File)은 의미 있고 관련 있는 정보를 모은 논리적인 단위입니다. 

- 운영체제는 파일의 확장자(Extension)를 통해 파일의 유형을 파악할 수 있습니다.

- 파일의 속성(Attribute)에는 파일과 관련된 다양한 부가 정보들이 있습니다. 

- 디렉토리(Directory)를 이용하면 여러 개의 파일 또는 디렉터리를 묶어 관리할 수 있습니다. 

- 경로(Path)는 디렉터리를 이용해 위치를 특정 짓는 정보입니다. 

- 절대 경로(Absolute path)는 루트 디렉터리부터 시작하는 경로이고, 상대 경로(Relative path)는 현재 디렉터리부터 시작하는 경로입니다. 

 


15-2 파일 시스템
- 파티셔닝(Partitioning)은 하드 디스크나 SSD처럼 용량이 큰 저장 장치를 하나 이상의 논리적인 여러 단위로 구획하는 작업을 의미합니다. 

- 포매팅(Formatting)이란 파일 시스템을 설정하여 어떤 방식으로 파일을 저장하고 관리할 것인지를 결정하고, 새로운 데이터를 쓸 수 있게 하는 작업을 의미합니다. 

- 연속 할당(Contiguous allocation)은 보조기억장치 내 연속적인 블록에 파일을 할당하는 방식입니다. 

- 연결 할당(Linked allocation)은 각 블록 일부에 다음 블록의 주소를 저장하여 블록들을 연결 리스트 형태로 관리하는 방식입니다. 

- 색인 할당(Indexed allocation)은 파일의 모든 블록 주소를 색인 블록에 모아 관리하는 방식입니다. 

- FAT 파일 시스템은 FAT(File Allocation Table)를 이용하는 연결 할당 기반의 파일 시스템입니다. 

- 유닉스 파일 시스템은 i-node를 이용하는 색인 할당 기반의 파일 시스템입니다. 

 

 

** 15장 파일시스템의 15-1 파일과 디렉토리 확인문제 3번(451쪽)의 답지 설명이 이상합니다. 

3. 디렉토리와 관련한 설명으로 옳지 않은 것을 고르세요. 

디렉토리는 보조기억장치에 저장되어 있지 않습니다. 

② 디렉토리 엔트리에는 해당 디렉터리에 저장된 대상들에 대한 정보가 담깁니다. 

③ 운영체제는 디렉터리를 다루는 다양한 시스템 호출을 제공합니다. 

④ 최상위 디렉토리를 루트 디렉터리라고 합니다. 

문제에서 "옳지 않은 것"을 고르라고 했으니 1번이 맞는데, 493쪽 답지 설명에도 "디렉터리도 파일과 동일하게 보조기억장치에 저장되어 있지 않습니다"라고 씌여 있네요. 440쪽에 나와 있듯이 "파일과 디렉토리는 보조기억장에 있는 데이터 덩어리일 뿐인데,"라고 한다면 답지 설명에는 "디렉토리도 파일처럼 보조기억장치에 저장되어 있습니다."라고 설명되어 있어야 하지 않을까 싶습니다. ^^;;

 

 

 

 

[기본 숙제]

400쪽의 확인 문제 1번 풀고 인증하기.

1. 메모리 할당 방식에 대한 설명으로 올바른 것을 다음 보기에서 찾아 써 보세요. 

보기: 최초 적합, 최적 적합, 최악 적합

● (① 최초 적합): 최초로 발견한 적재 가능한 빈 공간에 프로세스를 배치하는 방식

● (② 최악 적합): 프로세스가 적재될 수 있는 가장 큰 공간에 프로세스를 배치하는 방식 

● (③ 최적 적합): 프로세스가 적재될 수 있는 가장 작은 공간에 프로세스를 배치하는 방식

 

 

 

[추가 숙제] 

Ch.14(14-3) 프로세스가 사용할 수 있는 프레임이 3개 있고, 페이지 참조열이 '2313523423' 일 때 LRU 페이지 교체 알고리즘으로 이 페이지를 참조한다면 몇 번의 페이지 폴트가 발생하는지 풀어보기

출처: 혼자 공부하는 컴퓨터 구조 + 운영체제. 한빛미디어

 

2,3,1,3,5

페이지 참조열에 5가 들어왔을 때, 프레임에는 2,3,1 이렇게 3개만 있으므로 페이지폴트가 발생하고 그 중 가장 오랫동안 사용하지 않은 2가 보조기억장치로 이동하고 그 자리에 5가 들어갑니다. - 페이지 폴트 발생.(1회)

 

** 프레임이 3개인 구성에서 가장 오랫동안 사용하지 않은 페이지가 선택되는 과정은 다음과 같습니다.

1. 프레임 3칸에 페이지가 모두 찰 때까지는 무조건 페이지 참조열 값을 입력합니다. 

2. 프레임에 빈 칸이 없고, 새로 요청받은 페이지 참조열 값이 3칸의 프레임 중에 있는 경우, 해당 프레임 값을 사용합니다.

3. 프레임에 빈 칸이 없고, 새로 요청받은 페이지 참조열 값이 프레임에 없는 경우, 3개의 프레임 중에서 가장 오래된 값을 선택해서 보조저장장치로 이동시킵니다. 

4. 프레임에 없는 5가 페이지 참조열에 들어온 경우, 5를 기준으로 왼쪽 방향으로 요청받아왔던 페이지들을 3칸(프레임 갯수)까지 되집어 보되, 중복된 페이지들은 무시합니다.

5. 가장 최근에 접근했던 순서(왼쪽 방향)대로 보자면 3, 1, 2가 되며(3이 2번 나왔을 때 더 오래된 3은 무시, 다시 말해 중복된 페이지가 보일 때는 최근 접근했던 페이지로만 카운트), 3번째 페이지인 2를 보조저장장치로 이동시키고, 그 빈 자리에 5를 채워 넣습니다. 

 

2,3,1,3,5,2

페이지 참조열에 2가 들어왔을 때, 프레임에는 5,3,1 이렇게 3개만 있으므로(2는 바로 이전 차례에 보조기억장치로 이동) 5,3,1 중 가장 오랫동안 사용하지 않은 1이 보조기억장치로 이동하고 그 자리에 다시 2가 들어갑니다. - 페이지 폴트 발생.(2회)  

 

2,3,1,3,5,2,3,4

페이지 참조열에 4가 들어왔을 때, 프레임에는 5,3,2 이렇게 3개만 있으므로 5,3,2 중 가장 오랫동안 사용하지 않은 5가 보조기억장치로 이동하고 그 자리에 다시 4가 들어갑니다. - 페이지 폴트 발생.(3회) 

 

 

지은이 강민철 github

 

https://github.com/kangtegong

 

https://minchul.net/

 

 

 

 

 

 

 

 

[책리뷰] 

 

하찮은 레벨의 IT관련 지원관리업무를 맡고 있기에 가끔 주변 사람들에게 컴퓨터 구성이나 윈도우 및 응용 프로그램의 사용법에 대해 알려줄 일이 있어서 몇 년마다 주기적으로 컴퓨터 기본 서적들을 보고 있습니다. 

 

최근에 읽은 "혼자 공부하는 컴퓨터 구조 + 운영체제"는 개발자를 지망하는 비전공자 분들을 위해 씌여진 것으로 보이는데, 너무 간소화된 것이 아닌가 싶을 정도로 쉽게 쓰려고 노력한 흔적이 많이 보입니다. 그러다 보니 약간 어려운 내용의 고전(?) 운영체제 서적을 읽었던 사람이 복습하려고 하면 혼동스러운 부분이 있어서 비교하게 되는 경향이 있습니다. 덕분에 고인물 지식이 갱신되고, 몰랐던 부분이 꽤 있었다는 걸 인정하게 되는 책으로 보입니다. 

 

설명에 필요한 삽화도 적절하고 풍부하게 배치해서 읽는 부담을 많이 줄였습니다. 다만, 쉽게 쓰기 위해 초심자들이 고민하거나 깊이있게 들여다 봐야할 부분을 잘 드러나지 않게 한 것이 아닐까 하는 기우(?)가 들기도 합니다. 

 

이 책을 읽으면서 초심자들에게 필요한 입문서가 갖추면 좋을 만한 개인적인 지침을 정리할 수 있어서 좋았습니다. 잘 읽었습니다. ^^;; 


01 ~ 03장에서는 컴퓨터 구조를 알아야 하는 이유 및 컴퓨터 구조에 대한 큰 그림, 그리고 컴퓨터를 어떻게 작동시키는지를 알아봅니다. 
Chapter 01 컴퓨터 구조 시작하기
Chapter 02 데이터
Chapter 03 명령어

 

** 사실 굉장히 당연한 내용인데, 3장이나 할애한 것이 아닌가 싶습니다. 개발자로 성장하려는 뜻을 가지고 있는 분들이라면 응용 프로그램의 개발환경이나 실행환경인 컴퓨터와 운영체제에 대한 기본지식은 충분히 갖출 필요가 있다고 봅니다. 전 폰노이만 구조 외에도 하버드 구조라는 게 있다는 걸 얼마 전에 알았습니다. ^^;;


04장 ~ 08장에서는 컴퓨터의 네 가지 핵심 부품, CPU, 메모리, 보조기억장치, 입출력장치에 대해 하나씩 살펴봅니다. 

Chapter 04 CPU와 작동 원리
Chapter 05 CPU 성능 향상 기법
Chapter 06 메모리와 캐시 메모리
Chapter 07 보조기억장치
Chapter 08 입출력장치

 

** 부품 중심의 설명이니 메인보드도 별첨(?) 정도로 같이 들어가면 좋았을 것 같습니다. 


09장 ~ 10장에서는 운영체제란 무엇인지, 프로세스와 스레드란 무엇인지, 멀티프로세스와 멀티스레드는 어떤 차이가 있는지를 이해합니다. 
Chapter 09 운영체제 시작하기
Chapter 10 프로세스와 스레드


** 흔히들 운영체제의 목표, 역할이라고 딱딱하게 씌여져 있던 부분이죠.  


11장 ~ 13장에서는 CPU 스케줄링이란 무엇이며, 동시에 프로그램(프로세스)을 실행할 때 반드시 고려해야 할 동기화와 해결해야 하는 문제인 교착 상태에 대해 다룹니다. 
Chapter 11 CPU 스케줄링
Chapter 12 프로세스 동기화
Chapter 13 교착 상태

** 스케줄링, 동기화, 교착상태 나오면 누구나 정신이 혼미해지지 않을까 싶습니다. 읽을 때는 고개를 끄덕이다가 돌아서면 설명이 잘 안되는.. 


14장 ~ 15장에서는 운영체제의 메모리 관리 기법인 가상 메모리 관리에 대해 학습하고, 파일 시스템에 대해 학습합니다. 
Chapter 14 가상 메모리
Chapter 15 파일 시스템

 

** 이제는 파일시스템에 NTFS, GPT(GUID Partition Table) 같은 것도 다룬 책이 나왔으면 좋겠습니다. 

  Comments,     Trackbacks
[혼공컴운] 5주차_컴퓨터 구조+운영체제 12장~13장

 

Chapter 12 프로세스 동기화

12-1 동기화란

- 동기화(Synchronization)는 특정 자원에 접근할 때 한 개의 프로세스만 접근하게 하거나 프로세스를 올바른 순서대로 실행하게 하는 것을 의미합니다. 

- 공유 자원(Shared resource)은 공동으로 사용하는 자원으로, 전역 변수가 될 수도 있고, 파일이 될 수도 있고, 입출력장치, 보조기억장치가 될 수도 있습니다. 

- 임계 구역(Critical section)은 공유 자원에 접근하는 코드 중 동시에 실행하면 문제가 발생하는 코드 영역을 의미합니다. 임계 구역에 진입한 프로세스가 있다면 다른 프로세스는 임계 구역 밖에서 기다려야 합니다. 

- 상호 배제(Mutual exclusion)는 한 프로세스가 임계 구역에서 작업 중이면 다른 프로세스가 임계 구역에 들어갈 수 없도록 제어하는 것입니다. 


12-2 공유 자원과 임계 구역

- 뮤텍스 락(MUTEX lock: MUTual EXclusion lock)은 임계 구역을 잠금으로써 프로세스 간의 상호 배제를 이룹니다. 

- 세마포(Semaphore)는 공유 자원이 여러 개 있는 임계 구역 문제도 해결할 수 있는 동기화 도구입니다. 

- 모니터(Monitor)는 세마포에 비해 사용자가 사용하기 편리한 동기화 도구로 조건 변수를 사용합니다. 

 

 

 


Chapter 13 교착 상태

13-1 교착 상태(Deadlock)란

- 교착 상태는 일어나지 않을 사건을 기다리며 무한히 대기하는 현상을 의미합니다. 

- 식사하는 철학자 문제(Dining philosophers problem)는 교착 상태의 발생을 보여 주는 예시입니다. 

- 자원 할당 그래프(Resource-allocation graph)를 이용해 교착 상태를 표현할 수 있습니다. 

- 교착 상태 발생 조건은 상호배제(Mutual exclusion), 점유와 대기(Hold and wait), 비선점(Nonpreemptive), 원형 대기(Circular wait)입니다. 


13-2 교착 상태 해결 방법

- 교착 상태 예방은 교착 상태의 발생 조건 중 하나를 충족하지 못하게 하는 방법입니다. 

- 교착 상태 회피는 안전 상태를 유지할 수 있는 경우에만 자원을 할당하는 방법입니다. 

- 교착 상태 검출 후 회복은 교착 상태 발생 여부를 주기적으로 검사하고, 교착 상태가 발생하면 그때그때 회복하는 방식입니다. 

 

 

 

 

[기본 숙제] 

363쪽의 확인 문제 1번 풀고 인증하기.

1. 뮤텍스 락과 세마포에 대한 설명으로 옳지 않은 것을 고르세요.

① 뮤텍스 락은 임계 구역을 잠근 뒤 임계 구역에 진입함으로써 상호 배제를 위한 동기화를 이룹니다.

② 세마포는 공유 자원이 여러 개 있는 상황에서도 이용할 수 있습니다. 

③ 세마포를 이용해 프로세스 실행 순서 제어를 위한 동기화도 이룰 수 있습니다. 

세마포를 이용하면 반드시 바쁜 대기를 해야 합니다. 

 

 

 

 

[추가 숙제]

Ch.12(12-1) 임계 구역, 상호 배제 개념을 정리하기.

 

상호 배제(Mutual Exclusion)란 여러 프로세스나 스레드가 동시에 공유 자원(Shared resource)에 접근할 수 없도록 하는 기법이고, 임계 구역(Critical Section)은 프로세스나 스레드가 공유 자원에 접근할 때 사용하는 코드의 특정 부분을 가리키며, 임계 영역에 대한 상호 배제를 보장하는 것이 중요합니다.

 

 

상호 배제를 구현하는 다양한 동기화 기법은 다음과 같습니다. 

뮤텍스(Mutex): 뮤텍스를 사용하여 서로의 접근을 제어할 수 있습니다. 하나의 스레드가 자원을 사용할 때 뮤텍스를 잠그고, 사용이 끝나면 해제하여 다른 스레드가 접근할 수 있도록 합니다.

세마포(Semaphore): 세마포는 일정 수의 스레드가 동시에 자원에 접근할 수 있도록 허용하며, 이를 통해 더 유연한 동기화가 가능합니다.

모니터(Monitor): 모니터는 객체 지향 프로그래밍에서 자원 접근을 제어하는데 유용하며, 임계 영역을 쉽게 정의하고 관리할 수 있습니다.

조건 변수(Condition Variables): 스레드가 특정 조건이 충족될 때까지 대기하도록 하고, 다른 스레드가 그 조건을 만족시키면 대기 중인 스레드가 다시 실행되도록 하는 기법입니다.

 

 

임계 영역의 효율적인 설계를 위한 주요 원칙들은 다음과 같습니다. 

상호 배제(Mutual Exclusion): 한 프로세스가 임계 구역에 진입했다면, 다른 프로세스는 임계 구역 안으로 들어올 수 없습니다. 
진행(Progress): 임계 구역에 진입한 프로세스가 없다면, 임계 구역에 들어가려는 프로세스는 임계 구역 안으로 들어갈 수 있어야 합니다.
유한 대기(Bounded Waiting): 어떤 프로세스가 임계 구역에 접근하려고 한다면, 그 프로세스는 언젠가는 임계 구역 안으로 들어올 수 있어야 합니다. 

 

 

[결론] 말이야 쉽지요. ㅋㅋㅋ

  Comments,     Trackbacks