
OS
Farmwang
博采众长,兼收并蓄!
展开
-
内存空间分几部分:代码段、数据段,栈,堆 (收集整理)
内存空间分几部分:代码段、数据段,栈,堆 (收集整理)分类: 10.mm2011-09-10 21:52 7688人阅读 评论(4) 收藏 举报exe编译器存储存储系统语言buffer1.函数代码存放在代码段。声明的类如果从未使用,则在编译时,会优化掉,其成员函数不占代码段空间。全局变量或静态变量,放在数据段,局部变量放在栈中,用new产生的转载 2015-01-14 19:00:20 · 898 阅读 · 0 评论 -
秒杀多线程
http://blog.youkuaiyun.com/column/details/killthreadseries.html转载 2017-03-23 21:28:00 · 399 阅读 · 0 评论 -
理解中断(1)
一直认为,理解中断是理解内核的开始。中断已经远远超过仅仅为外围设备服务的范畴,它是现代体系结构的重要组成部分。1、基本输入输出方式现代体系结构的基本输入输出方式有三种:(1)程序查询:CPU周期性询问外部设备是否准备就绪。该方式的明显的缺点就是浪费CPU资源,效率低下。但是,不要轻易的就认为该方式是一种不好的方式(漂亮的女人不一定好,不漂亮的女人通常很可爱),通常效率低下是由于转载 2017-03-27 21:09:37 · 2023 阅读 · 0 评论 -
linux系统诊断三剑客
strace,ltrace linux下跟踪进程调用的命令 本工具可以用来做大多数排除,比如mount一个NFS,很慢,找不出原因,我们可以使用strace命令来跟中mount这个经常所有的调用过程。strace 命令是一种强大的工具,它能够显示所有由用户空间程序发出的系统调用。 strace 显示这些调用的参数并返回符号形式的值。strace 从内核接收信息,而且不需要以任何特转载 2017-03-27 21:44:26 · 587 阅读 · 0 评论 -
内核抢占与中断返回
a转载 2017-03-27 21:25:21 · 580 阅读 · 0 评论 -
理解中断(3)
1转载 2017-03-27 21:19:42 · 528 阅读 · 0 评论 -
理解中断(2)
3、内核的中断处理3.1、中断处理入口由上节可知,中断向量的对应的处理程序位于interrupt数组中,下面来看看interrupt:.data #数据段ENTRY(interrupt).text345 vector=0ENTRY(irq_entries_start) .rept NR_IRQS #348-354行重复NR_IRQS次ALIGN 1: pushl $vec转载 2017-03-27 21:18:05 · 440 阅读 · 0 评论 -
中断上下文不能做的事情?
美团面试的时候,突然面试官有问到我为什么中断上下文不能睡眠,当时不了解,后来上网搜搜,发现各种说法:进程上下文: 通过系统调用,用户空间的应用程序就会进入内核空间,由内核代表该进程运行于内核空间,这就涉及到上下文的切换,用户空间和内核空间具有不同的地址映射,通用或专用的寄存器组,而用户空间的进程要传递很多变量、参数给内核,内核也要保存用户进程的一些寄存器、变量等,以便系统调用结束转载 2017-03-27 20:45:04 · 1347 阅读 · 0 评论 -
int $0x80系统调用的idea
source from http://blog.youkuaiyun.com/xuyuqingfeng953/article/details/50999170一般现代CPU都有几种不同的指令执行级别,Linux总共划分为4个指令执行级别:内核运行在0级别上,1,2级别默认不运行,用户程序运行在3级别上。 在内核指令执行级别上,代码可以执行特权指令,访问任意的物理地址。转载 2016-08-17 22:51:52 · 1855 阅读 · 0 评论 -
OS basic (1)
根据运行程序对资源和机器指令的使用权限将处理器设置为不同状态多数系统将处理器工作状态划分为管态和目态管态:操作系统管理程序运行的状态,较高的特权级别,又称为特权态(特态)、系统态目态:用户程序运行时的状态,较低的特权级别,又称为普通态(普态)、用户态有些系统将处理器状态划分核心状态,管理状态和用户程序状态(目标状态)三种 处理器处于管态时: 1.全部指令(转载 2016-08-17 22:46:53 · 521 阅读 · 0 评论 -
共享内存与线程局部存储
大内高手—共享内存与线程局部存储 城里的人想出去,城外的人想进来。这是《围城》里的一句话,它可能比《围城》本身更加有名。我想这句话的前提是,要么住在城里,要么住在城外,二者只能居其一。否则想住在城里就可以住在城里,想住在城外就可以住在城外,你大可以选择单日住在城里,双日住在城外,也就没有心思去想出去还是进来了。理想情况是即可以住在城里又可以住在城外,而不是走向极端。尽管像青转载 2015-11-24 19:29:37 · 2221 阅读 · 0 评论 -
FS寄存器指向当前活动线程的TEB结构(线程结构)
FS寄存器指向当前活动线程的TEB结构(线程结构)偏移 说明000 指向SEH链指针004 线程堆栈顶部008 线程堆栈底部00C SubSystemTib010 FiberData014 ArbitraryUserPointer018 FS段寄存器在内存中的镜像地址020 进程PID024 线程ID02C 指向线程局部存储指针030 PEB转载 2015-11-24 19:01:07 · 2561 阅读 · 0 评论 -
nasm BIOS绘制直线
----------------------------------------------------------------------- INT 0x10可识别的视频图形模式 -------------------------------------------------------------------- 模式原创 2015-11-21 20:21:38 · 787 阅读 · 0 评论 -
handle 句柄
句柄是一个32位的整数,实际上是Windows在内存中维护的一个对象内存物理地址列表的整数索引。因为Windows的内存管理经常会将空闲对象的内存释放掉,当需要访问时再重新提交到物理内存,所以对象的物理地址是变化的,不允许程序直接通过物理地址来访问对象。程序将想访问的对象的句柄传递给系统,系统根据句柄检索自己维护的对象列表就能知道程序想访问的对象及物理地址了。 句柄是一转载 2015-11-16 21:47:54 · 1425 阅读 · 8 评论 -
MyOS (二) 将磁盘中的程序装载到内存中
(1) Use BIOS interrupt callInvoking an interruptInvoking an interrupt can be done using the INT x86 assembly language instruction. For example, to print a character to the screen using BIOS原创 2015-11-21 17:25:48 · 704 阅读 · 0 评论 -
MyOS (一)
FAT12信息FAT12是MS公司Dos所支持的文件系统之一,当软盘被标准格式化后:每个磁头80个磁道,每个磁道18个扇区,每个扇区512字节,所以标准软盘的容量为:2*80*18*512=1474560B=1440K=1.44M。(图一:文件系统数据结构)为:(图二:引导程序数据结构) ORG 0x7c00原创 2015-11-21 17:07:18 · 881 阅读 · 0 评论 -
linux下多进程、多线程编程
(一) 理解Linux下进程的结构 Linux下一个进程在内存里有三部份的数据,就是“数据段”,“堆栈段”和“代码段”,其实学过汇编语言的人一定知道,一般的CPU象I386,都有上述三种段寄存器,以方便操作系统的运行。“代码段”,顾名思义,就是存放了程序代码的数据,假如机器中有数个进程运行相同的一个程序,那么它们就可以使用同一个代码段。 堆栈段存放的就是子程序的返回地址、子程序的参数以转载 2017-05-04 09:29:51 · 529 阅读 · 0 评论