美好的一天,程序员.我有个问题.请帮忙.我正在创建一个服务,它必须在加载Linux时自动加载.因此,我将脚本复制到目录/etc/rc.d/init.d或/etc/init.d/中.但是当我正在执行命令时
chkconfig --add listOfProcesses
Run Code Online (Sandbox Code Playgroud)
发生错误:
service listOfProcesses doesn't support chkconfig
Run Code Online (Sandbox Code Playgroud)
这是脚本的内容.我在Google中找到了第一个版本并将其用作模式.
#!/bin/bash
# listOfProcesses Start the process which will show the list of processes
# chkconfig: 345 110 02
# description: This process shows current time and the list of processes
# processname: listOfProcesses
### BEGIN INIT INFO
# Provides:
# Required-Start:
# Required-Stop:
# Default-Start: 3 4 5
# Default-Stop: 0 1 2 6
# Short-Description: shows current time and the list of processes
# Description: This process shows …Run Code Online (Sandbox Code Playgroud) 我已分配和对象数组
Objects *array = new Objects[N];
Run Code Online (Sandbox Code Playgroud)
我该如何删除这个数组?只是
delete[] array;
Run Code Online (Sandbox Code Playgroud)
或者迭代数组的元素?
for(int i=0;i<N;i++)
delete array[i];
delete[];
Run Code Online (Sandbox Code Playgroud)
谢谢
更新:
我改变了循环体
delete &array[i];
Run Code Online (Sandbox Code Playgroud)
强制代码编译.
我想在C++中创建一个不使用STL的对象数组.
我怎样才能做到这一点?
我怎么能创建Object2数组,它没有无参数构造函数(默认构造函数)?
enum类型是签名还是未签名?枚举的签名是否在C/C99/ANSI C/C++/C++ x/GNU C/GNU C99中有所不同?
谢谢
可以优化编译器删除无限循环,这不会改变任何数据,如
while(1)
/* noop */;
Run Code Online (Sandbox Code Playgroud)
从分析编译器可以推导出的数据流图,这样的循环是"死代码"而没有任何副作用.
是否删除了C90/C99标准禁止的无限循环?
C90或C99标准是否允许编译器删除此类循环?
更新:"Microsoft C版本6.0基本上做了这个优化.",请参阅caf的链接.
label: goto label;
return 0;
Run Code Online (Sandbox Code Playgroud)
将转变为
return 0;
Run Code Online (Sandbox Code Playgroud) c compiler-construction optimization standards infinite-loop
我试图弄清楚为什么修改后的C程序比未修改的计数器部分运行得更快(我添加了很少的代码行来执行一些额外的工作).在这种情况下,我怀疑" 缓存效应 "是主要的解释(指令缓存).因此,我到达perf(https://perf.wiki.kernel.org/index.php/Main_Page)分析工具,但遗憾的是我无法理解其有关缓存未命中的输出的含义.
提供了几个关于缓存的事件:
cache-references [Hardware event]
cache-misses [Hardware event]
L1-dcache-loads [Hardware cache event]
L1-dcache-load-misses [Hardware cache event]
L1-dcache-stores [Hardware cache event]
L1-dcache-store-misses [Hardware cache event]
L1-dcache-prefetches [Hardware cache event]
L1-dcache-prefetch-misses [Hardware cache event]
L1-icache-loads [Hardware cache event]
L1-icache-load-misses [Hardware cache event]
L1-icache-prefetches [Hardware cache event]
L1-icache-prefetch-misses [Hardware cache event]
LLC-loads [Hardware cache event]
LLC-load-misses [Hardware cache event]
LLC-stores [Hardware cache event]
LLC-store-misses [Hardware cache event]
LLC-prefetches [Hardware cache event]
LLC-prefetch-misses [Hardware cache event]
dTLB-loads [Hardware cache event] …Run Code Online (Sandbox Code Playgroud) 我无法理解linux中的内存映射页面和匿名页面.有人可以用一个例子解释一下吗?与它们相关的内核数据结构是什么?
最初我认为上下文切换的开销是TLB被刷新.但是我刚刚在维基百科上看到:
http://en.wikipedia.org/wiki/Translation_lookaside_buffer
2008年,英特尔(Nehalem)[18]和AMD(SVM)[19]都引入了标签作为TLB条目的一部分,以及在查找期间检查标签的专用硬件.即使这些没有得到充分利用,但可以设想,将来这些标签将识别每个TLB条目所属的地址空间.因此,上下文切换不会导致刷新TLB - 而只是将当前地址空间的标记更改为新任务的地址空间的标记.
以上是否确认较新的Intel CPU TLB不会在上下文切换时刷新?
这是否意味着现在在上下文切换中没有真正的开销?
(我试图理解上下文切换的性能损失)
linux virtualization performance operating-system context-switch
我正在研究Linux环境.我有两个'C'源包train和test_train.
现在我想用gprof生成一个调用图,它显示了主程序中函数的调用顺序以及libtrain.so中的函数调用顺序.
我正在使用-pg选项编译和链接两个包,调试级别为o0.在我执行./train-test之后,生成gmon.out.然后我做:
$ gprof -q ./train-test gmon.out
Run Code Online (Sandbox Code Playgroud)
这里,输出显示列车测试中的函数调用图,但不显示libtrain.so中的调用图
可能是什么问题呢 ?
大多数可用的桌面(廉价)x86平台现在仍然没有ECC内存支持(错误检查和纠正).但内存位翻转错误的速度仍在增长(不是最好的SO线程,大规模CERN 2007研究"数据完整性":" 内存模块的误码率为10 -12 ...观察到的错误率是4个订单低于预期 "; 2009年Google的"DRAM中的错误:大规模的实地研究").对于当前的硬件与数据密集的负荷(读数8 GB/s)的,这意味着单个位翻转,可能会出现每分钟(10家-12在两天厂商BER从CERN07)或一次(10 -16来自CERN07的BER).Google09表示,每Mbit可以有高达25000-75000的一位FIT(每十亿小时的故障时间),相当于8GB RAM每小时1-5位错误(" 2000的平均可纠正错误率 -每GB每年6000 "".
所以,我想知道,是否可以在系统范围内添加某种软件错误检测(检查用户和内核内存).例如,为Linux内核和/或系统编译器创建一个补丁,为每个内存页面添加一些校验和,并尝试通过定期重新计算校验和来检测静默内存损坏(bit-flips)?
例如,我们可以看到对内存的所有写入(来自用户和内核空间),以区分内存位翻转中的预期内存更改吗?或者我们能以某种方式用一些帮助来检测所有代码吗?
我知道任何类型的软件内存ECC可能会花费很多性能并且不会捕获所有错误,但我认为在它们将在以后的计算中重用或存储之前,至少检测一些内存位翻转是有用的.到硬盘.
我也明白,更好的数据保护方式是从内存bitflip切换到ECC硬件,但大多数PC仍然是非ECC.
c ×4
linux ×4
c++ ×3
arrays ×2
linux-kernel ×2
bash ×1
debugging ×1
enums ×1
gprof ×1
memory ×1
new-operator ×1
optimization ×1
perf ×1
performance ×1
profiling ×1
signed ×1
sprof ×1
standards ×1