상기 목적을 달성하기 위하여, 본 발명의 실시예에 따른 파일 시스템 관리 장치는, 사용자로부터 소정 데이터에 대한 입력값이 입력되는 사용자 입력부와, 상기 데이터를 저장할 수 있는 소정 크기를 가지는 다수의 데이터 블록을 포함하는 데이터 저장부와, 상기 데이터 블록에 저장된 데이터에 대한 데이터 정보를 저장하는 데이터 정보 저장부와, 상기 저장된 데이터 정보를 이용하여 각 데이터 블록의 빈 공간에 상기 입력값에 따른 데이터를 저장하는 제어부를 포함한다.
또한, 상기 목적을 달성하기 위하여, 본 발명의 실시예에 따른 파일 시스템 관리 방법은, 사용자로부터 소정 데이터에 대한 입력값이 입력되는 단계와, 상기 데이터를 저장할 수 있는 소정 크기를 가지는 다수의 데이터 블록에 저장된 데이터에 대한 데이터 정보를 추출하는 단계와, 상기 추출된 데이터 정보에 따라 상기 각 데이터 블록의 빈 공간에 상기 입력값에 따른 데이터를 저장하는 단계를 포함한다.
기타 실시예들의 구체적인 사항들은 상세한 설명 및 도면들에 포함되어 있다.
본 발명의 이점 및 특징, 그리고 그것들을 달성하는 방법은 첨부되는 도면과 함께 상세하게 후술되어 있는 실시예들을 참조하면 명확해질 것이다. 그러나 본 발명은 이하에서 개시되는 실시예들에 한정되는 것이 아니라 서로 다른 다양한 형태로 구현될 수 있으며, 단지 본 실시예들은 본 발명의 개시가 완전하도록 하고, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 발명의 범주를 완전하게 알려주기 위해 제공되는 것이며, 본 발명은 청구항의 범주에 의해 정의될 뿐이다. 명세서 전체에 걸쳐 동일 참조 부호는 동일 구성 요소를 지칭한다.
이하, 첨부된 도면을 참조하여 본 발명의 바람직한 실시예를 상세히 설명하기로 한다.
도 3은 본 발명의 실시예에 따른 파일 시스템 관리 장치가 도시된 도면이다.
도시된 바와 같이, 본 발명의 실시예에 따른 파일 시스템 관리 장치는, 사용자로부터 소정 데이터에 대한 입력값이 입력되는 사용자 입력부(110)와, 데이터를 저장할 수 있는 소정 크기를 가지는 다수의 데이터 블록을 포함하는 데이터 저장부(120)와, 각 데이터 블록에 저장된 데이터에 대한 데이터 정보를 저장하는 데이터 정보 저장부(130)와, 상기 저장된 데이터 정보를 통해 데이터 저장부(120)의 각 데이터 블록에서 빈 공간을 판단하고, 판단 결과에 따른 빈 공간에 입력값에 따른 데이터를 저장하는 제어부(140)를 포함할 수 있다.
이때, 데이터 정보 저장부(130)에 저장되는 데이터 정보는, 각 데이터 블록의 총 사용 공간 및 각 데이터 블록에 저장된 각 데이터의 사용 공간 등을 포함할 수 있으나, 이에 한정되지 않는다.
이하, 본 발명의 실시예에서 사용되는 용어 중 각 데이터 블록의 총 사용 공간에 관한 데이터 정보를 '블록 맵'이라 칭하고, 각 데이터 블록에 저장된 각 데이터들의 사용 공간에 관한 데이터 정보를 '서브 블록 맵'이라 칭하기로 한다.
따라서, 블록 맵은 소정의 데이터 블록에 저장되는 데이터의 수와 무관하게 해당 데이터 블록에 저장된 데이터들의 총 사용 공간에 관한 정보를 포함하고, 서브 블록 맵은 소정 데이터 블록에 저장된 각 데이터들의 사용 공간, 예를 들어 해당 데이터 블록에서의 시작 위치, 사용 공간 및 다른 데이터 블록과의 연결 관계를 포함할 수 있다. 이때, 다른 데이터 블록과의 연결 관계는, 해당 데이터가 소정 데이터 블록의 빈 공간에 저장되기에는 해당 데이터 블록의 빈 공간이 부족하여 다른 데이터 블록에 나누어져 저장된 경우, 해당 데이터가 저장된 데이터 블록들의 연결 관계를 나타낼 수 있다.
또한, 데이터 정보 저장부(130)는 데이터 저장부(120)와 하드웨어적으로 통합되어 구성될수도 있고, 하드웨어적으로 별도로 구성될수도 있다. 예를 들어, 데이터 저장부(120)가 하드 디스크 및 플래시 메모리 등과 같은 저장 매체로 이루어진 경우, 데이터 정보 저장부(130)는 하드 디스크 및 플래시 메모리에 함께 구성될수도 있고 별도로 구성된 저장 매체로 구성될수도 있다.
제어부(140)는 전술한 블록 맵과 서브 블록 맵을 통해 각 데이터 블록에서 데이터가 저장되지 않은 빈 공간을 판단할 수 있으며, 판단 결과에 따른 빈 공간에 사용자 입력부(110)로 입력된 입력값에 따른 데이터를 저장할 수 있다. 이때, 제어부(140)는 소정 데이터 블록의 빈 공간에 입력값에 따른 데이터를 모두 저장하거나 빈 공간이 부족한 경우에는 다른 데이터 블록에 나누어 저장할 수 있다.
또한, 제어부(140)는 사용자 입력부(110)로 입력된 입력값에 따른 데이터를 저장한 경우에는 블록 맵과 서브 블록 맵을 갱신하여 사용자가 차후에 데이터를 저장할 경우에 참조할 수 있다. 또한, 블록 맵과 서브 블록 맵의 갱신은 데이터가 저장된 경우뿐만 아니라 각 데이터 블록에 저장된 데이터가 삭제될 경우에도 이루어질 수 있다.
구체적으로, 제어부(140)는 데이터 저장부(120)의 각 데이터 블록이 100KB의 크기를 가지고, 소정 데이터 블록에 저장된 데이터의 크기가 50KB인 경우, 전술한 블록 맵을 통해 해당 데이터 블록의 빈 공간이 50KB인 것을 판단할 수 있다. 이때, 사용자가 저장하고자 하는 데이터의 크기가 70KB일 경우, 해당 데이터 블록의 빈 공간이 50KB이기 때문에 총 70KB 중 50KB를 저장하고, 다른 데이터 블록에 20KB를 저장할 수 있다. 이때, 하나의 데이터가 두 개의 데이터 블록에 나누어져 저장되는데, 제어부(140)는 전술한 서브 블록 맵에 기록된 데이터가 저장된 데이터 블록들간의 연결 관계를 통해 해당 데이터에 용이하게 접근할 수 있다. 이와 같은 서브 블록 맵은 데이터가 시작되는 데이터 블록, 해당 데이터 블록에서의 시작 위치, 다른 데이터 블록의 연결관계 및 해당 데이터의 크기 등을 포함할 수 있다.
도 4는 본 발명의 실시예에 따른 데이터 저장부(120) 및 데이터 정보 저장부(130)가 도시된 도면이다.
도시된 바와 같이, 본 발명의 실시예에 따른 데이터 저장부(120)는 소정 크기를 가지는 다수의 데이터 블록(121~129)으로 이루어지며, 데이터 정보 저장부(130)는 데이터 저장부(120)에 저장된 데이터들에 대한 데이터 정보인 블록 맵, 서브 블록 맵 및 데이터 저장부(120)의 각 데이터 블록(121~129)에서 빈 공간에 대한 정보를 포함하는 프리 블록 맵이 각각 저장된 데이터 블록(131, 132, 133)으로 이루어질 수 있다. 이때, 본 발명의 실시예에서 데이터 정보 저장부(130)의 데이터 블록(131, 132, 133)은 데이터 저장부(120)의 데이터 블록(121~129)와 동일한 크기를 가지는 경우를 예를 들어 설명하기로 한다. 또한, 본 발명의 실시예에서 데이터 저장부(120)와 데이터 정보 저장부(130)의 각 데이터 블록은 동일한 크기를 가지 며, 데이터 저장부(120) 및 데이터 정보 저장부(130)가 하드웨어적으로 통합되어 구성되는 경우를 예를 들어 설명하기로 한다.
이때, 전술한 도 4에서 데이터 저장부(120) 및 데이터 정보 저장부(130)의 각 데이터 블록 및 데이터 저장부(120)에 저장된 데이터들은 각각 서로를 구별할 수 있는 ID가 부여될 수 있다.
이하, 본 발명의 실시예에서 사용되는 용어 중 각 데이터 블록들에게 부여된 ID를 '블록 ID'라 칭하고, 각 데이터들에게 부여된 ID를 '서브 블록 ID'라 칭하기로 한다. 또한, 본 발명의 실시예에서는 블록 ID와 서브 블록 ID의 구분을 위해 블록 ID는 A0, A1, A2, A3, ... 와 같은 형식으로 표시하고, 서브 블록 ID는 B0, B1, B2, B3, ... 와 같은 형식으로 표시하는 경우를 예를 들어 설명하기로 한다.
여기서, 서브 블록 ID는 소정 데이터에 대해 각 데이터 블록의 블록 ID 순서에 따라 순차적으로 부여될 수 있다. 예를 들어, 소정 데이터가 블록 ID가 A3인 데이터 블록과 A4인 데이터 블록에 나뉘어져 저장된 경우, 블록 ID가 A3인 데이터 블록에서 서브 블록 ID가 B4가 부여되면, 블록 ID가 A4인 데이터 블록에서는 서브 블록 ID가 B5가 부여될 수 있다. 따라서, 해당 데이터는 서브 블록 ID로 B4와 B5을 가질 수 있는 것이다. 본 발명의 실시예에서는 소정 데이터가 다수의 데이터 블록에 나뉘어져 저장된 경우, 각 데이터 블록에서의 연결 관계를 위해 각 데이터 블록에 대하여 서로 다른 서브 블록 ID를 부여하는 경우를 예를 들어 설명하고 있으나, 이에 한정되지 않고 해당 데이터가 시작되는 데이터 블록에서의 시작 위치와 데이터의 크기 등과 같이 다양한 방법을 통해 해당 데이터에 대한 각 데이터 블록에 대 한 연결 관계를 확인할 수 있다.
이때, 본 발명의 이해를 돕기 위해 본 발명의 실시예에서는 전술한 도 4에서 데이터 저장부(120)에 저장된 각 데이터의 서브 블록 ID와 데이터명의 관계는 표 1과 같은 경우를 예를 들어 설명하기로 한다.
서브 블록 ID |
데이터명 |
B0 |
Text1.txt |
B1 |
Text2.txt |
B2 |
Text3.txt |
B3 |
Text4.txt |
B4 ~ B8 |
Music1.mp3 |
B9 |
Text5.txt |
B10 ~ B11 |
Music2.mp3 |
또한, 전술한 표 1의 서브 블록 ID를 가지는 데이터가 전술한 도 4와 같은 데이터 저장부(120)에 저장된 경우, 각 데이터 블록에 대한 블록 맵은 표 2와 같으며, 표 2는 해당 데이터 블록의 블록 ID와 사용 공간으로 이루어질 수 있다.
블록 ID |
사용 공간 |
A0 |
100 |
A1 |
100 |
A2 |
100 |
A3 |
100 |
A4 |
100 |
A5 |
100 |
A6 |
100 |
A7 |
75 |
A8 |
100 |
A9 |
100 |
A10 |
0 |
A11 |
0 |
또한, 전술한 표 2의 블록 맵과 더불어 각 데이터 블록(121~129)에 저장된 각 데이터의 데이터 정보를 나타내는 서브 블록 맵은 표 3과 같다.
서브 블록 ID |
블록 ID |
시작 위치 |
크기 |
다음 서브 블록 ID |
B0 |
A3 |
0 |
15 |
EOF |
B1 |
A3 |
15 |
20 |
EOF |
B2 |
A3 |
35 |
15 |
EOF |
B3 |
A3 |
50 |
25 |
EOF |
B4 |
A3 |
75 |
25 |
B5 |
B5 |
A4 |
0 |
100 |
B6 |
B6 |
A5 |
0 |
100 |
B7 |
B7 |
A6 |
0 |
100 |
B8 |
B8 |
A7 |
0 |
50 |
EOF |
B9 |
A7 |
75 |
25 |
EOF |
B10 |
A8 |
0 |
100 |
EOF |
B11 |
A9 |
0 |
100 |
EOF |
전술한 표 3에서 EOF(End Of File)은 해당 데이터의 끝을 의미하는 것으로서, 전술한 표 3에서 다음 서브 블록 ID 항목에 EOF가 표시된 데이터는 더 이상 다음 서브 블록 ID를 탐색하지 않게 된다.
한편, 제어부(140)는 전술한 데이터 저장부(120)에서 빈 공간을 전술한 프리 블록 맵을 통해 관리하게 된다. 예를 들어, 전술한 도 4와 같이 데이터 저장부(120)에 빈 공간이 존재할 경우 프리 블록 맵(133)은 표 4와 같다.
블록 ID |
시작 위치 |
크기 |
A7 |
50 |
25 |
A10 |
0 |
100 |
A11 |
0 |
100 |
이하, 본 발명의 실시예에 따른 파일 시스템 관리 장치의 동작을 살펴본다.
도 5는 본 발명의 실시예에 따른 파일 시스템에 데이터를 저장하는 방법이 도시된 도면이다. 이때, 본 발명의 파일 시스템 관리 방법은 데이터 저장부(120)로의 데이터 저장, 삭제 및 복사 등에 적용될 수 있으며, 본 발명의 실시예에서는 데이터 저장부(120)에 소정의 데이터를 저장 및 삭제하는 경우를 예를 들어 설명하기로 한다.
도시된 바와 같이, 본 발명의 실시예에 따른 파일 시스템 관리 방법은, 먼저 사용자가 데이터 저장부(120)에서 소정의 데이터를 저장하기 위한 입력값을 사용자 입력부(100)를 통해 입력한다(S110).
제어부(140)는 입력된 입력값에 해당하는 데이터에 따른 데이터 정보를 판단한다(S120). 이때, 제어부(140)에 의해 판단되는 데이터 정보는 해당 데이터의 크기일 수 있다.
또한, 제어부(140)는 전술한 프리 블록 맵(133)을 참조하여 현재 데이터 저장부(120)의 빈 공간을 판단한다(S130).
제어부(140)는 데이터 저장부(120)에서 빈 공간의 판단이 완료되면, 판단된 빈 공간에 입력된 입력값에 따른 데이터를 저장한다(S140).
이때, 제어부(140)는 데이터가 저장 완료되면, 전술한 블록 맵, 서브 블록 맵 및 프리 블록 맵을 갱신한다(S150). 이때, 갱신되는 블록 맵은 전술한 표 2에서 입력값에 따라 저장된 데이터의 사용 공간이 추가되고, 서브 블록 맵은 입력값에 따른 데이터가 하나의 데이터 블록에 모두 저장된 경우에는 하나의 서브 블록 ID가 부여되고, 적어도 하나 이상의 데이터 블록에 나뉘어져 저장된 경우에는 각 데이터 블록마다 하나의 서브 블록 ID를 부여하여 전술한 표 1을 갱신할 수 있다.
또한, 프리 블록 맵 또한 입력값에 따른 데이터가 저장된 후, 데이터 저장부(120)에서 데이터가 저장되지 않는 빈 공간을 갱신하게 된다.
구체적으로, 전술한 도 4와 같은 데이터 저장부(120)에서 도 6과 같이 서브 블록 ID가 B12이고 크기가 50KB인 데이터가 저장된 경우, 전술한 블록 맵, 서브 블록 맵 및 프리 블록 맵은 각각 표 5, 표6 및 표 7과 같다.
블록 ID |
사용 공간 |
A0 |
100 |
A1 |
100 |
A2 |
100 |
A3 |
100 |
A4 |
100 |
A5 |
100 |
A6 |
100 |
A7 |
75 |
A8 |
100 |
A9 |
100 |
A10
|
50
|
A11 |
0 |
서브 블록 ID |
블록 ID |
시작 위치 |
크기 |
다음 서브 블록 ID |
B0 |
A3 |
0 |
15 |
EOF |
B1 |
A3 |
15 |
20 |
EOF |
B2 |
A3 |
35 |
15 |
EOF |
B3 |
A3 |
50 |
25 |
EOF |
B4 |
A3 |
75 |
25 |
B5 |
B5 |
A4 |
0 |
100 |
B6 |
B6 |
A5 |
0 |
100 |
B7 |
B7 |
A6 |
0 |
100 |
B8 |
B8 |
A7 |
0 |
50 |
EOF |
B9 |
A7 |
75 |
25 |
EOF |
B10 |
A8 |
0 |
100 |
EOF |
B11 |
A9 |
0 |
100 |
EOF |
B12
|
A10
|
0
|
50
|
EOF
|
블록 ID |
시작 위치 |
크기 |
A7 |
50 |
25 |
A10
|
50
|
50
|
A11 |
0 |
100 |
이와 같이 본 발명의 실시예에 따른 파일 시스테 관리 방법은 전술한 바와 같은 데이터를 저장한 경우뿐만 아니라, 이미 데이터 저장부(120)에 저장된 데이터를 삭제하는 경우에도 유사하게 적용될 수 있다.
도 7은 본 발명의 실시예에 따른 파일 시스템에서 데이터를 삭제하는 방법이 도시된 도면이다.
도시된 바와 같이, 본 발명의 실시예에 따른 파일 시스템 관리 방법은, 먼저 사용자가 데이터 저장부(120)에서 소정의 데이터를 삭제하기 위한 입력값을 사용자 입력부(100)를 통해 입력한다(S210).
제어부(140)는 입력된 입력값에 해당하는 데이터에 따른 데이터 정보를 판단한다(S220). 이때, 제어부(140)에 의해 판단되는 데이터 정보는 해당 데이터의 서브 블록 ID 및 크기 등일 수 있다.
또한, 제어부(140)는 전술한 블록 맵, 서브 블록 맵 및 프리 블록 맵을 참조하여 해당 데이터가 저장된 위치를 판단한다(S230).
제어부(140)는 블록 맵, 서브 블록 맵 및 프리 블록 맵을 통해 해당 데이터의 위치가 판단되면, 판단 결과에 따른 데이터를 삭제한다(S240).
이때, 제어부(140)는 데이터의 삭제가 완료되면, 전술한 블록 맵, 서브 블록 맵 및 프리 블록 맵을 갱신한다(S250).
구체적으로, 전술한 도 4와 같은 데이터 저장부(120)에 저장된 데이터가 도 8과 같이 데이터 저장부(120)에서 서브 블록 ID가 각각 B1 및 B9인 데이터가 삭제된 경우, 전술한 블록 맵, 서브 블록 맵 및 프리 블록 맵은 각각 표 8, 표9 및 표 10과 같다.
블록 ID |
사용 공간 |
A0 |
100 |
A1 |
100 |
A2 |
100 |
A3
|
80
|
A4 |
100 |
A5 |
100 |
A6 |
100 |
A7
|
50
|
A8 |
100 |
A9 |
100 |
A10 |
0 |
A11 |
0 |
서브 블록 ID |
블록 ID |
시작 위치 |
크기 |
다음 서브 블록 ID |
B0 |
A3 |
0 |
15 |
EOF |
-
|
-
|
-
|
-
|
-
|
B2 |
A3 |
35 |
15 |
EOF |
B3 |
A3 |
50 |
25 |
EOF |
B4 |
A3 |
75 |
25 |
B5 |
B5 |
A4 |
0 |
100 |
B6 |
B6 |
A5 |
0 |
100 |
B7 |
B7 |
A6 |
0 |
100 |
B8 |
B8 |
A7 |
0 |
50 |
EOF |
- |
- |
- |
- |
- |
B10 |
A8 |
0 |
100 |
EOF |
B11 |
A9 |
0 |
100 |
EOF |
블록 ID |
시작 위치 |
크기 |
A3
|
15
|
20
|
A7
|
50
|
50
|
A10 |
0 |
100 |
A11 |
0 |
100 |
이상과 같이 본 발명에 따른 파일 시스템 관리 장치 및 방법을 예시된 도면을 참조로 하여 설명하였으나, 본 명세서에 개시된 실시예와 도면에 의해 본 발명은 한정되지 않으며 그 발명의 기술사상 범위내에서 당업자에 의해 다양한 변형이 이루어질 수 있음은 물론이다.