资源描述
Click to edit Title Slide,Click to edit Master text styles,Second level,Third level,Fourth level,Fifth level,操作系统的用户接口,操作系统的用户接口,用户工作环境,运行一个应用程序的过程,操作系统用户界面,系统功能调用,Linux,系统功能调用,1,操作系统的用户接口主要内容,2,1.,用户工作环境的形成,系统要提供各种硬件、软件资源,设计并提供使用方便的命令集合,将OS装入计算机并初始化,形成可供使用的工作环境,2.操作系统的初启,系统引导的任务,将操作系统的必要部分装入主存并对系统进行初始化工作,最终使系统处于命令接收状态。,操作系统的用户接口用户工作环境,3,操作系统的用户接口用户工作环境,系统引导的方式,独立引导方式(滚雪球方式),OS核心文件存储在系统本身的存储设备中,由系统自己将OS核心程序读入主存并运行,建立一个操作环境。,适用于微机和大多数系统,辅助下装方式,OS主要文件不放在系统本身的存储设备中,在系统启动后执行下装操作,从另外的计算机系统中将操作系统常驻部分传送到该计算机中,使它形成一个操作环境。,适用于多计算机系统、由主控机与前端机构成的系统以 及分布式系统。,4,操作系统的用户接口用户工作环境,3.,独立引导方式(滚雪球方式)的过程,初始引导,系统加电;,执行初始引导程序,对系统硬件和配置进行自检,保证系统没有硬件错误;,从硬盘中读入操作系统引导程序,并将控制权交给该程序模块。,引导程序执行,引导程序执行,将操作系统核心文件读入内存,并将控制交给核心的初始化程序。,5,操作系统的用户接口用户工作环境,核心初始化,初始化系统数据结构及参数,系统加电,建立进程有关的数据结构,;,获得自由存储空间的容量,建立存储管理的数据结构,;,建立系统设备和文件系统的数据结构,;,初始化时钟。,系统初始化,完善OS的操作环境,装载命令处理程序(或图形用户界面),并初始化;,在多用户系统中,为每个终端建立命令解释进程,使系统处于命令接收状态。,6,操作系统的用户接口用户工作环境,4.Linux,系统初启,Linux系统是以滚雪球的方式启动,加电或复位,BIOS的启动,Boot Loader,OS初始化,系统加电或复位,对主存中所有的数据清零,对内存进行校验,若无错,CS:IP BIOS入口。,7,操作系统的用户接口用户工作环境,BIOS启动,在ROM中的引导程序放在固定位置:FFFF:0000 CPU从这里开始执行。,上电自检;,对硬件设备进行检测和连接,并将测得的数据BIOS数据区;,从盘中读入Boot Loader(引导程序)。,从硬盘启动时,读入零柱面零磁道1扇区MBR(Master,Boot Record),将控制权交Boot Loader,Loader(引导程序),功能:将OS读入内存,并将控制权交给OS的初始化程序。,8,操作系统的用户界面用户工作环境,系统核心初始化(Setup.s),Setup的工作,检查调入内存中的代码;,获取内存容量信息,设置设备模式;,屏蔽中断,准备进入保护模式;,设置中断描述符表(idt),全局描述符表(gdt);控制权交给 Heads。,Heads的工作,对中断向量表作准备工作;,检查CPU类型;,调用Setup_paging进行页面初始化;,调用main.c中的Start_kernel()。,9,操作系统的用户接口用户工作环境,Start_kernel()的工作,对与CPU、内存等最基本硬件相关部分进行初始化;,对中断向量表进行初始化;,为进程调度程序作准备;,设置基准时钟;,内核的内存分配;,对文件系统进行初始化;,建立init进程。,init进程对每一个联机终端建立“getty”进程,getty在终端上显示“login”,等待用户登录。,10,5.,系统生成,什么是系统生成,所谓系统生成,就是指为了满足物理设备的约束和需,要的系统功能,通过组装一批模块来产生一个清晰的、,使用方便的操作系统的过程。,系统生成的内容,根据硬件部件确定系统构造的参数,编辑系统模块的,参数,并且连接系统模块成为一个可执行的程序。,操作系统的用户接口用户工作环境,11,1.作业与作业步,作业,计算机系统按指定步骤对初始数据进行处理并得到计,算结果的加工工作。,作业步,加工工作中的一个步骤称为作业步。,2.作业处理步骤,编辑,建立一个新文件,或对已有的文件中的错误进行修改。,编译,将源程序翻译成浮动的目标代码。,操作系统的用户接口应用程序的处理,12,连接,主程序和其他所需要的子程序和例行程序连接装配在一起,使之成为一个可执行的、完整的主存映像文件。,运行,将主存映像文件调入主存,启动运行,得出计算结果。,作业步之间的关系,每个作业步运行的结果产生下一个作业步所需要的文件;,一个作业步能否正确地执行,依赖于前一个作业步是否成功地完成。,操作系统的用户接口应用程序的处理,user.c,user.obj,编辑,运行,编译,连接,第一个作业步,第二个作业步,第三个作业步,第四个作业步,user.exe,13,3.连接类型,静态连接,一个源程序经编译后,生成一个可重定位的目标模块,,并产生内部符号表和外部符号表,供连接程序(Link)使用。,内部符号表,本模块可以被其他程序调用的入口点。,外部调用表,本模块要调用的外部的程序模块名。,操作系统的用户接口应用程序的处理,14,连接需要做的工作,将各模块连接成为一个整体;,构造全程符号表,在其中填写模块的逻辑地址;,查找各程序段的外部调用表,填入对应调用函数的地址。,静态连接的缺点,静态连接将所需的外部函数链接到目标文件中形成,为一个可执行文件。若多个应用程序都调用了同一,个库中的外部函数,那么,应用程序的目标文件中,都包含了这个外部函数对应的代码。,操作系统的用户接口应用程序的处理,15,动态逻辑,动态连接不需要将外部函数链接到目标文件中。而是在应,用程序中需要调用外部函数的地方作记录,并说明要使用,的外部函数名和引用入口号。,形成函数调用链表,所需支持,DLL(动态链接库),当 Windows的装载程序将应用程序和DLL装入主存后,装,载程序会遍历函数调用链表,将DLL中函数在主存的入口,(段:偏移)填入链表中的每个结点。,操作系统的用户接口应用程序的处理,16,1.,什么是操作系统的用户界面,操作系统的用户界面(或称接口)是操作系统提供给用户与,计算机打交道的外部机制。用户能够借助这种机制和系统,提供的手段来控制用户所在的系统。,操作系统的用户接口用户接口,操,作,系,统,17,2.,操作系统提供的用户界面,操作界面(命令接口),用户使用这个操作界面来组织工作流程和控制程序的运行。,系统功能服务界面(程序接口),用户程序在其运行过程中,使用系统功能调用来请求操作,系统的服务。,操作系统的用户接口用户接口,操作命令:,作业控制语言,键盘命令,图形界面,操,作,系,统,系统功能调用,18,3.,操作命令与操作系统类型的关系,作业控制语言,批处理操作系统,键盘命令 ,分时操作系统,个人计算机操作系统,图形用户界面,分时操作系统,个人计算机操作系统,操作系统的用户接口用户接口,实际操作系统:,MS-DOS Windows Linux(UNIX),提供什么样的用户界面?,19,4.,实例操作系统提供的用户界面,MS-DOS,键盘命令,系统功能调用,Windows ,图形用户界面,系统功能调用,Linux(UNIX),键盘命令(XWindow),系统功能调用,操作系统的用户接口用户接口,20,5.,系统功能调用,操作系统的用户接口用户接口,操作如何为用户提供服务,操作系统提供实现各种功能的例行子程序。,应,用,程,序,i,系统调用,中 央,处理机,存储器,外 部,设 备,应 用,程 序,计算机系统部件,21,操作系统的用户接口用户接口,如何调用操作服务功能,?,采用统一进管方式,系统提供,访管指令、访管中断,显示一个,字符串,读文件,应用程序 j,read();,操作系统统功能模块,访管指令,(,自愿进管指令,),svc n,svc,表示机器访管指令的操作码记忆符,,n,为地址码,(,功能号,),22,操作系统的用户接口用户接口,访管中断,当处理机执行到访管指令时就发生中断,该中断称为访管中断,它表示,正在运行的程序对操作系统的某种需求。,操作系统提供实现各种功能的例行子程序,其中的每一个功能对应访管,指令的一个功能号。,svc 0 显示一个字符,svc 1 打印一个字符串,什么是系统调用,系统功能调用是用户在程序一级请求操作系统服务的一种手段,它是,带有一定功能号的“访管指令”。其功能是由操作系统中的程序完成,的,即由软件方法实现的。,23,操作系统的用户接口用户接口,系统调用的实现,a,1,a,0,a,i,例行子程序,入口地址表,A+0,A+1,A+i,保护现场;,取n值;,按n值转移;,恢复现场;,访管中断,处理程序,svc i,用户程序,+,A,Sub,m,a,m,例行子程序,Sub,0,Sub,1,Sub,i,a,0,a,1,a,i,24,1.Linux,系统功能调用的过程,在Linux系统中,,系统调用通过异常类型实现;,当执行了int 0 x80指令而发生的软件中断;,系统自动将用户态切换为核心态来处理该事件,执行自陷处理程序(系统调用处理程序)。,操作系统的用户接口,Linux,系统功能调用,25,系统功能调用过程,操作系统的用户接口,Linux,系统功能调用,abc();,abc();,syscall;,system_call:,sys_abc,SYSEXIT,sysabc(),用户态,核心态,用户程序,系统调用,在libc标准库,中的封装例程,系统调用,处理程序,系统调用,服务例程,26,例:getuid系统调用过程,操作系统的用户接口,Linux,系统功能调用,int main(),getuid();,int getuid(void),long_res;,int$0 x80;,ENTRY(system_call),pushl%esx,SAVE_ALL,GET_CURRENT(%ebx),call sys_getuid16,RESTORE_ALL,asmlinkage long,sys_getuid16(void),return high2lowuid,(current_uid);,用户程序,系统调用处理程序,标准C库,内核例程,27,2.Linux,系统功能调用的实现机制,Linux系统调用的进入,Linux系统的软中断指令是int 0 x80汇编语言指令,该指令的执行会发生中断,处理机的状态由用户态自陷到内核态,从system_call()开始执行系统调用处理程序。,当系统调用处理完毕后,通过iret汇编语言指令返回到,用户态。,操作系统的用户接口,Linux,系统功能调用,28,系统调用号,linux中,每个系统调用被赋予一个唯一的系统调用号;,系统调用号定义在,include/asm-i386/unistd.h,头文件中。,系统调用号格式如下:,#define _NR_restart_syscall 0,#define _NR_exit 1,#define _NR_fork 2,#define _NR_read 3,#define _NR_write 4,#define _NR_open 5,#define _NR_mq_getsetattr 282,操作系统的用户接口,Linux,系统功能调用,29,系统调用表,系统调用表记录了内核中所有已注册过的系统调用,,它是系统调用的跳转表。,系统调用表,是一个函数指针数组,表中依次保存所有,系统调用的函数指针,Linux系统调用表保存在arch/i386/kernel/下的entry.S中,操作系统的用户接口,Linux,系统功能调用,30,系统调用表格式如下,ENTRY(sy
展开阅读全文