当前位置: 首页 > news >正文

公司网站维护建设费入什么科目世界500强企业排名

公司网站维护建设费入什么科目,世界500强企业排名,做京挑客的网站,还有多少用.net做网站的🕺作者: 主页 我的专栏C语言从0到1探秘C数据结构从0到1探秘Linux 😘欢迎关注:👍点赞🙌收藏✍️留言 🏇码字不易,你的👍点赞🙌收藏❤️关注对我真的很重要&…

🕺作者: 主页

我的专栏
C语言从0到1
探秘C++
数据结构从0到1
探秘Linux

😘欢迎关注:👍点赞🙌收藏✍️留言

🏇码字不易,你的👍点赞🙌收藏❤️关注对我真的很重要,有问题可在评论区提出,感谢支持!!!

文章目录

  • 实验七 显示进程列表
    • 一、实验目的
    • 二、实验内容
    • 三、实验过程记录
      • 部分A
      • 部分B
    • 四、实验小结

实验七 显示进程列表

一、实验目的

掌握进程结构及进程管理原理

二、实验内容

  1. 实验名称:显示进程列表
  2. 实验任务:
    编写一个模块,将它作为Linux内核空间的扩展来执行,并报告模块加载时内核的当前进程信息,进一步了解用户空间和内核空间的概念。

三、实验过程记录

部分A

实验任务:查看系统已加载模块。写一个小的模块打印“hello world”。
查看已加载模块,如图所示。

编写小模块打印“hello world”
代码如下:
20191909.c文件

#include<linux/module.h>
int hello_init(void)
{printk("\nhello world\n");return 0;
}
void hello_exit(void){printk("\n bye bye world\n");
}
MODULE_AUTHOR("20191909");//id
MODULE_LICENSE("GPL");
module_init(hello_init);
module_exit(hello_exit);

Makefile文件

obj-m:=20191909.o
KERNELDIR ?= /lib/modules/$(shell uname -r)/build
PWD       := $(shell pwd)
default:
$(MAKE) -C $(KERNELDIR) M=$(PWD) modules

操作如下:

  1.  编译 make 如图1所示
    


图1

  1.  加载模块insmod 20191909.ko 如图2所示
    


图2

  1.  查看日志dmesg如图3所示
    


图3
4) 删除模块rmmod 20191909.ko 如图4所示


图4

  1.  查看日志dmesg如图5所示
    


图5

部分B

实验任务:设计模块遍历进程描述符链表,打印出系统的进程数目、当前进程,并尽量多地打印每个进程的信息。例如:进程PID,进程状态等。

编写代码如下:
20191909.c文件

#include <linux/init.h>
#include <linux/module.h>
#include <linux/proc_fs.h>
#include <asm/uaccess.h>
#include <linux/sched.h>
#include <linux/kernel.h>
MODULE_LICENSE("GPL");
static int num = -1;
module_param(num, int, S_IRUGO);
static __init int exp_init(void){struct task_struct *p = NULL;// for_each_process宏遍历系统中的每个进程,将其赋值给pprintk("数量:%d",num);for_each_process(p){if (num==0 )break;// 使用printk函数打印当前进程的PID和进程名称,real_parent->pid : 父进程id   __state : 状态printk("pid=%d,name=%s,parent_id=%d,state=%d\n", p->pid, p->comm,p->real_parent->pid,p->__state);num--;}return 0;
}
static __exit void exp_exit(void){printk("Good bye.\n");
}
module_init(exp_init);
module_exit(exp_exit);

Makefile 文件

obj-m:=20191909.o
KERNELDIR ?= /lib/modules/$(shell uname -r)/build
PWD       := $(shell pwd)
default:
$(MAKE) -C $(KERNELDIR) M=$(PWD) modules

操作如下:

  1.  编译make 如图6所示
    


图6

  1.  加载模块insmod 20191909.ko 如图7所示
    


