Linux内核分析--对信号机制的分析 Linux内核分析--对信号机制的分析

Linux内核分析--对信号机制的分析

  • 期刊名字:温州职业技术学院学报
  • 文件大小:648kb
  • 论文作者:崔丽荣
  • 作者单位:温州职业技术学院
  • 更新时间:2020-09-25
  • 下载次数:
论文简介

第S卷第3期温州职业技术学院学报Vol.5 No.32005年9月Journal of Wenzhou Vocational and Technical CollegeSep. 2005Linux内核分析-----对信号机制的分析崔丽荣(温州职业技术学院计算机系,浙江温州325035)摘要] Linux是源代码自由开放的操作系统。Linux内核的许多面向通信的底层代码,对开发我国的信息安全产品极有参考价值,因此,对源代码的组织结构、实现原理及实现机制进行较详细的阐述,无疑对深入了解源代码及Linux的普及和发展将有重要的作用.[关键词] Linux; 信号机制;源代码[中图分类号] TP316.89[文献标识码] A [文章编号] 1671-4326( 2005)03-0045-02An Analysis on Linux Kernelon Signal.cCUI Li-rong(Computer Science Department, Wenzhou Vocational and Technical College, Wenzhou, 325035, China)Abstract: Linux is a free and open operating system of code source. A lot of communication-orientedmachine codes of Linux kernel are very valuable to the exploration of the information security products of ourcountry. Thus, the presentation of the organization structure, the performance principle and the performancemechanism of the code source will undoubtedly enhance the understanding of code source and the popularityof Linux.Key words: Linux; Signal.c; Code sourceLinux作为最热门的源代码自由开放的操作系Linux的内核源代码的版本是多版本的。对不同统,引起了国内外Linux开发者和爱好者以及独立软的内核版本,系统调用一般是相同的。新版本可以增件开发商和各类企业主管的关注,其发展势头越来越加- -些新的调用,但旧的系统调用将依然不变,以便猛,同时也逐步得到多数硬软件公司的强劲支持。于保持向后的兼容,所以,一个新的内核版本不能打数据显示,Linux已经占到操作系统市场的20%,破常规的过程。多数情况下,设备文件虽仍然相同,Windows占60%。在我国,Linux也得到 了很快的发但版本之间的内部接口则有所变化。Linux 内核源代展。2004年 以来Linux巳逐渐渗透到电信、金融这些码有一个简单的数字系统,任何偶数内核是-一个稳定IT需求高端的行业,并且Linux正逐步应用于高可靠的版本,而奇数内核是正在发展中的内核。发展中的性服务器和集群服务器这些相对高端的领域。与内核有最新的特点,支持最新的设备,是发展最新而Windows相比,Linux源代码完全公开、便于分析和修又稳定的内核的基础。对内核源代码的修改是以补丁改,而令世人刮目相看。Linux内核的许多面向通信文件的形式发布的。的底层代码对开发我国的信息安全产品极有参考价Linux内核源代码的结构为:每个目录或子目录值。因此,对源代码的组织结构、实现原理及实现机可以看作一个模块,其目录之间的连线表示“子目 录制进行较详细的阐述,无疑对深入了解源代码及或子模块”的关系。Linux的普及和发展将有重要的作用。中国煤化工1 Linux 内核源代码的特点2.1YHCNMH G系[收稿日期] 2005-03-25[作者简们崔丽荣(1975- ),女,内蒙古四子王旗人,温州职业技术学院计算机系助教.46温州职业技术学院学报2005年9月Linux是一个庞大、高效而复杂的操作系统,从信机制,利用这些机制,进程之间可以进行通讯并共结构上可以把Linux的内核划分为五个主要的子系同完成某项任务,这种机制就是IPC。Linux支 持许统,它们以进程调度子系统为核心,其它四个子系统多不同形式的IPC。在特定的情况下它们各有自己的分别为内存管理、进程间通信、虚拟文件系统和网络优缺点和使用范围。其中最有用的IPC有管道.接口。每个子系统之间通过过程调用,互相通信。通System V的IPC机制及信号。信机制在Linux操作系统的子系统中发挥了重要的作所谓管道,是指用于连接-一个 读进程和一个写进用。程,以实现它们之间通信的共享文件,又称pipe文(1)进程调度子系统。因为Linux中的 每个进程都件。向管道提供输入的发送进程(即写进程),以字有自己的虚拟地址空间,为了避免多个进程之间的互符流形式将大量的数据送入管道;而 接受管道输出相影响,特别是用户利用两个或多个进程的功能完成的接收进程(即读进程),可从管道中接收数据。由同-任务时,进程通信机制发挥着不可替代的作用。于发送进程和接收进程是利用管道进行通信的,故又如A进程和B进程共同完成.一项任务,此过程必须A和称管道通信。这种方式首创于UNIX系统,因它能传B进程之间进行通信,以便彼此了解工作状况。而进送大量的数据,且很有效,故很 多操作系统都引用程调度子系统就是以它们间的通信来挂起或唤醒进程这种通信方式,Linux也不例外。的。Linux也支持System V的IPC:消息、信号量和共(2)管理子系统。Linux是个多任务操作系统,享内存。Linux对 这些机制的实施大同小异。我们把可以有多个程序同时装入内存并运行。操 作系统的信号量、消息和共享内存统称System V IPC的对象,每个程序建立一个运行即进程,每个进程都拥有自己每个对象都具有同样类型的接口,即系统调用。这些的虚拟地址空间,它们之间互不干扰,即使要相互作对象和文件一样,都有唯一-的识别号,进程可以通过用,如多个进程合作完成某项工作,也要通过内核提系统调用传递的识别号来存取这些对象。与文件的存供的进程间通信机制(IPC)。Linux内存管理的设计充取一样,对这些对象的存取也要验证存取权限,分利用计算机操作系统所提供的虚拟存储技术,真正SystemV1PC对象的创建者可以通过系统调用设置这实现了虚拟存储的管理。进程的虚拟地址可以映射到些对象的存取权限。任意一个物理地址处,因此,当两个进程的虚拟地基于Linux支持的通信机制是如何具体实施的,址映射到同一物理地址时,为了避免两个进程的冲是怎样完成进程间通信的?我们可以通过分析其源代突,进程之间必须进行通讯。码得到问题的解答。(3)子系统的依赖关系。图1显示了IPC子系统与2.3 Linux内 核模块Signa1.c内核其它系统之间的资源依赖关系。IPC子系统因在操作系统中,信号是一种机制,进程通过信号sockets而依赖文件子系统,因为sockets使用文件描知道系统中正在发生的事件。信号是随机产生的,在述符,一且sockets被打开,就给它分配一个inode。进程执行期间随时都可能收到信号,甚至可能在进程内存管理依赖IPC,因为页交换例程在执行共享内存正在执行系统调用时收到信号。所以,进程必须随的交换时使用IPC机制。IPC依赖内存管理主要是因为时做好响应信号的准备,发出信号的进程将信号送给分配缓冲区和共享内存的实现。接收者进程的PCB中,收到者进程被调用时,才能转IPC入处理信号引起的事件。为区别于硬件中断,有时把信号的处理叫“软中断”。每一种信号都有一个符号名和一个值,放在文件中,也可用kil1命进程调度内存管理文件系统令给出这些信号。信号的-一个主要特点是它的异步围1 IPC子系统的资源依赖关系性,这表示进程在执行期间的任何时候都可能接收到2.2Linux支持的通信机制信号,甚至可能当进程正在执行系统调用时接到信Linux是一个多任务操作系统,必须保证CPU时刻号,所以,进程必须随时为响应信号做好准备。通常保持在使用状态,以提高利用率。Linux中的每个进情况下,若系统调用被信号中断,则它将返回值,并程都有自己的虚拟地址空间,操作系统的一个最重要将e" 中国煤化工: 断的调用是收到信号的基本管理目的,就是避免进程之间的互相影响。但有时用户也希望利用两个或多个进程的功能完成同一YHC N M H G父进程发出信号时,任务,为了协调进程之间的活动,进程间以及进程内核将代表该进程执行这个操作。与核心之间要进行通信。为此,Linux提供了 许多通在POSIX下,每个进程有一个掩码,(下转第72页)72温州职业技术学院学报2005年9月来衡量高职教育成功与否的关键。学生职业指导成为进行。引导学生在了解自己、了解职业、了解社会的学校的重要工作,学校开设专门的职业指导课程,对基础上调整就业意愿,树立对未来职业生涯发展的信学生进行“成功教育”,帮助学生学习职业知识,掌心,看到自己的不足和即将从事的职业对从业者素质握职业生涯设计的方法,使学生树立正确的职业观、要求的差距,形成自觉提高自己的动力机制,完善自就业观和择业观。职业指导从新生一进校的入学教育身的道德品质,养成敬业乐业的职业道德。开始,贯穿于大学教育的全过程,分阶段、有步骤地[参考文献]川周济.高职高专教育改革与建设[网].北京: 高等教育出版社,2004.28-38.[2] 霍尔.戴维斯.道德教育的理论与实践[M].杭州:浙江教有出版社,2003.[3] 刘创.德育目标:内涵、功能与实现(1].求索,2004, (3) .[4}孙文学.以就业为导向的高职学生职业能力培养--兼 论高职人才培养榄式的变革[J].职业技术教育,2005, (4) .[5]刘春生,马振华,张宇,以就业为导向发展职业教育的理论思考(J].职业技术教育,2005, (10) .6| 章明.高职教育的正确目标定位[J].成才(武汉), 199, (3).[7]单黹麟.以就业为导向培养高素质技能型人才(J].中国培训,2004, (12).[8]鲍洁.用新的质量观建立高等职业教育的质量保障体系[J/0L]. ht://www. bjpopss .g0v .cn/bjpscjj/cjj20040430.htm.zh.[责任编辑:李小玉](上接第46页) Linux中进程task. struct结构的中,一个进程可以选择是处理这些信号还是封锁这些blocked域描述信号掩码的位图(见图2)。每一位对信号;若不封锁这些信号可选择亲自处理,或交内核应32个信号中的一个信号,其中第8位和第18位始终处理;内核处理时,按对该信号的默认去处理。除为0,表示SIGKILL和SIGSTOP是不可阻塞的;掩码位SIGKILL和SIGST0P外所有信号都可以被封锁。当一个图的某位置1,表示它被自动加到接收进程的信号掩信号已被封锁时,要直到封锁被解除才能处理。码中。例如,当SIGINT被 发送时,接收进程掩码的第Linux保存有如何处理每种可能发生的信号,信息存2位被置位,如果再发送SIGINT给该进程,说明这个放在sigaction数组中,由每种进程task_ struct标SIGINT信号成为当前被阻塞传递的信号,信号明。在其他事件中包含有处理信号的程序地址,这SIGINT将被加到该进程中挂起的信号集合中,当阻塞些信号告诉Linux进程,希望它忽略信号或让内核去被移开时,SIGING才 传递给该进程。处理。当然,并不是系统中的每个进程都可以向其他10... ..进程发送信号,只有内核和超级用户可以,普通进程只能发信号给具有相同uid和gid的进程。当信号产生32 31图2信号掩码的位圈时,并不是立即提交给进程,而必颁等到进程再次运信号之间没有优先关系。当两个信号同时发生在行时,才能接收信号。每次进程从系统调用中退出,个进程时, 可以以任何方式处理;同种类型的信其signa1和blocked域都要接受检查,当信号无封锁号也没有原则性,信号的处理由接收信号的进程来决时,可以立即被传递,因为几乎每个进程都在一直使定。Linux中, 有关信号的信息也存放在task_ struc t用系统调用。[]陈建辉。Linux操作系统内核实习[M].北京:机械工业出版社,2002 .[2]李善平。Linux内核2. 4版源代码分析大全[M].北京:机械工业出版社,2002 .. [3] 骆耀祖. Linux操作系统分析教程[N].北京:清华大学出版社,2004.|4]徐士良。常用算法程序集(C语言描述)[w]. 北京:清华大学出版社,2004.[s| 郑莉. C++语言程序设计[M].北京:清华大学出版社,2003.中国煤化工[6] 王立柱. C/C++与数据结构[周]. 北京:清华大学出版社,2003.MYHCNMHG[7]曹聪.计算机操作系统[回].兰州:兰州大学出版社,1998.[8}倪光南.倪光南呼吁使用Linux系统[EB/0L]. http://ww. linuxeden. com/doc/article. php/21743.[9]韩国华。Linux高速增 长引发厂商大合并[EB/0L]. http://ww. linuxeden. com/doc/article. php/21726.[责任编辑:李永平]

论文截图
版权:如无特殊注明,文章转载自网络,侵权请联系cnmhg168#163.com删除!文件均为网友上传,仅供研究和学习使用,务必24小时内删除。