I have been asked whether I expect you to write two versions of "cpu.c" or only one. Here's my suggestion. Use "ifdef" blocks in the "cpu.c" code, one to compile code for the FCFS and one to compile code for the RR code that you write. Control which of the blocks gets compiled by supplying the compiler with different symbols. That way, you only need to have one file for the code for both versions, and thus only one set of data structures and such. If you do separate files, you will probably wind up going back and forth from one to the other correcting or improving the data structures and the control. You don't need that extra headache.