目录
截图就来自MOOC上华中科技大学《操作系统原理》
操作系统的启动过程
BIOS和主引导记录MBR
实模式和保护模式
实模式:(实地址模式,REAL MODE)
- 程序按照8086寻址方法访问0h——FFFFFh(1Mb)空间
- 寻址方式:段加偏移地址
- CPU单任务运行
保护模式(内存保护模式,PROTECTED MODE)
- 寻址方式:段和偏移量(都是32位),寻址4GB空间——段的属性:起始地址,存取属性,权限级别。。。
- 段页式寻址机制
- 虚拟地址,进程,封闭空间
- 应用程序和操作系统的运行环境都被保护
- CPU支持多任务
固件是指设备内部保存的设备“驱动程序”,通过固件,操作系统才能按照标准的设备驱动实现特定机器的运行动作,比如光驱、刻录机等都有内部固件。
固件是担任着一个系统最基础最底层工作的软件。而在硬件设备中,固件就是硬件设备的灵魂,因为一些硬件设备除了固件以外没有其它软件组成,因此固件也就决定着硬件设备的功能及性能。
固件(firmware)一般存储于设备中的电可擦除只读存储器EEPROM(Electrically Erasable Programmable ROM)或FLASH芯片中,一般可由用户通过特定的刷新程序进行升级的程序。一般来说,担任着一个数码产品最基础、最底层工作的软件才可以称之为固件,比如计算机主板上的基本输入/输出系统BIOS(Basic Input/output System),在以前其实更多的专业人士叫它固件。
通常这些硬件内所保存的程序是无法被用户直接读出或修改的。在以前,一般情况下是没有必要对固件进行升级操作的,即使在固件内发现了严重的Bug也必须由专业人员带着写好程序的芯片把原来机器上的更换下来。早期固件芯片一般采用了ROM设计,它的Firmware代码是在生产过程中固化的,用任何手段都无法修改。随着技术的不断发展,修改固件以适应不断更新的硬件环境成了用户们的迫切要求,所以,可重复写入的可编程可擦除只读存储器EPROM(Erasable Programmable ROM),EEPROM和flash出现了。这些芯片是可以重复刷写的,让固件得以修改和升级。
BIOS是主板上的一块可读写的EPROM或EEPROM芯片,里面装有系统的重要信息和设置系统参数的设置程序(BIOSSetup程序);CMOS是主板上的一块可读写的RAM芯片,里面装的是关于系统配置的具体参数,其内容可通过设置程序进行读写。CMOSRAM芯片靠钮扣电池供电,即使系统断电后信息也不会丢失。CMOSRAM既是BIOS设定系统参数的存放场所,又是BIOS设定系统参数的结果。
加电自检和自举
主启动记录MBR
MBR
- 存放在硬件/和软盘的首扇区
- 存放和OS启动的相关信息(Main Boot Recoed)
- 512 BYTES
- 结束:0xAA55h(这个位置不可更改)
MBR/硬盘分区/格式化
BIOS和MBR程序运行过程
(1)POST-》CMOS设置(硬盘启动)-》读取MBR-》控制权交给MBR
(2)MBR读取分区表,找到其中的活动分区,并确认其他的分区都不是活动分区,MBR读取活动分区的第一个分区(分区引导记录PBR)并且把它加载到内存中去
(3)PBR继续控制后面的引导过程
操作系统的启动过程
启动过程:
- 从加电到用户工作环境准备好的过程
1)初始引导
2)核心初始化
3)系统初始化
初始引导
目的:把OS核心装入内存并使之开始工作接管计算机系统
过程:
- 加电,JUMP POST
- 。。。BIOS中的启动程序运行
- 启动程序:读取0面0面第一扇区内容(MBR),加载MBR中的引导程序
- 引导程序:根据相关参数,读取硬盘指定位置的文件到内存;加载硬盘上的OS内核,并初始化基本参数
- OS内核:逐步加载OS剩余部分最后完全控制计算机
核心初始化
目的:OS内核初始化系统的核心数据
典型工作:各种寄存器,存储系统,页表,核心进程初始化及构建。。。
系统初始化
目的:为用户用系统做准备,是系统处于待命状态
主要工作:初始化文件系统,网络系统,控制台,图像界面。。。
举例:windows和linux初始化过程
操作系统的生成
满足特定硬件环境和用户需要的组装和构建操作系统的过程
主要步骤:
根据硬件环境/用户要求配置功能模块和构造参数(应该指的是对CMOS配置)
构建(build)OS的映像
操作系统生成的前提:
操作系统由可拆装的模块构成
有交互式配置工具
有构建映像的工具
举例:
操作系统的用户界面
用户界面的定义:
OS提供给用户控制计算机的机制,又称为用户接口
用户界面的分类:
操作界面
系统调用(系统功能调用,程序界面)
操作界面
- 图形用户接口(GUI,Graphic User Interface)
窗口,图标,菜单,按钮,鼠标(消息事件)
- 键盘命令(COMMAND)
再控制台环境下接受键盘输入的命令
类型:普通命令,批处理程序,shell
shell只是一种命令交互的形式,本身并不执行,就是对用户发出的命令进行组织和管理
BASH脚本
管道与重定向
标准输入和输出,重定向,管道操作
重定向:
管道
Shell脚本编程
脚本
脚本是批处理文件的延伸,是一种纯文本保存的程序,一般来说的计算机脚本程序是确定的一系列控制计算机进行运算操作动作的组合,在其中可以实现一定的逻辑分支等。
脚本程序相对一般程序开发来说比较接近自然语言,可以不经编译而是解释执行,利于快速开发或一些轻量的控制。
脚本(Script)通过类似程序的方式执行具有一定逻辑顺序的命令序列完成较为复杂的功能和人机交互
- 脚本程序保存在文本文件中;
- 脚本程序是shell命令语句的集合
所有命令逐行执行(按逻辑)
区别:
凡是能够在shell直接执行的命令,都可以在脚本中使用
脚本中还可以使用一些不能再shell下直接执行的语句
运行脚本程序的三个方法
- 方法1:直接运行(用缺省版本的shell运行脚本程序)
- 方法2:使用某个特定版本的shell执行脚本
- 方法3:在脚本文件的首行指定shell
系统调用
用户界面的定义:
OS提供给用户控制计算机的机制,又称为用户接口
系统调用定义:
操作系统内核为应用程序提供的服务/函数
特点:
- 一般设计核心资源或者硬件的操作
- 运行于核态
- 每个系统调用都具有唯一的编号:ID
- 调用过程会产生中断:自愿中断
隐式系统调用: