Question: Linux Kernel Module - Page Table Walker Objective The purpose of this assignment is to gain experience writing code that executes in kernel (protected) mode

Linux Kernel Module - Page Table Walker

Objective

The purpose of this assignment is to gain experience writing code that executes in kernel (protected) mode in Linux by implementing a Linux Kernel Module. It is best to complete this assignment on a virtual machine. In case of problems, it is easier to restart a virtual machine, than to restart the host system.

The goal of the assignment is to build a kernel module that traverses the list of running processes and generates report that displays the process ID, process name of all processes with PID > 650, and the total number of pages allocated in memory. This report output from the kernel module should be made to the kernel log files (/var/log/syslog in Ubuntu) and to a Linux proc file under the /proc directory.

The extra creditgoes to the extra information in the report that show the number of pages that are allocated contiguously vs. non-contiguously in physical memory for each process.

Sample Output

Output should be generated in comma separated value (CSV) format. The columns contig_pages and noncontig_pages are optional.

The first line says PROCESS REPORT:. The second line is a comma-separated header line describing the columns. The columns are proc_idfor the process ID, proc_namefor the process name (the comm field of task_struct), and total_pageswhich is the total number of memory pages allocated (i.e., in use) for the process.

Optionalcolumns include: contig_pageswhich is the number of contiguous pages, and noncontig_pageswhich is the number of non-contiguous pages.

The last line of the report is optional. The last line displays TOTALSin the first cell, a blank value in the second cell and provide a sum of the total number of contiguous pages, total number of non-contiguous pages, and the total number of pages for all processes with PID > 650.

Document Preview:

TCSS 422 Operating Systems Instructor: Juhua Hu Assignment 3 Linux Kernel Module - Page Table Walker Objective The purpose of this assignment is to gain experience writing code that executes in kernel (protected) mode in Linux by implementing a Linux Kernel Module. It is best to complete this assignment on a virtual machine. In case of problems, it is easier to restart a virtual machine, than to restart the host system. The goal of the assignment is to build a kernel module that traverses the list of running processes and generates report that displays the process ID, process name of all processes with PID > 650, and the total number of pages allocated in memory (NOTE: not every page in the virtual address space is currently allocated in the physical memory). This report output from the kernel module should be made to the kernel log files (/var/log/syslog in Ubuntu). The extra credit goes to the extra information in the report that show the number of pages that are allocated contiguously vs. non-contiguously in physical memory for each process. Sample Output Output should be generated in comma separated value (CSV) format. The columns contig_pages and noncontig_pages are optional. The first line says PROCESS REPORT:. The second line is a comma-separated header line describing the columns. The columns are proc_id for the process ID, proc_name for the process name (the comm field of task_struct), and total_pages which is the total number of memory pages allocated (i.e., in use) for the process. Optional columns include: contig_pages which is the number of contiguous pages, and noncontig_pages which is the number of non-contiguous pages. The sum of these two must be equal to the total_pages. 1TCSS 422 Operating Systems Instructor: Juhua Hu...

Attachments:

Step by Step Solution

There are 3 Steps involved in it

1 Expert Approved Answer
Step: 1 Unlock blur-text-image
Question Has Been Solved by an Expert!

Get step-by-step solutions from verified subject matter experts

Step: 2 Unlock
Step: 3 Unlock

Students Have Also Explored These Related Programming Questions!