Linux 基础一之计算机原理、内核原理、发展历程

        很多同学疑惑学习LINUX为什么要学习计算机原理,这是因为操作系统跟硬件有相当程度的关联性。所以,如果不了解一下计算机的概念,要很快的了解Linux的概念是有点难度的。所以在学习Linux之前了解一下计算机原理和Linux内核方面的相关知识是很有必要的。

        由于以下为知识点的梳理。仅仅列出了单方面的一些概念。并没有连贯的知识点。所以推荐以下链接供大家参考:

        马哥51cto的视频:http://edu.51cto.com/roadmap/view/id-2.html

        鸟哥的linux私房菜:http://vbird.dic.ksu.edu.tw/

                

计算机五大部件:

1. 控制器(Control):是整个计算机的中枢神经,其功能是对程序规定的控制信息进行解释,根据其要求进行控制,调度程序、数据、地址,协调计算机各部分工作及内存与外设的访问等。
2. 运算器(Datapath):运算器的功能是对数据进行各种算术运算和逻辑运算,即对数据进行加工处理。
3. 存储器(Memory):存储器的功能是存储程序、数据和各种信号、命z令等信息,并在需要时提供这些信息。
4. 输入(Input system):输入设备是计算机的重要组成部分,输入设备与输出设备合你为外部设备,简称外设,输入设备的作用是将程序、原始数据、文字、字符、控制命令或现场采集的数据等信息输入到计算机。常见的输入设备有键盘、鼠标器、光电输入机、磁带机、磁盘机、光盘机等。
5. 输出(Output system):输出设备与输入设备同样是计算机的重要组成部分,它把外算机的中间结果或最后结果、机内的各种数据符号及文字或各种控制信号等信息输出出来。微机常用的输出设备有显示终端CRT、打印机、激光印字机、绘图仪及磁带、光盘机等。

wKioL1XV0XTDSK9MAAI2asGHI0M413.jpg

                                        计算机五大部件的通信


计算机系统里的总线(bus):

        总线(Bus)是计算机各种功能部件之间传送信息的公共通信干线,它是由导线组成的传输线束, 按照计算机所传输的信息种类,计算机的总线可以划分为数据总线地址总线控制总线,分别用来传输数据数据地址控制信号。总线是一种内部结构,它是cpu、内存、输入、输出设备传递信息的公用通道,主机的各个部件通过总线相连接,外部设备通过相应的接口电路再与总线相连接,从而形成了计算机硬件系统。

wKiom1XVz3uxl_OLAADK5Pd_H60790.jpg


CPU指令集的作用:

        指令集是存储在CPU内部,对CPU运算进行指导和优化的硬程序。拥有这些指令集,CPU就可以更高效地运行。Intel有x86x86-64,MMX,SSE,SSE2SSE3,SSSE3 (Super SSE3),SSE4.1SSE4.2和针对64位桌面处理器的EM-64T。AMD主要是3D-Now!指令集。对电脑下达的每一个命令都需要CPU根据预先设定好的某一条指令来完成。  这些预先设定好的指令是预存在CPU中的。CPU依靠外来指令“激活”自己内存的指令,来计算和操控电脑。 每款CPU在设计时就规定了一系列与电脑其它部件相配合的指令系统。  预先存储的指令越多,CPU越“聪明”。可以做的“动作”越多。预先存储的指令越先进,CPU就越高级。多个指令集中在一起,通常叫指令集,这就是指令集的作用


CPU的指令级别(RING0,RING1,RING2,RING3):

        这得从CPU指令系统(用于控制CPU完成各种功能的命令)的特权级别说起。在CPU的所有指令中,有一些指令是非常危险的,如果错用,将导致整个系统崩溃。比如:清内存、设置时钟等。如果所有的程序都能使用这些指令,那么你的系统一天死机n回就不足为奇了。所以,CPU将指令分为特权指令非特权指令(用户指令),对于那些危险的指令,只允许操作系统及其相关模块使用,普通的应用程序只能使用那些不会造成灾难的指令。形象地说,特权指令就是那些儿童不宜的东东,而非特权指令则是老少皆宜。

        CPU将特权级别分为4个级别:RING0,RING1,RING2,RING3。只使用其中的两个级别RING0和RING3,RING0只给操作系统用,RING3谁都能用。如果普通应用程序企图执行RING0指令,只能提交操作系统来完成执行。


