BIOS(BasicInput/OutputSystem)是基本输入输出系统的简称。BIOS能为电脑提供最低级、最直接的硬件控制与支持,是联系最底层的硬件系统和软件系统的桥梁。为了在关机后使BIOS不会丢失,早期的BIOS存储在ROM中,并且其大小不会超过64KB;而目前的BIOS大多有1MB到2MB,所以会被存储在闪存(FlashMemory)中。
(1)CPU加电后会首先执行BIOS程序,其中POST(Power-OnSelf-Test)加电自检程序是执行的第一个例行程序,主要是对CPU、内存等硬件设备进行检测和初始化。
(2)BIOS中断调用即BIOS中断服务程序,是计算机系统软、硬件之间的一个可编程接口。开机时,BIOS会通知CPU各种硬件设备的中断号,并提供中断服务程序。软件可以通过调用BIOS中断对软盘驱动器、键盘及显示器等外围设备进行管理。
(3)BIOS会根据在CMOS中保存的配置信息来判断使用哪种设备启动操作系统,并将CPU移交给操作系统使用。
(1)在CPU加电之后,会把CPU所有寄存器的值设为默认值,除了CS寄存器的值改为0xFFFF,其他寄存器的值都为0,这样,根据CS和IP的值就可以找到指令的物理地址0xFFFF:0x0000,也就是0xFFFF0。(2)这时CPU就在这个位置开始执行,这里存放的一条无条件跳转指令JMP,跳转到BIOS的真正启动代码处。(3)BIOS首先进行POST(Power-OnSelfTest,加电后自检),POST的主要检测系统中一些关键设备是否存在和能否正常工作,例如内存和显卡等设备。如果硬件出现问题,主板会发出不同含义的蜂鸣,启动中止。如果没有问题,屏幕就会显示出CPU、内存、硬盘等信息。(4)BIOS程序在执行一些必要的开机自检和初始化后,会将自己复制到从0xA0000开始的物理内存中并继续执行(5)然后,BIOS开始搜寻可引导的存储设备(即根据用户指定的引导顺序从软盘、硬盘或是可移动设备中寻找)。如果找到,则将存储设备中的引导扇区读入物理内存0x7C00处,并跳转到0x7C00继续执行,从而将CPU交给引导扇区中的Boot程序。
BIOS按照"启动顺序",把控制权转交给排在第一位的储存设备。之后计算机加载该设备中第一块扇区到0x7c00,大小为512个字节,如果这512个字节的最后两个字节是0x55和0xAA,表明这个设备可以用于启动;如果不是,表明设备不能用于启动,控制权于是被转交给"启动顺序"中的下一个设备。这最前面的512个字节,就叫做"主引导记录"(Masterbootrecord,缩写为MBR)。
主引导记录只有512个字节,放不了太多东西。它的主要作用是,告诉计算机到硬盘的哪一个位置去找操作系统。
主引导记录由以下三部分组成:
(1)第1-446字节:调用操作系统的机器码。在CPU上电之后,若由硬盘启动,则BIOS将硬盘的主引导记录(位于0柱面、0磁道、1扇区)读入7C00处,然后将控制权交给主引导代码。主引导代码的任务包括:①扫描分区表,找到一个激活(可引导)分区;
②找到激活分区的起始扇区;
③将激活分区的引导扇区装载到内存0x7C00处;
(2)第447-510字节:分区表(Partitiontable),将硬盘分成若干个区。
(3)第511-512字节:主引导记录签名(0x55和0xAA)。
硬盘分区有很多好处,考虑到每个区可以安装不同的操作系统,"主引导记录"因此必须知道将控制权转交给哪个区。分区表的长度只有64个字节,里面又分成四项,每项16个字节。所以,一个硬盘最多只能分四个一级分区,又叫做"主分区"。
每个主分区16个字节,由6个部分组成:
(1)第1个字节:如果为0x80,就表示该主分区是激活分区,控制权要转交给这个分区。四个主分区里面只能有一个是激活的。
(2)第2-4个字节:主分区第一个扇区的物理位置(柱面、磁头、扇区号等等)。
(3)第5个字节:主分区类型。
(4)第6-8个字节:主分区最后一个扇区的物理位置。
(5)第9-12字节:该主分区第一个扇区的逻辑地址。
(6)第13-16字节:主分区的扇区总数。
这时,计算机的控制权就要转交给硬盘的某个分区了,这里又分成三种情况。
前面提到,四个主分区里面,只有一个是激活的。计算机会读取激活分区的第一个扇区,叫做"卷引导记录"(Volumebootrecord,缩写为VBR)。"卷引导记录"的主要作用是,告诉计算机,操作系统在这个分区里的位置。然后,计算机就会加载操作系统了。
随着硬盘越来越大,四个主分区已经不够了,需要更多的分区。但是,分区表只有四项,因此规定有且仅有一个区可以被定义成"扩展分区"(Extendedpartition)。所谓"扩展分区",就是指这个区里面又分成多个区。这种分区里面的分区,就叫做"逻辑分区"(logicalpartition)。
但是,似乎很少通过这种方式启动操作系统。如果操作系统确实安装在扩展分区,一般采用下一种方式启动。
控制权转交给操作系统后,操作系统的内核首先被载入内存。以Linux系统为例,先载入/boot目录下面的kernel。内核加载成功后,第一个运行的程序是/sbin/init。它根据配置文件(Debian系统是/etc/initab)产生init进程。这是Linux启动后的第一个进程,pid进程编号为1,其他进程都是它的后代。
至此,全部启动过程完成。
所谓工作模式,是指CPU的寻址方式、寄存器大小、指令用法和内存布局等;
(1)实模式:实地址模式,计算机刚刚加电启动时进入的模式。PC机加电后,CPU进入实模式,分段管理内存,最多访问1M地址空间(没;有打开A20的情况下)。
(2)实模式存取的1MB空间:
C8000-CBFFF:IDE控制器BIOS
F0000-FFFFF:系统BIOS:完成系统启动配置;基本的设备I/O服务;系统的加电自检和自举。
(3)保护模式:内存保护模式,操作系统启动以后进入的模式
reference
满足特定硬件环境和用户的需要,组装和构建操作系统的过程
例:Liunx操作系统的生成
1、获取Liunx内核的源代码
2、选择和启动内核配置程序
3、根据需要配置内核模块和参数
4、重新编译新的内核
5、编译和安装模块
6、启动新内核
OS提供给用户控制计算机的机制,又称用户接口。
(1)操作界面
(2)系统调用(systemcall,系统功能调用,程序界面)
操作界面
窗口,图标,菜单,按钮,鼠标(消息,事件)
在控制台环境下接收键盘输入的命令
类型:普通命令、批处理程序、shell
Shell是一个用C语言编写的程序,它是用户使用Linux的桥梁。Shell既是一种命令语言,又是一种程序设计语言。
Shell是指一种应用程序,这个应用程序提供了一个界面,用户通过这个界面访问操作系统内核的服务。
Bash功能:
脚本(Script)通过类似程序的方式执行具有一定逻辑顺序的命令序列完成较复杂的功能和人机交互。
运行方法
1、直接运行(用缺省版本的shell运行脚本程序)
2、使用特定版本的shell执行脚本
$bashfirst_script3、在脚本文件首行指定shell
操作系统内核为应用程序提供的服务/函数(使用代码调用固定函数)
1)作用
①提高了系统的可扩展性
②增强了系统的可靠性
③可移植性强
④提供了对分布式系统的支持
⑤融入了面向对象技术
2)如何使用
①客户只能通过以公有的方式定义的接口使用服务器,这意味着客户(客户程序员)唯一的责任是了解接口。
②服务器(服务器程序设计人员)的责任是确保服务器根据该接口可靠并准确的执行。
③服务器设计任务只修改设计的实现细节,而不能修改接口。
这样程序员就能够独立的对客户和服务器进行改进,对服务器的修改不会对客户的行为造成意外的影响。
①系统启动配置②基本的设备1/0服务③系统的加电自检和启动
位置:第一条指令的位置在FFFF:0000,也就是物理地址FFFF0
特点:???????
目的:把OS核心装入内存,并使之开始工作接管计算机系统
主要过程:
操作系统生成的定义:满足特定硬件环境和用户的需要,组装和构建操作系统的过程
Linux内核的生成过程:
1、获取Linux内核的源代码2、选择和启动内核配置程序3、根据需要配置内核模块和参数4、重新编译新的内核5、编译和安装模块6、启动新内核
用户界面:OS提供给用户控制计算机的机制,又称用户接口。
类别:
何为shell:shell是操作系统与用户交互的界面,表现为通过控制台执行用户命令的方式,shell本身不执行命令,仅仅是组织和管理命令;
4类典型的shell:
输出重定向:指不使用操作系统默认的标准输出设备显示信息,而是指定某个文件做为标准输出设备来存储文件信息。简单来说,重定向输出就是把要输出的文件信息写入到一个文件中去,而不是将要输出的文件信息输出到控制台(显示屏)。