Unix 操作系统内核浅析
Click here to load reader
description
Transcript of Unix 操作系统内核浅析
![Page 1: Unix 操作系统内核浅析](https://reader038.fdocuments.net/reader038/viewer/2022102504/568138b7550346895da0765b/html5/thumbnails/1.jpg)
1
智能信息处理研究中心智能信息处理研究中心(( RCIIPRCIIP))
Unix 操作系统内核浅析
潘海为
![Page 2: Unix 操作系统内核浅析](https://reader038.fdocuments.net/reader038/viewer/2022102504/568138b7550346895da0765b/html5/thumbnails/2.jpg)
2
P
a
n
Unix 历史1965 年在 ARPA 的支持下 MIT 、贝尔实验室和通用电气公司决定开发一种“公用计算服务系统”,希望能够同时支持整个波士顿所有的分时用户。该系统称作 MULTICS (MULTiplexed Information and Computing Service )
MULTICS 设计目标是:– 便利的终端使用——大量远程终端通过电话线接入计算机主机
– 高可靠的大型文件系统——大容量的用户信息共享;存储和构造层次化信息结构的能力
![Page 3: Unix 操作系统内核浅析](https://reader038.fdocuments.net/reader038/viewer/2022102504/568138b7550346895da0765b/html5/thumbnails/3.jpg)
3
P
a
n
Unix 历史 MULTICS 研制难度超出所有人的预料,长期的研制工作达不到预期目标, 1969 年 4 月贝尔实验室退出,通用电气公司也退出。最终, MIT 坚持下来, MULTICS 成功运行,成为商业产品。(通用汽车、福特、美国国家安全局等)运行MULTICS 的计算机系统在九十年代中陆续被关闭(加拿大国防部于 2000年 10月 30日 17:08)
MULTICS 的意义引入了许多现代操作系统领域概念雏形,对随后的操作系统特别是 UNIX 的成功有着巨大的影响
![Page 4: Unix 操作系统内核浅析](https://reader038.fdocuments.net/reader038/viewer/2022102504/568138b7550346895da0765b/html5/thumbnails/4.jpg)
4
P
a
n
Unix 历史小型计算机、游戏和 Unix 的成功
– 1969 年,在贝尔退出 MULTICS 研制项目后, Ken Thompson 和 Dennis M. Ritchie 在一台无人用的DEC PDP-7 上,重新摆弄原先在 MULTICS 项目上设计的“空间旅行”游戏
– 为了使游戏能够在 PDP-7 上顺利运行,他们陆续开发了浮点运算软件包、显示驱动软件,设计了文件系统、实用程序、 shell 和汇编程序
– 1970 年,在一切完成后,给新系统起了个同MULTICS 音相近的名字 UNIX
– 1973 年, UNIX 用 C 语言全部重写,自此, UNIX 诞生了
– 1977 年, Unix 被几乎完全不变的移植到非 PDP-7 机上
![Page 5: Unix 操作系统内核浅析](https://reader038.fdocuments.net/reader038/viewer/2022102504/568138b7550346895da0765b/html5/thumbnails/5.jpg)
5
P
a
n
Unix 历史
UNIX 是现代操作系统的代表。 Unix 运行时的安全性、可靠性以及强大的计算能力赢得广大用户的信赖 .
促使 UNIX 系统成功的因素:– 首先,由于 UNIX 是用 C 语言编写,因此它是可移植的, UNIX 是世界上唯一能在笔记本计算机、 PC 机、工作站直至巨型机上运行的操作系统
– 第二,系统源代码非常有效,系统容易适应特殊的需求
– 最后,也是最重要的一点,它是一个良好的、通用的、多用户、多任务、分时操作系统
![Page 6: Unix 操作系统内核浅析](https://reader038.fdocuments.net/reader038/viewer/2022102504/568138b7550346895da0765b/html5/thumbnails/6.jpg)
6
P
a
n
Unix创始人
Ken Thompson Dennis Ritchie
•1983年图灵奖•1999年美国国家技术金奖
![Page 7: Unix 操作系统内核浅析](https://reader038.fdocuments.net/reader038/viewer/2022102504/568138b7550346895da0765b/html5/thumbnails/7.jpg)
7
P
a
n
Unix创始人
![Page 8: Unix 操作系统内核浅析](https://reader038.fdocuments.net/reader038/viewer/2022102504/568138b7550346895da0765b/html5/thumbnails/8.jpg)
8
P
a
n
系统结构
![Page 9: Unix 操作系统内核浅析](https://reader038.fdocuments.net/reader038/viewer/2022102504/568138b7550346895da0765b/html5/thumbnails/9.jpg)
9
P
a
n
文件系统的树状结构
/
fsl bin etc usr unix dev
mjb maury sh date who passwd src bin tty00 tty01
cmd
date.c who.c
![Page 10: Unix 操作系统内核浅析](https://reader038.fdocuments.net/reader038/viewer/2022102504/568138b7550346895da0765b/html5/thumbnails/10.jpg)
10
P
a
n
实例$ ./copy pan.c haiwei.c
$ vi copy.c
$ (Shell) fork() exec(“vi”)
引导块 超级块 索引节点表 数据块
引导块:占据文件系统的开头,一般是一个扇区,含有被读入机器起引导或初启操作系统作用的引导代码。
![Page 11: Unix 操作系统内核浅析](https://reader038.fdocuments.net/reader038/viewer/2022102504/568138b7550346895da0765b/html5/thumbnails/11.jpg)
11
P
a
n
实例$ ./copy pan.c haiwei.c
$ vi copy.c
$ (Shell) fork() exec(“vi”)
引导块 超级块 索引节点表 数据块
超级块:描述了文件系统的状态——大小,存储了多少文件,在文件系统中何处可找到空闲空间,以及其他信息
![Page 12: Unix 操作系统内核浅析](https://reader038.fdocuments.net/reader038/viewer/2022102504/568138b7550346895da0765b/html5/thumbnails/12.jpg)
12
P
a
n
实例$ ./copy pan.c haiwei.c
$ vi copy.c
$ (Shell) fork() exec(“vi”)
引导块 超级块 索引节点表 数据块
索引节点表:是一张装有索引节点的表, namei(/usr/bin/vi) 用于生成索引节点号
![Page 13: Unix 操作系统内核浅析](https://reader038.fdocuments.net/reader038/viewer/2022102504/568138b7550346895da0765b/html5/thumbnails/13.jpg)
13
P
a
n
实例$ ./copy pan.c haiwei.c
$ vi copy.c
$ (Shell) fork() exec(“vi”)
引导块 超级块 索引节点表 数据块
数据块:包含文件数据与管理数据
![Page 14: Unix 操作系统内核浅析](https://reader038.fdocuments.net/reader038/viewer/2022102504/568138b7550346895da0765b/html5/thumbnails/14.jpg)
14
P
a
n
实例
正文区数据区栈区
$ (Shell子进程 )
copy.c
正文区数据区栈区
vi
![Page 15: Unix 操作系统内核浅析](https://reader038.fdocuments.net/reader038/viewer/2022102504/568138b7550346895da0765b/html5/thumbnails/15.jpg)
15
P
a
n
实例
正文区数据区栈区
$ (Shell子进程 )
copy.c
正文区数据区栈区
vi 进程区表
![Page 16: Unix 操作系统内核浅析](https://reader038.fdocuments.net/reader038/viewer/2022102504/568138b7550346895da0765b/html5/thumbnails/16.jpg)
16
P
a
n
实例
正文区 I数据区 I栈区 I
vi-1 进程区表
正文区数据区栈区
vi 进程区表
vi-1…vi
进程表
U 区 -1
U区
正文区数据区 I栈区 I…
数据区栈区
系统区表 内存正文区数据区 I栈区 I…
数据区栈区
![Page 17: Unix 操作系统内核浅析](https://reader038.fdocuments.net/reader038/viewer/2022102504/568138b7550346895da0765b/html5/thumbnails/17.jpg)
17
P
a
n
实例$ ./copy pan.c haiwei.c
$ vi copy.c
$ (Shell) fork() exec(“vi”)
![Page 18: Unix 操作系统内核浅析](https://reader038.fdocuments.net/reader038/viewer/2022102504/568138b7550346895da0765b/html5/thumbnails/18.jpg)
18
P
a
n
实例$ ./copy pan.c haiwei.c
$ vi copy.c
有
无
磁盘索引节点表namei(copy.c)
索引节点表
pan.c…
copy.c
open()
![Page 19: Unix 操作系统内核浅析](https://reader038.fdocuments.net/reader038/viewer/2022102504/568138b7550346895da0765b/html5/thumbnails/19.jpg)
19
P
a
n
实例$ ./copy pan.c haiwei.c
$ vi copy.c
有
无
磁盘索引节点表namei(copy.c)
索引节点表
pan.c…
copy.c
open()
![Page 20: Unix 操作系统内核浅析](https://reader038.fdocuments.net/reader038/viewer/2022102504/568138b7550346895da0765b/html5/thumbnails/20.jpg)
20
P
a
n
实例$ ./copy pan.c haiwei.c
$ vi copy.c
copy.c
有
无
pan.cWei.cCopy.chai.cPan.c…
copy.c
namei()
索引节点表
pan.c…
文件表
vi
pan.c
vi-1
pan.c
vi-2
用户文件描述符表
![Page 21: Unix 操作系统内核浅析](https://reader038.fdocuments.net/reader038/viewer/2022102504/568138b7550346895da0765b/html5/thumbnails/21.jpg)
21
P
a
n
实例
#include <fcntl.h>char buffer [1024];int main(int argc, char *argv[]){
int fdold, fdnew, count;
fdold=open(argv[1], O_RDONLY);fdnew=creat(argv[2], 0666);
while((count = read(fdold, buffer, sizeof(buffer)))>0) write(fdnew, buffer, count);
}
$ ./copy pan.c haiwei.c
$ vi copy.c
![Page 22: Unix 操作系统内核浅析](https://reader038.fdocuments.net/reader038/viewer/2022102504/568138b7550346895da0765b/html5/thumbnails/22.jpg)
22
P
a
n
实例
#include <fcntl.h>char buffer [1024];int main(int argc, char *argv[]){
int fdold, fdnew, count;
fdold=open(argv[1], O_RDONLY);fdnew=creat(argv[2], 0666);
while((count = read(fdold, buffer, sizeof(buffer)))>0) write(fdnew, buffer, count);
}
$ gcc –o copy copy.c
$ ./copy pan.c haiwei.c
![Page 23: Unix 操作系统内核浅析](https://reader038.fdocuments.net/reader038/viewer/2022102504/568138b7550346895da0765b/html5/thumbnails/23.jpg)
23
P
a
n
总结
![Page 24: Unix 操作系统内核浅析](https://reader038.fdocuments.net/reader038/viewer/2022102504/568138b7550346895da0765b/html5/thumbnails/24.jpg)
24
P
a
n
程序库
系统调用接口
文件子系统
进程控制子系统
进程间通信
调度程序
存储管理
高速缓冲
字符设备 块设备
设备驱动程序
硬 件 控 制
硬 件
核心级硬件级
用户程序
用户级核心级
![Page 25: Unix 操作系统内核浅析](https://reader038.fdocuments.net/reader038/viewer/2022102504/568138b7550346895da0765b/html5/thumbnails/25.jpg)
25
P
a
n
谢 谢