- 博客(32)
- 资源 (9)
- 收藏
- 关注
原创 Linux2.6系统调用
一、引入系统调用1.概念:操作系统为在用户态运行的进程与硬件设备进行交到提供了一组接口。Linux通过向内核发出系统调用来实现这些接口2.作用:对硬件设备操作的编程更容易提高了系统的安全性使程序更有可移植性3.进入系统调用的两种方法(1)int &0x80汇编指令(2)sysenter汇编指令二、系统调用与API的区别1.API只是一个函数定义,说明
2012-05-29 20:09:18 1246
原创 Linux2.6-4G的线性地址空间的分配与使用
一、4G线性空间的使用1.0-3G属于用户空间,无论是用户态还是内核态都可以寻址,但是内核一般不访问这里的数据3-4G属于系统空间,只有内核态的进程才可以访问。二、系统空间1.3G-4G的系统空间的使用(1)3G ----- 3G+high_memory:对前896MB RAM进程映射的线性地址(2)high_memory ----- PKMAP_BASE:非连续内
2012-05-29 19:44:42 1612
原创 Linux2.6进程调度
一、Linux2.6调度算法的特点1.在固定时间内选中要运行的进程,这个时间不会因为可运行进程增多而变大2.每个CPU有自己的可运行队列3.较好地解决区分交互式进程与批处理进程的问题二、进程按调度类型分类1.SCHED_FIFO:先进先出的实时进程如果没有其它更高优先级(必须是更高)的可运行实时进程(普通进程的优先不可能高于实时进程)出现,就可以一地上运行。对于
2012-05-26 16:48:56 2032
原创 Linux2.6可延迟中断
一、基本概念1.Linux把紧随中断要执行的操作分为三类 特点处理方法举例第一类紧急的在禁止可屏蔽中断的情况下立即执行修改设备和处理器同时访问的数据结构第二类非紧急的在开中断的情况下立即执行修改那些只有处理器才会访问的数据结构(例如,按下一个键后读扫描码)第三类非紧急可延迟的由独立的函数来执行
2012-05-24 11:28:22 1599
原创 Linux2.6中断与异常
一、基本概念1. 产生的位置发生的时刻时序中断CPU外部随机异步异常CPU正在执行的程序一条指令终止执行后同步2.由中断或异常执行的代码不是一个进程,而是一个内核控制路径,代表中断发生时正在运行的进程的执行中断处理程序与正在运行的程序无关引起异常处理程序的进程正是异常处理程序运行时的
2012-05-23 20:47:32 3691 2
原创 Linux2.6进程的创建与删除
一、进程的创建1.系统调用clone()与fork()的区别: 资源的继承方式参数区分父进程与子进程的方法fork()全部复制,即父进程的所有资源全部通过数据结构的复制传给子进程无参数父进程与子进程,从fork()返回时的返回值不同,以此区分二者。子进程返回0.父进程返回子进程的pidclone()有选择地将资源复制给子进
2012-05-22 18:43:48 2393 2
原创 Linux2.6进程切换
1.进程切换是指:保存prev进程的上下文,用next的上下文替代。其中上下文包括:页全局目录、内核态堆栈、硬件上下文。2.80x86为进程切换提供的硬件支持:第一种:通过任务门第二种:通过JMP和CALL指令:把硬件上下文存在TSS中,执行这条指令时,通过硬件自动切换TSS,完成硬件上下文的过程TSS是任务状态段,只能存放在GDT中,不能存放在LDT中
2012-05-22 14:18:13 2430
原创 Linux2.6进程
1.进程、用户线程、内核线程的区别和联系 进程用户线程(轻量级进程)内核线程代码段有有有数据段有有有描述符task_struct有有有用户空间堆栈有一个线程组共享一个用户空间完全没有内核空间堆栈有有有PID独一无二的一组线程共享
2012-05-21 22:13:44 2731
原创 Linux2.4打开一个文件的系统调用
0.sys_open()(1)从当前进程的“打开文件表”中找到一个空闲的项get_unused_fs()(2)建立文件读写的上下文filp_open():(见1)(3)将上下文安装到文件打开表中1.filp_open():建立文件读写的上下文(1)获取指向文件名的dentry和vfsmount:open_namei()若只是打开,则通过path_init()和pat
2012-05-21 09:49:28 1509
原创 2007年百度之星程序设计大赛试题初赛题目-题4-百度时间
题目描述 Baidu 的服务器上使用的不是北京时间,而是 Baidu 时间。 Baidu 时间的时分秒与北京时间相同,但是日期与北京时间不同,是用一个正整数表示从 2000 年 1 月 1 日 起的第几天。 现在就请大家设计一个程序将北京时间转换为百度时间。 输入格式 输入数据的每一行为一个待转化的北京时间,格式包括两种: 一种为: YYYY-MM
2012-05-20 13:05:38 1104
原创 2007年百度之星程序设计大赛试题初赛题目-题3-实习生小胖的百度网页过滤器
题目描述 百度网页采集器 (Baiduspider) 每天从互联网收录数亿网页,互联网的网页质量参差不齐。百度的工程师们每天都在改进方法来判断一个网页质量的好坏,使质量差的网页出现在检索结果中较后的位置。现在实习生小胖想到一个很简单的方法来判断一个网页内容的好坏,方法如下: 1. 利用数据挖掘技术在互联网语料库中挖掘出一批有特点的词汇,分为好词和坏词两种,好词标上正的权重
2012-05-20 10:50:45 1098
原创 普通母函数
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 =
2012-05-19 15:44:59 1882 1
原创 2007年百度之星程序设计大赛试题初赛题目-题2-Wii 游戏开始啦!
题目描述 为了在紧张的上班时间让员工们轻松些,百度休息室里放置着按摩椅、 CD 、高尔夫套装和 Wii 游戏机等休闲用品。其中最受欢迎的当然是游戏机。 wii 游戏机每个手柄需要使用两节电池(这两个电池可以是不同的品牌)。工程师们在玩游戏时。如果手柄没有电,他们都是将其中没电的电池拿走,并换上一个全新的电池,有电的必须继续使用。 例如,已知三种电池的使用时间分别为 3 小时、 5 小时
2012-05-19 15:11:20 1168 1
原创 2007年百度之星程序设计大赛试题初赛题目-题1-百度的高级搜索方法
题面描述: 你尝试过在百度上使用 site inurl 语法查询吗 ? 如果还没有的话可以试一下 :) 如输入 site:www.baidu.com inurl:news 则会搜出所有在 www.baidu.com 站点上的包含 "news" 子串的 url 。 现在我们有两份数据,一份是 site_inurl.txt 一份是 url.txt site_inurl.txt 中每
2012-05-19 13:24:21 1419
原创 用指针传递的字典树
#include using namespace std;#define NUM 26#define TYPE 'A'class dictree{public: dictree *child[NUM]; string *value;//节点所存的数据,根据题目而使用不同的类型或数据 dictree(){memset(child,0,sizeof(child));value=N
2012-05-18 21:34:39 1738 1
原创 2006年百度之星程序设计大赛试题初赛题目-题6-百度语言翻译机
百度语言翻译机 时限 1s 百度的工程师们是非常注重效率的,在长期的开发与测试过程中,他们逐渐创造了一套他们独特的缩率语。他们在平时的交谈,会议,甚至在各中技术文档中都会大量运用。 为了让新员工可以更快地适应百度的文化,更好地阅读公司的技术文档,人力资源部决定开发一套专用的翻译系统,把相关文档中的缩率语和专有名词翻译成日常语言。 输入数据: 输入数据包含三部分 1. 第一行
2012-05-18 21:31:36 1361 3
原创 带权的二分匹配
#include #include /*********************************************************///这些都是KM模板const int N = 305;//二分图中每一个子图的点的最大数const int INF = 1<<28;//正无穷bool xckd[N], yckd[N];//在一次DFS中,Xi与Yi是否在交错树上
2012-05-18 20:08:28 1200 1
原创 2006年百度之星程序设计大赛试题初赛题目-题5-座位调整
题目描述: 百度办公区里到处摆放着各种各样的零食。百度人力资源部的调研发现,员工如果可以在自己喜欢的美食旁边工作,工作效率会大大提高。因此,百度决定进行一次员工座位的大调整。 调整的方法如下: 1 . 首先将办公区按照各种零食的摆放分成 N 个不同的区域。(例如:可乐区,饼干区,牛奶区等等)。 2 . 每个员工对不同的零食区域有不同的喜好程度(喜好程度度的范围为 1 — 100 的
2012-05-18 20:06:44 2375 1
转载 二分图带权匹配-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)构成的
2012-05-18 16:47:44 4421 1
原创 2006年百度之星程序设计大赛试题初赛题目-题4-剪刀石头布
N 个小孩正在和你玩一种剪刀石头布游戏。 N 个小孩中有一个是裁判,其余小孩分成三组(不排除某些组没有任何成员的可能性),但是你不知道谁是裁判,也不知道小孩们的分组情况。然后,小孩们开始玩剪刀石头布游戏,一共玩 M 次,每次任意选择两个小孩进行一轮,你会被告知结果,即两个小孩的胜负情况,然而你不会得知小孩具体出的是剪刀、石头还是布。已知各组的小孩分别只会出一种手势(因而同一组的两个小孩总会是和局)
2012-05-18 13:45:15 1708
原创 2006年百度之星程序设计大赛试题初赛题目-题3-变态的比赛规则
变态的比赛规则 为了促进各部门员工的交流,百度 (baidu) 举办了一场全公司范围内的 " 拳皇友谊赛 " ,负责组织这场比赛的是百度的超级 " 拳皇 " 迷 W.Z. W.Z 不想用传统的淘汰赛或者循环赛的方式,而是自己制定了一个比赛规则。 由于一些员工(比如同部门或者相临部门员工)平时接触的机会比较多,为了促进不同部门之间的交流, W.Z 希望员工自己组成不同组。不同组之间的每两个人
2012-05-17 21:48:06 1440
原创 2006年百度之星程序设计大赛试题初赛题目-题2-蝈蝈式的记分
题目名称:蝈蝈式的记分 内容描述: 蝈蝈小朋友刚刚学会了 0-9 这十个数字 , 也跟爸爸妈妈来参加百度每周进行的羽毛球活动。但是他还没有球拍高,于是大人们叫他记录分数。聪明的蝈蝈发现只要记录连续得分的情况就可以了,比如用“ 3 2 4 ” 可以表示一方在这一局中连得三分后,输了两分,接着又连得到四分。可是,后来大人们发现蝈蝈只会用 0-9 这十个数字,所以当比赛选手得分超过 9 的时候,
2012-05-17 14:26:29 1692
原创 2006年百度之星程序设计大赛试题初赛题目-题1-饭团的烦恼
饭团的烦恼 “午餐饭团“是百度内部参与人数最多的民间组织。 同一个部门的,同一间大学的,同一年出生的,用同一种型号电脑的,员工们总是以各种理由,各种借口组织各种长久的,临时的饭团。 参加饭团,不仅可以以优惠的价格尝到更加丰富的菜式,还可以在吃饭的时候和同事们唠唠嗑,吹吹水,增进感情。 但是,随着百度的员工越来越多,各个饭团的管理随即变得烦杂。特别是为了照顾员工们越来越挑剔的胃口,饭
2012-05-16 22:05:52 1247
原创 2005年百度之星程序设计大赛试题初赛题目-题4
第四题(共四题 100 分):低频词过滤( 40 分) 题目描述:请编写程序,从包含大量单词的文本中删除出现次数最少的单词。如果有多 个单词都出现最少的次数,则将这些单词都删除。 输入数据:程序读入已被命名为 corpus.txt 的一个大数据量的文本文件,该文件包含英 文单词和中文单词,词与词之间以一个或多个 whitespace 分隔。(为便于调试,您可下载 测试 corp
2012-05-16 20:30:08 1301
原创 2005年百度之星程序设计大赛试题初赛题目-题3
第三题(共四题 100 分):字符串替换( 30 分) 题目描述:请编写程序,根据指定的对应关系,把一个文本中的字符串替换成另外的字符串。 输入数据:程序读入已被命名为 text.txt 和 dict.txt 的两个输入数据文本文件, text.txt 为一个包含大量字符串(含中文)的文本,以 whitespace 为分隔符; dict.txt 为表示字符串( s1 )与字符串( s2 )
2012-05-16 16:17:06 1588
原创 2005年百度之星程序设计大赛试题初赛题目-题2
百度之星程序设计大赛试题 -2 第二题(共四题 100 分):重叠区间大小( 20 分) 题目描述:请编写程序,找出下面 “ 输入数据及格式 ” 中所描述的输入数据文件中最大重叠区间的大小。 对一个正整数 n ,如果 n 在数据文件中某行的两个正整数(假设为 A 和 B )之间,即 A或 A>=n>=B ,则 n 属于该行;如果 n 同时属于行 i 和 j ,则 i 和 j 有重叠区间
2012-05-16 14:24:55 1589
原创 2005年百度之星程序设计大赛试题初赛题目-题1
第一题(共四题 100 分):连续正整数( 10 分) 题目描述:一个正整数有可能可以被表示为 n(n>=2) 个连续正整数之和,如: 15=1+2+3+4+5 15=4+5+6 15=7+8 请编写程序,根据输入的任何一个正整数,找出符合这种要求的所有连续正整数序列。 输入数据:一个正整数,以命令行参数的形式提供给程序。 输出数据:在标准输出上打印出符合题目描述的全部
2012-05-15 21:49:10 1854 1
原创 Linux2.4文件系统的卸载
0.sys_umount() -----> 文件系统卸载的系统调用(1)根据设备名搜索设备的安装点不管给的是安装点的路径名还是设备文件的路径名,都会搜过以下结果:nd.dentry指向设备文件根目录的dentrynd.mnt指向设备安装到的安装的vfsmount(2)释放目录项这里只是减少引用计数,移到unused队列,不一定真的释放(3)卸载do_umount():见
2012-05-15 16:18:53 1319
原创 Linux2.4文件系统中vfsmount、安装点的dentry、设备的dentry之间的关系
1.vfsmount、安装点的dentry、设备的dentry之间的关系(1)一个安装点可以安装多个设备(2)一个设备可以安装到多个安装点上2.vfsmount与vfsmount之间的关系3.vfsmount与安装点的dentry之间的关系图太难画,仅写出关系,图见笔记本(1)vfsmount->mnt_mountpoint指向安装点的dentr
2012-05-14 22:13:21 4835
原创 Linux2.4安装一个文件系统
在一个块设备上按一定的格式建立起文件系统的时候,或者系统引导之初,设备上的文件和节点是不可访问的只有把它安装到文件系统中的某个节点上,才能使设备上的文件和节点成为可访问的经过安装后,设备上的文件系统就成为整个文件系统的一部分,或者说,一个子系统最初时,整个文件系统只有一个节点,即根节点"/",这个节点存在于内存中,而不存在于任何具体的设备上系统在初始化时将一个设备安装到节点
2012-05-14 21:39:19 1731
原创 Linux2.4从路径名到目标结点
0.__user_walk() -----> 根据给定的文件路径名在,内存中找到或建立代表着目标文件或目录的dentry结构和inode结构(1)获得路径名getname():在上一篇博客中有介绍(2)准备路径搜索path_init():见1(3)沿着路径名的指引进行搜索path_walk():见2(4)释放路径名putname()1.path_init() -----
2012-05-11 22:06:47 1680 3
原创 Linux2.4系统调用sys_execve
0.sys_execve:系统调用,让进程执行某个程序(1)在系统空间建立一个路径名的副本(见1)(2)do_execve()(见2)(3)释放路径名副本(即作为缓冲区的管理页面)1.getname()(1)在系统空间定义一个缓冲指针(2)分配一个物理页面作为缓冲区(3)将路径名从用户空间复制到缓冲区(4)缓冲区指针指向这个物理页面2.do_ex
2012-05-08 10:52:09 3256
VC++和VS写的小游戏贪吃蛇
2012-06-12
背包问题九讲
2012-05-14
openGL的配置文件
2011-04-08
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人