计算机硬件基本知识

CPU内部已经含有一些小的指令集,我们所使用的软件都要经过CPU内部的微指令集来达成。因此CPU可分为RISC(精简指令集)和CISC(复杂指令集)两种,前者有sun公司的SPARC,IBM的PowerPC系列及ARM系列等。后者有Intel、AMD等x86架构处理器,广泛用于个人计算机上。

CPU与其他设备集成到一块主板上协调工作,对于Intel处理器,主板设计成南北桥结构,南桥沟通CPU及周边运算速率较快的设备,北桥连接其他速率较慢的外围设备。

由于CPU和外部组件运行速率不同,所以我们称CPU内部运行速率为主频与外部组件数据传输时的统一速度为外频主频/外频=倍频,一般倍频由厂商设定好,如果玩家想提高CPU性能,可人为提高主板上外频,此即超频。

系统总线是主存与CPU数据传输的通道,分32/64位;I/O总线主要连接硬盘、USB、网卡等设备。注意区分总线宽度和CPU字组大小,通常所说的32/64位CPU指CPU字组大小,即CPU每次能处理的数据量。32位CPU最多支持4GB内存。(2^32=4G,32位最多寻址4G个地址,每个内存地址对应一个Byte数据)。

主存是动态随机存储内存(DRAM),通电时记录和使用,掉电后数据消失。适配主存的外频最好与CPU外频相同,如DDR2-800的内存条,其外频为400MHZ。
为提升数据传输速率,可采用双通道设计,2^n个内存并行传输,若每个64位,则总线宽度扩展为64×2^n位。为了提高数据传输速率,CPU内部嵌入了基于SRAM(静态随机存储内存)的L2 cache高速缓存,其频率与CPU主频相同。主板上都有一块固定的ROM(只读存储器),内部数据永久保存,一般用于记录BIOS信息。

显示适配器(VGA:Video Graphic Array)用于计算机数据可视化显示。每个像素的显示需要占用内存,因此显示适配器上会有一个内存容量。另外,显示3D图形的相关运算早期由CPU完成,如今为减轻CPU负担,显卡也承担此部分运算任务,即所谓GPU。

前面提到:CPU具有微指令集,它实际上是一系列二进制数(机器语言),告知CPU执行特定的操作。编程语言通过编译程序转化为机器语言,实现操控计算机硬件的目的。但为了避免考虑整体硬件系统来设计程序,人类使用操作系统核心(operation system kernel)来管理计算机硬件活动及驱动系统中所有硬件。操作系统核心本质上也是一组程序。

计算机科学发展史上的部分重要人物

Ken Thompson:1969年用汇编语言写成Unix原型
Bill Joy:1977年伯克利大学的Bill Joy在取得Unix源码后,修改成适合自己机器的版本,命名为BSD,后创立sun公司。
Richard Mathew Stallman:1984年发起GNU计划,并成立FSF(Free Software Foundation)。后开发了一些重要软件GCC、Bash Shell、glibc等,引发了开源软件风潮。
Linus Torvolds:1991年以bash、gcc等工具撰写了linux核心。

Linux版本

注意区分Linux核心版本和distribution版本。Linux核心版本编号格式为类似:2.6.18-92.el5。2是主版本,6是次版本,偶数是稳定版,奇数是测试版。
Linux的distribution众多,由套件管理的方式可分为RedHat系统的RPM方式及Debian系统的dpkg方式。Ubuntu使用dpkg方式。

Linux系统目录结构

ubuntu 下载的软件包一般放在/var/cache/apt/archives里,以.deb为后缀名,
欲安装该包,执行dpkg -i ×××.deb
dpkg -L libmysqlclient //查看libmysqlclient各个文件的安装位置
ubuntu shell绿色字体代表可执行文件,红色代表压缩文件(通常是安装包),蓝色代表目录

Linux常用命令大全

sudo 后续命令 //以根权限操作,主要用于修改文件,sudo是ubuntu自己的脚本语言
sudo su //切换为根用户
cd /home //cd用于打开home目录
cp /etc/group . //拷贝etc目录下group文件到当前目录
rm group //删除当前目录下group文件
ls -l //列出当前目录下所有文件的详细信息(-a:列出当前目录所有文件包括以 . 开头的项目;-i:列出当前目录下所有文件的索引号inode)
如该文件信息开头为drwxr-xr-x ,d表示是目录,后面9项表示owner、group、world三类用户的使用权限,r读、w修改、x执行、-无此权限。
注:Linux共四种用户,除以上三种还有root用户。
查询命令:
find /usr/lib -name interfaces //查询该目录中所有名为interfaces的文件,此方法较慢
locate interfaces //对/var/lib/locatedb检索(包含本机所有文件信息的数据库),找出所有名为interface的文件,较快
whereis grep //搜索linux上二进制文件grep的位置,只能搜索可执行文件/二进制文件
type grep //查看命令是否为系统命令
file /bin/bash //查看bash的文件类型和格式,此处bash是elf类型的可执行文件格式,elf类型包括共享目标文件(.so),可执行文件(linux中一般不加后缀名),可重定位文件(.a,.o),核心转储文件等。

