来的jiffies数目了。
5、源程序代码清单(参考)
#define MODULE #include
struct proc_dir_entry *proc_pf;
struct proc_dir_entry *proc_pfcount, *proc_jiffies;
extern unsigned long jiffies, pfcount;
static inline struct proc_dir_entry *proc_pf_create(
const char* name, mode_t mode,
get_info_t *get_info)
return create_proc_info_entry(
name, mode,
proc_pf, get_info);
}
int get_pfcount(char *buffer, char **start, off_f offset, int length) {
int length =0;
length = sprintf(buffer, \ return length; }
int get_jiffies(char *buffer, char **start, off_f offset, int length) {
int length =0;
length = sprintf(buffer, \ return length;
}
int init_module(void) {
proc_pf =proc_mkdir(\
proc_pf_create(\ proc_pf_create(\ return 0; }
void cleanup_module(void)
{
remove_proc_entry(\ remove_proc_entry(\ remove_proc_entry(\
6. 进程通信
6.1 实验5.1 观察实验
1、实验目的与内容
在Linux下,用ipcs()命令观察进程通信情况,了解Linux基本通信机制。
2、实验原理
Linux IPC继承了Unix System V及DSD等,共有6种机制: 信号(signal)、管道(pipe和命名管道(named piped)、消息队列(message queues)、共享内存(shared memory segments)、信号量(semaphore)、套接字(socket)。 本实验中用到的几种进程间通信方式:
(1)共享内存段(shared memory segments)方式
– 将2个进程的虚拟地址映射到同一内存物理地址,实现内存共享
– 对共享内存的访问同步需由用户进程自身或其它IPC机制实现(如信号量) – 用户空间内实现,访问速度最快。
– Linux利用shmid_ds结构描述所有的共享内存对象。 (2)信号量(semaphore)方式
– 实现进程间的同步与互斥 – P/V操作, Signal/wait操作
– Linux利用semid_ds结构表示IPC信号量 (3)消息队列(message queues)方式
– 消息组成的链表,进程可从中读写消息。 – Linux维护消息队列向量表msgque,向量表中的每个元素都有一个指向msqid_ds结
构的指针,每个msqid_ds结构完整描述一个消息队列
LINUX系统提供的IPC函数有: ? msgget(关键字,方式):创建或打开一个消息队列
? msgsnd(消息队列标志符,消息体指针,消息体大小,消息类型): 向队列传递消息 ? msgrcv(消息队列标志符,消息体指针,消息体大小,消息类型): 从队列中取消息
? msgctl(消息队列标志符,获取/设置/删除,maqid_ds缓冲区指针): 获取或设置某
个队列信息,或删除某消息队列
Linux系统中,内核,I/O任务,服务器进程和用户进程之间采用消息队列方式,许多微内核OS中,内核和各组件间的基本通信也采用消息队列方式.
6.2 实验5.2 代码分析
1、实验目的
通过分析Linux中相关模块调用主线的代码结构,了解模块调用机制。
2、实验内容
阅读 Linux/Minix中以下模块的调用主线,并写出分析报告
? kill系统调用内部实现模块调用主线 ? pipe系统调用内部实现模块调用主线
3、实验结果示例
进程的创建: #include
pid_t pid; pid = fork (); if (pid == 0) { }
printf (\pid = fork (); if (pid == 0) {
printf (\
} else {
} else { printf (\}
return 0;
kill命令调用主线:
先向Linux系统的内核发送一个系统操作信号和某个程序的进程标识号,然后系统内核就可以对进程标识号指定的进程进行操作。比如在top命令中,我们看到系统运行许多进程,有时就需要使用kill中止某些进程来提高系统资源。在讲解安装和登陆命令时,系统多个虚拟控制台的作用是当一个程序出错造成系统死锁时,可以切换到其它虚拟控制台工作关闭这个程序。
管道间通信: #include
相关推荐: