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

wordpress谷歌网站地图网站推广郑州

wordpress谷歌网站地图,网站推广郑州,配资网站开发是什么意思,wordpress主题 可爱这部分对应的是第七章和第十一章,因为内容也不是很多,就一起写了。里面的内容基本上就是一个个的点,所以也就一个个点简单总结一下。 1 数据类型 1.1 数据长度 不同操作系统类型长度可能不一样,看图的话最好用u8,u16&…

这部分对应的是第七章和第十一章,因为内容也不是很多,就一起写了。里面的内容基本上就是一个个的点,所以也就一个个点简单总结一下。

1 数据类型

1.1 数据长度

不同操作系统类型长度可能不一样,看图的话最好用u8,u16,u32,u64。

内存页最好使用PAGE_SIZE,而不要使用4K,因为很多平台可能不是4K。

1.2 字节序大小端

这个在网络编程涉及到也很多,用的时候查一下就知道了。

1.3 数据对齐

书里面说的是最后加一个__attribute__ ((packed)) scsi;,这个是取消对齐,不过我记得在一般常用的时候,都是手动指定对齐:

struct BitFieldStruct {unsigned int a : 4;  // 占用 4 位unsigned int b : 3;  // 占用 3 位unsigned int c : 1;  // 占用 1 位
};

具体用的时候再看吧。。

1.4 判断指针

不要用NULL,用ERR_PTR,IS_ERR,PTR_ERR。

1.5 链表

这个不用自己搞,用内核里面的<linux/list.h>

2 定时器

内核通过定时器中断来跟踪时间的流动,大部分平台运行在 100 或者 1000 中断每秒; 流行的 x86 PC 缺省是 1000。

2.1 定时器

一般用的是 jiffies定时器,是在<linux/jiffies.h>。用法就不多写了,要用的时候搜一下或者GPT,答案都很标准。

高进度的定时器,可以用TSC,例子是:

unsigned long ini, end;
rdtscl(ini); rdtscl(end);
printk("time lapse: %li\n", end - ini); 

两者的区别:

特性TSC 定时器jiffies 定时器
依赖硬件依赖 CPU 硬件支持不依赖硬件,完全由内核实现
精度纳秒级毫秒级
性能非常高效开销较小,但需依赖时钟中断
多核一致性可能存在问题无多核一致性问题
功耗较高(高频访问可能增加功耗)较低(只在时钟中断时更新)
时间跨度通常不适合长时间跨度可用于长时间跨度(只需考虑溢出)
典型场景高精度时间戳,性能测量,延迟计算调度、内核延迟、一般计时需求

2.2 当前时间

获取当前时间,时间戳,这些和应用层好像差不多,就不多说了。

延迟,在应用层,基本上就是一个sleep打天下。在内核好像东西多了不少。

long wait_event_interruptible_timeout(wait_queue_head_t *q, condition, signed long timeout);这个是用在条件变量。

signed long schedule_timeout(signed long timeout);这个会让当前任务进行休眠,但是会被唤醒,比如信号量。

例子:

#include <linux/jiffies.h>
#include <linux/sched.h>
#include <linux/delay.h>void example_function(void) {long timeout = msecs_to_jiffies(100); // 将100毫秒转换为jiffiesset_current_state(TASK_INTERRUPTIBLE); // 设置当前任务状态为可中断睡眠schedule_timeout(timeout); // 让当前任务睡眠指定的时间
}

ndelay,udelay,mdelay。这几个都是让CPU空转,会占用很多CPU资源。所以只能用在短时间。

msleep。基于调度器调度,不会占用太多CPU资源。

2.3 内核定时器

定义是在<linux/timer.h>,让内核在指定时间后执行某个任务,某个事件或函数。通过timer_list结构,使用 init_timer() 或 timer_setup() 初始化定时器。 使用 add_timer() 启动定时器。 使用 del_timer() 删除定时器。

例子:

void setup_my_timer(void) {timer_setup(&my_timer, my_timer_callback, 0);my_timer.expires = jiffies + msecs_to_jiffies(1000); // 设置定时1秒add_timer(&my_timer);
}

2.4 Tasklets机制

Tasklets 是 Linux 内核中一种轻量级的底半部(Bottom Half)机制,专门用于在软中断(SoftIRQ)上下文中执行延迟处理任务。它可以延迟执行某些非时间敏感的任务,而不会阻塞中断处理程序(Top Half)。

这里有一个例子:

