前言
最近在刚从实习的公司回到学校,准备写毕业论文,慢慢的把以前学过的东西进行总结。
之前一直使用的是博客园记笔记,使用的是富文本编辑器。但是发现感觉格式总是不好调。
所以现在想把之前写的笔记用Markdown来重新编写过,也是对笔记的内容进行复习了。
一、Linux概述
1.1 Unix历史
我们要讲的不是Linux吗?怎么蹦出个Unix,虽然它和Linux长得有点像。因为它们确实有很深的渊源!
Unix 是在1969年美国贝尔实验室的 肯.汤普森开发出来的一款操作系统,什么是操作系统?
大家正在玩的 Windows 和 Max OS就是两个操作系统。操作系统是用户和计算机的接口,同时也是计算机硬件和应用程序的接口,
也就是说我们和计算机打交道以及计算机底层硬件和应用程序打交道都是通过操作系统。如下所示:
而我们所说的Unix也是一个操作系统,其源代码大部分都是用C语言写的。它是一个强大的多用户、多任务操作系统,
而且支持多种处理器架构。在1984年,Unix用户协会颁发了使用标准。
后来IEEE为此制定了POSIX标准(即IEEE1003标准)国际标准名称为ISO/IEC9945,它通过一组最小的功能定义了
在UNIX操作系统和应用程序之间兼容的语言接口。这个标准很重要,后面很多系统的开发都是遵循这个标准来的。
虽然Unix系统这么好用,但是很不幸,它是一个对源代码实行知识产权保护的传统商业软件,也就是说Unix系统
源代码不开源,而且Unix系统也是一个收费软件。这也直接导致了Linux系统的诞生。
1.2 Linux历史
UNIX 最初免费发布,在1990年,UNIX 在服务器市场尤其是大学校园成为主流操作系统,许多校园都有 UNIX 主机,
当然还包括一些研究它的计算机系的学生。这些学生都渴望能在自己的电脑上运行 UNIX 。。不幸的是,从那时候开始,
UNIX 开始变得商业化,它的价格也变得非常昂贵。而唯一低廉的选择就是 MINIX ,这是一个功能有限的类似 UNIX 的
操作系统,作者 Andrew Tanebaum 开发它的目的是用于教学。
1991 年 10 月,Linus Torvalds(Linux 之父)在赫尔辛基大学接触 UNIX ,他希望能在自己的电脑上运行一个类似的操作系统。
可是 UNIX 的商业版本非常昂贵,于是他从 MINIX 开始入手,而 Linus Torvalds 对Minix不是很满意,于是决定自己编写软件。
他以学生时代熟悉的Unix作为原型,在一台Intel 386 PC上开始了他的工作。他的进展很快,受工作成绩的鼓舞,他将这项成果
通过互连网与其他同学共享,主要用于学术领域。他第一次发行的版本很快吸引了一些黑客。尽管最初的 Linux 并没有多少用处,
但由于一些黑客的加入使它很快就具有了许多吸引人的特性,甚至一些对操作系统开发不感兴趣的人也开始关注它。每当出现新
问题时,有人会立刻找到解决办法并加入其中,很快的, Linux成为了一个操作系统。得注意的是Linux并没有包括Unix源码,
它是按照公开的POSIX标准重新编写的。Linux大量使用了由麻省剑桥免费软件基金的GNU软件,同时Linux自身也是用它们构造而成。
1.3 Unix与Linux的区别
Linux和UNIX的最大的区别是,前者是开放源代码的*软件,而后者是对源代码实行知识产权保护的传统商业软件。
这应该是他们最大的不同,这种不同体现在用户对前者有很高的自主权,而对后者却只能去被动的适应;这种不同还
表现在前者的开发是处在一个完全开放的环境之中,而后者的开发完全是处在一个黑箱之中,只有相关的开发人员才能 够接触的产品的原型 。
具体区别如下:
- UNIX系统大多是与硬件配套的,而Linux则可运行在多种硬件平台上.
- UNIX是商业软件,收费,而Linux是*软件,免费、公开源代码的.
- Linux商业化的有RedHat Linux 、SuSe Linux、slakeware Linux、国内的红旗等,还有Turbo Linux.
- Unix主要有Sun 的Solaris、IBM的AIX, HP的HP-UX,以及x86平台的的SCO Unix/Unixware.
二、Linux作用
2.1 Unix/Linux能做什么?
服务器:Web服务器、Mail服务器、Database服务器以及做程序开发等。
2.2 哪些人要学习Unix/Linux?
Unix/Linux管理员,oracle管理员,网络工程师,程序开发者等等。
2.3 Unix/Linux的发展史?
上面已经简单的介绍了一下,详细的可以查看:https://blog.****.net/acmen99/article/details/51154451
2.4 为什么Unix/Linux能做服务器呢?
你如何选择系统?按照谁更方便满足用户的需求来选择
- windows:个人用户平台优化,非常容易满足个人的需求,比如上网,聊天,聊QQ等。
- unix:企业级用户平台优化,做服务器,163,百度,淘宝
做服务器需要达到的要求:
- 安全性,比如银行系统
- 稳定性高(作为服务器一旦开机之后就不要随意当机的),比如说电信,中国移动
- 高效性(访问网站的效率)
如果是window是很难这些要求的,所以一般企业级用户会选择unix和liunx。
对于我们作为应用程序开发者来选择OS:开发的时候可能会用到window或者unix,
但是在部署的时候大多数都是unix.所以就需要对unix有一定的了解。
三、硬件环境和软件环境
3.1 硬件环境
- 输入设备(Input Devices),输出设备(Output Devices),随机存取存储器(RAM),*处理器(CPU),I/O设备,
硬盘(Hard Disk)等等。 - 输入设备包括键盘、鼠标、手写笔等等。
- 输出设备包括显示器、打印机、磁带、硬盘等等。
3.2 软件环境
- 软件分为操作系统和应用软件
- 从用户和为用户提供服务的角度分为客户端和服务器端。
四、Unix、Linux操作系统简介
4.1 Kernel(内核)
- 管理硬件
- 管理内存:内存分配
- 管理进程:进程调度。
- 控制系统程序和系统硬件
- 管理文件系统:真正创建和删除文件的,用户只是发出命令。
- 管理交换空间(虚拟内存),守护进程(精灵),文件系统。
swap space:(交换分区/空间)当系统的物理内存不够用的时候, 就需要将物理内存中的一部分空间释放出来,
以供当前运行的程序使用那些被释放的空间可能来自一些很长时间没有什么操作的程序,这些被释放的空间被临时
保存到Swap空间中,等到那些程序要运行时,再从Swap中恢复保存的数据到内存中。内核不断在交换空间和实际
的物理内存之间反复交换虚拟内存存储单元中的内容。这使得系统以为它拥有比物理内存更多的可用内存。
deamon:(精灵进程、守护进程、后台进程)在操作系统中,一般系统的服务都是以后台进程的方式存在,而且
都会常驻系统中,直到关机才结束,这类服务称Deamon。
4.2 shell
Shell是用户和操作系统内核进行通讯的桥梁,扮演着解释器或翻译器的角色。
定义:充当了翻译者和解释者。 把人能够识别的高级语言解释成机器语言, 把机器语言翻译成高级语言。
Shell主要有一下几种,其中bash是Unix/Linux操作系统中默认的Shell。
- Bourne Shell (sh)
Bourne Shell是Stephen Bourne为AT&T Unix编写的Shell工具。
最早的比较出名是Unix Shell
一个新的版本是Bourne-Again Shell - Korn Shell (ksh)
- C shell(csh)
Sun公司的创始人,Vi编辑器的作者Bill Joy在加利福尼亚大学的伯克利分校开发出来的,作为BSD Unix的默认Shell存在的。
C Shell具有历史记录功能,所有的使用过的命令都会保存下来,可以随时调用处理重新执行。
C Shell有自己的语法规则,类似于C语言。在语法上与Bourne Shell不兼容。
C Shell有一个增强的并且完全兼容的新的Shell,tcsh。
4.3 FileSystem(文件系统)
solaris操作系统的文件系统:
- /
/” 根目录是Linux/Unix文件系统的最*的目录。对于Unix系统来说该目录还用来存放系统的补丁文件。 - /opt
“/opt” 【Optional Application Software Packages】存放第三方工具或者是应用程序的目录。 - /etc
“/etc” 【Etcetra Directory 】存放和系统相关的配置文件的目录。 - /dev
“/dev” 【Devices】存放设备文件的目录。网卡例外,没有设备文件。 - /usr
“/usr” 【Unix System Resource】Unix系统资源,存放系统中所有用户都会使用的命令,文档以及开发库。 - /kernel
“/kernel” 在Linux中是“/boot”,存放内核程序。 - /var
“/var” 【Variable】存放的是管理员所使用的一些与系统运行过程相关特殊功能。比如操作系统的日志等等。 - /home
“/home” 系统默认的用户的主目录,root用户除外。
CentOS目录结构详解:https://www.linuxidc.com/Linux/2015-03/115440.htm