Linux进程学习笔记一
2014-05-23 10:41
302 查看
1. 进程函数
}进程id:pid_t 非负整型◦延迟重用原则:赋予新进程的id不同于最近终止进程id
◦id=0,调度进程,交换进程(swapper),属于内核
◦id=1,init进程,系统BIOS时由内核调用
◦id=2,页守护进程,负责虚拟存储系统的分页操作
◦
◦pid_t getpid( void ): 得到进程的进程id
◦pid_t getppid( void ): 得到进程的父进程id
}int main( ing argc, char *argv[] )
}C程序总是从main函数开始执行。
}当内核执行C程序时,在调用main函数前首先调用一个特殊的启动例程。启动例程从内核取得命令行参数和环境变量值
}
}启动例程从main返回后立即调用exit函数
}exit( main( argc, argv[] ))
}
}内核是程序执行的唯一方法是调用一个exec函数,进程自愿终止的唯一方法是显示或隐式地调用exit函数
1.1 Exit函数
}有三个函数用于正常终止一个程序:◦void _exit (int status)
◦void _Exit (int status)
◦void exit (int status)
◦
_exit和_Exit立即进入内核。
exit则先执行一些清理处理(包括关闭标准I/O流等),然后进入内核。Exit函数总是会为I/O做清理关闭工作:为所有打开流调用fclose函数。
Main函数中,exit(0) 与 return(0) 是等价的。
2. 进程存储空间
}Data数据段分为初始化的数据和非初始化的数据
}Exec从程序文件中读入代码段和初始化的数据段,非初始化的数据由exec初始化为0
}存放于磁盘上的程序文件中的段为代码段和初始化数据段
}未初始化数据段不存放于磁盘上,由内核在程序开始运行前被设置成0
2.1 存储分配例程
}Void* malloc( size_t size) :分配size个字节的空间}Void* calloc( size_t n, size_t size) :分配n个size字节的空间
}Void* realloc( void* ptr, size_t newsize) :重新分配空间
}Void free( void* ptr) :释放空间
Malloc分配的存储区中初始值不确定,calloc分配的空间中每一位都初始化为0
存储分配例程通常使用sbrk系统调用实现,该系统调用扩充或缩小进程的堆。
3. 环境表
}每个程序都有一个环境表。}环境表是一个字符指针数组,其中每个指针包含一个以null结束的C字符串的地址。
}全局变量environ包含了该指针数组的地址
}extern char ** environ
}char * getenv( const char *name) :获取环境变量值
}int putenv( char* str ): 将name=value字符串放入环境表
}int setenv( char* name, char* value, int rewrite): 将环境表中name值设置为value。若环境表中name已存在,则a)若rewrite非0,则先删除现有定义; b)若rewrite为0,则不设置
}int unsetenv( char* name) : 删除环境表中name的定义
4. 父子进程
}pid_t fork ( void ) : 创建子进程}Fork函数被调用一次,但返回两次。两次返回的唯一区别是子进程的返回值是0,父进程的返回值是新子进程的进程id
}
}子进程获得父进程数据空间、堆和栈的副本。父子进程并不共享这些存储部分,他们共享代码段。
}由于在fork之后经常跟随者exec,所以现在的很多实现并不执行一个父进程数据段、栈、堆的完全复制,而是写时复制( copy onwrite),内核为修改区域的那段内存制作一个副本。
}Fork之后是父进程还是子进程先执行是不确定的
}父进程的所有打开文件描述符都被复制到子进程里,共享一个文件表项
相关文章推荐
- linux学习笔记:关于linux守护进程与终端的通信
- Linux内核学习笔记之进程管理2—进程的组织形式
- Linux下学习守护进程的笔记
- Linux 进程调度器学习笔记
- Linux 学习笔记(四)进程控制
- linux学习笔记-读《Linux编程技术详解》-进程与进程环境
- Linux学习笔记---进程
- Linux进程线程学习笔记 系列转
- linux内核学习笔记1——进程的表示
- 学习笔记——操作系统_Linux的进程通信
- linux学习笔记-读《Linux编程技术详解》-守护进程
- [Linux学习笔记]进程概念及控制
- Linux进程线程学习笔记:进程控制
- Linux进程线程学习笔记:进程创建
- Linux进程通信----学习笔记(一)
- Linux进程线程学习笔记:进程创建
- Linux进程线程学习笔记:进程间通信 之 管道
- 嵌入式linux的学习笔记-守护进程(五)
- Linux 学习笔记(八)周期性进程
- 深入LInux内核结构学习笔记---进程表示