linux-0.11内核 任务的堆栈切换

一直缠绕的两个问题:怎样标识的内核栈与用户栈?如何在内核态堆栈与用户态堆栈之间切换? 用户态堆栈指针:ss和esp;内核态堆栈指针:ss0和esp0;二者均位于任务的tss结构中。这里的任务是指除任务0和1之外的普通任务。CPU进行用户态堆栈到内核态堆栈的切换操作时,CPU会从当前任务的任务状态段TSS中取得新堆栈的段选择符和偏移值,即从TSS的ss0和esp0字段中获取,在定位了新堆栈(内核态堆栈)之后,CPU就会首先把原用户态堆栈指针ss和esp压入内核态堆栈,随后把标志寄存器eflags内容和返回位置cs、eip压入内核态堆栈。任务调用系统调用时就会进入内核并执行内核中的中断服务代码,此时内核代码就会使用该任务的内核态堆栈进行上述操作。而在执行iret退出内核程序返回到用户程序时,将恢复用户态的堆栈和eflags。任务的tss结构:...

谢宝友:会说话的Linux内核

我们本次开源专访的对象是一位认真钻研技术的工程师,谢宝友,他目前任职中兴通讯操作系统团队,他个人在业余时间前后共花费了6年时间完成了对Linux内核Linux2.6.12内核源代码注释工作。我们本次开源专访的对象是一位认真钻研技术的工程师,谢宝友,目前任职中兴通讯操作系统团队。他个人在业余时间前后共花费了6年时间完成了对Linux内核Linux2.6.12内核源代码注释工作。近一个月之前,谢宝友(@kernel-hacker)发布的一条关于Linux2.6.12内核源代码注释文件的微博,被转载近200次。该微博为大家介绍了包括内存、调度、文件系统等模块在内的Linux2.6.12内核源代码注释文件,目前该内核源码注释已经托管到CSDNCODE。CSDNCODE地址:https://code.csdn.net/chenyu105/linux_kernel_2-6-11-12_comment。谢宝友(右二)和同事们的合影下面是采访内容整理。CSDN:先请您对自己和您的工作做下介绍。谢宝友:我是一名老中专,1996年毕业于四川省税务学校税收专业,现供职于中兴通讯操作系统团队,对操作系统内核有...

用bochs调试自己写的系统引导代码

1安装和配置bochs  首先从bochs.sourceforge.net里面把BOCHS给download下来,鉴于Windows的普及,仅仅谈BOCHS在win下的使用方法,其实在其它的OS中方法差不多,不过我仅仅在Window和Linux下安装使用过。  在bochs.sourceforge.net里面把Bochs-2.6.1.exe给download下来,双击就开始安装。这软件不大,安装完才4兆多,当然,这是标准安装,如果你选择的是完全安装,则比标准安装多个DLXlinuxdemo这个OS,如果你是第一次使用BOCHS,建议你用完全安装,装完,现不用着急学会BOCHS的一大堆配置,可以先用用它自带的这个OS,感受下BOCHS。      在BOCHS的目录里面有个dlxlinux子目录,进去,双击bochsrc,就进入下图:这dlxlinux是系统自带的,如果自己想用别的操作系统该怎么办呢?嘿嘿,别着急,BOCHS的开发者们已经为我们考虑好了,bochs.sourceforge.net里面,你能找到很多img文件,这些...

内核-程序员的顶级梦寐

目录[-]方法一:编写你自己的操作系统方法二:编写写一些内核模块!方法三:参加一次Linux内核实习!方法四:阅读内核源码本文由伯乐在线-haofly翻译自JuliaEvans。欢迎加入技术翻译小组。转载请参见文章末尾处的要求。(之前我在CUSEC网站发表了关于内核并不可怕的一篇文章,本文是后续。)我曾经问别人如何开始内核编程的学习,他们基本上都说:①如果你不需要了解内核是如何为你工作的,你为何要尝试呢?②你应该订阅Linux内核邮件列表,然后努力去理解。③如果你不去编写针对Linux内核的代码,你就是在浪费时间。这些对我一点儿帮助都没有。所以我在这里列举了一些可行的方法,他们是有关操作系统和Linux内核是怎样在你的项目里工作的,而且还很有趣。虽然我知道得并不多,但至少比我做这些之前了解了更多。对于下面这几个途径,你只需要了解一些C语言和汇编语言(至少要会复制粘贴)。我会写一些小的C程序,还会用汇编来上课,虽然这些我都忘得差不多了。方法一:编写你自己的操作系统这看起来是一个相当可怕的方法。但事实上并不是!我是从rustboot这个项目开始的,重要的是它已经可以工作了。然后我会做一些简...