ln passwd passwd.2 //对已存在的passwd建立硬连接passwd.2 passwd.2与passwd共享同一个索引号
ln -s passwd passwd.2 //对已存在的passwd建立软连接,passwd.2 是passwd的符号连接:passwd -> passwd.2
注:连接是指文件名与索引号的对应
mv passwd.2 godown.b //移动passwd.2为同一目录下并更名为godown.b,实际上是原地搬移,实现了更名,索引号不变。
man ls //查阅手册,了解ls命令的用法
ls --help // 获取ls的帮助文档
mount /dev/cdrom /mnt/cdrom //将cdrom的文件挂到mnt/cdrom目录下,默认mnt为接受外挂文件系统的目录
mkdir test //在当前目录下创建新目录test
touch a.txt //在当前目录下创建新文件a.txt
cat -n /etc/passwd //查看passwd文件并以行编号输出,passwd记录用户帐号信息,账号信息中UID若为0,则为root用户,享有最高权限。
chown root /home/zhengfeng/Music
chgrp root /home/zhengfeng/Music //更改文件的所有者及所有组
chmod +x install.sh //更改install.sh的访问权限为允许所有人执行,+x增加执行权限
echo $PATH //显示当前搜索路径,若$PATH 加单引号,则显示该字符串,若$前加转义字符\则同样显示该字符串,若$PATH加双引号则显示当前搜索路径,即保留$的特殊用义。$用来标志系统环境变量。
echo $BASH_VERSION //显示当前bash版本,bash是一种shell,作为命令语言解释器。
ls -l /dev/hd* &<result.txt //将dev目录下hd开头的文件信息逐个列出保存到新建文件result.txt里,若文件不存在,则输出错误信息同样保存在rsult.txt里。这是一个输出重定向的例子。Linux默认标准输入0键盘,标准输出1屏幕,标准错误2也是屏幕,若需更改则使用> >> < <<符。
ls -l /dev/hd* <result.txt 2<error.txt //更一般的用法
cp /dev/stdin a.txt //将键盘输入内容保存在a.txt内,键入时按CTRL+D结束。
cp a.txt /dev/stdout //将a.txt内容输出到屏幕,与cat等价
ls -l /dev|more //将dev目录下文件信息分页显示 |是管道操作符,表示前后命令并列执行。
history //列出本次登录后所有操作历史,并编号;!12 将第12条历史命令重新执行一次;!! 将最近的命令重复执行一次。
dir() { ls -ld $*;} //建立一个shell函数dir(),功能是花括号内命令,$*用于提取参数 因此dir /home 即显示hom目录信息,注意左花括号后有一空格,如多个命令则依次写在花括号内,以分号分隔。
alias lm = ‘ls -al’ //令lm为别名

Linux在命令行输入时也有命令补全功能,例如在输入一个文件名到一半时,按下tab键,系统会自动补全名字,若存在相似文件名,则需要继续输入。

ps //process situation 显示当前进程状态
kill -9 1841 //向进程发值为9的信号,终止PID为1841的进程,信号是一种机制,进程通过信号了解系统中发生的事件。
top //实时监视系统运行状况,按q退出监视返回shell
ping IP或网站名 //检查与目标主机或网站的连接是否连通,但不能作为评判标准

远程登录与NFS

Telnet是Internet提供的一项基本服务,用来将本地计算机作为远程计算机的终端机使用。
telnet 主机名或IP地址
exit或logout命令退出
telnet以明文传输不安全,因此禁止root身份登录
SSH 主机名或IP地址 //作为telnet的替代,以公开密钥算法加密数据,允许root登录

scp 本地文件路径 远程用户名@主机:文件路径 //用于本地与远程计算机之间安全拷贝文件 如:
scp z3@202.207.30.136:a.txt

sftp 远程用户名@主机 //以安全模式进入ftp状态,此时可执行该状态下的命令:
get 远程路径 本地路径 //下载
put 本地路径 远程路径 //上传
quit 退出
? //列出该状态可使用的命令清单,其中不少同Linux Bash命令如mkdir、cd、ls等,都是针对被登录机操作,若对本地机操作,则在命令前加字母l,如lmkdir、lls等

