29、进程创建与程序执行全解析

操作系统进程创建与程序执行解析

进程创建与程序执行全解析

在操作系统的世界里,进程创建和程序执行是至关重要的环节。本文将深入探讨进程创建的相关系统调用、算法,以及程序执行的机制。

进程创建概述

在操作系统中,除了系统初始化时从 main() 启动的系统进程外,所有进程都是通过 fork 系统调用创建的。此外,还有一个源自 4.3BSD 的 vfork 系统调用,它能高效利用虚拟内存系统,但由于操作系统实现的变化, fork 几乎和 vfork 一样高效, vfork 可能会在未来版本中被移除。

当使用 fork 创建新进程时,新进程被称为子进程。子进程会拥有自己的 proc user cred pid 结构,如果它是新会话的领导者,还可能有 sess 结构。子进程会继承父进程的几乎所有变量和数据结构,系统会自动根据父进程的内容初始化子进程的数据结构。同时,子进程用户区的某些会计变量会被初始化,会被分配唯一的 PID,并且其父进程的 PID(PPID)也会被初始化。

新进程创建后,其可交换映像几乎是父进程的精确镜像,包括文本、数据和栈段。系统通过给子进程复制父进程的页表来实现这一点,但实际的数据页不会被复制。相反,父进程的页表以及子进程的数据和栈页会被标记为写时复制,父进程和子进程共享父进程的页面(文本页从不修改,因此无需标记)。如果父

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值