进程管理---进程

概念:
1、进程–处于执行起的程序,包括代码段(text section)、打开的文件、挂起的信号、内核内部数据、处理器状态、一个或多个具有内存映射的内存地址空间及一个或多个执行线程(thread of execution)、存放全局变量的数据段等。进程在Linux中通常也叫任务,该笔记会交替出现。
2、执行线程–简称线程(thread),是在进程中活动的对象。每个进程拥有一个独立的程序计数器、进程栈和一组进程寄存器。内核调度的对象是线程。Unix是一进程一线程,linux中线程是一种特殊的进程。
3、进程提供的两种虚拟机制:虚拟处理器和虚拟内存。虚拟处理器—进程觉得自己独享处理器(实际是共享)。虚拟内存—进程在分配和管理内存时觉得自己拥有整个系统的所有内存资源。
4、进程是处于执行期的程序以及相关的资源的总称。完全存在两个或多个进程执行同一个程序。并且可以共享资源(文件/、地址空间等)。
5、进程通常在创建他的时刻开始存活,例如:linux系统通常调用fork()来复制一个现有的全新的进程。调用fork()的进程称为父进程,新产生的进程为子进程。调用该函数结束时,在返回点这个相同的位置—-父进程恢复执行,子进程开始执行。即:fork()系统调用从内核返回两次,一次回到父进程,另一次回到新产生的子进程。ecec()函数为新进程创建新的地址空间。程序通过exit()系统调用退出执行。
6、进程描述符及任务结构:内核把进程的列表存放在任务队列(task list)中。task list是双向链表。链表中每一项是一个task_struct的结构体被称为进程描述符(process descriptor)—-linux/sched.h
7、task_struct中存放了进程的所有相关信息(1.7kb大小–32位机),包括执行程序打开的文件、进程的地址空间、挂起的信息、进程的状态、进程号等。
8、分配进程描述符—linux通过slab分配task_struct结构(对象复用和缓存着色–cache coloring)。然后在进程内核栈栈底或栈顶(增长方向不同)创建一个结构体thread_info存放相关信息(重要的是存放了进程的task_struct地址)。thread_info和进程的内核堆栈共同构成一个联合体union。
9、进程描述符的存放:内核通过唯一的进程标识值(process identification value)或PID来标识进程。类型为pid_t隐含类型(其实是int类型)。
10、执行过程:current宏用来查找当前正在运行进程的进程描述符(根据体系结构的不同是线方式也不同,current的实现方法不同),在x86上,current宏是通过 current_thread_info()函数实现的,movl $-8192, %eax , andl %esp, %eax. 把栈指针后13位屏蔽掉,用来计算thread_info的偏移。最后,current再从thread_info的task域中获取task_struct的地址。current_thread_info()->task.(PPC的实现是直接将task_struct地址保存到一个寄存器中,因为访问进程描述符是一个频繁的工作,这样做很有必要,PPC中寄存器比较多)。
14、进程状态:task_struct中的state存放着当前进程的状态(五种状态):TASK_RUNNING(运行)、TASK_INTERRUPTIBLE(可中断)、TASK_UNINTERRUPTIBLE(不可中断)、_TASK_TRACED(被其他进程跟踪的进程)、_TASK_STOPPED(进程停止执行)
15、设置当前进程状态:set_task_state(task, state);等同于set_current_state(state);—< linux/sched.h > ,设置状态后可以使用barrer()–内存屏障函数来强制其他处理器重新排序(SMP中有必要)。
16、进程上下文:可执行程序是进程的重要组成部分。从可执行文件载入到进程的地址空间执行。当执行系统调用时,或触发了某个异常,便陷入内核空间。此时,称内核“代表进程执行”并处于进程上下文中。再次上下文中current是有效的。在返回时可能会产生调度。系统调用和异常处理程序是对内核明确定义的接口。进程只有通过这些接口才能陷入内核执行—对内核的所有访问都必须通过这些接口。
17、进程家族树:UNIX系统的进程之间存在明显的继承关系,在linux同样如此。所有进程都是PID为1的进程的后代。内核在系统启动后的最后阶段启动init进程。该进程读取系统的初始化脚本并执行其他的相关程序,最终完成系统的整个启动过程。系统中的每一个进程必有一个父进程,每个进程可拥有零个或多个子进程。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值