Various computers and operating systems in the past have used separate instruction and data spaces, allowing up to 2k program addresses and also 2k data addresses using a k- bit address. For example, for k = 32, a program could access 4 GB of instructions and also 4 GB of data, for a total address space of 8 GB. Since it is impossible for a pro- gram to overwrite itself when this scheme is in use, how could the operating system load programs into memory?