操作系统时有两个主要部分组成的: 硬件和软件. 硬件是计算机的物理设备. 软件则是使得硬件能够正常工作的程序的集合. 计算机软件分成两大类: 操作系统和应用程序. 应用程序使用计算机硬件来解决用户的问题. 操作系统则控制用户对硬件访问.
操作系统时有两个主要部分组成的: 硬件和软件. 硬件是计算机的物理设备. 软件则是使得硬件能够正常工作的程序的集合. 计算机软件分成两大类: 操作系统和应用程序. 应用程序使用计算机硬件来解决用户的问题. 操作系统则控制用户对硬件访问.
操作系统发展史
手工处理
批处理
联机批处理系统
脱机批处理系统
分时处理系统
实时处理系统
完整的 OS
Kernel + Application
狭义上的 OS: Kernel
GNU/Linux
OS 的功能
驱动程序
进程管理
安全
网络协议栈
内存管理
文件系统
GNU
源码: 编译为二进制格式
gcc, glibc, vi, Linux
Linux 发行版: 数百种之多
- RedHat
- RedHat 9.0
- RHEL: RedHat Enterprise Linux
- CentOS: Community Enterprise OS
Fedora Core: 6 个月
- Debian
- Ubuntu
- Mint
- Knopix
- Slackware
- S.u.S.E(Novel)
- SLES: Suse Linux Enterprise System
- OpenSUSE
- Gentoo
- Arch Linux
软件程序: 版本号
major(架构).minor(功能).release(bug)-compile time
major: 主版本号, 有结构性变化才更改
minor: 次版本号, 新增功能是才变化, 一般奇数表示测试版, 偶数表示开发板
release: 对次版本的修订次数或补丁包数
compile time: 编译次数
Linux 0.99, 2.2, 2.4, 2.6
- Linux 3.0, 3.2, 3.4
- Linux 4.0, 4.3
- el: Enterprise Linux
pp: 测试版
fc: fedora core
rc: 候选版本
x86_64: 64 位
GNU: vi, gcc
发行版有自己的版本号
- RHEL: 5.x, 6.x, 7.x
- Fedora 23
- Debian: 8.x
- OpenSuSE: 13.x
GPL, BSD, Apache, MIT
- GPL: General Public License
- copyright, copyleft
- LGPL: Lessor GPL
- GPLv2, GPLv3
- FSF: Ree
- BSD:
Apache: 不以原作者名义宣传代码
ASF: Apache Software Foundation
双线授权:
Community: 遵循开源协定
Enterprise: 商业授权, 附加功能
程序管理
程序组成部分
二进制程序
配置文件
库文件
帮助文件
X, Y, Z 程序包
程序包管理器: X
程序的组成文件打包成一个或有限几个文件
安装
卸载
查询
- Debian: dpkg(.deb), apt-get
- RedHat: rpm, yum -> dnf
- S.u.S.E: rpm, zypper
- Arch Linux: port
- LFS: Linux From Scratch
什么是操作系统
操作系统是计算机硬件和用户 (程序和人) 的一个接口, 它使得其他程序更加方便有效运行, 并能方便地对计算机和软件资源进行访问.
操作系统是介于计算机硬件和用户 (程序或人) 之间的接口.
操作系统是一种用来使得其他程序更加方便有效运行的程序(或一个程序集)
操作系统是通用管理程序管理着计算机系统中每个部件的活动, 并确保计算机系统中的硬件和软件资源能够更加有效地使用. 当出现资源使用冲突时, 操作系统应进行仲裁, 排除冲突.
操作系统主要目标
有效地使用硬件
容易的使用资源
操作系统自举过程
操作系统本身也是程序, 它也需要被装入内存和运行, 这个困境如何解决呢?
如果使用 ROM 技术把操作系统存储 (有制造商完成) 在内存中, 这个问题就能解决. CPU 的程序计数器可以被设置为这个 ROM 的开始处. 当计算机被加电 (Power-on Self-Test, POST) 时, CPU 从 ROM 中读取指令, 执行它们. 但这种解决方案是非常低效的, 因为内存的很大一部分需要由 ROM 构成, 而不能被其他程序使用.
在内存中很小一部分是 ROM 构成, 其中存有称为自举程序的小程序. 当计算机被加电时, CPU 计数器被设置为自举程序的第一条指令, 并执行程序中的指令. 这个程序唯一的职责就是把操作系统本身 (需要启动计算机的那部分) 装入 RAM 内存. 当装入完成后, CPU 中的程序计数器就被设置为 RAM 中操作系统的第一条指令, 操作系统就被执行.
自举过程
自举程序运行
操作系统被载入
操作系统运行
操作系统分类
批处理操作系统
批处理操作系统设计于 20 世纪 50 年代, 目的是为了控制大型计算机. 但是, 计算机十分庞大. 用穿孔卡片进行输入数据, 用行式打印机输出结果, 用磁带设备作为辅助存储介质.
每个运行的程序发出作业请求. 穿孔卡有操作员送入计算机. 如果程序运行成功, 打印结果将传给程序员, 如果不成功, 则报错.
分时系统
为了有效使用计算机资源, 多道程序的概念被引入. 它可以将多个作业同时装入内存, 并且仅当该资源可用时分配给需要他的作业. 例如, 当一个程序正使用输入 / 输出设备时, CPU 则处于空闲状态, 并可以供其他程序使用.
多道程序带来了分时的概念: 资源可以被不同的作业分享. 每个作业可以分到一段时间来使用资源. 因为计算机裕兴速度很快, 所以分时系统对用户是隐藏的, 每个用户都感觉整个系统为自己服务.
最终利用分时技术的多道程序极大地改进了计算机的使用效率. 但是, 它们需要有一个更加复杂的操作系统, 它必须可以调度: 给不同的程序分配资源, 并决定哪一个程序什么时候使用哪一种资源. 用户也可以直接与系统进行交互, 而不必通过操作员. 一个新的属于不也随之产生: 进程. 一个作业是一个要运行的程序, 一个进程则是在内存中等待分配资源的程序.
个人系统
并行系统
分布式系统
实时系统
常见操作系统产品
桌面版操作系统
Windows
Ubuntu
手机版操作系统
iso
Android
服务器操作系统
- Windows
- Linux
- Unix
Unix 操作系统
UNIX 是多用户, 多道程序, 可移植的操作系统, 它被设计来方便编程, 文本处理, 通信.
UNIX 简史
1965 年, Bell Labs,GE(General Electric)和 MIT 合作的计划要建立一套 multi-user,multi-processor,multi-level 的 MULTICS 操作系统. 后来工作进度太慢而被停了下来.
Ken Thompson 有一个 "Space Travel" 的程序在 GE-635 的机器上跑, 但是反应非常慢, 正巧被他发现了一部被闲置的 PDP-7, 使用汇编语言将此程序移植到 PDP-7 上.
1971 年, Ken Thompson 申请到了一台 PDP-11/24 的机器. 于是 Unix 第一版出来了. 这台电脑只有 24KB 的物理内存和 500K 磁盘空间. Unix 占用了 12KB 的内存, 剩下的一半内存可以支持两用户进行 Space Travel 的游戏.
1973 年, 用汇编语言做移植太困难想用高级语言来完成第三版, 开始尝试用 Fortran, 可是失败了. 后来用 BCPL 的语言开发形成 B 语言, 后来 Dennis Ritchie 觉得 B 语言还是不能满足要求, 于是就改良了 B 语言为 C 语言. 于是用 C 语言重写了 Unix 的第三版内核.
1974 年 7 月的 Unix 第五版就以 "仅用于教育目的" 的协议, 提供给各大学作为教学之用.
20 世纪 70 年代, AT&T 公司开始注意到 Unix 所带来的商业价值. 公司的律师开始寻找一些手段来保护 Unix, 并让其成为一种商业机密. 从 1979 年 Unix System V7 开始, Unix 的许可证开始禁止大学使用 Unix 的源码, 包括在授课中学习.
1978 年, 第一家以商业方式包装发行的 Unix 系统, SCO 公司. 卖第一个商用 C 编译器.
1981 年, Microsoft 公司成立, 销售 XENIC Unix.
SCP:QDOS(Quick and Dirty Operating System)
DOS 2.0 胜过 CP/M
1990: 在 Unix 平台上开发各种程序
Ken Thompson 在 Berkeley 大学的任教, Berkeley Bill Joy 组织 BSRG 工作小组在 1977 年开发了 BSD(Berkeley System Distribution).
1980 年, 美国国防部高级研究计划署 DARPA,TCP/IP(在 VAX,VMS 操作系统),1983 年, 在 BSD 结合正式使用 TCP/IP.
1980 年, 两个最主要的 Unix 的版本线, 一个是 Berkeley 的 BSD UNIX, 另一个是 AT&T 的 Unix, 在这个时候竞争最终引发了 Unix 的战争.
1982 年, Bill Joy 创建了 Sun Microsystems 公司, 开发了 Solaris OS.
AT&T 则在随后的几年中发布了 Unix System V 的第一版
1990 年, BSD 与 UNIX 完全隔离
Apple 公司: XEROX 系统: PARK 实验室(mouse, 以太网),star(图形界面)
UNIX 结构
内核, 命令解释器, 一组标准工具, 应用程序
UNIX 特性
多用户, 多任务的分时操作系统.
UNIX 的系统结构可分为三部分: 操作系统内核(是 UNIX 系统核心管理和控制中心, 在系统启动或常驻内存), 系统调用(供程序开发者开发应用程序时调用系统组件, 包括进程管理, 文件管理, 设备状态等), 应用程序(包括各种开发工具, 编译器, 网络通讯处理程序等, 所有应用程序都在 Shell 的管理和控制下为用户服务).
UNIX 系统大部分是由 C 语言编写的, 这使得系统易读, 易修改, 易移植.
UNIX 提供了丰富的, 精心挑选的系统调用, 整个系统的实现十分紧凑, 简洁.
UNIX 提供了功能强大的可编程的 Shell 语言 (外壳语言) 作为用户界面具有简洁, 高效的特点.
UNIX 系统采用树状目录结构, 具有良好的安全性, 保密性和可维护性.
UNIX 系统采用进程对换 (Swapping) 的内存管理机制和请求调页的存储方式, 实现了虚拟内存管理, 大大提高了内存的使用效率.
UNIX 系统提供多种通信机制, 如: 管道通信, 软中断通信, 消息通信, 共享存储器通信, 信号灯通信.
UNNIX 标准
UNIX 用户协会最早从 20 世纪 80 年 *** 始标准化工作, 1984 年颁布了试用标准. 后来 IEEE 为此制定了 POSIX 标准 (即 IEEE1003 标准) 国际标准名称为 ISO/IEC9945. 它通过一组最小的功能定义了在 UNIX 操作系统和应用程序之间兼容的语言接口. POSIX 是由 Richard Stallman 应 IEEE 的要求而提议的一个易于记忆的名称, 含义是 Portable Operating System Interface(可移植操作系统接口) , 而 X 表明其 API 的传承.
UNIX 发行版
- SUN:Solaris, ultrasparc
- OpenSolaris(PC)
- IBM: AIX, Powerpc
- HP: HP-UX, alpha
BSD, AIX, HP-UX 都是 license 有版权, 付费才可使用.
- BSD:FreeBSD,OpenBSD(最安全),NetBSD
- Unix:System V
Linux 操作系统
Linux 由芬兰赫尔辛基大学计算机系的林纳斯. 托瓦兹 (Linus Torvalds), 根据荷兰一所大学 Andrew 教授开发的 Minix 操作系统(便于不受 AT&T 许可协议的约束, 为教学科研提供一个操作系统. 免费给全世界的学生使用) 具有较多 UNⅨ 的特点, 但与 UNⅨ 不完全兼容. 于是在 1991 年 10 月 15 日, Linus 开发了基于 POSIX 和 UNIX 的多用户, 多任务, 支持多线程和支持多种平台的操作系统的一套完全免费使用的类 Unix 操作系统, 即 Linux 内核. 后来加入了 GNU 项目计划基于 GPL 开源协议, 命名为 GNU/Linux. 其官网地址是 http://kernel.org.
Linux 组成由 process management,timer,interrupt management,memory management,module management,VFS layer(接口),file system,device driver,inter-process communication,network management,system init 等操作系统功能的实现.
目前有许多基于 Linux kernel 开发的 Linux 发行版. 常用的有 RedHat 系列(CentOS/Fedora),Slackware(S.u.S.U),Debain(Ubuntu,mint),Arch Linux,Gentoo 等主流发行版.
日常生活中的手机, 平板电脑等系统使用的都是 Linux 系统. 全世界的绝大多数超级计算机, 股票交易, 飞行航班控制系统, 银行系统, 国内 BAT, 谷歌, 亚马逊和 Facebook 等互联网巨头都使用 Linux 来运行不同的网络和云服务等, 而且甚至还运行着核潜艇系统.
Linux 有不同的 Linux 版本, 但都使用了 Linux 内核. Linux 可安装在各种计算机硬件设备中, 比如手机, 平板电脑, 路由器, 视频游戏控制台, 台式计算机, 大型机和超级计算机.
Linux 内核提供硬件抽象层, 磁盘及文件系统控制, 多任务等功能的系统软件. 一个内核不是一套完整的操作系统. 一套基于 Linux 内核的完整操作系统叫作 Linux 操作系统, 或是 GNU/Linux. 设备驱动程序可以完全访问硬件. Linux 内的设备驱动程序可以方便地以模块化 (modularize) 的形式设置, 并在系统运行期间可直接装载或卸载.
预处理 / 编译 / 汇编 / 链接 / 执行
系统启动 = 内核 + 外壳
系统调用: 任何只有内核才能执行的操作, 通过接口的形式表现出来, 这些接口称之为系统调用
库: 把系统调用封装成更复杂的程序, 以供别人使用, 称之为库, 又称重复造轮子
so:Shared object 共享对象
DLL:Dynamic Link Libraries 动态链接库(Windows)
总线的作用: 将电气信号转换为数字信号
集成开发环境(IDE,Integrated Development Environment): 包括文本编写, gcc 编译, 库链接等
内核通过任务结构管理进程
进程: 由父进程 fork 自身而来(由父进程申请, 内核完成)
版本号
Linux 内核使用三种不同的版本编号方式.
第一种方式用于 1.0 版本之前(包括 1.0). 第一个版本是 0.01, 紧接着是 0.02,0.03,0.10,0.11,0.12,0.95,0.96,0.97,0.98,0.99 和之后的 1.0.
第二种方式用于 1.0 之后到 2.6, 数字由三部分 "A.B.C",A 代表主版本号, B 代表次主版本号, C 代表较小的末版本号. 只有在内核发生很大变化时(历史上只发生过两次, 1994 年的 1.0,1996 年的 2.0),A 才变化. 可以通过数字 B 来判断 Linux 是否稳定, 偶数的 B 代表稳定版, 奇数的 B 代表开发版. C 代表一些 bug 修复, 安全更新, 新特性和驱动的次数. 以版本 2.4.0 为例, 2 代表主版本号, 4 代表次版本号, 0 代表改动较小的末版本号. 在版本号中, 序号的第二位为偶数的版本表明这是一个可以使用的稳定版本, 如 2.2.5, 而序号的第二位为奇数的版本一般有一些新的东西加入, 是个不一定很稳定的测试版本, 如 2.3.1. 这样稳定版本来源于上一个测试版升级版本号, 而一个稳定版本发展到完全成熟后就不再发展.
第三种方式从 2004 年 2.6.0 版本开始, 使用一种 "time-based" 的方式. 3.0 版本之前, 是一种 "A.B.C.D" 的格式. 七年里, 前两个数字 A.B 即 "2.6" 保持不变, C 随着新版本的发布而增加, D 代表一些 bug 修复, 安全更新, 添加新特性和驱动的次数. 3.0 版本之后是 "A.B.C" 格式, B 随着新版本的发布而增加, C 代表一些 bug 修复, 安全更新, 新特性和驱动的次数. 第三种方式中不再使用偶数代表稳定版, 奇数代表开发版这样的命名方式. 举个例子: 3.7.0 代表的不是开发版, 而是稳定版!
Linux 发展简史
Linux 最早是由芬兰人 Linus Torvalds 设计的. 当时由于 UNⅨ 的商业化, Andrew Tannebaum 教授开发了 Minix 操作系统以便于不受 AT&T 许可协议的约束, 为教学科研提供一个操作系统. 当时发布在 Internet 上, 免费给全世界的学生使用. Minix 具有较多 UNⅨ 的特点, 但与 UNⅨ 不完全兼容. 1991 年 10 月 5 日, Linus 为了给 Minix 用户设计一个比较有效的 UNⅨ PC 版本, 自己动手写了一个 "类 Minix" 的操作系统. 整个故事从两个在终端上打印 AAAA... 和 BBBB... 的进程开始的, 当时最初的内核版本是 0.02.Linus Torvalds 将它发到了 Minix 新闻组, 很快就得到了反应. Linus Torvalds 在这种简单的任务切换机制上进行扩展, 并在很多热心支持者的帮助下开发和推出了 Linux 的第一个稳定的工作版本. 1991 年 11 月, Linux0.10 版本推出, 0.11 版本随后在 1991 年 12 月推出, 当时将它发布在 Internet 上, 免费供人们使用. 当 Linux 非常接近于一种可靠的 / 稳定的系统时, Linus 决定将 0.13 版本称为 0.95 版本. 1994 年 3 月, 正式的 Linux 1.0 出现了, 这差不多是一种正式的独立宣言. 截至那时为止, 它的用户基数已经发展得很大, 而且 Linux 的核心开发队伍也建立起来了.
Linux 操作系统的诞生, 发展和成长过程始终依赖着五个重要支柱: UNIX 操作系统, MINIX 操作系统, GNU 计划, POSIX 标准和 Internet 网络.
1987 年, 荷兰阿姆斯特丹的 Vrije 大学计算机科学系的 Andrew 教授编写 Minix 系统用于教学用途. 全部的程序码共约 12,000 行.
1991 年的 10 月 5 日, 林纳斯. 托瓦兹正式向外宣布 Linux 内核的诞生
1993 年, 发布了 Linux 0.99, 代码大约有十万行, 用户大约有 10 万左右.
1994 年 3 月, Linux1.0 发布, 代码量 17 万行, 当时是按照完全自由免费的协议发布, 随后正式采用 GPL 协议.
1995 年 1 月, Bob Young 创办了 RedHat, 以 GNU/Linux 为核心, 集成了 400 多个源代码开放的程序模块, 搞出了一种冠以品牌的 Linux, 即 RedHat Linux, 称为 Linux 发行版, 在市场上出售. 这在经营模式上是一种创举.
1996 年 6 月, Linux 2.0 内核发布, 此内核有大约 40 万行代码, 并可以支持多个处理器. 此时的 Linux 已经进入了实用阶段, 全球大约有 350 万人使用.
1998 年 2 月, 以 Eric Raymond 为首的一批年轻的 "老牛羚骨干分子" 终于认识到 GNU/Linux 体系的产业化道路的本质, 并非是什么自由哲学, 而是市场竞争的驱动, 创办了 "Open Source Intiative"(开放源代码促进会)"复兴" 的大旗, 在互联网世界里展开了一场历史性的 Linux 产业化运动.
2001 年 1 月, Linux 2.4 发布, 它进一步地提升了 SMP 系统的扩展性, 同时它也集成了很多用于支持桌面系统的特性: USB,PC 卡 (PCMCIA) 的支持, 内置的即插即用, 等等功能.
2003 年 12 月, Linux 2.6 版内核发布
- Larray Wall: diff, patch(协同开发工具)
- GNU/Linux
GNU 是 "GNU is Not Unix" 的递归缩写, Richard Stallman 在 1983 年 9 月 27 日公开发起创建一套完全自由的操作系统. UNIX 是一种广泛使用的商业操作系统的名称. 由于 GNU 将要实现 UNIX 系统的接口标准, 因此 GNU 计划可以分别开发不同的操作系统部件. GNU 计划采用了部分当时已经可自由使用的软件, 例如 TeX 排版系统, X Windows 视窗系统, GCC 编译器, Emac 和 nano 文本编辑器等.
FSF: (Free Software Foundation, 自由软件基金会)1985 年 Richard Stallman 创立了来为 GNU 计划提供技术, 法律以及财政支持.
自由软件是什么?"自由软件" 是权利问题, 不是价格问题. 要理解这个概念, 自由应该是 "言论自由" 中的 "自由", 而不是 "免费啤酒" 中的 "免费". 自由软件关乎使用者运行, 复制, 发布, 研究, 修改和改进该软件的自由.
自由软件自由赋予软件使用者四种自由:
不论目的为何, 有运行该软件的自由.
有研究该软件如何运行, 以及按需改写该软件的自由. 取得该软件的源代码为达成此目的之前提.
有重新发布拷贝的自由.
有改进该软件, 以及向公众发布改进的自由, 这样这个社群都可受惠. 取得该软件源码为达成此目的之前提.
自由: freedom, 免费: free
Free 含义:
- Free use;
- Free study and modify;
- Free distribute;
- Free create derivative;
GNU 通用公共许可协议(GNU General Public License, 简称: GNU GPL,GPL)
自由软件许可协议条款, 保证终端用户有使用, 学习, 修改, 发布和重新发布自由软件的源代码.
GPL 协定授予程序接受人以下权利, 或称 "自由", 或称 "copyleft":
以任何目的运行此程序的自由;
再发行复制件的自由;
改进此程序, 并公开发布改进的自由;
GPL 开源许可协议最大的 4 个特点
允许把软件复制到任何人的电脑中, 并且不限制复制的数量.
允许软件以各种形式进行传播.
允许在各种媒介上出售该软件, 但必须提前让买家知道这个软件是可以免费获得的; 因此, 一般来讲, 开源软件都是通过为用户提供有偿服务的形式来盈利的.
允许开发人员增加或删除软件的功能, 但软件修改后必须依然基于 GPL 许可协议授权.
GPL 与 BSD 比较
- Apache Licence 2.0(Apache License, Version 2.0,Apache License, Version 1.1,Apache License, Version 1.0)
- ASF: Apache Software Foundation(Hadoop, spark)
- RHEL:5.x, 6.x, 7.x
- Fedora 23
- Debian: 8.x
- OpeSuSE: 13.x
- mint(笔记本)
- knopix(安全)
- SLES
- OpenSUSE(13.x 版本)
- ANSI,ISO 90 -ansi, -std=c89
- ISO 90 -std=c99
- GNU 99 -std=gnu99
- rpm
- Ubuntu(桌面开发系统)
- CentOS(服务器系统)
- RedHat: rpm, yum => dnf
- S.u.S.E: rpm, zypper
- Debian: deb(.dpkg), apt-get
- Arch Linux: pacman
- Gentoo: portage
- # uname -a
- # ls -ld /lib64
- # cat /etc/RedHat-release 操作系统
- # uname -r 内核版本
- # uname -r 查看系统位数
- RH401
- RH423 (ldap)
- RH442
来源: http://www.bubuko.com/infodetail-2987861.html