谢烟客-----Linux入门

为什么要学习 Linux

2050年人工智能或将超越人类智商,机器人产生了自主意识,,完全取代人脑思维甚至统治人类,或许....

有人说:windows是漂亮的,Linux是智慧的、透明的。

全球TOP500超级计算机排行榜中99%都是linux内核。

任何手持智能终端设备就连电子表的底层都是Linux

你或许会认为Windows更为易用,Linux操作起来很慢,Linux入门曲线陡峭,其实当我们学会一些命令之后,一个命令所完成的事,Windows中需要几次步骤才能完成。

基于命令行,执行速度快,工作效率高

Linux系统遵循GPL协议,属于开源软件,你能用任意姿势获取源代码,修改源码,学习源码,而且Linux有自己的开源社区,能在上面开拓视野,接触许多科学前沿的东西。

计算机的组成、虚拟机的原理、操作系统基础

冯诺依曼体系结构

    

冯·诺伊曼明确提出了计算机的体系架构,从1951年第一台电子计算机EDVAC开始,计算机经历了多次的更新换代,不管是最原始的、还是最先进的计算机,使用的仍然是冯·诺依曼最初设计的计算机体系结构。因此冯·诺依曼被世界公认为“计算机之父”,他设计的计算机系统结构,称为“冯诺依曼体系结构”。

 结构及框架

运算器:用于完成各种算术运算、逻辑运算和数据传送等数据加工处理。

控制器:用于控制程序的执行,是计算机的大脑。运算器和控制器组成计算机的中央处理器(CPU)。控制器根据存放在存储器中的指令序列(程序)进行工作,并由一个程序计数器控制指令的执行。控制器控制计算器各部件的协调。

存储器:用于临时存放程序和数据,运算器运算结果,保存的位置。例如:内存。程序和数据以二进制代码形式不加区别地存放在存储器中,存放位置由地址确定。

输入设备:用于将数据或程序输入到计算机中,例如:鼠标、键盘。

输出设备:将数据或程序的处理结果输出至指定设备,例如:显示器、打印机。

总线的组成

数据总线DB(Data Bus)、地址总线AB(Address Bus)和控制总线CB(Control Bus),也统称为系统总线。

DB 用于数据交换的总线

AB  用来传送地址的总线,地址总线的位数决定了CPU可直接寻址的内存空间大小,一般说来,若地址总线为n位,则可寻址空间为2^n字节。

CB 传送控制信号和时序信号。有的是微处理器送往存储器和I/O接口电路,也有是其它部件反馈给CPU的,控制总线的传送方向由具体控制信号而定,(信息)一般是双向的,控制总线的位数要根据系统的实际控制需要而定。实际上控制总线的具体情况主要取决于CPU。

前端总线(FSB)是将CPU连接到北桥芯片的总线,前端总线(FSB)频率(即总线频率)是直接影响CPU与内存直接数据交换速度。

缓存

cpu 4GHZ 内存 1600/1800MHZ,(单位换算:1GHZ=1000MHZ)内存大约1.56GHZ,CPU的速度远远超过内存的速度,由短板理论终的速度为内存的速度。

缓存以CPU频率工作,价格高,所以很小。

主要意义:

时间局部性  当某个数据被访问过一次之后,过不了多久时间就会被再一次访问。缓存对此数据缓存

空间局部性 CPU在某一时刻需要某个数据,那么很可能下一步就需要其附近的数据;缓存将对附近的资源缓存

硬盘

    固态硬盘

在不同的分区的读取速度一致

机械硬盘

盘片(disk):硬盘中承载数据存储的介质。两面读写

磁头(head):通过磁性原理读取磁性介质上数据的部件。

磁道(tracle):当磁盘旋转时,磁头若保持在一个位置上,则每个磁头都会在磁盘表面划出一个圆形轨迹,这些圆形轨迹就叫做磁道。

扇区(sector):磁盘上的每个磁道被等分为若干个弧段,这些弧段便是磁盘的扇区。硬盘的读写以扇区为基本单位

分区:由外向内按柱面划分,外道长:固定角速度,单位时间内划动的距离越长

C在外道,单位时间内,读取的数据越多

D在较内道,单位时间内,读取的数据越少

虚拟机的原理

虚拟机的框架:

vmware程序:虚拟出多个虚拟的计算机(CPU+内存+硬盘)

虚拟CPU

切割CPU时间片

cpu将时间片切割,使各个程序从表面上看是同时进行的。在微观上:每几个毫秒思考一件事,时间用完如果进程仍在执行,就记录进程的状态,连续运行后面的进程。

内存:有限内存切割后,分配给不同程序使用

线性地址空间:假设每个程序有4G内存可用,实际只有自己占据的大小

进程地址空间: 将内存上不连续的内存页在逻辑上映射为一段连续的空间

I/O设备:模拟器实现:动态分配大小


操作系统的基础

CPU: 晶体管 10-20nm 45nm工艺 门电路 逻辑运算/算术、逻辑运算,芯片、多个针脚,每个针脚有不同的功能、完成不同的运算。调用针脚即可完成运算,调用CPU针脚完成运算:机器语言

