2008-09-19 7 views

cevap

13

sadece desteklenen çekirdek yürütme görevler için çevre ve Unix veya Windows gibi işletim sisteminde geleneksel uygulama yürütme ortamı olduğunu süreçleri, destek vermedi. Görevler, görev olarak yürütülmesi gereken kodun adresi olan bir giriş noktasına sahiptir. Bu adres a C veya montaj fonksiyonuna karşılık gelir. "Ana" adında bir sembol olabilir, ancak , çekirdek ortamında destekli ana() işleviyle ilgili (özellikle geleneksel argc ve argv parametrelerinin işlenmesi) C/C++ dil varsayımlarıdır. Ayrıca, VxWorks 6.0'dan önce, tüm görevler çekirdek kodunu çalıştırır. Çekirdek 'yu birbirine bağlı bir kodun ortak bir deposu olarak görüntüleyebilir ve ' u göreceksiniz ki, aynı adla birden fazla simgeye sahip olamayacağınız için isim çarpışmaları yaratabilirsiniz.

Şimdi bu, yalnızca uygulama kodunuzu çekirdek görüntüsüne bağladığınızda geçerlidir. Eğer uygulama kodunuzu indirecekseniz, modül yükleyici, her biri bir ana() rutini ile birden fazla modül yüklemek için kabul edecektir. Ancak, sisteme sembol tablosunda kayıtlı olan son "ana" sembolü, hedef kabuk üzerinden erişebildiğiniz tek simgedir. , ilk yüklü modüllerinden birinin kodunu çalıştıran görevleri başlatmak istiyorsanız, önceki ana() işlevinin adreslerini kullanmanız gerekir. Bu mümkün ama uygun değil. Daha fazla , görevlerin giriş noktalarına farklı adlar vermek için pratiktir ( "xxxStart" gibi olabilir; burada "xxx", görevin yapması gereken için anlamlı bir addır).

VxWorks 6.0 ile başlayarak, işletim sistemi bir işlem ortamını destekler. Bu , diğer birçok şeyin yanı sıra, geleneksel bir ana() rutinine sahip olabileceğiniz ve argc ve argv parametrelerinin doğru şekilde işlendiği, ve uygulama kodunun farklı bir bağlamda (kullanıcı içeriği) yürütülmesi anlamına gelir. kernel bağlamından, bu nedenle uygulama kodu (pul pul olabilir) ve kod arasında (kesiksiz olması gerekmeyen) izolasyonunu sağlar. PAD