学习笔记——鸟哥的Linux私房菜基础篇(一)

本文基于鸟哥Linux私房菜基础版第四版学习记录。

第零章 计算器概论

1、计算器:能接受用户输入命令与数据,经由中央处理器的数学与逻辑单元运算处理后,以产生或存储成有用的信息。组成部分:输入设备、输出设备、CPU内部的控制单元和算数逻辑单元、主存储器。

                                         学习笔记——鸟哥的Linux私房菜基础篇(一)_第1张图片

2、CPU架构分为简单指令集(RISC)和复杂指令集(CISC)

(1)RISC(Reduced Instruction Set Computer):这种CPU中,微指令集比较精简,时间段、动动单纯,指令集执行效果较佳;若做复杂事情,由多个指令集完成。常见RISC指令集电脑有:Oracle的SPARC系列、IBM的PowerPC、ARM CPU系列等。

(2)CISC(Complex Instruction Set Computer):这种CPU中,微指令集可以执行一些低阶的硬件操作,指令数多且复杂,每条指令长度不一样,执行花费时间也较长。常见的CISC指令集CPU有:AMD、Intel、VIA等x86架构的CPU。

PS:1)x86由来因Intel研发CPU代号为8086,后续系列80286、80386...,因此这类CPU统称为x86;

        2)x86、x86_64分别代表32位和64位,32位电脑一次可以读入32个字节;

        3)新的x86 CPU,增加了很多先进的指令集,这些指令集有不同的作用,如加速多媒体指令集、虚拟化指令集、省电功能、64/32位兼容技术等。

3、 计算机分类:超级计算机(国防军事、太空、气象预测)、大型计算机(全国性证券交易、大型企业主机)、迷你计算机(科研、工程分析)、工作站(特殊用途计算机、弱与迷你计算机,相比于个人电脑强调稳定不宕机)、微电脑(个人计算机)。

 4、下载速度换算,1byte=8bit,大家日常说的带宽如20M是20Mbits per second,换算成文件传输 2.5Mbyte/s。

硬盘单位换算:500G硬盘 500*1000*1000*1000Byte,转换成文件使用二进制(1024为底),就变成466G。物理硬盘最小物理量为512Byte,成为一个扇区(sector),通常硬盘容量是按多少个扇区来算的,所以才会采用十进制计算。

5、BIOS(Basic Input Output System)是一套程序,这套程序写死在主板上内存芯片上(只读存储器,Read Only Memory),没有通电时也能够把数据记录下来。BIOS非常重要,系统开机时候会首先去读取它。

6、操作系统:操作系统也是一堆应用程序,管理计算机的所有活动以及驱动中的硬件。

                                          学习笔记——鸟哥的Linux私房菜基础篇(一)_第2张图片

操作系统至少包含如下核心功能:

     1)系统呼叫接口(System call interface):方便开发者与核心进行沟通,提供接口供开发者使用

     2)程序管理(Process control):CPU支持多任务运算,核心必须能控制这些工作,有效分配CPU资源,安排程序工作顺序

     3)内存管理(Memory managerment):内存非常重要,所有代码与数据必须先进入内存中,才能供CPU使用

     4)文件管理系统(Filesystem managerment):输入输出,文件格式等,如果不支持某个文件系统,那么你将无法使用

     5)装置驱动(Device drivers):是硬件管理的核心之一,没有驱动程序,核心就无法让硬件工作。

第一章 Linux是什么与如何学习

1、Linux与Unix历史

(1)现代操作系统雏形:1969年以前,电脑主要用于军事、高科技,一般人难以接触,而且架构设计难用、接口复杂、周期长;程序设计者通过读卡纸上面打印,输入主机进行计算;后来操作系统有所改良,可以键盘输入,但是毕竟主机只有一部,大家还是要等待;1960年代初,麻省理工发明了兼容分时系统(Compatible Time-Sharing System),它可以通过多个终端(terminal)来进入主机,来利用主机资源进行计算。这种兼容分时系统可以成为现代操作系统的鼻祖,在当时属于划时代的技术!

(2)Multics计划失败:兼容分时系统可以运行不到30个终端,1965年以前后,由贝尔实验(Bell)、麻省理工(MIT)、通用电气(GE)共同发起Multics计划——目标让大型主机可以提供300个以上终端。1969年以后该计划落后,资金短缺,Bell实验室退出该计划;原本参与Multics计划的人从中获取一些电子,Ken Thompson是其中一位。

