马哥教育网络班21期+第1周课程练习

(一)计算机的基础认识

      1. 冯诺依曼体系:

         运算器(ALU Arithmetic Logical Unit):完成算数和逻辑运算。

         控制器(CU Control Unit):发出各种控制信息,让计算机各部件协调工作。

         存储器(Memory):记忆程序和数据的部件

         输入设备(Inputdevice):将程序和数据输入的部件。

         输入设备(Outputdevice):将数据和其他信息输出

QQ截图20160704134358.jpg      

上图表明,计算机内部5大部件共有两类信息流动,数据类(原始数据,中间结果,程序指令等);控制类用单线表示,两类都是用二进制0或1组成。数据输入到存储器要经过运算器,输出时有运算器输出到输出设备,前提是有控制器发送控制信号完成的。计算机工作时将存放在存储器上的程序逐条输出到控制器,控制器执行指令发送到控制信号到其他4个部件。                   

   

      2.计算机的总线结构:

QQ截图20160704150051.jpg

      数据总线(DB):CPU与存储器,I/O接口设备之间传送数据信息(各种指令数据信息)的总线,双向传输。

      地址总线(AB):CPU向存储器,I/O接口设备发出的地址信息,寻址能力CPU特有,因此单向传输。

      控制总线(CB):CPU到存储器,I/O接口设备的控制信号,有存储器,I/O设备的应答,请求信号。

      控制信号包括:时序信号,状态信号,命令信号(读写,繁忙,中断)等。

     3.处理器架构(CPU所采用的指令系统)

       CISC的英文全称为“Complex Instruction Set Computer”,即“复杂指令系统计算机”程序的各条指令是按顺序串行执行的,每条指令中的各个操作也是按顺序串行执行的。顺序执行的优点是控制简单,但计算机各部分的利用率不高,执行速度慢。主要有Intel,Amd系列

       RISC的英文全称为“Reduced Instruction Set Computing”,中文即“精简指令集”,它的指令系统相对简单,它只要求硬件执行很有限且最常用的那部分执令,大部分复杂的操作则使用成熟的编译技术,由简单指令合成。目前在中高档服务器中普遍采用这一指令系统的CPU,特别是高档服务器全都采用RISC指令系统的CPU。在中高档服务器中采用RISC指令的CPU主要有Compaq(康柏,即新惠普)公司的Alpha、HP公司的PA-RISC、IBM公司的Power PC、MIPS公司的MIPS和SUN公司的Spare。

(二)操作系统的基础认识

      1. linux操作系统

Linux是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX和UNIX的多用户、多任务、支持多线程和多CPU的操作系统。它能运行主要的UNIX工具软件、应用程序和网络协议。

 QQ截图20160704165202.jpg

       用户进程:运行在linux系统内核(sh csh tcsh ksh bash zsh 等)之上,一个庞大软件集合。

       系统调用:内核的出口,用户程序通过系统调用使用内核提供的功能或者更高级一点C库调用。

       内核子系统:硬件驱动,进程管理,内存管理,网络管理,安全管理等

       硬件:计算机硬件。

程序的运行模式:          

      用户空间:用户空间中的代码指令运行在较低的特权级别ring3上,只能看到允许它们使用的部分系统资源,       并且不能使用某些特定的系统功能,也不能直接访问内核空间和硬件设备,以及其他一些具体的使用限制

      内核空间:Linux系统对自身进行了划分,一部分核心软件独立于普通应用程序,指令运行在较高的特权级别       上CPU ring0,它们驻留在被保护的内存空间上,拥有访问硬件设备的所有权限,Linux将此称为内核空间

运行程序格式ABI:

      Windows: EXE, dll(dynamic link library)

      Linux: ELF, so(shared object)

POSIX规范:Portable Operating System 只是规范了操作系统为应用级程序开发的API,没有规范程序的ABI,因此       Windows和Unix,Linux的应用程序编译成二进制后是不兼容的。

C程序运行过程:

      加深linux源码安装过程的认识

             c process.png

      预处理阶段(cpp):根据义字符#开头的命令,修改原始C程序,例如#include <stdio.h>,就是告诉于处理器读取系统头文件stdio.h,插入到程序文本,形成另一个C程序,通常是以.i结尾的扩展名。

      编译阶段:编译器(ccl)将hello.i文件翻译成.s文件,它包含了一个汇编语言程序,加入了汇编代码。

      汇编阶段:编译器(as)将.s文件翻译成机器语言指令,形成机器可读的二进制数据。

      链接阶段:假如hello程序条用了printf函数,C库,由编译器提供,而printf函数存在一个名为printf.o的单独的预编译目标文件中,这个文件必须以某种方式并入到hello.o程序中,连接器(ld)负责这种并入,结果得到hello文件,他是一个可执行目标文件,加载到存储器上,系统负责执行。

       2. linux操作系统不同发行版的区别和联系

