1. (a) What is trashing and list possible causes of thrashing.
(b) How does the operating system detect thrashing and what can it do to eliminate thrashing?
2. The given program simulates the effect of changing page sizes in a demand paging system. The following sequence of request is taken from 460-word program: 10, 11, 104, 170, 73, 309, 185, 245, 246, 434, 458, 364.
Main memory can hold total of 200 words for this program and the page frame size will match the size of pages into which the program has been divided. The page numbers are calculated according to the page size; divide by the page size, and the quotient gives the page number. The number of page frames in memory is the total number, 200, divided by page size.
(i) What does function int find_page_in_memory(int page, Memory * memory) do?
(ii) Which memory allocation scheme is used in the program? Explain how it is implemented.
(iii) What is the use of struct in the program?
(i) Add some code in the program to find the success frequency or the percentage of successful request hit?
(ii) Find the success frequency for 100-words, 50-words, and 200-words. What conclusion can you make?
(iii) What do you think will happen if more memory were given to the program?
(a) Modify the program so that it uses the Least Recently Used page replacement algorithm.
(b) Find the success frequency of the new algorithm by repeating question 2 (b) (ii).
(c) Compare the results of the two algorithms.
(d) Assuming that you are developing a new operating system (for the present days applications), what type of memory allocation scheme you would use and why? Note: Marks will be awarded based on your creativity and suggestions (which should be beyond your text books).