
•
1945~1946
第一台电子计算机
ENIAC
–
冯
·
诺依曼
起草
ENIAC(
电子离散变量自动计算机
)
设计报告
初稿,确定
计算机的结构,采用
存储程序以及二进制编码
等,至今仍为电子计算机设计者所遵循
。(广岛原子弹)
•
UNIX
–
1965~1969
:贝尔实验室、通用电气、麻省理工学院开发
MULTICS
操作系统,
多用户、多任务、多层次
(美国登月,
5
次!)(
1964
我国第一颗原子弹!珠算!)
–
1970~1973
:改写
MULTICS
,
汇编语言
为主的时代,为了
移植
操作系统,诞生了
C
语言
,广泛流行(开源)
–
1979
:版权,走上商业化(
IBM-AIX,HP-UX,SUN….)
DOS
–
1970
年微软收购了
86-DOS
–
4
个月写成
–
单用户、单任务
–
为
IBM
个人电脑安装一台
$200
LINUX
类
UNIX
–
1991~1993
:
Linux
1.0
,
GNU/LINUX
林纳斯
·
托瓦兹,写了LInux内核
几个月完成
shell一个月
–
1995
:
RedHat
发行版
一言不合,撸代码!
•
系统的启动过程
•
Linux
系统的组成
•
内核的主要
组成
•
虚拟
文件系统
•
SHELL
启动

•
启动级别:
–
/
etc
/
inittab
文件
•
# 0 - halt (Do NOT set
initdefault
to this)
•
# 1 - Single user mode
•
# 2 - Multiuser, without NFS (The same as 3, if you do not have networking)
•
# 3 - Full multiuser mode
•
# 4 - unused
•
# 5 - X11
•
# 6 - reboot (Do NOT set
initdefault
to this
)
•
id:3:initdefault:
•
Linux
系统的组成
•
宏观分为内核空间和用户空间
•
/
sbin
/
init
:用户空间第一个程序
•
程序的角度,应用程序关心自己的业务逻辑,对硬件资源、不同进程之间的通信等交由操作系统即内核实现,使用
系统调用交互
•
软件工程角度,通用的系统调
用程序封装为库(.so*)文件,
减少应用程序开发的复杂度和
减少程序对内存资源的占用

•
内核的主要组成
•
内核主要组成:
–
进程管理
•
多任务、多用户
–
虚拟文件系统
•
一切皆
文件、
HFS
–
内存管理
–
网络堆栈
–
设备驱动

•
POSIX
–
可移植操作系统接口(
Portable Operating System Interface
,缩写为
POSIX
)
–
是一
个标准
•
虚拟文件系统
•
内核加载进内存后会在内存中维护一个虚拟文件系统
•
挂载
/
目录所在的分区(至少包含
/
sbin
、
/bin
、
/
etc
、
/lib
、
/
dev
等目录)
•
系统
INIT
阶段会继续挂载其他目录(本地、
NFS
、
/
proc
等)
•
一切皆
文件
–
/
proc
目录下存放内核相关文件,
cpuinfo
、
meminfo
等,可以获取系统实时的信息,比如内存使用情况,
arp
缓存表等
–
/
dev
目录下存放设备文件,光驱、
usb
等,需要挂载到一个目录,挂载同时指定文件系统
–
tty
–
echo “hello” > /
dev
/
pts
/0
Filesystem
Hierarchy Standard
(文件系统目录标准
)
目录树
(directory tree
)
目录树的起始点为根目录
(/, root)
Linux
FHS
定义:
–
/boot:
系统启动相关的文件,如内核、
initrd
,以及
grub(
bootloader
)
–
/
dev
:
设备文件
•
设备文件:
•
块设备:随机访问,数据块
•
字符设备:线性访问,按字符为单位
•
设备号:主设备号(
major
)和次设备号(
minor
)
–
/
etc
:配置文件
–
/home
:用户的家目录,每一个用户的家目录通常默认为
/home/USERNAME
–
/root
:管理员的家目录;