05 2012 档案

Linux2.6系统调用
摘要:一、引入系统调用1.概念:操作系统为在用户态运行的进程与硬件设备进行交到提供了一组接口。Linux通过向内核发出系统调用来实现这些接口2.作用:对硬件设备操作的编程更容易提高了系统的安全性使程序更有可移植性3.进入系统调用的两种方法(1)int &0x80汇编指令(2)sysenter汇编指令二、系统调用与API的区别1.API只是一个函数定义,说明了如何获得一个给定的服务系统调用中通过软中断向内核发出一个明确的请求2.API可以不使用系统调用,也可以使用多个系统调用多个API也可以调用封装了不同功能的同一系统调用3.系统调用属于同内核用户态的库函数不属于内核三、通过int $0x80 阅读全文

posted @ 2012-05-29 20:09 windmissing 阅读(281) 评论(0) 推荐(0) 编辑

Linux2.6-4G的线性地址空间的分配与使用
摘要:一、4G线性空间的使用1.0-3G属于用户空间,无论是用户态还是内核态都可以寻址,但是内核一般不访问这里的数据3-4G属于系统空间,只有内核态的进程才可以访问。二、系统空间1.3G-4G的系统空间的使用(1)3G ----- 3G+high_memory:对前896MB RAM进程映射的线性地址(2)high_memory ----- PKMAP_BASE:非连续内存区。两个区间之间有4KB或8KB的空隔,是为了捕获对内存的越界访问(3)PKMAP_BASE ----- FIXADDR_START:永久内核映射(4)FIXADDR_START ----- 4G:固定映射的线性地址2.高端内存的 阅读全文

posted @ 2012-05-29 19:44 windmissing 阅读(748) 评论(0) 推荐(0) 编辑

Linux2.6进程调度
摘要:一、Linux2.6调度算法的特点1.在固定时间内选中要运行的进程,这个时间不会因为可运行进程增多而变大2.每个CPU有自己的可运行队列3.较好地解决区分交互式进程与批处理进程的问题二、进程按调度类型分类1.SCHED_FIFO:先进先出的实时进程如果没有其它更高优先级(必须是更高)的可运行实时进程(普通进程的优先不可能高于实时进程)出现,就可以一地上运行。对于这种进程,时间长度是没有意义的。2.SCHED_RR:时间片轮转的实时进程所有具有同优先级(且都是当前情况下优先级最高)的SCHED_RR以时间片轮转的方式公平地分配CPU3.SCHED_NORMAL:时间片轮转的普通进程时间片用完后会 阅读全文

posted @ 2012-05-26 16:48 windmissing 阅读(489) 评论(0) 推荐(0) 编辑

Linux2.6可延迟中断
摘要:一、基本概念1.Linux把紧随中断要执行的操作分为三类特点处理方法举例第一类紧急的在禁止可屏蔽中断的情况下立即执行修改设备和处理器同时访问的数据结构第二类非紧急的在开中断的情况下立即执行修改那些只有处理器才会访问的数据结构(例如,按下一个键后读扫描码)第三类非紧急可延迟的由独立的函数来执行把缓冲区的内核拷贝到某个进程的地址空间2.把可延迟中断从中断处理程序中抽出来,由独立的函数来执行,有助于使内核保持较短的响应时间3.Linux2.6使用可延迟函数和工作队列来处理可延迟中断,这两个都是内核函数。二、可延迟函数1.可延迟函数包括软中断和tasklet,tasklet是在软中断之上实现的task 阅读全文

posted @ 2012-05-24 11:28 windmissing 阅读(418) 评论(0) 推荐(0) 编辑

Linux2.6中断与异常
摘要:一、基本概念1.产生的位置发生的时刻时序中断CPU外部随机异步异常CPU正在执行的程序一条指令终止执行后同步2.由中断或异常执行的代码不是一个进程,而是一个内核控制路径,代表中断发生时正在运行的进程的执行中断处理程序与正在运行的程序无关引起异常处理程序的进程正是异常处理程序运行时的当前进程二、特点1.(1)尽可能快(2)能以嵌套的方式执行,但是同种类型的中断不可以嵌套(3)尽可能地限制临界区,因为在临界区中,中断被禁止2.大部分异常发生在用户态,缺页异常是唯一发生于内核态能触发的异常缺页异常意味着进程切换,因此中断处理程序从不执行可以导致缺页的操作3.中断处理程序运行于内核态中断发生于用户态时 阅读全文

