①Unix是一个强大、健壮和稳定的操做系统。linux
②.Unix的特色:第一,Unix很简洁,没有不明确的系统,仅仅提供几百个系统调用而且有一个很是明确的设计目的。第二,在Unix中,全部的东西都被当作文件对待。第三,Unix的内核和相关的系统工具软件是用C语言编写的,具备强大的移植能力。第四,Unix的进程建立很是迅速,而且有一个很是独特的fork()系统调用。git
③Unix成为一个支持抢占式多任务、多线程。虚拟内存、换页、动态连接和TCP/IP网络。编程
Linux是类Unix系统,但不是Unix。但Linux没有直接使用Unix的源代码,它的实现可能和其余各类Unix的实现截然不同,但它没有抛弃Unix的设计目标而且保证了应用程序编程接口的一致。服务器
①操做系统是指在整个系统中负责完成最基本功能和系统管理的那些部分。网络
②内核独立于普通应用程序,通常处于系统态,拥有受保护的内存空间和访问硬件设备的全部权限。这种系统态和被保护起来的内存空间,统称为内核空间。在系统中运行的应用程序经过系统调用来与内核通讯。
多线程
Linux内核和传统UNIX内核特色的比较:1.Linux支持动态加载内核模块;
2.Linux支持对称多处理(SMP)机制;3.Linux内核能够抢占;4.Linux内核并不区分线程和其余的通常进程;5.Linux提供具备设备类的面向对象的设备模型,热插拔事件,以及用户空间的设备文件系统。并发
①单内核(好比大多数Unix及Linux):把内核总体上做为一个大的单独的过程来实现,同时运行在一个单独的地址空间上,十分简单,性能高。函数
②微内核(好比Windows NT):微内核的功能被划分为多个独立的功能,每一个过程叫作一个服务器;便于处理内核间通讯,还使用了IPC机制;工具
①使用git获取源码:git clone git: //git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6.gitoop
②更新分支到Linux的最新分支:git pull
③安装解压:tar xvjf linux-x.y.z.tar.bz2或者tar xvzf linux-x.y.z.tar.gz
④打补丁:patch -p1 < ../patch-x.y.z
前提:能够配置的各类变量都以CONFIG_前缀表示。有二选一(yes or no)和三选一
①字符页面的命令行工具:make config
②图形界面工具:make menuconfig
③其余的几种配置:make defconfig //基于默认配置;make oldconfig //验证和更新配置
make
①减小编译的垃圾信息——对输出进行重定向。
make > .. /detritus # 重定向到这个文件里了;
make > /dev/null # 把无用的输出信息重定向到永无返回值的黑洞里。
以root身份运行 make modules_install便可,全部已编译的模块都会安装到lib/modules下。
①无lib库或者标准头文件,不能直接使用标准C函数库
②内核编程时使用GNU C,好比内联函数、内联汇编等
③没有内存保护机制。若是一个用户程序试图进行一次非法的内存访问,内核会发现这个错误,发送 SIGSEGV,并结束整个进程。内核中发生的内存错误会致使oops,这是内核中出现的最多见的一类错误。
④容积小而固定的栈。内核栈的准确大小随体系结构而变。在x86上,栈的大小在编译时配置,能够是4KB也能够是8KB。
⑤不要轻易在内核中使用浮点数。在执行浮点指令时到底会作些什么,因体系结构不一样,内核的选择也不一样,可是,内核一般捕获陷阱并作相应处理。
⑥同步和并发。Linux是抢占多任务操做系统。内核的进程调度程序即兴对进程进行调度和从新调度。内核必须对这些任务同步。
⑦可移植性的重要性。必须把体系结构相关的代码从内核代码树的特定目录中适当地分离出来。