操作系统

体系结构
- 控制器:CPU,读取系统指令
- 运算器:CPU,运算
- 储存器:RAM(内部存储器:易失性存储器)
- 输入设备:输入数据
- 输出设备:显示命令执行结果
总线结构
- 地址总线:负责内存寻址
- 数据总线:负责传输数据
- 控制总线:负责控制指令
基本背景
前世
1969年,一群MIT BELL Lib 的家伙用汇编语言开发出一款收费操作系统:MULTICS
这时,一个叫Ken的同学使用MULTICS开发了一款类似雷霆战机的小游戏
后来BELL实验室暂停MUTICS项目,雷霆战机被迫中断
ken同学特别郁闷,后来上班途中偶然发现墙角一台计算机:PDP-7(当时最新是PDP-11系列)
ken同学凭借记忆和知识把MULTICS重新开发一遍,命名为unics,后来改名为UNIX
1977年,BELL 实验室重新研究unix,开发出BSD系列(freebsd openbsd netbsd),作为unix的重要分支
1984年,谭宁邦教授非常想把unix系统用以教学,于是仿照unix开发了mini unix,为Linux的出现奠基
1984年,史托曼教授开启了GNU(GNU is not unix)项目,包含GCC BASH SHELL
史托曼教授认为自己开发的软件让别人尽情使用是最大的快乐,于是GPL出现了
但是美国人咋赚钱呢,于是出现了LGPL:基于某个内核平台开发的软件可以进行销售
一个芬兰大学生,托瓦兹一天偶然得到mini unix源码,聪明的孩子修改源码得到unix-like,它把这些东西放到FTP上
于是乎参与Linux研发的团队越来越大,于1991年诞生第一个版本 linux 0.0.2
今生
Linux Distributions主要分为两大系统:
一种是使用RPM方式安装软件的系统,包括Red Hat,Fedora,SuSE等;
另一种是使用Debian的dpkg方式安装软件的系统,包括Debian,Ubuntu,B2D等。
版本
A.B.C
- A:主版本号
- B:次版本号(奇数:开发版本 偶数:发行版本)
- C:修订版本号(修订次数)
从Linux Kernel 3.0开始,已经舍弃奇数、偶数版本规划 ,新的版本采用主线版本为依据,并提供长期支持版本来加强某些功能的持续维护!
GNU
GNU是GNU is Not Unix的缩写,是个无限循环(噗),由Stallman组织!
GNU计划发起了自由软件运动,鼓励分享程序的Source code,以让更多的人可以使用,并帮助完善,最终使程序越来越壮大。
GPL
为了避免自己开发的Open Source自由软件被拿去做成专利软件,Stallman于是将GNU与FSF发展出来的软件,都挂上GPL的版权宣言。
FSF的核心观念即版权制度是促进社会进步的手段,版权本身不是自然权利
基本知识
shell
shell是一种人机交互接口,用于读取命令并与内核交互!
内核
- 进程管理
- 内存管理:为每个进程分配内存
- 文件系统:存储设备上储存数据的方式,想象一下圆形和方形的水杯,水的形状不同但实质一样
- windows:NTFS FAT32
- linux:ext3 ext4 xfs
- 网络功能:管理IP信息等
- 硬件驱动
- 安全功能
设计
- 由很多小程序组成,每一个小程序完成单一的功能,最后实现复杂功能
- 一切皆文件:所有的外围设备(硬件)或者其它程序
- 尽量避免捕获用户接口
- 配置文件保存为纯文本格式
界面
GUI:graphical user interface
- 图形界面:ctrl+alt+F7(需要安装)
- GNOME:Linux默认图形界面,由c语言开发
- KDE:由c++开发
- xface:简化的图形界面(一些ubuntu)
CLI:command line interface
- 多用户 多任务 系统,为每个用户分配一个终端
- 默认6个终端,切换方式:ctrl+alt+F1~F6
命令
- 命令提示符(prompt):[root@www ~] #
- 退出终端:exit
凭证
权限分配
用户名和密码是用户获取资源权限的凭证 UID
- 管理员:root uid(0:0:0)
- 切换用户(switch user):企业Linux不允许root用户登录
- root切换到普通用户时,不需要普通用户的密码
- 普通用户切换到root用户时,需要输入root用户的密码
- su user/root
- exit
3A认证
- 认证机制:authentication
- 密码认证:
- 1、符合复杂性要求
- 2、密码长度要求(>7)
- 3、不要使用易记的密码
- 4、定期更改密码
- 5、重复使用密码的时间要长
- 授权机制:authorization
- 审计机制:audition(日志) 监督
登录信息
登录信息记录在/etc/issue
命令
选项
- 命令字 [选项] [参数]
- 命令字:由实现某种功能唯一确定
- 选项:修改命令的执行方式
- 长选项:由
--
引导 ,是一个单词,多个长选项不能组合(需要多个--
分别引导) - 短选项:由
-
引导 ,是一个字符 多个短选项可组合(可由一个-
引导),并且和顺序无关
- 长选项:由
- 参数:命令作用的对象
分类
- 内部命令:shell自带的命令
- 外部命令:在Linux文件系统中存在一个应用程序提供的命令
- type命令:查看Linux命令类型
路径
- 绝对路径:从跟(/)开始的路径都是绝对路径,Linux系统只有一个根
- 相对路径:以所处的工作目录为参照点
.
代表当前路径 ,..
代表上一级路径 ,~
代表用户的宿主目录
PATH
类似于Windows,Linux中也有环境变量,变量名为PATH
查看环境变量
通过echo $PATH
可以查看当前所有的环境变量值
环境变量规则
如果一个命令在以上多个路径中存在,系统会按照从前往后的顺序查找,查找到该命令后,后面的路径不再查找(即使错误)
添加环境变量
#临时添加环境变量 export PATH=$PATH:~/w3af:~/vega #永久添加环境变量 ##编辑`/etc/profile`或`~/.bashrc`,添加以下内容 export PATH=$PATH:~/w3af:~/vega source /etc/profile |
man
调用命令帮助
- 内部命令:”help” + [command]
- 外部命令:[command] + “–help”
man手册
- man查看快捷键
上下方向键:翻行 enter:向下翻页 pagedown:向下翻页 pageup:向上翻页 /[查看字符]:从上往下查找关键字 ?[查看字符]:从下往上查看关键字 q:退出当前帮助信息 |
- man目录说明
User Commands 所有用户命令(/bin /usr/bin /usr/local/bin):binary 2 System Calls 系统调用库 不同应用调用库程序实现相同功能 3 C Library Functions 库调用 4 Devices and Special Files 设备或特殊文件 硬件设备存放在/dev/ 5 File Formats and Conventions 查看配置文件格式 6 Games et. Al. 游戏 7 Miscellanea 杂项 8 System Administration tools and Dea-mons 管理员命令 (/sbin /usr/sbin /usr/local sbin):security binary |
- man使用说明
NAME:显示命令名称及简要用法 SYNOPSIS:语法格式,可能包括一些选项的使用 DESCRIPTION:命令和命令选项的详细说明 Exit status:退出状态码 AUTHOR:作者信息 REPOPTING BUGS:发现bug时如何反馈信息 COPYRTING:该命令的版权信息 SEE ALSO:另外参照的帮助信息 OPTIONS:说明该命令每个选项的详细用法 EXAMPLES:命令的使用实例 |
- 手册目录:/usr/share/doc
date [OPTION]... [+FORMAT] date [-u|--utc|--universal] [MMDDhhmm[[CC]YY][.ss]] <>:必须使用的选项或参数 []:可以省略的选项或参数 ...:可以使用多个选项或参数 |:多选1 {}:分组,没有特殊意义 |
辅助命令
- which:查看命令所在的目录
- whatis:查看命令所在的帮助信息的目录
- 该命令在系统启动大约70分钟后会生成whatis数据库,如果时间太短该命令不会执行
- 可以使用makewhatis初始化whatis。
- 如果一个命令同时处于多个目录中,可以使用man +数字 +[命令]
- info:在线查看帮助,注重于命令的历史或版权信息等等
原创文章,作者:小嵘源码,如若转载,请注明出处:https://www.lcpttec.com/linuxbg/