BOIS和主引导记录MBR
-
实模式
实地址模式,REAL MODE,刚开机时
程序按照8086寻址方法访问0h-FFFFFh(1MB)空间
寻址方式:物理地址(20位)=段地址:偏移地址
CPU单任务运行 -
保护模式
内存保护模式,PROTECT MODE,操作系统接管计算机时
寻址方式:段(32位)和偏移量,寻址4GB空间
段的属性:起始地址,存取属性,权限级别,......
段页式寻址机制(段,页)
虚拟地址,进程,封闭空间
应用程序和操作系统的运行环境都被保护
CPU支持多任务 -
实模式存取的1M空间
前面640K(00000--9FFFF):基本内存
中间128K(A8000--BFFFF):显卡显存
末尾256K(C0000--FFFFF):BIOS
C0000--C7FFF:显卡BIOS
C8000--CBFFF:IDE控制器BIOS
CC000--EFFFF:???
F0000--FFFFF:最后64KB,系统BIOS -
BIOS(Basic I/O System)
Firmware,固件(以硬件的方式存在的软件)
基本输入/输出系统
位置:F0000--FFFFF
功能: 系统的启动配置,基本的设备I/O服务,系统的加电自检和启动
系统的启动配置,也称为CMOS设置
CMOS设置
BIOS通过中断提供I/O服务,中断类型号为10H-1FH
BIOS使用的中断加电自检POST(Power-On Self-Test)
初始化基本硬件,CPU、内存、显卡
自检正常不提示,错误则通过喇叭提示(嘀嘀嘀)
- 开机过程
- 按下PowerOn或者Reset键执行第1条指令
- 执行FFFF0处的指令,JUMP POST,进行加电自检
- POST之后,查找显卡BIOS,调用显卡BIOS
- 依次查找其他设备,执行相应设备的BIOS
- 显示启动画面,BIOS信息,芯片组型号,主板信息
- 从硬盘/软盘/光盘/U盘读入操作系统
- 操作系统启动后,由操作系统接管计算机
-
主启动记录MBR(Main Boot Record)
存放再硬盘/软盘的首扇区
存放和操作系统启动的相关
512Bytes,一定以0xAA55h结束
提供菜单,让用户选择不太的启动项,实现多重启动
加载核心文件,直接指向可启动区加载操作系统
跳转,将启动管理红能转交给其他loader
-
BIOS和MBR程序的运行过程
POST->CMOS设置(硬盘启动)->读取MBR->控制权交给MBR
MBR读取分区表(Partition Table),找到其中的活动分区(Active Partition),并确认其他分区不是活动分区。MBR读取活动分区的第一个分区(分区引导记录PBR)并把它加载代内存中去。
PBR继续控制后面的引导过程
操作系统的启动过程
从加电到用户工作环境准备好的过程,包括初始引导,核心初始化,系统初始化
-
初始引导
把操作系统核心装入内存并使之开始工作接管计算机系统
加电,JUMP POST
BIOS中的启动程序,读取0面0道第1扇区内容(MBR),加载MBR中的引导程序
引导程序根据相关参数,读取硬盘指定位置的文件到内存,加载硬盘上操作系统内核,并初始化基本参数
操作系统内核,逐步加载操作系统剩余部分,最后完全控制计算机 -
常见引导程序
ntldr、GRUB、bootmgr, LILO -
核心初始化
操作系统内核初始化系统的核心数据,包括各种寄存器的初始化,存储系统和页表初始化,核心进程构建 -
系统初始化
为用户使用系统作准备,使系统处于待命状态(出现桌面),初始化文件系统,初始化网络系统,初始化控制台,初始化图形界面 -
Windows的启动过程
POST:加电后BIOS启动POST
初始化引导:BIOS从MBR读入引导程序,装入内存特定位置,引导程序启动DOS7.0,调入操作系统核心,windows开始接管系统
核心初始化:资源状态,核心数据等初始化
系统初始化:GUI界面生成,系统处于待命/消息接受状态 -
LINUX的启动过程
POST->MBR->KERNEL映像->KERNEL映像自解压并执行->内核初始化->内核启动->加载init程序
KERNEL映像是一个zlib压缩过的内核映像,KERNEL映像前端是一个可执行例程(实现核心硬件初始化并解压),然后该例程调用内核并开始启动内核引导的过程 -
init程序
进程号1
init进程通过/etc/inittab脚本进行初始化,不同运行级别(Runlevel)/etc/inittab脚本不同
脚本文件/etc/inittab,init进程根据/etc/inittab执行相应的脚本初始化系统,设置键盘、字体、装载木块、设置网络等等
操作系统的生成
满足特定硬件环境和用户需要,组装和构建操作系统的过程。
-
操作系统生成的主要步骤
根据硬件环境/用户要求配置功能模块和构造参数
构建操作系统映像 -
操作系统生成的前提
操作系统由可拆装模块构成
有交互式配置工具
有映像构建(build)工具 -
Linux操作系统的生成
-
获取Linux内核的源代码
# cd /usr/src
# tar zxvf linux-2.6.38-12.tar.gz
z : 表示 tar 包是被 gzip 压缩过的,所以解压时需要用 gunzip 解压
x : 从 tar 包中把文件提取出来
v : 显示详细信息
f :解压的文件 -
选择和启动内核配置程序
# cd /usr/src/linux-2.6
# make config (文本界面,不推荐使用)
# make xconfig (图形窗口模式,xWindow使用)
# make menucofig (文本选择界面,字符终端,推荐)
make menucofig界面,通过空格选择 -
根据需要配置内核模块和参数
Loadable module support 设置可加载模块支持
Processor type and features 设置CPU类型
General setup 对普通的一些属性进行设置
Parallel port support 并口支持
Plug and play configuration 即插即用配置
Block devices 块设备支持
Networking option 选择TCP/IP网络选项
Network device support 网络设备支持的选项
Mice 鼠标设置选项:串口、PS/2等类型鼠标
File system 文件系统类型
Sound 声卡驱动
USB support USB接口支持 -
重新编译新的内核
# make dep 生成依赖dependency信息
# make clean 清除旧的编译结果
# make bzImage ./arch/i386/boot/bzImage -
编译和安装模块
# make modules
# make modules install
模块被编译并安装到/usr/lib<内核版本号> 目录下 -
启动新内核(具体过程与版本有关)
cp bzImage/boot/bzImage
GRUB,配置/boot/grub/grub.conf
title newLinux build by R_est, 2020
root(hd0,1)
kernel/boot/bzImage ro root=/dev/hda2
用户界面
操作系统提供给用户控制计算机的机制(又称用户接口),包括操作界面和系统调用(System call,系统功能调用,程序界面)
-
操作界面
图形用户接口(GUI),如窗口,图标,菜单,按钮,鼠标(消息,事件)
-
键盘命令
在控制台环境下接收键盘输入的命令,包括普通命令,批处理程序,shell -
普通命令
DOS典型命令
功能 | 命令 |
---|---|
文件管理 | COPY, COMP, TYPE, DEL, REN |
磁盘管理 | FORMAT, CHKDSK, DISKCOPY, DISKCOMP |
目录管理 | DIR, CD, MD, RD, TREE |
设备工作模式 | CLS, MODE |
时间系统设置 | DATE, TIME, VER, VOL |
运行用户程序 | MASM, LINK, DEBUG |
LINUX典型命令
命令 | 功能 | 命令 | 功能 |
---|---|---|---|
man | 查看命令帮助 | tar | 管理TAR类型文件 |
cd | 改变工作路径 | chown,chgrp | 设置文件/目录的拥有者 |
ls | 列目录 | chmod | 改变文件属性 |
ps | 显示系统中的进程及ID | find | 用于查找某个文件 |
mount | 挂接文件系统 | locate | 查找文件 |
umount | 卸掉文件系统 | whereis | 查看文件放在哪个目录 |
- 批处理
普通命令的集合,批执行,由command解释执行
支持变量替换,条件,转移,循环,注释等简单语法
后缀为.bat
@echo off
for /l %%i in (1,1,100) do
(
set /a sum+=%%i
)
echo %sum%
pause
格式: for /参数 %%变量 in (集) do 命令
/l:表述参数是一个序列,set:设置变量
-
Shell
操作系统与用户交互的界面
表现为通过控制台执行用户命令的方式
本身不执行命令,仅仅是组织和管理命令
假装很厉害的Shell
类型 | 特点 |
---|---|
Bsh | 1970s AT&T 有较强的脚本编程功能 |
Csh | 1980s C语法 用户命令交互方便 |
Ksh | 兼具Bsh和Csh的优势 |
Bash | Bsh的升级 吸收Ksh特性 开源 |
- Bash的功能
功能 | 操作 |
---|---|
命令行编辑 | |
移动光标位置 | 左右方向键 |
删除光标左边字符 | 退格键 |
删除光标处字符 | Del |
光标快速移动到行首 | Home |
光标快速移动到行尾 | End |
删除当前光标到行首的内容 | Ctrl+u |
删除当前光标到行尾的内容 | Ctrl+k |
名称补全功能 | |
命令和文件名补全 | Tab |
命令历史与重复命令 | |
翻找历史命令 | 上下方向键 |
查看历史命令 | $ history |
命令历史保存文件 | ~/. bash_history |
清除命令历史 | $ history -c |
相关环境变量 | HISTFIFE, HISTSIZE |
管道与重定向 | |
输入重定向 | < |
输出重定向 | >,>>(追加) |
错误重定向 | 2>,2>>(追加) |
输出与错误组合重定向 | &> |
管道 | | |
定义功能键 | |
Shell脚本编程 |
-
重定向操作的例子(Linux)
将标准输出重定向到文件,$ ls /etc/ >etcdir.log
将标准输出重定向追加到文件,$ ls /etc/sysconfig/ >etcdir.log
将错误输出重定向到文件,$ nocmd 2>etcfile.log -
管道
特殊的重定向操作,管道操作符 “|” 连接左右两个命令,将管道左边命令的执行结果输出作为管道右边命令的输入,可使用多个管道连接命令
网友评论