第3章 操作系统用户界面
3.1 操作系统启动过程
3.2 操作系统生成
3.3 用户界面
3.4 系统调用
3.1 操作系统启动过程
3.1.1 BIOS和主引导记录MBR
3.1.2 操作系统启动过程
3.1.1 BIOS和主引导记录MBR
-
实模式和保护模式
-
实模式(实地址模式,REAL MODE)
1.程序按照8086寻址方式去访问0h——FFFFFh(1MB)空间
2.寻址方式:物理地址(20位)=段地址:偏移地址。
3.CPU单任务运行 -
保护模式(内存保护模式,PROTECT MODE)
1.寻址方式:段(32位)和偏移量(32位),寻址4GB空间
段的属性:起始地址,存取属性,权限级别…
2.段页式寻址机制(段,页)
3.虚拟地址,进程,封闭空间
4.应用程序和操作系统的运行环境都被保护
5.CPU支持多任务
实模式存取的1M空间
1.前面640K【00000 – 9FFFF】:基本内存
2.中间128K【A0000 – BFFFF】:显卡显存
3.末尾256K【C0000 – FFFFF】:BIOS;
【C0000 – C7FFF】:显示卡BIOS
【C8000 – CBFFF】:IDE控制器BIOS
【F0000 – FFFFF】:最后64KB,系统BIOS
- BIOS:Basic I/O System(Firmware,固件)
基本输入/输出系统
位置【F0000 – FFFFF】
功能:
1.系统启动配置
2.基本的设备I/O服务
3.系统的加电自检和启动。
BIOS使用的中断类型号为10H ~ 1FH
- 加电自检和自举:
加电自检POST
Power On Slef-Test(加电自检)
初始化基本硬件
CPU、内存、显卡…
自检正常不提示,错误则通过喇叭提示。
按下PowerOn或者Reset键执行第1条指令
执行FFFF0处的指令(JUMP POST;POST位于系统BIOS内部)
POST之后…
查找显卡BIOS,调用显卡BIOS;
依次查找其他设备执行相应设备的BIOS;
显示启动画面…
从硬盘/软盘/光驱/U盘读入OS;
OS启动后,由OS接管计算机
-
主启动记录MBR
MBR:
1.存放在硬盘/软盘的首扇区
2.存放和OS启动的相关信息 ( Main Boot Reacord )
3.512 BYTES
4.结束: 0xAA55h -
MBR/硬盘分区/格式化
MBR|Windows FAT32/NTFS| LinuxEXT2/EXT3 /其他文件系统
分区启动扇区( Partition Boot Sector ); BootLoader , PBR
主启动扇区( Main boot sector ):完成OS加载或启动管理功能:
1.提供菜单:让用户选择不同的启动项,实现多重启动
2.加载核心文件:直接指向可启动区加载操作系统;
3.跳转:将启动管理功能转交给其他loader
- BIOS和MBR程序运行过程
1.POST—CMOS设置(硬盘启动)—读取MBR—控制权交给MBR
2.MBR读取分区表(Partition Table),找到其中的活动分区(Active Partition),并确认其他的分区都不是活动分区。MBR读取活动分区的第一个分区(分区引导记录PBR)并把它加载到内存中去。
3.PBR继续控制后面的引导过程。
3.1.2 操作系统的启动过程
-
启动过程
从加电到用户工作环境准备好的过程
1.初始引导
2.核心初始化
3.系统初始化 -
初始引导:
目的:把OS核心装入内存并使之开始工作接管计算机系统
过程:
加电,JUMP POST
…BIOS中的启动程序执行
-启动程序(位于BIOS):
读取0面0道1扇区内容(MBR)
加载MBR中的引导程序
-引导程序(位于MBR,主流GRUB):
根据相关参数读取硬盘指定位置的文件到内存
加载硬盘上的OS内核,并初始化基本参数
-OS内核:
逐步加载OS剩余部分,最后完全控制计算机 -
核心初始化
目的:OS内核初始化系统的核心数据
典型工作:
各种寄存器的初始化
存储系统和页表初始化
核心进程构建
… -
系统初始化
目的:为用户使用系统做准备,使系统处于待命状态
主要工作:
初始化文件系统
初始化网络系统
初始化控制台
初始化图形界面
… -
Windows的启动过程
1.POST
加电后BIOS启动主机自检程序
2.初始引导
BIOS从MBR读取引导程序,装入内存的特定位置
引导程序启动DOS7.0,调入操作系统核心
WINDOWS开始接管系统
3.核心初始化
资源状态、核心数据等初始化
4.系统初始化
GUI界面生成,系统处于待命/消息接受状态 -
Linux的启动过程
1.POST
2.MBR
3.KERNEL映像(一部分代码是非压缩的,大部分后面代码是压缩的,这非常有利于嵌入式系统)
4.KERNEL映像自解压并执行
5.内核初始化
6.内核启动 -
内核完成引导后,加载init程序
1.进程号1.
2.init进程通过/etc/inittab脚本进行初始化
不同运行级别(Runlevel)/etc/inittab脚本不同
3.脚本文件/etc/inittab
init进程根据/etc/inittab执行相应的脚本初始化系统
设置键盘、字体、装载模块、设置网络等等。