操作系统课程设计indoec流程及代码分析内容摘要:
iget()函数的流程图(图 18))。 2. 2主要目标 主要分析 程序中的处理 i 节点的主要处理函数,包括 iget()、iput()、 bmap(),以及其他一些辅助函数。 结合代码对主要函数功能进行分析, 并画出 函数间调用关系结构图或程序流程图。 3.头文件的分析 3. 1 头文件 panic(const char*str)。 //标准打印(显示)函数 printf()。 //内核专用的打印信息函数,功能与 printf()相同 printk()。 //往 tty 上写指定长度的字符串。 第 4 页 3. 2 头文件 extern void sleep_on(struct tast_struct**p)。 //不 可中断的等待睡眠 extern void interruptible_sleep_on(struct tast_struct**p)。 //可中断的等待睡眠 extern void wake_up(struct tast_struct**p)。 //明确唤醒睡眠的进程。 3. 3 头文件 sti()。 //开中断嵌入汇编宏函数 cli()。 //关中断 3. 4 头文件 extern struct m_inode inode_table[NR_INODE]。 //定义 i 节点表数组( 32 项) extern void truncate(struct m_inode*inode)。 //刷新 i 节点信息。 extern voic sync_inodes(void)。 //等待指定的 i 节点。 extern void brelse(struct buffer_head*buf)。 //读取指定的数据块。 4.数据结构的分析 4. 1 struct buffer_head{… }。 //缓冲块头数据 结构 ,在程序中常用 bh 来表示 buffer_head 类型的缩写(极为重要) (结构 见 图 1) 第 5 页 b _ d a t ab _ b l o c k n rb _ l o c kb _ d e vb _ d i r tb _ c o u n t指 向 该 缓 冲 块 中 数 据 区 的 指 针块 号使 用 该 块 的 用 户 数已 修 改 ( 脏 ) 标 志缓 冲 区 是 否 被 锁 定数 据 源 设 备 号„其 它 省 略 图 1 struct buffer_head 结构体 4. 2 struct d_inode{… }。 //磁盘上的索引节点 (i 节点 )数据结构。 4. 3 struct m_inode{… }。 //在内存中的 i 节点结构 (结构见图 2) i _ l o c ki _ w a i ti _ p i p ei _ d e vi _ d i r ti _ c o u n t锁 定 标 志等 待 该 I 节 点 的 进 程引 用 计 数 值已 修 改 ( 脏 ) 标 志管 道 标 志设 备 号„其 它 省 略 图 2 struct m_inode 结构体 4. 4 struct super_block{… }。 //内存中磁盘超级块结构 (结构见图 3) s _ t i m es _ r d _ o n l ys _ l o c ks _ d e vs _ d i r ts _ i m o u n t修 改 时 间只 读 标 志被 安 装 到 的 i 节 点已 修 改 ( 脏 ) 标 志被 锁 定 标 志超 级 块 所 在 的 设 备 号„其 它 省 略 图 3 struct super_block 结构体 4. 5 struct d_super_block{… }。 //磁盘上超级块结构 4. 6 struct m_inode inode_table[NR_INODE]={{0,},}。 //内存中 I 节点表 第 6 页 5.函数的分析 5. 1 read_inode()函数分析 5. 1. 1 函数头: static void read_inode(struct m_inode*inode)。 5. 1. 2 主要功能 :读取指定 I 节点信息;从设备上读取含有指定 I 节点信息的 I 节点盘块,然后复制到指定的 I 节点结构中。 为了确定 I 节点所在的设备逻辑块号(或缓冲块),必须首先读取相应 设备上的超级块,以获取用于计算逻辑块号的每块 I 节点数信息 I 节点所在的逻辑块号后,就把该逻辑块读入一缓冲块中。 然后把缓冲块中相应位置处的 I 节点内容复制到参数指定的位置处。 5. 1. 3 流程图: (见图 4) 图 4 read_inode()函数流程图 锁定该 I 节点 从设备上取得超级块否。 Y N 提示从其他地方读入 计算设备逻辑块号 复制到 indoe 指针所指位置处 Brelse(bh) unlock_inode(inode) 第 7 页 5. 2 write_inode()函数分析 5. 2. 1 函数头: static void write_inode(struct m_inode*inode)。 5. 2. 2 功能分析: 将 i 节点信息写入缓冲区中。 该函数把参数指定的 i节点写入缓冲区相应的缓冲块中,待缓冲区刷新时会写入盘中。 5. 2. 3 流程图: (见图 5) 图 5 write_inode()函数流程图 5. 3 sleep_on()函数分析 5. 3. 1 函数头: void sleep_on(struct tast_struct**p)。 5. 3. 2 功能分析: 把当前任务置为不可中断的等待状态,并让睡眠队列锁定该 I节点 lock_inode(inode) 修改过或设备号 0 否。 Y N 退出 计算设备逻辑块号 复制到逻辑块对应该 I 节点项位置处 置缓冲区已修改标志 bhb_dirt=1 内容与缓冲区一致 bhb_dirt=0 Brelse(bh)。 unlock_inode(inode) 结束 第 8 页 列头指针指向当前任务,只有明确地唤醒时才会返回。 该函数提供了进 程与中断处理程序之间的同步机制。 函数参数 p 是等待任务队列列头指针。 指针是含有一个变量地址的变量。 这里参数 p 使用了指针的指针形式‘ **p’,这是因为 C 函数参数只能传值,没有直接的方式让被调用函数改变调用该函数程序中变量的值。 但是指针‘ *p’指向的目标(这里是任务结构)会改变,因此为了能修改调用该函数程序中原来就是指针变量的值,就需要传递指针‘ *p’的指针,即‘ **P’。 5. 4 wait_on_inode()函数分析 5. 4. 1 函数头: static inline void wait_on_inode(struct m_inode*inode)。 5. 4. 2 函数的 功能: 等待指定的 i 节点可用 ; 如果 i 节点已被锁定,则将当前任务置为不可中断的等待状态,并添加到该 I 节点的等待队列 i_wait中,直到该 i 节点解锁并明确地唤醒本任务。 5. 4. 3 程序流程图: (见图 6) 图 6 wait_on_inode()函数流程图 关中断 cli() 开中断 sti() I 节点锁定否。 N Y sleep_on(amp。 inodei_wait) 结束 第 9 页 5. 5 lock_inode()函数分析 5. 5. 1 函数头: static inline void lock_inode(struct m_inode*inode)。 5. 5. 2 函数的功能: 对指定的 I 节点上锁;如果 I 节点已被锁定 (即当inodei_lock=1),则将当前任务置为不可中断的等待状态,并添加到该 I节点的等待队列 i_wait 中。 直到该 I 节点解锁 (inodei_lock=0 时 )并明确地唤醒本任务。 然后对其上锁 (inodei_lock=1)。 5. 5. 3 流程图: (见图 7) 图 7 lock_inode()函数流程图 5. 6 unlock_in。操作系统课程设计indoec流程及代码分析
相关推荐
钢 卷第 5 页 共 11 页 外径的减小,该角度将越来越大。 以致在钢带粘结处出现较大范围的撕裂痕。 图 3 4. 平整与振动纹 平整带钢表面振动纹缺陷是常见缺陷。 振动纹在平整过的带钢表面及平整订购的支承辊表面表现为明暗交替、互相平行且沿轧制方向横向布置的条纹,如图 4 图 4 所示。 这些条纹有的有手感, 有的无手感,对产品的使用影响较大。 振动纹产生的原 因
库。 教师工作量管理信息系统流程图 教师工作量管理信息系统流程图 教师教学工作量管理信息系统的开发 发学工作量管理信息系统常用控件: 1.) ADO Data 控件:(简称 ADO 控件)是 中文版提供的一个 Active控件,与 VB 固有的 Data 控件相似,可以快速建立数据绑定的控件和数据提供者之间的联系。 可实现以下属性: ● .连接本地数据库或远程数据库 ●
系统所需要解决的问题有 以下几点。 (1) 照明系统本身的节能问题; (2) 传感器与教室灯配合安装的问题; (3) 环境光参数输入采集的问题; (4) 人体存在传感器参数输入采集问题; (5) 开、关灯的自动与手动兼容的措施。 本章小结 本章主要讲述了系统的整体设计思想和系统的方案分析,以及所需要解决的关键问题。 目的在于 叙述 本系统所要实现的目标和系统所解决的问题,以及实现的方式和方法
体完成工作活动与任务时所具备的基本条件或个性要求、潜在能力等。 它具有基本作用性、抽象性、可塑性和潜在性(要有意识地挖掘培养才能发现)。 可塑性是指人除了生理中的遗传素质外,其它个体素质大部分都是后天形成的。 不健全的素质可能通过后天努力健全起来,缺乏的素质可以通过实践和学习获得不同程度的弥补。 本文所指素质强调包括能力在内,这里不做素质与能力的区别研究。 那么 HR应具备哪些素质呢。