腾讯云
开发者社区
文档
建议反馈
控制台
登录/注册
首页
学习
活动
专区
工具
TVP
最新优惠活动
文章/答案/技术大牛
搜索
搜索
关闭
发布
精选内容/技术社群/优惠产品,
尽在小程序
立即前往
文章
问答
(9999+)
视频
沙龙
1
回答
编译
操作系统
并定义系统调用
我试图更好地理解
操作系统
,不是它们背后的理论,而是真正的人们是如何编写真正的
操作系统
代码的。 我知道大多数
操作系统
都是用C编写的。我知道这些
操作系统
的源代码包括对malloc、calloc等函数的调用,以便为
进程
分配内存等等。在正常情况下,例如,当编译注定要在
操作系统
上运行的代码时,我知道C
编译器
将使用底层OS的系统调用来执行这些函数。但是当编译这些
操作系统
的源代码时,
编译器
如何知道该做什么。系统调用不存在,因为它们是由
操作系
浏览 5
提问于2022-09-08
得票数 0
2
回答
编译器
在布局内存时是否考虑了内核内存空间?
、
、
、
我知道虚拟内存在内核和所有用户
进程
之间共享(映射),我读过。我还知道,当
编译器
为代码+数据生成地址时,内核必须将它们加载到该
进程
的正确虚拟地址。为了限制问题的范围,当我提到“
编译器
”时,我的意思是gcc。那么
编译器
是否需要兼容
操作系统
的每一个新版本,以避免将代码或数据放置在为内核保留的高内存地址中?就像这样,编写
编译器
的人必须知道内核计划如何加载程序的那些细节(以免
编译器
将可执行代码放入高内存)? 还是我混淆了不同的概念?在浏览时,我感到有点困惑,特别
浏览 3
提问于2016-06-23
得票数 1
回答已采纳
3
回答
是什么决定了
进程
在内存中的结构?
、
、
、
、
我了解到一个
进程
在内存中具有以下结构:(图片来自
操作系统
概念,第82页)这种结构是由
操作系统
决定的吗?被程序的
编译器
?通过计算机体系结构?它们的组合?
浏览 3
提问于2015-09-05
得票数 1
6
回答
当程序退出时,堆是否会被释放?
假设我将一些内存恶意锁定到一些指针中,但在程序退出之前没有释放它们。这个内存是在退出时自动释放,还是内存泄漏会继续存在,直到我重新启动计算机?
浏览 2
提问于2013-04-08
得票数 12
回答已采纳
2
回答
动态和堆栈内存分配是由
编译器
完成的吗?
、
我知道静态分配是由
编译器
完成的,但另外两个是在运行时进行的。谁对此负责,是
编译器
,
进程
还是
操作系统
? 我基本上是在问
编译器
是否参与了程序的运行?
浏览 0
提问于2016-06-29
得票数 2
1
回答
进程
切换和系统级堆栈
我在读查尔斯·克劳利的
操作系统
。不幸的是,我不理解系统堆栈的工作原理。但是在
操作系统
环境中,书中说系统堆栈被重新初始化到堆栈顶部(这意味着AFAIHU删除了对过程调用的历史记录)。
操作系统
是用高级语言编写的。
编译器
假定它正在使用普通堆栈运行正常
进程
。由于
操作系统
是不同的,我们必须欺骗
编译器
去做我们想做的事情。当我们分派
进程
时,我们通过重新初始化并丢弃系统堆
浏览 3
提问于2014-03-24
得票数 2
回答已采纳
3
回答
内存寄存器的名称是如何分配的?
、
C++
编译器
在构建程序时是否总是以相同的内存地址启动? 我正在开发一个MacBook Pro,它有4GB的DDR3内存和6MB的L2缓存(我知道,这是一台有5年历史的机器),并且正在使用g++
编译器
。
浏览 5
提问于2014-04-28
得票数 3
回答已采纳
2
回答
系统调用、shell命令和程序
、
、
我正在尝试理解程序、shell命令和
操作系统
是如何工作的。请原谅我的无知,因为我是新手。当我在命令行上使用C
编译器
时,当我键入cc filename时,我假设shell使用fork()系统调用来复制它的
进程
,然后exec()系统调用将cc
编译器
可执行文件加载到子
进程
的核心映像中。则包含cc可执行文件的子
进程
将在执行外壳的父
进程
等待或不等待时执行它的事情。是对的吗? 那么cp、mv、ls等shell命令又如何呢?他们是什么?它们是不是也会在shell派生的新子
进程
浏览 1
提问于2013-04-12
得票数 3
回答已采纳
4
回答
从
进程
空间释放内存
k;int main() x *p=new x[1000000];} 现在的问题是,当我们走出主函数时,分配的内存被
编译器
调用析构函数释放,或者被
操作系统
释放,因为
进程
将不再存在。
浏览 1
提问于2012-08-20
得票数 1
5
回答
当调用delete[] X命令时,到底会发生什么?谁应该对此负责?
、
我正在尝试找出谁是组件或模块(可能属于
操作系统
?)这实际上是在应用程序或
进程
运行时执行的操作,特别是运行命令delete[] X。我的问题是在我读到关于delete[] X的文章后提出的,我知道
编译器
有责任(根据它的实现)知道要删除多少X对象。但是,
编译器
在运行时并不是“活动的”!我的意思是,在编译时,
编译器
不知道用户在新命令中需要多少内存,在删除时也不知道,那么当程序实际运行时,在运行时到底发生了什么? 我读到的答案之一是所谓的运行时系统,它是什么?它是否连接到CPU -因为CPU最终会执行命令...或
浏览 14
提问于2016-01-26
得票数 0
2
回答
什么在典型的
进程
内存中实现堆栈?
、
、
、
、
我知道
进程
的典型内存布局(至少在类似Unix的系统上是这样),但我一直想知道是什么实际设置了该布局的结构。是
操作系统
吗?
编译器
?如果是的话,那么我不明白x86 ISA怎么会有push指令;这难道不意味着在加载任何
操作系统
之前就必须存在某种堆栈吗?
浏览 8
提问于2022-09-27
得票数 0
2
回答
操作系统
内存分配地址
、
、
快速好奇的问题,内存分配地址是由语言
编译器
选择的,还是由
操作系统
为所请求的内存选择地址?这是由于对虚拟内存的怀疑,它可以很快解释为“让
进程
认为他拥有所有内存”,但是如果
进程
想要更高的地址,在64位架构上只有48位用于内存地址会发生什么?假设你做了一个int a = malloc(sizeof(int));,上一次系统调用没有剩余的内存了,所以你需要向OS请求更多的内存,是
编译器
决定内存地址来分配这个变量,还是它只是向OS请求内存,然后在它返回的地址上分配内存
浏览 1
提问于2012-11-09
得票数 3
回答已采纳
3
回答
进程
间文件交换:效率和竞争条件
、
、
、
、
的故事:
进程
A创建文件"file1.txt“
进程
A创建文件"processA.ready“文件操作由
操作系统
执行,特别是由文件子系统执行。由于Unix、Windows或MacOS的实
浏览 7
提问于2015-10-29
得票数 9
2
回答
操作系统
内存管理. malloc()调用
、
、
、
、
假设一个
进程
调用malloc(),在幕后会发生什么?我的答案是:运行时库在其虚拟内存地址空间中找到一个大小适当的内存块。我的回答是:这个
进程
所看到的内存地址实际上是虚拟的。
操作系统
检查该地址当前是否映射到物理内存地址,如果映射到物理内存地址,则执行访问。如果没有映射,则会引发页面错误。谢谢!
浏览 2
提问于2010-11-01
得票数 1
回答已采纳
2
回答
堆栈是在哪里实现的?
、
、
、
、
“栈”是语言的特性,
操作系统
的特性,还是硬件的特性?我有一个模糊的想法,从
操作系统
的角度来看,每个堆栈都是与许多活动线程
进程
中的每个
进程
相关的东西。我想,在C++的情况下,
编译器
可能已经在每个二进制文件中插入了一个堆栈的实现。或者
操作系统
将自己的堆栈实现应用到每个正在运行的
进程
中?这是如何定义的,又是如何定义的?
浏览 7
提问于2015-03-29
得票数 4
2
回答
产生堆芯
、
、
有时我的围棋程序会崩溃。 我一定是忽略了一些东西,但我找不到什么,任何帮助都会受到感谢。
浏览 6
提问于2013-02-18
得票数 1
3
回答
马洛克怎么了?
、
如果您在堆上的malloc内存并在释放空间之前退出程序,那么os或
编译器
会为您释放空间吗?
浏览 3
提问于2014-03-25
得票数 3
回答已采纳
1
回答
一个
进程
使用std::线程,2个物理CPU,每个内核4个,并行级别?
、
、
假设我有一个C++
进程
,我希望这个
进程
并行运行八个线程。我有一台有两个物理CPU的电脑。我的问题是:这取决于我所使用的x64
操作系统
吗?这取决于我使用的
编译器
吗?如果是这样的话,GCC、VC++、clang和Intel在这方面比较如何? 注意:当我说“并行”时,我指的是完全独立的逻辑线程。
浏览 0
提问于2019-02-06
得票数 2
回答已采纳
2
回答
如何对一个虚拟地址空间中的
进程
线程进行内存管理?
、
、
、
我相信每个
进程
都有一个虚拟地址空间。这意味着每个线程都使用这个单独的虚拟地址空间。 我想知道在虚拟地址空间中有多个线程的情况下堆栈/堆是如何增长的?
操作系统
如何管理一个线程的堆栈空间是否已满?
浏览 2
提问于2016-07-25
得票数 0
1
回答
未回收的未分配堆?
、
、
我有一个C++
进程
,它摄取大量数据并将它们存储在内存中。存储数组包含大约10 GB的数据,这些数据被划分为4MB块。当新数据到达时,它会创建一个新块,然后删除一个旧块(如果它已经满了)。我们正在x86_64 RH5和RH6上运行,并使用Intel 14
编译器
进行编译。 我们看到了这样一个问题,即随着时间的推移,整个
进程
内存的使用都在增加,直到
操作系统
耗尽内存,并最终导致盒死。我们一直在寻找内存泄漏,并通过TotalView运行该
进程
,试图确定内存的去向,并且没有看到任何报告的泄漏。我的
进程</em
浏览 0
提问于2016-01-20
得票数 0
回答已采纳
点击加载更多
扫码
添加站长 进交流群
领取专属
10元无门槛券
手把手带您无忧上云
相关
资讯
操作系统中的进程和线程,CPU调度
进程可以申请系统资源,如何通过命令行查看Windows操作系统进程
方舟编译器正式开源,开启国产操作系统的新篇章
清华学霸直博简历:CPU、操作系统、编译器全自主写
操作系统进程间通信的方式有哪些,你知道吗?
热门
标签
更多标签
云服务器
ICP备案
云直播
对象存储
腾讯会议
活动推荐
运营活动
广告
关闭
领券