linux kernel 学习

学习linux kernel 的必要性:

作为程序员要掌握编程本质,及了解自己编写代码在平台是怎么运行的是一项基本功。凭经验敲代码,敲五十年对计算机的认知还是在那种初级水平。

1 linux kernel 总体结构

1中断机制 (上下半部,软硬中断)
2内存管理 (分页管理线性地址-逻辑地址-物理地址映射,内核内存分配,进程内存分配)
3磁盘读写管理
4驱动管理
5进程管理交互

2 Linux启动过程详解

http://blog.chinaunix.net/uid-26495963-id-3066282.html

1,按下电源,执行bios 开机自检程序
2,bios 执行完加载,去找到硬盘的MBR(master boot record = 分区表信息 + Boot loader 程序)
3,执行boot loader (grub ,lilo),做些初始化,加载内核到指定内存地址。
4,执行内核初始化,内存管理(分页管理),进程管理,终端管理,初始化第一个进程。
5,初始化系统环境变量。rc0 – rc5
6,执行login 程序。

3 linux kernel 优秀高效点总结

1,分页内存管理方式
· fork 进程只是分页指针的改变,不用去开辟新内存,复制物理内存信息
· 写时复制 (copy on write 机制),只有在需要写的时候再去开辟内存,在新的物理内存上执行写操作。
· 线性地址足够多,可以利用缺页机制来实现swap,用磁盘来充当物理内存。 扩大了实际内存的限制。
· 懒加载(需求加载) 加载的程序开始的时候只分配线性地址,当发生缺页中断,在加载磁盘内容到内存中。

原理本质:(应用 符号 n——-1 实际的东西)
实例:和 git 的对象库 Object 复用用共用性,可借鉴理解。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Linux内核学习是一项非常重要的技能,它可以帮助我们更好地理解操作系统的工作原理和实现方式。学习Linux内核需要掌握C语言和汇编语言的基础知识,同时需要了解操作系统的基本概念和原理。在学习过程中,我们需要阅读内核源代码,理解内核的结构和设计思想,同时也需要掌握调试和优化内核的技巧。总之,Linux内核学习是一项非常有挑战性和收获的技能,它可以帮助我们更好地理解计算机系统的本质和工作方式。 ### 回答2: Linux Kernel 是操作系统的核心,是一个程序员的最高尚的技术挑战之一。要成为一名成功的 Linux 系统工程师,需要精通操作系统的基础知识和 Linux Kernel 的工作原理。在 Linux Kernel 学习过程中,以下几点非常重要: 1. 熟练掌握 C 语言:Linux Kernel 代码大部分是用 C 语言编写而成的,因此对于想要学习 Linux Kernel 的人来说,熟悉 C 语言是基本要求。 2. 掌握操作系统原理:Linux Kernel 是一个操作系统的核心,要学习其实现原理,需要掌握操作系统的基本原理,如进程管理、内存管理、文件系统等。 3. 理解 Linux Kernel 的架构:Linux Kernel 由许多不同的模块组成,包括进程管理、内存管理、IO 等等。要学习 Linux Kernel,需要理解这些模块之间的相互作用。 4. 掌握调试方法:调试是解决问题的关键,对于 Linux Kernel学习和调试,需要掌握一些基本的、高效的调试方法。 5. 参与社区开发:Linux Kernel 是开源项目,参与社区开发可以获得许多宝贵的经验和机会,还可以结交许多优秀的开发者,构建自己的开发能力和社交关系。 总之,Linux Kernel 学习需要大量的时间和精力,需要不断地阅读源代码,调试问题,积累经验。只有不断努力,才能成为一名真正的 Linux 系统工程师。 ### 回答3: Linux Kernel是开源操作系统Linux的核心,也是Linux系统的基石,是一种操作系统内核。学习Linux Kernel,可以让我们从更深层次地了解操作系统的工作原理,可以帮助我们更好地使用和优化Linux系统。 学习Linux Kernel需要掌握C语言、汇编语言、操作系统原理等知识。要学习Linux Kernel,首先需要了解Linux系统的架构和组成部分:内核、Shell、系统库、应用程序等。了解内核的基本结构和功能、系统调用接口等。同时,需要掌握Linux Kernel的构建和配置方式、内存管理、文件系统、驱动程序等。 在学习过程中,可以通过读源码、调试程序等方式深入理解Linux Kernel的内部结构和实现原理。同时,可以参考一些经典的Linux Kernel学习资料,比如《深入理解Linux内核》、《Linux内核源代码情景分析》等。 学习Linux Kernel的另一个途径是参与开源社区,贡献代码、提交bug报告、参与讨论等,这不仅可以帮助我们学习更多的知识,还可以拓展我们的人脉和职业发展。 总之,学习Linux Kernel需要一定的基础知识和经验,需要耐心和毅力,但是它能够带来更深入的知识和技能,可以让我们成为更优秀的Linux系统管理员或开发人员。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值