Bellenimde program yürütme nasıl olur?


9

Bellenim alanında çalışan kişilerden, bellenimi kontrol eden İşletim sisteminin (örneğin bir USB sürücüsünde bellenim) olmadığını duydum. Harici bir komut bekleyen bir while döngüsünde çalışan tek bir iş parçacığı vardır ve bu bir kesmenin gerçekleşmesi için bir başlangıç ​​noktasıdır, bunu bir ISR ve donanıma kadar tamamen akan kontrol izler. Ama temel olarak donanımın bellenim kodunu yürüten kısmı nedir? CPU var mı veya cihaz çalıştırıldığı sürece tetiklenen ASIC tabanlı kod mu? Normal bir CPU-OS tabanlı sistemden bir bellenime paradigma değişimini anlayamıyorum.


Mümkünse, birisi CPU markasını ve diğer donanım ve yazılım ayrıntılarını belirten bir ürün yazılımı örneği alabilir. Örnekler SD kartlarda, USB, HDD denetleyicilerinde vb.
Olabilir

Yanıtlar:


13

Paradigma kayması yoktur; her iki durumda da bir CPU yazılımı / bellenimi yürütmektedir.

Yazılım ve yazılım aynı şeydir; tek fark nasıl saklandığıdır. Yazılım genellikle bir yığın depolama aygıtında (örn. Disk sürücüsü) saklanır ve yürütülmeden önce kalıcı belleğe (örn. DRAM) yüklenir. İçindeki dosyayı farklı bir dosyayla değiştirerek yazılımı değiştirmek kolaydır.

Bellenim genellikle CPU'ya az çok doğrudan bağlı olan kalıcı bellekte (örn. FLASH) saklanır. Değiştirilmesi daha zordur (bu nedenle "firma") ve yürütme için farklı bir belleğe aktarılabilir veya aktarılmayabilir.

Gerçekten, bir "işletim sistemi" olan bir bilgisayarın çalışması temelde bellenim tanımınızdan farklı değildir. Unutmayın, işletim sisteminin kendisi sadece başka bir yazılım parçasıdır - veya büyük olasılıkla, karşılıklı bağımlı yazılımların büyük bir koleksiyonudur. En düşük seviyede, CPU hala bir tür döngüde oturuyor ve işlerin yapılmasını bekliyor. Sadece bu döngü işletim sisteminin içine gömülüdür.


9

Bir işletim sistemine sahip "normal" bir CPU bile ürün yazılımı yürütmelidir ... buna genellikle genel bir bilgisayarda BIOS denir. Herhangi bir CPU için bellenim, işlemci herhangi bir çevre aygıtına (disk sürücüleri, USB vb.) Bağlı olsun veya olmasın, güç açıldığında her zaman kullanılabilen yazılımdır. Tam gelişmiş bir işletim sisteminiz varsa, ürün yazılımı sadece hangi cihazın (disk, USB sürücü vb.) İşletim sisteminin kodunu tuttuğunu bulur, kodu RAM'e kopyalar ve çalıştırır. Küçük gömülü aygıtlar için tam bir işletim sistemine gerek yoktur, çünkü farklı uygulamalar yüklemeyecek veya çeşitli aygıtları bağlamayacaksınız, bu nedenle küçük CPU'lar sadece çok basit bir işletim sistemi veya belki de bir "görev zamanlayıcı" kullanır. Farklı görevler sensör okumaları almak, düğmelere basılmasını beklemek ve bir ekranı güncellemek olabilir. Çok basit uygulamalar için CPU'nun tüm görevleri yerine getirmesi için bolca zamanı vardır, bu yüzden her birini sırayla yapar, ki bu da "yuvarlak robin" yaklaşımı olarak da bilinir. Daha sofistike zamanlayıcılar görevlerin önceliğini dikkate alır.

Temel nokta, her CPU'nun güç açıldığında her zaman çalıştırılabilecek bir koda sahip olması gerektiğidir. Bu kod genellikle nispeten küçük bir "salt okunur" bellekte veya ROM'da saklanır, ancak modern CPU'lar bellenimi "çoğunlukla okunan" bir Flash ROM'a yerleştirir. Bu şekilde saklanan kod CPU için "bellenim" dir.


6

Sorunuzda bazı yanlış anlaşılmalar var gibi görünüyor.

Bellenim, sabit bir biçimde, artık çoğunlukla flash (yeniden yazılabilir) ROM'da olan düz (bir kez yazma veya maske ile programlanmış) bir ROM'da kullanılan bir yazılımdır. Bazı sistemlerde bu bellenim mevcut tek yazılımdır, diğerlerinde (normal bir PC gibi) ana işlevi diğer yazılımı yüklemektir.

