1460757792-ca0b0d9f-a663-4dbd-9f69-091b5eabfea5

1. A write memory block allocating method of a memory controller configured to control a flash memory, comprising:
generating a main pre-allocation table including allocation order information of a pre-allocated memory block included in the flash memory;
storing the main pre-allocation table in a meta area of the flash memory;
storing a pre-allocation table in a Random Access Memory (RAM) of the memory controller by reading the main pre-allocation table at the meta area of the flash memory;
receiving a write request from a host;
determining whether a write memory block for the write request can be allocated according to the pre-allocation table; and
allocating the pre-allocated memory block as the write memory block according to the pre-allocation table when the write memory block can be allocated according to the pre-allocation table.
2. The write memory block allocating method of claim 1, further comprising allocating a free memory block included in the flash memory as the write memory block when the write memory block cannot be allocated according to the pre-allocation table, wherein the pre-allocation table does not include allocation order information of the free memory block.
3. The write memory block allocating method of claim 2, further comprising flushing a physical address and a logical address of the pre-allocated memory block to a main mapping table in the meta area of the flash memory when the free memory block is allocated as the write memory block.
4. The write memory block allocating method of claim 3, further comprising deleting allocation order information of the pre-allocated memory block from the pre-allocation table.
5. The write memory block allocating method of claim 4, further comprising generating an updated pre-allocation table after deleting allocation order information of the pre-allocated memory block from the pre-allocation table.
6. The write memory block allocating method of claim 5, further comprising flushing the updated pre-allocation table to the main pre-allocation table.
7. The write memory block allocating method of claim 1, further comprises:
determining whether the write request is for a new logical unit when the write memory block cannot be allocated according to the pre-allocation table; and
allocating a free memory block as the write memory block according to a tail-trail table when the write request is not for a new logical unit, wherein the pre-allocation table does not include allocation order information of the free memory block, and the tail-trail table includes a physical address and identification information of a logical unit of the free memory block.
8. The write memory block allocating method of claim 7, further comprising storing the tail-trail table in the RAM of the memory controller.
9. The write memory block allocating method of claim 1, further comprising allocating a free memory block as the write memory block when the write request is for a new logical unit, wherein the pre-allocation table does not include allocation order information of the free memory block.
10. The write memory block allocating method of claim 9, further comprising allocating a free memory block as the write memory block according to a tail-trail table or allocating the pre-allocated memory block as the write memory block according to the pre-allocation table when the write request is not for a new logical unit.
11. The write memory block allocating method of claim 1, further comprising:
recovering a mapping table from the memory controller using the main pre-allocation table and a main mapping table in the meta area of the flash memory.
12. A storage device comprising:
a flash memory comprising a user area and a meta area; and
a memory controller configured to control the flash memory,
wherein the memory controller is configured to allocate one of a plurality of memory blocks comprising the user area of the flash memory as a write memory block according to a pre-allocation table when a write request is received from a host, and wherein the pre-allocation table, in a Random Access Memory (RAM) in the memory controller, includes allocation order information of the one of the plurality of memory blocks.
13. The storage device of claim 12, wherein a main pre-allocation table is in the meta area of the flash memory.
14. The storage device of claim 12, wherein the RAM further comprises a tail-trail table and the memory controller is configured to allocate an other of the plurality of memory blocks comprising the user area of the flash memory as a write memory block according to the tail-trail table when a write request not for a new logical unit is received from the host, and wherein the tail-trail table includes a physical address and information of a logical unit of the other of the plurality of memory blocks.
15. A write memory block allocating method of a storage device, comprising:
storing a pre-allocation table in a controller, a non-volatile memory integrated circuit (IC) including the first and second memory blocks and the pre-allocation table including allocation order information of a first memory block and excluding allocation order information of a second memory block;
receiving a write request for a logical unit from a host;
allocating the first memory block as a write memory block for the write request according to the pre-allocation table or allocating the second memory block as the write memory block for the write request; and
storing a mapping data in a mapping table at the controller when the second memory block is allocated as the write memory block, the mapping data including a physical address and a logical address of the second memory block.
16. The method of claim 15, the method further comprising:
flushing the mapping table from the controller to a main-mapping table in the non-volatile memory IC after storing the mapping data in the controller.
17. The method of claim 15, wherein the first memory block comprises one memory block or a plurality of memory blocks included in the non-volatile memory IC, and allocating the second memory block as the write memory block is performed after allocating all of the first memory block as write memory blocks according to the pre-allocation table.
18. The method of claim 15, wherein the second memory block is one among a plurality of second memory blocks, the write request comprises a first write request, and the method further comprises:
receiving a second write request for the logical unit after receiving the first write request;
selecting a next write memory block among remaining un-allocated ones of the plurality of second memory blocks; and
storing a physical address of the next write memory block in the write memory block allocated in response to the first write request.
19. The method of claim 18, further comprising:
storing a tail-trail table at the controller, the tail-trail table including the physical address of the next write memory block and identification information for the logical unit;
receiving a third write request for the logical unit after receiving the second write request; and
allocating the next write memory block as a new write memory block according to the tail-trail table.
20. The method of claim 15, further comprising:
generating a main pre-allocation table at the controller;
storing the main pre-allocation table in the non-volatile memory IC; and
storing the pre-allocation table in the controller by scanning the main pre-allocation table in the non-volatile memory IC.

The claims below are in addition to those above.
All refrences to claim(s) which appear below refer to the numbering after this setence.

1. A method for obtaining color consistency over at least one printing system in order to print a digital image containing pixels and color information of the primary colors per pixel, each printing system comprising at least one engine, the engine comprising a plurality of containers, each of the plurality of containers containing a marking material having a primary color, said method comprising the steps of, for each primary color:
determining a target color that is printable by each of the at least one engine on a receiving medium;
determining, for each of the plurality of containers, how much marking material must be ejected to establish a target color; and
for each pixel of the digital image to be printed by an engine:
replacing each primary color of the pixel by a corresponding target color; and
printing the pixel by ejecting marking material from the plurality of containers of the engine according to the determined marking material per target color per container of the engine.
2. The method according to claim 1, wherein each target color is determined by taking a worst case color printable by each of the at least one engine.
3. The method according to claim 1, wherein each of the at least one engine comprises a calibration card comprising colors corresponding to the primary colors to be printed and the method further comprises the step of determining for each primary color the target color by measuring the corresponding color from the calibration card and taking the measured color as the target color for the corresponding primary color.
4. The method according to claim 2, wherein each of the at least one engine comprises a calibration card comprising colors corresponding to the primary colors to be printed and the method further comprises the step of determining for each primary color the target color by measuring the corresponding color from the calibration card and taking the measured color as the target color for the corresponding primary color.
5. A printer comprising a processor unit and a print engine, wherein the processor unit is configured to carry out the determining and replace steps and the print engine is configured to carry out the printing step of the method according to claim 1.
6. A computer program comprising computer program code embodied on a non-transitory computer readable medium to enable a printer to execute the method of claim 1.