centos ubuntu redhat -----》 UI
linux 内核+ UI = 常用的操作系统
操作系统是硬件的抽象,内存管理,进程、线程管理、键盘U盘 、文件系统管理
linux 内核是操作系统的实现,
写自己的操作系统的难度
1、没有芯片核心
2、没有配套的应用(生态)
基于linux内核做开发
1、源码
2、提交更改记录
3、开发环境
4、资料
linux 内核学习:
不需要硬件知识(知道计算机组成原理)、内存管理 文件管理 进程管理 网络协议栈等都不需要硬件知识。
内核相关工作:
联系网、信息安全等(云厂家) (要求高 、人员需求大)
现在的工作跟linux没有关系,也可以看linux内核代码,里面有很多技术的精髓。
系统调用:应用程序调用系统函数
1 sched.c system_call() 注册 系统调用
2 int80 中断系统调用 中断ex的值
3 call sys_calll_table[] ={ } 基地址寻找
Posix API --->标准接口
内核空间、用户空间:应用程序和内存成在内存中是分开的,两者的内存数据时不共享的【函数调用是共用一块内存的,但是系统调用并不是共用一块内存】,是为了保护内核中的数据,通过中断【cpu指令】的方式陷入到内存中。
在libc兼容windows 和linux
微内核 使得( 内存管理、进程管理、网络协议、外设驱动、文件系统)这5个模块正常工作, 所有这些模块组合到一起就是宏内核。