操作系统的用户接口

上传人:kms****20 文档编号:56823052 上传时间:2018-10-16 格式:PPT 页数:37 大小:845.50KB
返回 下载 相关 举报
操作系统的用户接口_第1页
第1页 / 共37页
操作系统的用户接口_第2页
第2页 / 共37页
操作系统的用户接口_第3页
第3页 / 共37页
操作系统的用户接口_第4页
第4页 / 共37页
操作系统的用户接口_第5页
第5页 / 共37页
点击查看更多>>
资源描述

《操作系统的用户接口》由会员分享,可在线阅读,更多相关《操作系统的用户接口(37页珍藏版)》请在金锄头文库上搜索。

1、操作系统的用户接口,操作系统的用户接口,用户工作环境 运行一个应用程序的过程 操作系统用户界面 系统功能调用 Linux系统功能调用,1,操作系统的用户接口主要内容,2,1. 用户工作环境的形成 系统要提供各种硬件、软件资源 设计并提供使用方便的命令集合 将OS装入计算机并初始化,形成可供使用的工作环境 2. 操作系统的初启 系统引导的任务将操作系统的必要部分装入主存并对系统进行初始化工作,最终使系统处于命令接收状态。,操作系统的用户接口用户工作环境,3,操作系统的用户接口用户工作环境,系统引导的方式 独立引导方式(滚雪球方式) OS核心文件存储在系统本身的存储设备中,由系统自己将OS核心程序

2、读入主存并运行,建立一个操作环境。适用于微机和大多数系统,辅助下装方式OS主要文件不放在系统本身的存储设备中,在系统启动后执行下装操作,从另外的计算机系统中将操作系统常驻部分传送到该计算机中,使它形成一个操作环境。适用于多计算机系统、由主控机与前端机构成的系统以 及分布式系统。,4,操作系统的用户接口用户工作环境,3. 独立引导方式(滚雪球方式) 的过程 初始引导 系统加电; 执行初始引导程序,对系统硬件和配置进行自检,保证系统没有硬件错误; 从硬盘中读入操作系统引导程序,并将控制权交给该程序模块。 引导程序执行 引导程序执行,将操作系统核心文件读入内存,并将控制交给核心的初始化程序。,5,操

3、作系统的用户接口用户工作环境,核心初始化 初始化系统数据结构及参数 系统加电建立进程有关的数据结构 ; 获得自由存储空间的容量,建立存储管理的数据结构 ; 建立系统设备和文件系统的数据结构 ; 初始化时钟。 系统初始化 完善OS的操作环境,装载命令处理程序(或图形用户界面),并初始化; 在多用户系统中,为每个终端建立命令解释进程,使系统处于命令接收状态。,6,操作系统的用户接口用户工作环境,4. Linux系统初启Linux系统是以滚雪球的方式启动加电或复位 BIOS的启动 Boot Loader OS初始化 系统加电或复位 对主存中所有的数据清零,对内存进行校验,若无错,CS:IP BIOS

4、入口。,7,操作系统的用户接口用户工作环境,BIOS启动在ROM中的引导程序放在固定位置:FFFF:0000 CPU从这里开始执行。 上电自检; 对硬件设备进行检测和连接,并将测得的数据BIOS数据区; 从盘中读入Boot Loader(引导程序)。从硬盘启动时,读入零柱面零磁道1扇区MBR(MasterBoot Record),将控制权交Boot Loader,Loader(引导程序)功能:将OS读入内存,并将控制权交给OS的初始化程序。,8,操作系统的用户界面用户工作环境,系统核心初始化( Setup.s) Setup的工作 检查调入内存中的代码 ; 获取内存容量信息,设置设备模式; 屏蔽

5、中断,准备进入保护模式; 设置中断描述符表(idt),全局描述符表(gdt);控制权交给 Heads。Heads的工作 对中断向量表作准备工作; 检查CPU类型; 调用Setup_paging进行页面初始化; 调用main.c中的Start_kernel()。,9,操作系统的用户接口用户工作环境,Start_kernel()的工作 对与CPU、内存等最基本硬件相关部分进行初始化; 对中断向量表进行初始化; 为进程调度程序作准备; 设置基准时钟; 内核的内存分配; 对文件系统进行初始化; 建立init进程。init进程对每一个联机终端建立“getty”进程,getty在终端上显示“login”,

6、等待用户登录。,10,5. 系统生成 什么是系统生成 所谓系统生成,就是指为了满足物理设备的约束和需要的系统功能,通过组装一批模块来产生一个清晰的、使用方便的操作系统的过程。 系统生成的内容 根据硬件部件确定系统构造的参数,编辑系统模块的参数,并且连接系统模块成为一个可执行的程序。,操作系统的用户接口用户工作环境,11,1. 作业与作业步 作业 计算机系统按指定步骤对初始数据进行处理并得到计算结果的加工工作。 作业步 加工工作中的一个步骤称为作业步。 2. 作业处理步骤 编辑 建立一个新文件,或对已有的文件中的错误进行修改。 编译 将源程序翻译成浮动的目标代码。,操作系统的用户接口应用程序的处

7、理,12,连接 主程序和其他所需要的子程序和例行程序连接装配在一起,使之成为一个可执行的、完整的主存映像文件。 运行 将主存映像文件调入主存,启动运行,得出计算结果。 作业步之间的关系 每个作业步运行的结果产生下一个作业步所需要的文件; 一个作业步能否正确地执行,依赖于前一个作业步是否成功地完成。,操作系统的用户接口应用程序的处理,13,3. 连接类型 静态连接 一个源程序经编译后,生成一个可重定位的目标模块,并产生内部符号表和外部符号表,供连接程序 (Link)使用。 内部符号表 本模块可以被其他程序调用的入口点。 外部调用表 本模块要调用的外部的程序模块名。,操作系统的用户接口应用程序的处

