概述
大纲
一、计算机概念简介
二、计算机体系结构
三、计算机常见术语
四、操作系统相关
五、获取命令的使用帮助
六、Man文档章节
七、根文件系统
一、计算机概念简介(来源于MBA智库)
计算机的全称为电子计算机,俗称电脑,是一种能够按照程序运行,自动、高速处理海量数据的现代化智能电子设备。由硬件和软件所组成,没有安装任何软件的计算机称为裸机。常见的型号有台式计算机、笔记本计算机,较先进的计算机有生物计算机、光子计算机、量子计算机等。
电脑的学名为电子计算机,是由早期的电动计算器发展而来的。1946年,世界上出现了第一台电子数字计算机“ENIAC”,用于计算弹道。是由美国宾夕法尼亚大学莫尔电工学院制造的。1956年,晶体管电子计算机诞生了,这是第二代电子计算机。只要几个大一点的柜子就可将它容下,运算速度也大大地提高了。1959年出现的是第三代集成电路计算机。最初的计算机由约翰·冯·诺依曼发明(那时电脑的计算能力相当于现在的计算器),有三间库房那么大,后逐步发展。
1946年面世的“ENIAC”,它主要是用于计算弹道。是由美国宾夕法尼亚大学莫尔电气工程学院制造的,它的体积庞大,占地面积170多平方米,重量约30吨,消耗近150千瓦的电力。显然,这样的计算机成本很高,使用不便。这个说法被计算机基础教科书上普遍采用,事实上在1973年根据美国最高法院的裁定,最早的电子数字计算机,应该是美国爱荷华州立大学的物理系副教授约翰·阿坦那索夫和其研究生助手克利夫·贝瑞(Clifford E. Berry ,1918-1963)于1939年10月制造的"ABC"(Atanasoff- Berry-Computer)。之所以会有这样的误会,是因为“ENIAC”的研究小组中的一个叫莫克利的人于1941年剽窃了约翰·阿坦那索夫的研究成果,并在1946年时,申请了专利。由于种种原因直到1973年这个错误才被扭转过来。后来为了表彰和纪念约翰·阿坦那索夫在计算机领域内作出的伟大贡献,1990年美国前总统布什授予约翰·阿坦那索夫全美最高科技奖项----“国家科技奖”。
如果有兴趣可以看下wiki中对于计算机硬件历史的介绍:传送门
二、计算机体系结构
运算器
控制器
存储器
输入设备
输出设备
总结:
中央存储器:Central Processing Unit,简写CPU
运算器:负责数学运算和逻辑运算
控制器:负责运算器去存储器读取数据
存储器:这里的存储器其实指的就是内存,内存是平面编址的
输入计算机最主要的部件是运算器,控制器和存储器,输入输出设备只是辅助计算机运行,方便用户与计算机更好的交互
三、计算机常见术语
1. API(Application Programming Interface)
应用编程接口:为‘电脑操作系统(Operating system)’或‘程序库’提供给应用程序调用使用的代码,其主要目的是让应用程序开发人员得以调用一组例程功能,而无须考虑其底层的源代码为何、或理解其内部工作机制的细节。API本身是抽象的,它仅定义了一个接口,而不涉及应用程序在实际实现过程中的具体操作,简单的说就是将一个或多个系统调用的功能封装起来提供一个更高级的并且能完成特定功能的模块。
2. ABI(Application Binary Interface)
应用程序二进制接口描述了应用程序(或者其他类型)和操作系统之间或其他应用程序的低级接口,即程序的运行接口或者格式
3. 系统调用(System Call)
系统调用,又称为系统呼叫,指运行在使用者空间的程序向操作系统内核请求需要更高权限运行的服务。系统调用提供了用户程序与操作系统之间的接口。大多数系统交互式操作需求在内核态执行。如设备IO操作或者进程间通信。简单的说就是将底层硬件的计算能力抽取出来并且向上为用户提供一个统一的接口,称之为系统调用。
4. 中断(Interrupt)
中断是指处理器接收到来自硬件或软件的信号,提示发生了某个事件,应该被注意,这种情况就称为中断,中断是用以提高计算机工作效率、增强计算机功能的一项重要技术。
5. 中断向量(Interrupt vector)
早期的微机系统中将由硬件产生的中断标识码(中断源的识别标志,可用来形成相应的中断服务程序的入口地址或存放中断服务程序的首地址)称为中断向量。
6. 局部性原理(Locality of Reference)
局部性原理表现为:
时间局部性:如果程序中的某条指令一旦执行,则不久之后该指令可能再次被执行;如果某数据被访问,则不久之后该数据可能再次被访问
空间局部性:一旦程序访问了某个存储单元,则不久之后。其附近的存储单元也将被访问。
7. SDN(Software Defined Network)
软件定义网络,是Emulex网络一种新型网络创新架构,是网络虚拟化的一种实现方式,其核心技术OpenFlow通过将网络设备控制面与数据面分离开来,从而实现了网络流量的灵活控制,使网络作为管道变得更加智能。
8. 任务结构(task_struct)
task_struct结构是进程实体的核心,Linux内核通过该结构来控制进程:首先通过其中的调度信息决定该进程是否运行;当该进程运行时,根据其中保存的处理机状态信息来恢复进程运行现场,然后根据虚拟内存信息,找到程序的正文和数据;通过其中的通信信息和其他进程实现同步、通信等合作。几乎所有的操作都要依赖该结构,所以,task_struct结构是一个进程存在的唯一标志。
四、操作系统相关
1. 操作系统(英语:operating system,缩写:OS)是管理计算机硬件与软件资源的计算机程序,同时也是计算机系统的内核与基石。操作系统需要处理如管理与配置内存、决定系统资源供需的优先次序、控制输入与输出设备、操作网络与管理文件系统等基本事务。操作系统也提供一个让用户与系统交互的操作界面
2. 操作系统内核功能:
进程管理(Processing management)
内存管理(Memory management)
文件系统(File system)
网络通信(Networking)
安全机制(Security)
用户界面(User interface)
驱动程序(Device drivers)
3. 操作系统组成
4. Linux系统架构图:
计算机体系结构微观图
5. 硬件架构
ARM -->只生产知识产权,不生产具体的硬件
x86 -->Intel
x64 -->Intel
安腾 -->原先属于HP,后卖给Intel
alpha -->HP
UltraSparc -->SUN公司,性能蛮好
Power -->IBM公司,性能超强
M68000, M68K -->摩托罗拉生产
PowerPC -->IBM,APPLE,MOTO三家联合生产用于PC机
6. Linux的哲学思想
由目的单一的小程序组成;组合小程序完成复杂任务
一切皆文件
尽量避免捕获用户接口
配置文件保存为纯文本格式
提供机制,而非策略
7. 计算机史两个重要的实验室
Xerox PARC:个人电脑、激光打印机、鼠标、以太网,图形用户界面、Smalltalk、页面描述语言Interpress(PostScript的先驱)、图标和下拉菜单、所见即所得文本编辑器、语音压缩技术
AT&T Bell:晶体管,激光,光通信,数据网络,数字传输与交换,蜂窝电话技术,通信卫星,数字信号处理(DSP),按键电话,Unix操作系统,C语言
8. Shell种类
GUI:Graphical User Interface ,Linux常见三种:Gnome,KDE,Xfce
CLI:Command-Line Interface,Linux常见的有sh,bash,csh,ksh,zsh,tcsh
9. 命令的使用格式
# Command [Options] Arguments
Options:定义命令的执行特性或执行方式
Arguments:定义命令的作用对象
Examples:
[root@soysauce ~]# ls -lh /root/ total 8.0K -rw-r--r-- 1 root root 208 Jul 6 13:41 id_rsa_1024.pub -rwxr-xr-x 1 root root 518 Oct 26 21:33 iptables.sh [root@soysauce ~]#
10. AAA协议概念
Authentication:认证是对用户的身份进行验证,判断其是否为合法用户
Authorization:授权是对通过认证的用户,授权其可以使用哪些服务
Accounting:审计是记录用户使用网络服务的资源情况,这些信息将作为计费的依据
11. 密码复杂性规则
使用四种(大写,小写,数字,特殊字符)类别字符中的至少三种
足够长,大于7位
使用随机字符串
定期更换
循环周期足够大
12. 魔数(Magic Number)
很多类型的文件,其起始的几个字节的内容是固定的(或是有意填充,或是本就如此)。根据这几个字节的内容就可以确定文件类型,因此这几个字节的内容被称为魔数 (magic number)。此外在一些程序代码中,程序员常常将在代码中出现但没有解释的数字常量或字符串称为魔数 (magic number)或魔字符串。
13.稀疏磁盘映像
普通的磁盘映像文件 (.dmg)的大小与其代表的实际磁盘是一样的(尽管其中尚有空间未使用),而稀疏磁盘映像文件 (.sparsep_w_picpath) 的大小仅为实际使用数据的磁盘空间。
14.自由软件
自由使用:不论目的为何,有使用该软件的自由
自由学习和修改:有研究该软件如何运作的自由,并且得以修改该软件来符合用户自身的需求。获取该软件之源码为达成此目的之前提
自由分发:有重新散布该软件的自由,所以每个人都可以借由散布自由软件来敦亲睦邻
自由创建衍生版:有改善再利用该软件的自由,并且可以发表修订后的版本供公众使用,如此一来,整个社区都可以受惠。如前项,获取该软件之源码为达成此目的之前提
15. Linux终端类型
串行终端:/dev/ttyS#
物理终端:/dev/console,计算机刚启动时候的是物理终端,后面出现登陆提示符就是虚拟终端
虚拟终端:/dev/tty# Ctrl+Alt+F[1-6],图形界面:Ctrl+Alt+F7 startx &
伪终端(模拟终端):/dev/pts/#,①远程连接 ②图形界面下打开的命令行界面
16.Linux路径类型
绝对路径:从顶层开始的路径
相对路径:从当前位置开始的路径
17.Linux文件系统的特性
文件名可以使用除/以外的任意字符;但总长度不能超过255个
严格区分大小写;abc, Abc
18.加密方法
对称加密:加密和解密使用同一个密码,DES, 3DES, AES
公钥加密:每个密码都成对儿出现,一个为私钥(secret key),一个为公钥(public key),DSA,RSA
单向加密,散列加密:提取数据特征码,常用于数据完整性校验,特点:①雪崩效应 ②定长输出 ③不可逆
MD5:Message Digest, 信息摘要算法,128位定长输出
SHA1:Secure Hash Algorithm, 安全的hash算法,160位定长输出
五、获取命令的使用帮助
1. Linux命令基本分为两类
内部命令,查看帮助文档办法:help Command
外部命令:查看帮助文档方法:①Command --help ②man Command ③info Command
2. 查看命令为内部命令还是外部命令的方法:type
[root@soysauce ~]# type cd cd is a shell builtin # 说明此命令为内部命令 [root@soysauce ~]# type find find is /usr/bin/find # 说明此命令为外部命令
六、Man文档章节
1. Man文档各章节
1:用户命令(/bin, /usr/bin, /usr/local/bin)
2:系统调用
3:库用户
4:特殊文件(设备文件)
5:文件格式(配置文件的语法)
6:游戏
7:杂项(Miscellaneous)
8: 管理命令(/sbin, /usr/sbin, /usr/local/sbin)
2. 命令使用格式中的符号含义
<>:必选
[]:可选
...:可以出现多次
|:多选一
{}:分组
3. Man文档使用帮助各字段含义:
NAME:命令名称及功能简要说明
SYNOPSIS:用法说明,包括可用的选项
DESCRIPTION:命令功能的详尽说明,可能包括每一个选项的意义
OPTIONS:说明每一个选项的意义
FILES:此命令相关的配置文件
BUGS:
EXAMPLES:使用示例
SEE ALSO:另外参照
4. 翻屏方法:
向后翻一屏:SPACE
向前翻一屏:b
向后翻一行:ENTER
向前翻一行:k
Ctrl+d: 向文件尾部翻半屏
Ctrl+u: 向文件首部翻半屏
5. 查找方法:
/keyword: 向文件尾部搜索
?keyword:向文件首部搜索
n:跟搜索命令相同的方向(下一个)
N:路搜索命令相反的方向(上一个)
6. 退出Man文档方法: q退出
7.查看某关键字在那些段落有使用帮助
(1). whatis Keyword 精确查找
[root@soysauce ~]# whatis passwd passwd (1) - update user's authentication tokens passwd (5) - password file passwd (rpm) - The passwd utility for setting/changing passwords using PAM passwd [sslpasswd] (1ssl) - compute password hashes
ps:如果whatis的数据库尚未生成,可以使用makewhatis手动进行
(2). man -k Keyword 模糊查找
[root@soysauce ~]# man -k lvre lvreduce (8) - reduce the size of a logical volume lvremove (8) - remove a logical volume lvrename (8) - rename a logical volume lvresize (8) - resize a logical volume
(3). man -M /path/to/mandocument command
[root@soysauce ~]# man -M /usr/share/man/ passwd
七、根文件系统
/bin: 存放可执行的二进制程序,管理员和普通用户都可以使用
/sbin:管理员才能执行的命令
/boot:存放系统引导文件:内核、ramfs文件、bootloader(grub)
/dev:设备文件存放目录
/etc:配置文件的集中存放目录
/etc/sysconfig:系统级别的应用
/etc/init.d:系统服务脚本
/home :普通用户,默认在/home下有一个与其名称同名目录,作为用户的家目录
/root:管理员的家目录
/lib,/lib64:库文件
/media:专用挂载位置,通常用来挂载便携式设备,例如光盘,u盘
/mnt:专用挂载位置,挂载额外的存储设备,例如另外的硬盘
/misc:杂项,备用目录
/opt:可选目录,但通常用来安装第三方软件
/proc:所显示的文件都不是文件,伪文件系统,运行中的内核参数的映射
/sys:伪文件系统,系统级别的用于配置硬件设备相关的参数
/srv:为服务提供数据存放位置的
/tmp:临时文件系统:默认存放30天
/usr:universal shared read-only 所有遵循协议的系统都可以使用,readonly 只读
/usr/include:头文件存放位置
/var:经常发生变化的文件
总结:
操作系统自身运行使用的
/bin: 存放可执行的二进制程序,管理员和普通用户都可以使用
/sbin:管理员才能执行的命令
运行正常功能的程序存放位置
/usr/bin
/usr/sbin
用来存放第三方软件的程序
/usr/local/bin
/usr/local/sbin
总结:
系统调用和普通库函数调用非常相似,只是系统调用由操作系统内核提供,运行于内核核心态,而普通的库函数调用由函数库或用户自己提供,运行于用户态,库可能并不包含系统调用,也可能包含多个系统调用
CPU捕获io事件方法: 轮询(poll),中断(interrupt)
库没有程序的执行入口,不能独立执行,只能被调用执行,可以提供一个统一的调用接口
普通应用程序是不能直接与硬件交互,要想使用硬件的功能,必须先得像内核发起系统调用,由内核负责与硬件交互,再将结果返回给应用程序
创建一个虚拟机其实就是给一个虚拟机分配虚拟的硬件资源的过程
把问题空间中的问题映射为解空间中解决办法的过程就叫做编程
高级语言程序编译过程:预处理,编译,汇编,链接
进程:由父进程fork自身而来的,fork过程是由父进程申请,内核负责生成task_struct
有些程序可以不调用库,直接在内核上运行
1block=2^n个扇区
文件名和文件类型都存放于目录中
驱动程序是让内核能够更好的结合硬件设备的特性让硬件设备工作起来的程序
内核运行在cpu的两种情况:1.进程间切换时 2.进程执行了特权指令
操作系统依赖硬件架构,应用程序依赖系统架构
cpu能寻址内存范围取决于其字长
存储器由两段组成:ROM,RAM (物理视角)
Cache Is the king
init是所有用户空间进程的父进程
变量实际上是一段命名的内存空间,变量名是这个内存空间的引用名称,赋值就是存数据的过程
数据类型定义了数据的存储格式与占据的空间大小
程序=数据+指令,数据和指令只有被加载到内存中才能被cpu所访问
Linux下换行符为$,windows下换行符为n$(回车+换行符)
cpu的保护模式:4个环,最里面的环0为特权环,只允许内核运行操作硬件等特权指令,环3只允许普通程序运行普通指令 加减乘除等
命令查找顺序:事先通过一个变量(PATH)设定好了多个路径,当用户输入命令时,shell会自动到这些路径(由左向右)下查看与命令名称相同的可执行文件查找到并执行过的命令会被保存至一个hash查找表中,可以使用hash命令查看此表
将底层的细节隐藏起来,并提供一个统一的规范的,简介的接口提供出来,这就是操作系统的用途
将底层硬件的计算能力抽取出来,向上提供一个统一的接口,这就叫做系统调用
在启动的时候需要使用文件,需要载入内存,有一个分区作为起始分区,这个分区被称为根分区
①Windows回车换行:rn也即^M$ ②Linux/Unix换行:n也即$③Mac回车:r也即^M
工作频率:cpu>寄存器>一级缓存>二级缓存>三级缓存>内存
堆(heap):存放非变量的内存数据空间 栈(stack):存放本地变量和静态变量
操作系统历史(英文版):http://www.osdata.com/kind/history.htm
Unix发展史:http://www.path8.net/tn/archives/726
转载于:https://blog.51cto.com/soysauce93/1708414
最后
以上就是勤恳香烟为你收集整理的Linux操作系统基础的全部内容,希望文章能够帮你解决Linux操作系统基础所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复