进程切换分两步: 1.切换页目录以使用新的地址空间 2.切换内核栈和硬件上下文 对于linux来说,线程和进程的最大区别就在于地址空间,对于线程切换,第1步是不需要做的,第2是进程和线程切换都要做的。 切换的性能消耗: 1、线程上下文切换和进程上下问切换一个最主要的区别是线程的切换虚拟内存空间依然是 ...
分类:
编程语言 时间:
2020-07-10 19:12:24
阅读次数:
78
课程学习总结报告 Linux之进程 概述:进程是Linux进行资源分配和调度的基本单位,进程也被看做是程序的一次执行过程,当持久化在磁盘上的二进制代码被载入内存时,Linux操作系统为其分配了用户栈和内核栈,同时使用task_struct这种数据结构对进程进行描述,task_struct是Linux ...
分类:
其他好文 时间:
2020-07-02 18:09:32
阅读次数:
66
setjmp与longjmp 后缀jmp指的就是jump,关看名字就能猜到这哥俩是干啥的了。使用他们俩就可以让程序控制流转移,进而实现对异常的处理。 异常处理的结构可以划分为以下三个阶段: 准备阶段:在内核栈保存通用寄存器内容 处理阶段:保存硬件出错码和异常类型号,然后向当前进程发送信号 恢复阶段: ...
分类:
编程语言 时间:
2020-06-12 00:51:46
阅读次数:
71
转自:https://durant35.github.io/2017/10/29/VM_Stacks/ Linux 中有几种栈?各种栈的内存位置? 关于栈 函数调用栈的典型内存布局 栈帧 (Stack Frame) 的边界由栈帧基地址指针 EBP 和 栈指针 ESP 界定,EBP指向当前栈帧底部 ( ...
分类:
编程语言 时间:
2020-04-27 19:49:37
阅读次数:
86
这篇主要是杭州操作系统大会前辈的文档进行学习,因为文档公开了故而总结学习一下,如若其中有侵权的地方,请及时联系我,谢谢 .......................................................................................... ...
分类:
其他好文 时间:
2020-04-08 09:43:55
阅读次数:
90
C#线程 基本知识: 线程和进程 1.在创建进程时,内核会为进程创建相应的堆栈,每个进程会有两个栈,一个是用户栈,另外一个则是内核栈 2.一个进程中,包含多个线程 3.当你打开一个程序很慢,这是因为此时的CPU运行的进程数太多,该进程需要等待调度,才能真正运行 4. 一般来说,打开一个应用程序就会创 ...
分类:
编程语言 时间:
2020-01-10 21:55:10
阅读次数:
85
SSDT概述通过08内核编程HOOK_KiFastCall.md可以知道,用户层的函数调用都会进入到0环, 0环将服务函数的地址实现保存在SSDT表中. KiFastCallEntry函数会使用调用号找到函数的参数个数表和函数地址表, 并将用户栈的参数拷贝到内核栈,最后调用了系统服务表中的函数.SS... ...
分类:
其他好文 时间:
2019-08-31 17:33:44
阅读次数:
80
用户态到内核态的切换发生了什么 1.读取tr寄存器,访问TSS段 TSS段保存内核栈信息2.从TSS段中的sp0获取进程内核栈的栈顶指针 sp:堆栈指针(Stack Pointer)寄存器,用它只可访问栈顶。3.在内核栈中保存当前cs,ss,eip,esp寄存器的值(地址) cs 为代码段寄存器 s ...
分类:
其他好文 时间:
2019-08-29 20:30:59
阅读次数:
130
一、用户态和内核态 内核态和用户态是操作系统的两种运行级别,用于区分不同程序的不同权利。 内核态就是拥有资源多的状态,或者说访问资源多的状态,也称为特权态。相对来说,用户态就是非特权态,访问的而资源将受到限制。如果一个程序运行在特权态,该程序就可以访问计算机的任何资源,它的资源访问权限不受限制。如果 ...
分类:
其他好文 时间:
2019-08-28 11:29:27
阅读次数:
86
怎么查看系统的上下文切换情况 过多的上下文切换,会把 CPU 时间消耗在寄存器、内核栈以及虚拟内存等数据的保存和恢复上,缩短进程真正运行的时间,成了系统性能大幅下降的一个 元凶。 使用 vmstat 这个工具,来查询系统的上下文切换情况。 vmstat 是一个常用的系统性能分析工具,主要用来分析系统 ...
分类:
其他好文 时间:
2019-07-13 09:17:59
阅读次数:
117