Welcome 微信登录

首页 / 操作系统 / Linux / Linux进程的基本知识

进程的内存布局进程从逻辑上可以分为1.Text:程序的指令2.Data:程序使用的静态变量3.Heap:程序能够动态分配额外储存空间的区域3.Stack:当调用函数和返回函数是这片内存空间增长和缩小,用来给局部变量和函数调用s时有关的信息分配空间的内存区域进程的创建和执行1.创建:一个进程通过调用fork()系统调用创建一个子进程(调用fork()的是父进程)        调用fork()时,创建的子进程复制父进程的data,heap,stack段,共享父进程的Text段(Text段只读)2.执行:子进程可以通过调用execve()函数来载入和运行另一个程序,这时子进程的Text,Data,Heap,Stack将被新程序对应的东西替换        C library里面有一些exec开头的函数作用是差不多的进程的终止和终止状态1.自杀:调用_exit()(或者相关的library中的exit()函数)2.他杀:给进程传送某种signal_exit()可以指定终结的状态(终结的状态通常就是一个很小的整数)通过某种signal终结进程,终结的状态根据signal的种类而不同父进程通过wait()系统调用函数可以获取子进程终结后的终结状态进程自己的两种ID1.每一个进程都有一个process identifier(PID)和parent process identifier(PPID)进程与用户和组相关的一些ID1.Real user id 表明进程属于哪个用户  Real group id 表明进程属于哪组群组2.Effective user id 根据这个用户id,进程对某些资源的权限  Effective group id 根据这个群组id,进程对某些资源的权限  这两个通常与real xxx id是一样的值,这两个值可以改变的3.Supplementary IDs 这些ids表示一些额外的群组,而进程属于这些群组  (以上3种这些IDs值继承自父进程)privileged process(特权进程) 和 unprivileged process1.privileged process:Effective user id 值为0的进程,id的值为0意味着是超级用户,能够绕开权限的限制2.unprivileged process:Effective user id 的值非0的进程,要根据权限来执行capabilities(能力)从kernel2.2开始,Linux将privileges分成一系列截然不同的单元叫做capabilities.每一个privileged operation关联到一个具体的capability,每一个进程能够执行某个操作仅当这个进程有对应的capability。传统的super process具有所有的capabilities。init process当启动操作系统的事后内核创建一个叫init的进程,它是所有进程的父进程,init是程序的路径为/sbin/init(在Fedora15中 /sbin/init是一个链接 真正文件为/bin/systemd) init进程具有super user权限并且进程号为1。init进程只有在shut down时才能被干掉,即使super user也杀不了它。daemon process和其它进程差不多,有两个特征1.通常长时间生存,一般情况下与系统同生共死。(当然可以kill掉)2.在后台运行,没有控制终端让它输入或输出如syslogd进程environment list每一个进程都有一个environment list,它是在进程的用户空间中被维护的集合environment variables。每一个元素是 名字和值 组成的,通过fork()创建一个新进程时,environment list继承自父进程。当通过exec()系列的函数替换进程的程序时,可以通过指定environment list来替换本来的,或者不指定则保留原来进程的。C语言程序可以通过使用外部变量char **environ来获取environment list或者修改它。resource limits每一个进程都要消耗一些资源如打开文件,内存,cpu时间。通过调用系统调用setrlimit(),一个进程能够限制消费各种资源的上限。每一种资源限制有两个相关的值:一个是soft limit,这个限制进程消耗资源的数量;另一个是hard limit,这个是一个允许调整的soft limit的值的上限。一个unprivileged process仅仅能调整soft limit的值在0-hard limit之间,只能减少hard limit的值,不能增加。fork()一个新进程,这个新进程的resource limits继承自父进程。shell可以通过ulimit改变limits的值。Fedora 16升级后 笔记本亮度调节安装Gentoo时遇到的时间和dns的问题相关资讯      Linux基础教程 
  • Linux基础教程:对文件打包压缩  (03月08日)
  • 基础教程:Linux 新手应该知道的   (09/06/2015 21:17:20)
  • Linux基础教程:find 与 xargs  (04/05/2015 10:20:11)
  • Linux基础教程:tar 命令使用介绍  (12/03/2015 13:19:47)
  • Linux基础教程(1)操作系统基础   (08/15/2015 20:44:01)
  • Linux基础教程:从源码安装软件  (04/05/2015 10:14:45)
本文评论 查看全部评论 (0)
表情: 姓名: 字数