
清流宰 发表于 2013-12-31 22:42
哪里有催眠,这也是本行,感慨实多。括而言之,“制造业的艰难”。& W% V' k* Y. Z$ b$ a$ k0 t
加拿大没出息,有滑向沙特之类快乐的 ...
江城如画里 发表于 2014-1-2 03:43% k8 y6 j# v2 c" t4 S2 t
关于堆栈的讨论:
我个人觉得原文说堆栈出问题影响到邻近内存区还是有可能的,我遇到过这样的情况,大概如 ...
晨枫 发表于 2014-1-2 23:123 S1 e1 Z: F7 G1 w2 P- L! ^
那为什么不对stack point能放的位置限制在stack area里呢?当然,这样中断就继续不下去了。不过让stack p ...
江城如画里 发表于 2014-1-2 17:44" D7 V* a0 \# o" V3 d4 t
嗯,理论上说是可以自己计算在当前栈占用了多少空间,但实际上很难做到。
首先这跟CPU体系结构有关系,尤 ...

意广才疏 发表于 2014-1-8 06:08( W( K0 `3 \* {2 m8 u5 f
早就想回复晨枫同学的雄文了,奈何年底自己的新东西要上线,有心无力。明后天大概能有点空闲,稍微写一点吧 ...
冷启动:所有的数据(过程映象,位存储器、定时器和计数器)都被初始化,包括数据块均被重置为存储在装载存储器(Load memory)中的初始值,与这些数据是否被组态为可保持还是不可保持无关。首先执行启动组织块OB102。6 ]; e! `/ R) k! `
; G& f- X0 U: V+ f9 g' w% K, x% V
暖启动:从程序开始处以系统数据和用户地址区的初始设置开始进行程序处理(非保持性定时器、计数器和位存储器复位)。保持的标志存储器、定时器和计数器以及数据块的当前值保持(仅当有后备电池)。OB100中的程序执行一次然后循环程序开始执行。4 V; J# ^. I6 S6 k6 M) [9 J H9 `) V
& F% C& l. \. n2 H
热启动:在程序中断处重新开始执行程序(不复位定时器、计数器和位存储器)。在启动时所有数据(标志存储器、定时器、计数器、过程映像及数据块的当前值)被保持, OB101中的程序执行一次。然后程序从断点处(断电, CPU STOP) 恢复执行。
/ N- H1 M& S5 I3 q( g$ d( h! u+ D我看过很多来自不同行业、有不同背景的技术人员,在需要为自己的领域书写代码的时候,喜欢强调各自领域的特殊性或是复杂性,试图说明某些软工原则在此并不适用。但按照我的观察,那些说法很少成立,而且大多出自对软件工程的不理解。这里晨枫同学对全局变量的说法,算是一个典型的例子。
全局变量可以承载全局数据,但全局数据并不一定依赖于全局变量,没有全局变量一样可以获取全局数据。以C语言为例,可以定义一个结构(struct)涵盖全局数据区的所有数据,然后把这个结构的指针作为参数传递给子程序。如果数据真的很多很复杂,还可以考虑轻量级的in-memory数据库(不是所有的数据库都像Oracle、DB2那样巨无霸),保证酸味(ACID)纯正。
意广才疏 发表于 2014-2-25 23:53# n3 |7 ?( T- {% m8 s1 o
沉宝同学的情况不了解,我自己确实不清楚化工自控里冷、暖、热启动的实际影响,晨枫你若有空闲不妨科普一 ...
| 欢迎光临 爱吱声 (http://aswetalk.net/bbs/) | Powered by Discuz! X3.2 |