操作系统接口API
命令接口
定义:操作系统向用户提供的一组键盘操作命令。用户通过键盘输入命令,命令解释程序接收并解释这些命令,然后调用操作系统内部的相应程序,完成相应的功能。
分类:
- 联机命令接口:用户直接与操作系统交互,通过键盘输入命令并立即得到响应。
- 脱机命令接口:用户事先用作业控制命令写一份作业操作说明书,连同作业一起提交给系统,系统按照作业控制命令的要求执行作业,用户不能直接干预作业的运行。
2. 程序接口
定义:也称为系统调用接口或应用编程接口(API),是操作系统内核与应用程序之间的接口。它由一组系统调用组成,每个系统调用都是一个能完成特定功能的子程序。系统调用只能在程序中调用,不能直接作为命令从键盘上输入执行。
功能:程序接口允许程序调用操作系统的服务和功能,如文件管理、设备管理、进程控制等。
3. 图形接口
定义:为了方便用户使用操作系统而提供的图形化操作界面。用户通过鼠标、窗口、菜单、图标等图形用户界面工具,可以直观、方便、有效地使用系统服务和各种应用程序及实用工具。
特点:图形接口提高了用户与操作系统之间的交互性,使得用户不必记住复杂的命令名和格式,即可进行操作。
相关命令接口
一、CMD的定义与功能
定义:CMD是命令提示符(Command Prompt)的缩写,是Windows系统中的一个命令行解释器。它允许用户在命令行中输入命令并执行相应的操作,这些操作可以包括文件管理、系统配置、网络管理、进程控制等多种任务。
功能:CMD提供了丰富的命令集,用户可以通过这些命令来自动化任务、批处理文件、进行系统调试等。此外,CMD还支持管道命令、重定向命令等特殊命令,这些命令可以将命令的输入输出进行连接和重定向,实现更复杂的操作。
cmd 差不多是一个不断循环的一个状态,搜寻相对的一些系统接口或者是应用程序接口。可以直接使用对应的命令接口。 这也符合相对应的一些操作,操作系统内核上方提供的是一些系统和应用程序接口。
二. GUI界面
1. GUI元素
GUI界面由一系列图形元素组成,这些元素包括窗口、菜单、按钮、文本框、图标等。操作系统需要支持这些元素的创建、显示和管理。这些元素通常通过特定的图形库或框架来实现,如Java的AWT和Swing、Windows的Win32 API等。
2. 事件处理机制
GUI界面中的元素需要能够响应用户的操作,如点击按钮、输入文本等。为了实现这一点,操作系统需要提供事件处理机制。当用户与GUI元素交互时,操作系统会捕获这些事件,并将其转发给相应的应用程序进行处理。应用程序根据事件的类型和参数来执行相应的操作,并更新GUI界面以反映操作结果。
3. 窗口系统
窗口系统是GUI的核心组成部分之一,它负责管理和显示GUI元素。窗口系统允许应用程序创建窗口,并在窗口中放置各种GUI元素。此外,窗口系统还提供了窗口之间的交互机制,如切换窗口、最小化窗口、最大化窗口等。
4. 图形渲染和显示
GUI界面中的图形元素需要通过图形渲染技术来在屏幕上显示。操作系统需要提供图形渲染接口,以便应用程序能够使用这些接口来绘制图形元素。图形渲染接口通常包括二维图形绘制、三维图形绘制、图像处理等功能。
5. 用户交互设计
GUI界面的设计对于用户体验至关重要。操作系统需要提供一套用户交互设计规范,以指导应用程序开发者如何设计GUI界面。这些规范通常包括界面布局、色彩搭配、字体选择、图标设计等方面的要求。
相关系统接口
操作系统的系统调用接口是用户程序与操作系统内核之间的桥梁。系统调用提供了一组定义良好的函数,用户程序可以通过这些函数请求操作系统提供的服务,如文件操作、进程控制、通信和设备管理等。以下是一些常见的系统调用接口及其功能:
- 文件操作:
- open
:打开文件,返回文件描述符。
- close
:关闭文件描述符。
- read
:从文件描述符指向的文件中读取数据。
- write
:向文件描述符指向的文件中写入数据。
- lseek
:移动文件描述符中的文件偏移量。
- 进程控制:
- fork
:创建一个新的进程,称为子进程,它是调用进程的复制。
- exec
:运行一个新程序,替换当前进程的映像。
- wait
:等待子进程结束,并获取它的终止状态。
- exit
:终止进程并返回状态码给父进程。
- 通信:
- pipe
:创建管道,用于进程间的通信。
- socket
:创建套接字,用于网络通信。
- bind
:将套接字绑定到特定的地址和端口。
- listen
:使套接字被动监听连接请求。
- accept
:接受连接请求,创建一个新的套接字用于通信。
- 设备管理:
- ioctl
:控制设备的特殊操作。
- read
/write
:用于设备文件的读写操作。
- 信号处理:
- kill
:发送信号给进程或进程组。
- signal
:设置信号处理函数。
- sigaction
:设置信号处理函数,比signal
更灵活。
- 内存管理:
- sbrk
:改变进程的数据段大小。
- mmap
:将设备内存映射到进程的地址空间。
- 时间与日期:
- time
:获取当前时间。
- gettimeofday
:获取更精确的当前时间。
- 安全:
- chmod
:改变文件的权限。
- chown
:改变文件的所有者。
特权指令和非特权指令
特权指令
特权指令是那些能够影响系统状态或执行关键操作的指令。这些指令通常只能由操作系统的内核执行,用户程序不能直接执行这些指令。特权指令的例子包括:
内存管理:如分配或释放内存,修改内存管理单元(MMU)的设置。
硬件访问:直接访问硬件设备,如直接控制硬盘、网络接口卡等。
进程控制:如创建或终止进程,改变进程状态。
中断处理:响应硬件中断,如键盘输入、定时器中断等。
系统调用:执行系统调用,如文件操作、进程间通信等。
时钟管理:设置系统时间,调整时钟频率等。
非特权指令
非特权指令是那些对系统状态影响较小,或者不涉及关键系统资源的指令。用户程序可以执行这些指令,但它们的执行通常受到操作系统的监控和限制。非特权指令的例子包括:
算术运算:如加法、减法、乘法、除法等。
逻辑运算:如逻辑与、或、非等。
数据移动:在内存中移动数据,如加载、存储指令。
条件分支:根据条件跳转到程序的另一部分执行。
系统调用接口:通过系统调用请求操作系统服务,但实际的系统调用执行是由内核以特权模式完成的。
保护机制
操作系统通过以下机制来区分特权指令和非特权指令:
处理器模式:处理器通常有两种模式,即用户模式和内核模式。特权指令只能在内核模式下执行,而非特权指令可以在用户模式下执行。
权限检查:当用户程序尝试执行特权操作时,操作系统会检查其权限,如果没有相应的权限,则会拒绝执行。
内存保护:操作系统通过内存管理机制保护内核代码和数据不被用户程序访问或修改。
*但是可以委派,针对相关的内容进行委派职能 *
cpu状态
用户态(User Mode)
权限级别:较低的权限级别。
访问限制:在用户态下运行的程序(即用户程序)只能访问有限的硬件资源和执行非特权指令。它们不能直接访问硬件设备,如内存管理、磁盘驱动器、网络接口等。
目的:为了保护操作系统内核免受用户程序的错误或恶意行为的影响。
常见操作:执行常规的程序逻辑,如算术运算、数据移动、条件分支等。
系统调用:当用户程序需要操作系统服务(如文件操作、进程控制)时,它通过系统调用请求内核态的服务。这时,处理器会从用户态切换到核心态来执行这些服务。
核心态(Kernel Mode)
权限级别:较高的权限级别。
访问能力:在核心态下运行的代码(即操作系统内核和驱动程序)可以访问所有的硬件资源和执行所有类型的指令,包括特权指令。
目的:管理硬件资源,提供系统服务,以及维护系统的整体稳定性和安全性。
常见操作:处理中断和异常、执行系统调用、管理内存、调度进程、处理硬件设备的输入/输出请求等。
切换:当用户程序通过系统调用请求操作系统服务时,处理器会从用户态切换到核心态来执行这些服务。服务完成后,处理器通常会切换回用户态。
委派职能
- 系统调用:用户程序通过系统调用请求操作系统服务时,会触发从用户态到核心态的切换。***陷入内核 ---> 机制称为中断
**主要是为了保持一些,内核隔离保证安全性质。
中断:当硬件设备(如键盘、磁盘驱动器)需要操作系统注意时,会通过中断请求处理器的注意。这通常会导致从用户态切换到核心态。
异常:当用户程序执行了非法操作或遇到错误时,如除以零错误,处理器会从用户态切换到核心态来处理这个异常。
操作系统和用户的隔离方式
内存隔离
进程隔离
硬件隔离