ch2_2系统调用的实现
创始人
2024-03-12 11:25:02
0

1. 为什么存在系统调用

起因, 应用程序 运行时在内存中,操作系统也在内存中, 为什么应用程序想访问 操作系统的提供的功能函数,

为什么不能 直接去取从内存中去取呢?

答: 操作系统是一个重要的存在,
他掌控了计算机硬件这个国家中,重要的资源, 比方硬件资源, 和用户的密码和数据,
如果,随意的一个应用程序,就可以访问, 捞到用户的密码, 以及任意的掌控这个计算机的资源。
如果,这个应用程序有恶意的行为, 那么 对用户的信息安全,将会造成伤害, 对计算机的硬件资源也会造成伤害。

所以,不可以给应用程序直接访问 系统中的函数和功能。

所以系统调用的作用,

  1. 不让应用程序 随意的jump
  2. 凭什么,使用什么手段不让应用程序jump
  3. 不让应用程序直接访问, 那么应用程序该如何使用操作系统提供的功能。

1.1 内核态与用户态

硬件上实现, 将内存隔成两个区域:

  • 用户态
  • 内核态;

不同的态,他们所拥有的特权级别不同。

计算机对内存的使用,都是一段一段的使用;
所以用户态下的程序 属于 用户段;核心态下的程序属于内核段,
无论什么段, 都需要用到段寄存器;

权限级别

0:内核态处于特权级别, 可以访问任何数据;
3: 用户态权限数值;

数值越低, 权限的级别越高。
数值越大, 权限级别越低,

所以只用当: 目标特权级的数值 >= 当前特权级的数值时, 才可以访问。

2. 如何不让应用程序随意访问内核态

通过比较 DPL , CPL 的数值, 权限级别低的不可以访问权限级别高的。
只有当DPL >= CPL , 才可以访问内核态。

2.1 权限数值的存储

  • DPL(destination Privage level): 目标特权级,操作系统在初始化的时候设计好, 对应的数值放在GDT 表中。
  • CPL: 当前特权级别, 对应的数值放在 cs 寄存器中。

在系统初始化的时候,
head.S 执行的过程中,会针对内核的代码和内核态的数据建立 GDT表,
当时, 其中的DPL 初始化成 0,

2.2 权限数值的比较

在初始化完成后,进入用户态,
执行应用程序的过程中, cs 段寄存器中存放的当前应用程序的特权级别, 此时 CPL = 3, 当通过系统调用时, CPL 会短暂的变成0, 当返回用户态的时候, 又变成3;

而程序每次执行跳转 jmp, 还是 mov 这两个指令时,
都需要 访问 GDT 表, 因为访问了段寄存器了, 需要通过 段来进入 内核态。

访问 GDT 表时候, 所对应的数值
此时,比较 DPL >= CPL 是否成立,

3. 应用程序进入内核的 方式

中断的方式, int 0x80

相关内容

热门资讯

公安部打掉黑灰产犯罪团伙200... 12月25日,公安部在京召开专题新闻发布会,通报公安部和国家金融监督管理总局联合部署开展金融领域“黑...
公安机关打掉金融领域“黑灰产”... 新华社北京12月25日电(记者任沁沁、熊丰)公安部12月25日在京召开新闻发布会,通报今年6月至11...
老年婚介服务引纠纷 成都金牛区... 追求爱情从来不是年轻人的专利,老年人也有权利去追求真爱。不过,不可只抱有美好期许,也要擦亮眼睛。近日...
国家医保局:长护险制度将从试点... 本报讯(中青报·中青网记者 刘昶荣)在日前浙江宁波召开的2025年全国长期护理保险高质量发展大会上,...
公安部发布金融领域“黑灰产”违... 12月25日,公安部在京召开专题新闻发布会,通报公安部和国家金融监督管理总局联合部署开展金融领域“黑...
国家发展改革委:加快推动交通运... 12月25日,国家发展改革委基础设施发展司刊发题为《加快构建现代化基础设施体系》的署名文章。文章指出...
国家发改委:优化收费公路政策 ... 每经AI快讯,据国家发改委官微消息,12月25日,国家发展改革委基础设施发展司发文称,深化重点领域改...
清华大学开展招生宣讲,发布招生... 红星新闻网12月25日讯12月24日,清华大学招生办公室发布声明。 声明称,近日,清华大学招生办接到...
公安部:立案查处金融领域“黑灰... 北京商报讯(记者 岳品瑜 董晗萱)12月25日,公安部召开新闻发布会,通报公安部和国家金融监督管理总...
感知山东| 胶州市开展“法律护... 为不断深化“陪伴成长”全环境立德树人品牌建设,近日,胶州市司法局李哥庄司法所联合镇宣传办,邀请市“蓝...