鸟哥的Linux私房菜基础学习篇 第0章与第1章的重点探索

鸟哥的Linux私房菜基础学习篇 第0章与第1章的重点探索


前言

笔者个人正在进行Linux的学习,以下是帮助阅读鸟哥私房菜的各位摘录的一些重点,以免遗忘哈哈,其实每一章最后鸟哥也都会列出相关重点,这里可能也是站在笔者个人角度选出的一些比较重要的部分进行的整理。(当然少不了从最基础的部分开始)

一、计算机概论

1.知识基础

计算机是:接受用户输入的命令与数据,经由中央处理器的算数与逻辑单元运算处理后,产生或存储成有用的信息。
电脑硬件的五大单元:输入单元、输出单元、CPU内部的控制单元(协调各周边组件与各单元间的工作)、算术逻辑单元(负责程序运算与逻辑判断)与内存。
CPU读取数据都从内存而来,内存中的数据则是从输入单元而来,CPU处理完后的数据要先写回内存,最后数据才从内存传到输出单元。
两种CPU架构:精简指令集(RISC)(代表则为ARM CPU系列,目前世界上适用范围最广的CPU可能就是ARM架构)和复杂指令集(CISC)(被大量用于个人电脑)
位(bit):指的是CPU一次读取数据的最大量(64位CPU代表CPU一次可以读写64位数据)
字长:CPU每次能够处理的数据量,现在电脑所说的32位64位就是这个概念
主板:主机机箱内连接其他重要设备的,宛如人的神经系统
要由过去的经验来判断事情时,也要讲硬盘挪到目前的内存当中再交由CPU判断,比如是将经验放入当前的记忆中,再交由大脑判断。
电脑的算力出来CPU指令集设计的优劣之外,主要还是由速度决定。
二进制与十进制:数据容量采用二进制记录,速度单位则是常用十进制

2.知识初阶

北桥与南桥:早期芯片采用的两个网桥用来控制各组件的通信,北桥连接速度较快的CPU、内存、显卡等组件,南桥负责连接速度较慢的设备接口,包括硬盘、USB设备、网卡等。目前北村控制器整合到CPU了,CPU与内存之间的通信直接可以交流,不会消耗更多带宽,现在也没有所谓的北桥了,都整合到了CPU中。
CPU的频率:CPU每秒进行工作的次数,可以用来比较CPU性能,外频*倍频=CPU的频率,外频值CPU与外部组件进行数据传输时的速度,倍频值CPU内部用来加速工作性能的一个倍数,调高外频想要达到超频时可能会造成宕机,现在Intel的CPU会主动帮你超频。
超线程:在每一个CPU中将重要的寄存器分成两组,而让程序分别使用这两组寄存器
动态随机存取内存(DRAM):个人电脑的内存主要组件,挥发性内存,只有在通电时才能记录和使用。
二级高速缓存(L2 Cache):CPU内对于某些常用的程序或数据的放置,以免到内存中重新读取,需要用到静态随机存取内存(SRAM)帮忙,DRAM达不到与CPU频率相同的速度
只读存储器(ROM):存储芯片再没有通电时也能记录数据,非易失性存储,储存了BIOS这个程序,系统启动时最先会去读取它。
固件:固定在硬件上的控制软件,像软件一样一个被电脑所执行的程序,然而对硬件内部更加重要
显卡与GPU:对于图像影像的显示重点在于分辨率与颜色深度,显卡中集成了显存来储存这部分信息,GPU是来源于所谓嵌入在显卡上的一个3D加速芯片,帮助提升显卡的算力
显卡与电脑屏幕的连接接口:特别注意的是HDMI,常见好用,可以同时传输影像与声音。
扇区、磁道与柱面:是传统硬盘读写数据的相关概念,驱动马达转动碟片后通常数据从硬盘外圈开始往内写。
固态硬盘(SSD):通过闪存直接读写,不会造成严重的磁盘读取延迟,寿命不长只有几年,但是非常快。
缓冲存储器:硬盘上用于将硬盘内常用的数据缓存起来的一个内存。
扩展卡与接口:特别注意的是主板上针对扩展卡的插槽可能有的不带金手指,是伪装成x16的x8或x4等,这便无法发挥扩展卡的全部能力。另外扩展卡性能在按抽到左上方与CPU直连的那几个插槽性能最佳。
I/O与IRQ中断请求:I/O是各设备的门牌号,IRQ是各门牌连接到邮件中心的专门路径,用来告知CPU各设备的工作情况,一边CPU分配任务。
主板的BIOS与CMOS:CMOS主要记录主板上面的重要参数,包括系统时间、CPU电压与频率、各项设备的I/O与IRQ,需要用电记录,也因此主板上有电池,BIOS是计算机启动时会去加载这些参数的一个主板上某一块flash或EEPROM的程序。
主机电源:挑选高转换率的电源,以免电源自身玩掉太多电力

最终选购时注意速度的快慢与整体系统最慢的那个设备有关。

3.知识进阶

操作系统:操作系统其实也是一组程序,其重点在于管理电脑的所以活动以及启动系统中的所有硬件。它的出现是为了解决硬件方面老是需要重复编写句柄的问题,应用程序作为壳程序,而硬件位于核心的话,为了联系二者便需要操作系统,操作系统中的系统调用服务于应用程序,而内核(kernel)则与硬件紧密联系,做管理硬件的操作(内核层直接参考硬件规格写成,同一个操作系统程序不能在不一样的硬件架构下运行)
系统调用(System Call):操作系统通常会提供一套应用程序编程接口(API)给程序员来开发软件。内核只会进行电脑系统的资源分配,需要在上面有应用程序的提供,用户才能够使用系统,为了保护内核,有为了程序员开发软件更容易,就有了这样一套API,即系统调用层。
内核的功能:系统调用接口,进程管理,内存管理,文件系统管理,设备驱动(看到后面的章节应该会有详细介绍)

