操作系统实训总结
放假回到家,看到这几个周实训做的工作,以及散乱的文档与资料,觉得应该整理一下,面对操作系统实训,其实感悟是很多的,我常说操作系统是精神层面的,非应用层面,学好操作系统,再来应用,便有了一个高度,在原理层面上有了了解,做起事情来才会显得合理,解决起问题来才能有思路。
本次实训,在linux系统进行,按照课本讲解,学习理论,做实验,再分析。
实训之前:你懂得操作系统内核吗?你知道进程间如何通信吗?proc是啥?内存,内存是如何管理的?信号量,在真正编程时咋用,难道还是伪代码?共享内存是啥?设备驱动程序到底是怎么回事?
实训之后:
1、操作系统是分内核空间和用户空间的。
程序,我们不仅可以写应用程序,通过系统调用操作内核,还可以写linux内核模块,放入内核直接运行。
系统调用是操作系统提供给应用程序使用操作系统服务重要接口,也正是通过系统调用机制,操作系统屏蔽了用户直接访问操作系统内核的可能性。幸运的是,Linux操作系统提供了LKM机制可以使我们在内核空间工作。
2、proc伪文件系统
正如上述所说,Linux内核模块可以使我们在内核空间工作,一个重要组成部分就是proc伪文件系统。它为用户提供了动态操作Linux内核信息的接口,是除系统调用外另一个重要的Linux内核空间和用户空间交换数据途径。与系统调用主要提供函数级的服务不同,proc机制更侧重于管理。
proc动态改变、只存在内存中。主要包含以下信息:与进程相关的目录,通用系统信息,网络信息,系统控制信息。
使用seq_file机制可以正确读写proc伪文件的信息。seq_file是内核空间中proc和内核模块之间的操作机制。
seq_file机制对proc伪文件的操作主要包括两个层面:首先是对proc伪文件进行打开、读、写等文件级别的操作,使用struct file_operations结构体变量进行定义;其次是对proc伪文件记录级别的操作,也就是如何遍历并读取序列中的各个记录,使用struct seq_operations结构体变量进行定义,包含start、show、next和stop这四个函数。
3、进程间通信
(方法有很多,