The present invention relates to a file system, and more
particularly, to a method and apparatus for allocating disc space for recording
files.
A variety of file systems (such as FAT, XFS, and Ext2)
aim at storing a file in a disc such that the data elements of the file can be recorded
as close together as possible, thus minimizing the time for a disc head to seek
the file. In order to store the data of the file in close proximity to one another,
empty disc space must be appropriately allocated.
FIG. 1 is a diagram explaining a conventional method of
allocating empty disc space. Referring to FIG. 1, reference characters a through
j indicate blocks. The size of the blocks a through j vary from one file system
to another. Referring to FIG. 1, dark blocks indicate blocks to which data has already
been allocated, and white blocks indicate empty blocks. A reference point indicates
a location where data to be stored (target data) and data related to the target
data have been most recently stored (i.e., a location where a disc head is currently
located to read the target data).
A seek time becomes longer as the distance from the reference
point becomes greater. Accordingly, a sufficient number of empty blocks to cover
the size of the target data are allocated in increasing order of distance from the
reference point. Referring to FIG. 1, the white blocks d, f, i, and j are sequentially
allocated from the reference point.
However, when a file to be read is distributed over a plurality
of blocks, the distances between a reference point and the blocks are not necessarily
proportional to the time taken to seek the file. In general, the time taken to seek
a file that is distributed over a plurality of consecutive blocks is shorter than
the time taken to seek a file that is distributed over a plurality of nonconsecutive
blocks. Thus, when data related to a file is distributed over a plurality of blocks,
an exact seek time can be determined according to a seek curve of a file system.
For example, referring to FIG. 1, assuming that the size of the target data amounts
to the size of two blocks combined, the shortest seek time can be guaranteed by
allocating the blocks i and j to the target data. However, according to the conventional
method of allocating, empty blocks are allocated to the target data simply based
on their distances from the reference point. Thus, the blocks d and f, instead of
the blocks i and j, are allocated to the target data, thereby failing to provide
an optimum block allocation.
Aspects of the present invention provide an apparatus and
method for allocating disc space in consideration of actual seek time according
to the sizes of empty sections.
According to an aspect of the present invention, there
is provided a method of allocating disc space for recording data on a disc, the
method including: detecting one or more first sets, each comprising one or more
empty sections of the disc that are larger than a predetermined reference value;
detecting one or more second sets, each comprising one or more empty sections from
the one or more first sets that are equal to or larger than a size of the data when
combined; and allocating, to the data, an optimum set of the one or more second
sets that results in a shortest seek time from a predetermined reference point.
According to an aspect of the present invention, if no
one or more second sets are detected, the method may also include allocating an
empty section, to the data, that is located within a predetermined range of the
reference point and is larger than the size of the data.
According to an aspect of the present invention, the method
may also include, if no empty section that is larger than the data and within the
predetermined range of the reference point exists, allocating an empty section,
to the data, that is outside of the predetermined range of the reference point and
is larger than the size of the data.
According to an aspect of the present invention, the method
may also include, if no empty section that is larger than the data exists on the
disc, allocating a largest empty section on the disk to a part of the data, and
if no empty sections remain on the disc, outputting an error message; and if the
largest empty section is allocated to the data, setting the end of the allocated
empty section in as a new reference point, setting a size of a portion of the data
remaining uncovered by the allocation of the largest empty section as a new data
size, and performing the detecting of the one or more first sets, the detecting
of the one or more second sets, the allocating of the optimum set, the allocating
of the empty section that is located within the predetermined range, the allocating
of the empty section that is outside of the predetermined range, and the allocating
of the largest empty section again.
According to an aspect of the present invention, the performing
of the detecting of the one or more first sets, the detecting of the one or more
second sets, the allocating of the optimum set, the allocating of the empty section
that is located within the predetermined range, the allocating of the empty section
that is outside of the predetermined range, and the allocating of the largest empty
section again may be repeatedly performed until an error message is output or until
the entire data is covered.
According to an aspect of the present invention, if more
than one empty section that is larger than the data and within the predetermined
range of the reference point, an empty section that is closest to the reference
point may be allocated to the data.
According to an aspect of the present invention, if more
than one empty sections that is larger than the data and outside of the predetermined
range of the reference point, an empty section that is closest to the reference
point may be allocated to the data.
According to another aspect of the present invention, there
is provided a computer-readable recording medium having recorded thereon a computer
program for executing the method.
According to another aspect of the present invention, there
is provided an apparatus to allocate disc space for recording data on a disc, the
apparatus including a first algorithm execution unit to detect one or more first
sets, each comprising one or more empty sections of the disc that are larger than
a corresponding predetermined reference value, to detect one or more second sets,
each comprising one or more empty sections from the one or more first sets that
are equal to or larger than a predetermined reference value, and to execute a first
algorithm to allocate, to the data, an optimum set of the one or more second sets
that results in a shortest seek time from a predetermined reference point.
According to an aspect of the present invention, the apparatus
may also include a second algorithm execution unit to allocate an empty section
that is located within a predetermined range of the reference point and is larger
than the data to the data if no set is detected by the first algorithm; to allocate
an empty section that is outside of the predetermined range of the reference point
and is larger than the data to the data if no empty section that is larger than
the data remains within the predetermined range of the reference point; to allocate
the largest empty section remaining on the disk to the data if no empty section
that is larger than the data, remains outside the predetermined range; and to output
an error message if no empty sections remain within and outside of the predetermined
range of the reference point.
According to an aspect of the present invention, the apparatus
may also include a control unit to, if the second algorithm execution unit allocates
the largest empty section, set an end of the allocated largest empty section as
a new reference point, set a size of a portion of the data remaining uncovered by
the allocation of the largest empty section as a new data size, and the first algorithm
execution unit and the second algorithm execution unit to repeatedly detect the
one or more first sets, detect the one or more second sets, execute the first algorithm,
and allocate the empty section until all of the data has an allocated disc space
or until no more space remains on the disc.
Embodiments of the invention will now be described by way
of example with reference to the accompanying drawings, in which:
- FIG. 1 is a diagram explaining a conventional method of allocating empty disc
space;
- FIG. 2 is a flowchart illustrating a method of allocating disc space according
to an embodiment of the present invention;
- FIG. 3 is a flowchart illustrating an embodiment of the execution of a first
algorithm;
- FIG. 4 is a flowchart illustrating an embodiment of the execution of a second
algorithm;
- FIG. 5 is a block diagram of an apparatus for allocating disc space according
to an embodiment of the present invention;
- FIG. 6 is a diagram explaining a method of allocating disc space according to
an embodiment of the present invention;
- FIG. 7 is a diagram explaining a method of allocating disc space according to
another embodiment of the present invention;
- FIG. 8 is a diagram explaining a method of allocating disc space according to
another embodiment of the present invention; and
- FIG. 9 is a diagram explaining a method of allocating disc space according to
another embodiment of the present invention.
Referring to FIG. 2, in operation 210, a first algorithm
is executed. The first algorithm is a method of allocating empty sections larger
than a predetermined size within a predetermined distance from a reference point.
Here, a section indicates one block or a plurality of consecutive blocks. The first
algorithm will be described in further detail with reference to FIG. 3.
In operation 220, it is determined whether all sufficient
disc space to store target data has been allocated. In operation 230, if it is determined
in operation 220 that not all of the sufficient disc space to store the target data
has been allocated, then a second algorithm is executed. The second algorithm is
a method of allocating empty sections in decreasing order of size, and will be described
later in further detail with reference to FIG. 4. If it is determined in operation
220 that space allocation is complete, the method ends.
In operation 240, it is determined whether the sufficient
disc space to store the target data has all been allocated. In operation 250, if
it is determined in operation 240 that not all the sufficient disc space to store
the target data has been allocated, it is determined whether there is empty disc
space remaining unallocated. In operation 260, if it is determined in operation
250 that there is empty disc space left unallocated, a new reference point and a
new target data size are set, thereby generating a new input value for the re-execution
of the first algorithm. Then, the first and second algorithms are alternately executed
until the entire target data is covered or until no empty disc space remains unallocated.
If it is determined in operation 240 that the space allocation is complete or if
it is determined in operation 250 that no empty space remains, the method ends.
FIG. 3 is a flowchart illustrating an embodiment of the
execution of the first algorithm (i.e., operation 210 illustrated in FIG. 2). In
general, most file systems manage metadata regarding empty disc space. For example,
XFS manages empty disc space by aligning and managing empty sections of a disc according
to the locations and sizes of the empty sections using a B+ tree. According to the
shown embodiment, metadata Li (where i is an integer within a predefined
range) is used. Here, Li indicates a set including one or more empty
sections that are larger than the size of 2i blocks combined. According
to an aspect of the present invention, Li is generated, not for all integer
values, but for only certain integer values that fall within the predefined range.
According to the present embodiment, Li is generated only for the integer
values that satisfy the following equation: i1≤ i ≤i2.
Referring to FIG. 3, in operation 310, Li is
generated. The generation of Li involves determining i1 and
i2 which set the range of i, i.e., determining a minimum size of empty
sections to which target data is allocated during the execution of the first algorithm.
For example, i1 and i2 may be determined so that i2
= min(N, ]log2(req_len)[) and that i1 = max([log2(req_len)]-C,
0), wherein req_len indicates the size of the target data; C is a constant; N=[log2(V/B)];
V indicates the storage capacity of an entire disc; B indicates the size of blocks
of a file system; ][is a mathematical operator that raises a value to the closest
integer greater than the original value; and [] is a mathematical operator that
lowers a value to the closest integer smaller than the original value. A maximum
i value is determined by the target data size req_len, and a minimum i value is
determined by the constant C. The constant C can be chosen by experimentation in
order to obtain an optimum disc space allocation.
In operation 320, Wi, Zi, and Mi
are determined. Wi is a set including a predefined number of empty sections
that are chosen from among a plurality of empty sections included in Li.
In detail, Wi comprises u empty sections l1, l2,
l3,..., and lu that are on the left side of a reference point
of Li, and v empty sections r1, r2, r3,
..., and rv on the right side of the reference point That is, according
to an aspect of the present invention, the seek range is limited by imposing conditions
for u and v, as it is uneconomical to seek through all the empty sections belonging
to Li for all the integer values within the predetermined range. The
conditions for u are as follows: (1) u ≤ ]req_len/2i[; and (2)
l(l1)+l(l2)+...l(lu) ≥req_len and l(l1)+l(l2)+...l(lu-1)
< req_len, or l(l1)+l(l2)+...l(lu) < req_len.
The conditions for v are as follows: (1) v ≤ ]req_len /2i[; and
(2) l(r1)+l(r2)+...l(rv) ≥ req_len and l(r1)+l(r2)+...l(rv-1)
< req_len, or l(r1)+l(r2)+...l(rv) < req_len.
Here, I(x) is a function indicating the size of an empty section x.
In short, Wi comprises a minimum number of empty
sections that are larger than the size of the target data and are on the left side
of the reference point of Li (the u empty sections l1, l2,
l3,..., lu), and a minimum number of empty sections that are
larger than the size of the target data and are on the right side of the reference
point of Li (the v empty sections r1, r2, r3,
..., rv). Here, lk+1 is more distant than lk from
the reference point of Li. According to an aspect of the present invention,
u and v may be determined so that the collective size of the u empty sections l1,
l2, l3,..., lu and the collective size of the v
empty sections r1, r2, r3, ..., rv may
each be smaller than the size of the target data. In other words, since the first
algorithm aims at securing empty space larger than the size of the target data and
then allocating the secured empty space to the target data, it is acceptable that
the collective size of the u empty sections l1, l2, l3,...,
lu and the collective size of the v empty sections r1, r2,
r3, ..., rv are each smaller than the size of the target data,
as long as the collective size of all of the empty sections included in Wi
(the u empty sections l1, l2, l3,..., lu
and the v empty sections r1, r2, r3, ..., rv
combined) is larger than the size of the target data.
Zi is a set including a number of sets of w
consecutive empty sections zi1, zi2,..., ziw that
are detected from among the empty sections included in Wi. As described
above, Wi includes u+v empty sections. Zi is a set of sets
that can be made up of w consecutive empty sections detected from among the u+v
empty sections. Here, w is a minimum value for securing empty space larger than
the size of the target data. In other words, l(zi1) + l(zi2)
+... + l (ziw) > req_len and, l(zi1)+l(zi2)+...+l(zi(w-1))
< req_len.
Mi is one of the sets of Zi that
can result in a shortest seek time. In detail, Zi includes one or more
sets as described above. Mi is determined as the set included in Zi
that results in the shortest seek time. In other words, Mi is an optimum
set that is made up of the empty sections included in Wi for allocating
the target data.
In operation 330, an optimum empty section set min(Mi)
that can result in the shortest seek time is detected from among a plurality of
optimum empty sections Mi obtained in operation 320. In operation 340,
it is determined whether the optimum empty section set min(Mi) exists.
In operation 350, if it is determined in operation 340 that the optimum empty section
set min(Mi) exists, empty sections belonging to the optimum empty section
set min(Mi) are allocated to the target data. However, if it is determined
in operation 340 that the optimum empty section set min(Mi) does not
exist, then the execution of the first algorithm is terminated, and the execution
of the second algorithm begins in operation 230.
FIG. 4 is a flowchart illustrating an embodiment of the
execution of the second algorithm (i.e., operation 230 illustrated in FIG. 2). Referring
to FIG. 4, in operation 410, a search for an empty section that is larger than the
size of the target data is performed within a predetermined disc area. Here, the
predetermined disc area may be restricted to a predetermined distance of a reference
point. In operation 420, it is determined whether the search performed in operation
410 has succeeded. In operation 470, if it is determined in operation 420 that the
search performed in operation 410 has succeeded, an empty section that is detected
by the search is allocated to the target data. If more than one empty section is
detected by the search, then whichever of the detected empty section is closer to
the reference point may be allocated to the target data, thereby reducing a seek
time.
In operation 430, if there is no empty section within the
predetermined area that is larger than the size of the target data (operations 410
and 420), it is determined whether an empty section larger than the size of the
target data remains outside of the predetermined disc area. In operation 470, if
an empty section larger than the size of the target data remains outside the predetermined
disc area (operation 430), then the corresponding empty section may be allocated
to the target data in operation 470. If more than one empty section larger than
the size of the target data is detected outside the predetermined disc area (operation
430), then whichever of the detected empty sections is closer to the reference point
may be allocated to the target data in order to reduce seek time. It is understood
that, if no predetermined area is selected, operations 420 and 430 can be combined.
In operation 440, if no empty section that is larger than
the size of the target data remains on the disc (operation 430), it is determined
whether an empty section of any size remains on the disc. In operation 460, if no
empty section remains on the disc (operation 440), then an error message is output.
In operation 450, if empty sections still remain on the disc (operation 440), then
whichever of the remaining empty sections is largest is selected. In operation 470,
the empty section selected in operation 450 is allocated to part of the target data.
In operation 410, manual inspection of each block of a
file system may be needed to search the predetermined disc area for an empty section
that is larger than the size of the target data. On the other hand, operations 430
and 440 may be performed simply by referencing a list managed by the file system,
instead of manually inspecting each block of the file system. For example, XFS manages
information regarding empty disc space according to the locations and sizes of empty
sections using a B+ tree. In this case, operations 430 and 440 may be performed
with reference to the B+ tree.
FIG. 5 is a block diagram of an apparatus for allocating
disc space according to an embodiment of the present invention. Referring to FIG.
5, the apparatus includes a first algorithm execution unit 510, a second algorithm
execution unit 520, and a control unit 530. The first algorithm execution unit 510
allocates empty space to target data by executing the first algorithm. The first
algorithm execution unit 510 includes an Li generator 511, a Wi
generator 512, a Zi generator 513, a first selector 514, a second selector
515, and an allocator 516. While not required, the apparatus can be implemented
in a recording and/or reproducing apparatus which records data in the allocated
empty spaces.
The Li generator 511 determines i1
and i2 that are respectively the minimum and the maximum in the predetermined
range, and creates Li as described above in relation to FIG. 3 according
to the results of the determination. The Wi generator 512 creates Wi,
as described above in relation to FIG. 3, based on Li. The Zi
generator 513 creates Zi, as described above in relation to FIG. 3, based
on Wi. The first selector 514 chooses a set (i.e., Mi of FIG.
3) that results in the shortest seek time from among a plurality of sets belonging
to Zi for each of the integer values within the predefined range. The
second selector 515 chooses a set Min (Mi) that can result in the shortest
seek time from the sets Mi chosen by the first selector 514. The allocator
516 allocates a plurality of empty sections included in the set chosen by the second
selector 515 to the target data. Each parameter has already been described in detail,
and thus, detailed descriptions thereof will be skipped.
If the allocation of empty sections to the target data
by the first algorithm execution unit 510 fails, the second algorithm execution
unit 520 attempts to allocate one or more empty sections to the target data by executing
the second algorithm. If no empty space remains on the disc, the second algorithm
execution unit 520 outputs an error message indicating that insufficient space remains
to record the target data. If the second algorithm execution unit 520 fails to cover
the entire target data by allocating disc space to only part of the target data,
then the control unit 530 sets the size of a portion of target data remaining uncovered
by the allocation as a new target data size, sets a point where the allocation of
disc space by the second algorithm execution unit 250 has ended as a new reference
point, and transmits the new reference point and the new target data size to the
first algorithm execution unit 510 so that the first algorithm execution unit 510
can execute the first algorithm based on the new reference point and the new target
data size. Also, the control unit 530 repeatedly performs the aforementioned process
until the second algorithm execution unit 520 outputs an error message or until
the entire target data is covered, thereby enabling the first and second algorithms
to be alternately executed. While not shown, it is understood that the apparatus
can further include an optical and/or magnetic head to transfer the target data
with respect to a disc, and a controller to process the target data to be written
in the allocated empty spaces. Examples of the apparatus can be media players, computers,
disk drives, or like devices.
FIG. 6 is a diagram explaining a method of allocating disc
space according to an embodiment of the present invention. Referring to FIG. 6,
dark portions represent portions of a disc that have already been allocated, and
light portions represent empty portions of the disc yet to be allocated. Assume
that portions of the disc other than those illustrated in FIG. 6 have all been allocated.
Referring to FIG. 6, empty sections a and b are located
to the left of a reference point. The empty sections a and b have a size of 1 and
are thus as large as one block. Empty sections c, d, and e are located to the right
of the reference point. The empty sections c, d, and e respectively have sizes of
2, 4, and 3. In other words, the empty section c is twice as large as one block,
the empty section d is four times as large as one block, and the empty section e
is three times as large as one block. Assume that the size of the target data is
4 (blocks), that C=2, and that N=20 for the equations described above, i2
= min(N,]log2(req_len)[) and i1 = max([log2(req_len)]-C,
0).
In this case, i2 = min(20,]log24[)=
2, and i1 = max([log24]-2, 0)=0. Accordingly, L2,
L1, and L0 are generated as follows:
- L2: {d};
- L1: {c, d, e}; and
- L0: {a, b, c, d, e}.
Thereafter, Wi is determined as follows:
- W2: {d}
- W1: {c, d}; and
- W0: {a, b, c, d}.
Then, Zi is determined as follows:
- Z2: {d};
- Z1: {c,d}, {d};and
- Z0: {a,b,c}, {b,c,d}, {c,d}, {d}.
Thereafter, a set that can result in a minimum seek time
is chosen from among the sets belonging to each of Z0 through Z2,
and the chosen sets are determined as M0 through M2. Then,
whichever of M0 through M2 can result in the shortest seek
time is allocated to the target data.
FIG. 7 is a diagram explaining a method of allocating disc
space according to another embodiment of the present invention. Referring to FIG.
7, dark portions represent portions of a disc that have already been allocated,
and light portions represent empty portions of the disc yet to be allocated. Assume
that portions of the disc other than those illustrated in FIG. 7 have all been allocated.
Also, assume that the size of the target data is 8 blocks, that C=2, and that N=20.
In this case, i2 = min(20, ]log28[)=3
and i1 = max([log28]-2, 0)=1, L1, L2,
and L3 are generated as follows:
- L3: empty;
- L3: empty;
- L2: {d};and
- L1: {d}.
Thereafter, Wi is determined as follows:
- W3: empty;
- W2: {d};and
- W1: {d}.
Thereafter, Zi is determined based on Wi.
The only section that can be chosen in common from W2 and W1
is an empty section d. However, since the size of the empty section d is smaller
than the size of the target data, it is determined that the allocation of disc space
to the target data using the first algorithm has failed. Thus, the second algorithm
is executed.
Referring to FIGs. 4 and 7, none of the empty sections
a, b, c, and d are larger than the size of the target data (operation 410). Thus,
the empty section d, which is the largest empty section, is allocated first to part
of the target data (operation 450). As a result, a portion of the target data having
the size of one block remains uncovered by the allocation of the empty section d.
Therefore, the end of the empty section d is set as a new reference point, and the
size of the remaining portion of the target data is set as a new target data size.
Thereafter, the first algorithm is executed again. In this case, i2 =
min(20, ]log21[)=0 and i1 = max([log21]-2, 0)=0.
Accordingly, L0 is generated as follows: L0: {a, b, c} and
W0 is determined as follows: W0: {c}. Then, Z0
is determined as follows: Z0: {c}. Accordingly, the empty section c is
additionally allocated to the target data. In short, according to the present embodiment,
the empty sections c and d are allocated to the target data.
FIG. 8 is a diagram explaining a method of allocating disc
space according to another embodiment of the present invention. The state of the
disc illustrated in FIG. 8 is the same as the state of the disc illustrated in FIG.
7 except that C=3. That is, the size of the target data is 8, C=3, and N=20.
The first algorithm is executed. Since i2 =
min(20, ]log28[)=3 and i1 = max([log28]-3, 0)=0,
L0, L1, L2, and L3 are generated as
follows:
- L3: empty;
- L2: {d};
- L1: {d};and
- L0: {a,b,c, d}.
Thereafter, Wi is determined as follows:
- W3: empty;
- W2: {d};
- W1: {d};and
- W0: {a, b, c, d}.
Then, Zi is determined as follows:
- Z3: empty;
- Z2: empty;
- Z1: empty; and
- Z0: {a, b, c, d}.
In short, according to the example embodiment, empty sections
a, b, c, and d are allocated to target data.
The embodiment illustrated in FIG. 8 is different from
the embodiment illustrated in FIG. 7 in that the range of i values is expanded by
setting the constant C to 3 rather than to 2. Thus, the embodiment illustrated in
FIG. 8 provides different disc space allocation results from the embodiment illustrated
in FIG. 7. In other words, the value of the constant C affects disc space allocation
results. Accordingly, it is possible to obtain optimum disc space allocation results
by appropriately adjusting the value of the constant C.
FIG. 9 is a diagram explaining a method of allocating disc
space according to another embodiment of the present invention. Referring to FIG.
9, assume that the size of target data is 12 blocks, that C=2, and that N=20. Referring
to FIG. 9, dark portions represent portions of a disc that have already been allocated,
and bright portions represent empty portions of the disc yet to be allocated. Assume
that portions of the disc other than those illustrated in FIG. 9 have all been allocated.
Since i2 = min(20, ]log212[)=4 and
i1 = max([log212]-2, 0)=2, L2, L3, and
L4 are generated as follows:
- L4: empty;
- L3: {c}; and
- L2: {c}.
Then, Wj (where i is an integer between 2 and
4) is determined as follows:
- W4: empty;
- W3: {c}; and
- W2: {c}.
Thereafter, Zi is determined based on Wi
and is as follows:
- Z4: empty;
- Z3: empty; and
- Z2: empty.
Since the allocation of disc space to the target data through
the first algorithm has failed, the second algorithm is executed. Referring to FIG.
4 and the empty sections a, b, and c illustrated in FIG. 9, the empty section c
is the largest empty section. Thus, the empty section c is allocated to part of
the target data first (operation 450). As a result, a portion of the target data
having the size of 4 blocks remains uncovered by the allocation of the empty section
c. Then, the end of the empty section c is set as a new reference point, and the
size of the remaining portion of the target data (i.e., 4) is set as a new target
data size. Thereafter, the first algorithm is executed again. Then, i2
= min(20, ]log24])=2, and i1 = max([log24]-2, 0)=0.
Accordingly, L0, L1, and L2 are generated as follows:
- L2: empty;
- L1: {b};and
- L0: {a,b}.
Then, Wi is determined as follows:
- W2: empty;
- W1: {b}; and
- W0: {a,b}.
Since the size of the empty sections a and b combined is
smaller than the new target data size, i.e., 4, it is determined that the first
algorithm has failed. Accordingly, the second algorithm is executed again. Since
the empty section c has already been allocated to the target data, the empty section
b, which is the largest empty section, is allocated to the remaining portion of
the target data. As a result, a portion of the target data having the size of two
blocks remains uncovered by the allocation of the empty section b, and the empty
section a is the only empty section left. In this case, the first algorithm is executed
again. Since the size of the empty section a is smaller than the size of the remaining
portion of the target data, i.e., 2, the second algorithm is executed again. As
a result of the second algorithm, the empty section a is allocated to the target
data. Thereafter, the first algorithm is executed again. Since no empty section
remains after the allocation of the empty section a, the second algorithm is executed,
and as a result, an error message is output (operation 4G0).
Aspects of the present invention can be realized as computer-readable
code written on a computer-readable recording medium. The computer-readable recording
medium may be any type of recording device in which data is stored in a computer-readable
manner. Examples of the computer-readable recording medium include a ROM, a RAM,
a CD-ROM, a magnetic tape, a floppy disc, an optical data storage, and a and a computer
data signal embodied in a carrier wave including a compression source code segment
and an encryption source code segment (e.g., data transmission through the Internet).
The computer-readable recording medium can be distributed over a plurality of computer
systems connected to a network so that computer-readable code is written thereto
and executed therefrom in a decentralized manner. Functional programs, code, and
code segments needed for realizing aspects of the present invention can be easily
construed by one of ordinary skill in the art.
It is noted that in some alternative implementations, the
functions noted in the blocks of the flowcharts described above may occur out of
order. For example, two blocks shown in succession may in fact be executed substantially
concurrently or the blocks may sometimes be executed in reverse order depending
upon the functionality involved. More specifically, for example, according to an
aspect of the present invention, the second algorithm may be executed prior to the
first algorithm. Furthermore, in some alternative implementations, blocks may be
omitted. For example, the first algorithm may be omitted and the second algorithm
may be repeated until all of the data has an allocated disc space.
According to aspects of the present invention, it is possible
to effectively allocate empty disc space in consideration of both the distances
of empty disc sections to a reference point and seek time thus reducing the time
taken to seek target data compared to methods of allocating disc space that only
consider the distances of empty disc sections to a reference point. Aspects of the
invention can be implemented using magnetic, magneto optical, and/or optical recording
media for use with computers, portable computing devices, portable media players,
etc.
Although a few embodiments of the present invention have
been shown and described, it would be appreciated by those skilled in the art that
changes may be made in this embodiment without departing from the principles of
the invention, the scope of which is defined in the claims.