EECS3221 Section E
Operating System Fundamentals
Fall 2020
Project
Organizational, Structural, Logical and Execution Relationships Between Important System
Components in Linux Kernel Subsystems
Due Date: Monday October 19, 2020, 23:59.
A. Description of the Project
You are required to study the important system components, including important data structures, important functions and algorithms, and the various organizational, structural, logical and execution relationships between them, in one or more subsystems of the Linux kernel which provide some basic kernel functionality and clearly explain them.
An important requirement is that you should try to draw as many as possible of your own diagrams, which illustrate, as many as possible of the following information:
A1. The names of the fields that connect the various data structures.
A2. Examples of data values in the various data structures which show their logical and structural connections.
A3. Which part of the system they belong, or are executed in. For example, kernelspace/ user-space; in-memory/on-disk; kernel-mode/user-mode, etc.
A4. Organizational and structural relationships.
A5. Logical relationships.
A6. Flow of execution and/or decision making.
A7. Changes in data values and/or organization structure at different stages of execution. A8. Any other organizational, structural, logical and execution relationships between the system components that may aid understanding of any important aspect of the subsystem(s).
B. Examples of Diagrams of Linux Kernel Components and Their Relationships
Example 1. The diagram illustrating the Linux system structure in Figure 2.13 on page 83 of ¡°Operating System Concepts¡± 10th Edition. This diagram illustrates A4.
Example 2. The diagram illustrating a tree of processes on a typical Linux system in Figure 3.7 on page 116 of ¡°Operating System Concepts¡± 10th Edition. This diagram illustrates A2 and A6.
Example 3. The diagram illustrating process creatiion using the fork() system call in Figure 3.9 on page 119 of ¡°Operating System Concepts¡± 10th Edition. This diagram illustrates A2 and A6.
Example 4. The diagram illustrating in-memory file-system structures. (a) file open. (b) file read in Figure 14.3 on page 569 of ¡°Operating System Concepts¡± 10th Edition. This diagram illustrates A3, A4, A6 and A7.
Example 5. The diagram illustrating the UNIX inode in Figure 14.8 on page 577 of ¡°Operating System Concepts¡± 10th Edition. This diagram illustrates A4.
Example 6. The diagram illustrating interrupt protection levels in Linux in Figure 20.2 on page 794 of ¡°Operating System Concepts¡± 10th Edition. This diagram illustrates A4.
Example 7. The diagram illustrating slab allocator in Linux in Figure 20.5 on page 797 of ¡°Operating System Concepts¡± 10th Edition. This diagram illustrates A4.
Example 8. The diagram illustrating memory layout for ELF programs in Linux in Figure 20.6 on page 802 of ¡°Operating System Concepts¡± 10th Edition. This diagram illustrates A4.
Example 9. The diagram illustrating ext3 block-allocation policies in Linux in Figure 20.7 on page 807 of ¡°Operating System Concepts¡± 10th Edition. This diagram illustrates A4.
Example 10. The diagram illustrating device driver block structure in Linux in Figure 20.8 on page 810 of ¡°Operating System Concepts¡± 10th Edition. This diagram illustrates A4.
Example 11. The diagram illustrating invoking a system call in Figure 10-1 on page 400 of ¡°Understanding the Linux Kernel¡± 3rd Edition. This diagram illustrates A3, A4, A5, A6 and A7.
Example 12. The diagram illustrating the runqueue structure and the two sets of runnable processesin Figure 7-1 on page 268 of ¡°Understanding the Linux Kernel¡± 3rd Edition. This diagram illustrates A1, A2 and A4.
Example 13. The diagram illustrating the flow diagram of the page fault handler in Figure 9-5 on page 378 of ¡°Understanding the Linux Kernel¡± 3rd Edition. This diagram illustrates A5 and A6.
Example 14. The diagram illustrating adding or removing a linear address interval in Figure 9-1 on page 359 of ¡°Understanding the Linux Kernel¡± 3rd Edition. This diagram illustrates A4, A5 and A7.
Example 15. The diagram illustrating data structures for file memory mapping in Figure 16-2 on page 659 of ¡°Understanding the Linux Kernel¡± 3rd Edition. This diagram illustrates A1, A4, and A5.
Example 16. The diagram illustrating kernel components affected by a block device operation in Figure 14-1 on page 561 of ¡°Understanding the Linux Kernel¡± 3rd Edition. This diagram illustrates A4 and A5.
Example 17. The diagram illustrating linking the block device descriptors with the other structures of the block subsystem in Figure 14-3 on page 587 of ¡°Understanding the Linux Kernel¡± 3rd Edition. This diagram illustrates A1, A4 and A5.
Example 18. The diagram illustrating a buffer page including four buffers and their buffer heads in Figure 15-2 on page 615 of ¡°Understanding the Linux Kernel¡± 3rd Edition. This diagram illustrates A1, A4, and A5.
Example 19. The diagram illustrating the most important data structures related to signal handling in Figure 11-1 on page 426 of ¡°Understanding the Linux Kernel¡± 3rd Edition. This diagram illustrates A1, A4 and A5.
All of the diagrams in the book ¡°Understanding the Linux Kernel¡± 3rd Edition are good examples of different types of diagrams that can help readers understand various aspects of how the various subsystems of the Linux kernel that provide some basic kernel functionality works.
C. What to Hand In
1. You are required to hand in an electronic copy of the written report on the project described in A, including all the diagrams you have drawn.
2. You are also required to hand in an electronic copy of the Linux
source code files that relate to the report on the project described in A, further subject to the conditions in 3, 4 and 5 below.
3. In the electronic copy of the Linux source code files, you are required to highlight:
3.1. The data structures and any specific fields of the data structures which are illustrated in your diagrams or explained in your report which describe the data structures, together with a list of the names of the ¡°.h¡± header files and source code line numbers in which they can be found.
3.2. The most important statements in the source code that perform the functions that are illustrated in your diagrams or explained in your report together with the procedure/function names, and a list of the names of the ¡°.c¡± program files and source code line numbers in which they can be found.
4. You are required to provide the Linux kernel version number, and the address of the website where the source code can be found related to the Linux kernel subsystem(s) you have chosen at the beginning of your report.
D. Other Requirements
(a) You should try to organize your report in a way such that it is easy to understand and use. The reader should be able to find information on a particular topic as quickly as possible, and be introduced to important concepts and issues at a “higher level” first, before getting into “lower level” details.
(b) All the drawings must be produced electronically with a drawing program. All the drawings must be accompanied by figure numbers and captions.
(c) The report should contain in-text references to the portions of the highlighted source code in C.3.1. and C.3.2.above that are discussed in the report.
(d) The report must contain a table of contents, and must be clearly divided into sections and subsections, with section and subsection headings. Page numbers must be included.
The format for the references in report, should be similar to the format of the references in the following paper:
http://www.csc.villanova.edu/~nadi/csc8710/papers/nooks.pdf
(e) The report must clearly identify which sources of information you have used in which components of this assignment.
(f) If a good diagram/explanation on some aspect of the Linux kernel system/subsystem under consideration already exists in a book or paper that has been published by a publisher or posted on a website, you may include it together with the other drawings/explanations you have drawn/written yourself in your report, on the condition that you must clearly identify and attribute the source of each original individual existing diagram/explanation that you have either improved upon or included with or without modification; and explain in detail exactly which improvements you have made to the original, if any, in your report.
You may assemble existing diagrams/explanations to form a more complete explanation of one or more subsystems of the Linux kernel, or add your own improvements on existing diagrams/explanations, on the condition that the source of each of the existing diagrams/explanations is clearly identified and attributed, and you clearly identify which particular element(s) of the resulting assembly or particular element(s) of the resulting diagram/explanation are your own work. If you have drawn a diagram or offered a written explanation that cannot be found anywhere else, you should explicitly identify it as such.
(g) For this project, you should use some version of Linux kernel that is not earlier than version 2.6. You should indicate the particular version you are using, e.g., 3.17.3.
(h) The required format when electronically submitting the report is PDF.
E. Evaluation of the Project
The weight of this project is 15% of your final course grade. Your project will be evaluated according to:
(a) The quality, completeness, and originality of the diagrams, including how much information among A1-A8 listed above, have been illustrated for the important system components, including important data structures, important functions and algorithms, and the various organizational, structural, logical and execution relationships between them in the subsystem(s) of the Linux kernel that you have chosen to study.
(b) The overall quality, completeness, and originality of the combined graphical and written explanation, for the important system components, including important data structures, important functions and algorithms, and the various organizational, structural, logical and execution relationships between them in the subsystem(s) of the Linux kernel that you have chosen to study.
(c) The amount of effort and the degree of difficulty of the Linux kernel subsystem(s) involved.
(d) The clarity, readability and organization of the project report and importance/relevance of the highlighted portions of the provided Linux source code.
F. Important Notes
F1. Please note that this project must be completed independently by each student.
F2. Any form of collaboration or any form of collusion between each student and anyone else on this project is strictly forbidden.
F3. Please read very carefully York University Policies and the EECS Department Policies regarding academic dishonesty and plagiarism at: http://www.cse.yorku.ca/admin/coscOnAcadHonesty.html
F3. Please be very vigilant about preventing academic dishonesty and plagiarism when completing this project, as the consequences of violating York University Policies and the EECS Department Policies regarding academic dishonesty and plagiarism can be very serious.
F4. Please note that the due date of Monday October 19, 2020, 23:59 for submitting the project report, CANNOT be extended.
For any special circumstances, properly
complete the “3221E F20 Request for Special Consideration” form and uploaded it to
eClass within the deadlines. By uploading that document properly, the weight of the
missing report will be transferred to that of your final exam. Technical issues with your
computer/internet, or having a heavy workload are not considered as special
circumstances.