Presentation is loading. Please wait.

Presentation is loading. Please wait.

第三章 用户界面 (一) 用户工作环境 (二) 操作系统的用户界面 (三) 系统功能调用 (四)Linux系统功能调用的实现.

Similar presentations


Presentation on theme: "第三章 用户界面 (一) 用户工作环境 (二) 操作系统的用户界面 (三) 系统功能调用 (四)Linux系统功能调用的实现."— Presentation transcript:

1 第三章 用户界面 (一) 用户工作环境 (二) 操作系统的用户界面 (三) 系统功能调用 (四)Linux系统功能调用的实现

2 3.1 用户工作环境 用户工作环境的形成 1. 系统要提供各种硬件、软件资源 2. 设计合理的操作命令 3. 形成一个可供使用的工作环境
将操作系统装入计算机并初始化

3 3.1.1 操作系统的引导 系统生成 系统引导(系统初启) 系统引导的方式 在一台裸机上安装操作系统的过程。
把操作系统的必要部分装入主存并使系统进行初始化工作,最终处于命令接收状态。 系统引导的方式  操作系统的引导有两种方式: 独立引导(bootup)(滚雪球)方式 辅助下装(download)方式

4 3.1.1 操作系统的引导 独立引导(bootup)方式: 辅助下装(download)方式: 适用于微机和大多数系统
操作系统的核心文件存储在系统本身的存储设备中 由系统自己将操作系统核心程序读入内存并运行 最后建立一个操作环境 适用于微机和大多数系统 辅助下装(download)方式: 操作系统的主要文件并不放在系统本身的存储设备中,而是在系统启动后,执行下装操作,从另外的计算机系统或者主机系统中将操作系统常驻部分传送到该计算机中,使它形成一个操作环境 优点:可以节省较大的存储空间,下装的操作系统也并非是全部程序代码,只是常驻部分或者专用部分,当这部分操作系统出现问题和故障时,可以再请求下装 适用于多计算机系统、分布式系统

5 WINDOWS引导 1. 打开机器电源; 2. ROM中引导程序运行装入系统盘中的主引导块;
3. 主引导块程序执行,启动DOS7.0引导程序做系统初始化的工作,包括系统资源初始状态的设置、系统主要数据结构初始化、引导图形用户界面程序; 4. 图形用户界面运行,生成用户的图形用户界面,系统初启工作完成。

6 UNIX系统初启 表示系统初启完成,等待用户键入命令。 1. 操作系统执行代码程序装入内存;
ROM中引导程序将主引导块装入内存,启动主引导程序运行; 主引导程序找到UNIX文件装入内存,并启动初启程序; 2. 存储空间及其管理机构初始化; 3. 与设备有关的初始化; 4. 与文件系统有关的初始化; 5. 创建0#和1#进程; 6. 1#进程创建各终端进程; 7. 终端进程运行shell; 8. 各用户终端上出现 login: 表示系统初启完成,等待用户键入命令。

7 功能:将OS读入内存,并将控制权交给OS的初始化程序。
LILO、GRUB LILO实例: boot = /dev/hda   vga = normal   read-only   prompt   default = dos   timeout = 30   append="hdc=ide-scsi"   image = /boot/vmlinuz   label = linux   root = /dev/hda2   initrd = /boot/initrd  CPU、内存初始化 中断向量表初始化 为进程调度程序做准备 设置基准时钟 内核的内存分配 文件系统初始化 建立init进程

8 3.1.2 运行一个用户程序的过程 使用计算机解决问题大致分为三个步骤:建立数学模型;选择计算方法;编程序、 上机调试。
1. 作业 计算机系统按指定步骤对初始数据进行处理并得到计算结果的加工过程。 2. 作业步 一个作业可划分成若干个部分,每个部分,即加工工作中的一个步骤称为作业步。 3. 作业处理步骤及关系

9 4. 连接类型 (1)静态连接 源程序经编译后,生成一个可重定位的目标模块,并产生内部符号表和外部符号表,供连接程序(Link)使用。
缺点:将所需的外部函数连接到目标文件中形成为一个可执行文件。若多个应用程序都调用了同一个库中的外部函数,则应用程序的目标文件中都包含了这个外部函数对应的代码。 (2)动态连接 不需要将外部函数连接到目标文件中。而是在应用程序中需要调用外部函数的地方作记录,并说明要使用的外部函数名和引用入口号。 DLL(动态链接库)

10 3.2 操作系统的用户界面 操作系统的用户界面 操作系统的用户界面(或称接口)是操作系统提供给用户与计算机打交道的外部机制。用户能够借助这种机制和系统提供的手段来控制用户所在的系统。 操 作 系 统

11 3.2.1 操作系统提供的用户界面 (1)操作界面(命令接口) 用户组织工作流程和控制程序运行的界面或接口
(1)操作界面(命令接口) 用户组织工作流程和控制程序运行的界面或接口 (2) 系统功能服务界面(程序接口) 用户程序在运行过程中,使用系统功能调用来请求操作系统的服务

