1、 计算机与通信工程学院计算机与通信工程学院 操作系统操作系统课程设计课程设计 设计题目设计题目 Linux 页面换入换出分析、 进程管理器 专业名称 计算机科学与技术 班级学号 2143521 学生姓名 指导教师 设计时间 2017.1.12017.1.7 课程设计任务书课程设计任务书 设计题目:设计题目:Linux页面换入换出分析、进程管理器 一、设计实验条件一、设计实验条件 Ubuntu Kylin 16.04, Visual Studio 2015 二、设计任务二、设计任务及要求及要求 1. 必做题目:Linux页面换入换出分析。 要求:分析 Linux 内核对页面换入换出地实现。说明主
2、要函数的功能及相互间 地调用关系。画出换入换出流程图,并用文字加以说明。 2. 选作题目:进程管理器 设计任务:在 Linux 或 Windows 系统环境下,实现一个系统进程管理器,能 够显示当前系统的活动进程信息(进程名、用户、优先级、内存使用等) ,并 能结束或创建特定进程。可参考 Windows 下“任务管理器”功能。 三、设计三、设计报告报告的内容的内容 1. 设计题目与设计任务设计题目与设计任务 Linux页面换入换出分析 要求:分析 Linux 内核对页面换入换出地实现。说明主要函数的功能及相 互间地调用关系。画出换入换出流程图,并用文字加以说明。 进程管理器 设计任务:在 Li
3、nux或 Windows 系统环境下,实现一个系统进程管理器, 能够显示当前系统的活动进程信息(进程名、用户、优先级、内存使用等) , 并能结束或创建特定进程。可参考 Windows 下“任务管理器”功能。 2. 前言前言 Linux页面换入换出分析 目的与意义:深入理解 Linux 内核中换入换出的操作,对操作系统虚拟存 储器操作有进一步认识。 进程管理器 目的与意义:深入理解操作系统进程管理的原理 3. 设计设计主体主体 Linux页面换入换出分析 换出的流程图: kswapd_init(void) /*系统初始化期间调用*/ Kswapd(void*) swap_setup() /*根据
4、物理内存的大小设 定一个全局量 page_cluster*/ Kswapd_thread(int) /*创建kswapd线程*/ Free_shortage() 无内存 Inactive_shortage() Waitqueue_active(wait _queue_head_t*) 有内存 Do_try_to_free_pages( unsigned,int) Page_launder() Shrink_dcache_mem ory() Shrink_icache_mem ory() Refill_inactive() Kmem_cache_reap() Refill_inactive_sc
5、an(int, int) Interruptible_sleep_on _timeout(kswap*,int) 图中的相关代码: = mm/vmscan.c 1146 1153 = 1146 static int _init kswapd_init(void) 1147 1148 printk(“Starting kswapd v1.8n“); 1149 swap_setup(); 1150 kernel_thread(kswapd, NULL, CLONE_FS | CLONE_FILES | CLONE_SIGNAL); 1151 kernel_thread(kreclaimd, NUL
6、L, CLONE_FS | CLONE_FILES | CLONE_SIGNAL); 1152 return 0; 1153 = mm/swap.c 293 305 = kswapd_init()swap_setup() 293 /* 294 * Perform any setup for the swap system 295 */ 296 void _init swap_setup(void) 297 298 /* Use a smaller cluster for memory PAGE_SHIFT) 300 page_cluster = 2; 301 else if (num_physpages PAGE_SHIFT) 302 page_cluster = 3; 303 else 304 page_cluster = 4;