计算机及Linux基础介绍

Linux及计算机基础介绍

计算机的组成及其功能

What:计算机的组成是什么?

  • 计算机的主要部件:

    • CPU:可分为运算器、控制器、寄存器、缓存等

    • 存储器:比如内存。执行程序时,会将程序及相关数据加载进内存,供CPU读取

    • 输入设备:比如:键盘。用于下达指令及输入数据。

    • 输出设备:比如显示器。用户显示和输出指令执行的结果等

  • 冯诺依曼体系中提出的五大部件为:运算器、控制器、存储器、输入、输出


How:计算机如何工作的?

    1. 硬盘等存储介质用于存放程序及数据。

    • 程序 = 指令 + 数据

    2. 用户通过输入设备,下达执行某个程序

    3. 计算机会先将该程序及相关数据加载到内存中。

    • 因为CPU只能直接访问内存

    • 内存在内部是划分存储单元,每个单元为8bit

    • 内存中每个单元都有编址。

    4. CPU先读取该指令,当需要用到数据时,再从内存中载入响应数据

    • CPU要能执行某指令,首先它得要支持。而CPU所能支持的指令集合称之为指令集。不同的CPU,指令集也不同。

    • 指令集中指令又可分为两类:普通指令、特权指令

    • CPU有位长之分。目前有32位和64位CPU

    • 不同的位长,代表CPU同一时间可以访问内存单元的数量的多少

    5. 如果第一个指令运行完后,结果还需和其他数据再进行运算,那么CPU会先将该结果放入寄存器中,待用时再取出。

    6. 最后将结果输出到输出设备

        a8773912b31bb051973f1da5367adab44aede020.jpg   


Why:为什么有了内存,还需要有CPU缓存?

        由于内存的频率远低于CPU频率。因此通过CPU缓存来解决速度不同的问题。减少等待时间,提高CPU效率。

        缓存为王~!


What:那么什么是操作系统?

         blob.png

        操作系统是由内核和众多应用程序组合而成的。

        而内核位于硬件之上,应用程序之下。它驱动了硬件,并向上提供了系统调用,使得程序员能方便的调用系统资源。

        

        内核(kernel)的作用:

            1、驱动底层硬件 

            2、将各底层硬件资源抽象成简单的资源 

            3、管理各程序的运行,把有限资源分配给各程序

        1. 对于CPU,通过时隙复用

        2. 对于内存,通过空间复用    

            它的存在,使得所有程序在任意时候都认为自己是独占着系统资源。对于程序而言,所要面对的也只有操作系统而已

Linux发行版本

1、Linux的发行版

    Linux内核以及在其上运行的软件都是基于开源协定,以源码的方式共享出来,任何人都可以随意拿来编译安装。也因此增加了使用难度。

    为了方便安装,很多组织和公司便提供了在不同平台上已编译好的Linux系统。我们称之为发行版。发行版依旧须遵循开源协定,对外免费共享出来。

    

2、常见的Linux发行版:     

  主流的有三种Debian,Slackware,Red Hat

Debian

Debian,或者称Debian系列,包括Debian和Ubuntu等。Debian是社区类Linux的典范,是迄今为止最遵循GNU规范的Linux系统。Debian最早由Ian Murdock于1993年创建,分为三个版本分支(branch): stable, testing和unstable。Debian最具特色的是apt-get /dpkg包管理方式,其实Redhat的YUM也是在模仿Debian的APT方式,但在二进制文件发行方式中,APT应该是最好的了。Debian的资料也很丰富,有很多支持的社区,有问题求教也有地方可去。

    • Ubuntu是基于Debian的unstable版本加强而来,可以这么说Ubuntu就是一个拥有Debian所有的优点,以及自己所加强的优点的近乎完美的Linux桌面系统。根据选择的桌面系统不同,有多个版本可供选择,比如基于unity的Ubuntu,基于Gnome的Ubuntu Gnome,基于KDE的Kubuntu,基于LXDE的Lubuntu以及基于Xfce的Xubuntu等。特点是界面非常友好,容易上手,对硬件的支持非常全面,是最适合做桌面系统的Linux发行版本。

Red Hat