12 3.2.2 操作命令 1. 操作命令与操作系统类型的关系 作业控制语言 (脱机方式) —— 批处理操作系统
键盘命令、图形用户界面 (联机方式) —— 分时操作系统 个人计算机操作系统

13 2. 作业控制语言(JCL) 一种命令语言,包括作业处理命令和资源请求命令 脱机方式下系统提供作业控制语言 批处理系统中作业的组成
作业申请:作业名、需用CPU时间、最迟完成时间、资源请求(主存、外设)等 操作说明书:编辑命令、编译命令、连接命令、运行命令等 程序与数据

14 3. 键盘命令 操作系统为联机用户提供的一种操作命令,用户通过这一组命令直接控制和干预程序的运行 系统为联机用户提供键盘命令 键盘命令的功能
分时操作系统 —— 用于注册、通信、注销的各类命令 个人计算机操作系统 —— 用于通信的各类命令

15 分时系统中用户通过键盘直接向系统发布各种命令
Windows系统的键盘命令 内部命令:系统的命令程序command.com中 外部命令:所有可执行文件的文件名 .exe(大模式执行文件) .com(小模式执行文件) .bat(批处理文件) Linux/UNIX系统的键盘命令 基本命令:命令的可执行文件均在/bin目录下 高级命令:可执行文件名,存放在文件中

16 3.2.3 图形化用户界面 1. 什么是图形化的用户界面 图形化用户界面是良好的用户交互界面,它将菜单驱动、图符驱动、面向对象技术等集成在一起,形成一个图文并茂的视窗操作环境。

17 (1) 菜单驱动方式 面向屏幕的交互方式,将键盘命令以屏幕方式来体现 命令和系统能完成的操作,用菜单分类分窗口列出
用户像点菜一样选择命令或某种操作,以控制系统去完成指定的工作 菜单系统的类型有多种,如下拉式菜单、上推式菜单和随机弹出式菜单

18 (2) 图符驱动方式 一种面向屏幕的图形菜单选择方式
图符(Icon)也称图标,是一个小小的图符符号,代表操作系统中的命令、系统服务、操作功能、各种资源 图形化的命令驱动方式:当需要启动系统命令、请求系统资源或操作功能时,可以选择代表它的图符,并借助标记输入设备(鼠标),采用鼠标的点击和拖拽功能,完成命令和操作选择及执行

19 (3) 图形化用户界面 良好的用户交互界面,将菜单驱动、图符驱动、面向对象技术等集成在一起,形成一个图文并茂的视窗操作环境。
Microsoft公司的Windows系列就是这种图形化用户界面的代表。

20 2. 图形化的用户界面的特点 所有程序以统一的窗口形式出现 提供统一的菜单格式 系统资源、系统命令、操作功能以图标表示 统一的操作方法

21 3.3 系统功能调用 系统调用包括:进程和作业管理、文件操作、内存管理、设备管理、信息维护和通信等。 应 用 程 序 中 央 处理机 存储器
应 用 程 序 中 央 处理机 存储器 系统调用 外 部 设 备 应 用 程 序 系统调用包括:进程和作业管理、文件操作、内存管理、设备管理、信息维护和通信等。

22 3.3.1操作系统如何为用户程序提供服务? OS 显示 功能号 地址 显 示 打 印 打印 读文件 INT .
功能号 地址 显 示 打 印 读文件 OS的系统调用分支表 OS代码 显示 打印 OS INT 操作系统提供实现各种功能的例行子程序 用户程序

23 3.3.2如何调用操作系统服务功能? 操作系统采用统一的方式: 访管指令、访管中断
访管指令(自愿进管指令) svc n svc表示机器访管指令的操作码记忆符 n为地址码(功能号) 访管中断 当处理机执行到访管指令时就发生中断,该中断称为访管中断,表示正在运行的程序对操作系统的某种需求。

24 3.3.2如何调用操作系统服务功能? 操作系统提供实现各种功能的例行子程序,其中的每一个功能对应访管指令的一个功能号。
例如: svc 0 显示一个字符 svc 1 打印一个字符串 …… 系统功能调用是用户在程序一级请求操作系统服务的一种手段,它不是一条简单的硬指令,而是带有一定功能号的“访管指令”。它的功能并非由硬件直接提供,而是由操作系统中的一段程序完成,即由软件方法实现。

25 3.3.3 系统功能调用的实现 … … … … mov…int 21h 用户程序 访管中断处理程序 1 2 中断进入 查表 1 保护现场
1 2 n-1 系统调用入口地址表 访管中断处理程序 保护现场 取系统调用号 恢复现场 mov…int 21h 中断进入 查表 调用 1 2 中断返回 n-1 用户程序

