이번 포스팅은 modify bit(Dirty bit)의 간단한 포스팅입니다~!
사실 해당 내용은 기본적으로 page의 개념과 디스크 그리고 메모리에서의 데이터 읽고 쓰는 과정에 대한 이해가 필요합니다.
때문에 Modify bit 설명 이전에 간단한 메모리와 디스크의 데이터 관리 방법에 대해 설명을 진행하겠습니다!
1. 데이터 관리
먼저 CPU에서 데이터를 처리하는데 이 때 CPU는 DISK로 직접 접근해서 데이터를 가져와 실행하지 않습니다.(속도차가 너무나서 비효율적)
CPU는 데이터를 처리하기 위해 DISK와 자신 사이에 존재하는 메모리를 이용합니다.
다시 말해 데이터는 DISK -> 메모리를 거친 뒤 메모리 -> CPU 방식으로
이동하여 CPU에서 처리하는 식으로 진행됩니다.
이 때 데이터를 관리하는데 여러 편리함을 위해 페이징 기법을 이용하는데 여기서 페이징 기법이란 하나의 데이터를 일정한 페이지 단위(예를들어 4KB)로 쪼개서 페이지 단위로 데이터를 관리하는 방법입니다.
다시 말해 44KB 프로그램을 메모리로 전부 올린다면 페이지 하나의 크기가 4KB 일 때, 총 11개의 page(일종의 블록개념으로 생각하면 쉬움)로 쪼개서 메모리에 올리게 됩니다. 이 때 데이터의 읽기 쓰기 작업 역시 Page 단위로 이루어 집니다.
2. Modify Bit
그럼 본격적으로 Modify Bit에 대한 설명을 진행하겠습니다. 위와 같이 page단위로 데이터를 처리하는데 메모리는 Disk에 자주 접근하지 않습니다.(DIsk 접근이 잦으면 속도가 전반적으로 느려집니다) 때문에 Disk에서 한 번 가져온 page 들을 메모리에 두고 데이터를 읽고 쓰는 작업을 진행합니다.
다시 말해 CPU에서 해당 데이터의 값을 변경하더라도 해당 page가 메모리를 거쳐 disk로 바로 저장되는 것이 아닌 메모리에 상주하게 됩니다.(만약 이 때, 정전 등으로 인해 PC가 다운된다면 재부팅 시 변경된 데이터가 저장되지 않아있는 문제를 확인할 수 있습니다.)
이러한 문제를 막고자 프로그램이 돌아가는 도중에 DISK에 접근할 여유가 있을 때마다 메모리에서는 변경된 page를 Disk에 저장하는 작업을 진행합니다. 그리고 여기서 수 많은 page 중 disk에 저장이 필요한 즉 write를 통해 값이 변경된page를 찾아내기 위해 사용하는 것이 바로 Modify Bit입니다.
Modify Bit은 Dirty Bit라고도 하며 위와 같이 write를 톻해 값이 변경된 데이터를 표시하기 위한 bit입니다. 해당 bit를 확인함으로써 해당 page 값이 변경 됬는지를 확인할 수 있고 이를 바탕으로 DIsk에 저장해줌으로써 데이터의 손실을 막을 수 있습니다.
Modify BIt을 통해 단순히 Read 된 데이터를 구별하여 해당 Page 들은 Page Fault가 났을 때 Disk에 저장하지 않고(Page out)없이 없앰으로써 DIsk 접근을 최소화 할 수 있고(값이 변경되지 않았기 때문에 굳이 Disk에 접근해서 저장할 필요가 없다) Write 된 데이터에 한해서는 DIsk 저장이 필요함을 암시하여 데이터 손실의 안정성도 확보할 수 있는 역할을 진행할 수 있습니다.
이번 포스팅은 여기서 마치겠습니다~~! 감사합니다!
'OS > Linux' 카테고리의 다른 글
[Linux] 메모리 영역 (1) - Code, Data, Stack (0) | 2020.12.20 |
---|---|
[Linux] IPC 통신(PIPE, Message, Shared, Memory Map, Socket, RPC) (0) | 2019.08.08 |
[Linux Kernel] 커널의 종류(마이크로 커널 & 모놀리식 커널) (0) | 2019.08.06 |
[Linux] Linux기본 명령어 (0) | 2018.01.08 |
[Linux] Linux Find명령어 (0) | 2018.01.06 |