NFS(Network File System):通过网络将远程主机的文件系统挂载到本地主机目录下,以便于使用,它基于客户机/服务器模式,建立在TCP/IP协议的表示层协议与会话层协议机制之上。

vim程序编辑器

vim是vi文本编辑器的进阶版,在所有linux系统上均可使用,被称为“编辑器之神”。
vi分为三种模式:一般模式,编辑模式和指令列命令模式
vi hello.c //进入hello.c文件,此时为一般模式,若hello.c不存在则自动新建
一般模式下执行vi定义的键盘上转义字符操作,del为删除光标上字符,dd为删除一整列,退格键及上下左右键移动光标,i进入插入光标前编辑模式,a进入插入光标后编辑模式,r进入改写编辑模式;
编辑模式下键盘上所有按键除ESC外都可输入字符,如上下左右键分别代表ABCD大写字母,按ESC退出编辑;
在一般模式下按:进入指令列模式,最下面一行为指令列,wq保存并退出。

gcc编程

gcc中库的链接顺序是从右往左进行,所以要把最基础实现的库放在最后,这样左边的lib就可以调用右边的lib中的代码。同时,当一个函数的实现代码在多个lib都存在时,最左边的lib代码最后link,所以也将最终保存下来。

objdump -T libmysqlclient.so //打开当前目录下的动态链接库libmysqlclient.so查看其中的API。objdump命令用来查看各种目标文件(elf文件)内部的结构
obidump -h hello.o //参数-h把hello.o各个段的基本信息打印出来,elf文件是分段的,通常分为Header、.data(数据段包括局部静态变量和全局变量)、.text(代码段)、.rodata、.bss、.comment等
readelf -s hello.o //查看详尽段信息
gcc错误:undefined reference to function 该函数具体实现没有找到
info gcc //显示gcc的所有信息

mysql操作

SQL:Structured Query Language
netstat -tap|grep mysql //检查系统有没有已安装mysql,若socket显示listen则表示就绪。
mysql中unique key(唯一键)指除主键外确保某一列唯一性的约束,该列可包含NULL(空值);primary key为主键
apt-get install mysql-server //安装mysql
mysql -u root -p //以root用户登录mysql server,之后需输入密码
show databases; show tables; //查看数据库和数据表单,注意在mysql server中输入指令以;结尾。
use mysql; //使用数据库mysql也可以在登录时输入指令:
mysql -D mysql -u root -p
quit; //退出
insert into students(id,name,sex) value(1,zhengfeng,man); //向students表中插入zhengfeng的信息
select * from students //输出students的所有信息,*是通配符,可指定为列名称

create table students(
id int(8) not null auto_increment,
name  varchar(255) not null,
sex char(4) not null,
tel char(13) not null default “-”,
primary key(id),
unique key unique_name(name)
);    
   //创建表

describe students //输出表结构信息
mysql_config --libs //使用mysql_config工具确定MySql程序的链接参数,同理,若需确定编译参数,使用mysql_config –include

redis操作

注:redis是一个高性能的key-value数据库,由ANSI C编写,支持网络,它支持的value类型包括string、list(字符串链表)、set(字符串集合)、zset(字符串有序集合)、hash(字符串哈希类型)。
竞态条件和原子操作的概念:原子操作指该命令在执行过程中不会被其他插入命令打断,是“一气呵成”的;
竞态条件:指一个系统或进程的输出,依赖于不受控制事件出现的顺序或时机,若多个客户端连接到redis,同时执行多项命令时有可能出现竞态条件,关于此问题的深入讨论在《链接、装载和库》中详细提及。

apt-get install redis-server //安装redis
netstat -nlt grep|6379 //查看系统中redis运行状态,listen为就绪
redis-cli //进入redis命令行客户端,cli:command line interface 此为进入交互模式,可自由输入命令。
select 1 //选择1号数据库,redis实例默认自带16个数据库,以数字编号,可通过配置文件更改。

