- 博客(8)
- 收藏
- 关注
原创 Lniux学习心得
一学期的Linux课程结束了,从一开始只知道基本命令到现在能读懂一些内核源码,期间还是收获不少的。孟老师的课程最主要的还是让我们了解了进程的执行过程,就是一个进程如何装载到内存以及如何加载执行。一个进程的运行要有自己的堆栈和上下文。进程切换需要进程从用户态切换到内核态,进程的struct中有一个thread_info数据结构记录了所有有关该进程的上下文和堆栈信息。进程在创建的时候都是复制操作系统中
2016-04-30 20:21:16
433
原创 进程调度
进程调度的时机与进程的切换操作系统原理中介绍了大量进程调度算法,这些算法从实现的角度看仅仅是从运行队列中选择一个新进程,选择的过程中运用了不同的策略而已。 对于理解操作系统的工作机制,反而是进程的调度时机与进程的切换机制更为关键。进程调度的时机 1.中断处理过程(包括时钟中断、I/O中断、系统调用和异常)中,直接调用schedule(),或者返回用户态时根据need_resched标记调用sch
2016-04-17 10:55:18
648
原创 可执行程序的装载
ELF(Executableand Linking Format)可执行连接格式是UNIX系统实验室(USL)作为应用程序二进制接口(Application Binary Interface(ABI)而开发和发布的。 在object文件中有三种主要的类型。一个可重定位(relocatable)文件保存着代码和适当的数据,用来和其他的object文件一起来创建一个可执行文件或者是一个共享文件。一
2016-04-10 21:52:36
525
原创 Linux如何创建一个进程?
一.进程概览首先,对于一个进程我们必须有对应描述其特征的结构体,在Linux中进程用一个task_struct结构体来解释。task_struct的相关描述在[task_struct结构体剖析](http://blog.csdn.net/npy_lp/article/details/7292563)中可以得到详细解释。该结构体就是操作系统中所提到的PCB,PCB是进程存在的唯一标识。二.进程的创建
2016-04-03 23:23:31
858
原创 系统调用
本次实验的主要内容就是实现系统调用,了解系统调用的实现方式! 系统调用:是操作系统为用户态进程与硬件设备进行交互提供的一组接口,系统调用通过软中断向内核发送一个明确的请求,一般每个系统调用对应一个封装例程,库在用这些例程定义出给用户的API API:API俗称应用编程接口(application program interface),只是一个函数定义 Linux系统调用需要三个步骤:
2016-03-20 17:22:38
392
原创 跟踪分析Linux内核的启动过程
在Linux操作系统中,系统的启动都是从start_kernel()这个函数开始的。start_kernel()是内核的汇编与C语言的交接点,在该函数以前,内核的代码都是用汇编写的,完成一些最基本的初始化与环境设置工作,比如内核代码载入内存并解压缩(现在的内核一般都经过压缩),CPU 的最基本初始化,为C代码的运行设置环境(C代码的运行是有一定环境要求的,比如stack的设置等)。这里一个不太确切的
2016-03-13 20:50:07
323
原创 简单的时间片轮转多道程序内核代码分析
本次实验模拟的是操作系统如何进行工作的,对于理解操作系统有很大的帮助。 本次实验主要有三个文件,mypcb.h、mymain.c、myinterrupt.cmypcb.h#define MAX_TASK_NUM 4 /*定义了最大任务数量*/#define KERNEL_STACK_SIZE 1024*8 //定义了内核堆栈的大小/* CPU-sp
2016-03-04 22:13:20
345
原创 计算机程序工作原理———简单c程序实例剖析
目前电子计算机的结构还是以冯·诺依曼提出的以程序存储和程序控制为基础的,其核心是存储程序。 对于我们程序员写出的程序我们将它存储到内存里面,内存有很多区域,如代码区,数据区,堆栈区等等。我们的代码会存储到代码区中,cpu通过总线与存储器进行连接,cpu中有很多寄存器,在x86中,有一个指令寄存器%eip用来指向下一次执行指令的地址,通过cs和%eip中的内容可唯一指向程序指令的地址。对
2016-02-25 18:39:19
2968
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人