操作系统进程管理课程设计报告

上传人:cl****1 文档编号:552579662 上传时间:2023-08-14 格式:DOC 页数:16 大小:240KB
返回 下载 相关 举报
操作系统进程管理课程设计报告_第1页
第1页 / 共16页
操作系统进程管理课程设计报告_第2页
第2页 / 共16页
操作系统进程管理课程设计报告_第3页
第3页 / 共16页
操作系统进程管理课程设计报告_第4页
第4页 / 共16页
操作系统进程管理课程设计报告_第5页
第5页 / 共16页
点击查看更多>>
资源描述

《操作系统进程管理课程设计报告》由会员分享,可在线阅读,更多相关《操作系统进程管理课程设计报告(16页珍藏版)》请在金锄头文库上搜索。

1、 分析Linux操作系统代码 要求:1、给c语言源程序加上注释, 2、划分程序的模块结构,并画出主要模块的流程图3、用另外一种程序设计语言(java,vb,或c#)实现主要模块的主要功能 南华大学计算机科学与技术学院课程设计报告 ( 20 10 20 11 学年度 第 2 学期 )课程名称操作系统设计题目进程管理专业船本09计算机班级01班分组成员负责任务骆兵 王荣 欧亚琪代码收集和注释刘利霞 肖明星流程图设计总结1.题目要求描述在计算机中要执行一个程序,首先将程序的代码从硬盘读入到内存,然后CPU根据程序代码指令一条一条的执行,而这时候的程序就叫进程,计算机中同时存在多个进程在等待被执行,比

2、如你在用window/Linux上网的时候,你一边用QQ和朋友聊天,一边在用MP3播放器听音乐,一边在浏览网页.那么这时候在计算机中就有三个进程在同时运行,一是QQ进程,二是MP3播放器进程,三是浏览器进程.但是计算机中只有一个CPU,在一个时间点上,它只能运行一个进程的指令,比如在2005/11/29/日 08/23/42/秒时计算机的CPU执行的是QQ进程的一条加法(mov)指令.那么计算机是怎样让三个进程同时运行起来的呢(至少我们看来是这样).在计算机内部所有的正在运行的进程都在等待被CPU执行,操作系统按一定的规律让所有的进程都得到CPU的执行.方法是一会儿让QQ进程执行,过了一定时间

3、后又让MP3播放器进程得到CPU的执行,再过一定时间后让浏览器进程得到CPU的执行.相对于人的反应,CPU的执行速度太快,所以人根本感觉不到这些进程的切换过程,也不会对人的操作产生影响现在的问题是操作系统是按照什么样的规律给个各进程分配CPU资源的.操作系统是按照个各进程的属性来分配CPU资源的.那进程的属性在什么呢?当操作系统创建一个进程时都就为这个进程分配了一定的内存空间来存放它的属性.在Linux操作系统中,操作系统定义了一个数据结构task_struct来描述各个进程的进程属性,task_struct结构叫进程控制块(PCB), 它是操作系统中重要的数据结构之一.具体定义在中,注意在L

4、inux操作系统中所有的操作系统源代码都在/usr/src目录下.2.程序流程图和源程序(源码分析) Linux进程调度,系统管理 继续监听 Linux进程管理命令 Linux进程管理以及文本编辑3.程序设计task_struct结构的代码如下所示:/include/linux/sched.h struct task_struct volatile long state; /* 进程的状态,在代码后面有说明*/unsigned long flags; /* 进程标志 */int sigpending; mm_segment_t addr_limit; /* 线性地址空间: 0-0xBFFFFF

5、FF 为用户线性空间地址; 0-0xFFFFFFFF 为内核线性空间地址 */struct exec_domain *exec_domain; volatile long need_resched; unsigned long ptrace; int lock_depth; long counter; /* 进程的动态优先级,在代码后面有说明 */long nice; /* 进程的静态优先级,在代码后面有说明 */unsigned long policy; /* 进程采用的调度策略,在代码后面有说明 */struct mm_struct *mm; /* 进程属性中指向内存管理的数据结构mm_s

6、tructd的指针,在代码后面有说明 */int has_cpu, processor; unsigned long cpus_allowed; struct list_head run_list; unsigned long sleep_time; struct task_struct *next_task , *prev_task; /* 所以进程通过这两个指针组成一个双向链表*/struct mm_struct *active_mm; /* 指向活动地址空间,在后面的代码有说明 */ /* task state */struct linux_binfmt *binfmt; int exi

7、t_code, exit_signal;int pdeath_signal; unsigned long personality; int did_exec:1; int dumpable:1; pid_t pid; /* 进程标志符,在代码后面有说明 */pid_t pgrp; /* 进程组标号,在代码后面有说明 */pid_t tty_old_pgrp; pid_t session; pid_t tgid; int leader; struct task_struct *p_opptr, *p_pptr, *p_cptr, *p_ysptr, *p_osptr; /* 这五个标志表示一个进

8、程的在计算机中的亲属关系,分别标志祖先进程,父进程,子进程,弟进程和兄进程,为了在两个进程之间共享方便而设立 */struct list_head thread_group; struct task_struct *pidhist_next; struct task_struct *pidhist_pprev; /* 上面两个指针是为了在计算机中快速查一个进程而设立,具体方式以后讲*/wait_queue_head_t wait_chldexit; struct completion *vfork_sem; unsigned long rt_priority; /* 实时进程的优先级标志*/

9、unsigned long it_real_value, it_prof_value, it_virt_value; unsigned long it_real_incr, it_prof_incr, it_virt_incr; struct timer_list real_timer; struct tms times; struct tms group_times;unsigned long start_time; long per_cpu_utimeNR_CPUS, per_cpu_stimeNR_CPUS; unsigned long min_flt, maj_flt, nswap,

10、cmin_flt, cmaj_flt, cnswap; int swappable:1; uid_t uid,euid,suid,fsuid; gid_t gid,egid,sgid,fsgid; int ngroups; gid_t groupsNGROUPS; kernel_cap_t cap_effective, cap_inheritable, cap_permitted; int keep_capabilities:1; struct user_struct *user; struct rlimit rlimRLIM_NLIMITS; unsigned short used_math

11、; char comm16; int link_count; struct tty_struct *tty; /* NULL if no tty */unsigned int locks; /* How many file locks are being held */struct sem_undo *semundo; struct sem_queue *semsleeping; struct thread_struct thread; struct fs_struct *fs; /* 进程属性中指向和文件管理有关的数据结构*/ struct files_struct *files; spin

12、lock_t sigmask_lock; struct signal_struct *sig; sigset_t blocked; struct sigpending pending; unsigned long sas_ss_sp; size_t sas_ss_size; int (*notifier)(void *priv); void *notifier_data; sigset_t *notifier_mask; u32 parent_exec_id; u32 self_exec_id; spinlock_t alloc_lock; spinlock_t switch_lock;程序说

13、明如下: volatile long state 定义了进程的状态,进程总共有6种状态标志,分别是:一. TASK_RUNING. (正在运行状态或者是可运行状态)二. TASK_INTERRUPTIBLE,(可打断睡眠状态)三. TASK_UNINTERRUPTIBLE,(不可打断睡眠状态)四. TASK_ZOMBLE. (僵死状态)五. TAKS_STOPPED.(暂停状态)六. 交换状态.这六种属性标志了此进程现在的状态,各种不同的状态决定了进程什么时候获得CPU而被执行.正在运行状态是当前正在运行进程的状态.也就是说他的volatile long state被标志成TASK_RUANI

14、NG.可运行状态是那些正在等待CPU资源的进程的状态,这些进程在就绪队列run-queqe中.这些进程只要得到CPU在个资源就马上可以被运行.其也标志也为TASK_RUANING.可打断睡眠状态是哪些在等待队列中等待除CPU之外的其它资源的进程,只要它们所等待的资源到达就马上可以从等待队列进入就绪队列,状态标志也从TASK_INTERRUPTIBLE状态变成TASK_RUANING可运行状态.不可打断睡眠状态和可睡眠状态类似,区别在于前者可以用信号唤醒,而后者不可以.僵死状态是标志那些已经运行完毕释放了大部分资源并退出但还没有释放进程控制快task_struct的进程.暂停状态是那些遇到突发情

15、况或者收到暂停信号而暂时停止运行的进程的状态. counter是进程的动态优先级,它定义了一个在就绪队列的进程当它得到CPU后可运行的时间,用静态优先级初始化,当然计算机是以时钟中断做为时间的计数器,每发送一个时钟中断,动态优先级上的时间片就减少一个时钟中断的时间,时间片减到0的时候就退出该进程而调度另一个进程获得CPU. nice是进程的静态优先级,当一个在就绪队列中的进程获得CPU之后,它被赋予此进程可占有CPU的时间.这个时间被称为时间片. policy是进程的调度策略标志.有三种调度标志: SCHED_OTHER 普通进程的调度策略,基于优先权的轮转法. SCHED_FIFO 实时进程的调度策略,基于先进先出的算法. SCHED_RR

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 工作计划

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号