一、认识操作系统
(一)什么是操作系统?
OS: Operating System,通用目的的软件程序
通用目的:与硬件打交道的软件模块
(二)操作系统的作用
- 硬件驱动
- 进程管理
- 内存管理
- 网络管理
- 安全管理
- 文件管理
(三)操作系统的分类
- 服务器OS
- RHEL
- CentOS
- Windows Server
- AIX
- 桌面OS
- Windows 10
- Windows 7
- Mac OS
- Fedora
- 移动设备OS
- Andriod
- iOS
- YunOS
(四)服务器三大操作系统
服务器操作系统支持更多的用户连接
- Windows:Windows Server
- Linux:GNU/Linux
- Unix:1969年Ken Thompson
- System: Bell Lab
- AIX (IBM)
- Solaris (SUN)
- HP-UX (HP)
- BSD: (BSRG)Berkeley System Distribution
- NetBSD
- OpenBSD
- FreeBSD
- System: Bell Lab
(五)服务器操作系统市场
二、操作系统相关概念
(一)ABI
Application Binary Interface,应用程序二进制接口
ABI描述了应用程序与OS之间的底层接口,允许编译好的目标代码在使用兼容ABI的系统中无需改动就能运行
(二)API
Application Programming Interface,应用编程接口
API定义了源代码和库之间的接口,因此同样的源代码可以在支持这个API的任何系统中编译
(三)POSIX
Portable Operating System Interface
IEEE在操作系统上定义的一系列API标准
POSIX兼容的程序可在其它POSIX操作系统编译执行
(四)运行程序格式
- Windows
- EXE
- .dll(dynamic link library):动态链接库
- .lib:静态库
- Linux
- ELF
- .so(shared object):共享对象
- .a:静态库
(五)用户空间和内核空间
1、用户空间:User space
用户程序的运行空间。为了安全,它们是隔离的,即使用户的程序崩溃,内核也不受影响
只能执行简单的运算,不能直接调用系统资源,必须通过系统接口( system call),才能向内核发出指令
2、内核空间:Kernel space
是Linux 内核的运行空间
可以执行任意命令,调用系统的一切资源
3、上下文切换:Context exchange
CPU来回切换状态,需要不停的保留刚刚的状态
状态切换:需要花费巨大成本
4、举例说明
str = "www.magedu.com" // 用户空间
x = x + 100 // 用户空间
file.write(str) // 切换到内核空间
y = x + 200 // 切换回用户空间
第一行和第二行都是简单的赋值运算,在User space 执行。第三行需要写入文件,就要切换到Kernel space,因为用户不能直接写文件,必须通过内核安排。第四行又是赋值运算,就切换回User space
5、一幅图说清用户空间和内核空间的关系
(六)编程语言
- 低级语言
- 机器语言:0和1
- 汇编语言:和机器语言一一对应,与硬件相关的特有代码、驱动程序开发
- 中级语言
- C语言
- 系统级应用、驱动程序
- 高级语言
- java,Objective-C,C#,python,php,go
- 应用级程序开发
三、操作系统发展史
(一)兼容分时系统Multics
为了进一步强化大型主机的功能,让主机的资源可以提供更多的使用者来利用,所以在1964年, 由贝尔实验室(Bell)、麻省理工学院(MIT)及奇异公司(GE美国通用电气公司)共同发起了Multics(多路信息计算系统)的计划, Multics计划的目的是让大型主机可以同时支持300个以上的终端机连线使用。不过,到了1969年前后,由于计划进度缓慢,资金也短缺,所以该计划虽然继续在研究,但最终贝尔实验室还是选择了退出
(二)Ken Thompson:一切为了游戏
1966年从加州大学伯克利分校毕业的Ken Thompson加入了贝尔实验室。参与了Multics系统的研发。他基于Multics开发了“star travel”游戏。不幸的是,1969年由于贝尔实验室退出Multics项目,这同时意味着Ken将没有机器可以再玩这个游戏了。面对此情此景,Ken作为一个创造者的本性立即体现了出来,于是他决定自己写一个操作系统来满足他玩游戏的需要,Ken找到了一台废弃已久的老式PDP-7,并在这台机器上重写了他的游戏。在这个过程中,Ken有了一个主意,要开发一个全新的操作系统。利用PDP-7上的汇编语言,Ken只花了一个月就编写完了操作系统的内核,在这个一个月中,他一周一个内核,一个文件系统,一个编辑器和一个编译程序的完成
(三)Unix发展史
- 1965前后Multics
- 贝尔实验室,麻省理工,通用电气发起
- 1969 Unix雏形UNICS
- Ken Thompson 汇编语言B语言
- 1973 正式命名为Unix
- Dennis Ritchie C语言
- 1977 BSD
- Berkeley Software Distribution 伯克利大学
- 1979 System V架构版权声明
- HP-UNIX IBM AIX “不对学生提供源码” 收回版权
- 1984年Minix操作系统
- Andrew S. Tanenbaum荷兰阿姆斯特丹自由大学计算机科学系
(四)GNU
- GNU(GNU is Not Unix)
- 1984年由Richard Stallman发起并创建
- 目标是编写大量兼容于Unix系统的自由软件
- 官方网站:http://www.gnu.org
- GPL(GNU General Public License)
- 自由软件基金会:Free Software Foundation
- 允许用户任意复制、传递、修改及再发布
- 基于自由软件修改再次发布的软件,仍需遵守GPL
- LGPL(Lesser General Public License)
- LGPL相对于GPL较为宽松,允许不公开全部源代码
- GNU操作系统:Hurd Hird of Unix-Replacing Daemons
GPL缺点:
(1)具有传染性
(2)使用开源代码开发后的产品必须将所有源代码公开
(五)Linux起源
1991年的10月5日,Torvalds在comp.os.minix新闻组
上发布消息,正式向外宣布他自行编写的完全自由免费
的内核诞生(Freeminix-like kernel sources for 386-
AT)———FREAX
英文含义是怪诞的、怪物、异想天开
- 类Unix的内核,在GPL下发布
- 官网:www.kernel.org
- Linux操作系统:
- 完整的类UNIX操作系统
- Linux内核+ GNU工具
- 如:CentOS,Ubuntu,Android
(六)Linux团队
四、Unix、Linux、GNU三者的关系
(一)Unix
UNIX操作系统(尤尼斯),是一个强大的多用户、多任务操作系统,支持多种处理器架构,按照操作系统的分类,属于分时操作系统,最早由KenThompson、Dennis Ritchie和Douglas McIlroy于1969年在AT&T的贝尔实验室开发。目前它的商标权由国际开放标准组织所拥有,只有符合单一UNIX规范的UNIX系统才能使用UNIX这个名称,否则只能称为类UNIX(UNIX-like)。
举例:AIX(Advanced Interactive eXecutive)是IBM开发的一套UNIX操作系统。
(二)Linux
Linux是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX和UNIX的多用户、多任务、支持多线程和多CPU的操作系统。它能运行主要的UNIX工具软件、应用程序和网络协议。它支持32位和64位硬件。Linux继承了Unix以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。
通常说以Linux作为系统内容的操作系统为Linux操作系统,使用Linux内核和GNU开源软件的操作系统为GNU/Linux
(三)GNU
GNU计划,又称革奴计划,是由Richard Stallman在1983年9月27日公开发起的。它的目标是创建一套完全自由的操作系统。Richard Stallman最早是在net.unix-wizards新闻组上公布该消息,并附带《GNU宣言》等解释为何发起该计划的文章,其中一个理由就是要”重现当年软件界合作互助的团结精神”。为保证GNU软件可以自由地”使用、复制、修改和发布”,所有GNU软件都有一份在禁止其他人添加任何限制的情况下授权所有权利给任何人的协议条款,GNU通用公共许可证(GNU General Public License,GPL)。即”反版权”(或称Copyleft)概念。
五、Linux内核版本命名规则
- 命名规则由三部分组成
- 内核版本号
- 主版本号
- 末版本号
- 编译版本号
- 厂商版本号
- 内核版本号
六、Linux发行版
(一)主要发行版
- slackware分支
- SUSE Linux Enterprise Server (SLES)
- OpenSuse桌面
- debian分支
- ubuntu
- mint
- redhat分支
- RHEL: RedHat Enterprise Linux
- 每18个月发行一个新版本
- CentOS:兼容RHEL的格式
- 中标麒麟:中标软件
- Fedora:每6个月发行一个新版本
- LFS
- Linux From scratch:自制Linux
- Android
- kernel+busybox(工具集)+java虚拟机
(二)发行版维护者
发行版名称 | 发布者 | Logo标识 |
---|---|---|
RedHatEnterprise Linux 7.3 | Red Hat公司 | |
SUSE Linux Enterprise Server 12 SP2 | Novell公司 | |
DebianLinux9 | Debian维护社区 | |
Android 8.0 | Google公司 |
(三)RedHat发行版历史
RedHat版本 | 发布时间 | 备注 |
---|---|---|
Red Hat Linux 1.0 (Mother’s Day) | 1994年11月03日 | |
Red Hat Linux 2.0 | 1995年09月20日 | |
Red Hat Linux 3.0 (Picasso) | 1996年05月01日 | |
Red Hat Linux 4.0 (Colgate) | 1996年10月08日 | |
Red Hat Linux 5.0 (Hurricane) | 1997年12月01日 | |
Red Hat Linux 6.0 (Hedwig) | 1999年04月26日 | |
Red Hat Linux 6.2 (Zoot) | 2000年04月03日 | Red Hat Linux 6.2E |
Red Hat Linux 7.0 (Guinness) | 2000年03月27日 | |
Red Hat Linux 7.2 (Enigma) | 2001年10月22日 | Red Hat Enterprise Linux 2 |
Red Hat Linux 8.0 (Psyche) | 2002年09月30日 | |
Red Hat Linux 9.0 (Shrike) | 2003年03月31日 | |
Red Hat Enterprise Linux 3.0(Taroon) | 2003年10月22日 | Fedora 1 (Yarrow) |
Red Hat Enterprise Linux 4.0 | 2005年02月15日 | |
Red Hat Enterprise Linux 5.0(Tikanga) | 2007年03月14日 | |
Red Hat Enterprise Linux 6.0(Santiago) | 2010年11月10日 | |
Red Hat Enterprise Linux 7.0(Maipo) | 2014年06月10日 |
(四)获取发行版 CentOS
https://wiki.centos.org/Download
http://mirrors.aliyun.com
http://mirrors.sohu.com
http://mirrors.163.com
七、开源
(一)什么是开源?
开源:Open Source
- 软件和源代码提供给所有人
- 自由分发软件和源代码
- 能够修改和创建衍生作品
注意
开源:自由 Freedom
开源不等于免费!
(二)开源协议
- 世界上的开源许可证,大概有上百种
- GPLv2, GPLv3, LGPL(lesser) :通用公共许可 copyleft
- Apache: apache
- BSD: bsd
- Mozilla
- Apache
- MIT
(三)常见开源协议比较
八、Linux哲学思想
1、一切皆文件(包括硬件设备)
2、Linux主要由短小,且目的单一的程序组成(所以一个命令一般只干一件事)
3、将多个短小的程序串联起来可以完成复杂的任务
4、尽量避免捕获用户接口(尽量避免跟用户进行接触,从发起->回车,全自动,不需要用户再操作)
5、通过文件保存软件的配置信息(只需要一个简单的文本编辑器就可以操作整个系统)
文章归类:[I. Basics] 第1章 Linux初体验
文章标题:[I. Basics] 1.2 操作系统基础
作者:林永峰
撰写日期:2018年6月16日
遵循的开源协议:GPL
-EOF-