posted @ 2012-05-23 20:47 windmissing 阅读(374) 评论(0) 推荐(0) 编辑

Linux2.6进程的创建与删除
摘要:一、进程的创建1.系统调用clone()与fork()的区别:资源的继承方式参数区分父进程与子进程的方法fork()全部复制,即父进程的所有资源全部通过数据结构的复制传给子进程无参数父进程与子进程,从fork()返回时的返回值不同,以此区分二者。子进程返回0.父进程返回子进程的pidclone()有选择地将资源复制给子进程,没有复制的资源通过指针复制的方式与子进程共享(共享与复制的关系见2)有参数,用于设置资源复制的方式clone()所产生的子线程的PID有可能是0,因此采用比较系统堆栈指针的方法来区分二者。note:(1)为什么返回值的方式对fork()适用?因为fork()后子进程拥有独立 阅读全文

posted @ 2012-05-22 18:43 windmissing 阅读(409) 评论(0) 推荐(0) 编辑

Linux2.6进程切换
摘要:1.进程切换是指:保存prev进程的上下文,用next的上下文替代。其中上下文包括:页全局目录、内核态堆栈、硬件上下文。2.80x86为进程切换提供的硬件支持:第一种:通过任务门第二种:通过JMP和CALL指令:把硬件上下文存在TSS中,执行这条指令时,通过硬件自动切换TSS,完成硬件上下文的过程TSS是任务状态段,只能存放在GDT中,不能存放在LDT中3.Linux使用的硬件上下文切换方法:通过一组MOV指令逐步执行切换,手动模拟1的过程因为这样效率较高,也便于各种检查和保护4.Linux的进程切换不使用80x86提供的硬件方法,但是为了与80x86兼容,仍会为每个CPU创建一个TSS(按照 阅读全文

posted @ 2012-05-22 14:18 windmissing 阅读(302) 评论(0) 推荐(0) 编辑

Linux2.6进程
摘要:1.进程、用户线程、内核线程的区别和联系进程用户线程(轻量级进程)内核线程代码段有有有数据段有有有描述符task_struct有有有用户空间堆栈有一个线程组共享一个用户空间完全没有内核空间堆栈有有有PID独一无二的一组线程共享一个有这里的有是指拥有独立的2.内核线程:由内核创建、调度,用于执行一些重要的、周期性的过程。只运行在内核态、只使用3G以后的系统空间。比如用于回收物理页面的kswapd线程3.进程的状态(1)就绪或运行(2)可中断的等待(3)不可中断的等待(4)暂停(5)跟踪(6)僵死(见Linux2.6进程的创建与删除)(7)僵死撤消4.进程描述符与进程之间是严格的一一对应5.内核态 阅读全文

posted @ 2012-05-21 22:13 windmissing 阅读(217) 评论(0) 推荐(0) 编辑

Linux2.4打开一个文件的系统调用
摘要:0.sys_open()(1)从当前进程的“打开文件表”中找到一个空闲的项get_unused_fs()(2)建立文件读写的上下文filp_open():(见1)(3)将上下文安装到文件打开表中1.filp_open():建立文件读写的上下文(1)获取指向文件名的dentry和vfsmount:open_namei()若只是打开,则通过path_init()和path_walk()搜索若有不存在就创建的要求,则(见3)3.获取指向文件名的dentry和vfsmount,若不存在就创建(1)找到path_name对应的节点的父dentry(2)找到目标文件的dentry(3)若不存在,则创建de 阅读全文

posted @ 2012-05-21 09:49 windmissing 阅读(224) 评论(0) 推荐(0) 编辑

2007年百度之星程序设计大赛试题初赛题目-题4-百度时间
摘要:题目描述Baidu的服务器上使用的不是北京时间,而是Baidu时间。Baidu时间的时分秒与北京时间相同,但是日期与北京时间不同,是用一个正整数表示从2000年1月1日起的第几天。现在就请大家设计一个程序将北京时间转换为百度时间。输入格式输入数据的每一行为一个待转化的北京时间,格式包括两种:一种为:YYYY-MM-DD,(YYYY表示四位数年份,MM为两位月份,DD为两位日期);另一种为:MM/DD/YYYY,(YYYY表示四位数年份,MM为两位月份,DD为两位日期);不符合任何一种格式的输入视为非法输入。输出格式每个数据输出一行。如果格式正确,输出一个正整数,否则输出Error。输入样例20 阅读全文

posted @ 2012-05-20 13:05 windmissing 阅读(202) 评论(0) 推荐(0) 编辑

2007年百度之星程序设计大赛试题初赛题目-题3-实习生小胖的百度网页过滤器
摘要:题目描述百度网页采集器(Baiduspider)每天从互联网收录数亿网页,互联网的网页质量参差不齐。百度的工程师们每天都在改进方法来判断一个网页质量的好坏,使质量差的网页出现在检索结果中较后的位置。现在实习生小胖想到一个很简单的方法来判断一个网页内容的好坏,方法如下:1.利用数据挖掘技术在互联网语料库中挖掘出一批有特点的词汇,分为好词和坏词两种,好词标上正的权重,坏词标上负的权重;2.通过好词和坏词词典对每个网页计算网页总权重:从第一个字开始匹配,找到一个好词则加上相应的权重,找到一个坏词则减去相应的权重,下一次匹配将从找到的词末尾的下一个位置开始。3.坏词采用正向最短匹配:从当前匹配位置开始 阅读全文

posted @ 2012-05-20 10:50 windmissing 阅读(137) 评论(0) 推荐(0) 编辑

普通母函数
摘要:struct node//用于存储每个元素的大小与数量 { int value;//大小 int num;//数量 }lottery[100];void Generating(int n, int sum)//母函数过程,n表示元素的个数,sum表示和的最大值 { int c1[1000] = {1}; int c2[1000] = {0}; int i, j, k; for(i = 0; i < n; i++) { for(j = 0; j <= sum; j++) { for(k = 0; k+j<sum&&k<=lottery[i].num*lot 阅读全文

posted @ 2012-05-19 15:44 windmissing 阅读(118) 评论(0) 推荐(0) 编辑

2007年百度之星程序设计大赛试题初赛题目-题2-Wii 游戏开始啦!
摘要:题目描述为了在紧张的上班时间让员工们轻松些,百度休息室里放置着按摩椅、CD、高尔夫套装和Wii游戏机等休闲用品。其中最受欢迎的当然是游戏机。wii游戏机每个手柄需要使用两节电池(这两个电池可以是不同的品牌)。工程师们在玩游戏时。如果手柄没有电,他们都是将其中没电的电池拿走,并换上一个全新的电池,有电的必须继续使用。例如,已知三种电池的使用时间分别为3小时、5小时和8小时。一开始,工程师使用3小时和5小时的电池。3小时后,换上一个8小时的,再过2小时后,手柄再次没电时,已经没有电池可用了。但如果一开始就使用那个8小时电量的电池,可以玩满8个小时。告诉你每个品牌电池的使用时间以及该品牌电池的个数, 阅读全文

posted @ 2012-05-19 15:11 windmissing 阅读(164) 评论(0) 推荐(0) 编辑

2007年百度之星程序设计大赛试题初赛题目-题1-百度的高级搜索方法
摘要:题面描述:你尝试过在百度上使用siteinurl语法查询吗?如果还没有的话可以试一下:)如输入site:www.baidu.cominurl:news则会搜出所有在www.baidu.com站点上的包含"news"子串的url。现在我们有两份数据,一份是site_inurl.txt一份是url.txtsite_inurl.txt中每行是一个siteinurl语法组成的查询串,url.txt中保存的是url列表。你能否在url列表中找出所有能被site_inurl.txt中的查询串检索到的url?如site_inurl.txt内容如下:site:www.baidu.comin 阅读全文

