Linux Kernel 学习(1) 进程

进程包含打开的文件,挂起的信号,内核内部数据,处理器状态,一个活多个具有内存映射的内存地址空间及一个或多个执行线程,存放全局变量的数据段。

进程是正在执行的程序代码的实时结果。

进程的列表存放在叫做任务队列的双向循环链表中,链表的每一项为task_struct,被称为进程描述符,包含一个具体进程的所有信息。

task_struct的state为进程的五种状态标志之一

TASK_RUNNING(运行):进程是可执行的,或正在执行的,或在运行队列中等待执行

TASK_INTERRUPTIBLE(可中断):进程被阻塞,接收到信号后被设置为运行

TASK_UNINTERRUPTIBLE(不可中断):域可中断相同,但接收到信号也不执行

__TASK_TRACED:被其他进程跟踪的进程,如通过ptrace对调试进程进行跟踪

__TASK_STOPPED(停止):进程没有投入运行也不能投入运行,通常发生在接收到SIGSTOP、SIGSTP、SIGTTIN、SIGTTOU等信号的时候

设置当前进程状态:set_current_state(TASK_INTERRUPTIBLE)

进程上下文?

进程家族树:所有进程都是PID为1的init进程的后代,内核在系统启动的最后阶段启动init进程,该进程完成系统启动的整个过程。每个进程都有一个父进程,每个task_struct都包含一个指向其父进程task_struct,叫做parent的指针,还包含一个称为children的子进程链表

进程创建:fork()通过拷贝当前进程创建自进程,子进程与父进程的区别仅在于PID,PPID(父进程的PID),挂起的信号等

exec()(函数族)读取可执行文件(.elf)并将其载入地址空间运行

fork():

线程在内核中就像是一个普通的进程,只是县城和其他一些进程共享某些资源,如地址空间。传递给clone()的参数标志决定了新创建进程的行为方式和父子进程之间共享的资源种类。

内核线程:独立运行在内核空间的标准进程,只在内核空间运行。

进程中介:do_exit()

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值