Project 1 CPU Scheduling Evaluation, In this project, you need to write a program to simulate the scheduling of CPU. The program will randomly generate process CPU burst based on user’s setting. Performance is measured and analyzed in a report. No specific time unit is needed; we use integer number to represent time. You can select any programming language for the program. You need to implement the simulation environment to simulate time and events. Input of the program: How long is the simulation (integer) Probability of one process’s arrival in one time unit (float number between 0 and 1) Minimum and maximum process burst time (integers) Switching latency (non-negative integer) Scheduling algorithm ( FCFS, non-preemptive SJF, Round Robin) (Bonus  preemptive SJF)  Time quantum (integer, for Round Robin algorithm only) Measurement: Average waiting time CPU utilization (1 - switching_latency/overall_time) Report:  Compare the algorithms under different simulation settings (burst size, arrival frequency, quantum size, latency size). Organize the results in a report about 2-3 pages and try to give explanation about the results. Submission: Source code Report  Readme file  Project 2: A Program Simulating Modified MARIE’s Computer Language: Any computer language Input: A text file containing decimal (not Hex) machine code (not assembly code) for MARIE’s computer following instruction set described in chapter 4. Instructions are in different lines (no need for semicolon at the end of each instruction) Dec Output: Any output specified in the input file by 6000 will be displayed on screen  Computer specification: Generally the same as in chapter 4:  1000 memory address: 000—999  Four digits decimal instruction or data in each memory slot.  One PC, one AC, one IR, one MBR, one MAR  The program in the input file needs to be loaded into memory first and stored in consecutive slots starting from address 000   Instruction 5000 will ask user’s input from keyboard, 6000 displays content in calculator   Instruction 8000 will skip next instruction if AC<0.   Instruction 8100 will skip next instruction if AC=0.  Instruction 8200 will skip next instruction if AC>0  Other requirements: Your program should accept any length of input program that can be fit in MARIE’s 1000 memory slots and generate correct result and/or output on screen. Submit the source code together with readme file with instruction to compile, build and use your program Example: Input file contains following code (return positive difference): 5000 2011 5000 2012 4011 8000 9009 1011 4012 6000 7000 Running of the program with this input will ask user to input 2 numbers, let's say 5 and 10, the program will output the positive difference on the screen, which is 5. Address Content Comment 000 5000 Input the first number 001 2011 Save the first number to address 011 002 5000 Input the second number 003 2012 Save the second number to address 012 004 4011 Second number – First number, result in AC 005 8000 If AC<0 jump to address 007 006 9009 Jump to address 009 007 1011 Load the first number to AC 008 4012 First number – second number, result in AC 009 6000 Print AC’s value 010 7000 Halt 011 Storage for first number 012 Storage for second number