操作系统的用户界面(1)

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
MBR/硬盘分区/格式化
  • 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执行相应的脚本初始化系统,设置键盘、字体、装载木块、设置网络等等

LINUX的登陆过程

操作系统的生成

满足特定硬件环境和用户需要,组装和构建操作系统的过程。

  • 操作系统生成的主要步骤
    根据硬件环境/用户要求配置功能模块和构造参数
    构建操作系统映像

  • 操作系统生成的前提
    操作系统由可拆装模块构成
    有交互式配置工具
    有映像构建(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

  • 管道
    特殊的重定向操作,管道操作符 “|” 连接左右两个命令,将管道左边命令的执行结果输出作为管道右边命令的输入,可使用多个管道连接命令

你可能感兴趣的:(操作系统的用户界面(1))