(3)简化版Unics诞生:Thompson有一台PDP-7主机,他希望针对这部主机开发一个操作系统核心程序;非常巧合的1969年八月份,趁着Thompson的妻儿去美国西部弹琴,他用一个月的时间用汇编语言编写了核心程序,以及一个小小的文件系统,这个系统就是Unix的原型;他对Multics庞大的复杂系统做了不少简化,于是同事们戏称他这个系统为——Unics。Thompson的系统有两个重要的概念:一所有程序、系统装置都是文件;二不管构建编辑器还是附属文件,所有文件只有一个目的,且要有效完成目标;这些概念对后来的Linux发展有着重要的影响。

(4)Unics的发展(C语言重写):因为Thompson的系统太好用,在贝尔实验室内部广为流传;因为汇编语言无法跨平台,后来Thompson与Ritchie合作以B高阶语言重写,但是B语言编译核心效果不好,后来Dennis Ritchie将B语言重新改写成C语言,再以C语言重写Unics,至此最后正式发行Unix版本。贝尔实验室属于AT&T,它忙于商业活动,对Unix不支持不排斥,Unix当时并不被一般人所接受,但是是学术研究者的福音。因为是C语言与硬件性相关不大,因为Unix很容易移植。

(5)Unix各个版本的发展:1977年,伯克利大学的Bill Joy在Unix的源码基础上改成适合自己机器的版本,这个版本命名为Berkeley Software Distribution(BSD),它是Unix的一个很重要的分支;Bill Joy后来Sun公司的创办者;后来安装在x86上的FreeBSD即是从BSD改版而来;由于AT&T的开发态度,很多商业公司开发了自家的Unix版本,如AT&T自家的System V,IBM的 AIX等。因为当时内业协议的概念,自家的操作系统虽然核心架构虽然大同小异,但是核心(Kernel)必须与硬件结合,因此各家操作系统,只能在自家的硬件上运行。1979年System V第七个版本以后有所改善,另一大特色支持x86个人计算机。

(6)开源Minix诞生:AT&T处于商业考虑,打算收回Unix版权,特别在第七版中提到“不可对学生提供源码”的限制;Andrew Tanenbaum教授为了教授学生认识Unix,完全不看Unix核心源码(为了避免版本)的基础上,在1984年编写了Minix这个Unix Like的核心程序,他完全兼容Unix,1986年完成;作为老师主要用于教学,所以对Minix点到为止,只提供源码,没有商业运作。

(7)GNU计划发展:Richard Stallman1984年发起GUN(GNU is Not Unix的缩写)计划,目标建立一个自由、开发的Unix操作系统(Free Unix);由于开发操作系统难度太大,Stallman就先着手开发Unix能运行的软件,并开源免费;当时的软件都需要编译,他决定开发一个C语言编译程序GNU C Compiler(gcc),当时C语言版本多,但是都是专利,如果他写的C编译器足够优秀可以让GNU计划出现在大众面前;刚开始并不顺利,他就将原来开发的Emacs程序编辑器移植到Unix上,可以检验语法错误,当时来说太棒了;后来成立了自由软件基金会(FSF,Free Software Foundation);最终完成了GCC,同时还撰写了很多函数库(GUN C library),以及后来被操作系统使用的基本接口BASH shell,这些豆子1990年左右完成。

     GNU发展的几个重要软件:Emacs、GNU C(GCC)、GNU C Library(glibc)、Bash shell;很多开发者利用这些工具壮大了自由软件;但是GNU最初的建立一个自由的Unix操作系统的构想并没有实现。

(8)Linux正式诞生:1991年,芬兰大学生Linus Torvalds 在BBS发帖,宣称他以bash、gcc、等GNU软件的工具写了一个小的核心程序,该核心程序是个玩具,不像GUN那么专业,不过核心程序可以在Intel的386极其上面运行;从此开始了Linux的不平凡之路。

2、Torvalds 的Linux发展

(1)Torvalds进入赫尔辛基大学,有机会接触到只有16个终端的Unix操作系统,他在思考为何不着急搞一部Unix来玩;后来他知道有一个类似Unix的系统,并且与Unix兼容,可以泡在Intel 386机器上,这就是Tanenbaum的Minix,他还可以获取到Minix的源码;幸运的是他有机会贷款买了一部Intel的386来玩,由于以往接触的Unix都是多任务操作,因此他对386硬件也进行了测试,得到的结果是支持多任务操作。

