WO2010021085A1 - 記憶領域管理方法、記憶領域割付方法及びプログラム - Google Patents
記憶領域管理方法、記憶領域割付方法及びプログラム Download PDFInfo
- Publication number
- WO2010021085A1 WO2010021085A1 PCT/JP2009/003452 JP2009003452W WO2010021085A1 WO 2010021085 A1 WO2010021085 A1 WO 2010021085A1 JP 2009003452 W JP2009003452 W JP 2009003452W WO 2010021085 A1 WO2010021085 A1 WO 2010021085A1
- Authority
- WO
- WIPO (PCT)
- Prior art keywords
- size
- allocation
- storage area
- area
- main
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0629—Configuration or reconfiguration of storage systems
- G06F3/0631—Configuration or reconfiguration of storage systems by allocating resources to storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/04—Addressing variable-length words or parts of words
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0253—Garbage collection, i.e. reclamation of unreferenced memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/06—Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0604—Improving or facilitating administration, e.g. storage management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0608—Saving storage space on storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/0644—Management of space entities, e.g. partitions, extents, pools
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0674—Disk device
Definitions
- the present invention relates to a technique for managing a storage area of a storage device and allocating files and memory objects to the storage area.
- a file system such as FAT (File Allocation Tables) or NTFS (NT File System) has been adopted.
- FIG. 1A is a diagram for explaining partition assignment in an external storage device such as a hard disk conventionally employed.
- a partition management table 195a storing a master boot record 195 and partition management data is arranged.
- four partitions 1 to 4 (191, 192, 193, 194) are assigned by a utility program such as a disk allocator (not shown), and assigned to a certain file system.
- the partition management table 195a includes entries for a partition number 196a, a start position 196b, and a partition size 196c.
- the partition number 196a stores a partition number for identifying the partition, and is 3 in the illustrated example. Information on the top address of the section is stored at the start position, and the contents thereof are omitted in the illustrated example.
- the partition size 196c stores the number of allocation unit areas of the partition, which is 52 in the illustrated example.
- the disk allocation management for files in each partition is complicated because it depends on the allocation method specific to the file system to which each partition is allocated. For example, according to FAT, a link list indicating a block to which allocation is performed is held for each file. Further, according to NTFS, information about the start position of the block assigned for each file and the number of continuous blocks is held.
- Buddy system manages the allocation by dividing each size comprising a storage area from 2 k.
- a basic buddy system is employed for allocating memory objects in a simple system that does not use the virtual storage method.
- FIG. 1B is a diagram illustrating the allocation principle of the buddy system.
- the allocation area 490 is, for example, the sections 1 to 4 illustrated in FIG. 1A.
- the tree structure 580 is a hierarchical model of the relationship of areas (extents using the terms of Patent Document 1) obtained by sequentially dividing the allocation area 490 into half the size of the allocation unit. It is. Assuming that the extent hierarchy of the allocation unit size is level 0, in the example shown in the figure, the level of the root node is 3, that is, the power of 2 which is the size of the allocation area 490.
- the root node 480 of the tree structure 580 corresponds to the entire area (level 3 extent) before the allocation area 490 before the division, and “8” described in the node corresponds to the size of the corresponding allocation area 490. .
- the numbers in parentheses are intra-level numbers that identify extents in the same level.
- the node 440 connected to the root node 480 via the link 540 and the node 441 connected to the root node 480 via the link 541 correspond to an area (level 2 extent) obtained by dividing the allocation area 490 into two.
- the size of each extent is 4 as shown in the figure.
- node 440 Below the node 440 are a size 2 node 420 connected by a link 520 and a size 2 node 421 connected by a link 521. Similarly, a size 2 node 422 connected by a link 522 and a size 2 node 423 connected by a link 523 exist below the node 441. These four nodes correspond to level 1 extents.
- a size 1 node 412 connected by a link 512 and a size 1 node 413 connected by a link 513 exist below the node 421, and a node 413 connected by a link 514 below the node 422.
- the size 1 node 414 connected by the link 515 and the size 1 node 415 connected by the link 515 exist, and the size 1 node 416 connected by the link 516 and the size connected by the link 517 are below the node 423.
- These eight nodes correspond to level 0 extents.
- the nodes other than the root node 480 correspond to one of the extents obtained by dividing the extent corresponding to the parent node into two. Therefore, the total size of extents at each level matches the size of the allocation area 490.
- a free extent is searched for and allocated from among extents of 2 k in size that are equal to or larger than that size, and when that file is released, that size is also freed. Since it is sufficient to return to the extent group, it is easy to allocate and release files and memory objects and manage areas.
- the area is allocated in units of powers of 2, for example, when a 2.1 GB file is allocated, a 4 GB area is required, and data is written to the block after the file allocation.
- a file cannot be added to the area in the conventional file system, and the area cannot be used effectively.
- the buddy system since the area is allocated in units of power of 2, allocation and release of files and memory objects and management of the area are easy, but the area from the power of 2 size to the area not of power of 2 Since there is no management of the remaining area when acquiring the area, and management of the remaining area when acquiring the area of the power of 2 from the area that is not the power of 2 size, there is a problem that the area cannot be effectively used. is there.
- the present invention can be applied to either a storage area that is not a power of 2 size from a storage area of a power of 2 or a storage area that is a power of 2 from a storage area that is not a power of 2 Even in this case, it is possible to manage the remaining storage area and to provide a technique capable of effectively utilizing the storage area.
- the above-described problem is solved by dividing the acquired storage area into storage areas having different power-of-two sizes and managing them.
- the allocation size of a partition is acquired, the sum of powers of two different from each other is calculated from the allocation size and the size of the allocation unit of the partition, and the partition is divided into the calculated two different values.
- Each of the powers of the power is divided into areas having a product of the power of 2 and the size of the allocation unit of the section, and the section is managed for each divided section.
- an empty space having a minimum size of a product of a power of 2 and the size of an allocation unit of a partition, including the allocation request size is accepted.
- the storage area is acquired, a binary display of a value obtained by dividing the allocation request size by the allocation unit size of the partition is obtained, and for each received allocation request, for each bit position where bit 1 is set in the binary display.
- a continuous storage area consisting of a storage area of the product of the power of 2 and the size of the allocation unit of the partition is allocated.
- the storage area is managed by a combination of power-of-two sizes, it is possible to effectively manage a storage area of any size, and each of the storage areas of each power-of-two size obtained by dividing the storage area Since allocation management is performed, files and memory objects are allocated without waste to consecutive storage areas, so that the storage areas can be effectively used.
- the “section” is an area allocated in advance as described with reference to FIG. 1A and is an area allocated first. In the present invention, it is assumed that the section has been acquired.
- An “area” is an allocated or allocated area. Since a partition is a pre-allocated region, it is one of the zones and is a specific one of the zones. Dividing the area into a plurality of areas having the size of the product of the power of 2 and the assigned unit area is called “multi-layer division”. A multi-layered area is referred to as a “multi-layer area”. In the following description, reference to the allocation unit area is omitted, and the notation of the area size may be simply a notation such as a size of 2n.
- vision means that an area is assigned or an area is divided and assigned, and is sometimes called “assignment”.
- the division size of the region at this time is defined by different power-of-two sizes, but is allocated in order of size from the top of the region.
- a region is an area or section. In particular, dividing the section is called “main section”.
- main section the area assigned by the main division is called “main area”.
- the main division is an initial allocation for a partition.
- the power of 2 of the area or the allocation size of the main area by the section or the main section is referred to as “section level”. Referring to the tree structure 580 shown in FIG. 2, for example, the size of the extent of the level 3 corresponding to the node 441 is 4, so the partition level is 2.
- a partition is divided into main sections, and the sections are managed for each main section.
- an allocation request for an area including the allocation request size is received, and an area having a minimum size of the product of the power of 2 including the allocation request size and the size of the allocation unit of the partition is obtained. Further, the sum of different powers of 2 is calculated from the allocation request size and the size of the allocation unit of the partition, and the area that has received the allocation request is determined for each of the calculated different powers of power of 2.
- a multi-layer area divided into multi-layer areas having a product of the power of 2 and the size of the allocation unit of the section is defined as a use area, and the remaining areas other than the use area of the acquired areas are defined as the remaining areas.
- the product of the power of 2 and the size of the allocation unit for each of the powers of the different powers of 2 when the size is a product of the sum of different powers of 2 and the size of the allocation unit of the partition.
- Storage device area management and area allocation and release processing are performed using a data storage device 308 by a data processing device 301 including at least a central processing unit 302 and a cache memory 303 shown in the figure.
- the data storage device 308 includes an allocation division table 208, which will be described later, and an acquired partition 211 that is a management target.
- the data storage device 308 can be realized by the main storage device 305, the external storage device 306, or a combination thereof, or a device disposed at a distance connected via the communication device 307. It is also possible to use.
- the main storage device 305 can be the one in the data processing device 301, the allocation partition table 208 is held in the main storage device 305, and the partition 211 is often assigned to the external storage device 306.
- the present invention is applicable even when the partition 211 is assigned to the main storage device 305.
- the main storage device 305, the external storage device 306, and the communication device 307 are connected to the data processing device 301 by a single bus 304, but the connection method is not limited to this.
- the value 3 stored in the partition number 196a is referred to as the partition number 196a, and the value stored or set in the storage region is the name of the storage region. Sometimes called.
- the allocation size of a partition is acquired, the sum of different powers of two is calculated from the allocation size, the partition is mainly divided into main areas of the calculated different powers of two powers, The division is managed for each divided main area.
- a utility program such as the disk allocator (not shown) described above, and it is sufficient that even the start position and size of the partition are given.
- FIG. 3A is a diagram for explaining a concept of managing acquired partitions by main classification (initial allocation) in Embodiment 1 of the present invention.
- FIG. 3A illustrates the relationship between the section size 220 of the acquired section 211 and the main sections 1 to 3 (81a, 82a, 83a).
- the acquired section 211 can be, for example, the section 3 (193) shown in FIG. 1A.
- a partition size of an arbitrary size can be expressed as a sum of powers of two different from each other, when the partition size is expressed as a sum of powers of two different from each other, there is a power in the sum
- the size of the partition size is represented by a binary number display in which bit 1 is stored at the position of the multiplier to be performed (hereinafter sometimes referred to as a significant bit position) and bit 0 is stored at the position of the other power multiplier.
- the partition size is not equal to the power of 2, and the acquired partition 211
- Main areas 1 to 3 (81a, 82a, 83a) having power-size are allocated.
- FIG. 3B shows an allocation division table 208 that manages the acquired division 211 that has performed the main division shown in FIG. 3A.
- the allocation classification table 208 has an entry for each allocated main area, and each entry includes items of a main area number 205, an allocation position 202, and an allocation size 203.
- the allocation position 202 stores the position information of the acquired section 211, and the allocation position 202 of the main area 1 with the main area number 1 has a value of the start position 219 (hereinafter may be referred to as a start position). However, 25 is stored in the allocation size 203. Similarly, the starting position in the allocation position 202 of the main section 2 +2 5, 2 4 is stored in the allocation size 203, the starting position in the allocation position 202 of the main section 3 +2 5 +2 4, the allocation size 203 2 2 is stored.
- the division is set to the power of 2. Therefore, it is possible to adopt a buddy system method for each of the initially assigned main areas, and it is possible to efficiently use the acquired sections.
- FIG. 3C is a diagram for explaining an example of a processing flow for mainly dividing a partition according to Embodiment 1 of the present invention.
- the main classification process is, for example, a process of setting values in the allocation classification table 208 shown in FIG. 3B, for example. Below, it demonstrates with reference to the allocation division table 208 as an example.
- step S201 a value obtained by binary display of the section size of the acquired section given to the allocation bitmap is set.
- the allocation bitmap is an image of the partition size 220 shown in FIG. 3A.
- the allocation bitmap is a work area (not shown). Also in the following description, in order to simplify the notation, there is a case where “X is set to X” without particularly saying that it is the work area name X.
- step S202 the start position of the section is set as the allocation position.
- step S203 an initial value is set for the main area number.
- step S204 the most significant bit position of the assigned bit position is set as the bit position. In the example shown in FIG. 3A, 5 is set in the bit position.
- step S205 the bit value pointed to by the bit position is extracted from the assigned bitmap, and it is determined whether the extracted bit value is 1 in step S206a. If the bit value is 1, the process proceeds to step S207a, and the value of the power of 2 at the bit position is set as the allocation size.
- step S207b a power value of 2 is set, in which the value set in the allocation position in the allocation position 202 and the value set in the bit position in the allocation size 203 is a power multiplier in the allocation classification table 208 indicated by the main area number.
- a power value of 2 is set, in which the value set in the allocation position in the allocation position 202 and the value set in the bit position in the allocation size 203 is a power multiplier in the allocation classification table 208 indicated by the main area number.
- an initial value of 1 is set for the main area number 205
- a start position is set for the allocation position 202
- 25 is set for the allocation size 203.
- step S208 it is determined whether the bit position is the least significant bit position. If it is the least significant bit position, the process ends. If it is not the least significant bit position, the process proceeds to step S209a. Set the value with the size added. In step S210, 1 is added to the main area number, and in step S211, the value set in the bit position is decreased by 1, and the process returns to step S205.
- step S206a determines whether the bit position is the least significant bit position, and if it is the least significant bit position, the process is terminated. If it is not a lower bit position, the process proceeds to step S211.
- the loop process from step S205 to step S211 is repeated until the bit position becomes the least significant bit position, and the process ends when the bit position becomes the least significant bit position.
- the main division of the acquired section is completed by the above processing.
- an acquisition request for an area including an allocation request size different from the power-of-two size from the request source is received, and the area of the minimum power-of-two size (assignment division level) including the allocation request size is buddyed. It is acquired by the system allocation process, and unused areas are released by the buddy system allocation process, whereby the used areas corresponding to the allocation request size are acquired as continuous areas of different division levels.
- the acquisition of the above-mentioned allocation division level area can be performed from the main area that is mainly divided from the division in the first embodiment, but is not limited thereto.
- FIG. 4A is a diagram illustrating a concept of acquiring an area having an allocation request size and releasing an unused area in the second embodiment of the present invention.
- the relationship between the allocation request size 20a which is not equal to the power-of-two size and the area 80 acquired based thereon and the areas 1 to 4 (81b, 83b, 84c, 82c) obtained by dividing the acquired area 80 into multiple layers ) Is shown.
- the allocation process 23 by the buddy system indicates that the allocation division level 44a is a power of 2 with 4 being a power of 2.
- Area 80 is obtained.
- Arbitrary existing buddy system allocation processing can be adopted to acquire the area 80. An example of allocation processing by the buddy system in the second embodiment will be described later with reference to FIGS. 6 and 5B. To do.
- each bit value of the allocation request size 20a and the areas 1 to 4 (81b, 83b, 84c, 82c) is as shown by solid arrows 71b, 73b and dotted arrows 73c, 72c. That is, the allocation request size 20a that positions of significant bits of the most significant is 3, 2 3 is the size of the zone 1 (81b) is divided in response to being split assignment, the next bit position 2 it bit value is 0, 2 2 size area 2 (82c) corresponds to being split assignment.
- FIG. 4B is a diagram illustrating an example of an allocation state of extents at each partition level according to the second embodiment of the present invention.
- the extent allocation state and level number tree shown in FIG. 4B shows the extent allocation state 1 or 0 obtained by dividing the extent corresponding to the acquired area 80 shown in FIG. 4A by half (buddy division).
- the classification levels 4 to 1 are shown.
- Allocation state 1 corresponds to a closed state
- allocation state 0 corresponds to an empty state.
- the empty state is a state where the extent can be allocated
- the closed state is a state where it is unknown whether all or a part of the extent can be allocated by itself.
- the solid line connecting the allocation status of the upper category and the allocation status of the lower category indicates the relationship of extent buddy division for each allocation status.
- In-level numbers are shown as starting from number 0.
- the allocation state 616 of the division level 4 is that of the extent corresponding to the area 80, and 1 is set.
- the one with level number 0 is that of the extent corresponding to area 1 (81b), and 1 is set, and the allocation status of the extent of the sub-division that is buddy divided All are set to 1.
- those with an intra-level number 4 are those of extents corresponding to the area 3 (83b), and those with an intra-level number 5 are those of extents corresponding to the area 4 (84c). is there. 1 and 0 are set in correspondence with the use area and the non-use area, respectively.
- the one with the in-level number 3 is the extent corresponding to the area 2 (82c), and 0 is set.
- the extent number 3 in the division level 2 can be used as an empty state by buddy division.
- the allocation state of the in-level numbers 6 and 7 of the division level 1 to 1, when searching for the empty extent of the division level 1 in the allocation state shown in FIG. 4B, the empty extent of the in-level number 5 is preferentially acquired. Is done. Therefore, the extent with the in-level number 3 of the partition level 2 can be left as an empty extent in order to search for an empty extent of the partition level 2 thereafter.
- the allocation state is represented as a tree in FIG. 4B, but it is clear that the allocation state can be held in a bitmap in a continuous area.
- the buddy system according to the second embodiment will be described with reference to FIGS. 5A to 5C.
- the buddy system in the second embodiment will be described as performing the allocation and release of extents in the main area constituting the main section partitioned in the first embodiment, that is, given the main area number.
- the present invention is not limited to this, and it is also possible to perform allocation release of extents of power-of-two sizes.
- FIG. 5A is a diagram illustrating an example of a process flow for initializing the buddy system in the present embodiment.
- step S501 the division level corresponding to the allocation size of the main area indicated by the main area number is set as the division level.
- an initial value (for example, value 0) is set as the intra-level start number, and in step S503, the intra-level start number is set as the intra-level end number.
- step S504 an empty state is set in the allocation state indicated by the in-level start number of the division level, and the process proceeds to step S505.
- the empty state is set in the allocation state 616 of the division level 4.
- the selection of the main area from which the area is acquired will be described later with reference to FIG.
- the in-level numbers shown in FIG. 4B are generalized as in-level start numbers + assignment numbers.
- the in-level start number is an arbitrary number
- the allocation number is an offset from the in-level start number. Accordingly, if the in-level start number is 0, the in-level number and the assigned number have the same value.
- step S505 it is determined whether the partition level is the lowest partition level. If it is the lowest division level, the initialization is completed and the process is terminated. If it is not the lowest division level, the process proceeds to step S506.
- step S506 the value 1 is decreased from the division level.
- step S507 the in-level start number is set as the allocation number, and in step S508, the value obtained by adding the value 1 to the value obtained by doubling the in-level end number is set.
- step S509 the closed state is set in the allocation state indicated by the allocation number of the division level.
- step S510 it is determined whether the allocation number is equal to the intra-level end number. If the allocation number is equal to the in-level end number, the process returns to step S505. If not equal, 1 is added to the allocation number in step S511, and the process returns to step S509.
- the above-described processing from step 505 to step S511 is to set the closed state to the extent allocation state in which the main area is buddy divided.
- the end number in the level is calculated in step 508 every time it goes through the processing loop with the initial values 0 to 1, 3, and 7, and the level from the start number 0 in the level of division level 3 to division level 1
- the closed state is set to the assigned state indicated by the assigned number (number within the level) up to the inner end number.
- the above-described empty state and blockage state can be set at bit positions corresponding to the extents that are divided by buddy in the bitmap representing the allocation state.
- the buddy system of this embodiment is in the initial state.
- the extent corresponding to the main area is made empty, and the extent that is substantially empty obtained by buddy-dividing the extent corresponding to the main area is made closed.
- a blocked extent may or may not be usable.
- FIG. 5B is a diagram illustrating an example of a processing flow for acquiring an empty extent by the buddy system in the present embodiment. It is assumed that the buddy system has been initialized by the initialization process described with reference to FIG. 5A before the empty extent is first acquired.
- step S521 a division level corresponding to the allocation size of the main area indicated by the main area number is set in the main division level, and an allocation division level is set in the division level.
- the allocation classification level is the classification level of the empty extent acquired by the buddy system. In the example shown in FIG. 5A, 4 is set.
- step S522 an empty area in the division level is searched, and in step S523, it is determined whether there is an empty division level. If there is no space, the process branches to step S524 to determine whether the partition level indicates the main partition level, that is, the size of the main section. If it indicates the main division level, the process ends as an acquisition failure, and if it does not indicate the main division level, the process proceeds to step S525, and the value 1 is added to the division level, and the process returns to step S522.
- step S523 it is determined whether the classification level is the allocation classification level. If the allocation level is the allocation classification level, the process ends. If it is not the allocation classification level, the process branches to step S528.
- step S528 the value 1 is reduced from the division level, and the process proceeds to step S529 to double the allocation number.
- the processing in step S528 and step S529 corresponds to buddy division processing.
- step S530 an empty state is set to the assignment state indicated by the assignment number of the division level, and in step S531, an assignment number (hereinafter also referred to as a buddy) that forms a pair of the division level assignment number and the buddy division.
- An empty state is set as the assigned state, and the process returns to step S522. That is, an empty state search is performed with the allocation state of two extents obtained by buddy division as an empty state.
- the allocation state of the empty extent searched in step S526 is set to the closed status, and the allocation status of the buddy is set to the empty status until the segment level becomes the allocation category level, and the allocation extent level empty extent is obtained. To do.
- FIG. 5C is a diagram illustrating an example of a processing flow for releasing an acquired extent by the buddy system in the present embodiment.
- a partition level corresponding to the allocation size of the main section indicated by the main section number is set as the main section level, and a release section level is set as the section level.
- the release division level is the division level of the extent that is closed by the buddy system.
- the release division level is 3 corresponding thereto, and 3 is set as the division level.
- an allocation number in a release section level that specifies a closed extent to be released is given as a release number.
- step S543 it is determined whether the division level indicates the main division level. If it indicates the main partition level, the partition level corresponds to the root node, and there is no buddy, so the process branches to step S548, sets the empty state to the allocation state pointed to by the partition level release number, and ends the processing.
- step S543 determines whether the partition level does not indicate the main partition level. If it is determined in step S543 that the partition level does not indicate the main partition level, the process proceeds to step S544, and it is determined whether the allocation state pointed to by the buddy of the partition level release number is empty. If it is not empty, the process proceeds to step S548 described above. If it is empty, the process branches to step S545.
- step S545 the closed state is set to the allocated state pointed to by the buddy of the division level release number.
- step S546 1 is added to the division level.
- step S547 the quotient obtained by dividing the release number by 2 is set in the release number, and the process returns to step S543.
- step S543 to step S547 is repeated until the partition level indicates the main partition level or the allocation number indicated by the buddy of the partition level release number is closed, and finally the allocation indicated by the partition level release number.
- the allocation area release processing is completed. That is, in the process shown in FIG. 5D, if the allocation state pointed to by the buddy with the release number is empty, the allocation state of the pair pointed to by the release number and the buddy is both closed, and the allocation state pointed to by the buddy at the upper division level An empty state is set in the allocation state indicated by the release number when the block is closed or when the partition level indicating the main partition level is reached.
- an allocation division level area in Embodiment 2 of the present invention is obtained, and the area is divided into multiple layers.
- the use area corresponding to the allocation request size is a series of different division level areas. The process of acquiring the area and releasing the remaining unused area by the buddy system allocation process will be described with reference to FIGS. 6 to 7B.
- FIG. 6 is a diagram illustrating an example of a processing flow for acquiring an area at the allocation request classification level in the present embodiment.
- the allocation request section level area is acquired prior to acquiring the allocation request size area, and the process of acquiring the allocation request size area described later with reference to FIGS. 7A and 7B. It is a part of it.
- the area of the allocation request classification level is acquired from the acquired section 211 shown in FIG. 3A, for example.
- description will be made with reference to the allocation division table 208 shown in FIGS. 3A and 3B.
- step S601 the lowest main area number of the allocation division table is set as the main area number.
- 3 is set as the main area number of the allocation division table 208. That is, the acquisition process of the area of the allocation request size is started from the main area of the smallest size.
- step S602 the allocation size of the allocation classification table indicated by the main area number is read, and in step S603, it is determined whether the read allocation size is smaller than the allocation request size. If it is smaller, the process branches to step S606.
- the value 4 of the allocation size 203 with the main area number 205 being 3 is smaller than the allocation request size, and the process proceeds to step S607 via step S606. 2 is set as the next main area number.
- step S603 determines whether the allocation size is smaller than the allocation request size. If it is determined in step S603 that the allocation size is not smaller than the allocation request size, the process proceeds to step S604, where an area at the allocation request classification level is obtained from the main area indicated by the main area number, and an allocation number is obtained. Details of step S604 have been described above with reference to FIG. 5B.
- step S605 it is determined whether an area at the allocation request category level has been acquired in step S604. If the area of the allocation request category level has been acquired, the process branches to step S608, where the main area number, the allocation category level, and the allocation number are set in the acquisition result of the allocation category level area, and the process is terminated.
- step S604 If it is determined in step S604 that an area at the allocation request category level has not been acquired, the process advances to step S606 to determine whether the main area number is the highest number. If the main area number is the highest number, the process ends as an acquisition failure. If the main area number is not the highest number, the next main area number is set as the main area number in step S607 and the process proceeds to step S602. Return.
- step S602 The loop processing from step S602 to step S607 is repeated until the area of the allocation request classification level is acquired while updating the main area number, and the area of the allocation request classification level even if the main area number is the highest number. If it cannot be acquired, the process ends as an acquisition failure.
- the allocation request size is 10
- the allocation size of the main area 3 (83a) is 4, and the allocation size of the main area 2 (82a) is 16.
- the allocation division level area in step S604 is acquired from the main area 2 (82a), and the acquisition fails, the acquisition of the allocation division level area from the main area 1 (81a) is attempted next. Since the size of the main area 2 (82a) is 16, and the size of the main area 1 (81a) is 32, the allocation number of the area at the allocation division level to be acquired is 0 or 1.
- FIG. 7A is a diagram for explaining the former stage of the processing flow example for acquiring the area of the allocation request size in the second embodiment.
- This preceding process is a process for acquiring an area at the allocation category level.
- step S701 a value obtained by displaying the allocation request size in binary in the allocation bitmap.
- the allocation bitmap is an image of the allocation request size 20a shown in FIG. 4A.
- the allocation request size is assumed to be given from the request source.
- step S702 the lowest bit position where the bit value of the assigned bitmap is 1 is set in the lowest bit position. In the example shown in FIG. 4A, 1 is set to the least significant bit position.
- step S703 the most significant bit position where the bit value of the assigned bitmap is 1 is set in the most significant bit position.
- 3 is set to the most significant bit position.
- step S704 it is determined whether the most significant bit position matches the least significant bit position. If they match, the process branches to step S705.
- the allocation request size 20a is equal to the power-of-two size, and there is only one bit position where bit 1 stands in the allocation bitmap set in step S701. . Therefore, in the following description, an allocation request equal to the power of 2 size is sometimes referred to as a single bit request.
- step S705 If the process branches from step S704 to step S705, the most significant bit position is set in the allocation division level in step S705. In this case, the size of the allocation division level is equal to the allocation request size.
- step S706 an area at the allocation division level is acquired by the process described with reference to FIG. 6, and a main area number and an allocation number are obtained.
- the main area number here is the one set in step S601 or step S607 in FIG.
- the allocation number is set in step S526 of the processing flow example in FIG. 5C called in step S604.
- step S707 it is determined whether the allocation classification level, that is, the area of the allocation request size, has been acquired in the process of step S706. If not acquired, the process ends as an acquisition failure. If the area of the allocation request size has been acquired, in step S707a, the value obtained by adding the allocation number to the start number in the level is set in the intra-level number, and in step S707b, the main area number and allocation category are set in the acquisition result. Set the level and number within the level, and finish the process.
- the allocation classification level that is, the area of the allocation request size
- a value obtained by adding value 1 to the most significant bit position is set to the allocation division level in step S708, and the process proceeds to step S709. .
- 4 is set as the allocation division level 44a.
- bit 1 stands at a plurality of bit positions of the allocation bitmap set in step S701
- an allocation request with an allocation request size that is not equal to a power-of-two size is called a multi-bit request. There is.
- step S709 similarly to step S706, the area of the allocation division level is acquired by the process described with reference to FIG. 6, and the main area number and the allocation number are obtained.
- step S710 it is determined whether an area of the allocation category level has been acquired in the process of step S709. If not acquired, the process ends as an acquisition failure, and if acquired, the process proceeds to step S711 shown in FIG. 7B. .
- FIG. 7B is a diagram illustrating the latter part of the example of the processing flow for acquiring the area of the allocation request size in the multi-bit request according to the second embodiment.
- the subsequent process is a process of acquiring an area having an allocation request size as a used area by releasing an unused area from the acquired allocation division level area.
- step S711 a value obtained by doubling the allocation number obtained in step S709 is set in the allocation number, and in step S712, the most significant bit position is set in the bit position.
- the allocation number is 0 or 1
- the most significant bit position is 3, so 0 or 1 is set as the allocation number and 3 is set as the bit position.
- step S713 the bit value pointed to by the bit position is extracted from the assigned bitmap, and it is determined whether the extracted bit value is 1 in step S714. If it is 1, the process proceeds to step S718, and if 0, step S715 is performed. Proceed to In step S715, the bit position is set in the release section level, and the flow advances to step S716 to set a value obtained by adding 1 to the allocation number in the release number.
- step S717 the release number level area is released from the main area indicated by the main area number by the process described with reference to FIG. 5D.
- step S717a the assignment number is doubled to the assignment number. The set value is set, and the process proceeds to step S720.
- step S718 it is determined whether the bit position is the least significant bit position. If it is the least significant bit position, the process proceeds to step S721. If it is not the least significant bit position, the process branches to step S719 and 1 is added to the allocation number. Is set to a value twice, and the process proceeds to step S720. In step S720, 1 is subtracted from the bit position, and the process returns to step S713.
- the allocation number of the area of allocation classification level 4 obtained in step S709 is 0 or 1 as described above. Therefore, after the allocation number of the division level 3 zone 1 (81b) obtained by buddy dividing the allocation division level zone is set to 0 or 2 in step S711, the first bit position 3 processing branches from step S718 to step S719. The allocation number is 2 or 6, and the bit position is 2. In the second process, since the bit value at bit position 2 is 0, the process proceeds to step S715. Then, 2 is set to the release section level and 3 or 7 is set to the release number.
- zone 2 (82c) at zone 3 release level 3 is released and zone 1 (81b) at zone level 3 is assigned 2 If there is, the area 2 (82c) of the release number 7 of the division level 2 is released in the same manner.
- step S718 determines whether the bit position is the least significant bit position. If it is determined in step S718 that the bit position is the least significant bit position, the process proceeds to step S721, where the bit position is set in the release section level, and in step S722, the value obtained by adding 1 to the allocation number is set. Set. In step S723, the area having the release number at the release section level is released from the main area indicated by the main area number by the process described with reference to FIG. 5D.
- bit position 1 is the least significant bit position and the allocation number is 4 or 12 in the processing of step S717a of bit position 2
- 1 is set as the release section level. Is set to 5 or 13. Therefore, if the assignment number of the division level 3 area 1 (81b) is 0, the division level 1 release number 5 area 4 (84c) is released, and the division level 3 area 1 (81b) assignment number is If it is 2, the area 4 (84c) of the release number 13 of the division level 1 is released in the same manner.
- step S724 a value obtained by adding the allocation number to the intra-level start number is set in the intra-level number, and in step S725, the main area number, the allocation classification level, Set the in-level number and finish the process.
- the allocation division level set here is the one set in step S708 of FIG. 7A.
- FIG. 8A is a diagram illustrating the first stage of a processing flow example for releasing an area (usage area) of the acquired allocation request size according to the second embodiment.
- the acquisition result of the allocation request size area described with reference to FIG. 7B can be included in the release request, and the allocation request size can also be included in the release request.
- step S801 a value obtained by subtracting the in-level start number from the in-level number is set in the release number, and the allocation division level is set in the release division level.
- step S802 an allocation request is made to the allocation bitmap.
- step S803 the lowest bit position where the bit value of the assigned bitmap is 1 is set in the lowest bit position. In the example shown in FIG. 5A, 1 is set to the least significant bit position.
- step S804 the most significant bit position where the bit value of the assigned bitmap is 1 is set in the most significant bit position.
- step S805 it is determined whether the most significant bit position matches the least significant bit position. If they match, the process branches to step S806. In this case, the allocation request size 20a is equal to the power of 2 size, and the allocation request is a single bit request. In step S806, the area pointed to by the release number of the release section level is released from the main area pointed to by the main area number by the process described with reference to FIG. 5D, and the process ends.
- step S805 determines whether the most significant bit position matches the least significant bit position. If it is determined in step S805 that the most significant bit position does not match the least significant bit position, the process proceeds to step S807 shown in FIG. 8B.
- FIG. 8B is a diagram for explaining the latter part of the processing flow example for releasing the area (usage area) of the acquired allocation request size in the second embodiment.
- the subsequent processing is processing for releasing the use area of the multi-bit request.
- step S807 the value obtained by doubling the release number is set in the release number (assignment number) in step S807, and the most significant bit position is set in the bit position in step S808.
- step S809 the bit value pointed to by the bit position is extracted from the assigned bitmap.
- step S810 it is determined whether the extracted bit value is 1. If the bit value is not 1, in step S811, a value obtained by doubling the release number is set in the release number, and the process proceeds to step S814. If the bit value is 1, in step S813, the bit position and the release number are written to the stack, and in step S814, a value obtained by doubling the value obtained by adding the value 1 to the release number is set in step S814. The process proceeds to S814.
- step S814 it is determined whether the bit position is the least significant bit position. If it is not the least significant bit position, 1 is decremented from the bit position in step S815, and the process returns to step S809. If it is the least significant bit position, it is determined in step S816 whether the stack is empty. If it is empty, the process ends. If it is not empty, the process proceeds to step S817, and the bit position and release number are extracted from the stack. In step S818, the bit position extracted in step S817 is set to the release section level. Then, by the process described with reference to FIG. 5C in step S819, the area of the release number at the release section level is released from the main area indicated by the main area number, and the process returns to step S816. By repeating the loop processing from step S816 to step S819 described above until the stack becomes empty, release of the area of the allocation request size is completed.
- step S801 When releasing the use area of the allocation request size illustrated in FIG. 4A, 0 or 1 is set to the release number in step S801, and 0 or 2 is set to the release number in step S807.
- step S808, 3 is set as the bit position, and bit position 3 and the release number 0 or 2 are initially set in the stack. After the release number is incremented by 1 and doubled and updated to 2 or 6, the release number is further doubled and updated to 4 or 12 in the processing of bit position 2. In the processing at bit position 1, bit position 1 and release number 4 or 12 are written to the stack.
- bit position 1 and release number 4 or 12 are taken from the stack, the release partition level is set to 1, and the area of release number 4 or 12 is released. If the allocation number of zone 1 (81b) at division level 3 is 0, zone 3 (83b) at zone 4 (release level 4) is released, and zone 1 (81b) at zone 3 is assigned 2 If there is, the area 3 (83b) of the release number 12 of the division level 1 is released in the same manner. Subsequently, bit position 3 and release number 0 or 2 are extracted from the stack, the release section level is set to 3, and the area of release number 0 or 2 is released. That is, the section 1 (81b) of the section level 3 is released. As a result of the above processing, the area 1 (81b) and the area 3 (83b) constituting the use area are released.
- the area is divided into areas equal to the power of 2
- it is possible to manage each area so that it is possible to adopt the buddy system method for each area, and it is possible to efficiently use the acquired area.
- a surplus area larger than the size requested by the request source can be managed as an unused area and used effectively.
- the third embodiment corresponds to a modification of the second embodiment described above.
- Accepts an acquisition request for an area including an allocation request size different from the power-of-two size from the request source acquires an area of the smallest power-of-two size (assignment classification level) that includes the allocation request size,
- the used area corresponding to the allocation request size is acquired as a continuous area of areas of different division levels by being released by the allocation process of the buddy system.
- the division level is updated by a buddy system corresponding to one main area, as described with reference to the processing flow examples shown in FIGS. 5B and 6. While searching for an empty extent, if no empty extent is found in the buddy system, the main area number is updated, and the buddy system corresponding to the main area of the main area number finds an empty extent to search for an empty extent.
- empty extents are searched across different main areas, and when no empty extents are found in all main areas, the partition level is updated. , Repeatedly searching for empty extents across different main areas at that partition level .
- the third embodiment of the present invention will be described with reference to FIG. 9 and FIG. 10 and different portions from the second embodiment of the present invention.
- the difference between the second embodiment and the third embodiment is the procedure for obtaining the allocation division level areas for the different main areas. Therefore, among the embodiments 2 described with reference to FIGS. 4A to 8B, the portions different from the embodiment 3 are described with reference to the portions described with reference to FIGS. 5B and 6 and the related FIG. 4A. Is the part of the acquisition of the area of the assigned division level. Therefore, an example of a processing flow of the third embodiment corresponding to FIGS. 5B and 6 of the second embodiment will be described.
- FIG. 9 is a diagram illustrating an example of a processing flow for acquiring an area at the allocation division level according to the third embodiment of the present invention.
- the process flow example shown in FIG. 9 corresponds to the process flow example in the second embodiment of the present invention shown in FIG.
- step S900 an allocation division level is set as the division level.
- step S901 the lowest main area number in the allocation division table is set as the main area number.
- 3 is set as the main area number. That is, the acquisition process of the area of the allocation request size is started from the main area of the smallest size.
- step S902 a division level corresponding to the allocation size of the main area indicated by the main area number is set in the main division level.
- step S903 it is determined whether the division level is greater than the main division level set in step S902. If it is not larger, the process proceeds to step S904, where an area at the allocation request classification level is acquired from the main area indicated by the main area number, and an allocation number is obtained. Details of step S904 will be described later with reference to FIG.
- step S905 it is determined whether an area of the allocation request category level has been acquired in step S904. If the allocation requested division level area has been acquired, the process branches to step S908 to set the main area number, the allocation division level, and the allocation number in the acquisition result of the allocation division level area, and the process is terminated. If the area at the allocation request category level has not been acquired in the process of step S904, the process proceeds to step S906. If it is determined in step S903 that the division level is higher than the main division level set in step S902, the process proceeds to step S906.
- step S906 it is determined whether the main area number is the highest number. If the main area number is not the highest number, the process proceeds to step S907, the next main area number is set as the main area number in step S907, and the process returns to step S902.
- the loop processing from step S902 to step S907 described above is processing for searching for empty extents across different main areas for the same division level described above.
- step S906a it is further determined whether the division level indicates the main division level. If the main division level is indicated, the processing ends as an acquisition failure and must be at the main division level. For example, the value 1 is added to the division level in step S907a, and the process returns to step S901.
- the loop processing that returns from the determination processing in step S906a to step S901 through step S907a described above is processing for updating the division level and searching for an empty extent over different main areas at the division level.
- the above double loop process is repeated until the allocation required division level area is acquired while updating the main area number and the division level, and the allocation request division level area can be acquired even if the division level is the main division level. If not, the process ends as an acquisition failure.
- FIG. 10 shows a detailed flow example of the processing in step S904 shown in FIG. 9, and is a diagram for explaining a processing flow example for acquiring an empty extent in the third embodiment of the present invention.
- the processing flow example shown in FIG. 10 corresponds to the processing flow example in the second embodiment of the present invention shown in FIG. 5B.
- step S1022 an empty area in the division level is searched.
- the division level is set in step S900 or step S907a shown in FIG.
- step S1023 it is determined whether there is an empty classification level. If there is no space, the process ends as an acquisition failure.
- step S1023 it is determined whether the classification level is the allocation classification level. If the allocation level is the allocation classification level, the process ends. If it is not the allocation classification level, the process branches to step S1028.
- step S1028 the value 1 is decreased from the division level, and the process proceeds to step S1029 to double the allocation number.
- the processes in steps S1028 and S1029 correspond to the buddy division process as in the second embodiment.
- step S1030 an empty state is set in the assignment state indicated by the assignment number of the division level.
- step S1031 an empty state is set in the assignment state indicated by the assignment number (buddy) that forms a pair of the assignment number of the division level and the buddy division.
- step S1022 that is, an empty state search is performed with the allocation state of two extents obtained by buddy division as an empty state.
- the allocation state of the empty extent searched in step S1026 is set to the closed status, and the allocation status of the buddy is set to the empty status until the allocation level reaches the allocation category level, and an allocation extent level empty extent is obtained. To do.
- a desired partition level empty extent in one main area for example, a small main area
- a desired partition level empty extent in another main area for example, a large main area. Can be obtained from another main area without buddy partitioning an empty extent of a partition level larger than the desired partition level of the smaller main area.
- the storage area management method, storage area allocation method, storage area release method, and equivalents thereof according to the embodiments of the present invention described above can be realized by a program that causes a computer to execute them. is there. Therefore, the program and a computer-readable storage medium storing the program are also included in the embodiment of the present invention. It is also apparent that the execution means of each process of the storage area management method, storage area allocation method, and storage area release method according to the embodiment of the present invention is realized on a computer by the above program. Therefore, it is apparent that the storage area management apparatus, the storage area allocation apparatus, and the storage area release apparatus are realized by the program and the computer.
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
Description
図1Aに示すように、例えば外部記憶装置306の記憶領域の先頭には、マスターブートレコード195と区画の管理データを格納した区画管理テーブル195aが配置されている。更に図示しないディスクアロケータ等のユーティリティプログラムにより4つの区画1~4(191,192,193,194)が割り付けられ、それぞれあるファイルシステムに割り当てられている。図1Aに区画番号3についての区画情報196が例示されているように、区画管理テーブル195aは、区画番号196a、開始位置196b、区画サイズ196cのエントリを含んでいる。区画番号196aには、区画を識別する区画番号が格納されており、図示の例では3である。開始位置には、区画の先頭アドレスの情報が格納されており、図示の例ではその内容は省略している。区画サイズ196cには、区画の割当単位領域の個数が格納されており、図示の例では52である。
本発明の一つの態様によれば、区画の割付サイズを取得し、割付サイズと、区画の割付単位のサイズから互いに異なる2のべき乗の和を算出し、区画を、該算出された互いに異なる2のべき乗のべき乗数毎に該2のべき乗と区画の割当単位のサイズの積からなる大きさの区域に区分し、記区分された区域毎に区画を管理する。
最初に、あらためて区画の定義を行う。本発明において「区画」とは、図1Aを参照して説明したように、予め割り当てられた領域であり、最初に割り当てられる領域である。本発明においては、区画は取得済みであることを前提とする。
「区域」とは、割り当てられた、あるいは割り付けられた領域である。区画は予め割り当てられた領域であるから、区域の1つであり、区域のうちの特定のものである。
区域を、2のべき乗と割当単位領域の積のサイズを有する複数の区域に分割することを「多層区分」という。また、多層区分された区域を「多層区域」という。なお、以下の説明においては、割当単位領域についての言及は省略し、領域のサイズについて、単に2のn乗のサイズ等の表記を用いる場合がある。
「区分」とは、領域を割り当てる、あるいは領域を分割して割り当てることであり、「割付」ということもある。このときの領域の分割サイズは、互いに異なる2のべき乗サイズで規定されるが、領域の先頭からサイズの大きさの順に割り付けられる。領域は、区域または区画である。特に区画を区分することを「主区分」という。また、主区分により割り付けられた区域を「主区域」という。主区分は、本発明においては、区画に対する初期割付である。
区分または主区分による区域または主区域の割付サイズの2のべき乗数を「区分レベル」という。図2に示すツリー構造体580を援用して説明すると、例えばノード441が対応するレベル3のエクステントのサイズは4であるから、その区分レベルは2である。
また、本発明の別の態様によれば、割付要求サイズを含む区域の割付要求を受付け、割付要求サイズを包含する2のべき乗と区画の割当単位のサイズの積の最小のサイズの区域を取得し、更に割付要求サイズと、区画の割付単位のサイズから互いに異なる2のべき乗の和を算出し、前記割付要求を受け付けた区域を、該算出された互いに異なる2のべき乗のべき乗数毎に該2のべき乗と前記区画の割当単位のサイズの積からなる大きさの区域に多層区分した多層区域を使用区域とし、前記取得した区域のうち使用区域以外の残りの区域を、該残りの区域のサイズを互いに異なる2のべき乗の和と区画の割当単位のサイズの積からなる大きさとしたときの該互いに異なる2のべき乗のべき乗数毎に、該2のべき乗と前記割当単位のサイズの積からなる大きさの区域に多層区分して該多層区分された多層区域を解放して未使用状態とする。
本発明の一実施形態による記憶装置の領域管理及び区域の割付及び解放処理は図に示す中央処理装置302及びキャッシュメモリ303を少なくとも備えたデータ処理装置301によりデータ格納装置308を用いて実施される。データ格納装置308については、後に説明する割付区分表208と管理対象である取得済み区画211を含む。図3に示すように、データ格納装置308は、主記憶装置305または外部記憶装置306、あるいはそれらの組み合わせで実現することができ、あるいは通信装置307を介して接続された遠方に配置された装置を用いることも可能である。
図3の例示では、主記憶装置305、外部記憶装置306及び通信装置307が一本のバス304によりデータ処理装置301に接続されているが、接続方法はこれに限るものではない。
図3Aに例示するのは、取得済み区画211の区画サイズ220と主区域1~3(81a、82a、83a)との関係である。取得済み区画211は、例えば、図1Aに示す区画3(193)とすることができる。
任意の大きさの区画サイズは互いに異なる2のべき乗の和で表現することができることから、区画サイズ220には、区画サイズを互いに異なる2のべき乗の和で表現したとき、その和にべき乗が存在するべき乗数の位置(以下、有意のビット位置ということがある。)にビット1をその他のべき乗数の位置にビット0を格納した2進数表示により区画サイズの大きさを表している。
ここで割付ビットマップは図示しないワークエリアである。以下の説明においても、表記の簡略化のため、ワークエリアの名称Xであることを特に断ることなく、「Xに・・・を設定する。」のように記述することがある。
図3Bに示す例における最初の処理においては、主区域番号205には初期値の1が、割付位置202には開始位置が、割付サイズ203には25が設定される。
上記ステップS205~ステップS211のループ処理をビット位置が最下位のビット位置になるまで繰り返し、ビット位置が最下位のビット位置になると処理を終了する。
以上の処理により取得済み区画の主区分が完了する。
図4Aには、2のべき乗サイズとは等しくない割付要求サイズ20aと、それに基づいて取得した区域80との関係及び取得した区域80を多層区分した区域1~4(81b、83b、84c、82c)との関係が示されている。割付要求サイズ20aの有意のビット位置は3と1であり、割付要求サイズは23+21=10である。
区域1(81b)と区域3(83b)により割付要求サイズに対応する使用区域が構成され、区域4(84c)と区域2(82c)により未使用区域が構成される。
図4Bに示す各エクステントの割付状態とレベル内番号のツリーは、図4Aに示す取得した区域80に対応するエクステントを2分の1ずつ分割(バディ分割)したエクステントの割付状態1または0を、区分レベル4から区分レベル1まで示したものである。割付状態1は塞状態に相当し、割付状態0は空状態に相当する。空状態はそのエクステントが割付可能な状態であり、塞状態は、それ単独ではそのエクステントの全体あるいは一部が割付可能か不明な状態である。上位区分の割付状態と下位区分の割付状態を結ぶ実線は、各割付状態に関するエクステントのバディ分割の関係を示したものである。レベル内番号は0番から始まるものとして示している。
区分レベル1のレベル内番号6と7の割付状態を1とすることにより、図4Bに示す割付状態において区分レベル1の空エクステントを探索したとき、レベル内番号5の空エクステントが優先的に取得される。したがって、その後区分レベル2の空エクステントが探索されたときのために、区分レベル2のレベル内番号3のエクステントを空エクステントとして残しておくことができる。
理解を容易にするため、図4Bには割付状態をツリーとして表記したが、割付状態を連続した領域におけるビットマップに保持することができることは明らかである。
図に示すように、ステップS501において、区分レベルに、主区域番号の指す主区域の割付サイズに対応する区分レベルを設定する。次にステップS502で、レベル内開始番号に、初期値(例えば値0)を設定し、ステップS503で、レベル内終了番号に、レベル内開始番号を設定する。
上述のステップS501~ステップS504の処理は、図4Aの例示の区域80が主区域であるとして説明すると、区分レベル4の割付状態616に空状態を設定するものである。なお、区域を取得する主区域の選択については、後に図6を参照して説明する。また、図4Bに示すレベル内番号は、レベル内開始番号+割付番号として一般化をはかっている。レベル内開始番号は任意の番号であり、割付番号はレベル内開始番号からのオフセットである。したがって、レベル内開始番号を0とすると、レベル内番号と割付番号は同一の値となる。
ステップS506では、区分レベルより値1を減らす。次にステップS507で割付番号に、レベル内開始番号を設定し、ステップS508で、レベル内終了番号に、レベル内終了番号を2倍した値に値1を加えた値を設定する。
次にステップS509で区分レベルの割付番号の指す割付状態に塞状態を設定し、ステップS510で、割付番号はレベル内終了番号と等しいか判定する。割付番号がレベル内終了番号と等しければステップS505に戻り、等しくなければ、ステップS511で割付番号に1を加えてステップS509に戻る。
最初に、ステップS541において、主区分レベルに、主区域番号の指す主区域の割付サイズに相当する区分レベルを設定すると共に、区分レベルに解放区分レベルを設定する。ここで解放区分レベルは、バディシステムにより解放する塞状態のエクステントの区分レベルである。図4Aに示す例の区域1(81b)を解放する場合には、解放区分レベルはそれに対応した3であり、区分レベルには3が設定される。また、解放する塞状態のエクステントを特定する解放区分レベル内の割付番号が、解放番号として与えられているものとする。
図7Aは、本実施形態2における割付要求サイズの区域を取得する処理フロー例の前段を説明する図である。この前段の処理は、割付区分レベルの区域を取得する処理である。
次にステップS702で、最下位ビット位置に割付ビットマップのビット値が1である最も下位のビット位置を設定する。図4Aに示す例では、最下位ビット位置には1が設定される。
次にステップS706に進み、図6を参照して説明した処理により、割付区分レベルの区域を取得し、主区域番号と割付番号を得る。ここでの主区域番号は、図6のステップS601またはステップS607で設定されたものである。また割付番号は、ステップS604で呼び出す図5Cの処理フロー例のステップS526で設定されたものである。
次にステップS710において、ステップS709の処理で割付区分レベルの区域を取得したか判定し、取得していなければ、取得失敗として処理を終了し、取得していれば図7Bに示すステップS711に進む。
ステップS715では、解放区分レベルにビット位置を設定し、ステップS716に進み、解放番号に、割付番号に1を加えた値を設定する。次にステップS717において、図5Dを参照して説明した処理により、主区域番号の指す主区域から解放区分レベルの解放番号の区域を解放し、ステップS717aにおいて、割付番号に、割付番号を2倍した値を設定してステップS720に進む。
以上の処理により要求されたサイズに対応する使用区域の取得と未使用区域の解放が完了する。
図8Aは、実施形態2における取得した割付要求サイズの区域(使用区域)を解放する処理フロー例の前段を説明する図である。図7Bを参照して説明した割付要求サイズの区域の取得結果は解放要求に含まれるものとし、また割付要求サイズも解放要求に含まれるものとすることができる。
次にステップS803で、最下位ビット位置に割付ビットマップのビット値が1である最も下位のビット位置を設定する。図5Aに示す例では、最下位ビット位置には1が設定される。次にステップS804で、最上位ビット位置に割付ビットマップのビット値が1である最も上位のビット位置を設定する。
図8Bは、実施形態2における取得した割付要求サイズの区域(使用区域)を解放する処理フロー例の後段を説明する図である。この後段の処理は、マルチビット要求の使用区域を解放する処理である。
次にステップS809で、割付ビットマップより、ビット位置の指すビット値を取り出し、ステップS810で、該取り出したビット値は1か判定する。ビット値が1でなければステップS811において、解放番号に、解放番号を2倍した値を設定してステップS814に進む。ビット値が1であれば、ステップS813において、スタックに、ビット位置と解放番号を書き込み、ステップS814で、解放番号に、解放番号に値1を加えた値を2倍した値を設定してステップS814に進む。
上述のステップS816~ステップS819のループ処理をスタックが空になるまで繰り返すことにより、割付要求サイズの区域の解放が完了する。
続いてスタックからビット位置3と解放番号0または2を取り出し、解放区分レベルに3を設定し、解放番号0または2の区域を解放する。すなわち区分レベル3の区域1(81b)が解放される。以上の処理により、使用区域を構成していた区域1(81b)と区域3(83b)が解放される。
ステップS904の処理で割付要求区分レベルの区域を取得していなければ、ステップS906に進む。
また、ステップS903で区分レベルはステップS902で設定した主区分レベルより大きいと判定されると、ステップS906に進む。
また、本発明の実施の形態による記憶領域管理方法、記憶領域割付方法及び記憶領域解放方法の各処理の実行手段は、上記プログラムにより、コンピュータ上に実現されることも明らかである。したがって、上記プログラムによりとコンピュータにより、記憶領域管理装置、記憶領域割付装置及び記憶領域解放装置が実現されることも明らかである。
Claims (14)
- 記憶装置の記憶領域管理方法において、
予め割り付けられた記憶領域である区画の割付サイズを取得し、
該割付サイズと、前記区画の割付単位のサイズから互いに異なる2のべき乗の和を算出し、
前記区画を、該算出された互いに異なる2のべき乗のべき乗数毎に該2のべき乗と前記区画の割当単位のサイズの積からなる大きさの記憶領域である主区域に分割し、
前記主区域毎に前記区画を管理することを特徴とする記憶領域管理方法。 - 請求項1に記載の記憶領域管理方法において、
前記区画を前記主区域のサイズの大きさの順に分割することを特徴とする記憶領域管理方法。 - 請求項2に記載の記憶領域管理方法において、前記主区域の先頭アドレスである割付位置と主区域のサイズである割付サイズを、前記区画の割付サイズと前記区画の先頭アドレスから求めて前記主区域毎に保持することを特徴とする記憶領域管理方法。
- 請求項1に記載の記憶領域管理方法により前記区画を分割した主区域から割付要求された記憶領域のサイズである割付要求サイズの記憶領域を割り付ける記憶領域割付方法において、
前記割付要求サイズを含む記憶領域の割付要求を受付け、
前記主区域から前記割付要求サイズを包含する、2のべき乗と区画の割当単位のサイズの積の最小のサイズの空記憶領域を取得し、
前記割付要求サイズを区画の割付単位のサイズで割った値の2進数表示を求め、
前記受け付けた割付要求に対して、該2進数表示でビット1の立っているビット位置毎の2のべき乗と前記区画の割当単位のサイズの積の大きさの記憶領域からなる連続した記憶領域を、前記取得した2のべき乗と区画の割当単位のサイズの積の最小のサイズの空記憶領域に割り付けることを特徴とする記憶領域割付方法。 - 請求項4に記載の記憶領域割付方法において、
前記区画を前記主区域のサイズの大きさの順に分割し、
該分割した主区域のうちサイズの小さい主区域からサイズの大きい主区域に亘って前記2のべき乗と区画の割当単位のサイズの積の最小のサイズの空記憶領域を探索して取得し、該取得した2のべき乗と区画の割当単位のサイズの積の最小のサイズの空記憶領域に前記割付要求されたサイズの記憶領域を割り付けることを特徴とする記憶領域割付方法。 - 請求項5に記載の記憶領域割付方法において、
前記最小のサイズの空記憶領域は、前記分割した主区域のうちサイズの小さい主区域からサイズの大きい主区域に亘って前記各主区域に対応するバディシステムにより探索して取得することを特徴とする記憶領域割付方法。 - 請求項5に記載の記憶領域割付方法において、
前記最小のサイズの空記憶領域は、前記分割した主区域のうちサイズの小さい主区域からサイズの大きい主区域に亘って該最小のサイズの空記憶領域を探索し、すべての主区域において該最小のサイズの空記憶領域を取得できなかったときには、該探索した空記憶領域のサイズの2倍のサイズの空記憶領域を前記分割した主区域のうちサイズの小さい主区域からサイズの大きい主区域に亘って探索することを繰り返すことにより取得することを特徴とする記憶領域割付方法。 - 予め割り付けられた記憶領域である区画から割付要求された記憶領域のサイズである割付要求サイズの記憶領域を割り付ける記憶領域割付方法において、
前記割付要求サイズを含む記憶領域の割付要求を受付け、
前記区画から、前記割付要求サイズを包含する2のべき乗と前記区画の割当単位のサイズの積の最小のサイズの空記憶領域を取得し、
前記割付要求サイズを前記割付単位のサイズで割った値の2進数表示を求め、
前記受け付けた割付要求に対して、該2進数表示でビット1の立っているビット位置毎の2のべき乗と前記割当単位のサイズの積の大きさの記憶領域からなる連続した記憶領域を、前記取得した2のべき乗と区画の割当単位のサイズの積の最小のサイズの空記憶領域に割り付けることを特徴とする記憶領域割付方法。 - 請求項4乃至請求項8のいずれか1項に記載の記憶領域割付方法において、
前記取得した最小のサイズの空記憶領域のうち前記割り付ける記憶領域以外の残りの記憶領域を解放することを特徴とする記憶領域割付方法。 - 請求項9に記載の記憶領域割付方法において、
前記取得した最小のサイズの空記憶領域のうち前記割り付ける記憶領域以外の残りの記憶領域は、バディシステムにより解放することを特徴とする記憶領域割付方法。 - 請求項4乃至請求項10のいずれか1項に記載の記憶領域割付方法により割り付けた記憶領域を解放する記憶領域解放方法において、
前記ビット位置の小さい記憶領域から順に、バディシステムにより解放することを特徴とする記憶領域解放方法。 - 請求項1~請求項11のいずれか1項に記載の方法をコンピュータに実行させるためのプログラム。
- 請求項1~請求項11のいずれか1項に記載の方法をコンピュータに実行させるためのプログラムを記憶したコンピュータ読み取り可能な記憶媒体。
- 予め割り付けられた記憶領域である区画の割付サイズを取得し、該割付サイズと、前記区画の割付単位のサイズから互いに異なる2のべき乗の和を算出し、前記区画を、該算出された互いに異なる2のべき乗のべき乗数毎に該2のべき乗と前記区画の割当単位のサイズの積からなる大きさの記憶領域である主区域に分割し、前記主区域毎に前記区画を管理する、記憶装置の記憶領域管理のための割付区分表のデータ構造において、
前記割付区分表は、前記主区域を識別する主区域番号毎に、該主区域の割付位置とサイズを格納するものであり、
前記主区域毎に記憶領域のバディシステムによる割付管理を可能とする割付管理表のデータ構造。
Priority Applications (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
EP09808021.1A EP2339471A4 (en) | 2008-08-17 | 2009-07-22 | STORAGE REGION MANAGEMENT METHOD, STORAGE REGION ALLOCATION METHOD, AND PROGRAM |
JP2010525569A JP4761590B2 (ja) | 2008-08-17 | 2009-07-22 | 記憶領域管理方法、記憶領域割付方法及びプログラム |
CN200980131921.9A CN102124452B (zh) | 2008-08-17 | 2009-07-22 | 存储区域管理方法、存储区域分配方法以及程序 |
US12/929,813 US9164902B2 (en) | 2008-08-17 | 2011-02-17 | Storage region management method, storage region allocation method and program |
US14/865,977 US9778872B2 (en) | 2008-08-17 | 2015-09-25 | Storage region management method, storage region allocation method and program |
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2008209395 | 2008-08-17 | ||
JP2008-209395 | 2008-08-17 | ||
JP2008264689 | 2008-10-11 | ||
JP2008-264689 | 2008-10-11 |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US12/929,813 Continuation US9164902B2 (en) | 2008-08-17 | 2011-02-17 | Storage region management method, storage region allocation method and program |
Publications (1)
Publication Number | Publication Date |
---|---|
WO2010021085A1 true WO2010021085A1 (ja) | 2010-02-25 |
Family
ID=41706978
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
PCT/JP2009/003452 WO2010021085A1 (ja) | 2008-08-17 | 2009-07-22 | 記憶領域管理方法、記憶領域割付方法及びプログラム |
Country Status (5)
Country | Link |
---|---|
US (2) | US9164902B2 (ja) |
EP (2) | EP3128431A1 (ja) |
JP (1) | JP4761590B2 (ja) |
CN (1) | CN102124452B (ja) |
WO (1) | WO2010021085A1 (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP2631821A1 (en) * | 2011-03-21 | 2013-08-28 | Huawei Technologies Co., Ltd. | File storage method and device thereof |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8538926B2 (en) * | 2011-03-08 | 2013-09-17 | Rackspace Us, Inc. | Massively scalable object storage system for storing object replicas |
CN102981964B (zh) * | 2012-11-01 | 2016-08-03 | 华为技术有限公司 | 数据存储空间的管理方法及系统 |
CN109308267B (zh) * | 2017-07-28 | 2021-12-03 | 星宸科技股份有限公司 | 行车记录器的储存装置的控制方法与储存装置控制系统 |
US10877763B2 (en) | 2018-08-02 | 2020-12-29 | International Business Machines Corporation | Dispatching, allocating, and deallocating instructions with real/virtual and region tags in a queue in a processor |
CN113196757B (zh) * | 2018-12-20 | 2024-04-26 | 瑞典爱立信有限公司 | 用于使用图片中的均匀片段分割进行视频编码的方法和装置 |
US20220244869A1 (en) * | 2021-02-02 | 2022-08-04 | Micron Technology, Inc. | File system storage allocation based on zones of a memory device |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0728693A (ja) | 1993-06-30 | 1995-01-31 | Microsoft Corp | ディスクスペースを管理する変型バデイシステム |
US6131150A (en) * | 1993-10-05 | 2000-10-10 | Digital Equipment Corporation | Scaled memory allocation system |
JP2002202902A (ja) * | 2000-10-27 | 2002-07-19 | Sony Computer Entertainment Inc | パーティション作成方法および削除方法、プログラムを記録した記録媒体、情報処理装置 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7610468B2 (en) * | 2006-10-26 | 2009-10-27 | Hewlett-Packard Development Company, L.P. | Modified buddy system memory allocation |
-
2009
- 2009-07-22 CN CN200980131921.9A patent/CN102124452B/zh active Active
- 2009-07-22 WO PCT/JP2009/003452 patent/WO2010021085A1/ja active Application Filing
- 2009-07-22 JP JP2010525569A patent/JP4761590B2/ja active Active
- 2009-07-22 EP EP16187825.1A patent/EP3128431A1/en not_active Withdrawn
- 2009-07-22 EP EP09808021.1A patent/EP2339471A4/en not_active Withdrawn
-
2011
- 2011-02-17 US US12/929,813 patent/US9164902B2/en active Active
-
2015
- 2015-09-25 US US14/865,977 patent/US9778872B2/en active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0728693A (ja) | 1993-06-30 | 1995-01-31 | Microsoft Corp | ディスクスペースを管理する変型バデイシステム |
US6131150A (en) * | 1993-10-05 | 2000-10-10 | Digital Equipment Corporation | Scaled memory allocation system |
JP2002202902A (ja) * | 2000-10-27 | 2002-07-19 | Sony Computer Entertainment Inc | パーティション作成方法および削除方法、プログラムを記録した記録媒体、情報処理装置 |
Non-Patent Citations (4)
Title |
---|
"METHOD FOR ALLOCATING COMPUTER DISK SPACE TO A FILE OF KNOWN SIZE", IBM TECHNICAL DISCLOSURE BULLETIN, vol. 27, no. 10B, March 1985 (1985-03-01), pages 6260 - 6261, XP002315149 * |
HONG MIN ET AL.: "An Efficient Dynamic Memory Allocator for Sensor Operating Systems", PROCEEDINGS OF THE 2007 ACM SYMPOSIUM ON APPLIED COMPUTING, ACM, - March 2007 (2007-03-01), pages 1159 - 1164, XP008145436 * |
See also references of EP2339471A4 |
TAKU YASUI: "First Study of the Linux Kernel (Part 5 Kernel Memory Management)", NIKKEI LINUX, vol. 6, no. 1, 8 January 2004 (2004-01-08), pages 123 - 130 |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP2631821A1 (en) * | 2011-03-21 | 2013-08-28 | Huawei Technologies Co., Ltd. | File storage method and device thereof |
EP2631821A4 (en) * | 2011-03-21 | 2014-01-08 | Huawei Tech Co Ltd | METHOD FOR STORING FILES AND CORRESPONDING DEVICE |
US10133666B2 (en) | 2011-03-21 | 2018-11-20 | Huawei Technologies Co., Ltd. | File storage method and apparatus |
Also Published As
Publication number | Publication date |
---|---|
JPWO2010021085A1 (ja) | 2012-01-26 |
US9778872B2 (en) | 2017-10-03 |
US20110145538A1 (en) | 2011-06-16 |
CN102124452B (zh) | 2015-01-14 |
EP3128431A1 (en) | 2017-02-08 |
EP2339471A4 (en) | 2013-10-23 |
US20160266837A1 (en) | 2016-09-15 |
EP2339471A1 (en) | 2011-06-29 |
JP4761590B2 (ja) | 2011-08-31 |
US9164902B2 (en) | 2015-10-20 |
CN102124452A (zh) | 2011-07-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4761590B2 (ja) | 記憶領域管理方法、記憶領域割付方法及びプログラム | |
CN108628753B (zh) | 内存空间管理方法和装置 | |
JP6205650B2 (ja) | 不均等アクセス・メモリにレコードを配置するために不均等ハッシュ機能を利用する方法および装置 | |
JP6542909B2 (ja) | ファイル操作方法及び装置 | |
US7933938B2 (en) | File storage system, file storing method and file searching method therein | |
US10191998B1 (en) | Methods of data reduction for parallel breadth-first search over graphs of connected data elements | |
CN103064639A (zh) | 数据存储方法及装置 | |
JP2006195960A5 (ja) | ||
WO2019001020A1 (zh) | 基于分布式系统的存储空间整理方法、装置及系统 | |
CN107193503B (zh) | 一种数据重删方法及存储设备 | |
KR20080060117A (ko) | 파일 시스템 장치 및 그 파일 시스템의 파일 저장 및 파일 탐색 방법 | |
CN104424219B (zh) | 一种数据文件的管理方法及装置 | |
CN109407985B (zh) | 一种数据管理的方法以及相关装置 | |
CN107111627A (zh) | 在线文件系统检查 | |
KR102316271B1 (ko) | 데이터 저장장치의 주소 맵핑 테이블 운용 방법 | |
GB2593408A (en) | Increasing data performance by transferring data between storage tiers using workload characteristics | |
JP5447523B2 (ja) | データ処理装置、データ記録方法、データ記録プログラム | |
WO2016106757A1 (zh) | 一种存储数据的管理方法、存储管理器及存储系统 | |
US9740604B2 (en) | Method for allocating storage space using buddy allocator | |
CN113722319A (zh) | 基于学习索引的数据存储方法 | |
CN107203479B (zh) | 层级化存储系统、存储控制器及层级化控制方法 | |
WO2016191964A1 (zh) | 一种文件系统的管理方法及装置 | |
JP6006740B2 (ja) | インデックス管理装置 | |
CN109582235A (zh) | 管理元数据存储方法及装置 | |
WO2022002128A1 (zh) | 一种读数据的方法、写数据的方法、设备和系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
WWE | Wipo information: entry into national phase |
Ref document number: 200980131921.9 Country of ref document: CN |
|
121 | Ep: the epo has been informed by wipo that ep was designated in this application |
Ref document number: 09808021 Country of ref document: EP Kind code of ref document: A1 |
|
WWE | Wipo information: entry into national phase |
Ref document number: 2010525569 Country of ref document: JP |
|
NENP | Non-entry into the national phase |
Ref country code: DE |
|
REEP | Request for entry into the european phase |
Ref document number: 2009808021 Country of ref document: EP |
|
WWE | Wipo information: entry into national phase |
Ref document number: 2009808021 Country of ref document: EP |