一、进程概念 进程是程序执行的一个实例。操作系统会以进程为单位,分配系统资源,进程是资源分配的最小单位。Linux进程的四大要素 1:一段供进程执行的程序,该程序可以被多个进程执行。 2:独立的内核堆栈。 3:进程控制快(task_struct:有了这个数据结构,进程才能成为内核调度的一个基本单位接...
分类:
系统相关 时间:
2015-01-07 00:27:01
阅读次数:
265
三:代码流程1,path_lookupat()函数首先调用path_init()函数,path_init()函数主要是初始化查询,将nd实例的mnt和dentry成员设置为根目录或者工作目录的对应项 a,绝对路径(以/开始),获得根目录的dentry。它存储在task_struct中fs指向的fs....
分类:
其他好文 时间:
2014-11-01 23:10:36
阅读次数:
288
一,task_struct和文件系统相关的一些信息[cpp]view plaincopystructtask_struct{.../*filesysteminfo*/intlink_count,total_link_count;.../*filesysteminformation*/structfs...
分类:
其他好文 时间:
2014-11-01 23:09:29
阅读次数:
298
[cpp]view plaincopystructtask_struct{volatilelongstate;/*-1不可运行,0可运行,>0表示停止*/void*stack;atomic_tusage;unsignedlongflags;/*每进程标志*/unsignedlongptrace;in...
分类:
系统相关 时间:
2014-10-26 09:04:03
阅读次数:
355
Linux内核-进程管理
1.进程
#内核调度的对象是线程,不是进程
#对Linux而言,线程只是特殊的进程
#进程提供两种虚拟机制:虚拟处理器、虚拟内存
#创建进程通过fork()来从父进程复制创建进程
2.进程描述符
#任务队列:双向链表(每一项都是task_struct--->进程描述符)
#Linux通过slab分配器...
分类:
系统相关 时间:
2014-10-19 14:19:49
阅读次数:
214
进程与线程
参考:http://www.cnblogs.com/blueclue/archive/2010/07/16/1778855.html
首先比较Linux进程和线程的创建的区别,以此展开:
创建进程:(1)调用fork(),为子进程新建内核栈、pthread_info和task_struct,复制父进程的大部分的参数,采用写时复制(copy-on-write)辅助父进程...
分类:
编程语言 时间:
2014-10-17 15:30:05
阅读次数:
237
CREAT PROCESS
fork()
|
clone(参数,决定父子函数的共享内容)
|
do_fork()
|
copy_process()
|
dup_task_struct()
创建子进程的内核堆栈,复制父进程的进程描述符(task_struct)
进程描述符的很多成员被清除或者设为初值
设置子进程的状态task_struct-->state
...
分类:
系统相关 时间:
2014-10-16 17:32:12
阅读次数:
369
Linux进程
进程是Linux中事务管理的基本单元,所有的进程都拥有自己的独立处理环境和系统资源,并且各进程之间不可以直接访问对方的资源,进程之间的交流需要通过特定的机制(IPC)。
在Linux系统的内核头文件中(/usr/src/kernels/内核版本/include/linux/sched.h)定义了进程控制块(PCB)结构体struct task_struct来管理每个进程的资源。...
分类:
系统相关 时间:
2014-10-11 16:18:45
阅读次数:
351
#include
#include
#include
#include
#include
static int i=0,j=100;//一个线程从0开始加,一个线程从100开始加
struct task_struct *MyThread1=NULL;//线程1
struct task_struct *MyThread2=NULL;//线程2
static int myVar = 0...
分类:
系统相关 时间:
2014-09-30 12:08:19
阅读次数:
305
#include
#include
#include
#include
#include
#include//顺序锁头文件
static int i=0,j=100;//一个线程从0开始加,一个线程从100开始加
struct task_struct *MyThread1=NULL;//线程1
struct task_struct *MyThread2=NULL;//线程2
st...
分类:
系统相关 时间:
2014-09-30 11:35:09
阅读次数:
257