进程与fork

进程

进程(Process)是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位。在早期面向进程设计的计算机结构中,进程是程序的基本执行实体;在当代面向线程设计的计算机结构中,进程是线程的容器。程序是指令、数据及其组织形式的描述,进程是程序的实体。

四要素

  • 要有一jin段程序供该进程执行
  • 进程专用的堆栈空间
  • 进程控制块,在linux中具体实现为task_struck结构
  • 有独立的存储空间

三类型

  • 交互进程 : 由shell 启动的进程,可以在前台运行,也可以在后台运行
  • 批处理进程: 这种进程和终端没有联系,是一个进程序列
  • 监控进程: Linux 系统启动时启动的进程,并在后台运行

区分

进程与程序

作业与进程

作业和进程都是在操作系统执行的程序,但作业不是程序。

一个正在执行的进程称为一个作业,而作业可以包含一个或多个进程

作业控制:控制正在运行的进程的行为。

进程+作业控制 = 作业

进程与线程

fork

要创建一个进程,系统调用fork派生一个进程。

源进程称为父进程,派生出来的进程称为子进程

子进程是父进程的拷贝,子进程从父进程获取数据段和堆栈段的拷贝

创建成功父进程返回 新子进程pid ,子进程返回 0;失败 返回 -1

fork执行后执行父进程还是子进程不确定, 由内核使用的调度算法决定

fork使用

示例函数

#include <sys/types.h>
#include <unistd.h>
#include <stdio.h>
int main(){
int pid=1;
pid=fork();
if(pid==0){ //pid为0,表示为子进程
printf("我是子进程, 我的pid是:%d\n", getpid());
}
else if(pid>0){ //pid>0表示父进程,此时返回值为子进程的pid
printf("我是父进程,我的pid是: %d\n", getpid());
}
else { //fork 失败
printf("fork失败");
}
}

运行结果

说明: 在执行pid=fork() 前只有一个进程, 执行后就会有两个进程在执行这个程序

posted @   我就一水  阅读(115)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
点击右上角即可分享
微信分享提示