linux学习5 Linux开篇入门和基本操作
一、完整的操作系统
1、GNU系统:表示GNU is Not Unix。表示不做商业化。制定了GPL(General Public License)即任何软件程序只要遵循GPL协议就是自由软件。还制定了FSF:Free Software Foundation即自由软件基金会。 像gcc即gnu c complier,即gnu的c编译器,或vi ,即visual interface。虽然gnu声称不是unix但是他其实还是跑在unix系统之上的。因此严格意义上来讲我们gnu是跑在内核之上的操作系统。
2、kernel:内核负责驱动底层硬件并把底层各硬件资源抽象成为简单的资源。并且管理各程序的运行,把有限的资源分配给运行中的程序让彼此之间相安无事。
3、像BSD,unix,linux都只是内核,表示狭义上的操作系统,不包含运行在其上的各种应用程序,而刚刚提到的GNU组织有很多应用程序,像gcc,vi,x-widown等,这些都是应用程序需要跑在kernel之上用kernel虚拟出来的环境运行他们的特定的具体的专用的应用程序。如果我们干掉kernel这些应用程序也就没法运行了。
4、因此虽然GNU声称自己不是unix但是他自己的程序都是基于unix开发的而不是基于硬件开发的。因此gun与linux结合就开放了一个新时代,这个新时代在于linux提供了内核而gnu提供了应用程序。此时一个完整意义的OS出现了。也正是由于gnu的GPL协议使linux程序软件能够开源。能够大规模推广被众人所应用。
二、操作系统接口
1、GUI(Graphic User Interface):图形界面接口
GNome:用c语言开发的图形界面,开发环境叫gtk
KDE:用c++研发,开发环境叫qt
FACE:
2、CLI(Command Line Interface):命令行界面接口
bash
zsh
sh
csh
3、TUI:Text User Interface:文本用户接口
4、相当于在内核之外给我们提供了一个接口。即当我们装完一个操作系统后我们硬盘上准备了很多应用程序,这个程序需要运行起来需要我们手动打开。即我们通过接口将一个静态的程序启动为一个动态的进程。
三、操作系统功能
1、驱动程序
2、进程管理
3、安全
4、网络协议栈
5、内存管理
6、文件系统
7、操作系统为了保证足够底层他们通常仅仅会把最底层硬件所提供的功能抽象出有限的调用接口来,我们通常称之为api。对于整个操作系统来讲他要把底层的复杂性隐藏起来,隐藏完以后还要把对应的功能用更简洁的方式向上提供,这种通常我们称之为系统调用,即System call。有了系统调用我们应用程序都是基于System call来实现的。并且我们操作系统还可以将系统调用封装为标准库向外提供库接口让开发者更容易调用,即libraries,因此程序员开发时既可以用System call也可以用库接口。
8、接口:
API(Application Program Interface):应用编程接口。程序员面对的编程接口。
POSIX(Portable Operating System):称为可移植操作系统。
ABI(Application Binary Interface):应用二进制接口,程序应用者面对运行程序的接口。
四、GNU组织发起了开源程序运动,即任何程序发行以后都需要把其源代码公开至互联网上。
1、gcc,glibc,vi,linux等都是源码的,因此其需要编译,所以需要编译器。因此就有不同的发行商将该源码通过自己的方式编译后组织成二进制格式组成自己的发行版linux操作系统。比如redheat,centos,ubutu....
2、目前主流的发行版linux有:
a、debian(唯一没有企业支持的,由黑客自动更新维护的,用起来稍微难一点)
ubutu(基于debian的二次发行版)
knopix
b、slackware(suse为其的一个子分支)
c、RedHat
RedHat9.0后分裂为两个版本:
RedHat Enterprise Linux:RHEL :十八个月发行一个版本,即企业版
centos(Community ENTerprise OS:基于RedHat企业版的二次发行版):
Fedora Core:每6个月发行一个版本。个人桌面版。
也有其他的比较流行的:
Gentoo
ArchLinux
3、linux完整意义上应该叫GNU/linux,他由linux内核和GNU组织的各种开源软件联合起来构成的一个庞大的完整的操作系统。
4、linux软件程序版本号:
major(主版本号).minor(次版本号).release(发行【修正】号)。翻天覆地的大变化时主版本号会提升。分支变化时次版本号会提升,修改bug时发行版本号会提升。
linux官方站点:www.kernel.org
linux版本 + GNU程序版本 = 发行版本
五、课外作业
GPL,BSD,Apache,Android