摘要:
引言:上篇博文中,我们简单的介绍了Linux虚拟存储器的概念及组成情况,下面来分析分析进程的创建和终结及跟进程地址空间的联系。这里首先介绍一个比较重要的概念:存储器映射在Linux系统中,通过将一个虚拟存储器区域与一个磁盘上的对象关联起来,以初始化这个虚拟存储器区域的内容,这个过程称为存储器映射。存储器映射为共享数据、创建新的进程以及加载程序提供了一种高效的机制。虚拟存储器区域可以映射到两种类型对象中:1)普通文件:一个虚拟区域可以映射到普通磁盘文件的连续部分,例如可执行目标文件。虚拟区域分为若干的虚拟页面,这些虚拟页面初始化时并没有实际交换进物理存储器,直到CPU第一次引用页面时才真正的加载 阅读全文
摘要:
引言:现代操作系统提供了一种对内存的抽象概念,叫做虚拟存储器,它为每个进程提供了一个大的,一致的,和私有的地址空间。通过一个很清晰的机制,虚拟存储器提供了3个重要的能力:1)它将主存看成是一个存储在磁盘上的地址空间的高速缓存,在主存中只保存活动区域,并根据需要在磁盘和主存之间来回传送数据,通过这种方式,它高效的使用了主存。2)它为每个进程提供了一致的地址空间,从而简化了存储器管理。3)它保护了每个进程的地址空间不被其他进程破坏。Linux操作系统同样也采用了虚拟内存技术,对一个进程而言,它好像可以访问整个系统的所有物理内存,更重要的是,即使单独一个进程,它拥有的地址空间也可以远远大于系统物理内 阅读全文
摘要:
实验环境:Ubuntu12.04下面我们通过 example.c 代码分别生成.cpp .s .o 和ELF可执行文件,并加载运行来分析 程序 example在CPU上执行的整个过程,并由此分析单任务计算机和多任务计算机的工作原理: example.c 2 int g(int x) 3 { 4 return x + 3; 5 } 6 7 int f(int x) 8 { 9 return g(x);10 }11 int main()12 {13 return f(8) + 1; }一:为了在系统上运行example.c 程序,每条C语句都必须转化为低级机器语言指令,然... 阅读全文
摘要:
上篇随笔中实现了隐藏进程,在实际的处理中,经常会用模块来达到修改系统调用的目的,但是当插入一个模块时,若不采取任何隐藏措施,很容易被对方发现,一旦对方发现并卸载了所插入的模块,那么所有利用该模块来隐藏的文件就暴露了,所以应继续分析如何来隐藏特定名字的模块。 这里我们可以通过/proc文件系统来向内核传递命令的方式,实现获取root权限、隐藏模块、隐藏进程、显示进程、显示模块、允许卸载模块等功能。 对于什么是/proc文件系统,以及如何通过它来跟内核通信,可以参考这里: http://www.ibm.com/developerworks/cn/linux/l-proc.html 下面直接贴代码. 阅读全文
摘要:
实现隐藏进程一般有两个方法:1,把要隐藏的进程PID设置为0,因为系统默认是不显示PID为0的进程。2,修改系统调用sys_getdents()。 Linux系统中用来查询文件信息的系统调用是sys_getdents,这一点可以通过strace来观察到,例如strace ls 将列出命令ls用到的系统调用,从中可以发现ls是通过getdents系统调用来操作的,对应于内核里的sys_getedents来执行。当查询文件或者目录的相关信息时,Linux系统用 sys_getedents来执行相应的查询操作,并把得到的信息传递给用户空间运行的程序,所以如果修改该系统调用,去掉结果中与某些特定文件的 阅读全文
摘要:
好吧,虽然面试过了好几天了,还是来记录下吧:投的是嵌入式软件工程师实习职位:在面试半个月前收到一次Intel的电话面试,电面通过后说为了考验我的学习能力,让我自学Perl语言,并且做一个关于Pel的PPT到面试时演示,还说过段时间会把公司地址发我邮箱,面试时间定在了某个礼拜的星期二下午2点。于是乎我就在图书馆借了本 小骆驼书来看,学了段时间,可是迟迟木有收到Intel发来的地址和具体部分的邮件。 另外我当时木有记下他们的电话和Email,所以也联系不到他们。(这是个教训啊,以后得记的把接到的每个通知电面通过的电话记下,以防万一)。加上学校课程和工程实践也很忙,我就放下了Perl的学习,也觉得I 阅读全文
摘要:
相似字符串描述对于两个长度相等的字符串,我们定义其距离为对应位置不同的字符数量,同时我们认为距离越近的字符串越相似。例如,“0123”和“0000”的距离为 3,“0123”和“0213”的距离则为 2,所以与“0000”相比,“0213”和“0123”最相似。现在给定两个字符串 S1 和 S2,其中 S2 的长度不大于 S1。请在 S1 中寻找一个与 S2 长度相同的子串,使得距离最小。输入输入包括多组数据。第一行是整数 T,表示有多少组测试数据。每组测试数据恰好占两行,第一行为字符串 S1,第二行为 S2。所有字符串都只包括“0”到“9”的字符。输出对于每组测试数据,单独输出一行“Case 阅读全文
摘要:
题目列表 > 传话游戏时间限制: 1000ms 内存限制: 256MB描述Alice和Bob还有其他几位好朋友在一起玩传话游戏。这个游戏是这样进行的:首先,所有游戏者按 顺序站成一排,Alice站第一位,Bob站最后一位。然后,Alice想一句话悄悄告诉第二位游戏者,第二位游戏者又悄悄地告诉第三位,第三位又告诉第 四位……以此类推,直到倒数第二位告诉Bob。两位游戏者在传话中,不能让其他人听到,也不能使用肢体动作来解释。最后,Bob把他所听到的话告诉大 家,Alice也把她原本所想的话告诉大家。由于传话过程中可能出现一些偏差,游戏者越多,Bob最后听到的话就与Alice所想的越不 同。B 阅读全文
摘要:
刚刚同学多拿了一份题目,先上传如下:我自己部分题目的解答见上一篇随笔,欢迎大家讨论学习。 阅读全文
摘要:
一共是20道选择题(有可能多选),答对加分,答错扣分,所以了不敢乱选啊,现在开始回忆一些题目:1: 有1000瓶水,其中1瓶是有毒的,小老鼠如果喝了有毒的水会在一个星期后死掉,问至少需要多少只小老鼠来做实验,才能够在一星期后选出有毒的一瓶水。 我选的是10,2^10=1024>1000,原理跟1:N选择器一样的。2: 1条线把平面划分为2部分,2条线把平面划分为4部分(任意两条线不平行,也不存在3条线共点情况),问100条线把平面划分为多少部分。 我选的是5051,经过归纳分析有:S(N)=S(N-1)+N ,N=2,3,4....,考验数学功底的时候来了,S(N)-S(N-1)=N,则 阅读全文