Redhat,应该称为Redhat系列,Redhat linux是全球在服务器上应用最广泛的linux操作系统,在效率、扩展性、可靠性、安全性、集成虚拟化等都具备领先其他linux的特点,被誉为最值得信赖的数据中心平台系统,其主要应用在服务器领域。Redhat系列的包管理方式采用的是基于RPM包的YUM包管理方式,包分发方式是编译好的二进制文件。

    • RHEL(Redhat Enterprise Linux),Redhat为期提供完善的售后服务,并以服务提供收费。

    • CentOS(Community ENTerprise Operating System),它是来自Red Hat Enterprise Linux依照开放源代码规进行重新编译而成的,并且仅仅是将logo标识替换掉。所以也可以说CentOS是redhat服务器的免费版。新版的CentOS大约每两年发布一次,每个版本大概每6个月更新一次,CentOS也提供技术支持,但仅限于社区的官方邮件、论坛和聊天室,并且CentOS不负任何商业责任。

    • Fedora由原来的Redhat桌面版本发展而来,免费版本,Redhat会将最新的技术或程序用在这个发行版中,以作测试之用。

Slackware

Slackware 由Patrick Volkerding创建于1992年。算起来应当是历史最悠久的Linux发行版。曾经Slackware非常的流行,但是当Linux越来越普及,用户的技术层面越来越广(更多的新手)后,Slackware渐渐的被新来的人们所遗忘。尽管如此,Slackware仍然深入人心(大部分都是比较有经验的 Linux老手)。Slackware稳定、安全,所以仍然有大批的忠实用户。由于Slackware尽量采用原版的软件包而不进行任何修改,所以制造新 bug的几率便低了很多。Slackware的版本更新周期较长(大约1年),但是新版本的软件仍然不间断的提供给用户下载。

    • SUSE Linux原是以Slackware Linux为基础,并提供完整德文使用界面的产品。SUSE 有两个linux版本,一个是open SUSE,另一个是Enterprise linux,Enterprise linux是为企业而设计的,要长期使用,需要收一定的费用的。而前一个是完全按照开源社区的要求,是免费的和放开源代码的。ZypperYast 是 SUSE Linux 平台上的软件包管理工具,他们的底层使用了 RPM


Linux的哲学思想

1、一切皆文件:

    在Linux中最核心的思想便是一切皆文件,从普通文件到设备,在Linux上都是以文件形式放置。Linux的文件类型有:普通文件、目录文件、块设备文件、字符文件、符号链接文件、命名管道和套接字文件。就连内核和进程的运行状态也以文件的方式存放着。


2、由众多功能单一的程序组成,一个程序只做一件事,切做好。

    在Linux上每一个指令便是一个小程序,而每一个指令只负责一件事,通过不同的命令选项,完善了指令的功能。


3、组合单一的小程序完成复杂任务。

    体现在了Linux的小巧精简。Linux上的没有像Windows那样,每个软件大道几百M。甚至几十G。他们通过组合小程序实现复杂功能,复用了相同功能的程序,减小软件的大小,提高了软件开发的效率。


4、尽量避免与用户交互。

    这也是为了,能方便shell脚本的开发。减少交互,就能方便的将单一小程序组合起来使用。


5、使用文本文件保存配置信息

    这点说道根本也是一切皆文件的体现,一个文本编辑器便能完成所有软件的配置,不需要额外的应用程序。


Linux上的命令

命令提示符:prompt(bash)

    #:管理员账户,为root;拥有最高权限,能执行所有操作

    $:普通用户,非root用户;不具有管理权限,不能执行系统管理类操作

命令的语法通用格式:

    # COMMAND OPTIONS ARGUMENTS

       

    COMMAND:发起一命令:请求内核将某个二进制程序运行为一个进程;

    • 命令本身是一个可执行的程序文件:二进制格式的文件,有可能会调用共享库文件;

    • 命令必须遵循特定格式规范:ELF(Linux),exe(Windows), msi(Windows)

          • 可以使用file命令查看:

            blob.png

    •  命令分为两类:

          • 內建命令: 由shell程序的自带的命令

          • 外部命令:独立的可执行程序文件,文件名即命令名

          • 可使用type命令查看:

            blob.png

                          

    OPTION:指定命令的运行特性;         

   选项有两种表现形式:

                短选项:-C, 例如-l, -d

                    注意:有些命令的选项没有-;

                    如果同一命令同时使用多个短选项,多数可合并:-l -d = -ld

                长选项:–word, 例如–help, –human-readable

                    注意:长选项不能合并;

                注意:有些选项可以带参数,此称为选项参数;   

 

    ARGUMENTS:命令的作用对象;命令对什么生效;            

          不同的命令的参数;有些命令可同时带多个参数,多个之间以空白字符分隔;