成为Linux内核高手的四个方法

首页最新文章资讯程序员设计IT技术创业在国外营销趣文特别分享更多>-Navigation-首页最新文章资讯程序员设计IT技术-Java&Android开发创业在国外营销趣文特别分享更多>-工具与资源-书籍与教程-自由职业-互联网-管理-运营-人力资源-职场分享伯乐在线>首页>所有文章>程序员>成为Linux内核高手的四个方法成为Linux内核高手的四个方法2014/01/08|分类:程序员|0条评论|标签:HACKER,KERNEL,LINUX,内核分享到:本文由伯乐在线-haofly翻译自JuliaEvans。欢迎加入技术翻译小组。转载请参见文章末尾处的要求。(之前我在CUSEC网站发表了关于内核并不可怕的一篇文章,本文是后续。)我曾经问别人如何开始内核编程的学习,他们基本上都说:①如果你不需要了解内核是如何为你工作的,你为何要尝试呢?②你应该订阅Linux内核邮件列表,然后努力去理解。③如果你不去编写针对Linux内核的代码,你就是在浪费时间。这些对我一点儿帮助都没有。所以我在这里列举了一些可行的方法,他们是有关操作系统和Linux内核是...

编译Linux内核

Linux内核支持抢占式,支持对称多处理器结构。Linux由操作系统引导程序grub启动,配置文件是/boot/grub/grub.confLinux内核源代码根目录是/home/Common/linux-2.6.39/;几个主要的目录:    kernel--linux系统的核心函数    mm--内存管理文件    fs--各种类型的文件系统,各种类型的文件操作    arch--与CPU类型相关的子目录和文件    include--所有头文件    net--和Linux网络相关的C文件查看Linux内核状态,可以通过/proc虚拟文件系统C编程中要处理较多的命令行参数时,可以使用getopt_long函数...
代码星球 代码星球·2020-03-29

获取系统版本内核版本信息

privatestaticfinalStringLOG_TAG="DeviceInfoSettings";privatestaticfinalStringFILENAME_PROC_VERSION="/proc/version";privateStringreadLine(Stringfilename)throwsIOException{BufferedReaderreader=newBufferedReader(newFileReader(filename),256);try{returnreader.readLine();}finally{reader.close();}}//内核版本privateStringgetFormattedKernelVersion(){StringprocVersionStr;try{procVersionStr=readLine(FILENAME_PROC_VERSION);finalStringPROC_VERSION_REGEX="\w+\s+"+/*ignore:Linux*/"\w+\s+"+/*ignore:version*/"([^\s]...
当地较为有名的狠人 当地较为有名的狠人·2020-03-29

junit调试spring报错org/apache/commons/logging/LogFactory

 如果用junit调试spring报错:"java.lang.NoClassDefFoundError: org/apache/commons/logging/LogFactory "那么说明缺少了个commons-logging.jar,这个很常见,是使用spring的必备包,用来记录程序运行的日志。  加进去,就ok了!   另外网上有人说用log4j的jar再配置个log4j.properties的话,也可以,但是我试过了,完全不行,还是报错。 ⊙_⊙附件附上commons-logging.jar吧,免得大家到处找。^_^还有什么好方法或者疑问和意见欢迎大家提出来一起讨论!...
当地较为有名的狠人 当地较为有名的狠人·2020-03-29

常见浏览器及其内核

1、IE浏览器内核:Trident内核,也是俗称的IE内核;2、Chrome浏览器内核:统称为Chromium内核或Chrome内核,以前是Webkit内核,现在是Blink内核;3、Firefox浏览器内核:Gecko内核,俗称Firefox内核;4、Safari浏览器内核:Webkit内核;5、Opera浏览器内核:最初是自己的Presto内核,后来是Webkit,现在是Blink内核;...

C#调试心经续(转)