操作系统通常会提供一个API给硬件开发商,让他们可以根据这个接口,设计可以驱动硬件的驱动程序,这样操作系统与新出来的硬件就可以对应起来了。

二、Linux是什么与如何学习

1.需要开始了解linux的一些概念

软件移植:经过改版后的操作系统能够在另一个硬件平台上运行,linux是开源的操作系统,这意味着它的程序代码可以被修改成适合在各种硬件架构师运行,具有“可移植性”。
UNIX到linux:UNIX是linux的老大哥,在真正进展到linux之前,经历了Minix,GNU计划,Internet,POSIX(用于规范内核与应用程序间的接口)及虚拟团队的多方贡献,不断演变进步最终产生了linux,期间GPL(General Public License)是解决了授权问题的重要声明,linux内核使用GPLv2的声明
多任务的实现:具有多任务功能的CPU在同一个时间点会在不同的程序间切换(CPU的工作频率大小某种程度上可以反映这种能力的强弱),除了硬件(主要是CPU)需要能够具有多任务的特性外,操作系统也需要支持这个功能在一个CPU上同时启动两个以上的工作,要比一个个执行更耗时,也因此开发商要整合多个CPU核心于一个芯片中。

小型单板机(树莓派/香蕉派)与移动设备(智能手机、平板电脑)的ARM架构。大多也是使用Linux的内核。

2.所谓Linux的版本

Linux的内核版本:奇偶数命名版本在3.0版后不再使用,特别注意判断你的Linux是否位长期支持版本,这意味着是否一直会有内核维护者进行程序代码的更新维护(可以使用“uname-r”来查看内核版本)
链接: link.内核的版本参见这里
Linux的发行版本:内核版本与发行版本并不相同,你常用的Linux应该说明位发行版,以CentOS这个发行版来说,应该说“我用的Linux是CentOS这个发行版,版本为7.x”,单说Linux,其实就是一个操作系统最底层的内核及其提供的内核工具,为了让用户能够接触到Linux,于是很多商业公司或非营利团体,就将Linux内核(及其工具)与可运行的软件整合起来,加上自己具有创意的工具程序,这个工具程序可以让用户以CD/DVD或通过网络直接安装/管理Linux系统,这个“内核+软件+工具+可完全安装程序”的东西,称之为Linux发行版(Linux Distribution)。而他们选择的软件重复性相当高且非常知名。
下面是几个主要的Linux发行版官方网址:
Red Hat:链接: link.
SUSE:链接: link.
Fedora:链接: link.
CentOS:链接: link.
Debian:链接: link.
Ubuntu:链接: link.
Gentoo:链接: link.
个人计算机建议社区版,服务器建议商业版。
Linux在中国:(好像是台湾地区的老师帮忙汉化整理后的网站)B2D:链接: link.
鸟哥建议我们先学习以RPM软件管理为主的RHEL、Fedoras、SUSE、CentOS等用户较多的版本,其中CentOS还号称完全兼容商业版

3.Linux当前角色

手持系统与嵌入式系统:手持系统中自然要提Android操作系统,它其实是Linux内核的分支,只是专门用来针对手机或平板这类的ARM机器所设计的,嵌入式系统则是针对像家电产品、数码相机这类,理论上人应该不会修改到这个操作系统,所以称嵌入式系统
云程序:许多大型互联网服务提供商(ISP)提供了所谓的共有云让企业用户或飞人用户来使用ISP的虚拟化产品,云程序的底层是Linux,而云程序搭建出来的虚拟机,大多也是Linux操作系统
虚拟化:在一台物理主机上面模拟出多个逻辑上完全独立的硬件,这个假的虚拟出来的硬件主机,可以用来安装一台逻辑上完全独立的操作系统。

像树莓派、香蕉派这样的终端设备其实就是一台小型的计算机,加上USB键盘、鼠标与HDMI的屏幕,立刻就是可以让小朋友学习程序语言的环境,再加上通过网络去取得具有更强大运算资源的云端虚拟机,可就不得了了。

4.Linux的学习

1.计算机概论与硬件相关知识
2.先从Linux的安装与命令学起
3.Linux操作系统的基础技能
4.务必学会vi文本编辑器
5.Shell(所谓命令行模式就是一个名为“Shell”的软件)与Shell脚本的学习
6.一定要学会软件管理
7.网络基础的建立
8.网站的搭建

总结与学习路上可能需要的网站

这里放的其实是Netman大大给的建议:
1.有系统的设计文件目录
2.养成一个做记录的习惯,把错误信息和引发状况以及解决方法记录清楚,同时最后归类及定期整理
3.备份网络上看到的任何好文章,同时定好题目,归类存盘
4.作为一个开发者,要机器迁就人
……
最后放出遇到问题可能需要的网站:
The LinuxDocumentation Project:链接: link.几乎列出了所有Linux上可以看到的文献数据,各种HowTo的做法,是英文的
鸟哥网站:链接: link.
酷学园讨论区:链接: link.
鸟哥的私房菜馆讨论区:链接: link.

猜你喜欢

转载自blog.csdn.net/ClaireTang1/article/details/113522940