QQ截图20160704222628.jpg

其中Gentoo,Archlinux,LFS可定制性很强,充分发挥硬件性能,但配置比较复杂,有时间单独研究安装使用下再总结了。

     3.linux的哲学思想

      一切皆文件:对所有文件(目录、字符设备、块设备、 套接字、打印机等)操作,读写都可用           fopen()/fclose()/fwrite()/fread()等函数进行处理(VFS)。屏蔽了硬件的区别,所有设备都抽象成文件,提供统一的 口给用户。

      由众多单一目的小程序组成:一个程序只实现一个功能,组合小程序完成复杂任务。

      尽量避免跟用户交互:使用脚本编程,以自动完成某些功能。

      使用纯文本文件保存配置信息:一款使用的文本编程器即能完成系统配置和软件配置工作。

(三)linux操作系统的FHS和基础命令

     1.Filesystem Hierarchy Standard(文件系统目录标准)

/boot:引导文件存放目录,内核文件(vmlinuz)、引导加载器(bootloader, grub)都存放于此目录;

/bin:供所有用户使用的基本命令;不能关联至独立分区,OS启动即会用到的程序;

/sbin:管理类的基本命令;不能关联至独立分区,OS启动即会用到的程序;

/lib:基本共享库文件,以及内核模块文件(/lib/modules);

/lib64:专用于x86_64系统上的辅助共享库文件存放位置;

/etc:配置文件目录(纯文本文件);

/home/USERNAME:普通用户家目录;

/root:管理员的家目录;

/media:便携式移动设备挂载点;

/mnt:临时文件系统挂载点;

/dev:设备文件及特殊文件存储位置;

b: block device,随机访问

c: character device,线性访问

/opt:第三方应用程序的安装位置;

/srv:系统上运行的服务用到的数据;

/tmp:临时文件存储位置;

/usr: universal shared, read-only data;

bin: 保证系统拥有完整功能而提供的应用程序;

sbin:

lib:

lib64:

include: C程序的头文件(header files);

share:结构化独立的数据,例如doc, man等;

local:第三方应用程序的安装位置;

bin, sbin, lib, lib64, etc, share

/var: variable data files

cache: 应用程序缓存数据目录;

lib: 应用程序状态信息数据;

local:专用于为/usr/local下的应用程序存储可变数据;

lock: 锁文件

log: 日志目录及文件;

opt: 专用于为/opt下的应用程序存储可变数据;

run: 运行中的进程相关的数据;通常用于存储进程的pid文件;

spool: 应用程序数据池;

tmp: 保存系统两次重启之间产生的临时数据;

/proc: 用于输出内核与进程信息相关的虚拟文件系统;

/sys:用于输出当前系统上硬件设备相关信息的虚拟文件系统;

/selinux: security enhanced Linux,selinux相关的安全策略等信息的存储位置;

       2.基础命令

格式 : Command 选项 参数

       选项:长选项– 短选项-   参数:要处理的文件,有的命令可以有多个参数

命令帮助:

 man COMMAND

 手册页:/usr/share/man

 man1 … man8

 man1: 用户命令

 man2: 系统调用

 man3: C库调用

 man4: 设备文件及特殊文件   

 man5: 配置文件格式

 man6: 游戏

         man7: 杂项

 man8: 管理类的命令

         注意:有些关键在不止一个章节中存在帮助手册;

     要查看指定章节中的手册:man # COMMAND,1,5,8比较常用。

man命令的操作方法:

         Space, ^V, ^f, ^F: 向文件尾翻屏;

         b, ^B: 向文件首部翻屏;

         d, ^D: 向文件尾部翻半屏;

         u, ^U: 向文件首部翻半屏;

         RETURN, ^N, e, ^E or j or ^J: 向文件尾部翻一行;

         y or ^Y or ^P or k or ^K:向文件首部翻一行;

         q: 退出;

         #:跳转至第#行;

         1G: 回到文件首部

         G:翻至文件尾部

ifconfig命令:已被废弃的命令,建议以后使用ip命令

查看所有网卡

QQ截图20160705131530.jpg

查看网卡详细统计数据

QQ截图20160705131610.jpg

临时给网卡配ip

QQ截图20160705131742.jpg

禁用启用网卡

QQ截图20160705132027.jpg 

echo命令:

-e 允许转义符 -n 不允许自动添加换行符换行

QQ截图20160705133047.jpg

转义符:反斜线 报警 退格键 ESC键 换页符 换行符 回车键 Tab键

