版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
作为计算机专业的核心课程之一,《计算机操作系统》课程主要讲授现代操
作系统经典的实现原理、方法、算法和相关数据结构,帮助学生建立系统级概念,
并将操作系统的实现原理用于应用软件和系统软件的设计与开发。我校《计算机
操作系统》教学除了注重知识和专业能力培养,还注重培养学生的学术研究能力
和科学思维能力,以帮助学生从思维训练的角度学习操作系统的设计原理和实现
技术。
作为计算机资源的管理者,操作系统负责管浬计算机中的各类软硬件资源,
保障计算机系统有效且高效地运行。课程教学中从两个角度剖析计算机操作系
统,一方面,从管理学的角度,把操作系统看作计算机资源的管理器,分析操作
系统如何有效且高效地管理处理器、存储器、I/O设备和文件等软硬件资源;另
一方面,从软件工程的角度,将计算机操作系统看作一种大型系统软件,按照模
块化的思想,将其划分为处理器管理子系统(即进程管理子系统)、存储管理子
系统、I/O设备管理子系统和文件管理子系统等几个较小的子系统。再分别研究
各子系统的设计与实现技术。上述两个角度可以交替进行,不妨可以将操作系统
比拟为一个公司的财务总监,其主要责任即准确实时登记公司的各类资产情况,
以确保公司各部门能高效运转。同时,培养学生的软件工程设计能力,以操作系
统设计者的身份,与老师一道共同设计实现操作系统的各功能模块。计算机操作
系统中包含若干工程训练和计算思维训练的实例。希望同学们在学习过程中认真
体会:
(1)化繁为简:模块化设计
作为一个大型复杂的系统软件,操作系统的设计和开发必须遵循化繁为简的
思想,采用模块化设计方法,将一个复杂的大系统划分为几个较简单的、相对独
立的子系统。一般地,根据操作系统管理的计算机资源类型不同,可以将操作系
统划分为处理机管理子系统(常称为进程管理子系统)、存储管理子系统、I/O设
备管理子系统和文件管理子系统等几个独立的子系统。
其中,进程管理子系统主要实现进程的并发控制、处理器的有效竞争使用(进
程调度)、多进程并发替在引起的死锁问题的解决等功能。存储管理子系统实现
内存的划分、为进程分配存储空间并实时回收可用空间、虚拟存储技术的实现等
功能。1/0设备管理子系统实现外部设备的分配与回收、缓冲存储的实现、多进
程对磁盘I/O访问的请求与服务等功能。文件管理子系统实现文件的组织、文件
目录管理、为文件分配磁盘存储空间等功能。上述诸功能的实现依赖各类数据结
构,例如进程控制块PCB、进程页表、设备分配表、文件分配表等,以及大量
算法,如进程调度、页面置换、磁盘调度等算法。
模块化思想是计算思维的基本要素之一。以操作系统的设计与实现为例,训
殊学生如何将一个大型软件划分为若干较小的模块,再对各模块进行需求分析和
功能设计。
(2)队列与调度
超市结账、银行办理业务、乘车排队等生活中的排队现象司空见惯。一般
地,按照约定俗成,排在队首者优先获得服务,这其实就是一种调度算法一先来
先服务。计算机中存在很多队列,如进程队列(阻塞队列、就绪队列、I/O等待
队列等)、作业队列等。凡是存在队列的地方,都需要某种调度策略,以服务于
队列中的各对象。因此,操作系统中需要讲解进程调度、作业调度、磁盘调度等
调度算法。
如何更好地讲解各种调度算法,训练学生的计算思维呢?笔者认为,操作系
统中出现的各类调度算法本身不难,重点是通过学习,让学生学会如何研究算法、
评价其性能,并进行改进,在这样的学习过程中训练学生的科研能力和计算思维。
因此,此类内容适合于让学生预习自学,完成相关模拟实验,并组织学生互动讨
论,启发学生从日常生活中提出简单的调度算法,再逐步改进完善,进行研究性
学习。历经数年的教学改革实践证明,该方法切实可行,部分学生完全有能力通
过自学,以研究方式设计、改进调度算法,完成噗拟实验。通过互动讨论交流,
其学习经验对其他同学亦具有激励和示范作用。
(3)多道程序设计技术:并发与并行
现代计算机系统一般都支持多道程序设计技术,即允许多道程序(进程)同
时驻留内存,在单处理器系统中,某时刻只允许一道程序运行(称为多任务并发)。
当正在运行的那道程序(进程)因为某种原因(比如等待输入或输出数据)暂时
不能继续运行时,系统将自动地启动另一道程序(进程)运行;一旦原因消除(比
如数据已经到达或数据已经输出完毕),暂时停止运行的那道程序(进程)在将
来某个时候还可以被调度继续运行。在多处理器系统中,某时刻允许多个任务同
时运行,称为多任务并行。与传统的支持单道程序设计技术的系统相比,支持多
道程序设计技术的计算机系统能显著提高效率。
单处理器系统中的并发实质上是一种串行技术,通过进程调度实现处理器的
快速切换,在一段时间内完成多个任务。可见,在个人计算机中同时打开多个
QQ窗口、播放音乐、收发电子邮件等任务,都是通过CPU快速切换执行各应用
程序完成的。
多道程序设计技术是现代操作系统的核心技术之一,也是一种非常重要的计
算思维。教学中,首先分析多道程序设计技术的概念,剖析其实现技术,区分单
处理器和多处理器系统中的实现差异。要求学生掌握单处理器多道程序系统中,
如何控制进程并发执行,如何实现进程同步与互斥。操作系统课程将进程的同步
与互斥抽象成生产者/消费者、读者/写者以及哲学家进餐三类经典问题,以此为
例,训练学生如何实现多进程同步与互斥的算思维能力。
(4)缓冲与多级存储体系
人们外出时,通常会携带一个随身包,其中装有一些日常必备用品,或装一
些外出办事临时的资料用品等,这就是一种缓冲技术。缓冲技术是现代计算机系
统中常用的技术,它利用多余的空间存储一些最近常用的数据,以加速数据的访
问速率。计算机中存在各种各样的缓冲区,例如,由于CPU的处理速度比访问
内存的速度快,在CPU中配置高速寄存器,存储CPU最近经常处理的数据和指
令,避免每次访问内存而降低计算机的效率。再如,由于内存的访问速率比磁盘
的访问速率快,在内存配置缓冲区,用于存储输出到磁盘或从磁盘输入内存的数
据。由于本地磁盘的访诃速率比网络存储访问速率快,在本地磁盘中配置缓冲区,
存储最近访问网络的数据等。
利用缓冲技术,尺多余的空间换取时间,可以构建计算机的多极存储体系。
下图示意了现代计算机金字塔结构的多级存储体系,即以容量小、价格昂贵、访
问速度快的寄存器为塔尖,以容量大、价格便宜、访问速度慢的外部存储器(如
磁盘)为塔基,塔身由存储容量、价格、访问速率等逐步变化的各级缓存和物理
内存构成。
昂贵、快速、小容量寄存器(Register)
CPU内高速缓存储(Cache)
CPU外高速缓存储(Cache)
主存储器(PrimaivStorage)
廉价、低速、大容量外部存储器(SecondaryStorage)
图现代计算机的多级存储体系
操作系统负责管理计算机系统中的各类缓冲存储区,包括缓冲区的分配与回
收、缓冲区内容的更新与置换等。该部分教学主要训练学生理解缓冲技术的基本
原理、缓冲技术的应用、缓冲区内容的置换算法等计算思维能力和方法,并启发
学生将缓冲技术从单机系统拓展到网络环境,将缓冲技术提升为一种计算思维。
(5)中断技术
现代计算机利用中断技术,支持多任务并发执行。当前正在执行的任务因为
某种原因被中断,计算机必须保存中断时的所有信息(称为中断现场),以便恢
复中断执行。例如,当CPU执行到某程序的一条数据输入指令时,程序执行被
中断,CPU保存该任务的中断现场,并给相应的输入设备发出数据输入命令,
CPU调度另外一个任务执行。当指定设备完成数据输入,向CPU发送一个中断
信号,告知其数据输入完毕。CPU将在适当时候,恢复被中断任务的现场,继
续其执行。
中断技术也属于计算思维训练的核心技术之一。正是基于中断技术,现代计
算机系统才能支持多道程序设计技术,才能实现处理器与I/O设备并行工作,以
及多任务并发执行。本部分应训练学生掌握中断处理技术,比较Windows和Linux
操作系统的中断技术异同,理解为什么Linux操作系统改进中断接收和处理方式
以后能快速响应实时任务。
(6)索引与冗余
文件是计算机系统中常用的数据组织形式,文件管理子系统负责文件的创
建、查找、分配存储空间等功能。一个大文件包含大批量数据,若顺序查找或插
入某条记录,效率非常低。因此,必须采用某种技术加快查找速度。一般,可以
采用折半查找、冒泡查找等技术,也可以为源数据建立索引。相对于源数据,索
引数据属于冗余信息。若考虑计算机的存储成本,冗余数据需要额外的存储空间。
然而,冗余的索引数据有利于提高检索速率。此外,有时为了确保数据安全,需
要增加数据备份,或保存源数据的校验信息,这些也是冗余数据,但同样有益。
可见,操作系统既追求提高资源利用率,也会利用冗余信息提高检索速率或
增加数据可靠性等,这就需要在存储空间利用率和检索效率或可靠性等性能之间
寻找一种平衡。事实上,讨论操作系统原理与实现技术时,很多地方都需要考虑
理论与工程实现之间的折中与平衡,这属于典型的计算思维。
(7)虚拟技术
虚拟技术是一种对计算机资源进行抽象模拟的技术。它可以在已有计算机硬
件资源的基础上,抽象化模拟出一整套或一部分虚拟的硬件资源,如CPU、内
存、I/O设备等。一个多用户多任务的单机系统中,物理上只装配了一个CPU,
通过多进程并发,让每个用户感觉到独占了一个CPU。这样,CPU被虚拟了。
基于虚拟技术,可以将外存的一部分虚拟为内存使用,让用户感觉扩大了内存空
间,这就是虚拟存储技术。同理,基于虚拟和网络技术,一台打印机也可以被虚
拟为多台打印机。
从计算思维的角度,不仅需要综合讲解操作系统中的虚拟技术,还应该进行
思维拓展,将虚拟技术延伸到网络环境,结合云计算、虚拟现实等其它相关领域,
开拓学生的思维,激发学生的学习兴趣,培养其解决工程、科学等实际问题的能
力。
《计算机操作系统》属于理论与工程实践并重的课程。目前呈现两大类教学
方式,一类鉴于实践环境搭建困难或深入操作系统内核的难度等因素阻碍,偏向
于理论讲授,导致很多学生感觉这是一门偏文科类课程,抽象且难以掌握。另一
类教学注重工程实践,要求学生进行某操作系统源码分析、改写或补充部分功能
模块,这对实践环境、教师和学生都有非常高的要求,很多学生难以完成任务。
我校《计算机操作系统》课程组注重计算思维训练,以理论讲授为主,配套不同
层次和难度的实验和课程设计。要求全体学生掌握操作系统中的部分关键技术、
原理及其实现,规定难度适中的课程实验和课程设计题目,并鼓励少数对操作系
统感兴趣的优秀学生攻克难度较高的工程和科研任务。历经数年的教学改革实
践,获得了同行和广大学生的一致认可和好评。当然,计算思维训练是一个系统
工程,不仅仅属于某一门课程的责任,需要贯穿于计算机基础、专业、学科的各
门课程和各个环节。在计算机类课程教学中,教师应将计算思维训练作为教学的
主要目的之一,并以此深化教育教学改革,帮助学生提升计算思维能力。而且,
不仅计算机专业的学生,非计算机专业的学生也同样需要提升计算思维能力。
下面按照课程章节分模块列举各部分的重点和难点,以及操作系统中若干经
典问题的有效解决办法。期望有助于帮助同学们学习该课程。
第一章计算机操作系统概述
重点难点学习指南
]、重点与难点
概M理解g区别,包括并发与并行、多道程序设计技术、操作系统的功能与
性能要素、执行模式(双模式)等。
2、解决办法
反复揣摩、理解、结合实际应用,如将多道程序设计技术与Web服务器的
工作方式,或个人PC机可以同时播放音乐、打印文档、上网聊天等操作关联起
来,形象实在,从日常应用的直观感受,逐渐建立起操作系统的抽象概念,树立
系统观和工程观。
第二章进程管理
重点难点学习指南
1、重点与难点
本章是该课程最重要,也是难度最大的部分,占用了最多的学时。重点与难
点:
①概念理解与区别
进程状态转换、进程切换与模式切换、进程与线程、同步与互斥。
②问题与解决
并发控制是多道程序系统的难点,操作系统O有一系列的解决方法,如硬件
方法、信号量方法、管程方法和消息传递方法等。课程通过经典进程同步与互斥
问题:生产者消费者问题、读者写者问题以及哲学家进餐问题等,生动呈现多进
程并发执行过程中遇到的同步与互斥问题,借助经典问题的解决,学会实现进程
的并发控制;多进程并发的另一问题即死锁问题,课程系统介绍了如何预防死锁、
如何避免死锁、及如何检测和解除死锁的具体方法.
、反复体会教学录像内容、结合操作系统实例分析,体会案例教学。亲身感受
(建议自己写程序实现)多进程并发执行、动态演示进程状态转换的过程,不同
状态进程排队的过程;进程调度算法;银行家算法;将进程死锁与交通阻塞联系
起来,将进程调度与超市排队结账联系起来,将信号量方法与交通灯联系起来等
等,有望收到理想的效果。
进程调度问题相而独立,但非常重要。建议采用研究性学习方法,通过现实
生活中的排队问题解决方案,提出多进程调度算法,并评价算法性能,再逐步改
进。课程录像中展示了我校学生如何研究性学习该部分内容,供学生们参考借鉴。
第三章存储管理
重点难点学习指南
本模块的重要程度和难度与进程部分相当,也占用了较多的学时。
1、重点与难点
①原理理解与应用
局部性原理的深入理解及其在各级存储体系中的应用(datacache,TLB,disk
cache,I/Obuffer)0
②问题与解决
分区/分页/分段/段页式存储管理技术及实现、虚拟分页系统的实现、页面置
换算法。
2办法
、重点讲解局部性原理,作为理解现代操作系统存储体系架构,提高系统效率
的重要的原理基础。它在计算机网络、Internet中也广泛采用,也是虚拟存储技
术实现的理论基础。逋过动态演示存储分区、分叶、分段技术,以及相应的地址
转换技术使学生理解。
第四章设备管理
重点难点学习指南
本章因为计算机外部设备的多样性、复杂性,而显得缺乏逻辑性与系统性。
课程主要讲授与操作系统相关的部分,如设备管理子系统的结构、缓冲存储技术、
操作系统与设备驱动程序之间的接口、磁盘调度算法等,而非具体设备的管理与
I/O实现细节。
1、重点与难点
①问题与解决
OS设备管理模块的结构、I/O缓冲技术、SPOOLing技术及其应用。
②算法与实现
各类磁盘调度算法的实现。
2、解决办法
从系统(子系统)设计的角度分析操作系统设备管理子系统的结构,从个人
PC机及计算机网络环境等讲解缓冲技术的实现与应用,从局域网环境中的打印
机共享讲解SPOOLing技术,及多种方式的磁盘调度技术。可见,理论联系实际
是本模块讲授的主要策略。
第五章文件管理
重点难点学习指南
本章介绍操作系统的软件资源管理功能,内容量不如进程和存储管理模块部
分,重点与难点在于讲解文件的逻辑组织结构、文件在外存的分配技术、索引结
点的使用与好处、文件共享的实现、文件目录的组织与管理等。本模块因为需要
介绍文件在外部存储空间的存储管理,故与存储管理模块有很多共性。我们将此
部分与存储管理结合、对比讲解,如磁盘整理与动态分区紧凑技术,外存空间分
配管理与内存分配管理技术对比介绍;将文件管理系统与数据库管理系统比较讲
解,效果显著。
第六章操作系统安全
重点难点学习指南
本章简要概述计算机操作系统安全的概念、安全机制的实施:文件保护机制、
访问矩阵、访问矩阵的修改、访问矩阵的实现。主要了解安全系统的模型、设计、
可信度验证。理解:操作系统安全的概念、安全机制的实施。掌握:文件保护、
访问矩阵、访问矩阵的修改、访问矩阵的实现。
实践教学与学习指南
《计算机操作系统》课程是一门理论和实践并重的课程,必须配备相应的实
验环节。该门课程的实验环节由两部分构成:课内实验和课外实验。目前我们的
配备情况是64学时课堂讲授+8学时课内实验+8学时课外实验+若干学时的课程
设计。当然,如果将小项目类型的作业计算在内,实验数应当更多。
为了在实践过程中充分发挥师生互动作用,课程组充分利用“实验室课堂”
和“案例库”,完成相应实践过程,达到能力训练和启发创新的目的。本课程的实
践教学环节包括三个大的部分,即:课程实验、应用实验和综合实验,并分成高、
中、低几个层次。其中,课程实验主要解决《计算机操作系统》学习后对原理、
算法的理解和设计能力。应用实验主要介绍现代主流操作系统(如UNIX/Linux
等)及其系统编程技术,训练学生在操作系统平台下的动手能力。综合实验(含
课程设计)。主要促使学生理解操作系统内核,开源码分析,内核和应用模块设
计等。是难度较大的实践环节,通过案例复现和模块替换实验等,掌握技术实现
和模块设计的方法与技巧。为有能力和有兴趣的同学提供了技术提高环节。
实验课程与《计算机操作系统》课堂教学有机结合,相辅相成。在课堂教学
中,比较全面、概括性地讲述操作系统基本概念,以及进程管理、处理机调度与
死锁、存储器管理、设备管理、文件管理等知识。课程实验要求完成并发程序设
计、进程同步与死锁、存储器分配与回收以及文件管理方法等,在计算机上模拟
实现,使学生能够达到以下教学目标:
(1)掌握计算机操作系统管理进程、处理机、存储器、文件系统的基本方法。
(2)了解进程的创建、撤消和运行,进程并发执行;自行设计解决哲学家就餐问题
的并发线程,了解线程(进程)调度方法;掌握内存空间的分配与回收的基本
原理;通过模拟文件管理的工作过程,了解文件操作命令的实质。
(3)了解现代计算机操作系统的工作原理,具有初步分析、设计操作系统的能力。
(4)通过在计算机上编程实现操作系统中的名种管理功能,在系统程序设计能力方
面得到提升。
根据实验教学目标,我们将实验题目分为三类:验证性(例如上述第一类)、
设计性(例如上述第二类)、综合性(例如上述后两类)。由于验证性实验题目比
较简单,一般由学生独立完成;设计性题目有一定的灵活性,一般安排2-3协作
完成;对于综合性题目,由于工作量较大,具有较高的难度和灵活性,因此我们
安排2-4人合作完成。
围绕课程大纲,设计了验证性、设计性和综合性三大类实验任务,具体描述
如下:
(1)验证性:
i.实验项目名称:进程调度算法设计实践
实验项目的目的和任务:通过该实验,加深对多道系统中调度算法的认识。
实现FIFO,RR(q=l),SPN,SRT,HRRN,FB六种调度算法。并通过输入一组进程
序列计算出每种算法的输出进程序列。
上机实验内容:
I)实现主程序及六种调度算法。
2)输入一组进程序列,对序列中的每一个进程,定义不同的优先级、总执
行时间,用六种调度算法输出调度最终的排序结果。序列例;
进程号12345678
优先级42213343
运行时间206036597182345
ii.实验项目名称:线程间同步与互斥
实验项目的目的和任务:通过多线程并发程序设计,掌握同步与互斥的设计
方法。实现一个生产者、消费者的两线程同步算法。
上机实验内容:
1)申请10个缓冲区。
2)编制生产者线程:首先产生一个随机数,写入到一个缓冲区中。其次将该
缓冲区置“满”标志。
3)编制消费者线程:取一个“满”标志的缓冲区中数据,打印输出,然后将该
缓冲区置“空”标志。
4)添加相应的同步互斥控制代码。
iii.实验项目名称:内存分配与回收设计
实验项目的目的和任务:学习内存管理的实现原理。实现一个基于伙伴算法
的内存分配回收算法,并通过输入一组内存请求与回收序列验证该算法执行
情况。
上机实验内容:
1)实现主程序及伙伴算法(设内存总量为1M)。
2)用如下请求和释放序列验证该算法执行情况。
请求100k——>请求240k——>请求64k——>请求256k——>释放
240k——>释放100k——>请求75k——>释放64k——>释放75k——>释放
256k
试输出每次请求和释放动作产生后的内存状杰。
iv.实验项目名称:文件复制
实验项目的目的和任务:掌握文件系统的系统调用的使用。产生两个文件A
和B,并将这两个文件内容交叉复制到文件C中,并输出文件C的结果。
上机实验内容:
1)产生一个1k的文件A,其内容为数字。
2)产生一个1k的文件B,其内容为字母。
3)以100字节为单位,将A、B两文件的内容交替复制到文件C中。最后
输出C的结果。
(2)设计性:
i.实验项目名称:Linux系统调用分析与实现
实验项目的目的和任务:理解操作系统内核与应用程序的接口关系:加深对
内核空间和用户空间的理解;学会增加新的系统调用。
上机实验内容:
1)增加系统调用函数
直接在原有程序文件中增加,减少修改Makefile文件的麻烦。该函数的名称
应该是新的系统调用名称前面加上sys_标志。例如新加的系统调用为
mycall(intnumber),i/usr/src/linux/kernel/sys.c文件中添加源代码,如下所示:
asmlinkageintsys_mycall(intnumber)
(
printkf'callnumberis%d\n”,number);
returnnumber;
)
2)连接新的系统调用
添加新的系统调用后,下一个任务是使Linux内核的其余部分知道该系统调
用的存在。为了从已有的内核程序中增加到新的系统调用函数的连接,需要
编辑两个文件。
第一个要修改的文件是:
/usr/src/linux/include/asm-i386/unistd.h
该文件中包含系统调用清单,用来给每个系统调用分配一个唯一的号码。将
新增的系统调用名称加到清单最后,并给它分配号码序列中下一个可用的系
统调用号。例如:
#definc_NR_mycall239
系统调用号为239,之所以系统调用号是239,是因为内核自身的系统调用
号码已经用到238。
第二个要修改的文件是:/usr/src/1inux/arch/i386/kernel/entry.S
该文件中有类似如下的清单:
longSYMBOL_NAME()
该清单用来对sys_caH_table口数组进行初始化。该数组包含指向内核中每个
系统调用的指针。这样就在数组中增加了新的内核函数的指针。在清单最后
添加一行:
longSYMBOL_NAME(sys_mycall)
3)重建新的Linux内核,作以下命令
makemcnuconfig配置内核选项
makedep生成依赖关系
makeclean清除旧的编译结果
makebzlmagenew编译内核映象
makemodules编译内核模块
makeinodulesjnslall安装内核模块
4)用新的内核启动系统
修改/etc/lilo.conf文件,添加新的引导内核:
image=/boot/bzlmage-new
label-liiiux-new
root=/dcv/hdb1
read-only
添加完毕后,为了使用新的lilo.conf配置文件,还应执行下面的命令:
#cp/usr/src/linux/arch/i386/boot/zlmage/boot/bzlmage-new
其次配置lilo:
#/sbin/lilo
当重新引导系统时,在boot:提示符后面有三种选择:linux-new、linux、dos。
选择linux-new即可以新内核启动。用新内核启动后则可使用新的系统调用。
5)使用新的系统调用
编写应用程序使用新添加的系统调用mycallo
(3)综合性
ii.实验项目名称:内核模块机制和新模块编写
实验项目的目的和任务:理解Linux操作系统模块机制,学会使用模块设计
系统的方法,学习编写一个新的内核模块。
上机实验内容:
1)设计一个在/proc中实现clock文件的模决,该文件只支持文件的read()
操作。当调用read。操作时,返回一个单一的ASCH字符串,其中包括用一
个空格分开的两个数字子串。例如,若系统时间变量xtime设置为:
xtime.tv_sec=923264577xtime.tv_usec=234438,则该模块必须返回如下形式
的一个字符串:923264577234438
2)写一个空内核模块,编译测试。
编辑:
#include<linux/kernel.h>
#include<linux/module.h>
intinit_module(){
printkC'Itisanullkernelmodule'rT);
return0;
voidcleanup_module(){
printkfiamexitingnow...\n,,);
编译•
gcc-c-Wall-D_KERNEL_-DMODULEtestmodule.c
运行:
insmodtestmodule.o〃装入模块
Ismod//检查装入是否成功
rmmodtcstmodulc〃卸载模块
Ismod〃检查卸载是否成功
3)生成一proc文件,以用于读取系统时钟。在模块中使用
proc_register()和proc_unregister()注册和注销。它们引用一个struct
proc_dir_entry数据结构,将该结构中getjnfo指针指向自己构造的读函数。
模版如下:
#include<linux/proc_fs.h>
int【
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 车联网边缘计算系统自适应资源管理方案研究
- 基于邻域视角的多标记数据降维算法研究
- 2025年业主支付委托保证合同参考模板(三篇)
- 房屋产权证明 买卖合同
- 2025年专利权转让服务合同范文(2篇)
- 2025年三方租房合同经典版(三篇)
- 2025年个人农田租赁合同标准版本(三篇)
- 多功能片材生产项目可行性研究报告
- 2023-2029年中国图书销售行业市场发展现状及投资方向研究报告
- 住房装修包装合同
- 2025年山西国际能源集团限公司所属企业招聘43人高频重点提升(共500题)附带答案详解
- 二零二五年仓储配送中心物业管理与优化升级合同3篇
- 2025届厦门高三1月质检期末联考数学答案
- 音乐作品录制许可
- 江苏省无锡市2023-2024学年高三上学期期终教学质量调研测试语文试题(解析版)
- 拉萨市2025届高三第一次联考(一模)英语试卷(含答案解析)
- 开题报告:AIGC背景下大学英语教学设计重构研究
- 师德标兵先进事迹材料师德标兵个人主要事迹
- 连锁商务酒店述职报告
- 2024年山东省烟台市初中学业水平考试地理试卷含答案
- 《实践论》(原文)毛泽东
评论
0/150
提交评论