1. 计算机组成
冯·诺依曼体系结构中,计算机要有五大基础硬件:输入设备、输出设备、运算器,存储器、控制器。
功能:1、输入设备:用于输入数据和程序(常用的有键盘、鼠标、扫描仪等)。
2、输出设备:用于输出处理结果(常用的有显示器、打印机等)。
3、运算器:用于数据加工处理(CPU)。
4、存储器:用于记忆程序和存储数据(内存为主存储器,磁盘为辅助存储器)
5、控制器:用于控制程序执行(CPU)。
服务器硬件组成:配置和普通家用电脑差不多,有主板、中央处理器(CPU)、内存、硬盘、电源、风扇、网卡、PCI等。服务器一般不单独配鼠标、键盘和显示器等的输入输出设备。
2. 操作系统内核的功能
1、 内存管理,文件管理,网络管理,系统调用,驱动管理,进程管理,安全管理等。
内核的作用:内核是一个操作系统的核心,它负责管理系统的进程、内存、设备驱动程序、文件和网络系统以及系统的初始化,系统调用等、决定着系统的性能和稳定性。(如应用程序需要访问计算机硬件需要操作系统内核管理调用)。
大致过程:App(应用程序)→ [system call(系统调用)→ kernel(内核)]→ hardware(硬件)
3. 常见Linux发行版
slackware,Debian,Redhat,centOS,Archlinux,Gentoo,LFS,Android等(前三个是目前市面上的三大流派)。
发行版之间联系与区别:
1、slackware:主要是SUSE Linux Enterprise(SLES),Slackware Linux是由Patrick Volkerding制作的GNU/Linux发行版,它是世界上依然存活的最久的Linux发行版。
2、Debian:ubuntu(适合开发使用),ubuntu系统是一个以桌面应用为主的Linux操作系统,Ubuntu基于Debian发行版和GNOME桌面环境。
3、Redhat:RHEL,红帽子公司推出的面向企业的Linux系统(Redhat Enterprise linux)、CentOS(开源免费,与RHEL本质上没区别,市面上大部分互联网公司使用,比较稳定)、中标麒麟(我们中国自己的linux操作系统)等这些都是redhat流派的分支。
4、还有一个LFS:Linux from scratch,有一定基础且有兴趣的童鞋可以尝试一下自己编制Linux系统。 (目前Linux版本基本都采用Linux内核,也都遵循GUN通用公共许可协议,也叫GPL。区别是其不同版本他们的库和应用程序会有不同)。
4. 常见的开源协议有
GPL、LGPL、BSD、Apache等。
区别:1、GPL: 大多数软件许可证决意剥夺你共享和修改软件的自由。相比之下,GPL(GNU通用公共许可证)试图保证你共享和修改自由软件的自由。保证自由软件对所有用户是自由的。GPL适用于大多数自由软件基金会的软件,以及由使用这些软件而承担义务的作者所开发的软件。(自由软件基金会的其他一些软件受GNU库通用许可证的保护)。你也可以将它用到你的程序中。当我们谈到自由软件(free software)时,我们指的是自由而不是价格。 为了保护你的权利,我们需要作出规定:禁止任何人不承认你的权利,或者要求你放弃这些权利。如果你修改了自由软件或者发布了软件的副本,这些规定就转化为你的责任。
2、LGPL: LGPL许可证适用于特殊设计的函数库,且与原来的通用公共许可证有很大的不同,给予了被许可人较为宽松的权利,所以叫“较宽松公共许可证”。在特定的函数库中使用它,以准许非自由的程序可以与这些函数库连结。
3、BSD:BSD许可证也比较宽松,只需要附上许可证的原文,但它还要求所有进一步开发者将自己的版权资料放上去,这些版权资料许可证占的空间可能比程序还大。
4、Apache:需要给代码的用户一份Apache Licence如果你修改了代码,需要在被修改的文件中说明。在延伸的代码中(修改和有源代码衍生的代码中)需要带有原来代码中的协议,商标,专利声明和其他原来作者规定需要包含的说明。如果再发布的产品中包含一个Notice文件,则在Notice文件中需要带有Apache Licence。你可以在Notice中增加自己的许可,但不可以表现为对Apache Licence构成更改。Apache Licence也是可以在需要的时候修改代码来满足需要并作为开源或商业产品发布/销售。
5. Linux哲学思想
1、一切皆文件:在Linux里(或unix),不管是普通文件、目录,还是硬件块设备等都表现为文件。
2、小型,单一用途的程序:有很多小程序/工具,功能单一并且高效运行。
3、 链接程序,共同完成发杂功能:复杂的任务可以通过一个个小程序链接组合完成,也保证了性能的高效性。
4、避免令人困惑的用户界面:如Windows图形界面,虽然操作简单,但不可靠,且Windows是闭源的,系统出了问题很难排错和修复,一般情况就是重启或重装系统。而Linux是开源的(源代码公开),出了问题可以通过命令排错,或修改配置文件修复解决问题。
5、配置数据存储在文本中:Linux中所有数据都存放在文本文件中,配置的更改都需要更改配置文件,只需要用文本编辑器就可以更改文本文件。
6. Linux目录结构
Linux中一切都从/(根)目录开始,所有的目录都是按照一定的类别有规律的组织和命名的。FHS(目录层次结构)是Linux的目录规范标准。[FHS(目录层次结构)]http://www.pathname.com/fhs/。
FHS定义了两层规范:1、第一层是“/”(根)目录下各个目录应该存放什么文件数据,例如/etc应该要放置设置文件,/bin与/sbin则应该要放置可执行文件等等。
2、第二层则是针对/usr及/var这两个目录的子目录来定义。例如/var/log放置系统登录文件、/usr/share放置共享数据等等。 且根目录与开机、还原、系统修复等操作有关。
FHS标准建议:根目录(/)所在分区应该越小越好,且应用程序所安装的软件最好不要与根目录放在同一个分区内,保持根目录越小越好,如此不但性能较好,根目录所在的文件系统也较不容易发生问题。
目录结构命名规定:
1、Linux系统区分大小写,因此文件名也区分大小写。
2、文件名不可以使用“/”字符,也不建议使用特殊字符,因为执行命令时会出错。
3、文件名长度最长不能超过255个字符。
4、所有以“.”开头的文件都为隐藏文件。
文件目录命名规则:
/bin:系统有很多放置执行文件的目录,但/bin比较特殊。因为/bin放置的是在单用户维护模式下还能够被操作的命令。在/bin下面的命令可以被root与一般账户所使用,主要有cat,chmod,chown,date,mv,mkdir, cp,bash等常用的命令。
/boot:这个目录主要放置开机会使用到的文件,包括Linux内核文件以及开机菜单与开机所需要配置文件等。LINUX kernel常用的文件名为vmlinuz,如果使用的是grub这个引导装载程序,则还会存在/boot/grub/这个目录。
/dev:在Linux系统上, 任何设备与接口设备都是以文件的形式存在于这个目录当中的。你只要通过访问这个目录下面的某个文件,就等于访问某个设备。
比较重要的文件有/dev/null, /dev/zero,/dev/tty,/dev/lp*, /dev/hd*, /dev/sd*等。
/etc:系统主要的配置文件几乎都放置在这个目录内, 例如人员的账号密码文件、各种服务的起始文件等。一般来说,这个目录下的各文件属性是可以让一般用户查阅的,但是只有root有权利修改。FHS建议不要放置可执行文件(binary)在这个目录中。
比较重要的文件有etc/inittab, /etc/init.d, /etc/modprobe.conf, /etc/X11, /etc/fstab, /etc/sysconfig等。
另外,其下重要的目录有: a. /etc/init.d/: 所有服务的默认启动脚本都是放在这里的,例如要启动或者关闭 iptables的话: “/etc/init.d/iptables start” 、 "/etc/init.d/iptables stop"。
b. /etc/xinetd.d/: 这就是所谓的super daemon 管理的各项服务的配置文件目录。
c. /etc/X11/: 与X Window有关的各种配置文件都在这里, 尤其是xorg.conf 这个XServer的配置文件。
/home :这是系统默认的用户主文件夹(home directory),在你创建一个一般用户账号时,默认的用户主文件夹都会规范到这里来。比较重要的是,主文件夹有两种代号:1.~: 代表当前登录用户的主文件夹2.~dmtsai: 则代表dmtsai的主文件夹。
/lib:系统的函数库非常多, 而/lib放置的则是在开机时会用到的函数库,以及在/bin或/sbin下面的命令会调用的函数库而已。什么是函数库? 你可以将它想成是“外挂”,某些命令必须要有这些“外挂”才能够顺利完成程序的执行之意。尤其重要的是/lib/modules/这个目录,因为该目录会放置内核相关的模块(驱动程序)。
/media:/media放置的就是可删除的设备。包括软盘、光盘、DVD等设备都暂时挂载于此。常见的文件名有/media/floppy, /media/cdrom等。
/mnt:如果你想要暂时挂载某些额外的设备,一般建议你可以放置到这个目录中。在比较早的时候,这个目录的用途与/media相同。只是有了/media之后,这个目录就用来暂时挂载用了。
/opt:第三方软件放置的目录
/root:系统管理员(root)的主文件夹。之所以放在这里,是因为如果进入单用户维护模式而仅挂载根目录时,该目录就能够拥有root的主文件夹,所以我们会希望root的主文件夹与根目录放置在同一个分区中。
/sbin:Linux有非常多的命令是用来设置系统环境的,这些命令只有root才能够利用来“设置”系统,其他用户最多只能用来“查询”而已。放在/sbin下面的为开机过程中所需要的,里面包括了开机、修复、还原系统所需要的命令。至于某些服务器软件程序,一般则放置到/usr/sbin/当中。至于本机自行安装的软件所产生的系统执行文件(systen binary), 则放置到/usr/local/sbin/当中了。常见的命令包括fdisk, fsck, ifconfig, init,mkfs等。
/srv:srv 可以视为“service”的缩写,是一些网络服务启动之后,这些服务所需要取用的数据目录。常见的服务例如www,FTP等,举例来说,www服务需要的网页数据就可以放置在/srv/www/里面。
/tmp:这是让一般用户或者正在执行的程序暂时放置文件的地方。这个目录是任何人都能够访问,所以你需要定期清理一下。当然,重要数据不可放置在此目录。因为FHS甚至建议在开机时,应该要将/tmp下的数据都删除。