熟悉Linux基本操作相关推荐

  1. Linux系统介绍及熟悉Linux基础操作

    一.什么是Liunx Linux,全称GNU/Linux,是一种免费使用和自由传播的类UNIX操作系统,其内核由林纳斯·本纳第克特·托瓦兹(Linus Benedict Torvalds)于1991年 ...

  2. 实验1 LINUX基本操作

    一.实验目的: 1.熟悉虚拟机安装LINUX的操作步骤. 2.熟悉GNOME图形用户界面,管理GNOME视窗. 3.熟悉Linux操作系统环境,掌握Linux命令的一般格式: 4.掌握一些常用的Lin ...

  3. VirtualBox安装及Linux基本操作(操作系统实验一)

    VirtualBox安装教程博客链接(转载)https://blog.csdn.net/u012732259/article/details/70172704 实验名称:Linux的基本操作 实验目的 ...

  4. 操作系统实验一linux,操作系统实验一 Linux基本操作.doc

    操作系统实验一 Linux基本操作 实验.实验目的Red hat Linux平台. 三.实验原理及相关知识 1. 参阅相关Linux操作系统的安装手册,熟悉Linux的基本安装和配置: 2. 参阅相关 ...

  5. 操作系统实验报告——实验一:熟悉Linux命令及进程管理

    实验目的 熟悉Linux系统,掌握Linux系统的登入.退出等操作: 熟悉Linux命令及进程管理.作业控制: 学会使用Linux下C语言编程的基本知识: 掌握Linux中vi的基本操作: 掌握Lin ...

  6. 嵌入式linux计算机实验报告,嵌入式linux基本操作实验一的实验报告

    实验一linux基本操作实验的实验报告 一实验目的 1.熟悉嵌入式开发平台部件,了解宿主机/目标机开发模式: 2.熟悉和掌握常用Linux的命令和工具. 二实验步骤 1.连接主机和目标板:(三根线,网 ...

  7. 入门Linux,掌握Linux基本操作。

    文章目录 前言 一.学前准备 一.Linux是什么? 1.Linux介绍 2.Linux的优点 3.Linux的特点 二.Linux基本知识与基本操作 1.远程登录.远程文件传输 2.文件系统(路径. ...

  8. 三天入门Linux,掌握Linux基本操作(1)

    文章目录 前言 一.学前准备 一.Linux是什么? 1.Linux介绍 2.Linux的优点 3.Linux的特点 二.Linux基本知识与基本操作 1.远程登录.远程文件传输 2.文件系统(路径. ...

  9. linux基本操作及shell编程使用和vim

    linux基本操作 如何重启.关机.切换用户? // 重启 #reboot 或者 #shutdown -r now //关机 #halt 或者 #shutdown -h now 浏览文件系统,查看系统 ...

  10. 熟悉Linux开发环境

    实验一 熟悉Linux开发环境 一.实验目的 1.熟悉Linux开发环境,学习Linux开发环境的配置和使用,掌握Minicom串口终端的使用. 2.学习使用Vi编辑器设计C程序,学习Makefile ...

最新文章

  1. java Collection-Map 之 TreeMap
  2. 分享一个异步发送邮件的类
  3. C语言用DFS实现找到图的所有路径(邻接矩阵实现)
  4. Linux下查看磁盘挂载的三种方法
  5. FastAPI使用async?乱用async导致灾难,不如直接不用
  6. NiFi 脚本执行器使用指南 (part 3)
  7. 练打字-测试看图说话(AD安装)
  8. mysql 建表结构_MySQL学习系列之二——创建表及对表结构的基本操作
  9. 摘录自《蔡康永的说话之道》-笔记
  10. 解锁Insyde的BIOS隐藏设置
  11. C语言练习题,从键盘输入一个字符,在给定的字符串中寻找该输入字符,若找到将该字符从字符串中删掉,并输出该字符串,没有找到给出提示信息“未找到”。
  12. python导入siri_python利用不到一百行代码实现一个小siri
  13. python2编码unicode,在不终止Unicode的情况下,在Python 2中编码转义字符的正确方法是什么?...
  14. java 雷达图_Java 创建Excel雷达图
  15. 建立工资计算系统(2)
  16. VFP调用Selenium入门篇(一)
  17. 基于php理发店管理系统
  18. 存储器空间或者桌面堆_「Folder Tidy」Mac桌面太杂乱,一键归类整理就用它
  19. FITC-PEG-SH,荧光素-聚乙二醇-巯基的用途:用于修饰氨基酸,蛋白质等
  20. 『C语言』getchar() putchar() 〖input output〗

热门文章

  1. 粒子群算法及其改进算法
  2. 集店管家(App名称)技术服务支持
  3. 波波夫:无线电的先驱
  4. PowerDesign
  5. 如何将两个mp3文件合成一个?
  6. 安卓没有删除谷歌服务框架
  7. 关于水晶易表的简介及水晶易表安装初识
  8. 密码编码学初探——传统加密技术
  9. 计算机科学技术学报官网convex,计算机学报chin
  10. 机房收费系统——可行性分析报告