计算机语言(机器语言,汇编语言和高级语言):

        计算机语言通常是一个能完整、准确和规则地表达人们的意图,并用以指挥或控制计算机工作的“符号系统”。

高级语言(是一种人工设计的语言,它对具体的算法进行描述,所以又称为算法语言。高级语言独立于计算机的硬件,即与具体的硬件无关)

    |  (编译)

汇编语言(用有助于记忆的符号和地址符号来表示指令,便是汇编语言,也称为符号语言。一般称汇编语言为低级语言)

    |   (汇编)

机器语言(机器语言是最初级且依赖于硬件的计算机语言。机器语言可直接在计算机上执行(即为二进制形式),运算速度快。)

编程语言:

        汇编语言:微码编程

                系统中某些与硬件相关的特有代码、驱动程序开发

        高级语言C,C++:

                系统级应用、驱动程序

        高级应用java,python,php:

                应用程序




操作系统(内核管理):

os:operator system(操作系统,由c和汇编语言开发的软件程序)

    通用目的:将底层的各种硬件资源抽象为一种统一接口

            硬件驱动

            进程管理

            内存管理

            网络管理

            安全管理 

wKiom1XZhznR3Dz1AAAmWr33bBk510.gif

         操作系统的角色


编程层次:

        1、硬件规格:hardware specifiacation

        2、系统调用:System Call

        3、库调用:library call


wKiom1XV3B6wJSuXAAEdaXBgW1U360.jpg

                    库调用,系统调用,内核和硬件的关联


用户与主机交互,必然用到的设备(终端)

       物理终端:直接接入本机的显示器和键盘设备;/dev/console

        虚拟终端:附加在物理终端之上的以软件方式虚拟实现的终端,CentOS 6默认启动6个虚拟终端。可以通过以下方式切换虚拟终端:Ctrl+Alt+F#: [1,6]

 图形终端:附加在物理终端之上的以软件方式虚拟实现的终端,但额外会提供桌面环境;

        设备文件路径:/dev/tty#

 模拟终端:图形界面下打开的命令行接口,基于ssh协议或telnet协议等远程打开的界面

        设备文件:/dev/pts/#    [0,oo)


查看当前的终端设备:

#tty

交互式接口:启动终端后,在终端设备附加一个交互式应用程序


UI(用户界面):

        GUI:Graphic User Interface(图形用户界面)

                X protocol, window manager, desktop

                Desktop:

                        GNOME (C, gtk)

                        KDE   (C++, qt)

                        XFCE  (轻量级桌面)

                        CLI:Command Line Interface(命令行界面)

        shell程序:

                        sh (bourn)

                    csh 

                    tcsh

                    ksh (korn)

                    bash (bourn again shell), GPL

                    zsh 

        查看当前系统支持的shell:

#vim /etc/shells
#echo $SHELL


ABI:Application Binary Interface

API:Application Programming Interface

linux写的程序,原代码可以在windows上运行(API相同),编译成二进制代码则不行(ABI不行)


程序运行模式:

        用户空间:user space ,us

        内核模式:system space

在多任务环境中,有许多进程都不允许应用程序去做。所以CPU以两种模式运行,即用户模式和内核模式。

①内核模式   
        当CPU运行于内核模式时,一切程序都可运行。任务可以执行特权级指令,对任何I/O设备有全部的访问权,还能够访问任何虚地址和控制虚拟内存硬件。这种模式对应80×86的ring0层,操作系统的核心部分,包括设备驱动程序都运行在该模式。   

②用户模式   
        这个模式中,硬件防止特权指令的执行,并对内存和I/O空间的访问操作进行检查。这就允许WindowsNT4.0限制任务对各种I/O操作的访问,并捕捉违反系统完整性的任何行为。在用户模式中,运行的代码如果不通过操作系统中的某种门机制,就不能进入内核模式。在80×86处理器上,这个模式对应于 ring3层,操作系统的用户接口部分以及所有的用户应用程序都运行在该级别