posted @ 2012-05-19 13:24 windmissing 阅读(401) 评论(0) 推荐(0) 编辑

用指针传递的字典树
摘要:#include <string> using namespace std; #define NUM 26 #define TYPE 'A' class dictree { public: dictree *child[NUM]; string *value;//节点所存的数据,根据题目而使用不同的类型或数据 dictree(){memset(child,0,sizeof(child));value=NULL;} ~dictree(); bool insert(string s, string s2); string search(string s); }; //把 阅读全文

posted @ 2012-05-18 21:34 windmissing 阅读(128) 评论(0) 推荐(0) 编辑

2006年百度之星程序设计大赛试题初赛题目-题6-百度语言翻译机
摘要:百度语言翻译机时限1s百度的工程师们是非常注重效率的,在长期的开发与测试过程中,他们逐渐创造了一套他们独特的缩率语。他们在平时的交谈,会议,甚至在各中技术文档中都会大量运用。为了让新员工可以更快地适应百度的文化,更好地阅读公司的技术文档,人力资源部决定开发一套专用的翻译系统,把相关文档中的缩率语和专有名词翻译成日常语言。输入数据:输入数据包含三部分1.第一行包含一个整数N(N<=10000),表示总共有多少个缩率语的词条。2.紧接着有N行的输入,每行包含两个字符串,以空格隔开。第一个字符串为缩率语(仅包含大写英文字符,长度不超过10),第二个字符串为日常语言(不包含空格,长度不超过255 阅读全文

posted @ 2012-05-18 21:31 windmissing 阅读(206) 评论(0) 推荐(0) 编辑

带权的二分匹配
摘要:#include <queue> #include <algorithm> /*********************************************************/ //这些都是KM模板 const int N = 305;//二分图中每一个子图的点的最大数 const int INF = 1<<28;//正无穷 bool xckd[N], yckd[N];//在一次DFS中,Xi与Yi是否在交错树上 int n;//点的个案 int edge[N][N];//二维权值信息用矩阵来存储 int xmate[N], ymate[N 阅读全文

posted @ 2012-05-18 20:08 windmissing 阅读(165) 评论(0) 推荐(0) 编辑

2006年百度之星程序设计大赛试题初赛题目-题5-座位调整
摘要:题目描述:百度办公区里到处摆放着各种各样的零食。百度人力资源部的调研发现,员工如果可以在自己喜欢的美食旁边工作,工作效率会大大提高。因此,百度决定进行一次员工座位的大调整。调整的方法如下:1.首先将办公区按照各种零食的摆放分成N个不同的区域。(例如:可乐区,饼干区,牛奶区等等)。2.每个员工对不同的零食区域有不同的喜好程度(喜好程度度的范围为1—100的整数,喜好程度越大表示该员工越希望被调整到相应的零食区域)。3.由于每个零食区域可以容纳的员工数量有限,人力资源部希望找到一个最优的调整方案令到总的喜好程度最大。数据输入:第一行包含两个整数N,M,(1<=N,M<=300)。分别表 阅读全文

posted @ 2012-05-18 20:06 windmissing 阅读(403) 评论(0) 推荐(0) 编辑

二分图带权匹配-Kuhn-Munkres算法(有修改)
摘要:KM算法是通过给每个顶点一个标号(叫做顶标)来把求最大权匹配的问题转化为求完备匹配的问题的。设顶点Xi的顶标为A[i],顶点Yi的顶标为B[i],顶点Xi与Yj之间的边权为w[i,j]。在算法执行过程中的任一时刻,对于任一条边(i,j),A[i]+B[j]>=w[i,j]始终成立。KM算法的正确性基于以下定理: *若由二分图中所有满足A[i]+B[j]=w[i,j]的边(i,j)构成的子图(称做相等子图)有完备匹配,那么这个完备匹配就是二分图的最大权匹配。 这个定理是显然的。因为对于二分图的任意一个匹配,如果它包含于相等子图,那么它的边权和等于所有顶点的顶标和;如果它有的边不包含于... 阅读全文

posted @ 2012-05-18 16:47 windmissing 阅读(693) 评论(0) 推荐(0) 编辑

2006年百度之星程序设计大赛试题初赛题目-题4-剪刀石头布
摘要:N个小孩正在和你玩一种剪刀石头布游戏。N个小孩中有一个是裁判,其余小孩分成三组(不排除某些组没有任何成员的可能性),但是你不知道谁是裁判,也不知道小孩们的分组情况。然后,小孩们开始玩剪刀石头布游戏,一共玩M次,每次任意选择两个小孩进行一轮,你会被告知结果,即两个小孩的胜负情况,然而你不会得知小孩具体出的是剪刀、石头还是布。已知各组的小孩分别只会出一种手势(因而同一组的两个小孩总会是和局),而裁判则每次都会随便选择出一种手势,因此没有人会知道裁判到底会出什么。请你在M次剪刀石头布游戏结束后,猜猜谁是裁判。如果你能猜出谁是裁判,请说明最早在第几次游戏结束后你就能够确定谁是裁判。输入格式:输入文件包 阅读全文

posted @ 2012-05-18 13:45 windmissing 阅读(173) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示