[TOC]
用户界面
主要内容
1.用户环境
2.操作界面
3.系统调用
重点
1.批处理和Shell脚本编程
2.系统调用机制
课件知识小结
3.1用户环境和构造
用户环境:用户工作的软件和硬件环境,包括桌面环境和硬件环境
用户环境构造:按照用户要求和硬件特性安装和配置操作系统,提供操作命令和界面、系统用户手册
3.2用户界面
定义:OS提供给用户控制计算机的机制,又称用户接口
类型:
1.操作界面
2.系统调用(System Call,系统功能调用,程序界面)
3.3操作界面
类型:
图形用户接口
操作命令(普通命令)
批处理与脚本程序
图形用户接口
GUI,Graphic User Interface
窗口,图标,菜单,按钮,鼠标(消息,事件)
操作命令(普通命令)
在控制台环境下接收键盘输入的命令
批处理与脚本程序(重点)
在控制台环境下自动处理一批命令
Windows批处理程序
Linux Shell脚本程序
批处理
.bat文件,可直接运行
普通命令的集合,批执行,由command解释执行。
支持变量替换、条件、转移、循环、注释等简单语法
Shell
Shell是操作系统与用户交互的界面
Bash
命令行编辑功能
命令行补全功能
重定向与管道
标准输入/输出
重定向
把命令缺省的输入来源或输出方向修改为其他文件/设备
管道
特殊的重定向操作,程序的输出作为另一个程序的输入
Shell脚本
脚本(Script)通过类似程序的方式执行具有一定逻辑
顺序的命令序列完成较复杂的功能和人机交互。
脚本程序保存在文本文件中;
脚本程序是Shell命令语句的集合
所有命令逐行执行(按逻辑)。
凡能shell中直接执行的命令,都可以在脚本中使用。
脚本中还可以使用一些不能在shell下直接执行的语句
执行Shell脚本需要具有可执行属性(x)
运行脚本程序三个方法
read命令
echo命令
3.5系统调用(重点)
printf( ),exit( )与add( )比较
特点:涉及显卡和进程操作
文件操作,字符输出/输入操作
特点:
文件/磁盘操作
内核中实现
DOS:21h中断显示字符串(09号功能)
特点:09号功能涉及外设(显卡)操作
系统调用:
操作系统内核为应用程序提供的一系列服务/函数
特点:
一般涉及核心资源或硬件的操作
系统调用运行于核态。
系统调用过程会产生中断:自愿中断
系统调用数量众多
系统调用实现形式
具体OS中系统调用的实现
DOS: INT 21H
特点:利用AH寄存器(DOS)存放系统调用的编号
注:LINUX中利用EAX寄存器存放系统调用的编号
隐式系统调用
编译时隐式系统调用转换为显示的系统调用,如这里的调用了INT 80H
这里的printf函数其实用到了系统调用
3.4Linux系统调用
工作原理
简答
1.BIOS中断是INT XXh的形式,例如INT 13H是磁盘读写服务。那么INT 21H与这些BIOS中断的机制是不是一样的呢?
机制一样,但实现方法有区别。二者都是中断,过程表现为识别中断源、保护断点和现场、装入中断服务程序的入口地址、进入中断服务程序、结束中断程序后恢复现场和断点、中断返回。但BIOS中断由硬件电路实现,INT 21H由软件程序指令实现
2.操作系统的初始引导过程涉及哪些程序模块,各自存放的介质是什么,存放的形式是什么?
操作系统初始引导是指通过引导程序把操作系统核心装入内存并使之接管计算机系统的过程。首先BIOS读取MRB引导程序到内存运行,MRB的引导程序根据BIOS提供的参数读取硬盘指定位置的文件到内存,该文件加载指定操作系统的内核并初始化基本参数,操作系统内核逐步加载剩余操作系统程序,最后完全控制计算机。
3.比较DOS、Windows7与Linux早期版本都有哪些典型的操作界面?操作界面对普通用户(办公或娱乐)选择操作系统有何影响?
主要有GUI界面(win7)和命令行(DOS、Linux)两种。GUI界面更易被初学者或普通用户接受,操作简单并且可以浏览使用各种图形数据,命令行界面的操作需要学会使用指令,入门成本高,且难以处理复杂图像应用
4.Linux的Shell能否看成操作系统的内核功能?如何理解Shell与内核之间的交互?
不能。Shell可以看作是用户和操作系统信息交互的中间桥梁。用户用过Shell将命令下达给操作系统,操作系统通过Shell将需要展示给用户的信息返回,Shell本身不执行命令,仅仅是组织和管理命令
4.printf,open都是Linux中典型的隐式系统调用。当我们在“为Linux内核增加新的系统调用实验”中增加一个新的系统调用后,我们在应用程序中是如何调用的它们的?为何我们不能像printf,open等函数一样简单地调用?
不能。printf和open是高级语言的API接口,Linux中隐式系统调用也会在编译时转化为显式的系统调用,最终用到INT80h。我们在自己制作的操作系统中加入的自定义系统调用,并没有现成的高级语言API接口供我们使用,可以通过汇编语言调用INT80端口使用或封装成高级语言API接口直接调用。
MOOC单元作业
1.系统BIOS的功能有哪些?
BIOS全程Basic I/O System,是一种固件(Firmware),是以硬件形式储存的软件,储存主板启动配置信息、基本设备I/O服务,完成系统的加电自检、初始化基本硬件
2.计算机加电后执行的第一条指令存放在哪里,有什么特点?
BIOS的指令位置位于F0000-FFFFF处,按下开机或重启键后执行的第一条指令位于FFFFQ处,执行JUMP POST(加电自检)动作,POST位于BIOS内部,该指令由硬件电路实现,功能是初始化基本硬件,若自检错误通过喇叭或数显二极管的方式提示
3.何为操作系统的生成?简述Linux内核的生成过程
操作系统的生成是指满足特定硬件环境和用户需要,组装和构建操作系统的过程。
Linux操作系统的生成过程如下:
1、获取Linux内核的源代码
2、选择和启动内核配置程序
3、根据需要配置内核模块的参数
4、程序编译新的内核
5、编译和安装模块
6、启动新内核
4.何为用户界面?有哪些类别?各有什么特点?
用户界面是指操作系统提供给用户控制计算机的机制,又称用户接口。分为操作界面和系统调用。
操作界面通过GUI或控制台接受普通命令、批处理程序或Shell指令,一般不涉及核心资源或硬件操作。
系统调用需要操作系统内核为应用程序提供服务或函数,CPU运行于核态,调用过程会产生自愿中断。
5.何为shell?有哪4类典型的shell?
Shell可以看作是用户和操作系统信息交互的中间桥梁。用户用过Shell将命令下达给操作系统,操作系统通过Shell将需要展示给用户的信息返回,Shell本身不执行命令,仅仅是组织和管理命令。
Shell有Bsh、Csh、Ksh、Bash四种,前三种是早期版本,各有优缺点,Bsh有较强编程功能,Csh交互方便,Ksh结合Bsh和Csh优势,Bash是Bsh的升级并且吸收了Ksh的特性
6.何为输出重定向?举一个Linux或Windows中的重定向的应用命令或例子
输出重定向是指将命令输出由默认的显示器更改为指定的文件。
在Linux命令行中输入ls /etc/ > etcdir.log,可以将原本会在命令行中显示的etc目录信息储存在当前目录下的etcdir.log文件中。
7.试述运行shell脚本程序的三种方式
第一种是直接运行,用缺省版本的Shell运行程序;
第二种是使用特定版本,在运行程序时输入Shell版本+程序名可以使用特定版本,如bash my_script 。
第三种是在脚本文件首行指定。在脚本开头加一行:#!/bin/bush
8.系统调用与普通用户态函数比较,有何异同点
系统调用一般设计核心资源或硬件的操作,CPU运行于核态,每个系统调用具有唯一ID,调用过程会产生自愿中断,实现过程较复杂。相同点是都属于用户接口,实现用户对计算机的控制。
9.何为隐式系统调用
隐式调用是指通过高级语言的API接口在编译时转化为显式的系统调用,最终用到特定的中断执行系统调用指令。使用隐式系统调用可以快捷方便的使用计算的机某些内核资源
10.试述Linux系统调用(INT 80H)的工作原理
应用程序调用库函数(API);
API将系统调用号存入EAX,然后通过中断调用使系统进入内核态;
内核中的中断处理函数根据系统调用号,调用对应的内核函数(系统调用);
系统调用完成相应功能,将返回值存入EAX,返回到中断处理函数;
中断处理函数返回到API中;
API将EAX返回给应用程序。
11.试述为Linux增加新的系统调用的过程
1、在sys.c中加入函数
2、添加声明
3、添加ID
4、重新配置安装内核