首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

程序进程

昨天复习《深入理解计算机系统》,参考了小土刀的博客,看到了进程程序在内存中是如何组织的,虽然这张图看了很多遍但是总感觉有疑问。努力解决,参考《深入理解计算机系统》。 ?...关于程序进程区别的概念 程序是指令和数据的集合,可以作为目标文件保存在磁盘中,或者作为段存放在内存地址空间中。 进程程序运行的一个具体的实例,程序总是运行在某个进程的上下文中。...过程简单介绍 shell 执行一个程序时,父 shell 进程生成一个子进程,他是父进程的一个复制。子进程通过 execve 系统调用加载器。...最后,加载器跳转到 _start 地址,调用程序的 main 函数。 通过上面的描述可以理解到为什么 “程序总是运行在某个进程的上下文中”。...大胆的概括 可执行文件加载入内存(可执行文件在内存中的内存映像顺序存储) 开辟进程进行虚拟内存地址的重定向(程序可以说约等于进程) 执行 了解了可执行文件的存储格式,加载一个可执行文件到初始化一个进程

44730
您找到你想要的搜索结果了吗?
是的
没有找到

Linux进程控制【进程程序替换】

---- 前言 子进程 在被创建后,共享的是 父进程 的代码,如果想实现自己的逻辑就需要再额外编写代码,为了能让 子进程 执行其他任务,可以把当前 子进程程序替换为目标程序,此时需要用到 Linux...进程程序替换相关知识 子进程 替换为其他程序后,无法再执行原有程序,但 进程 始终为同一个 火爆全网的 ChatGTP 能否替换 “人类” ?...,让子进程完成对应指令 子进程实现对应指令依赖于程序替换 总结: 程序替换的目的是让子进程帮我们执行特定任务 就像汽车拥有各种各样的轮胎,如越野时需要换上路面兼容性更好、更耐造的越野胎;日常家用时,舒适性更好...(1); } return 0; } 可以看到在进行程序替换后,子进程和待替换程序为同一个进程 这就表明程序替换并不是进程替换 因为是同一个进程,所以对父进程没有任何影响,体现了进程间的独立性...在子进程执行程序替换前,子进程和父进程共享一份只读区域的数据,但因为发生了程序替换,触发 写时拷贝 机制,令子进程读取另一块区域的数据 写时拷贝 在只读数据区也能触发,因为不能影响到父进程 ----

18520

使用VS2010开发Qt程序的一点经验

导读      相比于Qt Creator,我更喜欢用VS2010来进行开发。虽然启动时间相对较慢,但是VS下强大的快捷键和丰富的插件,以及使用多年的经验,都让我觉得在开发过程中得心应手。...The system cannot find the path specified       当我从用VS2010打开从网上下载下来的源代码工程进行编译的时候,输出栏中出现了一系列如下的错误提示: ?...我的开发环境为:VS2010 32位旗舰版,Windows 7 64位,Qt库版本为5.2.1。第一次遇到这样的问题,还真的莫名其妙。于是上网搜了搜,发现了一些苗头。...重新编译工程,此时编译过程顺利结束,生成了期待中的可执行程序。这仅仅是lib文件的设置,源代码的修改其实是另一大难题。尤其是QtGui在Qt 5.x中已经消失,因此需要大面积修改文件内容。

1.4K80

进程控制第二弹(进程程序替换)

基本原理 当进程调用一种exec函数时,该进程的用户空间代码和数据完全被新程序替换,从新程序的启动例程开始执行。...调用exec并不创建新进程,所以调用exec前后该进程的id并未改变 我们知道,进程=内核数据结构+代码数据 程序替换的本质是将当前进程的代码和数据进行替换。 替换的时候,会不会创建新的进程?...只不过是拿老程序的壳子执行新程序的代码。 站在被替换进程的角度:本质上是这个程序被加载到内存。使用exec系列函数加载,exec系列函数类似一种Linux上的加载函数。...让子进程执行一个全新的程序 首先父进程和子进程的PCB、虚拟内存构建好后,通过页表映射到物理内存中。...所以重新开辟内存,将ls代码加载到物理内存,修改子进程的映射关系。至此,只要程序替换成功,彻底将子进程和父进程分开了。

6110

程序进程、线程的区别

程序程序是含有指令和数据的文件,被存储在磁盘或其他的数据存储设备中,也就是说程序是静态的代码。进程进程是操作系统进行任务调度和资源分配的基本单位。...系统运行一个程序即是一个进程从创建,运行到消亡的过程,也就是程序的一次执行过程。简单来说,一个进程就是一个计算机中运行的程序的实例。...线程: 线程是操作系统中的最小执行单元,负责当前进程程序的执行。进程和线程的区别:根本差别:进程是操作系统任务调度和资源分配的基本单位,而线程是处理器任务调度和执行的基本单位。...资源开销:每个进程都有独立的代码和数据空间(程序上下文),程序之间的切换会有较大的开销;线程可以看做轻量级的进程,同一类线程共享代码和数据空间,每个线程都有自己独立的运行栈和程序计数器(PC),线程之间切换的开销小...所以多进程要比多线程健壮。执行过程:每个独立的进程程序运行的入口、顺序执行序列和程序出口。但是线程不能独立执行,必须依存在应用程序中,由应用程序提供多个线程执行控制,两者均可并发执行。

14540

Linux从程序进程

