linux学习笔记(二)进程管理

进程管理

1、 进程

概念

进程就是处于执行的程序。包括可执行程序代码、打开的文件、挂起的信号、
内核数据、处理器状态,内存地址空间、一个或多个线程、全局数据段

线程

是进程中活动的对象。包括独立的程序计数器、进程栈、一组进程寄存器

虚拟机制

虚拟处理器、虚拟内存(后面详细讲解)

进程api

fork()->exec()

进程描述符及任务结构

实践:了解task_struct 结构定义
包括打开的文件,进程地址空间,挂起的信号,进程状态。。。

分配进程描述符

实践:了解thread_info,curent_thread_info()

进程描述符的存放

进程pid最大是 32768,但可以修改/proc/sys/kernel/pid_max

进程状态

TASK_RUNNING,TASK_INTRRUPTIBLE,TASK_UNINTRRUPTIBLE,__TASK_TRACE(例如ptrace),

进程树

init进程是根进程,其它进程都是由此的子树

进程创建

fork() 创建子进程,exec()读取执行文件并载入地址空间运行。
fork() 采用写时拷贝(copy-on-write),需要的时候才拷贝。可以减少拷贝,让父进程和子进程共享一个拷贝
vfork()
同fork()

线程

linux从本质上来说没有线程概念。windows上线程是执行单元,而linux只是进程间共享资源的手段。
创建线程
clone(CLONE_VM|CLONE_FS|CLONE_FILES|CLONE_SIGHAND,0) ;//地址空间,文件系统资源,文件描述符,信号
同fork()差不多,clone(SIGCHLD,0)
vfork() 是 clone(CLONE_VFORK|CLONE_VM|SIGCHLD,0)
标志位列表
参数标志含义
CLONE_FILES打开的文件
CLONE_FS文件系统信息
CLONE_IDLETASKpid=0,只供idle进程使用
CLONE_NEWNS为子进程创建新命名空间
CLONE_PARENT子与父拥有同一个父进程
CLONE_PTRACE继续调试子进程
CLONE_SETTIDtid写至用户空间
CLONE_SETTLSTLS
CLONE_SIGHAND共享信号
CLONE_SYSVSEMsystem v
CLONE_THREAD父子进程放入相同的线程组
CLONE_VFORK父进程准备睡眠等子进程唤醒
CLONE_UNTRACED防止被CLONE_PTRACE
CLONE_STOP以TASK_STOP开始进程
CLONE_SETTLS创建新的TLS(线程本地存储)
CLONE_CHILD_CLEARTID清除子进程tid
CLONE_CHILD_SETTID设置子进程tid
CLONE_PARENT_SETTID设置父进程tid
CLONE_VM共享地址空间
内核线程创建
kthread_run(),kthread_stop()
查找新的父进程
如果父进程先被关闭,就需要给子进程查找其它父进程。find_new_reaper(father)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值