随笔分类 -  内核

Linux内核如何装载和启动一个可执行程序
摘要:###exec本节我们分析exec系统调用的执行过程。 exec一般和fork调用,常规用法是fork出一个子进程,然后在子进程中执行exec,替换为新的代码。###do_exec跟上次的fork类似,这里我们查看do_exec函数。```cint do_execve(struct filenam... 阅读全文
posted @ 2015-04-19 12:46 inevermore 阅读(1787) 评论(0) 推荐(0)
分析Linux内核创建一个新进程的过程
摘要:###进程创建Linux中创建进程一共有三个函数: 1. fork,创建子进程 2. vfork,与fork类似,但是父子进程共享地址空间,而且子进程先于父进程运行。 3. clone,主要用于创建线程这里值得注意的是,Linux中得线程是通过模拟进程实现的,较新的内核使用的线程库一般都是NPTL。... 阅读全文
posted @ 2015-04-12 21:34 inevermore 阅读(1137) 评论(0) 推荐(0)
分析system_call中断处理过程
摘要:#分析system_call中断处理过程上周我们使用gcc内嵌汇编调用系统调用,这次我们具体分析下过程。###将getpid嵌入menuos代码从github下载,步骤如下: 1. 增加一个函数,getpid 2. 在main中添加MenuConfig("getpid","Show Pid", G... 阅读全文
posted @ 2015-04-05 22:26 inevermore 阅读(470) 评论(0) 推荐(0)
使用库函数API和C代码中嵌入汇编代码两种方式使用同一个系统调用
摘要:本周作业的主要内容就是采用gcc嵌入汇编的方式调用system call。 系统调用其实就是操作系统提供的服务。我们平时编写的程序,如果仅仅是数值计算,那么所有的过程都是在用户态完成的,但是我们想将变量打印在屏幕上,就必须调用printf,而printf这个函数内部就使用了write这个系统调用。... 阅读全文
posted @ 2015-03-28 16:29 inevermore 阅读(834) 评论(0) 推荐(0)
Linux内核启动分析过程-《Linux内核分析》week3作业
摘要:环境搭建环境的搭建参考课件,主要就是编译内核源码和生成镜像start_kernel从start_kernel开始,才真正进入了Linux内核的启动过程。我们可以把start_kernel看做平时用C编程时的main函数。在平时应用程序编程中,main函数并不是一开始就启动的,而是先使用汇编和C准备一... 阅读全文
posted @ 2015-03-22 17:04 inevermore 阅读(938) 评论(0) 推荐(0)