Linux内核设计第四周——扒开系统调用三层皮

Linux内核设计第四周——扒开系统调用三层皮

by苏正生

原创作品转载请注明出处

《Linux内核分析》MOOC课程http://mooc.study.163.com/course/USTC-1000029000

一、知识点整理

1.用户态 内核态和中断处理程序

我们一般使用系统调用一般通过库函数的方式

  • 用户态和内核态的区分:

    【CPU有不同的执行级别,高执行级别下,代码可以执行特权指令,访问任何的物理地址;低执行级别下,就会受到一定的限制。(处于系统安全和稳定的目的)Intel X86 CPU有四种不同的执行级别0-3;linux只使用了其中的0级和3级分别来表示内核态和用户态。】

    显著地区分:cs寄存器的最低两位表明了当前代码的特权级

    在linux中,地址空间是一个显著地标志:

    0xc0000000以上的地址空间只能在内核态下访问,

    0xc00000000——0xbfffffff的地址空间两种状态下都可以访问。

中断发生过程:

  1. 中断处理是从用户态进入内核态的主要方式,同时,系统调用只是一种特殊的中断。
  2. 中断发生后第一件事就是保存现场:
  3. 中断/int指令会在堆栈上保存一些寄存器的值(用户态栈顶地址、当时的状态字、当时cs:eip的值)
  4. 中断结束前第一件事就是恢复现场。

    save_all:

    内核代码,完成中断服务。

2.系统调用概述和系统调用的三层皮:

系统调用:用用户态进程和硬件设备进行交互提供了一组接口。

时间: 2024-12-20 04:27:37

Linux内核设计第四周——扒开系统调用三层皮的相关文章

20135327郭皓--Linux内核分析第四周 扒开系统调用的三层皮(上)

Linux内核分析第四周 扒开系统调用的三层皮(上) 郭皓 原创作品转载请注明出处 <Linux内核分析>MOOC课程 http://mooc.study.163.com/course/USTC-1000029000 一.用户态.内核态和中断 用户态:当进程在执行用户自己的代码时,则称其处于用户态,即此时处理器在特权级最低的(3级)用户代码中运行. 内核态:当一个进程执行系统调用而陷入内核代码中执行时,我们就称进程处于内核态,此时处理器处于特权级最高的(0级)内核代码中执行. PS:CPU指令

linux内核设计与实现--进程调度 系统调用

进程可以分为I/O消耗型和处理器消耗型. I/O消耗型指,进程的大部分时间用来提交I/O请求或者等待I/O请求. 处理器耗费型进程把时间大多用在执行代码上. linux采用了两种不同的优先级范围: 第一种:用nice值,范围为-20到+19.默认值为0,值越大意味着优先级越低. 第二种:实时优先级,其值是可配置的,默认情况下它的范围是从0到99.与nice值的意义相反,值越高优先级越高. asmlinkage限定词,这是一个编译指令,通知编译器仅从栈中提出该函数的参数.所有的系统调用都需要这个限

LINUX内核分析第四周学习总结——扒开应用系统的三层皮(上)

LINUX内核分析第四周学习总结——扒开应用系统的三层皮(上) 张忻(原创作品转载请注明出处) <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 一.知识概要 (一)用户态.内核态和中断处理过程 (二)系统调用概述 系统调用概述和系统调用的三层皮 (三)使用库函数API和C代码中嵌入汇编代码触发同一个系统调用 使用库函数API获取系统当前时间 C代码中嵌入汇编代码的方法(复习) 使用C代码中嵌入汇编代码触发系统调

第四周—扒开系统调用的“三层皮”

[洪韶武 原创作品转载请注明出处 <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 ]  第四周 扒开系统调用的“三层皮” 一.本周学习内容总结   1.系统调用的“三层皮” xyz函数—API systemcall—中断向量 sysxyz—中断服务程序 2.系统调用的意义及API与系统调用的关系 (1)系统调用的意义: 把用户从底层的硬件编程中解放出来 极大提高了系统安全性 使用户程序具有可移植性 (2)API

linux内核设计与实现 系统调用

系统调用的实现过程:触发软终端,调用系统调用处理函数:在处理函数中,从寄存器中读取系统调用号以及参数,根据系统调用号,读取系统调用表:系统调用号就是系统调用函数的位置,取该位置值,就找到真正的系统调用函数,最后执行. arm系统调用:r0-r5传递参数 r0保存返回值 系统调用的绑定过程: 1.系统调用函数asmlinkage 2.在系统调用表中添加系统调用 3.在asm/unistd.h中添加系统调用号 4.编译内核 即可 系统调用使用:1.包含系统调用实现文件 或者2._syscallN()

读薄《Linux 内核设计与实现》(3) - 系统调用

这篇文章是<读薄「Linux 内核设计与实现」>系列文章的第 III 篇,本文主要讲了以下问题:系统调用的概念.系统调用的实现原理与过程以及如何在 Linux 中增加一个系统调用. 0x00 系统调用的概念 系统调用是为了和用户空间上的进程进行交互,内核提供的一组界面. 应用程序通过这组界面访问硬件和其他操作系统资源 完成对硬件和资源的访问控制 硬件设备的抽象(提供设备的独立性) 0x01 系统调用简介 I 常用系统调用 fork(), exec(), open(), read(), writ

linux及安全《Linux内核设计与实现》第一章——20135227黄晓妍

<linux内核设计与实现>第一章 第一章Linux内核简介: 1.3操作系统和内核简介 操作系统:系统包含了操作系统和所有运行在它之上的应用程序.操作系统是指整个在系统中负责完成最基本功能和系统管理的那些部分.这些部分包括内核.设备驱动程序.启动应到程序.命令行shell或者其他种类的用户界面.基本的文件管理系统工具. 内核:如果说用户界面是操作系统的外在表像,那么内核就是操作系统的内在核心. 内核空间:系统态和保护起来的内存空间. 内核的组成: 1.中断服务程序(响应中断) 2.调度程序(

把握linux内核设计思想系列(未完待续......)

[版权声明:尊重原创,转载请保留出处:blog.csdn.net/shallnet,文章仅供学习交流,请勿用于商业用途] 把握linux内核设计思想(一):系统调用 把握linux内核设计思想(二):硬中断及中断处理 把握linux内核设计思想(三):下半部机制之软中断 把握linux内核设计思想(四):下半部机制之tasklet 把握linux内核设计思想(五):下半部机制之工作队列及几种机制的选择 把握linux内核设计思想(六):内核时钟中断 把握linux内核设计思想(七):内核定时器和

《Linux内核设计与实现》 Chapter4 读书笔记

<Linux内核设计与实现> Chapter4 读书笔记 调度程序负责决定将哪个进程投入运行,何时运行以及运行多长时间,进程调度程序可看做在可运行态进程之间分配有限的处理器时间资源的内核子系统. 一.多任务 多任务操作系统就是能同时并发地交互执行多个进程的操作系统. 多任务系统可以划分为两类: 非抢占式多任务 进程会一直执行直到自己主动停止运行 抢占式多任务 Linux/Unix使用的是抢占式的方式:强制的挂起进程的动作就叫做抢占. 像所有unix的变体和许多其他现代操作系统一样,Linux提