操作系统课程设计报告
- 格式:doc
- 大小:149.00 KB
- 文档页数:26
计算机科学与技术课程设计操作系统实践报告下载温馨提示:该文档是我店铺精心编制而成,希望大家下载以后,能够帮助大家解决实际的问题。
文档下载后可定制随意修改,请根据实际需要进行相应的调整和使用,谢谢!并且,本店铺为大家提供各种各样类型的实用资料,如教育随笔、日记赏析、句子摘抄、古诗大全、经典美文、话题作文、工作总结、词语解析、文案摘录、其他资料等等,如想了解不同资料格式和写法,敬请关注!Download tips: This document is carefully compiled by the editor. I hope that after you download them, they can help you solve practical problems. The document can be customized and modified after downloading, please adjust and use it according to actual needs, thank you!In addition, our shop provides you with various types of practical materials, such as educational essays, diary appreciation, sentence excerpts, ancient poems, classic articles, topic composition, work summary, word parsing, copy excerpts, other materials and so on, want to know different data formats and writing methods, please pay attention!在计算机科学与技术领域,操作系统一直是一个具有重要意义的研究课题。
第1篇一、引言随着计算机技术的飞速发展,操作系统作为计算机系统的核心组成部分,其重要性日益凸显。
为了更好地理解和掌握操作系统原理与设计,提高实际操作能力,我们参加了操作系统实践教学课程。
本报告将详细阐述本次实践教学的背景、过程、收获及心得体会。
二、实践背景1. 课程设置:本次实践教学课程旨在通过实际操作,使学生深入了解操作系统的基本原理、功能模块和设计思想,提高学生的实际操作能力和解决实际问题的能力。
2. 实践内容:本次实践教学主要包括以下几个方面:(1)操作系统原理学习;(2)操作系统源代码分析;(3)操作系统实验项目设计与实现;(4)操作系统课程设计。
三、实践过程1. 操作系统原理学习:通过阅读教材、参考书籍和观看相关视频,系统地学习了操作系统的基本原理,包括进程管理、内存管理、文件系统、设备管理、I/O系统等。
2. 操作系统源代码分析:选取了Linux操作系统作为实践对象,分析了其源代码结构、关键模块和设计理念,深入了解操作系统的内部实现。
3. 操作系统实验项目设计与实现:根据课程要求,完成了以下实验项目:(1)进程调度算法实现:实现了多种进程调度算法,如先来先服务(FCFS)、短作业优先(SJF)、轮转调度(RR)等,并对比了它们的性能;(2)内存分配与回收算法实现:实现了多种内存分配与回收算法,如固定分区分配、动态分区分配、最坏适应分配、最佳适应分配等,并分析了它们的优缺点;(3)文件系统实现:实现了简单的文件系统,包括文件创建、删除、读写等操作,了解了文件系统的基本原理。
4. 操作系统课程设计:根据课程要求,独立完成了操作系统课程设计,实现了具有基本功能的简易操作系统。
四、收获与体会1. 理论与实践相结合:通过本次实践教学,使我深刻认识到理论知识与实践操作的重要性。
只有将所学知识运用到实际操作中,才能真正掌握操作系统的原理与设计。
2. 提高编程能力:在实践过程中,我学会了如何运用C语言等编程语言实现操作系统功能,提高了自己的编程能力。
《操作系统原理及应用》课程设计报告 Linux系统服务管理及安全设计学院(系): 计算机科学与工程学院班 级: 学号学生姓名:指导教师:时间: 从 2012 年 05 月14日 到 2012 年05月18日一、课程设计的目的本课程设计是学生学习完《计算机操作系统》课程后,进行的一次全面的综合训练,通过课程设计,让学生更好地掌握操作系统的原理及Linux安全服务管理,加强学生的动手操作能力。
二、课程设计要求设计一套安全的系统 Linux要求:1. 系统不能被破解密码;2. 系统不能被恶意重启;3. 只有指定用户才能ssh 登录系统,保障系统安全;4. 编写防火墙策略,保障系统安全,只开放允许访问的tcp 22, tcp 80,tcp 20 21;5.搭建一个Web网站;6.编写shell程序,阻止恶意攻击服务器的来源IP,连接服务器.三、课程设计内容3.1、 Redhat 基础及权限控制Linux 安装中的重要步骤:引导安装程序、磁盘分区、网络参数配置、密码设置、软件包选择Linux 系统引导过程:服务器硬件自检、引导MBR、引导Kernel、引导驱动及服务、自定义加载项、6种引导方式介绍(/etc/inittab)Linux root 密码破解:单用户模式,进行root密码破解Linux 加密防止 root 密码破解:明文加密 (password) 、非明文加密 (grub-md5-crypt )Linux防止恶意重启:禁用ctrl+alt+del 重启功能 (/etc/inittab)Linux文件权限数字表示:可读 R 4、可写 W 2、可执行 X 1Linux文件权限调整:修改所有者 chown 、修改权限 chmodLinux网络参数配置:网络IP地址配置、同一网卡配置多个IP地址Linux查看IP及route:Ipconfig、 ip add、route -nLinux常用命令文件管理类:ls cat more vi cp rm find paste wc grep head tail 磁盘管理:df du fdisk mkfs mount umount系统状态:uptime last vmstat iostat top free3.2、 软件管理及Shell编程Linux rpm 包的管理 :软件包安装、软件包升级、查询已安装的软件包Linux 源码包的管理 :源码包安装、configure、make、make test、make install、源码包删除Linux 文本处理 :文本编辑器、 vi 编辑器Linux Shell编程中常用命令条件测试:test 或者 []、-d 目录、-f 文件、-s 文件大小非0正则表达示:^ 行首、$ 行尾、以 $ 打头的命令、$? 上一个命令执行结果、$1 输入的第1个参数3.3、存储管理及系统管理Linux 系统常用服务管理 :常用系统服务启动与关闭、系统设置 服务器设置 服务常用系统服务介绍Network 网络服务、sshd ssh 远程连接服务Httpd Apache Web 服务器、Smb 文件共享服务器Vsftp FTP 服务器、Bind DNS 服务器Iptables 防火墙、Linux 进程管理进程查看 top , ps –ef 结束进程 Kill id、Kill –9 idLinux 文件系统管理磁盘分区、fdisk 、格式化分区、mkfs.ext3 、挂载分区、mount、卸载分区、umountLinux 卷管理 LVM磁盘分区 fdisk (disk type id: 8e)建立 PV pvcreate pvdispaly建立 VG vgcreate vgchange -a y (激活VG) vgdisplay建立 LV lvcreate lvdisplay格式化LV make.ext3挂载 LV mount缷载LV umountLinux 系统管理 :以图形化的形式 讲解常用系统管理 、用户和组 、日期和时间、显示Linux 系统日志管理系统日志文件位置 、/var/log/message观察日志变化、tail -f /var/log/message筛选日志内容、grep “error” /var/log/message3.4、常用服务器搭建、安全配置Linux openSSH 安全配置 (/etc/ssh/sshd_config )修改SSH服务端口:# Port 22 修改为 Port 9022修改SSH连接协议为版本2:#Protocol 2,1 修改为 Protocol 2权限只定用户连接SSH:AllowUsers user1重启ssh服务系统设置 服务器设置 服务,启动服务”sshd”、使用命令 service sshd restart使用软件连接SSH服务:在Windows上使用putty.exeLinux http服务器配置检查所需要的软件包[root@rh9 /]# rpm -qa | grep httphttpd-2.0.40-21libghttp-1.0.9-7httpd-manual-2.0.40-21redhat-config-httpd-1.0.1-18安装http服务软件包通过系统的”添加删除程序功能”进行安装、使用rpm –ivh 软件包名进行安装配置HTTP网站网页默认存放位置:/var/启动HTTP网站服务系统设置 服务器设置 服务,启动服务”httpd”、使用命令 service httpd start访问Linux Web网站: IPLinux dns服务器配置检查所需要的软件包[root@rh9 /]# rpm -qa | grep bindredhat-config-bind-1.9.0-13bind-utils-9.2.1-16ypbind-1.11-4bind-9.2.1-16安装DNS服务软件包通过系统的”添加删除程序功能”进行安装、使用rpm –ivh 软件包名进行安装配置DNS服务配置反向解析、配置正向解、异常解决 DNS服务不能启动。
操作系统课程设计一、课程目标知识目标:1. 理解操作系统的基本概念、功能、类型和结构,掌握操作系统的五大核心功能模块(处理器管理、存储器管理、设备管理、文件管理、用户接口);2. 掌握操作系统的发展历程、主要操作系统(如Windows、Linux、Mac OS)的特点及应用场景;3. 了解操作系统的设计与实现原理,包括进程管理、内存管理、设备管理、文件系统等关键技术;4. 学会使用操作系统提供的命令行或图形界面进行基本的系统操作与维护。
技能目标:1. 培养学生对操作系统的实际操作能力,能够熟练使用至少一种操作系统进行日常管理与维护;2. 培养学生运用操作系统原理解决实际问题的能力,如分析系统性能、诊断故障、优化配置等;3. 提高学生的编程能力,使其能够编写简单的系统程序或脚本,实现特定功能。
情感态度价值观目标:1. 培养学生对操作系统的兴趣,激发学生学习计算机科学的热情;2. 培养学生的团队合作意识,使其在讨论、分析、解决问题的过程中学会倾听、交流、协作;3. 培养学生具备良好的信息素养,关注操作系统领域的最新发展,增强信息安全意识。
课程性质:本课程为计算机科学与技术专业(或相关领域)的必修课,具有较强的理论性和实践性。
学生特点:学生已具备一定的计算机基础知识,具有较强的学习兴趣和动手能力,但可能对操作系统原理的理解和应用尚有不足。
教学要求:注重理论与实践相结合,以案例驱动、任务导向的方式进行教学,注重培养学生的实际操作能力和问题解决能力。
通过本课程的学习,使学生能够掌握操作系统的基本原理,提高实际应用水平,为后续专业课程学习打下坚实基础。
二、教学内容1. 操作系统概述:介绍操作系统的基本概念、功能、类型,比较不同操作系统的特点,分析操作系统的发展趋势。
教材章节:第一章 操作系统概述2. 进程与线程管理:讲解进程与线程的概念、状态与转换,进程调度算法,同步与互斥,死锁与饥饿问题。
教材章节:第二章 进程管理3. 存储管理:介绍内存分配与回收策略,虚拟内存技术,页面置换算法,内存保护机制。
《操作系统》课程设计一、课程目标知识目标:1. 让学生掌握操作系统的基本概念,包括进程、线程、内存管理、文件系统等核心知识;2. 了解操作系统的历史发展,掌握不同类型操作系统的特点及使用场景;3. 掌握操作系统的性能评价方法和常用的调度算法。
技能目标:1. 培养学生运用操作系统知识解决实际问题的能力,如分析系统性能瓶颈、优化系统资源分配等;2. 培养学生具备基本的操作系统编程能力,如进程创建、线程同步、文件操作等;3. 提高学生的团队协作能力和沟通能力,通过小组讨论和项目实践,学会共同解决问题。
情感态度价值观目标:1. 培养学生对操作系统学科的兴趣,激发学生的学习热情,使其形成积极向上的学习态度;2. 培养学生具备良好的信息素养,尊重知识产权,遵循法律法规;3. 培养学生的创新精神和批判性思维,敢于质疑、勇于探索,形成独立思考的能力。
课程性质:本课程为计算机科学与技术专业的核心课程,旨在让学生掌握操作系统的基本原理和实现方法,提高学生的系统分析和编程能力。
学生特点:学生具备一定的编程基础和计算机系统知识,具有较强的逻辑思维能力和动手实践能力。
教学要求:结合学生特点和课程性质,注重理论与实践相结合,通过案例分析和项目实践,帮助学生将所学知识内化为具体的学习成果。
在教学过程中,关注学生的学习进度和反馈,及时调整教学策略,确保课程目标的实现。
二、教学内容1. 操作系统概述:介绍操作系统的定义、发展历程、功能、类型及特点,对应教材第一章内容。
- 操作系统的起源与发展- 操作系统的功能与类型- 操作系统的主要特点2. 进程与线程:讲解进程与线程的概念、状态、调度算法,对应教材第二章内容。
- 进程与线程的定义与区别- 进程状态与转换- 进程调度算法3. 内存管理:分析内存管理的基本原理、策略和技术,对应教材第三章内容。
- 内存分配与回收策略- 虚拟内存技术- 页面置换算法4. 文件系统:介绍文件系统的基本概念、结构、存储原理,对应教材第四章内容。
《操作系统课程设计》报告学号:姓名:班级:指导教师:报告日期:一、课设目的通过对操作系统课程的学习,熟悉进程的概念、进程的管理与存储、进程的调度,通过实践深入理解进程的调度算法。
二、课设任务要求编写一个程序,可以创建若干个虚拟进程,并对若干个虚拟进程进行调度,调度策略为时间片轮转法,主要任务包括:①进程的个数,进程的内容(即进程的功能序列)来源于一个进程序列描述文件,另外调度运行结果输出到一个运行日志文件;②设计PCB适用于时间片轮转法;③建立进程队列;④实现时间片轮转调度算法,尽量可视化的展示调度的动态过程。
○5总结程序设计的开发过程:需求分析、系统设计、系统实现及文档的收集和整理。
三、实验方法与设计分析每个进程有一个进程控制块( PCB)表示。
进程控制块可以包含如下信息:进程名、优先数、到达时间、需要运行时间、已用CPU时间、进程状态等等。
据需要设计调查计划调查、收集数据,能按要求整理数据,在统计表进程的优先数及需要的运行时间可以事先人为地指定(也可以由随机数产生)。
进程的到达时间为输入进程的时间。
,计算机,千千万万中小创业者渴望成功高中语文,语文试卷,计算机摇篮课进程的运行时间以时间片为单位进行计算。
每个进程的状态可以是就绪 W(Wait)、运行R(Run)、或完成F(Finish)三种状态之一。
式,因此上开店成为了一种潮流,并且越来越多高中语文,语文试卷,计算机就绪进程获得 CPU后都只能运行一个时间片。
用已占用CPU时间加1来表示。
卷,计算机络购物高中语文,语文试卷,计算机市场潜力还远未被释放课件同如果运行一个时间片后,进程的已占用 CPU时间已达到所需要的运行时间,则撤消该进程,如果运行一个时间片后进程的已占用CPU时间还未达所需要的运行时间,也就是进程还需要继续运行,此时应将进程的优先数减1(即降低一级),然后把它插入就绪队列等待CPU。
语文,语文试卷,计算机,第5代速度达自动软件,不用东奔西走高中语文,语文每进行一次调度程序都打印一次运行进程、就绪队列、以及各个进程的 PCB,以便进行检查。
操作系统课程设计(完整规范版)一、设计目的操作系统课程设计旨在让学生深入了解操作系统的基本原理,掌握操作系统的设计与实现方法,培养学生在实际操作系统中分析和解决问题的能力。
通过本次课程设计,学生将能够:1. 加深对操作系统理论知识的理解与应用;2. 提高动手实践能力,培养创新精神和团队协作意识;3. 为今后从事操作系统相关领域的研究和工作奠定基础。
二、设计要求(1)进程管理:包括进程的创建、撤销、调度等;(2)内存管理:实现内存分配、回收、页面置换等;(3)文件系统:实现文件的创建、删除、读写等操作;(4)设备管理:实现设备的分配、回收、驱动等功能。
(1)代码规范:编写清晰、易读、易维护的代码;(3)团队协作:合理分工,确保团队成员共同参与、共同进步。
三、设计步骤1. 需求分析:分析课程设计所需实现的功能,明确各个模块的具体要求;2. 概要设计:根据需求分析,制定总体设计方案,划分模块,确定模块间接口;3. 详细设计:针对每个模块,进行具体实现方案的设计;4. 编码实现:按照设计文档,编写代码,实现各个功能模块;5. 测试与调试:对实现的功能进行测试,发现问题并进行调试;6. 优化与改进:根据测试结果,对代码进行优化,提高系统性能;四、预期成果1. 完成一套具有基本功能的模拟操作系统,能够演示进程管理、内存管理、文件系统和设备管理的主要操作;2. 提供完整的,包括注释,以便他人理解和学习;3. 形成一份详尽的课程设计报告,记录设计过程中的思考、遇到的问题及解决方案;4. 通过课程设计,提升个人在操作系统领域的理论知识和实践能力。
五、评价标准1. 功能完整性:各功能模块是否按照要求实现,系统是否能正常运行;3. 创新性:设计过程中是否有独特的想法,是否对现有技术有所改进;4. 团队协作:团队成员之间沟通是否顺畅,分工是否合理,协作是否高效;5. 文档质量:课程设计报告是否详细、准确,是否能够完整反映设计过程和成果。
前言操作系统(Operating System, 简称OS)是管理和控制计算机硬件与软件资源旳计算机程序, 是直接运营在“裸机”上旳最基本旳系统软件, 任何其他软件都必须在操作系统旳支持下才干运营。
操作系统是顾客和计算机旳接口, 同步也是计算机硬件和其他软件旳接口。
操作系统旳功能涉及管理计算机系统旳硬件、软件及数据资源, 控制程序运营, 改善人机界面, 为其他应用软件提供支持, 让计算机系统所有资源最大限度地发挥作用, 提供多种形式旳顾客界面, 使顾客有一种好旳工作环境, 为其他软件旳开发提供必要旳服务和相应旳接口等。
事实上, 顾客是不用接触操作系统旳, 操作系统管理着计算机硬件资源, 同步按照应用程序旳资源祈求, 分派资源, 如: 划分CPU时间, 内存空间旳开辟, 调用打印机等。
操作系统旳重要功能是资源管理, 程序控制和人机交互等。
计算机系统旳资源可分为设备资源和信息资源两大类。
设备资源指旳是构成计算机旳硬件设备, 如中央解决器, 主存储器, 磁盘存储器, 打印机, 磁带存储器, 显示屏, 键盘输入设备和鼠标等。
信息资源指旳是寄存于计算机内旳多种数据, 如系统软件和应用软件等。
操作系统位于底层硬件与顾客之间, 是两者沟通旳桥梁。
顾客可以通过操作系统旳顾客界面, 输入命令。
操作系统则对命令进行解释, 驱动硬件设备, 实现顾客规定。
本次课程设计我们将对上学期所学旳知识进行系统旳应用, 而达到巩固知识旳作用目录1问题概述 (2)2需求分析 (2)3 概要设计 (2)3.1重要功能 (2)3.2 模块功能构造 (3)3.3 软硬件环境 (3)3.4数据构造设计 (3)4 具体设计 (4)4.1“先来先服务(FCFS)调度算法” (4)4.2“短进程调度算法(SPF)” (7)4.3“高响应比优先调度算法” (10)4.4“优先级调度(非抢占式)算法” (13)5 系统测试及调试 (15)5.1测试 (15)5.2调试过程中遇到旳问题 (16)6 心得体会 (17)7 参照文献 (18)8 附录 (19)1问题概述编写一种进程调度程序, 容许多种进程并发执行。
北邮操作系统课程设计一、教学目标本课程的教学目标是使学生掌握操作系统的基本原理和关键技术,包括进程管理、内存管理、文件系统和输入/输出系统等。
通过本课程的学习,学生应能理解操作系统的整体结构和工作原理,具备分析和设计简单操作系统的能力。
此外,学生应掌握常用的操作系统工具和命令,能够进行基本的开源操作系统开发和调试。
在学习过程中,培养学生独立思考、创新能力和团队合作精神,提高学生对计算机科学的兴趣和热情。
二、教学内容本课程的教学内容主要包括操作系统的基本概念、原理和关键技术。
具体包括以下几个部分:1.操作系统的概述:介绍操作系统的定义、功能、分类和发展历程。
2.进程管理:讲述进程的概念、进程控制块、进程调度算法、同步与互斥、死锁和进程通信等内容。
3.内存管理:包括内存分配与回收策略、虚拟内存技术、页面置换算法、内存保护机制等。
4.文件系统:介绍文件和目录的结构、文件存储管理、文件访问控制、磁盘空间分配策略等。
5.输入/输出系统:包括设备管理、中断处理、直接内存访问(DMA)、设备驱动程序等内容。
三、教学方法为了提高教学效果,本课程将采用多种教学方法相结合的方式进行授课。
具体包括以下几种方法:1.讲授法:教师通过讲解操作系统的理论知识,使学生掌握基本概念和原理。
2.案例分析法:分析实际操作系统案例,让学生更好地理解操作系统的应用和设计。
3.实验法:安排实验课程,使学生亲自动手实践,加深对操作系统原理的理解。
4.讨论法:学生进行小组讨论,培养学生的团队合作精神和独立思考能力。
四、教学资源为了保证教学效果,本课程将提供丰富的教学资源。
具体包括以下几种资源:1.教材:选用国内外优秀教材,如《操作系统概念》等,为学生提供系统的理论知识。
2.参考书:推荐学生阅读相关参考书籍,加深对操作系统知识的理解。
3.多媒体资料:制作课件、教学视频等,以图文并茂的形式展示课程内容。
4.实验设备:提供实验室环境,让学生能够进行实际操作练习。
课程设计操作系统一、教学目标本课程旨在让学生掌握操作系统的基本原理和概念,了解操作系统的运行机制和功能,培养学生运用操作系统知识解决实际问题的能力。
具体目标如下:1.知识目标:(1)理解操作系统的基本概念、功能和作用;(2)掌握操作系统的运行机制,包括进程管理、内存管理、文件管理和设备管理;(3)了解操作系统的发展历程和主流操作系统的基本特点。
2.技能目标:(1)能够运用操作系统知识分析和解决实际问题;(2)具备基本的操作系统使用和维护能力;(3)掌握操作系统的基本配置和优化方法。
3.情感态度价值观目标:(1)培养学生对操作系统知识的兴趣和好奇心;(2)树立正确的计算机使用观念,提高信息素养;(3)培养学生团队协作、创新思考和持续学习的能力。
二、教学内容本课程的教学内容主要包括以下几个部分:1.操作系统概述:介绍操作系统的定义、功能、作用和分类;2.进程管理:讲解进程的概念、进程控制、进程同步与互斥、死锁等问题;3.内存管理:讲解内存分配与回收策略、虚拟内存、页面置换算法等;4.文件管理:讲解文件和目录的概念、文件存储结构、文件访问控制、磁盘空间分配等;5.设备管理:讲解设备驱动程序、I/O调度策略、中断处理和DMA传输等;6.操作系统实例分析:分析主流操作系统(如Windows、Linux)的基本特点和运行机制。
三、教学方法本课程采用多种教学方法相结合,以提高学生的学习兴趣和主动性:1.讲授法:讲解操作系统的基本概念、原理和知识点;2.讨论法:学生针对操作系统相关问题进行讨论,培养学生的思维能力和团队协作精神;3.案例分析法:分析实际案例,让学生了解操作系统在实际应用中的作用和意义;4.实验法:安排实验课程,让学生动手实践,巩固所学知识。
四、教学资源为实现课程目标,我们将采用以下教学资源:1.教材:选用权威、实用的操作系统教材,为学生提供系统、全面的知识体系;2.参考书:提供相关领域的参考书籍,拓展学生的知识视野;3.多媒体资料:制作精美的PPT课件,辅助讲解和展示操作系统的相关概念和实例;4.实验设备:配置相应的实验设备,让学生动手实践,提高操作能力。
成绩:____《操作系统原理》课程设计报告设计题目Linux的fork.c代码的分析Linux 的exit.c代码的分析姓名班级学号负责人:参与人:指导老师:一、设计目的:通过对Linux的fork.c、exit.c代码的分析, 了解一个操作系统进程的创建、退出的过程, 锻炼学生分析大型软件代码的能力通过与同组同学的合作, 锻炼学生的合作能力二、设计步骤:1.了解基础知识;2.与同组同学一起讨论出任务的分配方式;马瑞骁(计023-37):Release()函数、Sys_kill()函数、Tell_father()函数,Sys_waitpid()函数董欣(计022-24):、Copy_progress函数,Fork.c程序流程图、Exit.c程序流程图;3.对自己的任务部分的代码充分阅读,注释代码,同时得到相应的框图;4.撰写报告。
三、设计内容:根据课程设计指导书提供的基础知识和有关资料, 分析相关代码, 得到相关的框图, 写出设计报告。
四、设计结果:(一)Exit.c分析:Exit.c程序主要描述了进程终止和退出的处理事宜。
主要包含进程释放、会话终止和程序推出处理函数以及杀死进程、终止进程、刮起进程等系统调用函数。
还包括进程信号发送函数send_sig()和同志父进程终止的函数tell_father()。
Exit.c程序流程图:1. Release()函数:Release( )主要根据制定的任务数据结构(任务描述符)指针,在任务数组中删除指定的进程指针、释放相关内存页并立刻让内核重新调度任务的运行。
/*************程序分析************************/void release(struct task_struct * p) //参数p 是任务数据结构的指针。
该函数在后面的sys _ ki1l ( )和sys _waitPid ( )中被调用。
//扫描任务指针数组表task 「」以寻找指定的任务。
若找到,则先清空该任务槽,然后释放该任务数据结构所占用的内存页面,最后执行调度函数并在返回时立即退出。
若在任务数组表中没有找到指定任务对应的项,则内核panic{int i;if (!p)return;for (i=1 ; i<NR_TASKS ; i++) //扫描任务数组,寻找指定任务。
if (task[i]==p){task[i]=NULL; //该任务项置空,然后释放相关的内存页。
free_page((long)p);schedule(); //重新调度return;}panic("trying to release non-existent task"); //指定任务若不存在则死机}/****************************************************/ Release( )程序框图如下所示:2. Sys_kill()函数:系统调用sys_kill( )用户向进程发送任何指定的信号。
根据参数pid 的数值的不同,该系统调用会向不用的进程或进程组发送信号。
/*************程序分析************************/int sys_kill(int pid,int sig) //参数pid 是进程号;sig是需要发送的信号。
{struct task_struct **p = NR_TASKS + task;int err, retval = 0;if (!pid) //如果pid =0 ,那么信号就会被发送给当前进程的进程组中的所有进程。
while (--p > &FIRST_TASK){if (*p && (*p)->pgrp == current->pid)if (err=send_sig(sig,*p,1)) //强制发送信号。
retval = err;}else if (pid>0) //如果pid 值>0 ,则信号被发送给进程号是pid 的进程。
while (--p > &FIRST_TASK) {if (*p && (*p)->pid == pid)if (err=send_sig(sig,*p,0))retval = err;} else if (pid == -1) while (--p > &FIRST_TASK) //如果pid =-1 ,则信号sig就会发送给除第一个进程外的所有进程。
if (err = send_sig(sig,*p,0))retval = err;else while (--p > &FIRST_TASK)if (*p && (*p)->pgrp == -pid) //如果pid <-1 ,则信号sig将发送给进程组--sig 的所有进程。
if (err = send_sig(sig,*p,0))retval = err;return retval;}/****************************************************/ Sys_kill( )程序框图如下所示:3. Tell_father():该程序是通知父进程一向进程pid 发送信号sigchld :默认情况下子进程将停止或终止。
/*************程序分析************************/static void tell_father(int pid){int i;if (pid)//扫描进程数组表寻找指定进程pid ,并向其发送子进程将停止或终止信号SIGCHLD 。
for (i=0;i<NR_TASKS;i++){ if (!task[i])continue;if (task[i]->pid != pid)continue;task[i]->signal |= (1<<(SIGCHLD-1));return;}/****************************************************/Tell_father( )程序框图如下所示:4. Sys_waitpid():系统调用waitpid( )用于挂起当前进程,指导pid指定的子进程退出或者收到要求终止该进程的信号,或者是需要调用一个信号句柄。
如果pid所指的子进程早已退出,则本调用将立刻返回。
子进程使用的所后资源将释放。
该函数的具体操作也要根据其参数进行不同的处理。
/*************程序分析************************/int sys_waitpid(pid_t pid,unsigned long * stat_addr, int options){int flag, code;struct task_struct ** p;verify_area(stat_addr,4);repeat:flag=0;//从任务数组末端开始扫描所有任务,跳过空项、本进程项以及非当前进程的子进程项。
for(p = &LAST_TASK ; p > &FIRST_TASK ; --p) {if (!*p || *p == current)//跳过空项和本进程项。
continue;if ((*p)->father != current->pid)//如果不是当前进程的子进程则跳过。
continue;if (pid>0) //如果等待的子进程号pid > 0 ,但与被扫描子进程p 的pid 不相等,说明它是当前进程另外的子进程,于是跳过该进程,接着扫描下一个进程。
{if ((*p)->pid != pid)continue;}else if (!pid) //如果指定等待进程的pid =0 ,表示正在等待进程组号等于当前进程组号的任何子进程。
{if ((*p)->pgrp != current->pgrp)//如果此时被扫描进程p 的进程组号与当前进程的组号不等,则跳过。
continue;}else if (pid != -1) //如果指定的pid <-1 ,表示正在等待进程组号等于pid 绝对值的任何子进程。
{if ((*p)->pgrp != -pid)//如果此时被扫描进程p 的组号与pid 的绝对值不等,则跳过。
continue;}switch ((*p)->state) //如果前面对pid 的判断都不符合,则表示当前进程正在等待其任何子进程。
此时所选择到的进程p 正是所等待的子进程。
{case TASK_STOPPED:if (!(options & WUNTRACED))//子进程p 处于停止状态时,如果此时WUNTRACED 标志没有置位,表示程序无须立刻返回,于是继续扫描处理其它进程。
continue;put_fs_long(0x7f,stat_addr); //如果WUNTRACED 置位,则把状态信息ox7f 放入*stat_ addr ,并立刻返回子进程号pid 。
这里Ox7f表示的返回状态使WIFSTOPPED ( )宏为真。
return (*p)->pid;case TASK_ZOMBIE://如果子进程p 处于僵死状态,则首先把它在用户态和内核态运行的时间分别累计到当前进程(父进程)中,然后取出子进程的pid 和退出码,并释放该子进程。
最后返回子进程的退出码和pid 。
current->cutime += (*p)->utime;current->cstime += (*p)->stime;flag = (*p)->pid; //临时保存子进程pidcode = (*p)->exit_code; //取子进程的退出码。
release(*p);put_fs_long(code,stat_addr);//置状态信息为退出码值。
return flag;//退出,返回子进程的pid .default://如果这个子进程p 的状态既不是停止也不是僵死,那么就置flag =1。
表示找到过一个符合要求的子进程,但是它处于运行态或睡眠态。
flag=1;continue;}}if (flag){if (options & WNOHANG) //如果此时已设置WNOHANG 选项(表示若没有子进程处于退出或终止态就立刻返回)就立刻返回0 ,退出。
return 0;current->state=TASK_INTERRUPTIBLE;//否则把当前进程置为可中断等待状态.schedule();//重新执行调度。