26 系统调用的特点 每个系统调用对应一个系统调用号 每个系统调用有一个对应的执行程序段 每个系统调用要求一定数量的输入参数和返回值
不同的操作系统,系统调用实现的具体方法有所不同,但其实质特点相同: 每个系统调用对应一个系统调用号 每个系统调用有一个对应的执行程序段 每个系统调用要求一定数量的输入参数和返回值 整个系统有一个系统调用执行程序入口地址表

27 系统功能调用 vs. 库函数 在程序设计语言(如C语言)中,往往提供与各系统调用对应的库函数,应用程序可通过对应的库函数来使用系统调用
库函数的目的是隐藏访管指令细节,使系统调用更象过程调用,但一般地说,库函数属于用户程序而非系统程序 操作系统为用户提供系统调用也出于安全和效率考虑,使得用户态程序不能自由地访问内核关键数据结构或直接访问硬件资源

28 系统服务调用请求

29 UNIX/Linux系统程序、库函数、系统调用的 分层关系
操作系统(进程管理、存储管理、文件管理、设备管理等) 标准库函数(打开、关闭、读、写、创建、撤销等) 标准系统程序(实用程序) (汇编、编译、编辑、Shell等) 用户 用户接口 库函数 接口 系统调用 硬件 (处理器、存储器、磁盘、打印机、终端等)

30 Win32API和UNIX/Linux系统调用粗略对应关系
UNIX/Linux Win 说明 fork CreatProcess 创建进程 waitpid WaitForSingleObject 等待进程终止 open/close CreatFile/CloseHandle 创建或打开/关闭文件 read/write ReadFile/WriteFile 读/写文件 lseek SetFilePointer 移动文件指针 mkdir/rmdir Creat/Remove Directory 建立/删除目录 stat GetFileAttributesEx 获得文件属性

31 系统调用与过程(函数) 调用的区别 调用形式 被调用代码的位置 提供方式 调用的实现

32 3.4 Linux系统调用 Linux系统调用由两部分组成: 核心函数 实现系统调用功能的(内核)代码
核心函数 实现系统调用功能的(内核)代码 接口函数 提供给应用程序的API,以库函数形式存在Linux的lib.a中

33 Linux系统调用 系统调用入口表: arch/x86/kernel/syscall_table_32.S
ENTRY(sys-call-table) .long sys_restart_syscall /* 0-old setup(),used for restarting */ .long sys_exit .long sys_fork .long sys_read .long sys_write .long sys_open /* 5 */ .long sys_close . . . .long sys_rt_tgsigqueueinfo /* 335 */ .long sys_perf_event_open .long sys_recvmmsg

34 Linux系统调用 系统调用函数: kernel/sys.c asmlinkage int sys_mycall(int number) {
#define SYSCALL_DEFINE 0(name)        asmlinkage long sys_##name(void) SYSCALL_DEFINE1(name, ...)        SYSCALL_DEFINEx(1, __##name, __VA_ARGS__) __SYSCALL_DEFINEx(x, name, ...)  asmlinkage long sys##name(_SC_DECL##x(__VA_ARGS__)) SYSCALL_DEFINE1(mycall, unsigned int, number) {         return number; } asmlinkage int sys_mycall(int number) {   return number; }

35 Linux系统调用 系统调用号: arch/x86/include/asm/unistd_32.h
/* * This file contains the system call numbers. */ #define __NR_restart_syscall #define __NR_exit 1 #define __NR_fork 2 #define __NR_read 3 #define __NR_write 4 #define __NR_open 5 …… #define __NR_perf_event_open 336 #define __NR_recvmmsg 337 Linux系统调用号就是系统调用入 口表中位置序号 系统调用通过接口函数将调用号 传给内核 内核转入系统调用控制程序再通 过调用号位置来定位核心函数 Linux内核的陷入由0x80 (int80h) 中断实现

36 Linux系统调用控制程序 (1)取系统调用号,检验合法性; (2)建立调用堆栈,保护现场信息; (3)根据系统调用号定位核心函数地址;
(4)根据通用寄存器内容,从用户栈中取入口参数; (5)核心函数执行,把结果返回应用程序; (6)执行退栈操作,判别调度程序scheduler是否将执行。

37 第三章 小 结 1. 操作系统提供哪两种接口? 2. 举例说明实际操作系统的用户界面。 3. 什么是系统调用,实现过程。
第三章 小 结 1. 操作系统提供哪两种接口? 2. 举例说明实际操作系统的用户界面。 3. 什么是系统调用,实现过程。 4. Unix/Linux系统调用的实现过程。

38 课堂练习 为什么分时系统的响应比较快?实时信息处理系统响应也很快,与分时系统的本质区别是什么?
在中断处理过程中,软件和硬件分别完成了什么工作?请详细说明。


Download ppt "第三章 用户界面 (一) 用户工作环境 (二) 操作系统的用户界面 (三) 系统功能调用 (四)Linux系统功能调用的实现."

Similar presentations


Ads by Google