(2)在Minix上Torvalds发现虽然它很棒,但是创造者教授却不愿意增强功能,因此他决定自己改写核心程序;这时候他需要能够进行工作的环境,以及可以将源码编译成可执行文件的编译程序;这时候GNU假话提供的bash工作环境以及gcc编译程序等起作用了,让Torvalds可以专心撰写核心程序;Torvalds让GNU的自由软件核心程序与386紧紧结合在一起;他的这个小小的操作放在BBS上,他只是觉得好玩,另外他希望别人给更多的建议和回馈来发展这个操作系统;因为当时他防止核心的那个FTP网站目录为:Linux,所以大家便称这个核心为Linux;此时的Linux就是那个kernel。

(3)为了让自己的Linux能兼容Unix,他参考标准的POSIX规范对Linux进行改造,这使Linux与Unix可以共享软件;大量的志愿开发者加入到项目中来,大家组成一个不见面的虚拟团队,一起来帮助Torvalds改善Linux。

(4)早期的Linux由Torvalds针对386写的,跟386硬件有很大相关性,所以早期Linux不具备移植性;因为开源,可以修改代码去适应环境,1994年以后Linux被开发到很多硬件上面去了,除了支持x86,还支持IBM、HP等公司的硬件,以及后来的小型单反计算机、基于ARM架构的智能手机(Android)、平板灯,都是Linux的核心。

3、Linux的版本号,Torvalds根据核心的发展分类两大类不同核心编号:一发展中版本(development)主、次版本为奇数,这种版本是为了测试与发展新功能;新的功能会增加到这种版本中;测试没有问题后放入下一个稳定版本中;二是稳定版(stable)主、次版本为偶数,核心功能成熟后加入此版本,一般家庭、企业版本用稳定的Linux平台。

4、区分Linux版本与Linux distribution版本,前者2015年核心(kernel)只到4.0,后者发行版一般指第三方开发的Linux操作系统;如CentOS 7.x,Ubuntu 14.x等,是第三方开发商自己命名的Linux的版本号。

5、Linux的出现让GUN计划有了自己自己的核心程序,GNU软件不必只能跑在Unix上了;Linux用了很多GNU软件,因此Stallman认为Linux全名应该叫——GNU/Linux;后续很多自由软件都以Linux为开发测试平台。

6、虽然Torvalds负责开发的Linux备Kernel与Kernel提供的功能,以及上边运行的各种软件,已经是一个相当完整的操作系统了;不过这种操作系统很难,早期由黑客工程师维护,没有考虑一般使用者的能力;后来很多商业公司将Linux kernel(含tools)与各种软件整合起来,再加上自己具有创意的工具程序,并形成用户可以直接安装的Linux系统;这个“Kernel+Software+Tools+可完全安装的程序”,我们称之为Linux distribution,中文翻译Linux发布商套件。

7、为了让Linux distribution差异不至于太大,这些开发商依据Linux Standard Base规范来开发,以及目录架构的File system Hierarchy Standard标准规范,因此大家其实差异不大.

8、Linux distribution 主要分为两大类,一种以RPM方式安装软件的系统,包括Red Hat、Fedora、SUSE、CentOS等;一种是使用Debian的dpkg方式安装软件的系统,包括Debian、Ubuntu、B2D等。另外按性质分为社群版(Fedora、Ubuntu、OpenSUSE,建议这些可以作为个人桌面计算机);商业版(Red Hat、SUSE,这些用在服务器上);社区版会加入新的功能,会有一些bug,商业版则是听过一段时间测试磨合,才将稳定版软件放进去。CentOS是抓RHEL的源码来重新编写的Linux distribution,所以号称兼容REHL。

9、Linux的应用角色

    (1)企业环境应用:网络服务器、关键人物(数据库、重要软件等)、学术机构高效运算任务

    (2)个人环境应用:桌面计算机、手持系统(PAD、手机)、嵌入式系统

PS:硬件系统顺利运行需要合适的操作系统来控制,而这类操作系统直接嵌入产品中,理论上你应该不会动刀这个操作系统,所以就称为嵌入式操作系统。如家电产品、数码相机、路由器、交换机等,一般你绝对不会动到内部的操作系统。

    (3)云端应用:云应用,如阿里云

    (4)端设备:简易的电脑,不承担复杂计算,安装的Linux连接云端

10、Linux学习建议:如果只是会用用Linux,可以采用带X window的Linux,否则建议学习命令的方式;X window只是一个应用程序,Linux命令行才是Linux的本质与内核;X window在服务器和嵌入设备上不是必须的,而且会吃掉一部分内存;对于远程服务命令模式更方便,只需要Linux账号和密码即可使用、维护。

 11、学习建议——获取成就感和兴趣,去折腾去玩,在BBS上帮助别人、教会别人、解决别人的问题,参与讨论等。

你可能感兴趣的:(Linux,鸟哥的私房菜)