CPU针脚的功能即为CPU的指令,CPU多个指令叫指令集

指令的分类:普通指令、特权指令

普通指令:普通用户仅能在环3上运行,如果要用到环0的指令,就需要向内核申请,即为发起系统调用

特权指令:仅管理员可运行的指令,用于管理功能。

CPU常见平台

IBM(power)

SUN (ultrasparc)--> Oracle

惠普 (alpha)(安腾)dec-康白-惠普

Intel (x86,X86_64) 向下兼容

AMD (amd64)

ARM Intel只设计,不生产。三星,高通生产

Andorid (linux)

IOS (UNIX)

摩托摩拉 (手持 m68k,服务器 m68k nommu)

苹果,IBM,摩托摩拉 (powerpc,早期的强悍的CPU)

天河二号:大堆CPU拼凑而成

面向硬件写程序所用的语言

机器语言过于底层。每个芯片生产完成时,附带一套略微高级的接口(微码编程接口,汇编语言),比较底层,写大型程序困难。高级语言(c,c++)

低级和高级语言所写的程序的区别

低级语言:汇编语言,计算机容易理解的语言,运行起来的性能更好

高级语言:c,java,python,...,计算机不易理解的语言,运行起来性能差

由于是面向硬件写程序,考虑CPU平台,内存分配,...诸多问题。研发出操作系统

目的: 消除底层差异,程序员面向硬件写程序不用考虑各种硬件相关的问题

功能: 抽象计算机的计算能力为统一的接口,将底层硬件功能封装为系统调用(syscall),协调进程占用内存资源与CPU时间的分配。

作用:

硬件驱动:硬件工作起来

进程管理:CPU时间片切割和CPU的计算能力分配给不同的程序

内存管理:将有限的内存资源分配给多个同时运行的程序

网络管理:与其他主机通过网络通信

安全管理

写程序面向的对象和语言

硬件规格: 机器语言、汇编语言、高级语言,考虑CPU平台,内存分配,...诸多问题

系统调用:  高级语言,system call 将底层硬件规格抽象为syscall,保证syscall少,库也比较底层

库调用:   高级语言,面向 syscall 封装的库 ,将底层库抽象出的库(c)

用形象化的思维:

面向硬件:给你的是"麦种",要想吃馒头,经过的步骤: 翻地、播种、浇水、施肥、收割、磨面、做包子、蒸馒头。

面向系统调用:给你的是面粉,

面向库调用: 给你你的是馒头,

越高层,写程序越容易,选择更多样。

越低层,写程序越难,选择更少。

注意:写出的程序为源码程序

程序运行前的步骤

源码程序--> 编译 --> 汇编 --> 二进制指令(能调用对应CPU平台的针脚,不同系统有不同的格式)

二进制指令如何运行

由操作系统分配资源,让程序占据CPU时间片和内存资源

指令:被操作系统调度至CPU上,二进制指令能调用CPU上的某个指令(针脚),完成某些功能

用户接口

跟操作系统交互的程序,称之为"用户接口":指挥其他程序的运行

windows: 桌面

Linux: UI

GUI:Graphic User Interface,程序:Gnome,XFCE,KDE

CLI: Command Line Interface,程序: sh,csh,ksh,zsh,bash

在不同的系统之上写的程序(源码)

ABI Application Binary Interface:  源码制作成二进制的格式(可执行文件的格式),运行接口,应用二进制格式。终端用户面向的接口。

API Application Program Interface:  写程序面向的对象,应用编程接口,程序员面对的接口

ABI不能兼容:

不同操作系统上的程序,制作成二进制后,不能兼容,(转换为对应平台调用CPU针脚的指令,不同CPU厂商生产的CPU针脚不同,所以程序调用的针脚不同)

API不能兼容:

写程序面向的对象不同,不同操作系统提供的systemcall,libcall接口不同。一个系统上写的程序,不能在另一个系统之上编译~~~

API兼容:

