View Question
 Question
 Subject: Process Address Space Category: Computers > Operating Systems Asked by: siball-ga List Price: \$30.00 Posted: 18 Oct 2005 14:41 PDT Expires: 17 Nov 2005 13:41 PST Question ID: 581839
 ```A certain OS supports four different address spaces for each process, called Sa, Sb, Sc, and Sd. Suppose the memory manager loads the four address spaces into physical memory as shown: Space Physical Memory Location Sa 0x00600000 Sb 0x00180000 Sc 0x01000000 Sd 0x01010000 What is the physical address of each of the following process addresses? a. 0x00456789 in Sa. b. 0x0000089A in Sd. c. 0x00043210 in Sb. d. 0x00010234 in Sc. e. 0x000BCDEF in Sa. f. 0x01010000 in Sd.```
 Subject: Re: Process Address Space Answered By: leapinglizard-ga on 18 Oct 2005 17:08 PDT Rated:
 ```Dear siball, There are two important principles at work here. The first is that a process address is an offset from a physical address. We are given the starting physical address of each process address space, which means that process address 0 has that physical address. For example, process address 0x00000000 in space Sa has physical address 0x00600000. To translate a process address into a physical address, we just add it to the starting physical address. The second important principle is that we are dealing with hexadecimal numbers rather than decimal numbers. There are several ways to perform hexadecimal calculations. You may do so with a scientific calculator, or with a programming language that has built-in support for the hexadecimal number system. Or you can carry out hexadecimal calculations by hand. The method is nearly the same as decimal addition and subtraction, with the difference that numerals top out at E (which denotes 15) rather than at 9. a. The starting physical address of space Sa is 0x00600000, and we are dealing with process address 0x00456789. We add the two together. 0x00600000 + 0x00456789 = 0x00a56789 Thus, the physical address is 0x00a56789. b. 0x01010000 + 0x0000089A = 0x0101089a c. 0x00180000 + 0x00043210 = 0x001c3210 d. 0x01000000 + 0x00010234 = 0x01010234 e. 0x00600000 + 0x000BCDEF = 0x006bcdef f. 0x01010000 + 0x01010000 = 0x02020000 Regards, leapinglizard```
 siball-ga rated this answer: ```Fast response, clear and complete answer. Just what I was looking for. Thank you very much.```

 ```A small correction: Leapinglizard meant to say that when doing hexadecimal arithmetic by hand numerals top out at F, which is equal to 15. Leap said E instead of F.```
 ```Yes, quite right. Thank you. leapinglizard```