常用命令:ifconfig、echo、tty、startx、export、pwd、history、shutdown、poweroff、reboot、hwclock、date


ifconfig】:configure a network interface 配置网络接口

    snip_20160918104537.png


echo】:  display a line of text   

    echo [SHORT-OPTION]… [STRING]…

    • -n:不进行换行

    • -e:让转义符生效

      1、\n:换行

      2、\t:制表符

            blob.png

    • 在shell中string可以使用引号,单引号和双引号均可用

      1、单引号:强引用,变量引用不执行替换

      2、双引号:弱引用,变量引用会被替换

            blob.png

    • 注意:变量引用的正规符号:${name},只不过一般花括号可以省略

tty】: print the file name of the terminal connected to standard input

            终端:

                    串行终端

                            /dev/ttyS#

                    物理终端

                            /dev/console

                    虚拟终端:图形终端

                            /dev/tty#

                    伪终端:远程连接,图形环境打开的命令接口

                           /dev/pts/#

            blob.png


startx】:打开图形界面

    启动图形界面:startx &    (不加&,只有等指令运行结束后才能返回命令听提示符)

export】:为 shell 变量设定导出属性。

    blob.png

    设置语言为英文:

    blob.png

pwd】:print name of current/working directory

    blob.png   

    实例:blob.png

history】:显示或操纵历史列表。

    blob.png

     

            -c:清空命令历史列表

            -d offset:删除指定的历史命令

            -r:从文件读取命令历史到历史列表中

            -w:把历史列表中的命令追加到历史文件中

            history #:显示最近的#条命令

    blob.pngblob.png

shutdown】:Halt, power-off or reboot the machine

            shutdown [OPTIONS…] [TIME] [WALL…]

            blob.png


reboot,【halt】,【poweroff】:一般情况下是调用shutdown进行关机处理等处理            


hwclock】:query or set the hardware clock

            hwclock [function] [option…]

            显示硬件时钟:

            blob.png

            hwclock -s :系统时间以硬件时间为准,–hctosys

            hwclock -w :  硬件时间以系统时间为准,–systohc

            blob.png

date】:print or set the system date and time

            date [OPTION]… [+FORMAT]

            date [-u|–utc|–universal] [MMDDhhmm[[CC]YY][.ss]]

            blob.png

            date +%m  获取月份:计算机及Linux基础介绍

    blob.png

            设置系统时间:            

            格式:date MMDDhhmm[CC]YY.ss

                                 月  日  时  分    年    秒

    blob.png


Linux上获取命令帮助

      1、内建命令:

             #help 命令

                    如:help cd

       2、外部命令

                   1、# 命令 –help

                       如:dirname –help

                    2、使用手册:manual

                            位置:/usr/share/man


        man介绍

       #man  命令名  (先解压后显示)

              SECTION:

                         NAME:功能性说明

                         SYNOPSIS:语法格式

                         DESCRIPTION:描述

                         OPTIONS :选项

                         EXAMPLES:使用示例

                         AUTHOR:作者

                         BUGS:报告程序bug的方式

                         SEE ALSO:参考

                         ……

      使用帮助中命令格式中的字符意义:

      []:可选的部分

      {a|b}:分组,a和b作为一个使用单元来使用

      |:或者,只能选其一

      <>:必不可少的部分

      …:同类内容可以出现多个

      man的简要使用机制:

             翻屏:

                      空格键:向文件尾部翻一屏

                      b:向文件首部翻一屏

                      回车键:向文件尾部翻一行

                      k:向文件首部翻一行

                      ctrl+d:向文件尾部翻半屏

                      ctrl+u:向文件首部翻半屏

                      1G:跳转至第一行

                      #G:跳转至指定行(#为行号)

                      G:跳转至最后一行

              文本搜索:(不区分关键字大小写)

                      /keyword:向文件尾部搜索                               

                      ?keyword:向文件首部搜索                               

                               n:顺着查找方向下一个

                               N:逆着查找方向下一个

                              q:退出

  补充:man其实能为命令(普通命令、管理命令)、程序的配置文件格式、系统调用、库调用、游戏及其他不便归类的文件提供帮助手册

    /usr/share/man

                      man1,man2,……

    man命令的分段机制:

    1:用户命令:

    2:系统调用

    3:C库调用

    4:设备文件及特殊文件

    5:文件格式(配置文件格式)

    6:游戏使用帮助

    7:杂项

    8:管理命令及守护进程

