1.å¦ä½è·å¾ä¼å
级å¨Linuxç¯å¢ç¼ç¨ä¸ï¼
2.å¦ä¹ ç¼ç¨,时时源码ç¨ä»ä¹ç¼ç¨è½¯ä»¶?
3.深入浅出Linux代码注入防护linux代码注入
å¦ä½è·å¾ä¼å 级å¨Linuxç¯å¢ç¼ç¨ä¸ï¼
ä»ä¹æ¯å®æ¶ç³»ç»ï¼POSIX .bä½äºè¿æ ·çå®ä¹ï¼æç³»ç»è½å¤å¨éå®çååºæ¶é´å æä¾æéæ°´å¹³çæå¡ãèä¸ä¸ªç±Donald Gilliesæåºçæ´å 为大家æ¥åçå®ä¹æ¯ï¼ä¸ä¸ªå®æ¶ç³»ç»æ¯æ计ç®çæ£ç¡®æ§ä¸ä» åå³äºç¨åºçé»è¾æ£ç¡®æ§ï¼ä¹åå³äºç»æ产ççæ¶é´ï¼å¦æç³»ç»çæ¶é´çº¦ææ¡ä»¶å¾ä¸å°æ»¡è¶³ï¼å°ä¼åçç³»ç»åºéã
å®æ¶ç³»ç»æ ¹æ®å ¶å¯¹äºå®æ¶æ§è¦æ±çä¸åï¼å¯ä»¥å为软å®æ¶å硬å®æ¶ä¸¤ç§ç±»åã硬å®æ¶ç³»ç»æç³»ç»è¦æç¡®ä¿çæåæ åµä¸çæå¡æ¶é´ï¼å³å¯¹äºäºä»¶çååºæ¶é´çæªæ¢æéæ¯æ 论å¦ä½é½å¿ é¡»å¾å°æ»¡è¶³ãæ¯å¦èªå¤©ä¸çå®å®é£è¹çæ§å¶çå°±æ¯ç°å®ä¸è¿æ ·çç³»ç»ãå ¶ä»çæææå®æ¶ç¹æ§çç³»ç»é½å¯ä»¥ç§°ä¹ä¸ºè½¯å®æ¶ç³»ç»ãå¦ææç¡®å°æ¥è¯´ï¼è½¯å®æ¶ç³»ç»å°±æ¯é£äºä»ç»è®¡çè§åº¦æ¥è¯´ï¼ä¸ä¸ªä»»å¡ï¼å¨ä¸é¢ç论述ä¸ï¼æ们å°å¯¹ä»»å¡åè¿ç¨ä¸ä½åºåï¼è½å¤å¾å°æç¡®ä¿çå¤çæ¶é´ï¼å°è¾¾ç³»ç»çäºä»¶ä¹è½å¤å¨æªæ¢æéå°æ¥ä¹åå¾å°å¤çï¼ä½è¿åæªæ¢æé并ä¸ä¼å¸¦æ¥è´å½çé误ï¼åå®æ¶å¤åªä½ç³»ç»å°±æ¯ä¸ç§è½¯å®æ¶ç³»ç»ã
ä¸ä¸ªè®¡ç®æºç³»ç»ä¸ºäºæä¾å¯¹äºå®æ¶æ§çæ¯æï¼å®çæä½ç³»ç»å¿ 须对äºCPUåå ¶ä»èµæºè¿è¡ææçè°åº¦å管çãå¨å¤ä»»å¡å®æ¶ç³»ç»ä¸ï¼èµæºçè°åº¦å管çæ´å å¤æãæ¬æä¸é¢å°å ä»åç±»çè§åº¦å¯¹åç§å®æ¶ä»»å¡è°åº¦ç®æ³è¿è¡è®¨è®ºï¼ç¶åç 究æ®éç Linuxæä½ç³»ç»çè¿ç¨è°åº¦ä»¥ååç§å®æ¶Linuxç³»ç»ä¸ºäºæ¯æå®æ¶ç¹æ§å¯¹æ®éLinuxç³»ç»æåçæ¹è¿ãæååæäºå°Linuxæä½ç³»ç»åºç¨äºå®æ¶é¢åä¸æ¶æåºç°çä¸äºé®é¢ï¼å¹¶æ»ç»äºåç§å®æ¶Linuxæ¯å¦ä½è§£å³è¿äºé®é¢çã
1. å®æ¶CPUè°åº¦ç®æ³åç±»
åç§å®æ¶æä½ç³»ç»çå®æ¶è°åº¦ç®æ³å¯ä»¥å为å¦ä¸ä¸ç§ç±»å«[Wang][Gopalan]ï¼åºäºä¼å 级çè°åº¦ç®æ³ï¼Priority-driven scheduling-PDï¼ãåºäºCPU使ç¨æ¯ä¾çå ±äº«å¼çè°åº¦ç®æ³ï¼Share-driven scheduling-SDï¼ã以ååºäºæ¶é´çè¿ç¨è°åº¦ç®æ³ï¼Time-driven scheduling-TDï¼ï¼ä¸é¢å¯¹è¿ä¸ç§è°åº¦ç®æ³éä¸è¿è¡ä»ç»ã
1.1. åºäºä¼å 级çè°åº¦ç®æ³
åºäºä¼å 级çè°åº¦ç®æ³ç»æ¯ä¸ªè¿ç¨åé ä¸ä¸ªä¼å 级ï¼å¨æ¯æ¬¡è¿ç¨è°åº¦æ¶ï¼è°åº¦å¨æ»æ¯è°åº¦é£ä¸ªå ·ææé«ä¼å 级çä»»å¡æ¥æ§è¡ãæ ¹æ®ä¸åçä¼å 级åé æ¹æ³ï¼åºäºä¼å 级çè°åº¦ç®æ³å¯ä»¥å为å¦ä¸ä¸¤ç§ç±»å[Krishna][Wang]ï¼
éæä¼å 级è°åº¦ç®æ³ï¼
è¿ç§è°åº¦ç®æ³ç»é£äºç³»ç»ä¸å¾å°è¿è¡çææè¿ç¨é½éæå°åé ä¸ä¸ªä¼å 级ãéæä¼å 级çåé å¯ä»¥æ ¹æ®åºç¨çå±æ§æ¥è¿è¡ï¼æ¯å¦ä»»å¡çå¨æï¼ç¨æ·ä¼å 级ï¼æè å ¶å®çé¢å ç¡®å®ççç¥ãRMï¼Rate-Monotonicï¼è°åº¦ç®æ³æ¯ä¸ç§å ¸åçéæä¼å 级è°åº¦ç®æ³ï¼å®æ ¹æ®ä»»å¡çæ§è¡å¨æçé¿çæ¥å³å®è°åº¦ä¼å 级ï¼é£äºå ·æå°çæ§è¡å¨æçä»»å¡å ·æè¾é«çä¼å 级ã
å¨æä¼å 级è°åº¦ç®æ³ï¼
è¿ç§è°åº¦ç®æ³æ ¹æ®ä»»å¡çèµæºéæ±æ¥å¨æå°åé ä»»å¡çä¼å 级ï¼å ¶ç®çå°±æ¯å¨èµæºåé åè°åº¦æ¶ææ´å¤§ççµæ´»æ§ãéå®æ¶ç³»ç»ä¸å°±æå¾å¤è¿ç§è°åº¦ç®æ³ï¼æ¯å¦çä½ä¸ä¼å çè°åº¦ç®æ³ãå¨å®æ¶è°åº¦ç®æ³ä¸ï¼ EDFç®æ³æ¯ä½¿ç¨æå¤çä¸ç§å¨æä¼å 级è°åº¦ç®æ³ï¼è¯¥ç®æ³ç»å°±ç»ªéåä¸çå个任å¡æ ¹æ®å®ä»¬çæªæ¢æéï¼Deadlineï¼æ¥åé ä¼å 级ï¼å ·ææè¿çæªæ¢æéçä»»å¡å ·ææé«çä¼å 级ã
1.2. åºäºæ¯ä¾å ±äº«è°åº¦ç®æ³
è½ç¶åºäºä¼å 级çè°åº¦ç®æ³ç®åèææï¼ä½è¿ç§è°åº¦ç®æ³æä¾çæ¯ä¸ç§ç¡¬å®æ¶çè°åº¦ï¼å¨å¾å¤æ åµä¸å¹¶ä¸éå使ç¨è¿ç§è°åº¦ç®æ³ï¼æ¯å¦è±¡å®æ¶å¤åªä½ä¼è®®ç³»ç»è¿æ ·ç软å®æ¶åºç¨ã对äºè¿ç§è½¯å®æ¶åºç¨ï¼ä½¿ç¨ä¸ç§æ¯ä¾å ±äº«å¼çèµæºè°åº¦ç®æ³ï¼SDç®æ³ï¼æ´ä¸ºéåã
æ¯ä¾å ±äº«è°åº¦ç®æ³æåºäºCPU使ç¨æ¯ä¾çå ±äº«å¼çè°åº¦ç®æ³ï¼å ¶åºæ¬ææ³å°±æ¯æç §ä¸å®çæéï¼æ¯ä¾ï¼å¯¹ä¸ç»éè¦è°åº¦çä»»å¡è¿è¡è°åº¦ï¼è®©å®ä»¬çæ§è¡æ¶é´ä¸å®ä»¬çæéå®å ¨ææ£æ¯ã
æ们å¯ä»¥éè¿ä¸¤ç§æ¹æ³æ¥å®ç°æ¯ä¾å ±äº«è°åº¦ç®æ³[Nieh]ï¼ç¬¬ä¸ç§æ¹æ³æ¯è°èå个就绪è¿ç¨åºç°å¨è°åº¦éåéé¦çé¢çï¼å¹¶è°åº¦éé¦çè¿ç¨æ§è¡ï¼ç¬¬äºç§åæ³å°±æ¯é次è°åº¦å°±ç»ªéåä¸çå个è¿ç¨æå ¥è¿è¡ï¼ä½æ ¹æ®åé çæéè°èåé 个æ¯ä¸ªè¿ç¨çè¿è¡æ¶é´çã
æ¯ä¾å ±äº«è°åº¦ç®æ³å¯ä»¥å为以ä¸å 个类å«ï¼è½®è½¬æ³ãå ¬å¹³å ±äº«ãå ¬å¹³éåã彩票è°åº¦æ³ï¼Lotteryï¼çã
æ¯ä¾å ±äº«è°åº¦ç®æ³çä¸ä¸ªé®é¢å°±æ¯å®æ²¡æå®ä¹ä»»ä½ä¼å 级çæ¦å¿µï¼ææçä»»å¡é½æ ¹æ®å®ä»¬ç³è¯·çæ¯ä¾å ±äº«CPUèµæºï¼å½ç³»ç»å¤äºè¿è½½ç¶ææ¶ï¼ææçä»»å¡çæ§è¡é½ä¼ææ¯ä¾å°åæ ¢ãæ以为äºä¿è¯ç³»ç»ä¸å®æ¶è¿ç¨è½å¤è·å¾ä¸å®çCPUå¤çæ¶é´ï¼ä¸è¬éç¨ä¸ç§å¨æè°èè¿ç¨æéçæ¹æ³ã
1.3. åºäºæ¶é´çè¿ç¨è°åº¦ç®æ³
对äºé£äºå ·æ稳å®ãå·²ç¥è¾å ¥çç®åç³»ç»ï¼å¯ä»¥ä½¿ç¨æ¶é´é©±å¨ï¼Time-driven:TDï¼çè°åº¦ç®æ³ï¼å®è½å¤ä¸ºæ°æ®å¤çæä¾å¾å¥½çé¢æµæ§ãè¿ç§è°åº¦ç®æ³æ¬è´¨ä¸æ¯ä¸ç§è®¾è®¡æ¶å°±ç¡®å®ä¸æ¥ç离线çéæè°åº¦æ¹æ³ãå¨ç³»ç»ç设计é¶æ®µï¼å¨æ确系ç»ä¸ææçå¤çæ åµä¸ï¼å¯¹äºå个任å¡çå¼å§ãåæ¢ã以åç»ææ¶é´çå°±äºå ååºæç¡®çå®æå设计ãè¿ç§è°åº¦ç®æ³éåäºé£äºå¾å°çåµå ¥å¼ç³»ç»ãèªæ§ç³»ç»ãä¼ æå¨çåºç¨ç¯å¢ã
è¿ç§è°åº¦ç®æ³çä¼ç¹æ¯ä»»å¡çæ§è¡æå¾å¥½çå¯é¢æµæ§ï¼ä½æ大ç缺ç¹æ¯ç¼ºä¹çµæ´»æ§ï¼å¹¶ä¸ä¼åºç°æä»»å¡éè¦è¢«æ§è¡èCPUå´ä¿æ空é²çæ åµã
2. éç¨Linuxç³»ç»ä¸çCPUè°åº¦
éç¨Linuxç³»ç»æ¯æå®æ¶åéå®æ¶ä¸¤ç§è¿ç¨ï¼å®æ¶è¿ç¨ç¸å¯¹äºæ®éè¿ç¨å ·æç»å¯¹çä¼å 级ã对åºå°ï¼å®æ¶è¿ç¨éç¨SCHED_FIFOæè SCHED_RRè°åº¦çç¥ï¼æ®éçè¿ç¨éç¨SCHED_OTHERè°åº¦çç¥ã
å¨è°åº¦ç®æ³çå®ç°ä¸ï¼Linuxä¸çæ¯ä¸ªä»»å¡æå个ä¸è°åº¦ç¸å ³çåæ°ï¼å®ä»¬æ¯rt_priorityãpolicyãpriorityï¼niceï¼ãcounterãè°åº¦ç¨åºæ ¹æ®è¿å个åæ°è¿è¡è¿ç¨è°åº¦ã
å¨SCHED_OTHER è°åº¦çç¥ä¸ï¼è°åº¦å¨æ»æ¯éæ©é£ä¸ªpriority+counterå¼æ大çè¿ç¨æ¥è°åº¦æ§è¡ãä»é»è¾ä¸åæï¼SCHED_OTHERè°åº¦çç¥åå¨çè°åº¦å¨æï¼epochï¼ï¼å¨æ¯ä¸ä¸ªè°åº¦å¨æä¸ï¼ä¸ä¸ªè¿ç¨çpriorityåcounterå¼ç大å°å½±åäºå½åæ¶å»åºè¯¥è°åº¦åªä¸ä¸ªè¿ç¨æ¥æ§è¡ï¼å ¶ä¸ priorityæ¯ä¸ä¸ªåºå®ä¸åçå¼ï¼å¨è¿ç¨å建æ¶å°±å·²ç»ç¡®å®ï¼å®ä»£è¡¨äºè¯¥è¿ç¨çä¼å 级ï¼ä¹ä»£è¡¨è¿è¯¥è¿ç¨å¨æ¯ä¸ä¸ªè°åº¦å¨æä¸è½å¤å¾å°çæ¶é´ççå¤å°ï¼ counteræ¯ä¸ä¸ªå¨æååçå¼ï¼å®åæ äºä¸ä¸ªè¿ç¨å¨å½åçè°åº¦å¨æä¸è¿å©ä¸çæ¶é´çãå¨æ¯ä¸ä¸ªè°åº¦å¨æçå¼å§ï¼priorityçå¼è¢«èµç» counterï¼ç¶åæ¯æ¬¡è¯¥è¿ç¨è¢«è°åº¦æ§è¡æ¶ï¼counterå¼é½åå°ãå½counterå¼ä¸ºé¶æ¶ï¼è¯¥è¿ç¨ç¨å®èªå·±å¨æ¬è°åº¦å¨æä¸çæ¶é´çï¼ä¸ååä¸æ¬è°åº¦å¨æçè¿ç¨è°åº¦ãå½ææè¿ç¨çæ¶é´çé½ç¨å®æ¶ï¼ä¸ä¸ªè°åº¦å¨æç»æï¼ç¶åå¨èå¤å§ãå¦å¤å¯ä»¥çåºLinuxç³»ç»ä¸çè°åº¦å¨æä¸æ¯éæçï¼å®æ¯ä¸ä¸ªå¨æååçéï¼æ¯å¦å¤äºå¯è¿è¡ç¶æçè¿ç¨çå¤å°åå®ä»¬priorityå¼é½å¯ä»¥å½±åä¸ä¸ªepochçé¿çãå¼å¾æ³¨æçä¸ç¹æ¯ï¼å¨2.4以ä¸çå æ ¸ä¸ï¼ priority被niceæå代ï¼ä½äºè ä½ç¨ç±»ä¼¼ã
å¯è§SCHED_OTHERè°åº¦çç¥æ¬è´¨ä¸æ¯ä¸ç§æ¯ä¾å ±äº«çè°åº¦çç¥ï¼å®çè¿ç§è®¾è®¡æ¹æ³è½å¤ä¿è¯è¿ç¨è°åº¦æ¶çå ¬å¹³æ§--ä¸ä¸ªä½ä¼å 级çè¿ç¨å¨æ¯ä¸ä¸ªepochä¸ä¹ä¼å¾å°èªå·±åºå¾çé£äºCPUæ§è¡æ¶é´ï¼å¦å¤å®ä¹æä¾äºä¸åè¿ç¨çä¼å 级åºåï¼å ·æé«priorityå¼çè¿ç¨è½å¤è·å¾æ´å¤çæ§è¡æ¶é´ã
对äºå®æ¶è¿ç¨æ¥è¯´ï¼å®ä»¬ä½¿ç¨çæ¯åºäºå®æ¶ä¼å 级rt_priorityçä¼å 级è°åº¦çç¥ï¼ä½æ ¹æ®ä¸åçè°åº¦çç¥ï¼åä¸å®æ¶ä¼å 级çè¿ç¨ä¹é´çè°åº¦æ¹æ³ææä¸åï¼
SCHED_FIFOï¼ä¸åçè¿ç¨æ ¹æ®éæä¼å 级è¿è¡æéï¼ç¶åå¨åä¸ä¼å 级çéåä¸ï¼è°å åå¤å¥½è¿è¡å°±å è°åº¦è°ï¼å¹¶ä¸æ£å¨è¿è¡çè¿ç¨ä¸ä¼è¢«ç»æ¢ç´å°ä»¥ä¸æ åµåçï¼1.被ææ´é«ä¼å 级çè¿ç¨æ强å CPUï¼2.èªå·±å 为èµæºè¯·æ±èé»å¡ï¼3.èªå·±ä¸»å¨æ¾å¼CPUï¼è°ç¨sched_yieldï¼ï¼
SCHED_RRï¼è¿ç§è°åº¦çç¥è·ä¸é¢çSCHED_FIFOä¸æ¨¡ä¸æ ·ï¼é¤äºå®ç»æ¯ä¸ªè¿ç¨åé ä¸ä¸ªæ¶é´çï¼æ¶é´çå°äºæ£å¨æ§è¡çè¿ç¨å°±æ¾å¼æ§è¡ï¼æ¶é´ççé¿åº¦å¯ä»¥éè¿sched_rr_get_intervalè°ç¨å¾å°ï¼
ç±äºLinuxç³»ç»æ¬èº«æ¯ä¸ä¸ªé¢åæ¡é¢çç³»ç»ï¼æ以å°å®åºç¨äºå®æ¶åºç¨ä¸æ¶åå¨å¦ä¸çä¸äºé®é¢ï¼
Linuxç³»ç»ä¸çè°åº¦åä½ä¸ºmsï¼æ以å®ä¸è½å¤æä¾ç²¾ç¡®çå®æ¶ï¼
å½ä¸ä¸ªè¿ç¨è°ç¨ç³»ç»è°ç¨è¿å ¥å æ ¸æè¿è¡æ¶ï¼å®æ¯ä¸å¯è¢«æ¢å çï¼
Linuxå æ ¸å®ç°ä¸ä½¿ç¨äºå¤§éçå°ä¸ææä½ä¼é æä¸æç丢失ï¼
ç±äºä½¿ç¨èæå åææ¯ï¼å½åç页åºéæ¶ï¼éè¦ä»ç¡¬çä¸è¯»å交æ¢æ°æ®ï¼ä½ç¡¬ç读åç±äºåå¨ä½ç½®çéæºæ§ä¼å¯¼è´éæºç读åæ¶é´ï¼è¿å¨æäºæ åµä¸ä¼å½±åä¸äºå®æ¶ä»»å¡çæªæ¢æéï¼
è½ç¶Linuxè¿ç¨è°åº¦ä¹æ¯æå®æ¶ä¼å 级ï¼ä½ç¼ºä¹ææçå®æ¶ä»»å¡çè°åº¦æºå¶åè°åº¦ç®æ³ï¼å®çç½ç»åç³»ç»çåè®®å¤çåå ¶å®è®¾å¤çä¸æå¤çé½æ²¡æä¸å®å¯¹åºçè¿ç¨çè°åº¦å ³èèµ·æ¥ï¼å¹¶ä¸å®ä»¬èªèº«ä¹æ²¡ææç¡®çè°åº¦æºå¶ï¼
3. åç§å®æ¶Linuxç³»ç»
3.1. RT-LinuxåRTAI
RT -Linuxæ¯æ°å¢¨è¥¿å¥ç§æ大å¦ï¼New Mexico Institute of Technologyï¼çç 究ææ[RTLinuxWeb][Barabanov]ãå®çåºæ¬ææ³æ¯ï¼ä¸ºäºå¨Linuxç³»ç»ä¸æä¾å¯¹äºç¡¬å®æ¶çæ¯æï¼å®å®ç°äºä¸ä¸ªå¾®å æ ¸çå°çå®æ¶æä½ç³»ç»ï¼æ们ä¹ç§°ä¹ä¸ºRT-Linuxçå®æ¶åç³»ç»ï¼ï¼èå°æ®éLinuxç³»ç»ä½ä¸ºä¸ä¸ªè¯¥æä½ç³»ç»ä¸çä¸ä¸ªä½ä¼å 级çä»»å¡æ¥è¿è¡ãå¦å¤æ®éLinuxç³»ç»ä¸çä»»å¡å¯ä»¥éè¿FIFOåå®æ¶ä»»å¡è¿è¡éä¿¡ãRT-Linuxçæ¡æ¶å¦å¾ 1æ示ï¼
å¾ 1 RT-Linuxç»æ
RT -Linuxçå ³é®ææ¯æ¯éè¿è½¯ä»¶æ¥æ¨¡æ硬件çä¸ææ§å¶å¨ãå½Linuxç³»ç»è¦å°éCPUçä¸ææ¶æ¶ï¼RT-Linuxä¸çå®æ¶åç³»ç»ä¼æªåå°è¿ä¸ªè¯·æ±ï¼æå®è®°å½ä¸æ¥ï¼èå®é ä¸å¹¶ä¸çæ£å°é硬件ä¸æï¼è¿æ ·å°±é¿å äºç±äºå°ä¸ææé æçç³»ç»å¨ä¸æ®µæ¶é´æ²¡æååºçæ åµï¼ä»èæé«äºå®æ¶æ§ãå½æ硬件ä¸æå°æ¥æ¶ï¼ RT-Linuxæªå该ä¸æï¼å¹¶å¤ææ¯å¦æå®æ¶åç³»ç»ä¸çä¸æä¾ç¨æ¥å¤çè¿æ¯ä¼ éç»æ®éçLinuxå æ ¸è¿è¡å¤çãå¦å¤ï¼æ®éLinuxç³»ç»ä¸çæå°å®æ¶ç²¾åº¦ç±ç³»ç»ä¸çå®æ¶æ¶éçé¢çå³å®ï¼ä¸è¬Linuxç³»ç»å°è¯¥æ¶é设置为æ¯ç§æ¥ä¸ªæ¶éä¸æï¼æ以Linuxç³»ç»ä¸ä¸è¬çå®æ¶ç²¾åº¦ä¸º msï¼å³æ¶éå¨ææ¯msï¼èRT-Linuxéè¿å°ç³»ç»çå®æ¶æ¶é设置为å次触åç¶æï¼å¯ä»¥æä¾åå 个微ç§çº§çè°åº¦ç²åº¦ã
RT-Linuxå®æ¶åç³»ç»ä¸çä»»å¡è°åº¦å¯ä»¥éç¨RMãEDFçä¼å 级驱å¨çç®æ³ï¼ä¹å¯ä»¥éç¨å ¶ä»è°åº¦ç®æ³ã
RT -Linux对äºé£äºå¨éè´è·ä¸å·¥ä½çä¸æç³»ç»æ¥è¯´ï¼ç¡®å®æ¯ä¸ä¸ªä¸éçéæ©ï¼ä½ä»ä» ä» æä¾äºå¯¹äºCPUèµæºçè°åº¦ï¼å¹¶ä¸å®æ¶ç³»ç»åæ®éLinuxç³»ç»å ³ç³»ä¸æ¯ååå¯åï¼è¿æ ·çè¯ï¼å¼å人åä¸è½å åå©ç¨Linuxç³»ç»ä¸å·²ç»å®ç°çåè½ï¼å¦åè®®æ çãæ以RT-Linuxéåä¸å·¥ä¸æ§å¶çå®æ¶ä»»å¡åè½ç®åï¼å¹¶ä¸æ硬å®æ¶è¦æ±çç¯å¢ä¸ï¼ä½å¦æè¦åºç¨ä¸å¤åªä½å¤çä¸è¿éè¦å大éçå·¥ä½ã
æ大å©çRTAI( Real-Time Application Interface )æºäºRT-Linuxï¼å®å¨è®¾è®¡ææ³ä¸åRT-Linuxå®å ¨ç¸åãå®å½å设计ç®çæ¯ä¸ºäºè§£å³RT-Linuxé¾äºå¨ä¸åLinuxçæ¬ä¹é´é¾äºç§»æ¤çé®é¢ï¼ä¸ºæ¤ï¼RTAIå¨ Linux ä¸å®ä¹äºä¸ä¸ªå®æ¶ç¡¬ä»¶æ½è±¡å±ï¼å®æ¶ä»»å¡éè¿è¿ä¸ªæ½è±¡å±æä¾çæ¥å£åLinuxç³»ç»è¿è¡äº¤äºï¼è¿æ ·å¨ç»Linuxå æ ¸ä¸å¢å å®æ¶æ¯ææ¶å¯ä»¥å°½å¯è½å°å°ä¿®æ¹ Linuxçå æ ¸æºä»£ç ã
3.2. Kurt-Linux
Kurt -Linuxç±Kansas大å¦å¼åï¼å®å¯ä»¥æä¾å¾®ç§çº§çå®æ¶ç²¾åº¦[KurtWeb] [Srinivasan]ãä¸åäºRT-Linuxåç¬å®ç°ä¸ä¸ªå®æ¶å æ ¸çåæ³ï¼Kurt -Linuxæ¯å¨éç¨Linuxç³»ç»çåºç¡ä¸å®ç°çï¼å®ä¹æ¯ç¬¬ä¸ä¸ªå¯ä»¥ä½¿ç¨æ®éLinuxç³»ç»è°ç¨çåºäºLinuxçå®æ¶ç³»ç»ã
Kurt-Linuxå°ç³»ç»å为ä¸ç§ç¶æï¼æ£å¸¸æãå®æ¶æåæ··åæï¼å¨æ£å¸¸ææ¶å®éç¨æ®éçLinuxçè°åº¦çç¥ï¼å¨å®æ¶æåªè¿è¡å®æ¶ä»»å¡ï¼å¨æ··åæå®æ¶åéå®æ¶ä»»å¡é½å¯ä»¥æ§è¡ï¼å®æ¶æå¯ä»¥ç¨äºå¯¹äºå®æ¶æ§è¦æ±æ¯è¾ä¸¥æ ¼çæ åµã
为äºæé«Linuxç³»ç»çå®æ¶ç¹æ§ï¼å¿ é¡»æé«ç³»ç»ææ¯æçæ¶é精度ãä½å¦æä» ä» ç®åå°æé«æ¶éé¢çï¼ä¼å¼èµ·è°åº¦è´è½½çå¢å ï¼ä»è严ééä½ç³»ç»çæ§è½ã为äºè§£å³è¿ä¸ªçç¾ï¼ Kurt-Linuxéç¨UTIMEæ使ç¨çæé«Linuxç³»ç»ä¸çæ¶é精度çæ¹æ³[UTIMEWeb]ï¼å®å°æ¶éè¯ç设置为å次触åç¶æï¼One shot modeï¼ï¼å³æ¯æ¬¡ç»æ¶éè¯ç设置ä¸ä¸ªè¶ æ¶æ¶é´ï¼ç¶åå°è¯¥è¶ æ¶äºä»¶åçæ¶å¨æ¶éä¸æå¤çç¨åºä¸åæ¬¡æ ¹æ®éè¦ç»æ¶éè¯ç设置ä¸ä¸ªè¶ æ¶æ¶é´ãå®çåºæ¬ææ³æ¯ä¸ä¸ªç²¾ç¡®çå®æ¶æå³çæ们éè¦æ¶éä¸æå¨æ们éè¦çä¸ä¸ªæ¯è¾ç²¾ç¡®çæ¶é´åçï¼ä½å¹¶éä¸å®éè¦ç³»ç»æ¶éé¢çè¾¾å°æ¤ç²¾åº¦ãå®å©ç¨CPUçæ¶é计æ°å¨TSC (Time Stamp Counter)æ¥æä¾ç²¾åº¦å¯è¾¾CPU主é¢çæ¶é´ç²¾åº¦ã
对äºå®æ¶ä»»å¡çè°åº¦ï¼Kurt-Linuxéç¨åºäºæ¶é´ï¼TDï¼çéæçå®æ¶CPUè°åº¦ç®æ³ãå®æ¶ä»»å¡å¨è®¾è®¡é¶æ®µå°±éè¦æç¡®å°è¯´æå®ä»¬å®æ¶äºä»¶è¦åççæ¶é´ãè¿ç§è°åº¦ç®æ³å¯¹äºé£äºå¾ªç¯æ§è¡çä»»å¡è½å¤åå¾è¾å¥½çè°åº¦ææã
Kurt -Linuxç¸å¯¹äºRT-Linuxçä¸ä¸ªä¼ç¹å°±æ¯å¯ä»¥ä½¿ç¨Linuxç³»ç»èªèº«çç³»ç»è°ç¨ï¼å®æ¬æ¥è¢«è®¾è®¡ç¨äºæä¾å¯¹ç¡¬å®æ¶çæ¯æï¼ä½ç±äºå®å¨å®ç°ä¸åªæ¯ç®åçå°Linuxè°åº¦å¨ç¨ä¸ä¸ªç®åçæ¶é´é©±å¨çè°åº¦å¨æå代ï¼æ以å®çå®æ¶è¿ç¨çè°åº¦å¾å®¹æåå°å ¶å®éå®æ¶ä»»å¡çå½±åï¼ä»èå¨æçæ åµä¸ä¼åçå®æ¶ä»»å¡çæªæ¢æéä¸è½æ»¡è¶³çæ åµï¼æ以ä¹è¢«ç§°ä½ä¸¥æ ¼å®æ¶ç³»ç»ï¼Firm Real-timeï¼ãç®ååºäºKurt-Linuxçåºç¨æï¼ARTSï¼ATM Reference Traffic Systemï¼ãå¤åªä½ææ¾è½¯ä»¶çãå¦å¤Kurt-Linuxæéç¨çè¿ç§æ¹æ³éè¦é¢ç¹å°å¯¹æ¶éè¯çè¿è¡ç¼ç¨è®¾ç½®ã
3.3. RED-Linux
RED -Linuxæ¯å å·å¤§å¦Irvineåæ ¡å¼åçå®æ¶Linuxç³»ç»[REDWeb][ Wang]ï¼å®å°å¯¹å®æ¶è°åº¦çæ¯æåLinuxå¾å¥½å°å®ç°å¨åä¸ä¸ªæä½ç³»ç»å æ ¸ä¸ãå®åæ¶æ¯æä¸ç§ç±»åçè°åº¦ç®æ³ï¼å³ï¼Time-Drivenã Priority-DirvenãShare-Drivenã
为äºæé«ç³»ç»çè°åº¦ç²åº¦ï¼RED-Linuxä»RT-Linuxé£å¿åé´äºè½¯ä»¶æ¨¡æä¸æ管çå¨çæºå¶ï¼å¹¶ä¸æé«äºæ¶éä¸æé¢çãå½æ硬件ä¸æå°æ¥æ¶ï¼RED-Linuxçä¸æ模æç¨åºä» ä» æ¯ç®åå°å°å°æ¥çä¸ææ¾å°ä¸ä¸ªéåä¸è¿è¡æéï¼å¹¶ä¸æ§è¡çæ£çä¸æå¤çç¨åºã
å¦å¤ä¸ºäºè§£å³Linuxè¿ç¨å¨å æ ¸æä¸è½è¢«æ¢å çé®é¢ï¼ RED-Linuxå¨Linuxå æ ¸çå¾å¤å½æ°ä¸æå ¥äºæ¢å ç¹åè¯ï¼ä½¿å¾è¿ç¨å¨å æ ¸ææ¶ï¼ä¹å¯ä»¥å¨ä¸å®ç¨åº¦ä¸è¢«æ¢å ãéè¿è¿ç§æ¹æ³æé«äºå æ ¸çå®æ¶ç¹æ§ã
RED-Linuxç设计ç®æ å°±æ¯æä¾ä¸ä¸ªå¯ä»¥æ¯æåç§è°åº¦ç®æ³çéç¨çè°åº¦æ¡æ¶ï¼è¯¥ç³»ç»ç»æ¯ä¸ªä»»å¡å¢å äºå¦ä¸å 项å±æ§ï¼å¹¶å°å®ä»¬ä½ä¸ºè¿ç¨è°åº¦çä¾æ®ï¼
Priorityï¼ä½ä¸çä¼å 级ï¼
Start-Timeï¼ä½ä¸çå¼å§æ¶é´ï¼
Finish-Timeï¼ä½ä¸çç»ææ¶é´ï¼
Budgetï¼ä½ä¸å¨è¿è¡æé´æè¦ä½¿ç¨çèµæºçå¤å°ï¼
éè¿è°æ´è¿äºå±æ§çåå¼åè°åº¦ç¨åºæç §ä»ä¹æ ·çä¼å 顺åºæ¥ä½¿ç¨è¿äºå±æ§å¼ï¼å ä¹å¯ä»¥å®ç°ææçè°åº¦ç®æ³ãè¿æ ·çè¯ï¼å¯ä»¥å°ä¸ç§ä¸åçè°åº¦ç®æ³æ ç¼ãç»ä¸å°ç»åå°äºä¸èµ·ã
å¦å¤,å¢IDCç½ä¸æ许å¤äº§åå¢è´,便å®æå£ç¢
å¦ä¹ ç¼ç¨,ç¨ä»ä¹ç¼ç¨è½¯ä»¶?
é®é¢ä¸ï¼çµèç¼ç¨ç¨ä»ä¹è½¯ä»¶å¥½ Cè¯è¨ç¼ç¨è½¯ä»¶æåªäºã
Mcrosoft Visual C++ ãMicrosoft Visual Studioã DEV C++ãCode::BlocksãBorland C++ãWaT C++ãBorland C++ BuilderãGNU DJGPP C++ãLccwin C piler3.1ãHigh CãTurb CãgccãC-FreeåWin-TCãMy Tcççï¼ç±äºCè¯è¨æ¯è¾æçï¼æ以ç¼ç¨ç¯å¢å¾å¤ã
2.Cè¯è¨å ¥é¨ï¼ä¸æ¨è使ç¨VCï¼å 为VCä¸ä½åºå¤§ï¼èä¸åºç¨å¼åæ¯è¾é«çº§ãå ¥é¨ç¼ç¨è使ç¨Dev-C å WIN-TCã
1)WIN-TCï¼è¯¥è½¯ä»¶ä½¿ç¨TC2为å æ ¸ï¼æä¾WINDOWSå¹³å°çå¼åçé¢ï¼å æ¤ä¹å°±æ¯æWINDOWSå¹³å°ä¸çåè½ï¼ä¾å¦åªåãå¤å¶ãç²è´´åæ¥æ¾æ¿æ¢çãèä¸å¨åè½ä¸ä¹æå®çç¬ç¹ç¹è²ä¾å¦è¯æ³å 亮ãCå åµæ±ç¼ãèªå®ä¹æ©å±åºçæ¯æçã并æä¾ä¸ç»ç¸å ³è¾ å©å·¥å ·ä»¤ä½ å¨ç¼ç¨è¿ç¨ä¸æ´å 游åæä½ã
2)Dev-C ï¼Dev-C æ¯ä¸ä¸ªWindowsä¸çCåC ç¨åºçéæå¼åç¯å¢ãå®ä½¿ç¨MingW/GCCç¼è¯å¨ï¼éµå¾ªC/C æ åãå¼åç¯å¢å æ¬å¤é¡µé¢çªå£ãå·¥ç¨ç¼è¾å¨ä»¥åè°è¯å¨çï¼å¨å·¥ç¨ç¼è¾å¨ä¸ *** äºç¼è¾å¨ãç¼è¯å¨ãè¿æ¥ç¨åºåæ§è¡ç¨åºï¼æä¾é«äº®åº¦è¯æ³æ¾ç¤ºçï¼ä»¥åå°ç¼è¾é误ï¼è¿æå®åçè°è¯åè½ï¼è½å¤éååå¦è ä¸ç¼ç¨é«æçä¸åéæ±ï¼æ¯å¦ä¹ CæCçé¦éå¼åå·¥å ·ã
é®é¢äºï¼çµèç¼ç¨ä¸è¬ç¨ä»ä¹è½¯ä»¶å æ± é®é¢çãããã ä½ å¤ªå¿æ¥äºã æ ¢æ ¢æ¥ ç°å¨æµè¡ C# C++ Java
é®é¢ä¸ï¼å¦Cè¯è¨äºï¼åºè¯¥ç¨ä»ä¹çµèç¼ç¨è½¯ä»¶ï¼ æ¨èä½¿ç¨ VC6.0
ä¸è¬å¨å¦æ ¡æé½ç¨è¿ä¸ª
é®é¢åï¼è®¡ç®æºç¼ç¨åå¦è å¯ä»¥ç¨ä»ä¹è½¯ä»¶å¦ä¹ ã 计ç®æºç¼ç¨åå¦è å¯ä»¥ç¨VB软件å¦ä¹ ã
é®é¢äºï¼æ常ç¨ççµèç¼ç¨è½¯ä»¶æ¯ä»ä¹ï¼ å cè¯è¨å§ï¼æ¯è¾ç®æ´ææ
é®é¢å ï¼åå¦çµèç¼ç¨éè¦ä»ä¹ ä¸é¢æ¯æ个人çä¸äºè§è§£ï¼å¸æ对楼主ææ帮å©~~ å¦ä¹ ç¼ç¨ï¼é¦å åºè¯¥è®¤è®¤çççå¦ä¹ ä¸é¨è¯è¨ãå¦ä¹ 微软çï¼å°±å ä»VBå¼å§ï¼VBæ¯æ¯è¾å¥½çå ¥é¨è¯è¨ï¼å¯è§åçï¼æ¯è¾ç®åï¼æ¯é常好çå ¥é¨è¯è¨ã书ç±æå°åºè¯¥åå¤ä¸¤æ¬ï¼ä¸å¯è½ä¸æ¬ä¹¦ç±ä¼å å«VBçææå 容ï¼å¨ç书çæ¶åï¼å¯ä»¥äº¤åççï¼ä¸æ¬ä¹¦ç±ä¸æ²¡æ讲å°çå 容å¯ä»¥å¨å¦ä¸æ¬ä¸çå°ï¼è¿æ ·å¯¹å¦ä¹ æ¯å¾æ好å¤çï¼ä¹è½ä¿è¯æå¦ç¥è¯çå®æ´æ§ãå¦ç¼ç¨æ¯ä¸ä¸ªå¾æ¼«é¿çè¿ç¨ï¼ä¸è¦çæ¥ï¼è¦ç论ä¸å®è·µæ³ç»åï¼ä¾ç¨ä¹¦ç±ä¹æ¯å¾éè¦çï¼çæºä»£ç 对å¦ä¹ ä¹æ¯å¾æ帮å©çï¼çä½ å¦å®è¿é¨VBè¯è¨ä¹åï¼å¦ä¹ å«çè¯è¨æ¯é常ç®åï¼å¯ä»¥å°è¯Cè¯è¨ï¼æç §CââC++ââVCç顺åºå¦ä¹ ï¼æå©äºç¥è¯çè¿è´¯æ§ãæè å¦ä¹ Delphiï¼å ¥é¨è¾ä¸ºç®å类似äºVBï¼ä½æ¯VB强大ï¼å³å¯ä½ä¸ºå ¥é¨åè½å强ãå大ã 1 ï¼ æç¡®å¦ä¹ ç®ç å¦ä¹ ç¼ç¨å¯¹å¤§å¤æ°ITä¸äººåæ¥è¯´é½æ¯é常æç¨çãå¦ç¼ç¨ï¼åä¸åç¼ç¨äººåï¼ä»ä¸ªäººè§åº¦è®²ï¼å¯ä»¥è§£å³å¨è½¯ä»¶ä½¿ç¨ä¸æéå°çé®é¢ï¼æ¹è¿ç°æ软件ï¼å¯ä»¥ä¸ºèªå·±æ¾å°ä¸ä»½çæ³çå·¥ä½æ·»å éè¦å¾ç ç ï¼æå©äºå¨æ±èéè·¯ä¸è°å¾ä¸ä¸ªå¥½çèä½ï¼ä»å½å®¶çè§åº¦ï¼å¯ä»¥ä¸ºä¸å½ç软件产ä¸ååºåºæçè´¡ç®ï¼ä¸åä¼ç§çç¨åºåæ°¸è¿æ¯è¢«äºå¤ºç对象ãå¦ä¹ ç¼ç¨è¿è½é»ç¼æç»´ï¼ä½¿æ们çé»è¾æç»´æ´å 严å¯ï¼è½å¤ä¸æ享åå°åæ°çä¹è¶£ï¼å°ä¸ç´ææºä¼èµ°å¨é«ç§æçå沿ï¼å 为ç¨åºè®¾è®¡æ¬èº«æ¯ä¸ç§åé æ§çå·¥ä½ãç¥è¯ç»æµæ¶ä»£ç»æ们带æ¥äºæ éçæºä¼ï¼è¦æ³çæ£ææ¡è®¡ç®æºææ¯ï¼å¹¶å¨ITè¡ä¸éå¹²åºä¸çªäºä¸æ¥ï¼ææä½ä¸ºï¼å ·æä¸å®çç¼ç¨è½åæ¯ä¸ä¸ªåºæ¬æ¡ä»¶åè¦æ±ã 2 ï¼ æ好åºç¡ å¦ç¼ç¨è¦å ·å¤ä¸å®çåºç¡ï¼æ»ç»ä¹æ以ä¸å æ¹é¢ï¼ ï¼1ï¼æ°å¦åºç¡ââä»è®¡ç®æºåå±ååºç¨çåå²æ¥ç计ç®æºçæ°å¦æ¨¡ååä½ç³»ç»æçé½æ¯ææ°å¦å®¶æåºçï¼ææ©ç计ç®æºä¹æ¯ä¸ºæ°å¼è®¡ç®è设计çãå æ¤ï¼è¦å¦å¥½è®¡ç®æºå°±è¦æä¸å®çæ°å¦åºç¡ï¼åºå¦è æé«ä¸æ°´å¹³å°±å·®ä¸å¤äºã ï¼2ï¼é»è¾æç»´è½åçå¹å »ââå¦ç¨åºè®¾è®¡è¦æä¸å®çé»è¾æç»´è½åï¼âé»æåâçå¹å »è¦é¿æ¶é´çå®è·µé»ç¼ãè¦æ³æ为ä¸åä¼ç§çç¨åºåï¼æéè¦çæ¯ææ¡ç¼ç¨ææ³ãè¦åå°è¿ä¸ç¹å¿ é¡»å¨åå¤çå®è·µãè§å¯ãåæãæ¯è¾ãæ»ç»ä¸éæ¸å°ç§¯ç´¯ãå æ¤å¨å¦ä¹ ç¼ç¨è¿ç¨ä¸ï¼æ们ä¸å¿ çå°ä»ä¹é½å®å ¨æç½äºæå»å¨æå®è·µï¼åªè¦æç½äºå¤§æ¦ï¼å°±è¦æ¢äºèªå·±å¨æå»ä½éªãè°é½æ第ä¸æ¬¡ãæäºé®é¢åªæéè¿å®è·µåæè½æç½ï¼ä¹åªæå®è·µæè½æèå¸å书ä¸çç¥è¯åæèªå·±çï¼é«æé½æ¯è¿æ ·ææçã ï¼3ï¼éæ©ä¸ç§åéçå ¥é¨è¯è¨ââé¢å¯¹åç§åæ ·çè¯è¨ï¼åºæä»ä¹æ ·ç顺åºå¦å¢ï¼ç¨åºè®¾è®¡å·¥å ·ä¸å¤ä¹å¦ä¸å ç±»ï¼ â æ¬å°å¼ååºç¨è½¯ä»¶å¼åçå·¥å ·æï¼Visual Basic ãDelphi ãVC++ ( C++ Builder ) çï¼æ°æ®åºå¼åå·¥å ·æï¼Visual Foxpro ãOracle Developer ãPower Builder çã ⡠跨平å°å¼åå¼åå·¥å ·å¦ Java çã 3ï¼ç½ç»å¼å对客æ·ç«¯å¼åå·¥å ·å¦ï¼Java Script çï¼å¯¹æå¡å¨å¼åå·¥å ·å¦ï¼PHP ãASP ãJSP ãISAPI ãNSAPI ãCGI çã 以ä¸ä¸åçç¯å¢ä¸å ç§å¼åå·¥å ·ä¸ VB æ³ç®å并容æç解ï¼çé¢è®¾è®¡æ¯å¯è®¾åçï¼æå¦ãæç¨ãé VB ä½ä¸ºå ¥é¨çæ¹å对åºå¦è æ¯è¾ä¸ºéåçã 3 ï¼ æ³¨æç解ä¸äºéè¦æ¦å¿µ ä¸æ¬ç¨åºè®¾è®¡ç书çå°çæ éå°±æ¯åéãå½æ°ãæ¡ä»¶è¯å¥ã循ç¯è¯å¥çæ¦å¿µï¼ä½è¦çæ£è½è¿è¡ç¼ç¨åºç¨ï¼éè¦æ·±å ¥ç解è¿äºæ¦å¿µï¼å¨ç解çåºç¡ä¸åºç¨ï¼ä¸è¦åªç®åå°å¦ä¹ è¯æ³ãç»æï¼èè¦åéé对è¿äºè¯æ³ãç»æçåºç¨ä¾åï¼åå°ä¸¾ä¸åä¸ï¼è§¦ç±»æéã 4 ï¼ ææ¡ç¼ç¨ææ³ å¦ä¹ ä¸é¨è¯è¨æ......>>
é®é¢ä¸ï¼çµèä¸ç¨æ¥ç¼ç¨çæ¯ä»ä¹è½¯ä»¶ï¼ å ç°å¨é¢å ·åæ¯çæ¯Javaè¯è¨ï¼javaç¨åºå¼åå·¥å ·æ°æä¸è¬ä¹ æ¯ç¨JDKä¹åæ¯Eclipseï¼myeclipseç.
å ¶æ¬¡æ¯C++,ä¸è¬ä½¿ç¨Visual c++ï¼C#æ¯Visual Studioã
è¿æå ¶å®çä¾å¦BASIC使ç¨Visual BasicãSQLæ¯SQL ServerãPHPç¨Norepad++çã
没æ软件ä¸éè¦ç¬¬ä¸æ¹å¼åå·¥å ·æè¯è¨ï¼å æ¬Cåæ±ç¼èæçwindowsã
windowsä¸éæ常ç¨çå¼åå·¥å ·ï¼éè¦èªå·±å®è£ ãä¹å¯ä»¥éæ©ä½¿ç¨å½ä»¤è¡editå½ä»¤æ¥ç¼è¾ç¨åºï¼å®è£ Turbo cåå³å¯ä½¿ç¨doså¼åCè¯è¨ç¨åºã
é®é¢å «ï¼æ°ææ³å¦ä¹ çµèç¼ç¨ä»ä¹è½¯ä»¶å¥½ï¼ ç¼ç¨
è¿æ¯æ¯ä¸ªæ¸¸æç¼ç¨FAQéé½æçé®é¢ãè¿ä¸ªé®é¢æ¯ææé½ä¼å¨æ¸¸æå¼å论åä¸è¢«é®ä¸å¥½å 次ãè¿æ¯ä¸ªå¾å¥½çé®é¢ï¼ä½æ¯ï¼æ²¡äººè½ç»åºç®åççæ¡ãå¨æäºåºç¨ç¨åºä¸ï¼æ»æä¸äºè®¡ç®æºè¯è¨ä¼äºå ¶ä»è¯è¨ãä¸é¢æ¯å ç§ç¨äºç¼å游æç主è¦ç¼ç¨è¯è¨çä»ç»åå ¶ä¼ç¼ºç¹ãå¸æè¿ç¯æç« è½å¸®å©ä½ ååºå³å®ã
1ãCè¯è¨
å¦æ说FORTRANåCOBOLæ¯ç¬¬ä¸ä»£é«çº§ç¼è¯è¯è¨ï¼é£ä¹Cè¯è¨å°±æ¯å®ä»¬çååè¾ãCè¯è¨æ¯Dennis Ritchieå¨ä¸å年代å建çï¼å®åè½æ´å¼ºå¤§ä¸ä¸ALGOLä¿ææ´è¿ç»ç继æ¿æ§ï¼èALGOLåæ¯COBOLåFORTRANçç»æå继æ¿è ãCè¯è¨è¢«è®¾è®¡æä¸ä¸ªæ¯å®çåè¾æ´ç²¾å·§ãæ´ç®åççæ¬ï¼å®éäºç¼åç³»ç»çº§çç¨åºï¼æ¯å¦æä½ç³»ç»ãå¨æ¤ä¹åï¼æä½ç³»ç»æ¯ä½¿ç¨æ±ç¼è¯è¨ç¼åçï¼èä¸ä¸å¯ç§»æ¤ãCè¯è¨æ¯ç¬¬ä¸ä¸ªä½¿å¾ç³»ç»çº§ä»£ç 移æ¤æ为å¯è½çç¼ç¨è¯è¨ã
Cè¯è¨æ¯æç»æåç¼ç¨ï¼ä¹å°±æ¯è¯´Cçç¨åºè¢«ç¼åæä¸äºå离çå½æ°å¼å«ï¼è°ç¨ï¼ç *** ï¼è¿äºå¼å«æ¯èªä¸èä¸è¿è¡ï¼èä¸åä¸ä¸ªåç¬çéæåç代ç 使ç¨GOTOè¯å¥æ§å¶æµç¨ãå æ¤ï¼Cç¨åºæ¯èµ·éææ§çFORTRANåCOBOLçâ空å¿ç²å¼ä»£ç â代ç è¦ç®åå¾å¤ãäºå®ä¸ï¼Cä»ç¶å ·æGOTOè¯å¥ï¼ä¸è¿å®çåè½è¢«éå¶äºï¼ä» å½ç»æåæ¹æ¡é常å¤ææ¶æ建议使ç¨ã
æ£ç±äºå®çç³»ç»ç¼ç¨æ ¹æºï¼å°Cåæ±ç¼è¯è¨è¿è¡ç»åæ¯ç¸å½å®¹æçãå½æ°è°ç¨æ¥å£é常ç®åï¼èä¸æ±ç¼è¯è¨æ令è¿è½å åµå°C代ç ä¸ï¼æ以ï¼ä¸éè¦è¿æ¥ç¬ç«çæ±ç¼æ¨¡åã
ä¼ç¹ï¼æçäºç¼åå°èå¿«çç¨åºãå¾å®¹æä¸æ±ç¼è¯è¨ç»åãå ·æå¾é«çæ ååï¼å æ¤å ¶ä»å¹³å°ä¸çåçæ¬é常ç¸ä¼¼ã
缺ç¹ï¼ä¸å®¹ææ¯æé¢å对象ææ¯ãè¯æ³ææ¶ä¼é常é¾ä»¥ç解ï¼å¹¶é æ滥ç¨ã
移æ¤æ§ï¼Cè¯è¨çæ ¸å¿ä»¥åANSIå½æ°è°ç¨é½å ·æ移æ¤æ§ï¼ä½ä» éäºæµç¨æ§å¶ãå å管çåç®åçæ件å¤çãå ¶ä»çä¸è¥¿é½è·å¹³å°æå ³ãæ¯å¦è¯´ï¼ä¸ºWindowsåMacå¼åå¯ç§»æ¤çç¨åºï¼ç¨æ·çé¢é¨åå°±éè¦ç¨å°ä¸ç³»ç»ç¸å ³çå½æ°è°ç¨ãè¿ä¸è¬æå³çä½ å¿ é¡»å两次ç¨æ·çé¢ä»£ç ï¼ä¸è¿è¿å¥½æä¸äºåºå¯ä»¥å轻工ä½éã
ç¨Cè¯è¨ç¼åç游æï¼é常é常å¤ã
èµæï¼Cè¯è¨çç»å ¸èä½æ¯ãThe C Programming Languageãï¼å®ç»è¿å¤æ¬¡ä¿®æ¹ï¼å·²ç»æ©å±å°æåçä¸å大ï¼ä½å®ä»ç¶æ¯ä»ç»Cçä¼ç§ä¹¦æ¬ãä¸æ¬æ好çæç¨æ¯ãThe Waite Group's C Primer Plusãã
2ãC++
C++è¯è¨æ¯å ·æé¢å对象ç¹æ§çCè¯è¨ç继æ¿è ãé¢å对象ç¼ç¨ï¼æ称OOPæ¯ç»æåç¼ç¨çä¸ä¸æ¥ãOOç¨åºç±å¯¹è±¡ç»æï¼å ¶ä¸ç对象æ¯æ°æ®åå½æ°ç¦»æ£ *** ãæ许å¤å¯ç¨ç对象åºåå¨ï¼è¿ä½¿å¾ç¼ç¨ç®åå¾åªéè¦å°ä¸äºç¨åºâ建çææâå å¨ä¸èµ·ï¼è³å°ç论ä¸æ¯è¿æ ·ï¼ãæ¯å¦è¯´ï¼æå¾å¤çGUIåæ°æ®åºçåºå®ç°ä¸ºå¯¹è±¡ç *** ã
C++æ»æ¯è¾©è®ºç主é¢ï¼å°¤å ¶æ¯å¨æ¸¸æå¼å论åéãæå 项C++çåè½ï¼æ¯å¦èæå½æ°ï¼ä¸ºå½æ°å¼å«çå³çå¶å®å¢å äºä¸ä¸ªé¢å¤å±æ¬¡ï¼æ¹è¯å®¶å¾å¿«æåºC++ç¨åºå°åå¾æ¯ç¸ååè½çCç¨åºæ¥å¾å¤§åæ ¢ãC++çæ¥æ¤è å认为ï¼ç¨Cååºä¸èæå½æ°çä»·ç代ç åæ ·ä¼å¢å å¼æ¯ãè¿å°æ¯ä¸ä¸ªè¿å¨è¿è¡ï¼èä¸ä¸å¯è½å¾å¿«å¾åºç»è®ºçäºè®ºã
æ认为ï¼C++çé¢å¤å¼æ¯åªæ¯ä½¿ç¨æ´å¥½çè¯è¨çå°ä»åºãåæ ·çäºè®ºåçå¨å å年代é«çº§ç¨åºè¯è¨å¦COBOLåFORTRANå¼å§å代æ±ç¼æ为è¯è¨æéçæ¶åãæ¹è¯å®¶æ£ç¡®çæåºä½¿ç¨é«çº§è¯è¨ç¼åçç¨åºå¤©çå°±æ¯æåçæ±ç¼è¯è¨æ¥å¾æ ¢ï¼èä¸å¿ ç¶å¦æ¤ãèé«çº§è¯è¨æ¯æè 认为è¿ä¹ç¹å°å°çæ§è½æ失æ¯å¼å¾çï¼å 为COBOLåFORTRANç¨åºæ´å®¹æç¼ååç»´æ¤ã
ä¼ç¹ï¼ç»ç»å¤§åç¨åºæ¶æ¯Cè¯è¨å¥½å¾å¤ãå¾å¥½çæ¯æé¢å对象æºå¶ãéç¨æ°æ®ç»æï¼å¦é¾è¡¨å......>>
é®é¢ä¹ï¼å¤§å¦è®¡ç®æºç¼ç¨èè¯ç¨ä»ä¹è½¯ä»¶ è¯å®æ¯Mircrosoft Visual C++äºããã
é®é¢åï¼çµèç¼ç¨æ¯å¹²ä»ä¹ç ç¼ç¨!è¿ä¸ªå¯å¹¿äº.. æ¯å¦:ç½ç«.软件.游æ.å¾å¤å¾å¤. ä½ æçæ¯ä»ä¹.ç¡®å®æç¹æ¸ä¸é
深入浅出Linux代码注入防护linux代码注入
Linux代码注入防护是一种用于防止在Linux系统中运行的代码被恶意注入的安全机制。它可以有效防止恶意用户植入恶意代码,时时源码从而破坏正常程序的时时源码执行。
首先,时时源码需要确定“代码注入”的时时源码如何查看源码分支概念。简而言之,时时源码扣扣直播群聊源码代码注入指的时时源码是恶意用户通过植入恶意代码来破坏正常程序的执行。例如,时时源码用户可以将错误的时时源码代码植入Linux服务器,从而导致服务器崩溃。时时源码为了避免这种情况发生,时时源码开发者往往会采取一些措施,时时源码以便有效地防止代码注入。时时源码物体识别软件源码
最常用的时时源码一种防护方式就是使用安全函数和检查器来确保执行的代码不包含恶意代码。这些安全函数和检查器可以有效地检测出传入的时时源码恶意代码并将其阻止执行。具体做法是从参数列表中过滤掉可能导致安全漏洞的所有字符,并根据开发者的大富源码修复配置,禁止所有可疑的函数调用。
另外,还可以使用静态代码分析工具,通过分析程序源代码来确定高风险函数调用、好分数家源码参数漏洞等,从而有效防止代码注入攻击。
下面是使用安全函数进行代码注入防护的示例代码:
// 判断输入参数是否包含恶意代码
// 若包含,返回false
bool IsValidInput(char* input) {
// 如果参数为空,则返回false
if (!input || strlen(input) == 0)
return false;
// 判断输入字符中是否包含‘;’等字符
for (int i=0; i
if (input[i] == ‘;’ || input[i] == ‘&’ || input[i] == ‘|’)
return false;
}
return true;
}
以上就是Linux代码注入防护的概述。其中,安全函数和检查器及静态代码分析是最常用的防护方式,而安全函数的使用对于有效地防护代码注入攻击尤其重要。此外,应用程序也应在编写代码和检查输入参数时时加以有效地防护。