1.1 Linux简介:
Linux是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX和UNIX的多用户、多任务、支持多线程和多CPU的操作系统。它能运行主要的UNIX工具软件、应用程序和网络协议。它支持32位和64位硬件。Linux继承了Unix以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。
1Linux内核2GNU工具组件3图形化桌面环境4应用软件
Linux是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX和UNIX的多用户、多任务、支持多线程和多CPU的操作系统。它能运行主要的UNIX工具软件、应用程序和网络协议。它支持32位和64位硬件。Linux继承了Unix以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。
1Linux内核2GNU工具组件3图形化桌面环境4应用软件
1.2Linux内核-简史
Linux最早是由芬兰学生Linus Torvalds设计的。当时由于UNⅨ的商业化,Andrew Tannebaum教授开发了Minix操作系统以便于不受AT&T许可协议的约束,为教学科研提供一个操作系统。当时发布在Internet上,免费给全世界的学生使用。Minix具有较多UNⅨ的特点,但与UNⅨ不完全兼容。1991年10月5日,Linus为了给Minix用户设计一个比较有效的UNⅨ PC版本,自己动手写了一个“类Minix”的操作系统。整个故事从两个在终端上打印AAAA...和BBBB...的进程开始的,当时最初的内核版本是0.02。Linus Torvalds将它发到了Minix新闻组,很快就得到了反应。Linus Torvalds在这种简单的任务切换机制上进行扩展,并在很多热心支持者的帮助下开发和推出了Linux的第一个稳定的工作版本。1991年11月,Linux0.10版本推出,0.11版本随后在1991年12月推出,当时将它发布在Internet上,免费供人们使用。当Linux非常接近于一种可靠的/稳定的系统时,Linus决定将0.13版本称为0.95版本。1994年3月,正式的Linux 1.0出现了,这差不多是一种正式的独立宣言。截至那时为止,它的用户基数已经发展得很大,而且Linux的核心开发队伍也建立起来了。
Linux最早是由芬兰学生Linus Torvalds设计的。当时由于UNⅨ的商业化,Andrew Tannebaum教授开发了Minix操作系统以便于不受AT&T许可协议的约束,为教学科研提供一个操作系统。当时发布在Internet上,免费给全世界的学生使用。Minix具有较多UNⅨ的特点,但与UNⅨ不完全兼容。1991年10月5日,Linus为了给Minix用户设计一个比较有效的UNⅨ PC版本,自己动手写了一个“类Minix”的操作系统。整个故事从两个在终端上打印AAAA...和BBBB...的进程开始的,当时最初的内核版本是0.02。Linus Torvalds将它发到了Minix新闻组,很快就得到了反应。Linus Torvalds在这种简单的任务切换机制上进行扩展,并在很多热心支持者的帮助下开发和推出了Linux的第一个稳定的工作版本。1991年11月,Linux0.10版本推出,0.11版本随后在1991年12月推出,当时将它发布在Internet上,免费供人们使用。当Linux非常接近于一种可靠的/稳定的系统时,Linus决定将0.13版本称为0.95版本。1994年3月,正式的Linux 1.0出现了,这差不多是一种正式的独立宣言。截至那时为止,它的用户基数已经发展得很大,而且Linux的核心开发队伍也建立起来了。
1.3Linux内核-基本功能
1-进程调度(SCHED):进程调度模块负责控制进程对CPU资源的使用。Linux使用表来管理开机自起进程,通常位于/etc/inittab中。另一些系统(这里指Ubuntu Linux)采用/etc/init.c目录,将控制开机自启应用的脚本放在该目录下,这些脚本通过/etc/rcX.d目录下的入口启动(X代表运行级别,入口实际是到/etc/init.d目录中启动脚本的符号链接)
2-内存管理(MM):Linux内存管理模块是屏蔽硬件内存结构的差异并向上提供统一访问界面,提供分页机制(虚拟存储功能),完成地址变换和解决物理内存不成问题;监控存储器管理单元(MMU)维护任务独立运行内存空间,防止内存越界,为进程间通信所需的共享内存提供必要基础。可查看/proc/meminfo文件观察Linux系统上虚拟内存的当前状态,ipcs命令专门查看系统当前共享内存页面
3-虚拟文件系统(VFS):Virtual File System是Linux通用文件系统模型,该模型覆盖连接Linux上的所有文件系统的常用数据结构和功能集,Linux启动后VFS常驻内存。
4- 网络接口(NET):改模块提供对各种网络硬件的支持及对各网络资源访问的控制。网络硬件主要指网络接口卡(Network Interface Card,NIC)。改模块可分为网络协议部分(负责实现每一种网络传输协议)和网络驱动程序(负责与硬件设备通信)
5-进程间通信(IPC):支持进程之间各种通信机制。
1.4GNU工具链 :GNU工具链(GNU toolchain)是一个包含了由GNU项目所产生的各种编程工具的集合。这些工具形成了一条工具链(串行使用的一组工具),用于开发应用程序和操作系统。 GNU工具链在针对嵌入式系统的Linux内核、BSD及其它软件的开发中起着至关重要的作用。GNU工具链中的部分工具也被Solaris, Mac OS X, Microsoft Windows (via Cygwin and MinGW/MSYS) and Sony PlayStation 3等其它平台直接使用或进行了移植。 GNU工具链中包含的项目有:
1.5Shell
GNU/Linux shell是个交互式工具。为用户提供启动程序管理文件系统以及管理运行在Linux系统上的进程的途径。
shell分类:bash shell-作为标准Unix shell-Bourne shell 的替代,由GUN项目开发(Linux发行版默认)
ashell-运行在内存受限环境中简单的shell,与bash shell 完全兼容
korn shell-与Bournue shell兼容,支持些高级功能(如:数组浮点运算)
tcsh shell -将C语言的元素引入
zshell 融合bash,tcsh,特性,同时提供高级编程特性,共享历史文件和主题化提示符
1.6inux桌面环境(不多说都看的懂)
X window系统
KDE桌面
GNOME桌面
1.7LInux发行版
分三类:核心Linux发行版(Slackware,Red Hat,Fedora,Gentoo,Mandriva,opeenSuSE,Debian)
专业Linux发行版(Xandros,SimplyMEPIS,Ubuntu,PCLinuxOS,Mint,dyne:bolic)
Linux Live CD(Knoppix,SimplyMEPIS,PCLinuxOS,Ubuntu,Slax,Puppy Linux)
附录:Linux源代码的官方下载地址:http://www.kernel.org/
适合ARM处理器架构的Linux内核:http://www.arm.linux.org.uk/develop
1-进程调度(SCHED):进程调度模块负责控制进程对CPU资源的使用。Linux使用表来管理开机自起进程,通常位于/etc/inittab中。另一些系统(这里指Ubuntu Linux)采用/etc/init.c目录,将控制开机自启应用的脚本放在该目录下,这些脚本通过/etc/rcX.d目录下的入口启动(X代表运行级别,入口实际是到/etc/init.d目录中启动脚本的符号链接)
2-内存管理(MM):Linux内存管理模块是屏蔽硬件内存结构的差异并向上提供统一访问界面,提供分页机制(虚拟存储功能),完成地址变换和解决物理内存不成问题;监控存储器管理单元(MMU)维护任务独立运行内存空间,防止内存越界,为进程间通信所需的共享内存提供必要基础。可查看/proc/meminfo文件观察Linux系统上虚拟内存的当前状态,ipcs命令专门查看系统当前共享内存页面
3-虚拟文件系统(VFS):Virtual File System是Linux通用文件系统模型,该模型覆盖连接Linux上的所有文件系统的常用数据结构和功能集,Linux启动后VFS常驻内存。
4- 网络接口(NET):改模块提供对各种网络硬件的支持及对各网络资源访问的控制。网络硬件主要指网络接口卡(Network Interface Card,NIC)。改模块可分为网络协议部分(负责实现每一种网络传输协议)和网络驱动程序(负责与硬件设备通信)
5-进程间通信(IPC):支持进程之间各种通信机制。
1.4GNU工具链 :GNU工具链(GNU toolchain)是一个包含了由GNU项目所产生的各种编程工具的集合。这些工具形成了一条工具链(串行使用的一组工具),用于开发应用程序和操作系统。 GNU工具链在针对嵌入式系统的Linux内核、BSD及其它软件的开发中起着至关重要的作用。GNU工具链中的部分工具也被Solaris, Mac OS X, Microsoft Windows (via Cygwin and MinGW/MSYS) and Sony PlayStation 3等其它平台直接使用或进行了移植。 GNU工具链中包含的项目有:
GNU make:用于编译和构建的自动工具;
GNU编译器集合(GCC):一组多种编程语言的编译器;
GNU Binutils:包含链接器、汇编器和其它工具的工具集;
GNU Debugger(GDB):代码调试工具;
GNU构建系统(autotools):Autoconf Autoheader Automake Libtool
GNU编译器集合(GCC):一组多种编程语言的编译器;
GNU Binutils:包含链接器、汇编器和其它工具的工具集;
GNU Debugger(GDB):代码调试工具;
GNU构建系统(autotools):Autoconf Autoheader Automake Libtool
GNU/Linux shell是个交互式工具。为用户提供启动程序管理文件系统以及管理运行在Linux系统上的进程的途径。
shell分类:bash shell-作为标准Unix shell-Bourne shell 的替代,由GUN项目开发(Linux发行版默认)
ashell-运行在内存受限环境中简单的shell,与bash shell 完全兼容
korn shell-与Bournue shell兼容,支持些高级功能(如:数组浮点运算)
tcsh shell -将C语言的元素引入
zshell 融合bash,tcsh,特性,同时提供高级编程特性,共享历史文件和主题化提示符
1.6inux桌面环境(不多说都看的懂)
X window系统
KDE桌面
GNOME桌面
1.7LInux发行版
分三类:核心Linux发行版(Slackware,Red Hat,Fedora,Gentoo,Mandriva,opeenSuSE,Debian)
专业Linux发行版(Xandros,SimplyMEPIS,Ubuntu,PCLinuxOS,Mint,dyne:bolic)
Linux Live CD(Knoppix,SimplyMEPIS,PCLinuxOS,Ubuntu,Slax,Puppy Linux)
附录:Linux源代码的官方下载地址:http://www.kernel.org/
适合ARM处理器架构的Linux内核:http://www.arm.linux.org.uk/develop
Linux Cross Reference:http://lxr.linux.no/source