计算机主要部件
- CPU:运算器,控制器,寄存器
- Memory:RAM
- I/O:Input,Output
计算机CPU的基础内容讲解
- 8bit = 1 Byte
- 2^10Byte = 1KB
- 2^20Byte = 1MB
- 2^30Byte = 1GB
CPU通过地址总线来控制读取内存,CPU是一个指令的流水线运行器。CPU和每个设备都有自己的控制器,通过控制总线来控制。
程序 :指令 + 数据
编译器:把面向对象的语言转化成计算机语言
电脑开机后,计算机自举,即读取内存中特定地址的程序。
SysV
- IBM: Power,PowerPC,AIX
- SUN: Sparc,SunOS –> Solaris,OpenSolris
- HP: Alpha,HP-UX
CPU的常见平台
- PowerPC(简化版的Power)
- Sparc,UltraSparc
- Alpha
- x86
- x86_64(amd64)
- MIPS
- ARM(只提供设计规范)
二进制代码:指令
- 每一种芯片生产时所能执行的命令都是二进制的,二进制代码;汇编器把二进制代码转化成人所能理解的汇编语言(微码语言)。所以不同的芯片,汇编器的转换方式也不同。所以不同的芯片编写的程序需要移植。
- 高级语言编程,如C语言。C语言经过预处理,编译,汇编,链接后被CPU执行。
- 调用:库,基本提供标准库。
操作系统发展进程
Windows
- Windows最开始基于DOS(性能很差);
- WindowsNT;
- IBM,OS/2 –> Vista;
- WindowsXP
- Windows7
- WIndows8
- Windows10
BSD Unix的衍生系统(修改Unix)
-
Unix开放时期,衍生出了BSD系统。
-
最后一个版本:BSD Lite
-
BSD Lite的衍生版本:
-
FreeBSD(x86可运行) –> MAC OS, ios
-
NetBSD
-
OpenBSD(最安全)
Unix –> Linux(仿Unix)
Unix商业化后不公开免费了
- Minix,基于微内核,仿照Unix,不公开
- MIT:Stallman,倡导Freedom;建立GNU组织
- GNU:Gnu is not Unix;反抗Unix的不开源协议
- Linus: Linux(核心)
- GNU/Linux:Linux + GNU提供的外设
- Linux使用C语言写的,源代码公开
Linux发行版
-
版本号:
-
major(主版本号).minor(次版本号).release(修订次数)
- Debian
- Slackware
- Redhat
- Redhat 9 –> Fedora
- RHEL:RedHat Enterprise Linux 3
- CentOs: Community ENTerprise OS,基于RedHat发行的源代码发行的
- ArchLinux
- Gentoo
操作系统
操作系统是用户和计算机的接口,同时也是计算机硬件和其他软件的接口:
- 进程调度
- 文件系统
- 网络协议栈
- 内存管理
- 驱动程序
- 安全功能
API(库) : Application Programming Interface,应用开发可使用库
ABI(应用二进制接口):Application Binary Interface,操作系统提供的运行环境
-
Linux:
-
API : syscall, libcall
-
ABI : 程序执行所需的环境
POSIX API: Portable OS (库接口协议)
.os : Shared Object (Linux)
.dll : Dynamic Link Labraries (Windows)
静态链接:程序编译后包含所用的库,任何地方都可用,但体积过大;
动态链接:程序编译后不包含所有的库,兼容性不高,但体积轻便;
-
自由软件 :
-
FSF : Free Software Fundation
-
ASF : Apache Software Fundation
定义:自由学习,自由修改源代码,可以处于任何目的获取源代码,自由分发源代码,自由创建衍生版。
-
开源协议:
-
GPL:通用公共许可证 GPLv2,GPLv3;(一旦沾边,程序开源)
-
LGPL:Lesser GPL;(做衍生版,程序必须开源;调用不用开源)
-
BSD:
-
如果二次发布的产品中包含源代码,则在源代码中必须带有原来代码中的BSD协议;
-
如果二次发布的产品知识二进制格式的类库或程序,则需要在文档或版权声明中包含原来的BSD协议;
-
不可以用开源代码的作者或者组织和原来的产品名字做市场推广;
Apache License:
Copyright
Copyleft
Linux基础知识
发行版 : 各种开源程序 + Linux内核
Android: Linux + jvm(Java虚拟机) + Java程序
IOS: FreeBSD + Object(Swift)
Linux的基本法则:
- 一切皆文件(包括硬件);
- 由众多单一目的小程序组成;
- 组合小程序完成复杂任务;
- 尽可能避免捕获用户接口,方面实现脚本编程以实现自动化执行;
- 使用文本文件保存程序的配置数据,使用一个文本编辑器即可完成系统及服务配置工作;
-
Linux的基本层次:
-
1 运行程序:通知内核把某应用程序调度至硬件执行其指令
-
2 用户接口:
- CLI(命令提示符):
- shell: sh,csh,ksh,bash,zsh,tcsh
- GUI(图形界面):
- Gnome,c语言,gtk
- KDE,c++,qt
- xfce,轻量级
-
3 硬件 –> 操作系统 –> API –> 应用程序
终端分类:
- 虚拟终端(程序): Ctrl+Alt+F[1-6] tty表示为:/dev/tty#
- 图形终端: Ctrl+Alt+F7 第一次启动要用startx &,startx – :2 &
- 伪终端: 使用ssh远程连接;在图形界面下打开的命令提示符;tty表示为:/dev/pts/#
- 物理终端(控制台 console):tty表示为:/dev/console
- 串行终端:tty表示为:/dev/ttyS#
终端命令总结: : ifconfig,tty,ls,startx,echo
计算机基本知识
总线
- 地址总线:寻址
- 控制总线:
- 数据总线:
- 最新总线结构:
- AMD:HT;
- INTEL:QPI
缓存
- 寄存器
- 一级缓存,二级缓存,cache,buffer
- 内存
IO:controller(adapter),device
协议:SATA,IDE等等;
Shell
mkdir:创建目录
ifconfig:查看网络信息
tty:查看终端状态
ls:文件目录
命令提示符:prompt,由shell提供
管理员:#
普通用户:$
Linux的文件系统:
- Linux严格区分大小写
- 一个目录:一个名称空间,不能重名;
- 相对路径:从非顶级名称空间起始的路径;
- 绝对路径:从顶级名称空间(root)起始标记的路径;
-
登陆系统之后:
-
工作目录:working directory;
-
当前目录:current directory;
-
家目录
命令
命令提示符下格式: COMMAND [OPTIONS] [ARGUMENTS]
命令提示符下可输入的内容:
- 命令
- 内建命令:shell程序自带的命令
- 外部命令:本身是一个独立的可执行程序文件,命令名即为程序文件名,
- 查找方式:通过shell的内置环境变量PATH中制定的路径变量;
- 区分方法:type COMMAND
- 应用程序
- 脚本文件
echo $PATH 显示当前的环境变量的值
基本的环境变量路径值: PATH=/bin:/sbin:/usr/bin:usr/sbin
选项
短选项: -char,例如, -l,-d,-h
- 多个选项间要使用空白分隔符: -l -d -h
- 合并使用: -ldh
长选项: –word,例如, –long, –directory, –human-readable
- 长选项一般不能合并使用
注意:有些选项需要带参数,称为选项参数, mkfs -t ext4
参数:命令的作用对象
-
cd: change directory
-
cd ~USERNAME:切换到指定用户家目录
-
cd DIRECTORY :切换到制定目录
-
cd - :在前一个目录和当前目录之间反复切换
-
两个独特的路径:cd .. :返回一级目录; cd . :当前目录
pwd: print working directory 打印当前目录
bash特性之一:
- history:显示历史命令
- Ctrl + c:终止当前命令的执行
- echo $HISTORYSIZE:保存历史命令的条数变量
- echo $HISTORYFILE:保存历史命令文件路径参数
Linux中所有以 . 开头的文件都是隐藏文件,用选项 -a 或者 -A 可以查看。
cat FILE : 查看文件
help COMMAND:查看内建命令用法
COMMAND –help:外部命令简要说明
man COMMAND:命令的详细说要说明
bash调用命令列表中的命令:
- !#:执行命令历史中的第#条命令
- !!:执行上一条命令
- !string:执行最近一条以string开头的命令
Bush
- hash:查看缓存使用过的地址,可用help查看命令使用帮助
- 命令补全:根据内建命令或外部命令的查找方式查找以用户指定的字符串开头的命令。如果用户指定的开头字符串能唯一标识某一命令,则tab键可补全此命令。否则两次tab键显示所有指定字符串开头的命令。
- 路径补全:tab
- bash命令历史:
- HISTSIZE
- HISTFILE
- HISTFILESIZE
- HISTCONTROL:
- ignoredups:忽略重复的命令
- ignorespace:忽略以空白字符打头的命令
- ignoreboth:以上二者都生效
- data:
- hwclock:
- ntp:
- reboot:
- halt:
- who:
- whoami:
- which:
Lunix
Linux文件系统的基础特征
1.文件名区分大小写
2.所有文件都位于根目录下,FHS
3.路劲以/作为分隔符
4.每个路径的名称处理/之外不能超过255个字符
绝对路径可以分为基名和目录名:
- 基名:basemane
- 目录名:dirname
FHS:Filesystem Hierarchy Standard
具体自行下载 fhs 文件查看,百度搜索即可。
- /bin(所有用户都可以用),/sbin(只有管理员可以用):系统自身会用到的核心二进制命令;
- /usr/bin,/usr/sbin:系统运行中,用户可能用到的命令;
- /lib:共享库文件和内核文件
- /etc:主机特有的配置文件
-/dev:所有设备文件都存放再这里,设备文件通常也称为特殊文件(只有语言数据,没有数据)
- /proc:伪文件系统:内核和进程信息的虚拟文件系统接口
- /sys:为文件系统:硬件设备信息虚拟文件系统接口
- /boot:系统引导加载时用到的静态文件:
- 内核,ramdisk(CentOS5:initrd,Cent)S6:initramfs),grub(bootloader)
- /home/USRENAME
- /root
- /mnt
- /media
- /srv:服务所用的数据
- /tmp:临时文件的存放目录
- /var:经常发生变化的文件
- /var/log
- /var/account
- /var/cache
- ……
- /misc:杂项目录,备用目录
- /net:
- /opt:第三方应用程序的安装目录(早期)
- /usr/local:第三方应用程序的安装目录(现在)
- /selinux:Security Enhanced Linux:安全加强的linux,内核工作机制
文件管理类命令
- 文件类型
- 文件信息查看
- 用户和权限
- bash的一些特性
文件类型:ls -l 查看时每个文件第一个字符表面文件类型
- 普通文件:-
- 目录文件:d
- 符号链接文件:l,后面有箭头指向
- 设备文件:
- 字符设备:c,线性设备
- 块设备:b,随机设备,例如硬盘
- 命名管道:f
- 套接字文件:s ,unix sock
文件类型查看:命令:file 文件路径
目录管理
- cd,pwd,ls
- mkdir:make directory
- rmdir:remove directory
安装tree
- # cd /etc/yum.repos.d/
- # wget http://172.16.0.1/centos6.5.repo
- # rm CentOS-Base.repo
- # yum -y install tree
ls:ls [option] [file]
ls -l:
- 例子:drwxr-xr-x. 2 root root 4096 Feb 12 09:55 accout
- 左起第一位:文件类型
- 后面9位:权限,常称mode
- .:表示文件有隐藏属性,lsattr可查看
- 数字:此文件被硬件连接的次数
- 属主:owner,文件拥有者
- 属组:group,文件所属的组
- 4096:文件大小,单位是字节
- 文件最近一次被修改的时间
- 文件名
文件管理类的命令
- 查看:cat,tac,head,tail,less,more
- 时间戳管理:touch
- 复制:cp
- 移动:mv
- 查看元数据属性:stat
- 文本编辑器:nano,vi