断点篇 命中次数(HitCounts)右击断点,可以设置HitCounts(命中次数),会弹出如下的对话框   当条件满足的时候断点会被命中(即即将被执行),这个命中次数是断点被命中的次数。默认是始终break,选项有如下的几种:始终break;当命中次数达到多少次时break;当命中次数是多少的倍数时break;当命中次数大于等于多少的时候break。   于是在上篇中的条件也可以这样实现,设置命中次数等于50的时候break,按F5后,断点被触发,此时i=50。 断点过滤器我们可以限制断点在特定的处理器和进程中。可以设置机器名、进程id、进程名、线程id、线程名中的某些条件来过滤一些断点。 注意:ThreadId需要特别说明一下,ThreadId并不是托管程序中,.NET框架中System.Threading.Thread.ManagedThreadId,两者不能等同。简单来说,ManagedThreadId是线程在CLR中的标识符,而ThreadId却是线程在操作系统中的标识符。因此Thre...
IT猿 IT猿·2020-03-28

C#调试心经(1)(转)

我们在做程序开发时,难免会遇到错误异常。如何快速地找到出错的地方、分析错误的原因以及找到解决问题的方案,是许多初级程序员困扰的问题,这也正是经验的宝贵之处。下面我将简单介绍在VisualStudio中调试以及一些高级的调试和常见的错误。 PS:如无特别说明VisualStudio均指Dev10即VisualStudio2010。 入门篇假设你是有着.Net平台的程序员,并且使用VisualStudio做为开发工具。断点:最简单的一种,设置一个断点,程序执行到那一句就自动中断进入调试状态。设置断点,在你觉得有问题的代码行,左侧单击,会出现红色的红点即断点。   启动调式:按F5,或者菜单栏---调式---开始调试,或者工具栏的图标快速监视:快速查看变量或者表达式的值,也可以自定义表达式进行计算  单步执行有三种,一种是每次执行一行(F10);一种是每次执行一行,但遇到函数调用就会跳到被调用的函数里(F11);一种是直接执行当前函数里剩下的指令,返回上一级函数(Shift+F11)。还有一种后悔药,设为下一句(SetNe...
IT猿 IT猿·2020-03-28

雅虎军规以及Chrome调试

1.尽量减少HTTP请求数  80%的终端用户响应时间都花在了前端上,其中大部分时间都在下载页面上的各种组件:图片,样式表,脚本,Flash等等。减少组件数必然能够减少页面提交的HTTP请求数。这是让页面更快的关键。  减少页面组件数的一种方式是简化页面设计。但有没有一种方法可以在构建复杂的页面同时加快响应时间呢?嗯,确实有鱼和熊掌兼得的办法。  合并文件是通过把所有脚本放在一个文件中的方式来减少请求数的,当然,也可以合并所有的CSS。如果各个页面的脚本和样式不一样的话,合并文件就是一项比较麻烦的工作了,但把这个作为站点发布过程的一部分确实可以提高响应时间。  CSSSprites是减少图片请求数量的首选方式。把背景图片都整合到一张图片中,然后用CSS的background-image和background-position属性来定位要显示的部分。  图像映射可以把多张图片合并成单张图片,总大小是一样的,但减少了请求数并加速了页面加载。图片映射只有在图像在页面中连续的时候才有用,比如导航条。给imagemap设置坐标的过程既无聊又容易出错,用imagemap来做导航也不容易,所以不推荐...

FireFox、chrome通过插件使用IE内核,IE Tab v2

fireFox插件管理中 搜索IEtab 找到ieTabv2安装后,添加网站规则就可以用。 chrome去ietab.net下载*.crx文件, 打开插件管理界面,拖拽*.crx进去, 重启chrome, 主界面中多了IEtab按钮,点击即可 我的主要用途OCX插件...

vue项目使用webpack构建的本地服务环境,在手机上访问调试

使用vue脚手架构建的项目,一般在本地localhost运行,配合浏览器的模拟调试工具开发。如果想看真机环境,又不想build到线上。webpack能配置电脑本地内网环境指向公网访问的! 1、打开项目的package.json文件,修改里面的script里面的dev"scripts":{"dev":"webpack-dev-server--inline--progress--configbuild/webpack.dev.conf.js--host192.168.0.100",//就是在原有的基础上在后面加上了--host就是自己的电脑IP;"start":"npmrundev","build":"nodebuild/build.js"},#可以打开cmd控制台,输入ipconfig,查看自己的电脑ip; 2、修改好了之后本地电脑访问要把之前网址的localhost换成自己的电脑ip地址;在config文件里面修改host:'localhost',//把这个也改为你电脑的ip例:192.168.0.100port:8080,autoOpenBrowser:false...

反射加载的dll和调试

打开dll的源码,然后attach到那个加载了反射dll的进程上。就可以调试dll的代码...
首页上一页...4647484950下一页尾页