blob.png

blob.png

并非每个命令在所有章节下都有手册,

查看某关键字在那些段落有使用帮助

   whatis Keyword 精确查找

   提示:如果whatis的数据库尚未生成,可以使用makewhatis手动进行             

             旧版的 Linux 这个指令是使用 makewhatis!CentOS7使用 mandb 了!

blob.png

计算机及Linux基础介绍

   man -k Keyword 模糊查找

计算机及Linux基础介绍blob.png

man -M /path/to/somedir:到指定目录下查找命令手册并打开

man的文件在:/usr/share/man

计算机及Linux基础介绍blob.png

3、很多应用程序自带有帮助文档:/usr/share/doc/

计算机及Linux基础介绍blob.png

README:程序的相关信息

INSTALL:安装帮助

CHANGES:版本迭代时的改动信息

4、info 命令:获取在线文档

5、主流发行版官方文档

     http://www.redhat.com/doc

6、程序官方的文档

      官方站点上的“Document”

7、google:

       linux filetype:ppt 特定格式文件

       keyword site:magedu.com  在特定网页内搜素

Linux基础目录名称及功能规定

/bin:所有用户可用的基本命令程序文件

/sbin:供系统管理使用的工具程序文件

————————————————————————————

            存放为了保证操作系统正常运行而提供的可执行程序

            /usr/bin

            /usr/sbin

————————————————————————————

            用来存放第三方软件的程序

            /usr/local/bin

            /usr/local/sbin

/boot:引导加载器必须用到的各静态文件:kernel、initramfs(initrd)、bootloader(grub)

/dev:存储特殊文件或设备文件

            设备有两种类型:字符设备(线性设备,有时序)、块设备(随机设备,可以任意访问)                    

/etc:系统程序的配置文件 ,只能为静态

        /etc/sysconfig:系统级别的配置文件

        /etc/init.d:系统服务脚本

/home:普通用户,默认在/home下有一个与其名称同名目录,作为用户的家目录

/root:管理员的家目录

/lib:为系统启动或根文件系统上的应用程序(/bin,/sbin等)提供共享库,以及为内核提供内核模块

        libc.so.*:动态链接的C库

        ld*:运行时链接器/加载器

        modules:用于存储内核模块的目录

/lib64:64位系统特有的存放64位共享库的路径

/media:专用的挂载位置,通常用来挂载便携式设备。(cdrom,floopy等)

/mnt:专用挂载位置,挂载额外的存储设备。

/misc:备用目录

/opt:早期附加应用程序的安装位置:

/proc:基于内存虚拟文件系统(关机后就没了),用于为内核及进程存储运行时的相关信息,他们多为内核参数,例如:net.ipv4.ip_forward(参数的值就是这个文件的内容),虚拟为net/ipv4/ip_forward,存储于/proc/sys/net/ipv4/ip_forward

/sys:sysfs虚拟文件系统提了一种比proc更为理想的访问内核数据的途径,主要作用在于为管理Linux设备提供一种统一的模型接口(伪文件系统,系统级别的,用于配置外围设备特性的参数。)

详见:www.ibm.com/developerworks/cn/linux/l-cn-sysfs

/srv:当前主机为服务提供的数据

/tmp:存取临时文件的目录,可供所有用户使用,有特殊权限,默认存放30天

/usr:usr Hierarchy, shared 所有遵循协议的系统都可以使用,readonly 只读

          bin,sbin

          lib,lib64

          /usr/include:C程序头文件

          share:命令手册页和命令自带文档等架构特有的文件的存储位置

          local:又一个层级目录                    

          X11R6:XWindow程序的安装位置

          src:程序源码文件的存储位置

/usr/local:Local hierarchy,让系统管理员安装本地应用程序(为了与系统原有程序不冲突,而装在一个新的目录下),也通常用与安装第三方程序

          在这个路径下也同样拥有类似/usr下的目录

          bin、sbin、etc、include、man、share、src等

/var:存储常发生变化的数据目录




















原创文章,作者:lucklyme,如若转载,请注明出处:http://www.178linux.com/47364

评论列表(1条)

  • 马哥教育
    马哥教育 2016-09-20 10:32

    黑屏是不是很丑,可以研究一下makedown格式