计算机如何执行进程呢?这是计算机运行的核心问题。即使已经编写好程序,但程序是死的。只有活的进程才能产出。我们已经从Linux进程基础中了解了进程。现在我们看一下从程序进程的漫漫征程。...一段程序 下面是一个简单的C程序,假设该程序已经编译好,生成可执行文件vamei.exe。...不用太过在意这个程序的具体功能。要点是这个程序的运行过程。下图为该程序的运行过程,以及各个变量的作用范围: ? 运行流程 进程空间 为了进一步了解上面程序的运行,我们还需要知道,进程如何使用内存。...当程序文件运行为进程时,进程在内存中获得空间。这个空间是进程自己的小屋子。 每个进程空间按照如下方式分为不同区域: ? 内存空间 Text区域用来储存指令(instruction),说明每一步的操作。...程序调用exec的时候,进程清空自身内存空间的text, global data, heap和stack,并根据新的程序文件重建text, global data, heap和stack (此时heap

1.5K90

【Linux】进程程序替换

程序替换 1.创建子进程的目的是什么? 目标:为了让子进程帮父进程执行特定的任务 具体做法:1....,父进程通过if判断分流让子进程去跑了 2.创建一个子进程不执行父进程的代码,而是让子进程在磁盘当中执行全新的程序,这种操作称之为进程程序替换 2.了解程序是如何进行替换的 程序替换函数 execl...程序替换就是让一个进程去执行另一个在磁盘中的程序,让一个进程把一个新的程序运行起来 3....,用当前进程的数据替换老进程的数据段 ---- 站在进程的角度 进程程序替换有没有创建新的进程呢?...没有,只是将新的程序加载到当前进程的代码段和数据段,用CPU去调度当前进程就可以跑起来了 ---- 站在程序的角度 程序被加载了内存中,就可以称程序替换的接口(execl) 为加载器 当创建进程的时候,

1.9K30

【Linux】详解进程程序替换

一、替换原理 用fork创建子进程后执行的是和父进程相同的程序(但有可能执行不同的代码分支),子进程往往要调用一种exec函数以执行另一个程序。...当进程调用一种exec函数时,该进程的用户空间代码和数据完全被新程序替换,从新程序的启动例程开始执行。调用exec并不创建新进程,所以调用exec前后该进程的id并未改变。...二、子进程进行程序替换 通过子进程进行程序替换可以让子进程帮我们去做一部分工作,而且子进程发生程序替换不会影响父进程执行,因为替换时代码和数据会发生写时拷贝。...\n"); return 0; } 2.1、让子进程执行我自己的程序    我自己写了一个C++程序,向替换子进程帮我跑一下: //C++程序 #include using...\n"); return 0; }  执行结果如下,证明了我们不仅仅可以替换子进程执行系统程序,还可以替换子进程执行我们的程序

5210

操作系统系列----进程程序 进程的描述

操作系统系列----进程程序 程序 1.程序的概念 程序是一组有序的指令集合 2.程序的执行方式 在早期的单道批处理系统中,程序的执行方式是顺序执行,即在内存仅仅转入一道程序,让他独占系统中的所有资源...进程的相关定义: 1.进程程序的一次执行 2.进程是一个程序及其数据在处理及顺序执行时所发生的活动 3.进程是一个独立功能的程序在数据集合上运行的过程,进程是系统资源分配和调度的基本单位 PCB概念及其功能...在多道程序环境下,程序采用的是走走停停的方式运行的,当进程由于阻塞而停止运行的时候,系统将CPU现场保留在被中断进程的CPU中,当该进程再次被调度的时候,就可以恢复CPU现场,而传统意义的静态程序不具备保留现场的能力...操作系统总是根据PCB实施对进程的控制和管理,调度程序调度到程序运行的时候,只能根据PCB中记录的程序和数据在内存或外存中的始址指针,找到对应的程序和数据,还可根据资源清单中的数据了解到该进程所需的全部资源...,为了使程序在运行的时候有异步性当是同时也保证程序并发执行的结果是可再现的,这才引入了进程并配备了进程同步机制 进程的状态 就绪 进程已经处于准备好运行的状态,即进程已经分配到了除了cpu以外的所有资源

56620

操作系统系列----进程程序 进程的描述

操作系统系列----进程程序 程序 1.程序的概念 程序是一组有序的指令集合 2.程序的执行方式 在早期的单道批处理系统中,程序的执行方式是顺序执行,即在内存仅仅转入一道程序,让他独占系统中的所有资源...进程的相关定义: 1.进程程序的一次执行 2.进程是一个程序及其数据在处理及顺序执行时所发生的活动 3.进程是一个独立功能的程序在数据集合上运行的过程,进程是系统资源分配和调度的基本单位 PCB概念及其功能...在多道程序环境下,程序采用的是走走停停的方式运行的,当进程由于阻塞而停止运行的时候,系统将CPU现场保留在被中断进程的CPU中,当该进程再次被调度的时候,就可以恢复CPU现场,而传统意义的静态程序不具备保留现场的能力...操作系统总是根据PCB实施对进程的控制和管理,调度程序调度到程序运行的时候,只能根据PCB中记录的程序和数据在内存或外存中的始址指针,找到对应的程序和数据,还可根据资源清单中的数据了解到该进程所需的全部资源...,为了使程序在运行的时候有异步性当是同时也保证程序并发执行的结果是可再现的,这才引入了进程并配备了进程同步机制 进程的状态 就绪 进程已经处于准备好运行的状态,即进程已经分配到了除了cpu以外的所有资源

70700
领券