마지막챕터 : 컴퓨터
[ 소통을 원하지는 않습니다 ]
프레임 할당 (1)
[혼공컴운] 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