进程管理和终端驱动:基本概念

作者:linuxer 发布于:2016-10-28 18:56 分类:进程管理

对于任何一种OS,终端部分的内容总是令人非常的痛苦和沮丧,GNU/linux也是如此。究其原因主要有两个,一是终端驱动和终端相关的系统软件承载了太多的内容:各种虚拟终端、 伪终端、串口通信、modem、printer等。其次可能是终端和信号处理、进程关系等耦合在一起加大了理解终端驱动的难度。本文的目标是希望能够理清这些内容。

阅读全文>>

标签: process tty session group

评论(10) 浏览(779)

ACCESS_ONCE宏定义的解释

作者:linuxer 发布于:2014-7-17 12:34 分类:进程管理

在阅读RCU代码的时候遇到了ACCESS_ONCE这个宏定义,感觉比较有意思,因此独立出来一篇文档来描述它。

阅读全文>>

标签: ACCESS_ONCE

评论(0) 浏览(6463)

Process Creation(二)

作者:linuxer 发布于:2014-4-28 15:40 分类:进程管理

本文是Process Creation(一)的延续,主要内容包括:

1、进程描述符中Realtime Mutex相关数据结构的初始化

2、子进程如何复制父进程的credentials

3、per-task delay accounting的处理

4、子进程如何复制父进程的flag

阅读全文>>

标签: process management do_fork

评论(25) 浏览(6762)

Process Creation(一)

作者:linuxer 发布于:2014-4-23 8:39 分类:进程管理


为什么要写一个关于进程如何创建的文档?其实用do_fork作为关键字进行索引,你会发现网上的相关文档数以万计。作为一个内核工程师,对进程以及进程相关的内容当然是非常感兴趣,但是网上的资料并不能令我非常满意(也许是我没有检索到好的文章),一个简单的例子如下:

static void copy_flags(unsigned long clone_flags, struct task_struct *p)
{
    unsigned long new_flags = p->flags;

    new_flags &= ~(PF_SUPERPRIV | PF_WQ_WORKER);
    new_flags |= PF_FORKNOEXEC;
    p->flags = new_flags;
}

上 面的代码是进程创建过程的一个片段,网上的解释一般都是对代码逻辑的描述:清除PF_SUPERPRIV 和PF_WQ_WORKER这两个flag的标记,设定PF_FORKNOEXEC标记。坦率的讲,这样的代码解析没有任何意义,其实c代码都已经是非常 清楚了。当然,也有的文章进行了进一步的分析,例如对PF_SUPERPRIV 被清除进行了这样的解释:表明进程是否拥有超级用户权限的PF_SUPERPRIV标志被清0。很遗憾,这样的解释不能令人信服,因为如果父进程是超级用 户权限,其创建的子进程是要继承超级用户权限的。

正因为如此,我想对linux kernel中进程创建涉及的方方面面的系统知识进行梳理,在我的能力范围内对进程创建的source code进行逐行解析。一言以蔽之,do_fork的source code只是索引,重要的是与其相关的各个知识点。

由于进程创建是一个大工程,因此分成若干的部分。本文是第一部分,主要内容包括:

1、从用户空间看进程创建

2、系统调用层面看进程创建

3、trace的处理

4、参数检查

5、复制thread_info和task_struct

注:本文引用的内核代码来自3.14版本的linux kernel。



阅读全文>>

标签: do_fork

评论(0) 浏览(5498)

process identification

作者:linuxer 发布于:2014-3-26 12:28 分类:进程管理

一、概述

本文主要描述在linux kernel中如何标识一个或者一组和进程(线程)相关的实体,包括:

1、进程ID(线程组ID

2、线程ID

3、进程组ID

4Session ID

需要强调的是本文focusidentification,很多展开的内容会有一系列文档描述。

阅读全文>>

标签: process management

评论(8) 浏览(5327)

process credentials

作者:linuxer 发布于:2014-3-21 16:32 分类:进程管理

一、介绍

linux系统中的一个进程运行起来的时候,总是要访问系统的资源,访问文件或者向其他的进程发送信号。系统是否允许其进行这些操作?系统是根据什么来判断该进程的权限?这些问题是和进程信任状(process credentials)相关。

process credentials包括一系列的ID,如下:

1real user ID real group ID

2effective user ID effective group ID

3saved set-user-ID saved set-group-ID

4file-system user ID file-system group ID

5supplementary group IDs

阅读全文>>

标签: process management

评论(7) 浏览(5466)

Copyright @ 2013-2015 蜗窝科技 All rights reserved. Powered by emlog