wKiom1XZhdrgc4C5AAENwWwEWM4532.jpg

                      用户模式和内核模式


POS:Portable Operation System

        POSIX (可移植操作系统接口,Portable Operating System Interface)

        API:编程接口

运行程序格式:

        Windows:EXE,dll(dynamic link library)

        Linux :ELF,so(shared object)

        程序:指令+数据

              指令:只读

              数据:读写

        程序:算法+数据结构

库调用,系统调用:允许被调用的程序:malloc(),free()


Linux发展历史:

        Linux的核心是由Linus Torvalds在1991年的时候给他开发出来的, 并且丢到网络上提供大家下载,后来大家觉得这个小东西(Linux Kernel)相当的小而精巧, 所以慢慢的就有相当多的朋友投入这个小东西的研究领域里面去了!

        Linux其实就是一个操作系统最底层的核心及其提供的核心工具。 他是GNU GPL授权模式,所以,任何人均可取得原始码与可执行这个核心程序,并且可以修改。 此外,因为Linux参考POSIX设计规范,于是兼容于Unix操作系统,故亦可称之为Unix Like的一种。

        怪的是,托瓦是因为小时候去动物园被企鹅咬了一口念念不忘, 而正式的2.0推出时,大家要他想一个吉祥物。他在想也想不到什么动物的情况下, 就将这个念念不忘的企鹅当成了Linux的吉祥物了......


Linux:       

        Linus —— Linux

        GNU/Linux

Unix:

        System:(Bell Lab)

                AIX(IBM)

                Solars(SUN)

                HP-UX(HP)

        BSD:(BSRG)Berkeley System Distribution

                NetBSD

                OpenBSD

                FreeBSD


MIT:Richard Stallman

        GNU:GUN is Not Unix

                GPL:General Public License


Linux的发行版:

        为了让使用者能够接触到Linux,于是很多的商业公司或非营利团体, 就将Linux Kernel(含tools)与可运行的软件整合起来,加上自己具有创意的工具程序, 这个工具程序可以让用户以光盘/DVD或者透过网络直接安装/管理Linux系统。 这个『Kernel + Softwares + Tools的可完全安装』的咚咚,我们称之为Linux distribution

       

slackware:

                suse

                        sles

                        opensuse

debian:

                ubuntu

                        mint

redhat:

                rhel:redhat enterprise linux

                          每18个月发行一个新版本

                Centos:兼容rhel的格式

                fedora:每6个月发行一个新版本

        ArchLinux

        Gentoo

        LFS:Linux From scrotch

        Android:kernel + busybox + java虚拟机

wKioL1XZjMKAOKyuAAAdAL2ZSY8382.gif          

                    Linux可完全安装发布套件

底下列出几个主要的Linux distributions发行者网址:(复制:鸟哥linux私房菜)

     

Open Source (开放源码)

软件以Open Source的方式释出时,表示除了可执行的软件本身外,一定伴随着原始码的释出喔!通常Open Source的软件有几个好处:

  1. 程序设计师通常会等到程序成熟之后才会释出,所以通常程序在雏形的时候,就已经具有相当的优良体质;

  2. Open Source的精神,相信当程序原设计人将程序原始码释出之后,其他的程序设计师接受这份原始码之后, 由于需要将程序改成自己所需的样式,所以会经由本身的所学来加以改良,并从中加以改良与除虫, 所以程序的debug功能会比传统的close source来的快!

  3. 由于程序是伴随原始码的,因此,系统将会不易存在鲜为人知的***程序或一些安全漏洞, 相对而言,会比较更加的安全!

Open source的代表授权为GNU的GPL授权及BSD,Apache等等

GNU:GPLv2,GPLv3,LGPL(lesser)

http://baike.baidu.com/view/130692.htm

Apache:apache协定

http://baike.baidu.com/subview/28283/5990593.htm#viewPageContent

BSD:bsd

http://baike.baidu.com/view/209692.htm#3


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章