马哥教育网络班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)
上一篇 2016-07-07 10:48
下一篇 2016-07-07 10:48

相关推荐

  • 第六周作业

    请详细总结vim编辑器的使用 模式化的编辑器 基本模式: 编辑模式,命令模式 输入模式 末行模式: 内置的命令行接口; 打开文件: # vim [options] [file ..] +#:打开文件后,直接让光标处于第#行的行首; +/PATTERN:打开文件后,直接让光标处于第一个被PATTERN匹配到的行的首; 模式转换: 编辑模式:默认模式 编辑模式 …

    Linux干货 2017-03-21
  • ​入学了

    入学了

    Linux干货 2016-10-31
  • Linux文件管理初步(第二周)

    第二周作业 1.Linux上的文件管理类命令都有哪些,其常用的使用方法及其相关示例演示 目录管理管理类命令 mkdir make directories mkdir [OPTION]… DIRECTORY… 注意:路径基名作为命令的作用对象时,基名之前的路径必须要存在;     -p:自动按…

    Linux干货 2016-09-05
  • 密钥和公钥

    安全协议和搭建CA

    Linux干货 2018-01-09
  • 程序包管理rpm

    Linux程序包管理      API:Application Program Interface      ABI:Application Binary Interface         Unix…

    Linux干货 2016-08-23
  • 关于大型网站技术演进的思考(九)–网站静态化处理–总述(1)

    原文出处: 夏天的森林    在存储瓶颈的开篇我提到像hao123这样的导航网站只要它部署的web服务器数量足够,它可以承载超大规模的并发访问量,如果是一个动态的网站,特别是使用到了数据库的网站是很难做到通过增加web服务器数量的方式来有效的增加网站并发访问能力的。但是现实情况是像淘宝、京东这样的大型动态网站在承担高并发的情况下…

    Linux干货 2015-03-11

评论列表(1条)

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

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