写程序面向的对象不同,但是提供的Systemcall,libcall接口能够兼容(底层针脚不同,但是经过操作系统抽象硬件功能为兼容的接口,所写的程序在源码级别兼容,这就是遵循‘POSIX‘规范。一个系统上写的程序,能在另一个系统之上编译~~~,编译后只能在对应平台运行,不能跨平台运行,ABI不同。


操作系统的定义:

广义:windows系统,我们所指的是用户接口(windows桌面、Linux bash)和内核

狭义:内核

谢烟客-----Linux入门

时间: 2024-08-11 05:44:31

     谢烟客-----Linux入门的相关文章

linux入门基础知识及简单命令介绍

linux入门基础知识介绍 1.计算机硬件组成介绍 计算机主要由cpu(运算器.控制器),内存,I/O,外部存储等构成. cpu主要是用来对二进制数据进行运算操作,它从内存中取出数据,然后进行相应的运算操作.不能从硬盘中直接取数据. 内存从外部存储中取出数据供cpu运存.内存的最小单位是字节(byte) 备注:由于32的cpu逻辑寻址能力最大为32内存单元.因此32位cpu可以访问的最大内存空间为:4GB,算法如下: 2^32=2^10*2^10*2^10*2^2 =1024*1024*1024

Linux入门之VIM快捷使用

Linux入门之VIM快捷使用 简介: 文本编辑器,字处理器,类似nano 字符全屏编辑器,而sed 为行编辑器 来源: vi : Visual Interface vim: VI iMprpbed    (vi的增强版) 全屏编辑器,模式编辑器 vim模式: 1.编辑模式(命令模式) 2.输入模式 3.末行模式 模式转换: 1.编辑-->输出: i:在当前关标所在字符的前面,转为输入模式 a: 在当前关标所在字符的后面,转为输入模式 o: 在当前关标所在字符的下方,新建一行,并转为输入模式 I

linux入门基础——linux软件管理RPM

因为linux入门基础是基于CentOS讲解的,讲的是CentOS上的软件包管理.ubuntu的软件包管理有这些:ubuntu软件包管理,包管理指南,ubuntu软件包管理. linux软件管理:RPM软件包管理 源代码形式 绝大多数开源软件都是直接以源代码形式发布 源代码一般会被打包成tar.gz的归档压缩文件 程序源代码需要手动编译成二进制形式之后才能够运行使用 源代码基本编译流程: 1 ./configure   检查编译环境.相关库文件以及配置参数并生成makefile 2 make  

Linux入门基础命令(四)

Linux入门基础命令(四)文件系统与目录结构: 1.文件和被组织成一个单根倒置树结构2.文件系统从根目录下开始,用"/表示"3.以.开头的文件为隐藏文件4.路径分割的 /5.文件有两类数据(元数据:metadata 数据:data)6.文件系统分层结构:LSB(Linux Standard Base)FHS:(Filesystem Hierarchy Standard)7.文件名最长255个字节8.包括路径在内文件名称最长4095个字节9.蓝色-->目录 绿色-->可执行

Linux入门基础命令—cp

Linux入门基础命令-cpcp格式有以下几种 A1.如果SOURCE是一个文件,目标文件不存在:当将SOURCE复制到另外一个当前目录下不存在的文件(会新建这个文件)比如下面的这个例子是把issue复制到abc文件中,而本来当前目录app是不存在abc这个文件的,当进行复制的时候会自动生成abc这个文件,当然这两个文件只是名字不同大小是一样的: A2.如果将上述的命令再执行一遍,本来abc这个文件是已经有内容了,若再去执行,那么issue中的内容将会覆盖掉原来abc中的内容(下面红色箭头所指的

Linux入门之CentOS7内核编译三部曲(1)

Linux入门之CentOS7内核编译三部曲(1) 我们知道,一个Linux系统的主要组成是由liunx内核核心和一些支持模块组合而成的.但是在某些场合中,需要某项功能,而当前内核的核心或者模块不支持此功能,那么就需要对内核进行一个升级或者重新编译内核添加相应的功能,以此提供了对此功能的支持. 编译前的准备 认识kernel 所为kernel,就是一种操作系统的核心,当然也是一个文件,而这种核心提供了对一些硬件的支持,一般来说其中包含了一些对常见硬件核心驱动的核心代码.启动系统时会通过加载MBR

Linux入门之CentOS7内核编译三部曲(2)

Linux入门之CentOS7内核编译三部曲(2) 在linux系统中,编译完了内核,得到了所需的功能,并不能表示就已经能完美完成我们的所需.因为内核只是做一个核心的硬件及核心代码的支持,而注意的模块支持任然是对应版本的内核模块文件.这些文件决定着平时能否使用哪些功能.这次不会介绍如果添加给上次编译的新内核模块功能,主要介绍模块的功能和作用以及其加载和卸载. 查看当前系统以及加载的内核模块命令:lsmod  modinfo lsmod 命令 lsmod - program to show the

Linux 入门学习之rpm软件包管理

Linux入门之软件包管理 在linux有很多类的软件包管理机制,但是在redhat.centos这类版本的系统中,都会使用一种相同的机制,就是rpm软件包管理机制,当然,还有其它版本的linux使用的不同机制: debian:使.deb文件,dpkg包管理器 redhat:使用.rpm文件,rpm包管理器 软件包在使用中又分类两种(源码包和二进制包): 源码包:一般是提供了一些源码模块和编译脚步组合起来的压缩文件,命令格式如: name-version.tar.{gz|bz2|xz} 等,这里

linux 入门教程

linux入门教程 搜索 Linux入门教程 前言 第一章 关于Linux的历史 第二章 图形界面还是命令窗口 第三章 Linux操作系统的安装 第四章 初步进入linux世界 第五章 Linux系统的远程登录 第六章 Linux文件与目录管理 第七章 Linux系统用户以及用户组管理 第八章 Linux磁盘管理 第九章 文本编辑工具vim 第十章 文档的压缩与打包 第十一章 安装RPM包或者安装源码包 第十二章 学习shell脚本之前的基础知识 第十三章 正则表达式 第十四章 SHELL 脚本