导航:首页 > 编程知识 > ke哪些编程软件Linux

ke哪些编程软件Linux

发布时间:2025-04-01 00:37:22

1. linux怎么读翻译成中文是什么谢谢。

Linux怎么读?在中文中,它通常读作“利纳斯”。具体读音分解为四个音节:
第一个音:“li”读第一声;第二个音:“na”读第三声;第三个音:“ke”读第三声;第四个音:“si”读轻声。

Linux的具体意思是什么呢?Linux是一种类Unix计算机操作系统,其核心也被称为“Linux”。从严格意义上讲,Linux这个词仅仅指代Linux内核。但在实际应用中,人们习惯于用“Linux”来指代基于Linux内核并结合了GNU工程的各种工具和库文件的操作系统。

Linux这个名称来源于计算机爱好者Linus Torvalds。它不仅是开源软件和自由软件的一个典型例子,也是开放源代码发展中的著名案例。

准确、快速地回答问题,是我的服务宗旨。希望您满意并采纳我的回答。

2. Linux内存泄漏调试利器-valgrind

valgrind是一个提供了一些debug和优化工具的工具箱,能够有效减少程序中的内存泄漏或错误访问。默认使用memcheck模块来检测内存问题。memcheck模块检测内存问题的关键在于建立两个全局表,以此来跟踪内存使用情况。



使用valgrind的命令选项需注意:基本命令格式为valgrind --leak-check=yes ./a.out arg1 arg2。为了能在源代码中准确定位问题,建议在编译时添加-g选项并选择O0优化。



接下来,我们通过一个示例代码展示valgrind的使用方法和结果解析。执行valgrind检测后,输出结果如下:



==393==:此为执行程序的进程ID


Invalid write of size 4:表示程序在源代码第6行出现了错误,显然这里存在越界访问的情况,因此报出invalid write错误。


40 bytes in 1 blocks are definitely lost in loss record 1 of 1:说明程序存在内存泄露问题,泄露的大小为10个int类型的40字节。


LEAK summary也会展示内存泄露的总体情况。



若想深入学习Linux内核源码分析,可以参考以下链接:ke.qq.com/course/403254...



对于内存问题的分析,valgrind能够提供如下几种常见类型:



4.1 写入非法内存地址



当访问分配的内存区域之外的空间时,valgrind会报出类似以下错误信息:


Invalid write of size x


后接调用栈信息



4.2 读取非法内存地址



与写入非法内存地址类似,但此时是读取而不是写入,错误信息格式为:


Invalid read of size x


后接调用栈信息



4.3 读取未初始化内存区域



访问未初始化的内存区域时,valgrind会显示以下错误:



4.4 内存双重释放



当程序尝试释放已经被释放的内存时,valgrind会报出如下错误,显示两次free的位置:



转载于:https://mp.weixin.qq.com/s/DPeQk7n2ZyMWXDJ0zYrVjg

3. workqueue(linux kernel 工作队列)

工作队列允许我们把工作推迟完成,或是把高耗时的任务放在另一个线程执行。简单说就是我们定义一个“工作函数”,然后在任意位置,可以触发一次这个函数的运行。并且这个“工作函数”是在其它线程执行的,不会阻塞触发者。例如在中断函数里,不宜执行太复杂的逻辑,那么就可以把相关的逻辑交给工作队列来做,在中断函数中只做一个“触发工作函数运行”的动作,然后就可以退出中断了。这就是linux的“中断下半部”。linux官方是不提倡内核开发者使用线程(kethread)的,所以一些需要线程来处理的逻辑,我们也可以用工作队列来实现。

每个工作队列都对应一条或多条工作者线程,由这些工作者线程将队列中等待执行的工作逐一出队、执行。而触发一次工作,则是把这个工作任务加入到队列中,排队等待执行。由于其本质是线程,所以队列中的工作函数是允许睡眠的。这是“中断下半部”选择workqueue还是tasklet(不可睡眠)的重要依据。另外,工作队列不仅支持异步执行,还支持延迟执行,即让指定的工作任务在特定的延时后再执行。

CMWQ全称叫“并发管理工作队列”。要理解这个名称,我们首先要理清除几个概念:当管理者只有一名工人的时候,所有工作任务就只能一件一件的按顺序完成了。但如果给这个管理者配置一个人才储备库,那么当第一名工人的工作任务遇到阻塞不能马上完成时,管理者就可以从人才储备库抽调第二名工人,让其马上开始做第二份工作任务。依次类推,这样就能在更短的时间内完成多份工作。当一名工人完成一份工作任务后,若是没有新工作任务可分配,就可以把这名工人还回给人才储备库,让其他的管理者可以调用,不会浪费资源。工作任务自然就是我们指定的“工作函数”,而“工作任务遇到阻塞”就是“工作函数中遇到睡眠”。以下为一个例子,分别使用两种模式运行两个“执行1秒-睡眠1秒后结束”的任务(w0、w1)。

