学习linux有感
1.多人多工的环境
后台环境的隔离很重要,但是内存、硬盘、程序都是公共资源,可以不隔离,但是会有使用上的限制(quota)
2.具有优秀的系统思想。
2.1账号
2.2权限(资源)
2.3系统出现问题,很可能是内部的原因,而不是外部攻击的原因。例子:SElinux
2.4程序比人可靠。例子:SELinux
2.5程序升级。兼容历史版本,并给出提示。例子:开机启动的方式,chckconfig和新的systemctl
2.6多样化的服务启动方式,而没有要求统一方式
2.7能分则分:配置文件分开写,这样配置文件不会太臃肿,便于管理
2.8逻辑与实体的分离:例子:硬盘的使用:挂载点、lvm
2.9server与client的分离,client与client的分离。例子:X Server、X Client
3.0核心采用模块化编程。例子:加载驱动
3.1代码与数据的分离,代码可以统一,数据没有必要统一放在一个地方。举例: /home
3桌面采用了显示引擎
引擎是一种从具体中抽象出来的逻辑,是与业务数据相分离的技术。
4.建站容易、维护难、除错更难
5.cpu分算数逻辑单元、控制单元。可以类比:干活的和领导的角色。
6.有系统帮助文档。举例:man命令
7.可以遵循规范,但是没有必要强制性统一。举例:目录规范FHS。其实FHS只规定了/,/var,/usr三层,但是linux的目录不止这三个。而且每个linux分支的目录还不一样。
8.锁机制。举例:/var/lock/
9.队列。举例:/var/spool/
10日志。举例:/var/log/
11.同一个目录下的文件名的唯一性。启发了zookeeper
12.索引式文件系统,方便文件一次性读取,比FAT优越。
13.分组的概念。比如:blocks分组,用户分组
14.懒人原则。传统观念认为:土地不经历开荒是不能用的,硬盘不格式化是不能用的,人不经历练是不能成才的。比如ext文件系统家族。但是xfs系统,却是等到用到时才去开垦,所以效能上更好一些。
15.先记录日志,在保存数据。举例:日志式文件系统、Mysql的binlog
16.在系统管理方面,有一个中心很有必要的。比如:VFS,引擎,nacos
17.通过配置文件进行配置
18.如果某个组件成为瓶颈,可以把它去掉。cpu的北桥就被去掉了。
19.如果加一层不够的话,那就再加一层。从硬件到应用软件中间就加了许多层,有的是为了提供统一的接口,有的是为了兼容系统等等。
20.网卡,硬盘、显卡、内存等都设计成可插拔的方式。软件系统可以参考这种设计模式(策略模式)
21.驱动的实现是由厂家去实现,操作系统提供接口的方式。
22.兴趣才是原动力。比如linux的诞生。
23.开源精神本质是为了让自己的代码功力得到提升,进而促进行业的发展。
24.Minix,Unix这些操作系统一开始都是为了满足自己的使用。所以自私和公共利益是不矛盾的,是可以实现最终一致性的。
25.托瓦兹刚开始的时候具有务实的态度:先求有且能跑, 再求进一步改良。
26.山不向我靠过来,我就向山靠过去。托瓦兹为了让在Unix上运行的软件能够在Linux上运行,修改了Linux的源代码,遵循POSIX规范。
27.不要害怕不统一,大家都遵守规范就可以。Linux这么多发行版,并没有阻碍其发展,反而促进了其发展。 28.使用虚拟化技术进行逻辑分割。逻辑隔离也能做到隔离,而且能够做到效率的提升。
29.所有的程序或系统设备都是档案。概念的统一能够简化系统设计。
30.Linux的文件系统使用了分组、再分组、索引、映射的概念来设计。
31.规划在系统设计中也是很重要的,前提是小范围的。硬盘在使用之前先规划,再使用。
32.日志也可以起到保存数据一致性的作用。比如日志文件系统ext2/3/4、binlog等。
33.文件系统讲的就是怎么利用接入并利用硬盘资源,使用到了分割、统计、提供抽象层。这样用户在和硬盘做对接的时候,他就不需要关心硬盘具体是怎么使用的了。这种思想在工作中应用的也很多。