操作系统的历史
•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:管理员的家目录;