系统调用:如何中用户态切换到内核态 在linux中,系统调用是通过0x86体系结构中的软件中断实现的。这个软件中断与通常说的硬件中断不同之处在于,它是通过软件指令触发,而不是外部设备,这是程序员可以触发的一种异常,调用int 0x80汇编指令就可以产生向量号为128的异常。 进程与线程的区别与联系
分类:
系统相关 时间:
2016-01-28 15:20:17
阅读次数:
149
转载于http://col1.blog.163.com/blog/static/1909775192012719114033352/ 1 .内核级线程:切换由内核控制,当线程进行切换的时候,由用户态转化为内核态。切换完毕要从内核态返回用户态;可以很好的利用smp,即利用多核cpu。windows线程
分类:
编程语言 时间:
2016-01-28 10:43:53
阅读次数:
147
内容推荐本书主要讲述采用现代C++在x86-64 Linux上编写多线程TCP网络服务程序的主流常规技术,重点讲解一种适应性较强的多线程服务器的编程模型,即one loop per thread。这是在Linux下以native语言编写用户态高性能网络程序最成熟的模式,掌握之后可顺利地开发各类常见的...
分类:
编程语言 时间:
2016-01-26 20:16:21
阅读次数:
262
大多数处理器至少支持两种执行模式。某些指令只能在特权模式下执行,包括读取或者改变诸如程序状态字之类控制寄存器的指令、原始IO指令和内存管理相关的指令。另外,有一部分内存区域仅在特权下可以被访问到。非特权态常被称为用户态,这是因为用户程序通常在该模式下执行;特权态可称作系统态、控制态或者内核态,内核态...
分类:
系统相关 时间:
2016-01-23 21:40:08
阅读次数:
295
自旋锁与互斥量功能一样,唯一一点不同的就是互斥量阻塞后休眠让出cpu,而自旋锁阻塞后不会让出cpu,会一直忙等待,直到得到锁!!!自旋锁在用户态使用的比较少,在内核使用的比较多!自旋锁的使用场景:锁的持有时间比较短,或者说小于2次上下文切换的时间。自旋锁在用户态的函数接口和互斥量一样,把pthrea...
分类:
编程语言 时间:
2016-01-20 06:16:25
阅读次数:
138
书中作者使用 dt _PEB xxxxxx 命令来查看当前进程的PEB结构。实际操作后PEB结构显示的成员值:作为进程链表的LDR结构居然没有值,这显然是不正常的,地址也没有输错,问题到底出在哪里呢?书中提到PEB位于用户态空间,可能有多个进程共享同一个PEB,所以在查看之前须使用 .process...
分类:
其他好文 时间:
2016-01-14 08:32:16
阅读次数:
138
1.系统调用:在用户态,程序员不能直接调用系统函数,系统调用必须在内核模式下实现。 所以在用户态某些C库函数通过汇编指令产生软中断异常,进入内核模式,然后我们就可以将系统调用号和参数传给内核使用系统调用。即系统调用是作为一种异常类型来实现处理的。2. 使用系统调用的两种方式:1)c库中封...
分类:
其他好文 时间:
2016-01-13 12:52:08
阅读次数:
97
一、简介 gprof是GNU工具之一,它在编译的时候在每个函数的出入口加入了profiling的代码,运行时统计程序在用户态的执行信息,可以得到每个函数的调用次数,执行时间,调用关系等信息,简单易懂。适合于查找用户级程序的性能瓶颈,对于很多时间都在内核态执行的程序,gprof不适合。 二、使用方法 ...
分类:
系统相关 时间:
2016-01-10 21:21:57
阅读次数:
272
信号的基本概念为了了解信号,先从一个熟悉的场景开始说起:1. 用户输入命令,在shell下启动一个前台进程。2. 当用户按下Ctrl-C,这个键盘输入将产生一个硬件中断。3. 如果CPU正在执行这个进程的代码,则该进程的用户空间代码暂停执行,CPU从用户态切换到内核态处理硬件中断。4. 终端驱动程序...
分类:
系统相关 时间:
2016-01-09 16:36:27
阅读次数:
192
linux内核3.8以后加入了在内核态加载firmware的支持,因此systemd在v217以后去除了用户太加载firmware的支持而orangepi到现在(2016年1月6日)仍然使用的是3.4.39内核,该内核不支持内核态加载firmware。而wily(ubuntu 15.10)使用的sy...
分类:
系统相关 时间:
2016-01-06 06:46:34
阅读次数:
271