In performing memory management, an upgrade client of a host device identifies
and reserves memory blocks large enough to accommodate new software components
by performing sequential searches of first and second memory areas. The new software
components are updated versions of components of original software files. When
the new component size exceeds that of available blocks of the first and second
memory areas, the upgrade client rewrites the first memory area to eliminate unused
memory blocks, reapportions the first and second memory areas, writes the new component
to the second memory area, and updates a vector table. To access host device software
components, the upgrade client receives a function call from the main program of
the host device including identification information of corresponding software
files, reads a start address of the corresponding software files from the vector
table, and generates a call for the corresponding software files.