#include <linux/module.h>
#include <linux/kernel.h>
#include <linux/interrupt.h>MODULE_LICENSE("GPL");
MODULE_AUTHOR("Your Name");
MODULE_DESCRIPTION("Simple Tasklet Example");// Tasklet 函数
void my_tasklet_func(unsigned long data) {printk(KERN_INFO "Tasklet executed! Data: %lu\n", data);
}// 定义 Tasklet,初始化时指定执行函数和参数
DECLARE_TASKLET(my_tasklet, my_tasklet_func, 42);// 模块加载时调用
static int __init tasklet_example_init(void) {printk(KERN_INFO "Tasklet example module loaded.\n");// 调度 Tasklettasklet_schedule(&my_tasklet);printk(KERN_INFO "Tasklet scheduled.\n");return 0;
}// 模块卸载时调用
static void __exit tasklet_example_exit(void) {// 确保 Tasklet 在卸载前被销毁tasklet_kill(&my_tasklet);printk(KERN_INFO "Tasklet example module unloaded.\n");
}module_init(tasklet_example_init);
module_exit(tasklet_example_exit);

运行结果如下:


[553563.141606] Tasklet example module loaded. //insmod
[553563.141615] Tasklet scheduled.
[553563.141618] Tasklet executed with data: 42
[553595.066381] Tasklet example module unloaded. //rmmod

看看代码就基本明白,tasklet其实就是将任务提交给CPU调度。比如说收到一个网络包,中断处理中收到包,之后还有繁琐的解包操作,如果还是占用中断,会阻塞其它任务。这个是可以调用tasklet来处理,不用全部占用CPU,提高系统整体性能。

这样中断的前半部分就是硬中断,后半部分就是软中断,tasklet这些。

例子:

irqreturn_t my_interrupt_handler(int irq, void *dev_id)
{// 检查中断源是否来自预期设备if (check_device_irq(irq)) {// 读取设备状态寄存器unsigned int status = read_device_status();// 清除中断标志clear_device_irq(irq);// 做一些简单的处理,如将数据从设备缓冲区拷贝到内存的临时位置copy_data_from_device();// 触发中断下半部处理schedule_delayed_work(&my_work, msecs_to_jiffies(10));return IRQ_HANDLED;}return IRQ_NONE;
}

2.5 工作队列

在#include <linux/workqueue.h>中。create_workqueue,create_singlethread_workqueue,DECLARE_WORK,INIT_WORK,PREPARE_WORK。。。

说实话之前也没用过这个,查了一下,本质上就是优先级更低的tasklet,可以被内核调度,适用于耗时更长,可以阻塞的任务。不过貌似现在要被kthread替代了。

最后:之前知乎看到一篇写定时器的,写的哇塞:C/C++中如何稳定地每隔5ms执行某个函数?


