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

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、操作系统:操作系统也是一堆应用程序,管理计算机的所有活动以及驱动中的硬件。

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

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发布商套件。

为了做好运维面试路上的助攻手,特整理了上百道 【运维技术栈面试题集锦】 ,让你面试不慌心不跳,高薪offer怀里抱!

这次整理的面试题,小到shell、MySQL,大到K8s等云原生技术栈,不仅适合运维新人入行面试需要,还适用于想提升进阶跳槽加薪的运维朋友。

本份面试集锦涵盖了

  • 174 道运维工程师面试题
  • 128道k8s面试题
  • 108道shell脚本面试题
  • 200道Linux面试题
  • 51道docker面试题
  • 35道Jenkis面试题
  • 78道MongoDB面试题
  • 17道ansible面试题
  • 60道dubbo面试题
  • 53道kafka面试
  • 18道mysql面试题
  • 40道nginx面试题
  • 77道redis面试题
  • 28道zookeeper

总计 1000+ 道面试题, 内容 又全含金量又高

  • 174道运维工程师面试题

1、什么是运维?

2、在工作中,运维人员经常需要跟运营人员打交道,请问运营人员是做什么工作的?

3、现在给你三百台服务器,你怎么对他们进行管理?

4、简述raid0 raid1raid5二种工作模式的工作原理及特点

5、LVS、Nginx、HAproxy有什么区别?工作中你怎么选择?

6、Squid、Varinsh和Nginx有什么区别,工作中你怎么选择?

7、Tomcat和Resin有什么区别,工作中你怎么选择?

8、什么是中间件?什么是jdk?

9、讲述一下Tomcat8005、8009、8080三个端口的含义?

10、什么叫CDN?

11、什么叫网站灰度发布?

12、简述DNS进行域名解析的过程?

13、RabbitMQ是什么东西?

14、讲一下Keepalived的工作原理?

15、讲述一下LVS三种模式的工作过程?

16、mysql的innodb如何定位锁问题,mysql如何减少主从复制延迟?

么叫CDN?

11、什么叫网站灰度发布?

12、简述DNS进行域名解析的过程?

13、RabbitMQ是什么东西?

14、讲一下Keepalived的工作原理?

15、讲述一下LVS三种模式的工作过程?

16、mysql的innodb如何定位锁问题,mysql如何减少主从复制延迟?

17、如何重置mysql root密码?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值