摘要: 进程的调度策略 调度策略:一组规则,决定什么时候以怎样的方式选择一个新进程运行。 Linux的调度基于分时和优先级,进程根据优先级来排队 优先级是动态的 进程调度的时机: 中断处理过程(包括时钟中断、I/O中断、系统调用和异常)中,直接调用schedule(),或者返回用户态时根据need_resc 阅读全文
posted @ 2016-04-12 16:14 ceibaf 阅读(223) 评论(0) 推荐(0) 编辑
摘要: ELF文件头 表 2 e_ident[] 标识索引名称 取值 目的和值EI_MAG0 0 文件标识,0x7FEI_MAG1 1 文件标识,EEI_MAG2 2 文件标识,LEI_MAG3 3 文件标识,FEI_CLASS 4 文件类,0表示非法类别,ELFCLASSNONE;1表示32位,名称ELF 阅读全文
posted @ 2016-04-12 15:07 ceibaf 阅读(258) 评论(0) 推荐(0) 编辑
摘要: 1.可执行程序的生成过程 以一个简单的输出hello,world的程序作为示例 1)首先进行预处理:在命令行中输入gcc -E -o hello.cpp hello.c -m32, -m32 -m64 生成32位/64位机器上的代码 -E 仅作预处理,不进行编译、汇编和链接 2)编译到汇编语言 gc 阅读全文
posted @ 2016-04-10 21:55 ceibaf 阅读(543) 评论(0) 推荐(0) 编辑
摘要: test或[命令 可以使用的条件类型有三类:字符串比较,算术比较和和文件有关的条件测试,test或[后面要有空格。 String Comparison Resultstring1 = string2 True if the strings are equalstring1 != string2 Tr 阅读全文
posted @ 2016-04-08 15:17 ceibaf 阅读(163) 评论(0) 推荐(0) 编辑
摘要: fork(),vfork()和__clone()库函数都根据各自的参数标志去调用clone(),然后clone()再去调用do_fork(),do_fork()调用copy_process() 下面是copy_process的代码 static struct task_struct *copy_pr 阅读全文
posted @ 2016-04-08 10:23 ceibaf 阅读(310) 评论(0) 推荐(0) 编辑
摘要: shell中变量的几点知识: 变量: 1.在默认情况下,所有的变量都被看做字符串来存储的 2.变量区分大小写 3.在变量名前加$来访问内容 4.不需要声明 5.双引号中允许$扩展(用变量的值替换),单引号不行。 示例: s=hello #(注意等号两边不能有空格) echo $s 环境变量: she 阅读全文
posted @ 2016-04-06 00:06 ceibaf 阅读(156) 评论(0) 推荐(0) 编辑
摘要: 待写。。。。 阅读全文
posted @ 2016-04-05 23:13 ceibaf 阅读(129) 评论(0) 推荐(0) 编辑
摘要: 一.启动一个新进程 1.#include<stdio.h> int system (const char *string); 运行以字符串参数的形式传递给它的命令并等待该命令的执行(会阻塞在这) 等同于$sh -c string 命令后加&,后台运行 2.替换进程映像 exec由一系列的函数组成,可 阅读全文
posted @ 2016-04-05 23:12 ceibaf 阅读(202) 评论(0) 推荐(0) 编辑
摘要: 1.用编辑器写个文件,里面是在shell里输入的那些命令,可以通过PATH环境变量引用到的命令都可以用。 #!/bin/sh #!后面的那个参数是用来执行脚本的程序 #后面是注释 剩下的就像在shell里一样的写就行了 注意最后要加exit+退出码,shell里0表示成功。 2.把脚本设置为可执行 阅读全文
posted @ 2016-04-03 14:36 ceibaf 阅读(136) 评论(0) 推荐(0) 编辑
摘要: 进程控制块PCB——task_struct 为了管理进程,内核必须对每个进程进行清晰的描述,进程描述符提供了内核所需了解的进程信息。 struct task_struct数据结构很庞大 Linux进程的状态与操作系统原理中的描述的进程状态似乎有所不同,比如就绪状态和运行状态都是TASK_RUNNIN 阅读全文
posted @ 2016-04-02 20:29 ceibaf 阅读(259) 评论(0) 推荐(0) 编辑