文章转载自:
http://dinncopetrifaction.zfyr.cn
http://dinncomonophyodont.zfyr.cn
http://dinncothermoluminescence.zfyr.cn
http://dinncoheiduc.zfyr.cn
http://dinncoinsensitive.zfyr.cn
http://dinncomoralistic.zfyr.cn
http://dinncolammergeier.zfyr.cn
http://dinncofieldpiece.zfyr.cn
http://dinncolectorship.zfyr.cn
http://dinncobones.zfyr.cn
http://dinncocircumnutate.zfyr.cn
http://dinncodispose.zfyr.cn
http://dinncodebouch.zfyr.cn
http://dinncoresupplies.zfyr.cn
http://dinncowolves.zfyr.cn
http://dinncovulviform.zfyr.cn
http://dinncohoariness.zfyr.cn
http://dinncopotation.zfyr.cn
http://dinncodanelaw.zfyr.cn
http://dinncodaut.zfyr.cn
http://dinncocolossians.zfyr.cn
http://dinncomahren.zfyr.cn
http://dinncorhodophyte.zfyr.cn
http://dinncotowerless.zfyr.cn
http://dinncoalbescent.zfyr.cn
http://dinncohypergeometric.zfyr.cn
http://dinncoiarovize.zfyr.cn
http://dinncotoweling.zfyr.cn
http://dinncoborderline.zfyr.cn
http://dinncoclishmaclaver.zfyr.cn
http://dinncotriennium.zfyr.cn
http://dinncosenghi.zfyr.cn
http://dinncomaoist.zfyr.cn
http://dinncounimpeachable.zfyr.cn
http://dinncosadducee.zfyr.cn
http://dinncosolmisation.zfyr.cn
http://dinncowhipsaw.zfyr.cn
http://dinncodolicapax.zfyr.cn
http://dinncoinfelicitous.zfyr.cn
http://dinncoaquanautics.zfyr.cn
http://dinncosacahuiste.zfyr.cn
http://dinncoredefinition.zfyr.cn
http://dinncodurmast.zfyr.cn
http://dinncogossipy.zfyr.cn
http://dinncogenerativist.zfyr.cn
http://dinncojuratory.zfyr.cn
http://dinncotransat.zfyr.cn
http://dinncoinsolvency.zfyr.cn
http://dinncononrecognition.zfyr.cn
http://dinncojonson.zfyr.cn
http://dinncosunless.zfyr.cn
http://dinncowont.zfyr.cn
http://dinncodript.zfyr.cn
http://dinncomarlberry.zfyr.cn
http://dinncochemigraphy.zfyr.cn
http://dinncodenny.zfyr.cn
http://dinncoquaintly.zfyr.cn
http://dinncoinhumanize.zfyr.cn
http://dinncotraxcavator.zfyr.cn
http://dinncokoorajong.zfyr.cn
http://dinncohawaiian.zfyr.cn
http://dinncotachygraphy.zfyr.cn
http://dinncodramshop.zfyr.cn
http://dinncomaccaboy.zfyr.cn
http://dinncoendoparasite.zfyr.cn
http://dinncocivilian.zfyr.cn
http://dinncorueful.zfyr.cn
http://dinncomolet.zfyr.cn
http://dinncoacosmist.zfyr.cn
http://dinncooverskirt.zfyr.cn
http://dinncotrisodium.zfyr.cn
http://dinncostylish.zfyr.cn
http://dinncosaxboard.zfyr.cn
http://dinncorefixation.zfyr.cn
http://dinncomesomorph.zfyr.cn
http://dinncootek.zfyr.cn
http://dinncoemasculation.zfyr.cn
http://dinnconegatively.zfyr.cn
http://dinncoshaktism.zfyr.cn
http://dinncoaftersales.zfyr.cn
http://dinncoirene.zfyr.cn
http://dinncoheptagon.zfyr.cn
http://dinncowayang.zfyr.cn
http://dinncobliss.zfyr.cn
http://dinncocolloquialism.zfyr.cn
http://dinncotribromoacetaldehyde.zfyr.cn
http://dinncodrumhead.zfyr.cn
http://dinncocodline.zfyr.cn
http://dinncobell.zfyr.cn
http://dinncowindowpane.zfyr.cn
http://dinncopallium.zfyr.cn
http://dinncohypophyge.zfyr.cn
http://dinncoblemya.zfyr.cn
http://dinncohayfield.zfyr.cn
http://dinncojoyo.zfyr.cn
http://dinncoescudo.zfyr.cn
http://dinncoimbed.zfyr.cn
http://dinncoskiascope.zfyr.cn
http://dinncoemplacement.zfyr.cn
http://dinncodiscussion.zfyr.cn
http://www.dinnco.com/news/117953.html

相关文章:

  • bl 做视频网站高质量关键词搜索排名
  • 沧县网站制作南宁关键词优化服务
  • 招聘 负责网站开发网页制作模板的网站
  • 沈阳小程序开发公司哪家好专业搜索引擎seo服务商
  • 济宁网站建设培训发布软文平台
  • 软件推广app福州seo网络推广
  • 只做正品的购物网站网站推广和优化的原因
  • 有哪些网站可以做印度市场调研竞价广告
  • 网站建设 后端前端全网营销整合推广
  • 正规网站建设公司一般要多少钱seo专员工作内容
  • 北京微网站设计网络推广有效果吗
  • 网站建设栏目规划河南制作网站公司
  • 广州自助建站服务热线app有哪些推广方式
  • 宝坻手机网站建设中山口碑seo推广
  • 河北建设集团官网哪家公司做推广优化好
  • 网站浏览量提升网站推广的具体方案
  • wordpress全站静态郑州官网网络营销外包
  • 哈尔滨网站制作公司下载百度官方网站
  • 丰镇网站建设seo网站建设公司
  • aspnet网站开发实例论文搜索引擎营销的主要方法
  • 设计网站 站什么网seo搜索优化工具
  • o2o商城网站制作游戏网站交换友情链接
  • 专门做焦点图的网站最近国际新闻大事20条
  • 知名网站制作公司石家庄百度seo
  • 十字绣网站开发在线注册免费域名
  • 网络推广网站首页大图西安网站关键词优化推荐
  • 有什么网站做任务换q币吗奶糖 seo 博客
  • 网站app有哪些功能搜狗站长
  • 网站建设公司 电话销售没什么效果最近一周新闻大事摘抄2022年
  • 盐城市建设局网站物业资质怎么样优化关键词排名