Linux内核分析与驱动编程-1

声明

本文为我在《Linux内核分析与驱动编程》课程上的笔记,授课教师是荆琦老师,如有版权方面的问题请及时联系(?我不懂啊~)

Course Introduction

Focus on Linux Kernel ,初学

黑盒学习,不会的内容视为黑盒,能够使用即可,不可能全都了解。

前修:数据结构 操作系统原理 计算机体系结构 C 汇编
目标:了解体系结构、设计原理(补充本科操作系统课的内容),能够开发驱动程序(需求大)
内容:进程、调用、中断、同步、文件系统、内存……
安排:4 实验(内核调试 添加内核补丁-作业-创建模块 获取物理地址-Cprogram CMOS时钟驱动开发 补:容器实验) 1 报告
资源http://59.56.74.25:4455/ + ftp
教材
Understanding the Linux Kernel, 3rd Edition ULK
Professional Linux Kernel Architecture
(Linux情景分析(2.4))
奔跑吧,Linux内核(4.0+)
Linux驱动程序设计 LDD
ELDD
考核:平时60(作业40 实验20-有实验报告) 报告40-分组(提交材料20 讲演20)
可以参考网络资料
内核版本4.0+
助教:

Linux Basic Knowledge

版本

发行版 Ubuntu CentOS
内核版 Long Term

内核开发流程

every 3 months
Merge Window:前两周接受features
MW后,生成 -rc1 版本
大量测试,每周发布 -rcX
(提交版本,收入mainline)形成stable版本
商用服务器基本90%+为Linux,但Linux版本更迭快,Long Term则是由大厂商进行长期维护的版本,可加入需要的新特性
e.g. 阿里巴巴

Linux Kernel Introduction

严格的讲 Linux只表示内核
目前:4.20.x

Unix

Multics 多任务分时操作系统,MIT Bell GE 合作,失败解散
Ken Thompson used 1 month to develop Unics using B and 汇编
Dennis Ritchie used C to rewrite UNIX
AT&T Unix V7 版权声明
Minux AST开发 微内核
1993 Linux
2007 Android

GNU

GNU’s not Unix
By Richard M. Stallman GNU计划和自由软件基金会FSF
目标:创建一套Unix-like,完全自由的操作系统。自由软件集合
包括:bash shell, gcc, gdb …
GPL (general public license) 一种许可模式 只要使用了GPL代码,必须在GPL中开放(开源要求宽松,free要求严格)
GNU HURD操作系统出现的太晚,GNU/Linux占有很高,难以撼动

Open Source Licenses

软件最早仅作为硬件的附加,后来发展壮大
Open Source: 好处多,credit在作者,借助别人修改完善
https://opensource.org
≈10个主流协议
GNU 使用 GPL
开源协议

针对原始程序
再发布是否需要提供原始码?Apache MIT BSD no
允许他人再授权? Apache MIT yes
允许程序包含的专利授权吗? Apache yes
允许再发布收费?Apache yes

针对修改程序
修改后使用不同授权条款
修改后必须公开源代码?
修改者附加修改文件?

Apache 最宽松
GPL 最严格 - 相反

POSIX标准

基于Unix,描述了操作系统的调用服务接口。
可移植操作系统接口(Portable Operating System Interface of UNIX)

Linux Kernel Version

2.4版本
2.6版本
3.0版本后
X.Y.Z Y-版本号 Z-修订号
currently 4.20.10

子系统特性分析中,文件系统分析难度最大,进程管理、安全系统和虚拟化变更
新特性
e.g. TFO = TCP fast open 在各版本中逐渐修改

Distributions

发行版下载量排行 http://distrowatch.com
http://www.linuxfromscratch.org
For developers - Ubuntu
For server - RHEL (Red Hat)

Supported architectures

源码中读取 arc,确定所用的体系架构,如x86 …correct me if I’m wrong

OS and Kernels

User Space ( Applications, GNU C Library) + Kernel Space ( System call interface -内核封装,通过接口调用,与外部连接, Kernel Subsystems, Device Drivers)
system call直接调用内核子系统

  • 微内核 Microkernels LKD:仅保留基本功能,其它放在外部server,一般用于实时、嵌入式 e.g. Minix ios
  • 宏内核

Android

Android 系统内核基于 Linux Kernel,更新快,但更新到Android需要延长期,可将新特性提前merge
Android采用自己的内核配置,例GoldFIsh。

内核源代码结构

作业:下载4.19,重新编译为该版本,第三次课实验上做完即可

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值