Bir uygulama bir işletim sisteminin kontrolü altında çalışabilir veya bir işletim sistemi olmadan çalışabilir. İkinci duruma genellikle 'çıplak metal' denir: uygulama, aralarında hiçbir donanım 'metal' ile hiçbir şey olmadan çalışır. İşletim sistemi tarafından gerçekleştirilen işletim sistemi durumunda olan işlevler, örneğin dosya sistemi işleme ve çoklu iş parçacığı için hükümler, hala çıplak metal bir sistemde, ancak uygulama ile bağlantılı kütüphaneler biçiminde mevcut olabilir. .

Yazılımın birçok farklı mimarisi olabilir. Çok basit bir form 'girdi al, işlem yap, çıktı yaz' döngüsüdür. Daha karmaşık formlar, yoklama, kesmeler veya çoklu iş parçacığı içerebilir. Hem işletim sistemine bağlı hem de çıplak metal uygulamaları bu mimarilerin tümünü kullanabilir.

Bu üç sorun birbirinden bağımsızdır: örneğin aygıt yazılımı çıplak metal çalıştırabilir ve çok iş parçacıklı bir mimari kullanabilir. Veya bellenim, basit bir yap-yap-döngü döngü mimarisini kullanan bir disketten (üzgünüm, flash kart ..) bir uygulama yükleyen bir işletim sistemi olabilir.


5

İşletim sistemi ve CPU farklı kavramlardır. Evet, makinenin kalbinde en önemli donanım olan bir CPU var. Bellenim talimatlarını bellenim belleğinden alır ve gerçekleştirir. (Hatta küçük sistemler birden fazla işlemci yoluyla paralel yürütülmesi için var olması için günümüzde yaygın olduğu; biraz ilgili özel olarak konuşmak modası geçmiş, böylece . CPU)

Bellenim, kalıcı (veya belki de salt okunur) bellekte saklanan yazılımdır. Bu tür bir bellekte olduğundan, makine açıldığında ürün yazılımı kullanılabilir. Makine açıldığında neredeyse anında ürün yazılımı yürütmeye başlayabilir veya bazı küçük önyükleme programı (kendi ürün yazılımı) daha büyük ürün yazılımını flash gibi bazı elektronik depolama alanlarından alabilir ve RAM'e koyabilir ve sonra yürütebilir. Günümüzde flash depolama alanının modern kullanımı, bazen bir yükseltme prosedürüne atıfta bulunarak bazen "yeni ürün yazılımının yanıp sönmesi" ifadesini duyabilirsiniz. Bellenimin bu şekilde kolayca yükseltilmesi gerekmez. Bir entegre devre yongasıyla gelebilir, böylece bir cihazın yeni bellenime güncellenmesi, bir entegre devrenin ("EPROM yongası") bir soketten çıkarılmasını ve yenisinin takılmasını içerebilir. PC BIOS ' eskiden bu şekilde ve diğer cihazların sayısıyla güncellenirdi. Bu kelimenin tam olarak nereden geldiği. Bazı insanlar, bir donanım güncellemesine benzeyen bir yonga veya devre kartını değiştirmek için bir programı "yazılım" olarak adlandırmaktan rahatsız oldular. Bu nedenle "bellenim" üretildi: yazılımdan daha zor "değiştirmek" bir şey.

Bellenim "tam gelişmiş" bir işletim sistemi olabilir. Örneğin, Tomato kablosuz yönlendiriciler için Linux tabanlı bir bellenimdir:

http://www.polarcloud.com/tomato

Domates'e ssh ile giriş yapabilir ve bir Linux istemi alabiliriz. Bu yüzden gelişmiş bir işletim sistemidir ve ürün yazılımıdır. Ancak yönlendiricinin içinde bir sabit disk varsa ve aynı işletim sisteminin başlangıçta bu diskten yüklenmesi gerekiyorsa, artık yasal olarak bellenim olarak adlandırılamazdı. Bellenim, flash bellek veya EPROM yongaları gibi, güç verildiğinde hemen işlemci tarafından erişilebilen elektronik bir depoda olmalıdır.

Günümüzde birçok tüketici cihazında yükseltilebilir ürün yazılımı vardır. Örneğin, bir dijital kameranız varsa, web sitesini bulmalı ve fabrikada kurulmuş ürün yazılımında bulunabilecek bazı sorunları gideren daha yeni bir ürün yazılımı sürümünün bulunup bulunmadığını görmelisiniz. Bugünlerde nispeten teknik olmayan son kullanıcılar için bile bellenimi güncellemek kolaydır. Yukarıda bahsedilen Domates, fabrika belleniminin yerini alan üçüncü taraf açık kaynaklı bellenime bir örnektir.

"İşletim sistemi" kelimesi, makinenin kaynaklarını yönetme ve programlara makul düzeyde üst düzey hizmetler sağlamada belirli bir derecede karmaşıklık ve bütünlük sağlayan bir kontrol programını ifade eder: dosya sistemleri, ağ protokolleri, bellek ve süreç yönetimi gibi özellikler, cihazlara yüksek düzeyde erişim ve belki de bir kullanıcı modeli ve güvenlik. Bunların hepsinin bir işletim sisteminde bulunması gerekmez. Genellikle bellek, süreç yönetimi ve I / O anahtardır. Kontrol programı diğer programların yürütülmesine izin verirse, bu programlara kendi kaynaklarıyla ilişkilendirildikleri bir kimlik verirse ve işlemciyi ve belleği yönetmek ve G / Ç yapmak için onlara hizmet sağlıyorsa, bu kontrolü çağırabiliriz. işletim sistemini programlayın.

