第一种方法纵向或者横向来读都可以,因为代码量不是很大。《linux内核完全剖析》《linux内核完全注释》是引导你横向阅读的书,《linux内核设计的艺术》是引导你纵向阅读的书。建议横向纵向结合着来,纵向跟着bochs调试工具来是必不可少的,当遇到问题时进入到相应的功能模块横向拓展一下。
前段时间有个刚开始学习 Arm Linux 的同学问我:对于还处于入门阶段的新手,有什么建议。并让我推荐一些好的书籍。
我大学的专业是软件工程。那个时候(我09年毕业),ACM等各类算法竞赛在大学还不是特别地流行。专门搞算法的同学不多,我也没有特地去训练和参加算法竞赛,所以我有很多的时间。然后这些时间都被我花在了自娱自乐的项目和看各种系统的源代码上了。
在我离职之前,工作内容几乎不涉及到驱动方面的知识。我所要做的内容就是把客户对设备的请求拆分成一个一个的接口,调用驱动的设置进行配置就可以了。当然,至于驱动下面是怎么实现那就要根据具体情况而定了。比如说,有的驱动是芯片厂商直接写好的,假设芯片厂商提供了对应平台的sdk函数,那么驱动的工作就是对这些sdk函数进行封装就可以了,另外一种就是自己编写具体平台的驱动接口了。比如说,现在你需要编写串口、i2c、i2s、FLASH、网卡、LCD、触摸屏、USB驱动了。这个时候,你手里面除了一堆芯片手册,啥也没有。能不能调试成功,就看你自己的了。当然,一般情况下,在特定的平台上会有很多同类型的demo代码,你可以依葫芦画瓢修改一下,除了中断、地址、读写等部分注意一下,大部分的逻辑其实差异不大。至于修改的速度快不快就看你自己的了。
原文转载:http://blog.csdn.net/21aspnet/article/details/6694485
首先肯定的一点是:不要一上来就看内核代码,基本上你会很快被挫败感打败。内核正在变得越来越庞大,学习曲线越来越陡峭,当你一无所知的时候冒然进入linux kernel,你会发现处处都是障碍,处处都是大坑,你根本走不下去。最好的方法是把对内核源代码的热情先放在心里,从基本功开始。
linux 进程数最大值修改 https://www.zalou.cn/article/143664.htm 详解linux系统下pid的取值范围 https://www.zalou.cn/article/143665.htm Linux创建进程达到65535的方法 https://www.zalou.cn/article/143667.htm
4月26日收到了腾讯的offer,终于安心了,很多小伙伴们要我写面经介绍下,其实自己能拿到腾讯的offer 99%是运气~, 这里就介绍下自己的面经跟总结自己的看的书跟学习方法, 自己来自一所非985垫底的211大学~大三本科,主要学习的是Linux内核/C++,投的岗位都是后台开发, 自己的项目也就2个demo,一个简易kernel,一个很简单的网络库. 因为学校位置不方便,只投了腾讯跟美团.不可以投那么多互联网公司(路费.一出疆就上千),美团各种原因放弃了, 然后就这次到西安参加腾讯面试花了1800左右
| 推荐人:王东芳律师 ( Ladas & Parry LLP 中国首席代表, 开源社法律顾问委员会成员)
作用是将应用层序的请求传递给硬件,并充当底层驱动程序,对系统中的各种设备和组件进行寻址。目前支持模块的动态装卸(裁剪)。Linux内核就是基于这个策略实现的。Linux进程1.采用层次结构,每个进程都依赖于一个父进程。内核启动init程序作为第一个进程。该进程负责进一步的系统初始化操作。init进程是进程树的根,所有的进程都直接或者间接起源于该进程。virt/ —- 提供虚拟机技术的支持。
作用是将应用层序的请求传递给硬件,并充当底层驱动程序,对系统中的各种设备和组件进行寻址。目前支持模块的动态装卸(裁剪)。Linux内核就是基于这个策略实现的。Linux进程1.采用层次结构,每个进程都依赖于一个父进程。内核启动init程序作为第一个进程。该进程负责进一步的系统初始化操作。init进程是进程树的根,所有的进程都直接或者间接起源于该进程。virt/ ---- 提供虚拟机技术的支持。
今年是第一次参加COSCUP 开源人年会,到底与大家分享些什么,与社区大牛BOB沟通后,他建议我就分享自己这20年来的Linux内核之旅。
学习内核,每个人都有自己的学习方法,仁者见仁智者见智。以下是我在学习过程中总结出来的东西,对自身来说,我认为比较有效率,拿出来跟大家交流一下。
经常收到后台读者发过来同样的问题,看完「开发内功修炼」以后觉得写的不错。问:“飞哥你平时是怎么样磨炼自己的技术能力,并写出这些文章的?另外可否帮推荐几本书更系统地学习一下”。今天干脆就写一篇文章统一回复一下。
从前在学校,混了四年,没有学到任何东西,每天就是逃课,上网,玩游戏,睡觉。毕业的时候,人家跟我说Makefile我完全不知,但是一说Make Love我就来劲了,现在想来依然觉得丢人。
https://www.gitbook.com/book/riboseyim/linux-perf-master/details
前言: 书接上回《内存映射技术分析》,继续来分析一下linux的物理内存管理。 分析: 1,物理内存 PC上的内存条,或者手机上的内存芯片,物理上实实在在的内存,就是物理内存。大小是硬件决定的,一般就是一个起始地址,加上大小。地址如何分配呢?PC上作者也不太懂,听闻BIOS可以配置。在ARM上,作者曾经看过一份电路图,当时的图上,使用32bit的高2bit作为chip select,后面的30bit作为地址总线,看过chip select信号之后,作者才明白为什么在代码上要配置起始的地址不是0,因为硬件
大家好,我是程栩,一个专注于性能的大厂程序员,分享包括但不限于计算机体系结构、性能优化、云原生的知识。
说到开源大家都会想到黑客和极客,开源的概念最早也是在极客们推出和推崇的。开源的提倡旨在开放源代码使之更方便自由的使用和再创作。随着这一思想的发展,衍生出诸多的开源协议,比如有GPL,BSD,MIT等。关于开源的一些故事推荐杜玉杰的 chat 文章《开源纵横谈:谷歌与开源那些事儿》。豪不夸张的说开源的传播已经在颠覆传统软件的开发模式,推动整个 IT 的进步,围绕着开源的社区文化也在这个新的时代发光发热。
Redis的高性能和他的事件模型是密不可分的,最大程度上利用了单线程、非阻塞IO模型来快速的处理请求(单线程处理多链接)。这里存在一个问题,其实严格意义上来讲,Redis 是单线程对外提供服务,redis内部并不单线程的,还存在一些关于数据持久化的线程。
世界悲结束了,章鱼哥也退役了,连非诚勿扰中的拜金女也突然的少了很多。这本《Linux内核修炼之道》在卓越、当当、china-pub上也已经开卖了,虽然是严肃文学,但为了保证流畅性,大部分文字我还都是斟词灼句,反复的念几遍才写上去的,尽量考虑到写上去的每段话能够让读者产生什么疑惑,然后也都会紧接着尽量的去进行解释清楚,中间的很多概念也有反复纠结过怎么解释能够更容易的理解,力求即使对于初学者也可以有很少阻碍的一气读完。同时我也把书中一部分自己的感悟抽出来整理了精华版,share出来。当然水平有限,错漏之处有发现而修订时遗漏的,也有尚没有发现的。这本书如果对您有用,乃我之幸事,如果无用,就在此先诚惶诚恐的向大家拜个不是了。
网上乱七八糟的资料实在是太多了, 乱, 特别乱, 而看书呢, 我读了2本书, 一本叫做<<第一本 Docker 书>>, 另一本叫做<< Docker进阶与实战>> 在 服务发现这块讲的又不清不楚的, 坑死个人. 今天特意记录下, 并整理下来,以防自己哪天又忘了, 也给同在研究Docker 的朋友们一个安装教程. 我单位测试机一共四台, 各位可以起4个虚拟机对应, 假定分别是141,142,143,144. 都是 CentOS 6.x 系统. Step1. 升级 CentOS 内核到3.10版本以上 首先升
Associating data with a stream allows fine-grained control over CPU + GPU concurrency, but what data is visible to which streams must be kept in mind when using devices of compute capability lower than 6.x. Looking at the earlier synchronization example:
经常在后台收到读者的交流,Linux 源码那么庞大,飞哥你是如何读的呢?由于问这个问题的太多,我想有必要专门写一篇文章聊一聊。
5、内核源码(网络)阅读:tcp_input.c tcp_out.c tcp_ipv4.c tcp.c
Linux内核及源码学习使用陈莉君老师的书《深入分析Linux内核源代码》,内核源码版本为2.4.16。
OK113i-S 是一个优秀的开发板,支持lvds 单8,双8显示,最大分辨率1280x800
很多程序员视 SQL 为洪水猛兽。SQL 是一种为数不多的声明性语言,它的运行方式完全不同于我们所熟知的命令行语言、面向对象的程序语言、甚至是函数语言(尽管有些人认为 SQL 语言也是一种函数式语言)。 如果你是一下这三类人中,不妨看下此文,相信会对你有所帮助: 在工作中会用到 SQL 但是对它并不完全了解的人; 能够熟练使用 SQL 但是并不了解其语法逻辑的人; 想要教别人 SQL 的人。 以下为10个简单步骤,可完全理解SQL: SQL 是一种声明式语言——SQL 语言声明的是结果集的属性,计算机会
Formatted output is only supported by devices of compute capability 2.x and higher.
本文以时间的顺序来回顾linux的发展历史,因为博主不是专门研究的Linux历史的专业人才,这里只对一些关键的时间点做介绍,介绍的来源也是来自于各个实体书和网上的资料,想要具体了解的可以去自行查找相关资料。
作者2015年博士毕业加入一家量化私募公司,已经做了差不多四年系统工程师的工作。本文是根据这个岗位所用到的日常工作技能总结,希望对想进入这个行业的人有所帮助。由于作者非科班(博士管理科学专业)出身,工作中用的技术大多数通过自学获得,不足之处还请同行多包涵与指正,有好的学习资料希望不吝推荐!
从几百本书中整理出一份书单是一件困难的事,但是从这些书中挑选出对自己影响比较大的书确是一件容易的事。 在是一份迟来的书单,但是并不是一份适用于每个人的书单。这是我在学习编程过程中看的一些书,启发到我的书,有很多你可能没有听过,也有很多可能是你耳熟能详的。之所以说是启发是因为很多说并没有那么好,但是我从上面获取到了一些灵感。 高中时期 高中时期,因为想开发游戏的热情才深入计算机世界。并且高中也是一个相当无聊的时期,除了为高考准备的考试,还有就是上课 《C++游戏开发》 有一些书,你就没有必要去看了,比如这里的
我通过阅读邓凡平前辈的《深入理解Android》,为了加深学习作此学习笔记。
1. Bootloader如何写入Flash ? 初学者一般都会遇到如何将程序写入处理器的问题。对于不同的处理器,可以采用不同的方法。例如Intel的Xscale处理器可以使用Intel公司提供的JFlash工具烧写。对于具有JTAG调试工具软件的处理器,可以使用如下思路:编写一段程序,这段程序能将位于SDRAM/SRAM 固定地址中的数据写入Flash中。烧写时,首先,将这段软件下载到SDRAM 中,然后通过调试软件将要写入Flash的数据下载到SDRAM/SRAM的某个固定地址开始的缓冲区,然后通过调试
《深度学习》,又名“花书”。该书由三位大佬 Ian Goodfellow、Yoshua Bengio 和 Aaron Courville 撰写,是深度学习领域奠基性的经典教材,被誉为深度学习的“圣经”。
本次实验环境是Linux2.6.35内核的环境下,下载并重新编译内核源代码(2.6.36);然后,配置GNU的启动引导工具grub,成功运行编译成功的内核。
出品 | OSC开源社区(ID:oschina2013) Linux 6.3 内核的合并窗口已开启,Linus Torvalds 也收到了大量的 PR,目前总体看来正在有序进行。但 Linus 对部分合并请求的日志信息非常不满:“我之前就已经说过,很显然现在我需要再重复一次,如果你懒得解释为什么会存在这个合并请求,那么根据定义,这就是一堆垃圾!” ▲缺少注释的合并请求让 Linus Torvalds 很生气 Linus 认为,如果你不能解释清楚一个合并请求,那么就不要提交,这是很简单的道理。如果不解释提
http://www.wowotech.net/memory_management/424.html
现代的应用程序都运行在一个内存空间里,在 32 位系统中,这个内存空间拥有 4GB (2 的 32 次方)的寻址能力。
转自陈莉君一书《深入分析Linux内核源码》http://www.kerneltravel.ne运维
No, not the story of how, in 1991, Linus Torvalds wrote the first version of the Linuxkernel. You can read that story in lots of Linux books. Nor am I going to tell you thestory of how, some years earlier, Richard Stallman began the GNU Project to create a freeUnix-like operating system. That’s an important story too, but most other Linux bookshave that one, as well.
Android系统的源代码非常庞大和复杂,我们不能贸然进入,否则很容易在里面迷入方向,进而失去研究它的信心。我们应该在分析它的源代码之前学习好一些理论知识,下面就介绍一些与Android系统相关的资料。
研究IO也很久了,一直无法串联bio和块设备驱动,只知道bio经过IO调度算法传递到块设备驱动,怎么过去的,IO调度算法在哪里发挥作用,一直没有完全搞明白,查看了很多资料,终于对块设备驱动有所理解,也打通了bio到块设备。
出品 | OSC开源社区(ID:oschina2013) 近日微软为了扩展内核支持,为 Linux 内核提供了一系列的补丁,其中一个值得注意的地方是微软为 Linux 带来了运行嵌套监控程序(Hyper-V)或嵌套虚拟化的功能。 这组补丁是由微软的 Linux 高级工程师 Jinank Jain 在本周三发出的,补丁说明如下: 该系列补丁计划增加对运行嵌套式微软 Hypervisor(虚拟机监控程序) 的支持。在嵌套微软 Hypervisor 的情况下,有一些特权的 hypercalls 需要走 L0 H
疫情下的高考已结束,又快到填志愿的时候了,又有不少知青要加入信息安全这个圈子。为了响应组织号召,撰写此文作为信安行业的入坑指南,希望能对刚入圈的同学有所帮助。
输入 file ./kernel/kernel载入符号表,然后target remote loaclhost:26000即可:
毫不夸张地说,Binder是Android系统中最重要的特性之一;正如其名“粘合剂”所喻,它是系统间各个组件的桥梁,Android系统的开放式设计也很大程度上得益于这种及其方便的跨进程通信机制。
领取专属 10元无门槛券
手把手带您无忧上云