首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

探索Linux内核:Kconfig的秘密

自从Linux内核代码迁移到Git之后,Linux内核配置/构建系统(也称为Kconfig/kBuild)已经存在了很长时间。...为了探索Linux内核是如何编译的,本文将深入研究Kconfig/kBuild内部进程,解释.config文件和vmlinux/bzImage文件是如何生成的,并介绍一个用于依赖性跟踪的智能技巧。...Kconfig 构建内核的第一步总是配置。Kconfig帮助使Linux内核高度模块化和可定制。...xenconfig 启用Xen dom0和来宾内核支持的其他选项 tinyconfig 配置尽可能小的内核 我认为menuconfig是这些目标中最受欢迎的。...目标由不同的主机程序进行处理,这些程序由内核提供,并在内核构建过程中生成。一些目标有一个GUI(为了用户的方便),而大多数没有。

1.6K11

从Ftrace开始内核探索之旅

其实Linux内核很早就内置了一个强大的tracing工具:Ftrace,它几乎可以跟踪内核的所有函数,不仅可以用于调试和分析,还可以用于观察学习Linux内核的内部运行。...你可能已经意识到,如果每个内核函数入口都加入跟踪代码,必然会非常影响内核的性能,幸好Ftrace支持动态跟踪功能。...在Linux的早期,内核维护者就一直想在内核中加入静态 tracepoints,尝试过各种策略。...利用 Tracepoints 理解内核代码 由于 tracepoints 是内核维护者在流程重要位置设置的埋点,因此我们可以从 tracepoints 入手来学习内核代码。...写在最后 Ftrace 就包含在内核源码中 kernel/trace,理解了 Ftrace 内核不再是黑箱,你会有豁然开朗的感觉,内核源码忽然有条理了起来。让我们从 Ftrace 开始内核探索之旅吧。

36810
您找到你想要的搜索结果了吗?
是的
没有找到

Zend API:深入 PHP 内核

Zend API:深入 PHP 内核 译序及目录 译序 网上关于 PHP 的资料多如牛毛,关于其核心 Zend Engine 的却少之又少。...了解到了这一点,我们就应该接触一下 PHP 的心脏并探究一下它的内核-可以编译成 PHP 并让之工作的 C 代码-的时候了。 (二)概述 “扩展 PHP”说起来容易做起来难。...php-src/main 这个目录包含主要的 PHP 宏和定义。 (重要) php-src/pear 这个目录就是“PHP 扩展与应用仓库”的目录。包含了PEAR 的核心文件。...因此,有了前面几节我们所掌握的信息,再在你遇到 PHP 源代码的时候你就有能力去搞定这些小麻烦。 在下面的几个小节里,我们将会学习到如何利用 PHP 内核来创建一个更为强大的扩展!...注意: 默认情况下 php.ini 会关闭显示这种错误。 E_CORE_ERROR 抛出一个 PHP 内核错误。通常情况下这种错误类型不应该被用户自己编写的模块所引用。

2.4K20

php内核角度分析php弱类型

前言 在CTF比赛中PHP弱类型的特性常常被用上,但我们往往知其然不知其所以然,究竟为什么PHP是弱类型呢?很少人深究。...我们再通过查阅PHP源码来深刻理解PHP弱类型的特点 PHP是开源的一种语言,我们在Github上可以很容易的查询到它的源码 传送门 这里找函数会方便点 当然解释下什么是Zend Zend是PHP语言实现的最为重要的部分...,有的时候查源码时候就是需要靠感觉,这种大项目 函数变量什么的都有规范 一般所见即所得 看懂英语就大概猜得到用途的, 当然这个文件也不一般 我再进行解释下,当然想深入理解可以看 这里 PHP内核中是通过...此外获取变量类型的宏还有两个,分别是Z_TYPE和Z_TYPE_PP,前者的参数是zval型,而后者的参数则是* zval 这样我们便可以猜测一下php内核是如何实现gettype这个函数了,代码如下:...具体看 这里 PHP内核中的哈希表是十分重要的数据结构,PHP的大部分的语言特性都是基于哈希表实现的, 例如:变量的作用域、函数表、类的属性、方法等,Zend引擎内部的很多数据都是保存在哈希表中的。

1.8K20

(1)PHP内核 - 玩转php的编译与执行

0x00 写在开头 曾几何时php一不小心闯入了我生活,php语法竟然和C语言那么莫名的相似,这是最初php给我的感受,当接触的php时间越来越多的时候,php也没有那般生涩难懂,但是偶尔一些的新的php...例如在php 中 <?php $a = 1+1; ?...PHP开始阶段也是如此,在php7.0的版本中在这个两个步骤之后增加了一步生成AST语法树,目的是将PHP的编译过程和执行过程解耦。...在研究和探索这个方面的同学一定要注意,不要去细看经过re2c和bison预处理生成的.c文件。这部分都是自动生成,看起来其实有点费时费力也毫无意义。...如果有同学知道php-parser的话,其实php-parser中的lexer也是应用这两个内置函数,php-parser是一个很不错的工具,可以解决绝大部分在php层面上的混淆,后面会简单的介绍一下。

