linux内核分析mooc
ccshijtgc
这个作者很懒,什么都没留下…
展开
-
Linux 用户线程切换分析
Linux内核利用esp ebp实现用户栈的切换,并通过eip的跳转来实现用户级线程的切换,简单分析如下原创 2016-03-03 12:23:06 · 2425 阅读 · 0 评论 -
Linux系统调用
Linux内核中通过系统调用向用户程序开放内核功能,用户可以通过系统调用命令在自己的应用程序中调用它们。从某种角度来看,系统调用和普通的函数调用非常相似。区别仅仅在于,系统调用由操作系统核心提供,运行于核心态;而普通的函数调用由函数库或用户自己提供,运行于用户态。下面通过一个getuid例子来说明系统调用,通过查找文档http://codelab.shiyanlou.com/xref/linux-原创 2016-03-20 12:20:33 · 385 阅读 · 0 评论 -
c语言函数调用栈的变化
众所周知,c语言中函数调用利用ebp esp寄存器建立栈,通过栈的嵌套形成了调用的进入和退出,《深入理解计算机系统》对此有详细的讨论,本次linux内核分析mooc的学习对此亦进行了深入的讨论,本文结合汇编代码,一码一图对栈的变化进行了分析,首先对源码main.c 利用gcc –S –o main.s main.c -m32 编译源码main.c及编译后的汇编文件main.s如原创 2016-02-26 09:33:44 · 849 阅读 · 0 评论 -
Linux内核启动分析
Linux内核启动代码由位于init/main.cinit/main.c的start_kernel开始,下面对start_kernel进行分析,start_kernel代码如下 asmlinkage __visible void __init start_kernel(void)501 {502 char *command_line;503 char原创 2016-03-13 17:18:39 · 681 阅读 · 0 评论 -
系统调用system_call的处理过程
本周分析linux源码中系统调用system_call的处理过程syttem_call位于/linux-3.18.6/arch/x86/kernel/entry_32.S中,源码如下:ENTRY(system_call) RING0_INT_FRAME # can't unwind into user space anyway ASM_CLAC pushl_cfi %eax原创 2016-03-27 12:19:57 · 1411 阅读 · 0 评论 -
Linux进程调度
进程的调度时机与进程的切换操作系统原理中介绍了大量进程调度算法,这些算法从实现的角度看仅仅是从运行队列中选择一个新进程,选择的过程中运用了不同的策略而已。对于理解操作系统的工作机制,反而是进程的调度时机与进程的切换机制更为关键。进程调度的时机中断处理过程(包括时钟中断、I/O中断、系统调用和异常)中,直接调用schedule(),或者返回用户态时根据need_resched原创 2016-04-16 10:02:25 · 366 阅读 · 0 评论