进程
程序:死的,只占用磁盘空间;
进程:活的,运行起来的程序,占用内存、CPU等系统资源。
并发:同时触发,交替执行(单核);
并行:同时触发,同时执行(多核)。
虚拟内存和物理内存映射关系
一个寄存器大小只有 4字节。
PCB进程控制块
进程ID;
进程状态:初始态、就绪态、运行态、阻塞态、终止态;
文件描述符表;
信号相关信息资源;
用户ID和组ID;
fork函数
pid_t fork(void)
创建子进程,父子进程各自返回,父进程返回子进程pid,子进程返回0;
#include<stdlib.h>
#include<stdio.h>
#include<unistd.h>
int main(int argc, char* argv[])
{
int i;
for(i=0; i<5; i++){
if(fork() == 0){
break;
}
}
if(i==5){
sleep(1);
printf("I'm parent \n");
} else{
printf("I'm %dth child\n",i+1);
}
return 0;
}
进程共享
读时共享,写时复制 原则
父子进程不共享全局变量;
父子进程共享:文件描述符,mmap建立的映射区