binary
PROGRAM
It must be loaded into RAM and assigned memory addresses
It must be loaded into RAM and assigned memory addresses
It must be loaded into memory. Then, if it uses dynamic binding, it must be bound to its imported symbols.
I'm guessing RAM Random access memory
Relocation Correct starting address when a program should start in the memory. Different jobs will run at different address . When a program is linked , the linker must known at what address the program will begin in memory .
All programs must be loaded into memory (e.g., RAM) in order to be executed. Compiled programs can be loaded directly since they consist of native machine instructions, but interpreted programs must be translated by a runtime program. E.g., Java is an interpreted language which compiles to byte code which must be interpreted by the Java Virtual Machine implementation at runtime.
No. The program counter must be stored in a dedicated register. The stack is in working memory and you cannot operate on working memory; all values must be moved into a register in order to operate upon them. It makes no sense to move a program counter in and out of memory unless performing a context switch and you can't use a stack for context switching; a priority queue must be used for this. Keep in mind that the address of the top of the stack has to be moved in and out of its register during a context switch. It doesn't make sense to load the stack register from a priority queue before you can determine where the program counter value is. It's easier to keep all state information in the same place in the priority queue where it belongs.
RAM, Random Access Memory is the Volatile memory; Which in return means that when you shut off your computer this memory will be completely wiped
Long-term potentation
Program data can be stored in the program's data segment, on the stack or on the heap. Constants, static variables and global variables are always stored in the program's data segment. Local variables are always stored on the stack. Dynamic variables are always stored on the heap. User data is typically stored in files, but those files could exist literally anywhere, such as a local hard-disk drive, a file-server or "the cloud". However, data must be brought into working memory in order to operate upon it. Small amounts of data can be allocated within the data segment via static variables but generally you will use the heap. If the data is too large to fit into working memory all at once, use one or more temporary files on one or more local hard-disk drives and pull in what you need as and when you need it.
C++ programs are not stored in memory (RAM) they are stored on mass storage devices (usually disk drives). When compiled, they produce machine code programs which contain machine instructions and their operands. These are also stored on mass storage devices, but when loaded into memory the machine instructions are executed by the CPU.