8、理,14,连接需要做的工作 将各模块连接成为一个整体; 构造全程符号表,在其中填写模块的逻辑地址; 查找各程序段的外部调用表,填入对应调用函数的地址。 静态连接的缺点 静态连接将所需的外部函数链接到目标文件中形成为一个可执行文件。若多个应用程序都调用了同一个库中的外部函数,那么,应用程序的目标文件中都包含了这个外部函数对应的代码。,操作系统的用户接口应用程序的处理,15,动态逻辑 动态连接不需要将外部函数链接到目标文件中。而是在应用程序中需要调用外部函数的地方作记录,并说明要使用的外部函数名和引用入口号。 形成函数调用链表所需支持 DLL (动态链接库)当 Windows的装载程序将应用程序和

9、DLL装入主存后,装载程序会遍历函数调用链表,将DLL中函数在主存的入口(段:偏移)填入链表中的每个结点。,操作系统的用户接口应用程序的处理,16,1. 什么是操作系统的用户界面 操作系统的用户界面 (或称接口) 是操作系统提供给用户与计算机打交道的外部机制。用户能够借助这种机制和系统提供的手段来控制用户所在的系统。,操作系统的用户接口用户接口,17,2. 操作系统提供的用户界面 操作界面(命令接口) 用户使用这个操作界面来组织工作流程和控制程序的运行。系统功能服务界面(程序接口) 用户程序在其运行过程中,使用系统功能调用来请求操作 系统的服务。,操作系统的用户接口用户接口,操作命令:作业控制

10、语言键盘命令图形界面,系统功能调用,18,3. 操作命令与操作系统类型的关系 作业控制语言 批处理操作系统 键盘命令 分时操作系统 个人计算机操作系统 图形用户界面 分时操作系统个人计算机操作系统,操作系统的用户接口用户接口,实际操作系统:MS-DOS Windows Linux (UNIX) 提供什么样的用户界面?,19,4. 实例操作系统提供的用户界面 MS-DOS 键盘命令系统功能调用 Windows 图形用户界面 系统功能调用 Linux (UNIX) 键盘命令 (XWindow)系统功能调用,操作系统的用户接口用户接口,20,5. 系统功能调用,操作系统的用户接口用户接口,操作如何为

11、用户提供服务 操作系统提供实现各种功能的例行子程序。,21,操作系统的用户接口用户接口,如何调用操作服务功能 ?,采用统一进管方式 系统提供 访管指令、访管中断,访管指令(自愿进管指令)svc n svc 表示机器访管指令的操作码记忆符,n为地址码(功能号),22,操作系统的用户接口用户接口,访管中断当处理机执行到访管指令时就发生中断,该中断称为访管中断,它表示正在运行的程序对操作系统的某种需求。,操作系统提供实现各种功能的例行子程序,其中的每一个功能对应访管指令的一个功能号。svc 0 显示一个字符 svc 1 打印一个字符串 ,什么是系统调用系统功能调用是用户在程序一级请求操作系统服务的一

12、种手段,它是带有一定功能号的“访管指令”。其功能是由操作系统中的程序完成的,即由软件方法实现的。,23,操作系统的用户接口用户接口,系统调用的实现,24,1. Linux系统功能调用的过程 在Linux系统中,系统调用通过异常类型实现; 当执行了int 0x80指令而发生的软件中断; 系统自动将用户态切换为核心态来处理该事件,执行自陷处理程序(系统调用处理程序)。,操作系统的用户接口Linux系统功能调用,25,系统功能调用过程,操作系统的用户接口Linux系统功能调用,26,例:getuid系统调用过程,操作系统的用户接口Linux系统功能调用,27,2. Linux系统功能调用的实现机制

13、Linux系统调用的进入 Linux系统的软中断指令是int 0x80汇编语言指令 该指令的执行会发生中断 处理机的状态由用户态自陷到内核态 从system_call()开始执行系统调用处理程序。 当系统调用处理完毕后,通过iret汇编语言指令返回到用户态。,操作系统的用户接口Linux系统功能调用,28,系统调用号 linux中,每个系统调用被赋予一个唯一的系统调用号; 系统调用号定义在include/asm-i386/unistd.h头文件中。 系统调用号格式如下: #define _NR_restart_syscall 0#define _NR_exit 1#define _NR_for

14、k 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(sys_call_table).long sys_restart_

15、syscall /* 0 */.long sys_exit /* 1 */.long sys_fork /* 2 */.long sys_read /* 3 */.long sys_write /* 4 */.long sys_open /* 5 */.long sys_mq_getsetattr /* 282 */,操作系统的用户接口Linux系统功能调用,31,系统调用处理程序系统调用处理程序是system_call(),主要工作如下 宏SAVE_ALL保护现场; 正确性检查 ; 依eax中所包含的系统调用号,调用其对应的服务例程; 系统服务例程结束时,通过宏RESTORE_ALL恢复寄存器; 最后通过iret指令返回。,操作系统的用户接口Linux系统功能调用,32,3. 增加一个新的系统功能调用的方法 添加新的服务例程 在/usr/src/linux/kernel/sys.c文件中增加一个新的函数,该函数的名字是sys_mysyscall 例:一个简单的系统调用,其功能是返回一个整型值asmlinkage int sys_mycall(int number) return number; ,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 科普知识

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号