美文网首页
Linux中进程的概念

Linux中进程的概念

作者: super_pcm | 来源:发表于2019-07-24 10:51 被阅读0次

    一直不大了解进程和线程之间的区别,最近看书《Linux内核设计与实现》,里面有说到进程的概念,下面就把原文给抄下来,内核的版本是基于2.6.32的:


    进程就是处于执行期的程序(目标代码存放在某种存储介质上)。但进程并不仅仅局限于一段可执行程序代码(Unix 称为代码段,text section)。通常进程还要包含其他资源,像打开的文件,挂起的信号,内核内部数据,处理器状态,一个或多个具有内存映射的内存地址空间及一个或多个执行线程(thread of execution),当然还包括用来存放全局变量的数据段等。实际上,进程就是正在执行的程序代码的实时结果。内核需要有效而又透明地管理所有细节。

    执行线程,简称线程(thread),实在进程中活动的对象。每个线程都拥有一个独立的程序计数器、进程栈和一组进程寄存器。内核调度的兑现是线程,而不是进程。在传统的Unix系统中,一个进程只包含一个线程,当现在的系统中,包含多个线程的多线程程序司空见惯。稍后你会看到,Linux系统的线程实现非常特别:它对线程和进程并不特别区分。对Linux而言,线程只不过是一种特殊的进程罢了。

    在现代操作系统中,进程提供两种虚拟机制:虚拟处理器和虚拟内存。虽然实际上可能是许多进程正在分享一个处理器,但虚拟处理器给进程一种假象,让这些进程觉得自己在独享处理器。而虚拟内存让进程在分配和管理内存时觉得自己拥有整个系统的所有内存资源。有趣的是,注意在线程之间(这里指包含在同一个进程中的线程)可以共享虚拟内存,但每个都拥有各自的虚拟处理器。

    程序本身并不是进程,进程是处于执行期的程序以及相关资源的总称。实际上,完全可能存在两个或多个不同的进程执行的是同一个程序。并且两个或多个并存的进程还可以共享许多诸如打开的文件、地址空间之类的资源。

    无疑,进程在创建它的时刻开始存活。在Linux系统中,这通常是调用fock()系统的结果,该系统调用通过复制一个现有进程来创建一个全新的进程。调用fork()的进程成为父进程,新产生的进程称为子进程。在该调用结束时,在返回点这个相同位置上,父进程恢复执行,子进程开始执行。fork()系统调用从内核返回两次:一次回到父进程,另一次回到新产生的子进程。

    通常,创建新的进程都是为了立即执行新的、不同的程序,而接着调用exec()这组函数就可以创建新的地址空间,并把新的程序载入其中。在现代Linux内核中,fork()实际上是由clone()系统调用实现的。

    最终,程序通过exit()系统调用退出执行。这个函数会终结进程并将其占用的资源释放掉。父进程可以通过wait4()系统调用查询子进程是否终结,这其实使得进程拥有了等待特定进程执行完毕的能力。进程退出执行后被设置为僵死状态,直到它的父进程调用wait()或者waitpid()为止。

相关文章

  • Linux 下传统的进程间通信原理

    Linux 下传统的进程间通信原理 在Linux中跨进程通信涉及到几个基本的概念 进程间隔离 进程空间划分:用户空...

  • Linux——进程管理

    author:XiaoGua进程是linux系统中的重要概念。各种服务都是以进程的形式存在于系统中的,有效的进程管...

  • 2.进程管理

    进程管理 进程是操作系统的基本概念,本节主要总结Linux内核如何管理进程:进程在内核中如何创建,消亡。 1.进程...

  • SSH会话结束后保持进程运行

    1. 在Linux/Unix中,有这样几个概念 进程组(process group): 一个或多个进程的集合...

  • 孤儿进程和僵尸进程

    基本概念 在unix/linux中,正常情况下,子进程是通过父进程创建,子进程再创建新的进程。子进程的结束和父进程...

  • Linux进程

    一、概念 在unix/linux中,正常情况下,子进程是通过父进程创建的,子进程在创建新的进程。子进程的结束和父进...

  • 孤儿进程与僵尸进程(转)

    1. 概念我们知道在unix/linux中,正常情况下,子进程是通过父进程创建的,子进程在创建新的进程。子进程的结...

  • 用户权限、特殊权限和ACL.md

    1.基本概念 linux 安全上下文 运行中的程序:进程 (process)以进程发起者的身份运行:root: /...

  • Linux中的进程之进程基本概念

    一、概念的理解 二、进程的属性 一、概念的理解 首先程序与进程是什么?程序与进程又有什么区别?程序(procedu...

  • Linux Kernel学习005——进程管理(一)

    Linux Kernel学习005——进程管理(一) 本节引入进程的概念,进程是操作系统中最基本的抽象概念。操作系...

网友评论

      本文标题:Linux中进程的概念

      本文链接:https://www.haomeiwen.com/subject/oivtrctx.html