본문 바로가기

반응형

CS/운영체제

(25)
[ 운영체제 ] HDD 구조, HDD 스케줄링, SSD, 디스크 관리(Disk Management) Hard Disk Drive (HDD) 하드 디스크는 자기 패턴으로 정보를 기록한다. 쉽게 말하면 수많은 CD를 밀집시켜 놓은 구조로 생각하면 된다. 하드 디스크의 구조를 그림으로 살펴보면 아래와 같다. Read-write head : 데이터를 읽고 쓰는 역할을 담당 Disk arm : 헤드를 데이터가 있는 곳으로 움직이는 역할 Spindle : 플래터를 돌려주는 역할 Platter : CD 한 장으로 생각하면 된다. 위, 아랫면에 자기적 성질을 이용해 정보를 저장 Track : 플래터의 동심원 일부 Sector : 하드 디스크의 최소전송 단위로 트랙의 일부분. 섹터의 집합이 트랙이다. 섹터는 고정 크기를 가지는데 2010년까지는 512B, 현재는 일반적으로 4KB의 크기를 가진다 Cylinder : 다..
[ 운영체제 ] 쓰레싱(Thrashing)과 작업 공간(Working Set), 지역성(Locality) 메모리 파트에서 중요한 개념을 하나 놓쳐서 급히 쓴다. 쓰레싱과 작업 공간에 대해 자세히 다뤄보자. 두 가지 개념을 완벽하게 이해하는게 이 글의 학습목표! [1] 쓰레싱 (Thrashing) 쓰레싱을 간단하게 정리하면 'Page Fault가 시스템의 허용 수준을 넘어가는 현상' 으로 요약할 수 있다. Page fault가 많이 발생하는 경우는 두 가지로 나눌 수 있다. 1) 메모리 허용량보다 더 많은 프로세스를 동시에 실행하려고 할 때 말 그대로 메모리 용량을 초과하는 경우다. 이렇게 되면 많은 프로세스 중에 일부만 메모리 위에 올라가고, 나머지는 저장장치 안에 있게 되므로 스케줄링이 계속 됨에 따라 page fault 가능성이 매우 높아진다. 2) 스케줄러가 CPU 이용률만 보고 계속해서 새로운 프로세..
[ 운영체제 ] 가상 메모리2 - Modify bit(Dirty bit), 페이지 교체 알고리즘 운영체제에는 다양한 페이지 교체 알고리즘이 있다. 페이지 교체 알고리즘이 필요한 이유는 page fault ratio를 낮추기 위해서지만, 근본적인 원인은 메인 메모리의 용량이 한정적이기 때문이다. Page Fault가 발생했는데 메인 메모리가 가득 찼다면 페이지를 교체해야 한다. 여기서 교체 대상이 되는 페이지를 'victim page'라고 한다. 위 그림을 보면 victim 페이지가 SSD에 swap out 되고, 페이지f 가 swap in 됐다. 페이지 테이블에서 valid bit의 변화를 보면 victim 페이지는 i로, 페이지f 는 v로 수정됐다. 즉, victim 페이지는 메인 메모리 상에 없다는 뜻이고, 페이지f 는 메인 메모리 상에 있다는 뜻이다. Valid bit는 찾고자 하는 페이지가 ..
[ 운영체제 ] 가상 메모리1 - Swapping, Demand Paging, Valid bit, Page Fault 가상 메모리가 무엇일까? 물리적 주소와 논리적 주소를 이해했다면 쉽게 이해할 수 있다. 왜냐하면 메모리는 주소의 집합이기 때문이다. 가상 메모리는 가상 주소의 집합에 불과하다. 우리는 논리적 주소(가상 주소)를 'CPU 입장에서의 주소'라했고, 모든 프로세스의 가상 주소는 0부터 시작한다고 했다(여기 참고). 이렇게 모든 프로세스는 각각 독립적인 가상 주소 공간을 가지는데, 이를 가상 메모리라고 한다. 그렇다면 가상 메모리를 사용하는 이유는 무엇일까? 크게 아래 세 가지를 뽑을 수 있다. 1. 사용자 편의성 사용자는 가상 메모리만 신경쓰면 된다. 물리적 메모리로의 사상은 OS가 알아서 한다. 2. 프로세스간 메모리 보호 Base Register와 Limit Register로 프로세스는 물리적 메모리에서 ..
[ 운영체제 ] 메모리 관리3 - 페이징 단점, 내부 단편화, TLB, 세그멘테이션(Segmentation) 페이징은 외부 단편화 해결 방법으로 논리적 주소의 물리적 주소 사상을 불연속적으로 하는 메모리 관리 구조를 말한다. 그런데 이 세상에 완벽한 것은 없다. 득이 있으면 실도 있는법. 이번 글에서는 페이징의 세 가지 단점에 대해 소개한다. 그리고 각 문제의 해결책까지 살펴보는 것이 목표다. 우선 목차는 아래와 같다. 1. 내부 단편화 2. 메모리에 두 번 접근하는 문제 3. 프레임 내 데이터 종류 불일치 문제 1. 내부 단편화 (Internal Fragmentation) 외부 단편화는 주소를 연속적으로 할당해서 생기는 메모리 낭비였다. 이와 반대로 내부 단편화는 주소를 불연속적으로 할당해서 생기는 메모리 낭비다. 메모리 낭비가 생기는 이유는 '고정된 프레임 크기' 때문이다. 프레임 크기는 메모리를 읽기/쓰기..
[ 운영체제 ] 메모리 관리2 - 페이지 테이블의 세 가지 구조 저번 시간에 '풀리지 않은 의문점'에서 페이지 테이블은 연속적이기 때문에 페이지 테이블을 새롭게 디자인할 필요가 있다고 했었다. 따라서 오늘은 페이지 테이블의 세 가지 구조를 다룬다. 세 가지 구조는 각각 아래와 같다. 이 글의 목차로 생각하면 된다. 1. 계층적 페이지 테이블 (Hierarchical Page Table) 2. 해시형 페이지 테이블 (Hashed Page Table) 3. 역페이지 테이블 (Inverted Page Table) 1. 계층적 페이지 테이블 (Hierarchical Page Table) 우선 페이지 테이블이 연속적일 경우 어떤 문제가 발생하는지 보자. 일반적으로 페이지의 크기는 4KB(2^12 B)로 잡는다. 32 비트 주소 체계와 64비트 주소 체계인 경우 페이지 테이블의..
[ 운영체제 ] 메모리 관리 1 - 페이징(Paging) 드디어 대망의 메모리 관리 파트다. '메모리 계층 구조'부터 '주소 공간'까지 아직 안 읽었다면 읽고 오는 것을 추천한다. 앞의 내용을 숙지하고 있어야 이번 챕터를 잘 이해할 수 있기 때문이다. 이번 글은 논리적 주소를 물리적 주소로 mapping 할때 연속적으로 mapping 하면 어떤 문제가 발생하는지, 이에 대한 해결책은 무엇인지 알아본다. 해결책은 제목에 떡하니 나와 있다. 연속 할당의 문제점 - 외부 단편화(External Fragmentation) 바로 이전 글에서 논리적 주소를 설명하면서 '연속 할당'의 개념을 다뤘었다. 다시 한 번 상기시켜보자. 연속 할당이란 한 프로세스의 모든 논리적 주소에 동일한 base register를 더해주는 것이다. 이는 MMU에 의해 이뤄지며 주소는 Execu..
[ 운영체제 ] 주소 공간(Address Space), 물리적 주소(Physical Address), 논리적 주소(Logical Address), 주소 바인딩(Address Binding) 저번 글에서는 컴파일, 런타임, 로딩을 이해하는 시간을 가졌다. 이 세 용어를 확실하게 이해했다면 이번 글은 술술 읽으면서 넘길 수 있을 것이다. '메모리 계층 구조'부터 이 글까지는 '메모리 관리'파트를 이해하기 위한 단계라고 생각하면 된다. 우리가 앞으로 배울 내용을 한 문장으로 요약하면 아래와 같다. 참고로 메모리는 캐시부터 메인 메모리까지를 통칭하는데 이 글과 '메모리 파트'에서는 주로 메인 메모리로 쓰인다. 한정된 메모리 공간을 어떻게 하면 효율적으로 관리할 수 있을까? CPU가 직접적으로 접근할 수 있는 저장 장치는 메모리다. 그러나 메모리 공간은 한정적이다. 여러 개의 프로그램을 실행해야 하는 운영체제는 협소한 메모리 공간을 최대한 효율적으로 관리해서 CPU가 필요한 데이터를 빨리 끌어올 수..

반응형