课程学习总结报告 Linux之进程 概述:进程是Linux进行资源分配和调度的基本单位,进程也被看做是程序的一次执行过程,当持久化在磁盘上的二进制代码被载入内存时,Linux操作系统为其分配了用户栈和内核栈,同时使用task_struct这种数据结构对进程进行描述,task_struct是Linux ...
分类:
其他好文 时间:
2020-07-02 18:09:32
阅读次数:
66
今天再面阿里,只面了一个多小时,莫非是凉了。。。 刚开始是问简历中的问题 集中在linux内核上 Q:linux内核你都看过那些模块? A:启动程序和进程调度模块 Q:那进程都包含什么资源? A:用户栈,寄存器跟内存(页) Q:进程中都有哪些段? A:我用的intel8086一般会分配数据段,堆栈段 ...
分类:
编程语言 时间:
2020-03-17 20:59:01
阅读次数:
104
一般说到内存指的是计算机的随机存储器(RAM),程序都是在这里面运行。计算机内存的大致划分如下: 1:内存地址由上倒下依次增加 2:内存由上倒下依次分为以下几块: 内核虚拟内存:用户代码不可见的内存,地址空间顶部的区域,是为内核保留的。 栈: 维护虚拟地址的空间顶部是用户栈,编译器用它来实现函数调用 ...
分类:
其他好文 时间:
2020-03-02 16:21:51
阅读次数:
74
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
一、用户态和内核态 内核态和用户态是操作系统的两种运行级别,用于区分不同程序的不同权利。 内核态就是拥有资源多的状态,或者说访问资源多的状态,也称为特权态。相对来说,用户态就是非特权态,访问的而资源将受到限制。如果一个程序运行在特权态,该程序就可以访问计算机的任何资源,它的资源访问权限不受限制。如果 ...
分类:
其他好文 时间:
2019-08-28 11:29:27
阅读次数:
86
虽说对于二叉树的遍历操作来说非递归法使用用户自定义的栈来代替递归使用时的系统栈,可以得到不小的效率提升,但将二叉树线索化时能将用户栈也省略掉进一步提高了效率。 对于二叉树的链表结构,n个结点的二叉树有n+1个空链域(每个叶节点都有两个空链域),而线索二叉树就把这些空链域有效的利用了起来,在一般的二叉 ...
分类:
其他好文 时间:
2019-08-04 01:06:20
阅读次数:
85
X86-64和ARM64用户栈的结构(1)---背景介绍X86-64和ARM64用户栈的结构(2)---进程用户栈的初始化X86-64和ARM64用户栈的结构(3)---_start到main()X86-64和ARM64用户栈的结构(4)---mian()函数和子函数之间的栈
分类:
其他好文 时间:
2018-08-08 00:33:05
阅读次数:
133
用户进程栈的初始化在进程刚开始运行的时候,需要知道运行的环境和用户传递给进程的参数,因此Linux在用户进程运行前,将系统的环境变量和用户给的参数保存到用户虚拟地址空间的栈中,从栈基地址处开始存放。若排除栈基地址随机化的影响,在Linux64bit系统上用户栈的基地址是固定的:在x86_64一般设置为0x0000_7FFF_FFFF_F000:#defineSTACK_TOP_MAXTASK_SI
分类:
系统相关 时间:
2018-08-08 00:30:49
阅读次数:
395