使用workqueue的步骤如下:①包含头文件 #include;②声明一个工作变量 struct work_struct(如果要有延时功能,则是延时工作变量 struct delayed_work);③实现一个工作函数 void *work_fun(structwork_struct*work);④初始化工作(绑定work函数);⑤激活一次工作(work函数将被调用)。以下是使用系统共用队列来运行work的例子。运行结果是:所以 demo_work 和 demo_init 是并行运行的,其中的延时不会阻塞 schele_work 调用者,相当于在另外一条线程执行。但是,这个demo_work是会占用系统工作队列的资源的,如果工作池(线程池)已耗尽,那么这个1秒延时就会阻塞别的任务。如果不想阻塞其它的系统work,则可以使用私有队列。

所谓私有队列就是模块自行申请一个工作队列workqueue_struct。以下是使用私有队列来运行work的例子。这样做的好处是,本模块work不会影响系统其它work的运行,同样的,本模块work也不会被系统其它work所阻塞。坏处就是多了一份开销。如果希望一个工作在某个时间之后再运行(而不是马上就绪),那么可以使用延时工作。这个例子的打印结果是:在 demo_work 运行前,还可以通过 cancel_delayed_work(&dm->dwk) 来取消。上面的“工作函数”回调,系统会传入work_struct的指针,这样我们就可以通过container_of获取到宿主结构体的数据(例如dm->name)。

如果想要快速使用workqueue,可以参考以下步骤:包含头文件 #include;声明一个工作变量 struct work_struct;实现一个工作函数 void *work_fun(structwork_struct*work);初始化工作(绑定work函数);激活一次工作(work函数将被调用)。

以下为使用系统共用队列来运行work的例子:运行结果是:所以 demo_work 和 demo_init 是并行运行的,其中的延时不会阻塞 schele_work 调用者,相当于在另外一条线程执行。但是,这个demo_work是会占用系统工作队列的资源的,如果工作池(线程池)已耗尽,那么这个1秒延时就会阻塞别的任务。如果不想阻塞其它的系统work,则可以使用私有队列。

使用私有队列来运行work的例子:这样做的好处是,本模块work不会影响系统其它work的运行,同样的,本模块work也不会被系统其它work所阻塞。坏处就是多了一份开销。

如果希望一个工作在某个时间之后再运行(而不是马上就绪),那么可以使用延时工作。这个例子的打印结果是:在 demo_work 运行前,还可以通过 cancel_delayed_work(&dm->dwk) 来取消。上面的“工作函数”回调,系统会传入work_struct的指针,这样我们就可以通过container_of获取到宿主结构体的数据(例如dm->name)。

工作队列模块在源码中的相对路径是:kernel/workqueue.c 和 include/linux/workqueue.h。官网地址(5.16.5版本):git.kernel.org/pub/scm/...。以下为几个核心步骤的代码分析:初始化工作任务、创建工作队列、触发工作任务。

工作队列的主要流程分析完成,更多的大量细节和精髓,就需要我们自己对比着阅读源码来领悟。以下为工作队列模块关键函数的代码流程。

阅读全文

与ke哪些编程软件Linux相关的资料

热点内容
在哪里看电商销售数据 浏览:135
win10覆盖txt文件找回 浏览:556
哪个网站可以听高中的课 浏览:381
iphone5s查看文件夹 浏览:844
类似创客贴的app工具有哪些 浏览:81
苹果7手机型号怎么看 浏览:135
高通手机升级找不到那个文件 浏览:593
工程造价工资和软件编程哪个累 浏览:669
公考报名文件路径 浏览:988
人脸识别系统招标文件 浏览:260
阅读app20听书怎么设置 浏览:996
axure70教程视频下载 浏览:446
linux如何开启端口 浏览:474
盗版广联达能不能升级 浏览:368
qsb是什么文件格式 浏览:268
遍历ftp目录文件内容 浏览:612
求生之路22001升级2121 浏览:646
按键精灵如何检测没有网络后休眠 浏览:915
招标文件的内容应当符合标准 浏览:465
外推内插法c语言程序 浏览:146

友情链接