QQ截图20160705133144.jpg

pwd 命令:打印出当前工作目录(绝对路径)

QQ截图20160705134444.jpg

export命令:查看和临时更改登录shell的环境变量

QQ截图20160705140127.jpg

shutdown命令:

-r reboot -h halt -H halt -P poweroff -c清除shutdown相关任务 -k 警告,用户不能登录,不关机

QQ截图20160705141114.jpg

date命令:

常用FORMAT

%Y  YYYY格式的年份(Year)

%m  mm格式的月份(),01-12

%d   dd格式的日期(day of month),01-31

%H   HH格式的小时数(),00-23

%M  MM格式的分钟数(),00-59

%S   SS格式的秒数(),00-59

%F   YYYY-mm-dd格式的完整日期(Full date),同%Y-%m-%d

%T   HH-MM-SS格式的时间(Time),同%H:%M:%S

%s   自1970年以来的秒数。C函数time(&t) 或者Java中 System.currentTimeMillis()/1000, new Date().getTime()/1000

%w   星期几,0-6,0表示星期天

%u   星期几,1-7,7表示星期天

注意以上格式是可以任意组合的,还可以包括非格式串,比如 date "+今天是%Y-%d-%m,现在是$H:%M:%S"

格式:date -d STRING

格式:date –date=STRING

格式:date -d STRING +FORMAT

显示用STRING指定的日期时间(display time described by STRING, not ‘now’)

格式:date -s STRING

格式:date –set=STRING,date [MMDDhhmm[[CC]YY][.ss]]:设置来设置系统时间

更多格式 man date 或 date –help

 

hwclock命令:

-r 显示硬件时钟 -s 同步硬件时钟到系统时间 -w 同步系统时间到硬件时间

history命令:~/.bash_history 为命令历史记录文件,不退出不记录,只会记录在缓存中

-a: 追加本次会话新执行的命令历史列表至历史文件中;-d: 删除历史中指定的命令;-c: 清空命令历史

!#: 调用历史中第#条命令;!string:调用历史中最近一个以string开头的命令;!!: 上一条命令

tty命令:查看当前登录终端 物理终端/dev/console 虚拟终端/dev/tty# 模拟终端/dev/ps/#

startx命令:读取/etc/X11/xorg.conf进入图形界面终端

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

(0)
SnooSnoo
上一篇 2016-07-07 10:48
下一篇 2016-07-07 10:48

相关推荐

  • 创建CA证书

    创建CA证书 CA证书         CA 也拥有一个证书(内含公钥和私钥)。网上的公众用户通过验证 CA 的签字从而信任 CA ,任何人都可以得到 CA 的证书(含公钥),用以验证它所签发的证书。       &nb…

    Linux干货 2017-07-23
  • N22-第一周博客:计算机及Linux系统的入门学习了解

                                  …

    Linux干货 2016-08-15
  • 磁盘管理

    回顾 {a..f} a b c d e f ]# arr=({a..z}) ]# echo ${#arr[*]} 26 ]# N1=N2 ]# N2=zhuchaoming ]# echo ${!N1} eval N1=\$$N2 echo $N1 创建临时文件 mktemp NAME.XXX 交互式登录 /etc/profile –> /…

    Linux干货 2016-09-07
  • 第七周 系统启动维护管理

    1、简述linux操作系统启动流程 2、简述grub启动引导程序配置及命令行接口详解 3、实现kickstart文件制作与光盘镜像制作    

    2018-01-12
  • 安装CentOS 6.9与CentOS7.3

    今天学习了如何安装CentOS6.9与CentOS7.3. 安装CentOS6.9 首先打开虚拟机如下如所示: 然后点击创建新的虚拟机: 选择典型,然后点击下一步: 一般会选择稍后安装操作系统,然后点击下一步 客户机操作系统有很多,因为今天只安装CentOS 所以选择Linux 版本则选择CentOS 64 位 (因为CentOS7以上没有32位版本,只有C…

    2017-07-14
  • PHP中引用的详解(引用计数、写时拷贝)

    《PHP5中文手册》内容中"引用的解释"一文的摘要: 1. PHP中引用的特性 PHP中引用意味着用不同的名字访问同一个变量内容,引用不是C的指针(C语言中的指针里面存储的是变量的内容,在内存中存放的地址),是变量的另外一个别名或者映射。注意在 PHP 中,变量名和变量内容是不一样的,因此同样的内容可以有不同的名字。最接近的比喻是 Uni…

    Linux干货 2015-04-10

评论列表(1条)

  • 马哥教育
    马哥教育 2016-07-07 11:11

    写的很好,排版还可以在漂亮一点,加油