一、主要有以下模块
-进程管理
-内存管理
-文件管理
-信号处理
-进程通信
-网络通信
一、进程管理
1.父进程通过fork函数调用创建一个子进程并拷贝父进程的数据结构
2.子进程可以通过execve函数执行新的程序, 如果是父进程调用fork函数则返回子进程pid,子进程调用fork()则返回0
3.父进程通过waitpid函数传入子进程的pid可以知道子进程是否执行完成
二、内存管理
进程的内存空间: 在操作系统中,每个进程都有自己独立的内存空间互相之间不干扰
进程内存空间都放些什么呢?
1.代码段: 即程序
2.数据区:全局变量 常量
3.栈:函数(函数里面的局部变量 随便函数执行释放) 与指针
4.堆:动态分配内存
5.堆里面分配内存的系统调用,brk, mmap 分配的内存数量比较小的时候,使用 brk,会和原来的堆的数据连在一起,反之mmap 会重新划分一块区域
只有真的写入数据的时候,发现没有对应物理内存,才会触发一个中断,现分配物理内存。
三、文件管理
创建 删除 读取 写
系统调用 open create delete read write lseek
四、信号处理
五、进程之间的通信
消息队列 共享内存 信号量
六、网络通信