1.8K10

PHP内核之旅-3.变量

PHP 内核之旅系列 PHP内核之旅-1.生命周期 PHP内核之旅-2.SAPI中的Cli PHP内核之旅-3.变量 一、弱类型语言 php是弱类型语言。一个变量可以表示任意数据类型。...php强大的一部分原因就是因为它是弱类型语言,但是弱类型语言也有它的缺点,使用不当也会造成很大的问题。 定义变量的时候不需要指定变量类型,也不需要初始化变量。...//定义变量 $test; 二、PHP的变量类型 php虽然是弱类型语言,但是内部也是有数据类型的,总共有8种 标量类型 复合类型 特殊类型 字符串string 数组array 资源resource 整型...9 zend_reference *ref; //引用类型 10 zend_ast_ref *ast; //内核使用的...参考资料: http://www.php-internals.com/ 《PHP7内核剖析》 作  者: Jackson0714 出  处:http://www.cnblogs.com

63060

(2)PHP内核 - 玩转php的编译与执行

php echo "hello"."...为什么可以用在64位系统上用相对寻址,这就需要去看看php内核里面内存的管理了。有兴趣的同学可以由此继续跟下去。...0x08 写在最后 终于php的编译和执行到此就结束了,从前到后其实就是在不断的重新编译php,然后配合gdb。...同时送给大家一段我看见挺正确的话: 我觉得韩天峰有句话说的很对,技术栈上,PHP 只是 C 的一个开发效率提升的补充,资深的高级 PHP 程序员,很多时候都是很好的 C 程序员(参考鸟哥),C 对于 PHP...PHP 极早期很多函数就是对 C 的一些简单封装,你可以看下 PHP4 时代遗留下来的东西,很多有很重的 C 痕迹,PHP5 拥抱 oop 不是和 Java 学,而是跟着语言发展潮流走,拥抱开发方式的发展和变化

2.1K30

PHP7内核剖析.epub

[下载地址 ] PHP作为最流行的语言之一,自第一个版本发布至今的二十几年里经历了多次重大改进,PHP7版本最大的特色在于其性能上的突破,比PHP5快了一倍。...目前PHP7已经得到了广泛应用,越来越多的项目从PHP5迁移到了PHP7。...目前,关于PHP内核的资料非常有限,《PHP7内核剖析》以当前最为流行的PHP7版本为基础,系统性地、尽可能详细地介绍PHP语言底层的实现,旨在帮助更多的开发者进一步理解PHP,参与到PHP的实现中,为未来...全书内容主要包括PHP数据类型的实现、PHP的编译及执行、PHP内存的管理、函数及面向对象的实现、PHP基础语法的实现,以及PHP扩展的开发。...《PHP7内核剖析》适用于有一定C语言基础的PHP高级工程师,或者想了解PHP7的内部实现、扩展开发的工程师。

1.3K30

PHP7内核之Reference详解

问题 上一章说过引用(REFERENCE)在PHP5的时候是一个标志位, 而在PHP7以后我们把它变成了一种新的类型:IS_REFERNCE....Change On Write PHP采用引用计数来做简单的垃圾回收, 考虑如下的代码: <?php 1. $val = "laruence"; 2. $ref = &$val; 3....ref和val是指向同一个zval的引用, 在PHP5的时候, 我们是通过一个引用计数为2, 并且引用标志位为1来表示这种情况, 当把val复制给copy(line 3)的时候, 我们发现 而在PHP7...$ php-7.0/sapi/cli/php /tmp/1.php Used 0.00021380008539 Used 0.00020173048281 可见确实没有发生复制, 从而不会产生任何的性能问题...以上所述是小编给大家介绍的PHP7内核之Reference详解整合,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对ZaLou.Cn网站的支持!

92341

深入理解php内核 编写扩展 I:介绍PHP和Zend

2)PHP内核:另一部分是PHP内核,它绑定了SAPI层(Server Application Programming Interface,通常涉及主机环境,如Apache,IIS,CLI,CGI等),...1.4 生存周期 当给定的SAPI启动时,例如在对/usr/local/apache/bin/apachectl start的响应中,PHP由初始化其内核子系统开始。...关闭期间,PHP再次遍历每个扩展,调用其模块关闭(MSHUTDOWN)函数,并最终关闭自己的内核子系统。 这个过程乍听起来很让人气馁,但是一旦你深入一个运转的扩展,你会逐渐开始了解它。...深入理解php内核php生命周期:http://blog.csdn.net/hguisu/article/details/7377520 1.4 内存分配 资源管理仍然是一个极为关键的问题...这个选项将把附加的符号信息编译进PHP的执行文件,以便如果发生段错误,你能从中得到一个内核转储文件,使用gdb追踪并发现什么地方以及为什么会发生段错误。另一个选项依赖于你的PHP版本。

73330
领券