linux下的进程切换只发生的内核态
2015-11-15 11:27
495 查看
首先需要说明一点的是,在linux下有段的概念,但是没有段的实际应用。linux只有四个段,分别是用户代码段、用户数据段、内核代码段、内核数据段,基地址都是0x00000000,大小为4G,这样就使得linux下的逻辑地址与线性地址是相同的。
#define __KENEL_CS 0X10 //在gdt的index=2,rpl=0
#define __KERNEL_DS 0x18 //在gdt的index=3,rpl=0
#define __USER_CS 0x23 //在gdt的index=4,rpl=3
#defind __USER_DS 0x2b //在gdt的index=5,rpl=3
从用户态切换到内核态时,因为使用不同的堆栈段,所以需要进行堆栈切换;而从内核态切换到内核态时,使用的都是内核数据段,所以不需要切换堆栈,但是需要修改TSS的esp0。
#define __KENEL_CS 0X10 //在gdt的index=2,rpl=0
#define __KERNEL_DS 0x18 //在gdt的index=3,rpl=0
#define __USER_CS 0x23 //在gdt的index=4,rpl=3
#defind __USER_DS 0x2b //在gdt的index=5,rpl=3
从用户态切换到内核态时,因为使用不同的堆栈段,所以需要进行堆栈切换;而从内核态切换到内核态时,使用的都是内核数据段,所以不需要切换堆栈,但是需要修改TSS的esp0。
相关文章推荐
- Spark修炼之道(基础篇)——Linux大数据开发基础:第十五节:基础正则表达式(一)
- linux学习之FTP服务器
- linux命令之eval
- linux vim 配置文件(高亮+自动缩进+行号+折叠+优化)
- linux grep命令的误用(grep "-100" test.txt)导致浪费半小时
- Linux下添加FTP账号和服务器、增加密码和用户,更改FTP目录
- linux命令之awk
- linux学习笔记(8):cd命令
- linux学习笔记(7):cat命令详解
- 最详细的Linux下yum源配置使用
- linux中的dmesg命令简介------没有core文件时如何定位core dump问题
- Linux(ubuntu14.04)上编译Android4.4源码的环境搭建及编译
- 在centos7中限制kvm虚拟机可访问的资源
- Install Google Chrome on Fedora 23/22, CentOS/RHEL 7.1
- win10和Linux双系统怎么在win10下用EasyBcd卸载Linux系统
- selenium unittest管理测试用例
- linux查看某个进程CPU消耗较高的具体线程或程序的方法
- linux查看某个进程CPU消耗较高的具体线程或程序的方法
- Linux查看连接数,并发数
- Linux查看连接数,并发数