Merak ettiğiniz için, bilgisayar mimarileri hakkında William Stallings veya Hennesy ve Patterson gibi kitaplardan gerçekten keyif alabilirsiniz.


4

En temel seviyede, CPU sadece kendi dahili durumunu değiştiren ve / veya bir miktar çıktı üreten bir dizi talimattan geçen bir durum makinesidir. Bu kavramı soyutlayın ve çok yüksek bir seviyeye getirin ve Intel'den en son masaüstü ve mobil işlemci tekliflerini elde edin. Ancak temel prensip oldukça basittir - yaklaşık bir düzine TTL entegre devreye sahip çok temel bir işlemci oluşturabilirsiniz ve masaüstü hesap makinelerinde ve trafik ışığı denetleyicilerinde kullanılmak üzere tasarlanan 1970'lerin başlarından ortalarına kadar mikroişlemciler bundan çok daha karmaşık değildi . Açıkçası, Moore yasası bunu başka bir düzeye taşıdı ve modern yüksek performanslı işlemciler 35 yıl önce atalarına çok az benziyorlar.

Yine de, işlemciler için (genellikle mikrodenetleyiciler olarak adlandırılır), kesme kenarından önemli ölçüde daha az karmaşık olan büyük bir pazar var; bunlar, örneğin USB sürücünüzde bulabileceğiniz işlemci türleridir. Sorunuzu ele almak için - bahsettiğiniz cihazların bazı işlevlerinin bir ASIC tarafından ele alınması mümkündür, ancak meslektaşlarınız iş parçacıkları ve kesmelerden bahsediyorsa, bu genellikle bir mikrodenetleyici üzerinde bir süre ilgili bir CPU olduğunu gösterir. . Bunlar gerçekten de tam teşekküllü bilgisayarlar, bir ALU'ya, kayıtlara, bir program sayacına, bir yıla vb.Gibi anlamlıdır, ancak çok düşük güç ve çok ucuzdurlar ve sadece birkaç düzine talimatı olabilirler. yüzlerce x86 mimarisi.

Bu cihazların herhangi bir tür işletim sistemine veya herhangi bir bağlam anahtarlama kavramına sahip olmasına gerek yoktur (bazı durumlarda mümkün olsa da), uygulaması için gerekli olan tek şey, programındaki talimatları takip etmek diğeri, ve dediğin gibi gerçekten çok basit bir program olabilir.


1

Bazı izinler eksi, bir CPU'nun bir işletim sisteminden veya başka bir programdan kod yürütüp yürütmediğini bilemez. Bir CPU için, sadece bellekten getirilen talimatları yürütüyor.

Bir işletim sisteminin ne olduğunu unutmayalım: her zaman bellekte olan ve birden fazla görevi güvenli bir şekilde yönetmekten ve zamanlamaktan sorumlu bir program. Bağımsız bir görevi tanımlamak için kullandığımız terminoloji bir "süreç" tir. İşletim sistemleri süreçlerin kaynakları (donanım, bellek vb.) Güvenli bir şekilde paylaşmasına izin verir ve bunların yürütülmesini zamanlar ve önceliklendirir, ayrıca süreçler arası iletişim gibi özellikler de sağlar. Bütün bunlar, birden fazla eşzamanlı görevi destekleme ihtiyacından kaynaklanmaktadır. Bazı izin düzeyleri eksi, CPU için sadece işletim sistemi işletim sistemi veya işletim sistemi yok - farkı bilmiyor.

Mikrodenetleyici için bellenim yazdığımızda, genellikle bu ek programı (OS), görevleri bizim için yönetmek için her zaman bellekte bulundurmayız. Neden? Birden fazla eşzamanlı göreve ihtiyaç duymadığımız için - gömülü sistemler genellikle sadece bir uygulamayı iyi yapacak şekilde tasarlanır ve programlanır. Bunu çok esnek olması ve her türlü uygulamayı aynı anda çalıştırabilmesi beklenen bir PC ile karşılaştırın.

Artık bir işlemin başka bir işlemin bellek alanını kaplaması ve kesmesi ya da bir işlemin tüm CPU zamanını sarması endişesi yoktur. Bunun nedeni, sistemde çalışan tek program olması nedeniyle tüm kaynaklara erişimi olan tek bir program yazmamızdır ve bu nedenle onu yönetmek için işletim sistemi gibi başka bir programa ihtiyacımız yoktur. Yine, CPU'ya, sadece bellekten getirilen talimatları yürütüyor, farkı söyleyemiyor, işletim sistemi veya işletim sistemi yok.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.