图7

  1.  查看日志 dmesg 可以看到进程的PID、进程名称、父进程id、当前状态 如图8所示
    


图8

  1.  删除模块 rmmod 20191909.ko如图9所示
    


图9

四、实验小结

本次实验旨在通过编写Linux内核模块来了解用户空间和内核空间的概念,并掌握如何显示进程列表。实验分为两部分进行。
在实验的第一部分中,我们成功编写了一个简单的内核模块,用以打印“hello world”信息。通过编译、加载模块、查看日志和删除模块的步骤,我们确认了模块的正确加载和工作。这个过程加深了我们对内核模块生命周期管理的理解。
在实验的第二部分中,我们设计了一个更复杂的内核模块,用于遍历进程描述符链表,打印出系统的进程数目、当前进程以及尽可能多的进程信息(例如:进程PID,进程状态等)。通过这个过程,我们不仅学习了如何访问和操作内核中的进程信息,还加深了对Linux内核进程管理机制的了解。
存在的问题和注意事项:

  1. 在编写内核模块时,需要确保代码的稳定性和安全性,因为任何错误都可能导致系统崩溃或安全漏洞。
  2. 在使用printk进行调试时,应该注意其输出级别,以免产生大量的日志信息影响系统性能。
  3. 在遍历进程时,我们使用了for_each_process宏,需要了解其工作原理及如何正确使用它。
  4. 模块参数的使用提供了灵活性,但也需要注意确保传入的参数是合法的,防止模块运行时出现异常。
    有待提高的能力:
  5. 对内核编程的熟练度,包括更深入地理解内核API和内核编程的最佳实践。
  6. 对Linux内核的整体架构和机制的理解,特别是进程管理、内存管理和模块管理等方面。
  7. 调试技能的提高,包括使用更高级的内核调试工具和技术。
  8. 编写更加健壮和高效的内核代码的能力。

总体而言,本次实验不仅帮助我们实践了内核模块的编写和操作,还增进了我们对Linux内核的理解,为今后深入学习Linux内核打下了良好的基础。

http://www.hkea.cn/news/433604/

相关文章:

  • 帮人做网站 怎么收费怎么用网络推广
  • 网站排名优化建设百度广告投放技巧
  • 文件服务器网站搭建教程好的竞价托管公司
  • 黑龙江省城乡和住房建设厅网站首页百度链接地址
  • 网站模板修改工具专业seo关键词优化
  • 口碑好的句容网站建设yahoo搜索
  • 深圳网站建设外贸公司价格网络营销的背景和意义
  • 长春网站建设硕成传媒seo快速排名优化公司
  • web网站开发能使用c 吗免费建立个人网站申请
  • 织梦网站修改教程视频网站优化培训学校
  • 南沙区交通和建设局网站中国十大网络销售公司
  • 免费建设网站的方法百度网址大全 官网
  • 手机网站设计制作公司微信推广费用一般多少
  • 建设网站需要什么注册域名费用一般多少钱
  • 女性门户网站源码百度指数功能有哪些
  • 怎么帮公司做网站建设谷歌搜索引擎免费入口 香港
  • 请写出网站建设前期需要做的准备外贸定制网站建设电话
  • 南京门户网站建设网络营销优秀案例
  • 2012服务器如何做网站周口网络推广哪家好
  • 贵阳搜索玩的网站网络舆情软件免费入口
  • 前端自己写代码建网站要花多少钱游戏推广在哪里接活
  • 网站建设中+网页代码nba最新排名东西部
  • 东莞企业建设网站官网有限公司百度推广深圳分公司
  • 海外推广工作内容搜索引擎优化seo是什么
  • wordpress 发短信西安网络优化大的公司
  • dreamweaver个人网站南宁求介绍seo软件
  • 网站常用素材企业培训视频
  • 北京市通州区建设委员会网站网站新站整站排名
  • 太原网站推广只选中联传媒推广排名seo
  • 企业网站建设的常见流程为百度互联网营销顾问