详解操作系统中的接口


前言

通过操作系统启动我们知道,在系统启动的时候将操作系统从磁盘载入到了内存0地址处,现在操作系统就在内存里了,计算机取指执行,就能将操作系统的代码取出来进行执行。除了将操作系统读到内存里,其实还创建了一些数据结构,比如gdt表 idt表 menmap等等用来管理硬件的数据结构。所以此时OS放在内存0地址处,用来管理和控制硬件,我们的应用程序就放在内存的上方,操作系统也就立了起来,也就是形成了下面这张图
在这里插入图片描述


提示:以下是本篇文章正文内容,下面案例可供参考

一、一个问题

那么应用程序是怎么穿到操作系统里面从而使用硬件的?

使用接口
在这里插入图片描述

二、从广义上的接口引出操作系统的接口

举个例子:生活中我们只要把插头插入接口里面,就能使用电,至于插进去之后发生了什么,为什么这样就能使用电,我们普通用户也不需要知道

对于应用程序,上层用户用一个很直观很自然的东西(接口)来进入我们系统内部,进入系统内部后具体是怎么详细展开的、怎么变换的,用户都不要关心,但对于操作系统来说,这是必须关心的,也是我们学习操作系统所要掌握的

所以接口就是用来连接两个事物,进行信号转换,屏蔽细节的东西。

因此操作系统给出的接口也应该是这样,连接上层用户和底下的操作系统,给出来的是个很简单的东西,但是在内部要完成信号转换和屏蔽细节的功能





三.我们的学习任务

不仅要知道接口是什么,还要知道它在内部是怎么实现功能的


四.开始说说操作系统的接口到底是什么

1.什么时候要用到接口

当让是使用操作系统时才会用到接口

我们平常什么时候会使用插头?我们要使用电的时候会插上插头

①:我们什么时候要用到操作系统接口?我们现在要使用操作系统
②:怎么使用操作系统?输入一些命令,按下一些按钮等等…

这些命令在操作系统里一顿处理,处理完后输出一个结果在屏幕上
在这里插入图片描述

2.怎么使用操作系统

使用操作系统,当然不止敲命令一种方法

在这里插入图片描述

3.命令是怎么回事呢

命令就是一段程序,所有的命令不过都是一段程序而已,只是每个程序复杂程度不一样而已
在这里插入图片描述
所有的命令就是一个可执行程序。这个程序经过编译,编译完后就会有一个可执行文件(命令),然后我们在命令行敲入这一个命令,敲完后就会有结果。

那么敲入命令发生了什么?结果怎么来的?

实际上是通过shell得来的,shell是linux中的命令解释器。 前面在讲开机启动的时候,讲到过,系统启动到最后,我们会打开一个桌面或者是打开一个shell,对于windows是打开一个桌面,对于linux是打开一个shell。打开一个shell和打开一个桌面是一回事。

shell也是一个程序。而且它还是一个死循环,它会不断地提示用户敲入命令;一旦敲入命令,下面这段代码就起作用了

while(1) { scanf(%s”, cmd);
if(!fork()) {exec(cmd);}
else {wait();} } 
/ / 一旦敲入命令,就用这几句话来执行这个程序,后面会讲
/ / 也就是用这几句话,把用户敲入的命令(用户敲入的命令是一个可执行程序)通过相对应的函数,让命令执行起来


OS启动时,操作系统初始化好后,走到最后一步,会执行一个shell(shell也是一个程序:/bin/sh),shell便不断地调用scanf提示用户输入命令



命令行总结:

①:命令行就是一堆程序,只是在程序中增加了一些重要的函数来对硬件进行使用,由此可见这些函数是我们学习的重点

②:系统启动到最后一步,执行一个shell程序,shell会调用scanf打出一句话,等着用户输入命令,当用户输入命令后,shell就会通过下面这两句话来申请CPU,让CPU去执行用户敲入的命令

if(!fork()) 
{exec(cmd);}

③:而CPU要想执行这个程序,又得通过相应的函数,对各个硬件进行使用,最终在屏幕上输出结果,所以重中之重是这些相应的函数





4.图形按钮是怎么回事呢

图形按钮基于的是一套消息机制,本质上并不复杂,也就是一堆程序


在这里插入图片描述

①:图形界面就是要实现一个消息队列,当鼠标点下去的时候,就要通过一个中断放到系统的消息队列里面去。

②:而应用程序要写一个系统调用,GetMessage,从操作系统里,把这些消息一个一个拽上来,然后根据拿出来的是什么消息,就执行一个对应的用户态的函数(消息处理函数),来实现相应的功能。而且应用程序是一个不断地在消息队列里取消息的循环,这就是消息处理机制。

由此可见,图形按钮也没什么复杂的,他也是一堆程序,关键是要想调用操作系统里的内容(这里面发生什么事了),所需要调用的函数。结合起来也就是普通的C语言逻辑+重要的函数





5.操作系统接口=系统调用

无论是命令行还是图形界面,主体框架都是一些程序,而里面关键是调用了一些重要的函数,正是调用了这些重要的函数来进入操作系统内部,来使用了硬件。
在这里插入图片描述

所以上层用户是怎样使用计算机的?普通的C语言+关键性的函数

①:也就是你要使用操作系统并不难,有这么多的框架:一些命令,一些按钮(注意:命令行和图形界面只是用来使用操作系统的框架,不是操作系统接口)
②:关键是真正进入了之后,怎么实现对计算机硬件使用的(通过一些重要的函数)
③:而这些重要的函数,就是接通操作系统与应用软件的那个插座。所以操作系统接口就是这些重要的函数,因为这些函数由系统提供,因此他被称为系统调用。操作系统接口=系统调用



6.系统调用有哪些呢?


在这里插入图片描述
什么是操作系统接口:系统调用(oepn、read、write等等函数),且接口是统一的,因为操作系统可以由多个厂家提供,但都能在一个电脑上用。我们应该去哪里查系统调用(查手册),不可能把系统调用背下来。


图片来自此文章
在这里插入图片描述

  • 23
    点赞
  • 46
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值