进程

博主重新梳理计算机系统中进程相关知识。介绍了操作系统并发、共享、虚拟、异步的基本特征,区分并发与并行概念。阐述进程是能独立运行的活动实体,引入进程后操作系统可并发执行作业。还讲解了fork函数,它能创建新进程,调用一次返回两次,子进程和父进程有不同返回值。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

计算机系统:进程

计算机系统角度的进程
记得之前在暑假留校的时候学习了进程线程等概念,当时对于很多概念理解很模糊。比如同步异步并发并行等等,理解的有些偏颇。
这学期我学习了计算机系统之后,对有一些概念有了新的认识,所以决定再重新梳理一下这些知识

操作系统的基本特征:并发、共享、虚拟、异步

1. 并发与并行

  • 并行性:两个或多个时间在同一时刻发生
  • 并发性:两个或多个时间在同一时间间隔内发生

这两个性质的本质其实是同一件事情的不同角度:几个事件在很短的时间里交替执行(微观),如:程序A执行了3ms,程序B执行了2ms,程序C执行了3ms,这三个程序在这8ms中是交替进行的,但对于1s的时间段来说(宏观),三个程序都执行并结束了。宏观感受上我们说它是并行执行的。
在这里插入图片描述

2.进程的引入

引入进程这个概念后,操作系统得以并发执行作业。

  • 所谓进程,是指系统中能独立运行并作为资源分配的基本单位,它是由一组机器指令、数据和堆栈等组成的,是一个能独立运行的活动实体。
    进程的内存映像

函数fork

一个现有的进程可以调用fork函数创建一个新进程

#include <unistd.h>
pid_d fork(void);

返回值:子进程返回0,父进程返回子进程ID;若出错,返回-1

fork调用一次返回两次。
子进程返回0:一个子进程只会有一个父进程,所以子进程总是可以调用getppid来获得父进程ID(内核交换进程的ID为0,所以一个子进程ID不可能为0)。
父进程返回创建子进程的ID:因为一个进程的子进程可以有多个,并且没有一个函数使一个进程可以获得所有子进程进程的ID。
子进程和父进程继续执行fork调用之后的指令。
子进程是父进程的副本。例如,获得父进程的:

  • 数据空间
  • 堆和栈的副本
  • … …

因为是副本所以不共享这些存储部分。但是:
父进程和子进程共享正文段也就是上图的test segment

注: 缓冲区在fork之前如果没有被刷新,子进程会有一个副本,进程终止时,缓冲区的内容会被写到相应的文件中。(父进程与子进程各有一个)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值