04 2015 档案

摘要:1. 进程切换在内核中的实现 linux中进程切换是很常见的一个操作,而这个操作是在内核中实现的。这里我们来分析下内核中是如何实现这个操作的。 linux内核中的线程切换主要通过schedule()这个函数实现。实现的时机有以下三个时机 中断处理过程(包括时钟中断、I/O中断、系统调用和异常)中,直 阅读全文
posted @ 2015-04-26 22:18 qtalker 阅读(350) 评论(0) 推荐(0)
摘要:1. 前言 这里主要分析linux系统如何加载和启动一个可执行程序。一个源文件要想形成可执行文件,需要经过编译和链接才可以。也就是说源文件先要通过编译器编译成目标文件,然后利用链接器链接成可运行文件。这样做有助于程序的模块化管理,其示意图如下程序经过编译后的目标文件由代码段以及数据段等段组成,然后链 阅读全文
posted @ 2015-04-19 17:38 qtalker 阅读(557) 评论(0) 推荐(0)
摘要:1。FCFS调度(first come first serve):也就是先来先服务进程调度策略,没有切换进程的概念,自然也也就没有抢占的概念。类似于流水线的机制。2. Round Robin:时间片轮转,现在计算机大多是采用的这个策略进行进程切换。不利于不同大小进程的完成时间。3 SJF(Short... 阅读全文
posted @ 2015-04-17 15:45 qtalker 阅读(1069) 评论(0) 推荐(0)
摘要:Given a string S, find the longest palindromic substring in S. You may assume that the maximum length of S is 1000, and there exists one unique longes... 阅读全文
posted @ 2015-04-13 16:07 qtalker 阅读(288) 评论(0) 推荐(0)
摘要:1.task_struct数据结构分析 对于linux而言,每个进程都有一个进程控制PCB(process control block)来保存每个进程的相关信息。其中task_struct则是PCB的具体的数据结构通过内核代码可以发现,内核当中定义一个task_struct的结构体用来保存进程的相关 阅读全文
posted @ 2015-04-12 16:42 qtalker 阅读(653) 评论(0) 推荐(0)
摘要:1.实验 这里的实验主要是将上一周实现的那个系统中断中断程序加载到系统内核当中。这里将汇编版本以及C语言版本分别加载到系统当中,并且利用gdb对系统调用进行调试。同周三的实验方法。将上周实现的fork函数加载到test.c当中如下图所示,利用MenuConfig将Fork以及Fork_asm设置成命 阅读全文
posted @ 2015-04-05 16:34 qtalker 阅读(217) 评论(0) 推荐(0)