These and/or other aspects and advantages of the invention will become apparent and more readily appreciated from the following description of the embodiments, taken in conjunction with the accompanying drawings of which:
Reference will now be made in detail to the present embodiments of the present invention, examples of which are illustrated in the accompanying drawings, wherein like reference numerals refer to the like elements throughout. The embodiments are described below in order to explain the present invention by referring to the figures.
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
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.
Referring to
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 I1, I2, I3, . . . , and Iu 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) I(I1)+I(I2)+ . . . I(Iu)≧req_len and I(I1)+I(I2)+ . . . I(Iu−1)<req_len, or I(I1)+I(I2)+ . . . I(Iu)≧req_len. The conditions for v are as follows: (1) v≦]req_len/2i[; and (2) I(r1)+I(r2)+ . . . I(rv)≧req_len and I(r1)+I(r2)+ . . . I(rv−1)≧req_len, or I(r1)+I(r2)+ . . . I(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 I1, I2, I3, . . . , Iu), 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, Ik+1 is more distant than Ik 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 I1, I2, I3, . . . , Iu 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 I1, I2, I3, . . . , Iu 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 I1, I2, I3, . . . , Iu 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, I(zi1)+I(zi2)+ . . . +I(ziw)≧req_len and, I(zi1)+I(zi2)+ . . . +I(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.
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.
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
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.
Referring to
In this case, i2=min(20,]log24[)=2, and i1=max([log24]−2, 0)=0. Accordingly, L2, L1, and L0 are generated as follows:
Thereafter, Wi is determined as follows:
Then, Zi is determined as follows:
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 MO through M2. Then, whichever of MO through M2 can result in the shortest seek time is allocated to the target data.
In this case, i2=min(20,]log28[)=3 and i1=max([log28]−2, 0)=1, L1, L2, and L3 are generated as follows:
Thereafter, Wi is determined as follows:
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
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:
Thereafter, Wi is determined as follows:
Then, Zi is determined as follows:
In short, according to the example embodiment, empty sections a, b, c, and d are allocated to target data.
The embodiment illustrated in
Since i2=min(20,]log212[)=4 and i1=max([log212]−2, 0)=2, L2, L3, and L4 are generated as follows:
Then, Wi (where i is an integer between 2 and 4) is determined as follows:
Thereafter, Zi is determined based on Wi and is as follows:
Since the allocation of disc space to the target data through the first algorithm has failed, the second algorithm is executed. Referring to
Then, Wi is determined as follows:
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 460).
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 and spirit of the invention, the scope of which is defined in the claims and their equivalents.
Number | Date | Country | Kind |
---|---|---|---|
2006-44657 | May 2006 | KR | national |