KR100883651B1 - 파일을 저장할 디스크의 공간을 할당하는 방법 및 장치 - Google Patents

파일을 저장할 디스크의 공간을 할당하는 방법 및 장치 Download PDF

Info

Publication number
KR100883651B1
KR100883651B1 KR1020060044657A KR20060044657A KR100883651B1 KR 100883651 B1 KR100883651 B1 KR 100883651B1 KR 1020060044657 A KR1020060044657 A KR 1020060044657A KR 20060044657 A KR20060044657 A KR 20060044657A KR 100883651 B1 KR100883651 B1 KR 100883651B1
Authority
KR
South Korea
Prior art keywords
data
size
req
len
sections
Prior art date
Application number
KR1020060044657A
Other languages
English (en)
Other versions
KR20070111626A (ko
Inventor
알렉산더 키르나소브
황주영
Original Assignee
삼성전자주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 삼성전자주식회사 filed Critical 삼성전자주식회사
Priority to KR1020060044657A priority Critical patent/KR100883651B1/ko
Priority to EP07107254A priority patent/EP1858018A3/en
Priority to US11/745,635 priority patent/US7797485B2/en
Priority to JP2007125978A priority patent/JP2007310878A/ja
Priority to CNA2007101074549A priority patent/CN101075212A/zh
Publication of KR20070111626A publication Critical patent/KR20070111626A/ko
Application granted granted Critical
Publication of KR100883651B1 publication Critical patent/KR100883651B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11BINFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
    • G11B27/00Editing; Indexing; Addressing; Timing or synchronising; Monitoring; Measuring tape travel
    • G11B27/02Editing, e.g. varying the order of information signals recorded on, or reproduced from, record carriers
    • G11B27/031Electronic editing of digitised analogue information signals, e.g. audio or video signals
    • G11B27/034Electronic editing of digitised analogue information signals, e.g. audio or video signals on discs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11BINFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
    • G11B20/00Signal processing not specific to the method of recording or reproducing; Circuits therefor
    • G11B20/10Digital recording or reproducing
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11BINFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
    • G11B27/00Editing; Indexing; Addressing; Timing or synchronising; Monitoring; Measuring tape travel
    • G11B27/10Indexing; Addressing; Timing or synchronising; Measuring tape travel
    • G11B27/19Indexing; Addressing; Timing or synchronising; Measuring tape travel by using information detectable on the record carrier
    • G11B27/28Indexing; Addressing; Timing or synchronising; Measuring tape travel by using information detectable on the record carrier by using information signals recorded by the same method as the main recording
    • G11B27/32Indexing; Addressing; Timing or synchronising; Measuring tape travel by using information detectable on the record carrier by using information signals recorded by the same method as the main recording on separate auxiliary tracks of the same or an auxiliary record carrier
    • G11B27/327Table of contents
    • G11B27/329Table of contents on a disc [VTOC]
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11BINFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
    • G11B20/00Signal processing not specific to the method of recording or reproducing; Circuits therefor
    • G11B20/10Digital recording or reproducing
    • G11B20/12Formatting, e.g. arrangement of data block or words on the record carriers
    • G11B20/1217Formatting, e.g. arrangement of data block or words on the record carriers on discs
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11BINFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
    • G11B20/00Signal processing not specific to the method of recording or reproducing; Circuits therefor
    • G11B20/10Digital recording or reproducing
    • G11B2020/10916Seeking data on the record carrier for preparing an access to a specific address
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11BINFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
    • G11B20/00Signal processing not specific to the method of recording or reproducing; Circuits therefor
    • G11B20/10Digital recording or reproducing
    • G11B20/12Formatting, e.g. arrangement of data block or words on the record carriers
    • G11B2020/1291Formatting, e.g. arrangement of data block or words on the record carriers wherein the formatting serves a specific purpose
    • G11B2020/1294Increase of the access speed
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11BINFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
    • G11B20/00Signal processing not specific to the method of recording or reproducing; Circuits therefor
    • G11B20/10Digital recording or reproducing
    • G11B20/12Formatting, e.g. arrangement of data block or words on the record carriers
    • G11B2020/1291Formatting, e.g. arrangement of data block or words on the record carriers wherein the formatting serves a specific purpose
    • G11B2020/1294Increase of the access speed
    • G11B2020/1297Increase of the access speed wherein the focus is on the write access speed
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11BINFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
    • G11B2220/00Record carriers by type
    • G11B2220/20Disc-shaped record carriers

Abstract

본 발명은 파일을 기록하기 위한 디스크의 공간을 할당하는 방법 및 장치에 관한 것으로, 본 발명에 의하면 소정 기준값 이상의 크기를 가지는 빈 구간들을 조합하여 구성할 수 있는 집합들 중 총 크기가 기록하려는 데이터의 크기 이상인 집합들을 검색하고, 검색된 집합들 중 소정 기준점으로부터의 탐색 시간이 가장 짧은 집합을 상기 데이터에 할당함으로써, 디스크에 존재하는 빈 구간들을 기준점으로부터의 거리 뿐만 아니라 크기에 따라 달라지는 탐색 시간을 고려하여 빈 공간을 할당하므로 단순히 기준점으로부터의 거리만을 고려하여 할당하는 경우보다 탐색 시간을 줄일 수 있다.

Description

파일을 저장할 디스크의 공간을 할당하는 방법 및 장치{Method and apparatus for allocating free space of disc for a file to be written on the disc}
도 1은 종래 기술에 따라 빈 공간을 할당하는 방법을 설명하기 위한 도면,
도 2는 본 발명에 따라 디스크의 공간을 할당하는 과정을 나타낸 순서도,
도 3은 본 발명에 따른 제 1 알고리즘을 수행하는 과정을 나타낸 순서도,
도 4는 본 발명에 따른 제 2 알고리즘을 수행하는 과정을 나타낸 순서도,
도 5는 본 발명에 따라 디스크의 공간을 할당하는 장치의 구조도,
도 6은 본 발명의 제1실시예에 따라 디스크의 공간을 할당하는 방법을 설명하기 위한 도면,
도 7은 본 발명의 제2실시예에 따라 디스크의 공간을 할당하는 방법을 설명하기 위한 도면,
도 8은 본 발명의 제3실시예에 따라 디스크의 공간을 할당하는 방법을 설명하기 위한 도면이다.
도 9는 본 발명의 제4실시예에 따라 디스크의 공간을 할당하는 방법을 설명하기 위한 도면이다.
본 발명은 파일 시스템에 관한 것으로, 더욱 상세하게는 파일을 기록하기 위한 디스크의 공간을 할당하는 방법 및 장치에 관한 것이다.
FAT, XFS, Ext2 등 현존하는 다양한 파일 시스템들이 지향하는 목적들 중 하나는 디스크에 파일을 저장할 때 그 파일을 구성하는 데이터들이 최대한 가까운 곳에 위치하도록 하는 것에 있다. 이는 디스크 헤드가 파일을 읽을 때 소요되는 탐색 시간(seek time)을 최소화하기 위해서인데, 하나의 파일을 구성하는 데이터가 근접성을 가지고 저장되기 위해서는 디스크의 빈 공간을 적절하게 할당(allocate)해야 할 필요가 있다.
도 1은 종래 기술에 따라 빈 공간을 할당하는 방법을 설명하기 위한 도면이다. 도 1에 도시된 a 내지 j는 각각 하나의 블록(block)을 나타내는데, 블록의 크기는 파일 시스템에 따라 가변적이다. 도 1에서 어두운 블록은 이미 다른 데이터가 할당된 블록을 나타내며, 밝은 블록은 빈 블록을 나타낸다. 기준점은 지금부터 저장하려고 하는 데이터(이하 목적 데이터라고 칭함)와 관련된 데이터가 마지막으로 저장된 위치를 나타내는데, 다시 말하면, 목적 데이터가 저장된 경우 디스크 헤드가 목적 데이터를 읽기 직전에 위치하는 장소가 된다.
직관적으로, 또한 경험적으로 거리가 멀수록 탐색 시간이 길어지므로, 종래 기술에서는 기준점으로부터 가까운 곳에 위치한 빈 블록부터 할당하기 시작하여 목적 데이터의 크기를 커버할 수 있을 때까지 빈 블록들을 차례로 할당하기 시작한 다. 따라서, 도 1에서와 같이 빈 블록들이 위치할 경우, 종래 기술에 의하면 d, f, j, j순으로 할당하기 시작한다.
그러나, 다수의 블록들을 읽는 경우, 총 거리와 총 탐색 시간이 반드시 정비례하는 것은 아니다. 이는 동일한 크기의 파일을 저장하더라도 다수의 떨어진 블록들에 분산하여 저장하는 것보다 하나의 연속된 블록에 저장하는 경우 그 파일을 읽기 위한 탐색 시간이 더 단축되므로, 기준점에서부터의 거리 뿐만 아니라 이러한 요인도 고려해야 하기 때문이다. 다수의 블록들에 하나의 파일과 관련된 데이터가 분산되어 저장된 경우, 정확한 탐색 시간은 파일 시스템에 따른 탐색 곡선(seek curve)에 따라 결정된다. 따라서, 종래 기술에 의하면, 도 1에서와 같은 경우, 예를 들어 목적 데이터의 크기가 두 블록 크기라고 할 때, 탐색 곡선에 따라 i 및 j를 할당하는 것이 가장 짧은 탐색 시간을 가지게 되는 경우에도 기준점에서의 거리만을 고려하여 빈 공간을 할당하므로 결국 d, f를 할당하게 되어 최적화된 결과를 얻지 못하는 문제가 있다.
본 발명은 할당되는 빈 구간들의 크기에 따른 실제 탐색 시간을 고려하여 디스크의 공간을 할당하는 장치 및 방법을 제공하는데 그 목적이 있다.
이러한 목적을 달성하기 위한 본 발명은, 데이터를 기록하기 위해 디스크의 공간을 할당하는 방법에 있어서, (a) 소정 기준값 이상의 크기를 가지는 빈 구간들을 조합하여 구성할 수 있는 집합들 중 총 크기가 상기 데이터의 크기 이상인 집합 들을 검색하는 단계; 및 (b) 상기 검색된 집합들 중 소정 기준점으로부터의 탐색 시간이 가장 짧은 집합을 상기 데이터에 할당하는 단계를 포함하는 것을 특징으로 한다.
이때, 상기 (a)단계에서 검색된 집합이 없는 경우, (c) 상기 기준점으로부터 소정 범위 내에 존재하며 상기 데이터의 크기 이상인 빈 구간을 상기 데이터에 할당하는 단계를 더 포함하는 것이 바람직하다.
또한, (d) 상기 기준점으로부터 상기 소정 범위 내에 상기 데이터의 크기 이상인 빈 구간이 존재하지 않는 경우, 상기 소정 범위 외의 빈 구간(들) 중 상기 데이터의 크기 이상인 구간을 상기 데이터에 할당하는 단계를 더 포함하는 것이 바람직하다.
또한, (e) 상기 소정 범위 외에도 상기 데이터의 크기 이상인 빈 구간이 없는 경우 상기 디스크의 빈 구간(들) 중 최대 구간을 상기 데이터에 할당하고, 상기 디스크에 빈 구간이 존재하지 않는 경우 에러 메시지를 출력하는 단계; 및 (f) 상기 (d)단계에서 상기 최대 구간이 할당된 경우, 상기 최대 구간이 끝나는 점을 새로운 기준점으로 하고, 상기 데이터의 크기에서 상기 최대 구간의 크기를 뺀 값을 새로운 데이터의 크기로 하여 상기 (a)단계 내지 상기 (e)단계를 수행하는 단계를 더 포함하는 것이 바람직하다.
또한, 상기 (a)단계 내지 상기 (f)단계는 상기 에러 메시지가 출력되거나 상기 데이터가 성공적으로 할당될 때까지 반복하여 수행하는 것이 바람직하다.
또한, 상기 (c)단계에서 상기 기준점으로부터 소정 범위 내에 존재하며 상기 데이터의 크기 이상인 빈 구간이 복수인 경우, 그 중 상기 기준점으로부터 가장 가까운 구간을 상기 데이터에 할당하는 것이 바람직하다.
또한, 상기 (d)단계에서 상기 소정 범위 외의 빈 구간(들) 중 상기 데이터의 크기 이상인 구간이 복수인 경우, 그 중 상기 기준점으로부터 가장 가까운 구간을 상기 데이터에 할당하는 것이 바람직하다.
또한, 본 발명은 상기 디스크 공간 할당 방법을 컴퓨터에서 실행시키기 위한 컴퓨터로 읽을 수 있는 기록 매체를 제공한다.
또한, 본 발명은 데이터를 기록하기 위해 디스크의 공간을 할당하는 장치에 있어서, 소정 기준값 이상의 크기를 가지는 빈 구간들을 조합하여 구성할 수 있는 집합들 중 총 크기가 상기 데이터의 크기 이상인 집합들을 검색하고, 상기 검색된 집합들 중 소정 기준점으로부터의 탐색 시간이 가장 짧은 집합을 상기 데이터에 할당하는 제1알고리즘을 수행하는 제1알고리즘수행부를 포함하는 것을 특징으로 한다.
상기 디스크 공간 할당 장치는 상기 제1알고리즘에 의해 검색된 집합이 없는 경우, 상기 기준점으로부터 소정 범위 내에 존재하며 상기 데이터의 크기 이상인 빈 구간을 상기 데이터에 할당하고, 상기 기준점으로부터 상기 소정 범위 내에 상기 데이터의 크기 이상인 빈 구간이 존재하지 않는 경우 상기 소정 범위 외의 빈 구간(들) 중 상기 데이터의 크기 이상인 구간을 상기 데이터에 할당하고, 상기 소정 범위 외에도 상기 데이터의 크기 이상인 빈 구간이 없으면 상기 디스크의 빈 구간(들) 중 최대 구간을 상기 데이터에 할당하며, 상기 디스크에 빈 구간이 존재하 지 않는 경우 에러 메시지를 출력하는 제2알고리즘을 수행하는 제2알고리즘수행부를 더 포함하는 것이 바람직하다.
또한, 상기 제2알고리즘에 의해 상기 최대 구간이 할당된 경우, 상기 최대 구간이 끝나는 점을 새로운 기준점으로 설정하고, 상기 데이터의 크기에서 상기 최대 구간의 크기를 뺀 값을 새로운 데이터의 크기로 설정하여 상기 제1알고리즘수행부가 상기 제1알고리즘을 수행하도록 제어하는 제어부를 더 포함하는 것이 바람직하다.
이하에서 첨부된 도면을 참조하여, 본 발명의 바람직한 실시예를 상세히 설명한다.
도 2는 본 발명에 따라 디스크의 공간을 할당하는 과정을 나타낸 순서도이다.
단계 210에서는 제 1 알고리즘을 수행하는데(210), 제 1 알고리즘은 기준점으로부터 일정 거리 내에 있는 일정 크기 이상의 빈 구간들을 이용하여 할당을 시도하는 방법으로, 이에 대한 자세한 설명은 도 3을 참조하여 후술한다. 여기서, 구간은 하나의 블록 또는 연속되는 복수 개의 블록들을 의미하며, 이하 동일하다.
단계 220에서는 제 1 알고리즘에 의해 목적 데이터를 위한 빈 공간이 모두 할당되었는지를 판단하는데, 할당이 완료되지 않은 경우 단계 230에서 제 2 알고리즘을 수행한다. 제 2 알고리즘은 크기가 큰 빈 구간을 우선적으로 할당하는 방법으로, 이에 대한 자세한 설명은 도 4를 참조하여 후술한다.
단계 240에서는 제 2 알고리즘에 의해 목적 데이터의 할당이 성공적으로 완 료되었는지를 판단하고, 단계 250에서는 할당이 성공적으로 완료되지 않은 경우 디스크에 아직도 빈 공간이 존재하는지를 판단하며, 단계 260에서는 단계 250에서의 판단 결과 디스크에 아직도 빈 공간이 존재하는 경우 기준점 및 목적 데이터 크기를 재설정하여 제 1 알고리즘을 다시 수행하기 위한 새로운 입력값을 생성한다. 이러한 제 1 알고리즘 및 제 2 알고리즘은 목적 데이터를 위한 빈 공간이 성공적으로 할당되거나 디스크에 더 이상 목적 데이터를 저장할 수 있는 공간이 없게 될 때까지 교대로 반복되어 수행된다.
도 3은 본 발명에 따른 제 1 알고리즘을 수행하는 과정을 나타낸 순서도이다.
일반적으로, 대부분의 파일 시스템은 빈 공간에 대한 메타 데이터를 관리하는데, 예를 들면 XFS에서는 B+트리를 이용하여 빈 공간을 그 위치 및 크기에 따라 정렬하여 관리한다. 본 발명에서는 이 외에도 Li라는 메타 데이터를 사용하는데, Li는 소정 범위의 값을 가지는 i에 대하여 상기 디스크의 빈 구간들 중 크기가 2i개의 블록 수 이상인 구간들로 구성된 집합이다. 즉, L1에는 디스크 내에서 21개의 블록 수 이상의 크기를 가지는 빈 구간들이 포함된다. 다만, 모든 i에 대하여 Li를 생성하지 않고, 제한된 범위의 값을 가지는 i에 대해 Li를 생성하는 것이 경제적인 측면에서 바람직한데, 본 발명에서는 i1≤ i ≤i2인 i에 대하여만 Li를 생성한다.
단계 310에서는 이러한 Li를 생성하는데, 여기에는 i1 및 i2를 결정하는 과 정이 포함된다. i1 및 i2는 i의 범위, 즉, 제 1 알고리즘에서 목적 데이터를 할당하기 위해 조합할 빈 구간의 최소 크기를 결정한다.
예를 들면, i2 = min(N, ]log2(req_len)[), i1 = max([log2(req_len)]-C, 0)와 같이 결정할 수 있는데, req_len은 목적 데이터의 크기, C는 상수, N=[log2(V/B)]이며, V는 상기 디스크 전체의 용량, B는 파일 시스템의 블록 크기이다. 한편, ][는 올림, []는 내림을 나타내는 수학 연산자이다. 즉, 목적 데이터의 크기에 따라 i의 최대값이 정해지며, 상수 C에 따라 i의 최소값이 정해진다.
단계 320에서는 Wi, Zi, Mi를 결정한다.
Wi는 각 i에 대하여 Li에 속한 빈 구간들 중 소정 개수의 구간들로 구성된 집합인데, Li에 속한 빈 구간들 중에서 왼쪽에 위치한 u개의 구간 및 오른쪽에 위치한 v개의 구간으로 구성된다. 각 i에 대해 Li의 모든 빈 구간을 검색하는 것은 경제적이지 못하므로 그 검색 범위를 제한한 것인데, 예를 들면, u는 다음 조건을 따르도록 할 수 있다.
(1) u ≤ ]req_len/2i[
(2) l(l1)+l(l2)+...+l(lu) ≥req_len인 동시에 l(l1)+l(l2)+...+l(lu-1) < req_len 이거나, 또는 l(l1)+l(l2)+...+l(lu) < req_len
마찬가지로, v도 다음 조건을 따르도록 할 수 있다.
(1) v ≤ ]req_len /2i[
(2) l(r1)+l(r2)+...+l(rv) ≥ req_len인 동시에 l(r1)+l(r2)+...+l(rv-1) < req_len 이거나, 또는 l(r1)+l(r2)+...+l(rv) < req_len
상기 수학식들에서, l(x)는 구간 x의 크기를 나타내는 함수이다.
즉, 상기 수학식들에 의하면, Li에서 기준점을 중심으로 왼쪽에 위치한 구간들 중 목적 데이터의 크기 이상이 되도록 하는 최소 개수인 u개의 구간들인 l1, l2, l3,...,lu 및 기준점의 오른쪽에 위치한 구간들 중 목적 데이터의 크기 이상이 되도록 하는 최소 개수인 v개의 빈 구간들인 r1, r2, r3,..,rv가 Wi를 구성한다. 이 때, lk보다는 lk +1이 기준점에서 더 멀리 떨어진 구간이다. 한편, Li에서 기준점의 왼쪽에 존재하는 구간들의 총 합의 크기가 목적 데이터의 크기보다 작도록 u를 정할 수도 있으며, 이는 기준점의 오른쪽에 존재하는 빈 구간들에 대하여도 마찬가지이다. 왜냐하면, 제 1 알고리즘은 Wi에 속하는 구간들을 조합하여 목적 데이터 이상의 빈 공간을 확보하여 목적 데이터를 할당하는 것이 목적인데, u개의 구간들의 합이 목적 데이터의 크기보다 작더라도, 기준점의 오른쪽에 있는 v개의 구간들과 조합하면 그 총합의 크기가 목적 데이터의 크기보다 커질 수도 있기 때문이다.
Zi는 각 i에 대하여, Wi에 속한 구간들 중 w개의 연속적으로 위치한 구간들인 zi1 , zi2 ,..., ziw로 구성할 수 있는 집합들의 집합이다. Wi에는 u+v개의 구간들이 있는데, 이들 중 연속적으로 위치한 w개의 구간들로 조합 가능한 집합들을 모두 포함하는 것이 Zi인 것이다. 다시 말하면, Zi는 집합들의 집합이다. 이 때 w는 목적 데이터의 크기 이상인 빈 공간의 크기를 확보하기 위한 최소값이다. 즉, l(zi1)+l(zi2)+...+l(ziw) ≥ req_len이고, l(zi1)+l(zi2)+...+l(zi (w-1)) < req_len 이다.
Mi는 각 i에 대하여 Zi에 속한 집합들 중 최소의 탐색 시간을 가지는 집합이다. 즉, 전술한 바와 같이 Zi에는 복수 개의 집합들이 있을 수 있는데, 그 중 기준점으로부터의 탐색 시간이 가장 짧은 집합이 Mi가 된다. 다시 말하면, 각 i에 대하여, Wi에 속한 구간들을 조합하여 목적 데이터 모두를 할당할 때 최적의 조합이 곧 Mi가 되는 것이다.
단계 330에서는 각 i에 대하여 결정한 Mi중에서 최소의 탐색 시간을 가지는 집합을 결정한다. 단계 340에서는 Mi의 최소값이 존재하는지의 여부를 판단하고, 단계 350에서는 Mi의 최소값이 존재하는 경우 해당 집합에 속하는 구간들을 목적 데이터에 할당한다. Mi의 최소값이 존재하지 않는 경우는 Wi에 속한 모든 구간들의 총합이 목적 데이터의 크기보다 작은 경우일 것이다. 본 발명에 따르면 Mi의 최소값이 존재하지 않는 경우, 제 1 알고리즘이 종료되고 제 2 알고리즘이 수행된다. 이하에 서 제 2 알고리즘에 대해 상세히 설명하도록 한다.
도 4는 본 발명에 따른 제 2 알고리즘을 수행하는 과정을 나타낸 순서도이다.
단계 410에서는, 소정 범위 내에서 목적 데이터 크기 이상인 빈 구간을 검색한다. 여기서, 소정 범위는 기준점으로부터 일정 거리 내로 한정하는 것이 바람직하다. 단계 420에서는 단계 410에서의 검색이 성공하였는지의 여부를 판단하고, 단계 470에서는 단계 410에서의 검색이 성공한 경우 검색된 구간을 목적 데이터에 할당한다(470). 이 때, 검색된 구간이 복수 개인 경우에는, 탐색 시간을 단축하기 위해 기준점으로부터 가장 가까운 곳에 위치한 구간을 할당하는 것이 바람직하다.
단계 430에서는, 단계 410에서의 검색이 실패한 경우 디스크 전체에 목적 데이터 크기 이상인 빈 구간이 존재하는지의 여부를 판단하며, 단계 470에서는 단계 430에서의 판단 결과 디스크 전체에 목적 데이터 크기 이상인 빈 구간이 존재하는 경우 해당 구간을 목적 데이터에 할당한다. 이 때에도 목적 데이터 크기 이상인 빈 구간이 복수 개인 경우에는, 탐색 시간을 단축하기 위해 기준점으로부터 가장 가까운 곳에 위치한 구간을 할당하는 것이 바람직하다.
단계 440에서는, 단계 430에서의 판단 결과 디스크 전체에 목적 데이터 크기 이상인 빈 구간이 존재하지 않는 것으로 판단된 경우, 디스크 전체에 구간의 크기와 관계없이 빈 구간이 존재하는지의 여부를 판단한다. 단계 460에서는 단계 440에서의 판단 결과 빈 구간이 없는 경우 에러메시지를 출력한다. 단계 450에서는 단계 440에서의 판단 결과 빈 구간이 존재하는 경우 존재하는 구간들 중 최대 구간을 선 택하며, 단계 470에서는 단계 450에서 선택한 최대 구간을 목적 데이터의 일부에 할당한다.
한편, 410에서는 소정 범위 내에서 목적 데이터 크기 이상인 빈 구간을 찾기 위해 각 블록을 실제로 검사해야 하지만, 단계 430 및 단계 440에서는 직접 검사하지 않고 파일 시스템에서 관리하는 목록을 참조하여 쉽게 알아낼 수 있다. 예를 들면, XFS에서는 빈 공간에 관한 정보를 위치 및 크기에 따라 B+트리로 관리하므로, 이를 참조하여 검색할 수 있을 것이다.
도 5는 본 발명에 따라 디스크의 공간을 할당하는 장치의 구조를 나타낸 순서도이다.
도 5를 참조하면, 본 발명에 따른 디스크 공간 할당 장치는 제1알고리즘수행부(510), 제2알고리즘수행부(520) 및 제어부(530)를 포함한다.
제1알고리즘수행부(510)는 전술한 제1알고리즘을 수행하여 목적 데이터를 위한 빈 공간을 할당한다.
이러한 제1알고리즘수행부(510)는 Li생성부(511), Wi생성부(512), Zi생성부(513), 제1선택부(514), 제2선택부(515) 및 할당부(516)을 포함한다.
Li생성부(511)는 i1 및 i2를 결정하고, 이에 따라 Li를 생성하며, Wi생성부(512)는 Li로부터 Wi를 생성한다.
Zi생성부(513)는 Wi로부터 Zi를 생성하고, 제1선택부(514)는 각 Zi에 속한 집합들 중 최소 탐색 시간을 가지는 집합을 선택한다.
제2선택부(515)는 제1선택부(514)에서 선택된 집합들 중 최소 탐색 시간을 가지는 집합을 선택하며, 할당부(516)는 제2선택부(515)에서 선택한 집합에 속한 구간들을 목적 데이터에 할당한다.
각 파라미터에 대한 설명은 이미 전술한 바 있으므로 여기서는 생략한다.
제2알고리즘수행부(520)는 제1알고리즘수행부(510)에 의한 할당이 실패한 경우 제2알고리즘을 수행하여 목적 데이터를 위한 빈 구간의 할당을 시도하며, 디스크에 더 이상 빈 공간이 없는 경우 에러 메시지를 출력한다.
제어부(530)는 제2알고리즘수행부(520)가 목적 데이터 전체에 대해 구간을 할당하지 못하고, 목적 데이터의 일부에 대한 구간을 할당한 경우 목적 데이터의 크기에서 할당한 구간의 크기를 뺀 값을 새로운 목적 데이터의 크기로 설정하고, 할당한 구간이 끝나는 위치를 새로운 기준점으로 설정하여 제1알고리즘수행부(510)에게 전달함으로써 제1알고리즘수행부(510)가 새로운 입력값들을 기초로 제1알고리즘을 수행하도록 한다. 또한, 제어부(530)는 제1알고리즘수행부(520)에 의해 에러메시지가 출력되거나 목적 데이터 전체를 위한 빈 공간이 성공적으로 할당될때까지 상기의 설정 동작을 반복함으로써 제1알고리즘 및 제2알고리즘이 교대로 수행되도록 한다.
도 6은 본 발명의 제1실시예에 따라 디스크의 공간을 할당하는 방법을 설명하기 위한 도면이다. 어두운 부분은 이미 할당된 공간을 나타내고, 밝은 부분은 빈 공간을 나타내며, 도 6에 도시된 부분 외의 모든 부분은 이미 할당된 것으로 가정한다.
도 6을 참조하면, 기준점의 왼쪽으로 그 크기가 1(블록)인 빈 구간 a, b가 있고, 기준점의 오른쪽으로 각각 크기가 2,4,3(블록)인 빈 구간 c,d,e가 있다. 본 실시예에서는 목적 데이터의 크기가 4(블록), C=2, N=20이라 가정한다.
우선 i2 = min(20, ]log24[)이므로 2가 되고, i1 = max([log24]-2, 0)이므로 0이 된다. 따라서, L0, L1, L2를 생성해야 하며, 그 결과는 다음과 같다.
L2: {d}
L1: {c, d, e}
L0: {a, b, c, d, e}
여기서, Wi를 결정하면 그 결과는 다음과 같다.
W2: {d}
W1: {c, d}
W0: {a, b, c, d}
다음으로, Wi로부터 Zi를 결정하면 그 결과는 다음과 같다.
Z1: {d}
Z2: {c, d}, {d}
Z3: {a, b, c}, {b, c, d}, {c, d}, {d}
이제, 각 i별로 Zi에 속한 집합들 중 최소의 탐색 시간을 가지는 집합을 선택하여 Mi를 결정하고, Mi들 중에서 최소의 탐색 시간을 가지는 집합을 결정하여 결 정된 집합에 속한 구간(들)을 목적 데이터에 할당하면 된다.
도 7은 본 발명의 제2실시예에 따라 디스크의 공간을 할당하는 방법을 설명하기 위한 도면이다. 어두운 부분은 이미 할당된 공간을 나타내고, 밝은 부분은 빈 공간을 나타내며, 도 7에 도시된 부분 외의 모든 부분은 이미 할당된 것으로 가정한다.
또한, 본 실시예에서는 목적 데이터의 크기가 8, C= 2, N=20인 것으로 가정한다.
i2 = min(20, ]log28[)이므로 3이 되고, i1 = max([log28]-2, 0)이므로 1이 된다. 따라서, L1, L2, L3를 생성해야 하며, 그 결과는 다음과 같다.
L3: empty
L2: {d}
L1: {d}
여기서, Wi를 결정하면 그 결과는 다음과 같다.
W3: empty
W2: {d}
W1: {d}
다음으로, Wi로부터 Zi를 결정하여야 하는데, W2 및 W1에서 선택할 수 있는 유일한 구간인 d의 크기는 목적 데이터의 크기보다 작으므로, 결국 제 1 알고리즘에 따른 할당은 실패하였다. 따라서, 제 2 알고리즘이 수행된다.
도시된 바와 같이, 디스크 내에 목적 데이터의 크기 이상인 빈 구간이 존재하지 않으므로, 빈 구간들 중 최대 구간인 구간 d가 목적 데이터의 일부에 할당된다. 구간 d가 목적 데이터의 일부에 할당되었으므로 아직 할당되지 않은 목적 데이터의 부분은 1(블록)의 크기를 가진다. 따라서, 구간 d가 끝나는 지점을 새로운 기준점으로 설정하고, 1(블록)을 새로운 목적 데이터의 크기로 설정하여 제 1 알고리즘을 수행하면, i2 = min(20, ]log21[)이므로 0이 되고, i1 = max([log21]-2, 0)이므로 0이 된다. 따라서, L0을 생성하면 다음과 같다.
L0: {a, b, c}
이로부터 W0을 결정하면 다음과 같다.
W0: {c}
이로부터 Z0을 결정하면 다음과 같다.
Z0: {c}
따라서, 추가적으로 할당할 구간은 구간 c가 되므로, 결국 본 발명에 따라 초기의 목적 데이터에는 {c, d}가 할당된다.
도 8은 본 발명의 제3실시예에 따라 디스크의 공간을 할당하는 방법을 설명하기 위한 도면이다. 도 8을 참조하면, 디스크의 상태는 도 7에서와 동일하나 상수 C가 도 7에서와는 달리 3의 값을 가진다.
제 1 알고리즘을 수행하면, i2 = min(20, ]log28[)이므로 3이 되고, i1 = max([log28]-3, 0)이므로 0이 된다. 따라서, L0, L1, L2, L3를 생성해야 하며, 그 결과는 다음과 같다.
L3: empty
L2: {d}
L1: {d}
L0: {a, b, c, d}
여기서, Wi를 결정하면 그 결과는 다음과 같다.
W3: empty
W2: {d}
W1: {d}
W0: {a, b, c, d}
다음으로, Wi로부터 Zi를 결정하면 그 결과는 다음과 같다.
Z3: empty
Z2: empty
Z1: empty
Z0: {a, b, c, d}
결국, 본 실시예에서는 {a, b, c, d}가 목적 데이터에 할당된다.
도 7의 실시예에 대한 결과와 도 8의 실시예에 대한 결과를 비교하면, 도 8에서는 C의 값을 2가 아닌 3으로 하여 i의 범위를 넓혔으며, 그에 따라 다른 결과를 얻게 되었다. 따라서, C의 값에 따라 결과가 달라질 수 있으며, C의 값을 적절 히 조절함으로써 최적화된 결과를 얻을 수 있음을 알 수 있다.
도 9는 본 발명의 제4실시예에 따라 디스크의 공간을 할당하는 방법을 설명하기 위한 도면이다.
본 실시예에서는 목적 데이터의 크기가 12(블록), C=2, N=20이라 가정한다.
어두운 부분은 이미 할당된 공간을 나타내고, 밝은 부분은 빈 공간을 나타내며, 도 9에 도시된 부분 외의 모든 부분은 이미 할당된 것으로 가정한다.
우선 i2 = min(20, ]log212[)이므로 4가 되고, i1 = max([log212]-2, 0)이므로 2가 된다. 따라서, L2, L3, L4를 생성해야 하며, 그 결과는 다음과 같다.
L4: empty
L3: {c}
L2: {c}
여기서, Wi를 결정하면 그 결과는 다음과 같다.
W4: empty
W3: {c}
W2: {c}
다음으로, Wi로부터 Zi를 결정하면 그 결과는 다음과 같다.
Z4: empty
Z3: empty
Z2: empty
따라서, 제 1 알고리즘에 의한 할당은 실패하였으므로 제 2 알고리즘이 수행된다.
빈 구간들 중 최대 구간인 구간 c가 목적 데이터의 일부에 할당된다. 구간 c가 목적 데이터의 일부에 할당되었으므로 아직 할당되지 않은 목적 데이터의 부분은 4(블록)의 크기를 가진다. 따라서, 구간 c가 끝나는 지점을 새로운 기준점으로 설정하고, 4(블록)을 새로운 목적 데이터의 크기로 설정하여 다시 제 1 알고리즘을 수행하면, i2 = min(20, ]log24])이므로 2가 되고, i1 = max([log24]-2, 0)이므로 0이 된다. 따라서, L0, L1, L2를 생성해야 하며, 그 결과는 다음과 같다.
L2: empty
L1: {b}
L0: {a, b}
이로부터 Wi를 결정하면 다음과 같다.
W2: empty
W1: {b}
W0: {a, b}
이 때, a와 b의 총합이 새로운 목적 데이터의 크기인 4(블록)보다 작으므로 제 1 알고리즘에 의한 할당은 실패하였다. 따라서, 또다시 제 2 알고리즘을 수행하는데, 구간 c는 이미 할당되었으므로 남아있는 빈 구간들 중 최대 구간인 구간 b가 할당된다. 구간 b가 할당되면, 새로운 목적 데이터의 크기는 2가 되며, 남아있는 유일한 빈 구간은 a인 상태에서 제 1 알고리즘이 수행된다. a 구간의 크기는 새로운 목적 데이터의 크기인 2보다 작으므로 또다시 제 2 알고리즘이 수행된다. 그리고, 제 2 알고리즘에 의해 구간 a가 할당된 후 제 1 알고리즘이 수행되는데, 더 이상 빈 공간이 없으므로 제 2 알고리즘이 수행되며, 제 2 알고리즘에 의해 결국 에러 메시지가 출력된다.
한편, 상술한 본 발명의 실시예들은 컴퓨터에서 실행될 수 있는 프로그램으로 작성가능하고, 컴퓨터로 읽을 수 있는 기록매체를 이용하여 상기 프로그램을 동작시키는 범용 디지털 컴퓨터에서 구현될 수 있다.
상기 컴퓨터로 읽을 수 있는 기록매체는 마그네틱 저장매체(예를 들면, 롬, 플로피 디스크, 하드디스크 등), 광학적 판독 매체(예를 들면, 시디롬, 디브이디 등) 및 캐리어 웨이브(예를 들면, 인터넷을 통한 전송)와 같은 저장매체를 포함한다.
이제까지 본 발명에 대하여 그 바람직한 실시예들을 중심으로 살펴보았다. 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자는 본 발명이 본 발명의 본질적인 특성에서 벗어나지 않는 범위에서 변형된 형태로 구현될 수 있음을 이해할 수 있을 것이다. 그러므로 개시된 실시예들은 한정적인 관점이 아니라 설명적인 관점에서 고려되어야 한다. 본 발명의 범위는 전술한 설명이 아니라 특허청구범위에 나타나 있으며, 그와 동등한 범위 내에 있는 모든 차이점은 본 발명에 포함된 것으로 해석되어야 할 것이다.
본 발명에 따르면, 디스크에 존재하는 빈 구간들을 기준점으로부터의 거리 뿐만 아니라 크기에 따라 달라지는 탐색 시간을 고려하여 빈 공간을 할당하므로 단순히 기준점으로부터의 거리만을 고려하여 할당하는 경우보다 탐색 시간을 줄일 수 있다.

