【版权声明:尊重原创,转载请保留出处:blog.csdn.net/shallnet,文章仅供学习交流,请勿用于商业用途】
linux为多任务系统,正常情况下都存在成百上千个任务。由于linux提供抢占式的多任务模式,所以linux能同时并发地交互执行多个进程,而调度程序将决定哪一个进程投入运行、何时运行、以及运行多长时间。调度程序是像linux这样的多任务操作系统的基础,...
分类:
系统相关 时间:
2015-07-31 23:36:20
阅读次数:
211
可执行文件的装载与进程
1。进程虚拟地址空间
每个进程运行起来以后,都将有一个自己的虚拟地址空间,其实这还是计算机制造出来的假象,让进程误以为此时只有它自己在运行,所有内存都只有他自己在使用,一般来说,C语言指针的大小的位数与虚拟空间的位数相同,32位平台下指针为32位,4字节。64位平台下的指针为8字节,但是有些特殊的CPU,并不是这样,暂且不考虑特殊的CPU。
暂时以32位平台为例,这个...
分类:
系统相关 时间:
2015-07-31 13:00:49
阅读次数:
234
【版权声明:尊重原创,转载请保留出处:blog.csdn.net/shallnet,文章仅供学习交流,请勿用于商业用途】
进程其实就是程序的执行时的实例,是处于执行期的程序。在linux内核中,进程列表被存放在一个双向循环链表中,链表中每一项都是类型为task_struct的结构,该结构称作进程描述符,进程描述符包含一个具体进程的所有信息,这个结构就是我们在操作系统中所说的PCB...
分类:
系统相关 时间:
2015-07-29 21:24:35
阅读次数:
223
新进程的执行源于以下前提:
- dup_task_struct中为其分配了新的堆栈
- 调用了sched_fork,将其置为TASK_RUNNING
- copy_thread中将父进程的寄存器上下文复制给子进程,保证了父子进程的堆栈信息是一致的
- 将ret_from_fork的地址设置为eip寄存器的值
最终子进程从ret_from_fork开始执行...
分类:
系统相关 时间:
2015-07-29 14:08:57
阅读次数:
198
Chrome Predictor的预测功能优化Chrome会随着使用变得更快。它这个特性是通过一个单例对象Predictor来实现的。这个对象在浏览器内核进程(Browser Kernel Process)中实例化,它唯一的职责就是观察和学习当前网络活动方式,提前预估用户下一步的操作。下面是一个示例...
分类:
其他好文 时间:
2015-07-21 14:29:55
阅读次数:
109
1、进程的静态特性进程:程序执行时的一个实例进程描述符(task_struct): 进程的基本信息(thread_info)、指向内存区描述符的指针(mm_struct)、进程相关的tty(tty_struct)、当前目录(fs_struct)、指向 文件描述符的指针(fi...
分类:
系统相关 时间:
2015-07-13 21:51:32
阅读次数:
594
在多任务操作系统中,每个进程都运行在属于自己的内存沙盘中。这个沙盘就是虚拟地址空间(Virtual Address Space),在32位模式下它是一个4GB的内存地址块。在Linux系统中, 内核进程和用户进程所占的虚拟内存比例是1:3,而Windows系统为2:2(通过设置Large-Add.....
分类:
系统相关 时间:
2015-06-15 12:56:34
阅读次数:
148
1 可执行队列
(基于实时进程调度)
调度程序中最基本的数据结构式运行队列(runqueue)。可执行队列是给定处理器上的可执行进程的链表,每个处理器一个。每个可投入运行的进程都唯一的归属于一个可执行队列。此外,可执行队列中还包含每个处理器的调度信息。所以,可执行队列也是每个处理器最重要的数据结构。
为了避免死锁,要锁住多个运行队列的代码必须总是按照同样的顺序获取这些锁:按照可...
分类:
系统相关 时间:
2015-06-07 01:06:37
阅读次数:
202
故障检测1.别的先不管,先top看一下cpu、ram、swap哪个比较紧张。由上图分析,可以看出共有602个进程,其中有601个进程休眠了。这好像有点不对劲,内核进程也就80个左右,加上memcached, nginx, mysqld,也不会超出90个。除了这些,剩下的只有php-fpm管理的php...
分类:
Web程序 时间:
2015-06-05 13:43:12
阅读次数:
1557
1.1 进程状态
在Sched.h(include\linux)中定义了进程的状态。
/*
*Task state bitmask. NOTE! These bits are also
*encoded in fs/proc/array.c: get_task_state().
*
* Wehave two separate sets of flags: task...
分类:
编程语言 时间:
2015-06-01 09:47:07
阅读次数:
226