Claims (20)

  1. 데이터를 기록하기 위해 디스크의 공간을 할당하는 방법에 있어서,
    (a) 소정 기준값 이상의 크기를 가지는 빈 구간들을 조합하여 구성할 수 있는 집합들 중 총 크기가 상기 데이터의 크기 이상인 집합들을 검색하는 단계; 및
    (b) 상기 검색된 집합들 중 소정 기준점으로부터의 탐색 시간이 가장 짧은 집합을 상기 데이터에 할당하는 단계를 포함하는 것을 특징으로 하는 방법.
  2. 제1항에 있어서,
    상기 (a)단계에서 검색된 집합이 없는 경우,
    (c) 상기 기준점으로부터 소정 범위 내에 존재하며 상기 데이터의 크기 이상인 빈 구간을 상기 데이터에 할당하는 단계를 더 포함하는 것을 특징으로 하는 방법.
  3. 제2항에 있어서,
    (d) 상기 기준점으로부터 상기 소정 범위 내에 상기 데이터의 크기 이상인 빈 구간이 존재하지 않는 경우, 상기 소정 범위 외의 빈 구간(들) 중 상기 데이터의 크기 이상인 구간을 상기 데이터에 할당하는 단계를 더 포함하는 것을 특징으로 하는 방법.
  4. 제 3항에 있어서,
    (e) 상기 소정 범위 외에도 상기 데이터의 크기 이상인 빈 구간이 없는 경우 상기 디스크의 빈 구간(들) 중 최대 구간을 상기 데이터에 할당하고, 상기 디스크에 빈 구간이 존재하지 않는 경우 에러 메시지를 출력하는 단계; 및
    (f) 상기 (e)단계에서 상기 최대 구간이 할당된 경우, 상기 최대 구간이 끝나는 점을 새로운 기준점으로 하고, 상기 데이터의 크기에서 상기 최대 구간의 크기를 뺀 값을 새로운 데이터의 크기로 하여 상기 (a)단계 내지 상기 (e)단계를 수행하는 단계를 더 포함하는 것을 특징으로 하는 방법.
  5. 제4항에 있어서,
    상기 에러 메시지가 출력되거나 상기 데이터가 성공적으로 할당될 때까지 상기 (a)단계 내지 상기 (f)단계를 반복하여 수행하는 것을 특징으로 하는 방법.
  6. 제1항에 있어서,
    상기 (a)단계는,
    (a1) 소정 범위의 값을 가지는 i에 대하여 상기 디스크의 빈 구간들 중 크기가 2i개의 블록 수 이상인 구간들로 구성된 집합인 Li를 생성하는 단계;
    (a2) 상기 각 i에 대하여, 각 Li에 속한 구간들 중 소정 개수의 구간들로 구성된 집합인 Wi를 생성하는 단계; 및
    (a3) 상기 각 i에 대하여, 각 Wi에 속한 구간들 중 w개의 연속적으로 위치한 구간들인 zi1 , zi2,...,ziw로 구성할 수 있는 집합들의 집합인 Zi를 생성하는 단계를 포함하며,
    상기 (b)단계는,
    (b1) 상기 각 i에 대하여 각 Zi에 속한 집합들 중 최소 탐색 시간을 가지는 집합을 선택하는 단계;
    (b2) 상기 선택된 집합들 중 최소 탐색 시간을 가지는 집합을 선택하는 단계; 및
    (b3) 상기 (b2)단계에서 선택된 집합에 속하는 빈 구간들을 상기 데이터에 할당하는 단계를 포함하는 것을 특징으로 하는 방법.
    이때, l(zi1)+l(zi2)+...+l(ziw) ≥ req_len이고, l(zi1)+l(zi2)+...+l(zi (w-1)) < req_len이며, l(x)는 구간 x의 크기, req_len은 상기 데이터의 크기이다.
  7. 삭제
  8. 제6항에 있어서,
    상기 각 Wi는 상기 생성된 각 Li에 속한 구간들 중 상기 기준점의 왼쪽에 위치한 u개의 구간들인 l1, l2, l3,...,lu 및 오른쪽에 위치한 v개의 구간들인 r1, r2, r3,...,rv로 구성되는 것을 특징으로 하는 방법.
    이 때, u ≤ ]req_len/2i[ 를 만족한다. 또한, l(l1)+l(l2)+...+l(lu) ≥req_len인 동시에 l(l1)+l(l2)+...+l(lu -1) < req_len 이거나, 또는 l(l1)+l(l2)+...+l(lu) < req_len 이다.
    v ≤ ]req_len /2i[ 를 만족한다. 또한, l(r1)+l(r2)+...+l(rv) ≥ req_len인 동시에l(r1)+l(r2)+...+l(rv-1) < req_len 이거나, 또는 l(r1)+l(r2)+...+l(rv) < req_len 이다.
    l(x)는 구간 x의 크기, req_len은 상기 데이터의 크기이다.
  9. 제2항에 있어서,
    상기 기준점으로부터 소정 범위 내에 존재하며 상기 데이터의 크기 이상인 빈 구간이 복수인 경우, 그 중 상기 기준점으로부터 가장 가까운 구간을 상기 데이 터에 할당하는 것을 특징으로 하는 방법.
  10. 제 3항에 있어서,
    상기 소정 범위 외의 빈 구간(들) 중 상기 데이터의 크기 이상인 구간이 복수인 경우, 그 중 상기 기준점으로부터 가장 가까운 구간을 상기 데이터에 할당하는 것을 특징으로 하는 방법.
  11. 제1항, 제2항, 제3항, 제4항, 제5항, 제6항, 제8항, 제9항, 제10항 중 어느 한 항에 의한 방법을 컴퓨터에서 실행시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록 매체.
  12. 데이터를 기록하기 위해 디스크의 공간을 할당하는 장치에 있어서,
    소정 기준값 이상의 크기를 가지는 빈 구간들을 조합하여 구성할 수 있는 집합들 중 총 크기가 상기 데이터의 크기 이상인 집합들을 검색하고, 상기 검색된 집합들 중 소정 기준점으로부터의 탐색 시간이 가장 짧은 집합을 상기 데이터에 할당하는 제1알고리즘을 수행하는 제1알고리즘수행부를 포함하는 것을 특징으로 하는 장치.
  13. 제12항에 있어서,
    상기 제1알고리즘에 의해 검색된 집합이 없는 경우, 상기 기준점으로부터 소정 범위 내에 존재하며 상기 데이터의 크기 이상인 빈 구간을 상기 데이터에 할당 하고, 상기 기준점으로부터 상기 소정 범위 내에 상기 데이터의 크기 이상인 빈 구간이 존재하지 않는 경우 상기 소정 범위 외의 빈 구간(들) 중 상기 데이터의 크기 이상인 구간을 상기 데이터에 할당하고, 상기 소정 범위 외에도 상기 데이터의 크기 이상인 빈 구간이 없으면 상기 디스크의 빈 구간(들) 중 최대 구간을 상기 데이터에 할당하며, 상기 디스크에 빈 구간이 존재하지 않는 경우 에러 메시지를 출력하는 제2알고리즘을 수행하는 제2알고리즘수행부를 더 포함하는 것을 특징으로 하는 장치.
  14. 제13항에 있어서,
    상기 제2알고리즘에 의해 상기 최대 구간이 할당된 경우, 상기 최대 구간이 끝나는 점을 새로운 기준점으로 설정하고, 상기 데이터의 크기에서 상기 최대 구간의 크기를 뺀 값을 새로운 데이터의 크기로 설정하여 상기 제1알고리즘수행부가 상기 제1알고리즘을 수행하도록 제어하는 제어부를 더 포함하는 것을 특징으로 하는 장치.
  15. 제14항에 있어서,
    상기 제어부는 상기 에러 메시지가 출력되거나 상기 데이터가 성공적으로 할당될 때까지 상기 제어를 반복하여 수행하는 것을 특징으로 하는 장치.
  16. 제12항에 있어서,
    상기 제1알고리즘 수행부는,
    소정 범위의 값을 가지는 i에 대하여 각 i마다 상기 디스크의 빈 구간들 중 크기가 2i 개의 블록 수 이상인 구간들로 구성된 집합인 Li를 생성하는 Li생성부;
    상기 각 i에 대해 각 Li에 속한 구간들 중 소정 개수의 구간들로 구성된 집합인 Wi를 생성하는 Wi생성부;
    상기 각 i에 대해 각 Wi에 속한 구간들 중 w개의 연속적으로 위치한 구간들인 zi1, zi2,...,ziw로 구성할 수 있는 집합들의 집합인 Zi를 생성하는 Zi생성부;
    상기 각 i에 대해 각 Zi에 속한 집합들 중 최소 탐색 시간을 가지는 집합을 선택하는 제1선택부;
    상기 제1선택부에서 선택된 집합들 중 최소 탐색 시간을 가지는 집합을 선택하는 제2선택부; 및
    상기 제2선택부에서 선택된 집합에 속하는 빈 구간들을 상기 데이터에 할당하는 할당부를 포함하는 것을 특징으로 하는 장치.
    이때, l(zi1)+l(zi2)+...+l(ziw) ≥ req_len이고, l(zi1)+l(zi2)+...+l(zi(w-1)) < req_len이며, l(x)는 구간 x의 크기, req_len은 상기 데이터의 크기이다.
  17. 삭제
  18. 제16항에 있어서,
    상기 각 Wi는 상기 생성된 각 Li에 속한 구간들 중 상기 기준점의 왼쪽에 위치한 u개의 구간들인 l1, l2, l3,...,lu 및 오른쪽에 위치한 v개의 구간들인 r1, r2, r3,...,rv로 구성되는 것을 특징으로 하는 장치.
    이 때, u ≤ ]req_len/2i[ 를 만족한다. 또한, l(l1)+l(l2)+...+l(lu) ≥req_len인 동시에 l(l1)+l(l2)+...+l(lu -1) < req_len 이거나, 또는 l(l1)+l(l2)+...+l(lu) < req_len 이다.
    v ≤ ]req_len /2i[ 를 만족한다. 또한, l(r1)+l(r2)+...+l(rv) ≥ req_len인 동시에 l(r1)+l(r2)+...+l(rv-1) < req_len 이거나, 또는 l(r1)+l(r2)+...+l(rv) < req_len 이다.
    l(x)는 구간 x의 크기, req_len은 상기 데이터의 크기이다.
  19. 제13항에 있어서,
    상기 제2알고리즘수행부는 상기 기준점으로부터 소정 범위 내에 존재하며 상기 데이터의 크기 이상인 빈 구간이 복수인 경우, 그 중 상기 기준점으로부터 가장 가까운 구간을 상기 데이터에 할당하는 것을 특징으로 하는 장치.
  20. 제 13항에 있어서,
    상기 제2알고리즘수행부는 상기 소정 범위 외의 빈 구간(들) 중 상기 데이터의 크기 이상인 구간이 복수인 경우, 그 중 상기 기준점으로부터 가장 가까운 구간을 상기 데이터에 할당하는 것을 특징으로 하는 장치.
KR1020060044657A 2006-05-18 2006-05-18 파일을 저장할 디스크의 공간을 할당하는 방법 및 장치 KR100883651B1 (ko)

Priority Applications (5)

Application Number Priority Date Filing Date Title
KR1020060044657A KR100883651B1 (ko) 2006-05-18 2006-05-18 파일을 저장할 디스크의 공간을 할당하는 방법 및 장치
EP07107254A EP1858018A3 (en) 2006-05-18 2007-04-30 Method and apparatus for allocating disc space
US11/745,635 US7797485B2 (en) 2006-05-18 2007-05-08 Method and apparatus for allocating disc space for recording files
JP2007125978A JP2007310878A (ja) 2006-05-18 2007-05-10 ファイルを保存するディスクの空間を割り当てる方法及び装置
CNA2007101074549A CN101075212A (zh) 2006-05-18 2007-05-14 分配用于记录文件的盘空间的方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020060044657A KR100883651B1 (ko) 2006-05-18 2006-05-18 파일을 저장할 디스크의 공간을 할당하는 방법 및 장치

Publications (2)

Publication Number Publication Date
KR20070111626A KR20070111626A (ko) 2007-11-22
KR100883651B1 true KR100883651B1 (ko) 2009-02-18

Family

ID=38462401

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020060044657A KR100883651B1 (ko) 2006-05-18 2006-05-18 파일을 저장할 디스크의 공간을 할당하는 방법 및 장치

Country Status (5)

Country Link
US (1) US7797485B2 (ko)
EP (1) EP1858018A3 (ko)
JP (1) JP2007310878A (ko)
KR (1) KR100883651B1 (ko)
CN (1) CN101075212A (ko)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080320266A1 (en) * 2007-06-22 2008-12-25 Levine Frank E Allocating Disk Space On A Disk Drive
JP5532982B2 (ja) * 2010-02-03 2014-06-25 富士通株式会社 ストレージ装置、ストレージ装置のコントローラおよびストレージ装置の記憶領域割当方法

Citations (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5481702A (en) * 1991-08-08 1996-01-02 Hitachi, Ltd. Allocation optimization with different block-sized allocation maps
KR19980046877A (ko) * 1996-12-13 1998-09-15 구자홍 광디스크 기록 방법 및 장치
US5832525A (en) * 1996-06-24 1998-11-03 Sun Microsystems, Inc. Disk fragmentation reduction using file allocation tables
KR19980078995A (ko) * 1997-04-30 1998-11-25 배순훈 디브이디알 시스템의 기록 방법
KR19990060797A (ko) * 1997-12-31 1999-07-26 구자홍 복호화된 이미지 데이타의 메모리 할당방법과 그장치
US5987479A (en) * 1997-09-24 1999-11-16 Sony Corporation, Inc. Large block allocation for disk-based file systems
KR19990086969A (ko) * 1998-05-28 1999-12-15 구자홍 메모리 할당방법
US6185663B1 (en) * 1998-06-15 2001-02-06 Compaq Computer Corporation Computer method and apparatus for file system block allocation with multiple redo
US6446183B1 (en) * 2000-02-15 2002-09-03 International Business Machines Corporation Systems and methods for persistent and robust memory management
US20020124133A1 (en) * 2001-03-01 2002-09-05 Sony Corporation Method and system for optimizing data storage and retrieval by an audio/video file system using hierarchical file allocation table
US20030105918A1 (en) * 2001-12-05 2003-06-05 Plourde Harold J. Disk driver cluster management of time shift buffer with file allocation table structure
JP2003337743A (ja) * 2002-05-17 2003-11-28 Nec Commun Syst Ltd メモリ空間を管理するメモリ管理システム及びその未割り当てメモリブロックの検索方法
JP2005157714A (ja) * 2003-11-26 2005-06-16 Kyocera Mita Corp メモリ管理システム
KR20050112632A (ko) * 2004-05-27 2005-12-01 한국과학기술원 저장 시스템에서 비트 맵에 의하여 관리되는 익스텐트를지원하는 페이지 할당 방법

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB9026917D0 (en) * 1990-12-11 1991-01-30 Int Computers Ltd Rotating memory system
US5339411A (en) * 1990-12-21 1994-08-16 Pitney Bowes Inc. Method for managing allocation of memory space
US5390315A (en) * 1992-06-15 1995-02-14 International Business Machines Corporation Allocation of uniform contiguous blocks of DASD storage by maintaining both a bit and a bit map record of available storage
TW332284B (en) 1995-10-30 1998-05-21 Sony Co Ltd Method and apparatus for controlling access to a recording disk
JP3561083B2 (ja) * 1996-05-24 2004-09-02 株式会社東芝 データ配置制御方法及びビデオサーバ装置
US6405284B1 (en) * 1998-10-23 2002-06-11 Oracle Corporation Distributing data across multiple data storage devices in a data storage system
US6735678B2 (en) * 2000-05-24 2004-05-11 Seagate Technology Llc Method and apparatus for disc drive defragmentation
US6564292B2 (en) * 2000-07-12 2003-05-13 Seagate Technology Llc Optimizing allocation of sectors in disc drives
US6654878B1 (en) * 2000-09-07 2003-11-25 International Business Machines Corporation Register bit scanning
US6839802B2 (en) * 2000-12-08 2005-01-04 International Business Machines Corporation Method, system, and program for writing files to zone formatted storage media to improve data transfer rates
US6745311B2 (en) * 2001-01-24 2004-06-01 Networks Associates Technology, Inc. Method of allocating clusters of computer readable medium to a file while minimizing fragmentation of the computer readable medium
US6651147B2 (en) * 2001-05-08 2003-11-18 International Business Machines Corporation Data placement and allocation using virtual contiguity
JP3915752B2 (ja) * 2003-07-25 2007-05-16 船井電機株式会社 デジタル情報記録装置およびそれを備える映像記録再生装置
KR100585132B1 (ko) * 2004-02-21 2006-06-01 삼성전자주식회사 최적화된 기록 순서 재배열 방법 및 장치, 기록 방법, 기록 매체
US7590799B2 (en) * 2005-06-16 2009-09-15 Seagate Technology Llc OSD deterministic object fragmentation optimization in a disc drive
US8285757B2 (en) * 2007-01-31 2012-10-09 Agency For Science, Technology And Research File system for a storage device, methods of allocating storage, searching data and optimising performance of a storage device file system

Patent Citations (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5481702A (en) * 1991-08-08 1996-01-02 Hitachi, Ltd. Allocation optimization with different block-sized allocation maps
US5832525A (en) * 1996-06-24 1998-11-03 Sun Microsystems, Inc. Disk fragmentation reduction using file allocation tables
KR19980046877A (ko) * 1996-12-13 1998-09-15 구자홍 광디스크 기록 방법 및 장치
KR19980078995A (ko) * 1997-04-30 1998-11-25 배순훈 디브이디알 시스템의 기록 방법
US5987479A (en) * 1997-09-24 1999-11-16 Sony Corporation, Inc. Large block allocation for disk-based file systems
KR19990060797A (ko) * 1997-12-31 1999-07-26 구자홍 복호화된 이미지 데이타의 메모리 할당방법과 그장치
KR19990086969A (ko) * 1998-05-28 1999-12-15 구자홍 메모리 할당방법
US6185663B1 (en) * 1998-06-15 2001-02-06 Compaq Computer Corporation Computer method and apparatus for file system block allocation with multiple redo
US6446183B1 (en) * 2000-02-15 2002-09-03 International Business Machines Corporation Systems and methods for persistent and robust memory management
US20020124133A1 (en) * 2001-03-01 2002-09-05 Sony Corporation Method and system for optimizing data storage and retrieval by an audio/video file system using hierarchical file allocation table
US20030105918A1 (en) * 2001-12-05 2003-06-05 Plourde Harold J. Disk driver cluster management of time shift buffer with file allocation table structure
JP2003337743A (ja) * 2002-05-17 2003-11-28 Nec Commun Syst Ltd メモリ空間を管理するメモリ管理システム及びその未割り当てメモリブロックの検索方法
JP2005157714A (ja) * 2003-11-26 2005-06-16 Kyocera Mita Corp メモリ管理システム
KR20050112632A (ko) * 2004-05-27 2005-12-01 한국과학기술원 저장 시스템에서 비트 맵에 의하여 관리되는 익스텐트를지원하는 페이지 할당 방법

Also Published As

Publication number Publication date
CN101075212A (zh) 2007-11-21
US20070271436A1 (en) 2007-11-22
KR20070111626A (ko) 2007-11-22
JP2007310878A (ja) 2007-11-29
US7797485B2 (en) 2010-09-14
EP1858018A3 (en) 2008-09-17
EP1858018A2 (en) 2007-11-21

Similar Documents

Publication Publication Date Title
JP4778942B2 (ja) 不揮発性メモリを管理する装置及び方法
US7401174B2 (en) File system defragmentation and data processing method and apparatus for an information recording medium
US20080235492A1 (en) Apparatus for compressing instruction word for parallel processing vliw computer and method for the same
CN107707600B (zh) 一种数据存储方法及装置
KR20140026821A (ko) 백업부트레코드 정보를 이용한 파티션 복구 장치 및 방법
JP2009043162A (ja) 仮想ライブラリ装置、仮想ライブラリシステム、仮想ライブラリ装置の論理ボリューム複写方法。
US8762773B2 (en) Processing apparatus, data migration method, and computer-readable recording medium having data migration program recorded thereon
WO2023155849A1 (zh) 基于时间衰减的样本删除方法及其装置、存储介质
KR100883651B1 (ko) 파일을 저장할 디스크의 공간을 할당하는 방법 및 장치
JP5401903B2 (ja) 故障情報監視装置及び故障情報監視方法
CN108121501B (zh) 分级存储系统、存储控制器以及分级控制方法
CN109669621A (zh) 一种文件管理方法、文件管理系统、电子设备及存储介质
CN111176580B (zh) 分区数据无损移动的方法、装置及可读存储介质
US6678229B1 (en) Methods for optimizing recording order of data files to optical media
WO2020137566A1 (ja) テスト環境決定装置及びテスト環境決定方法
US20060080350A1 (en) Allocation of file storage based on pattern recognition
US8301862B2 (en) Formatting device
JP2004062907A (ja) ディスクアレイのタイムスタンプ管理システム
CN109992217B (zh) 一种服务质量控制方法、装置、电子设备和存储介质
KR20180035023A (ko) 스토리지 오케스트레이션의 학습형 최적화 대상 볼륨 선정 방법
JP2018092426A (ja) ストレージ制御装置、ストレージ装置、及び制御プログラム
JP2010191903A (ja) 分散ファイルシステムのストライピング種別選択方法及びその分散ファイルシステム
KR101874748B1 (ko) 하이브리드 스토리지 및 하이브리드 스토리지에서 데이터 저장 방법
CN111190549A (zh) 一种共享卷可用容量获取方法、装置、设备及介质
CN111722802A (zh) 一种元数据lsa卷的存储空间分配方法、装置及设备

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
AMND Amendment
E601 Decision to refuse application
AMND Amendment
J201 Request for trial against refusal decision
E902 Notification of reason for refusal
B701 Decision to grant
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20130131

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20140129

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20150202

Year of fee payment: 7

LAPS Lapse due to unpaid annual fee