İşletim Sistemi, yönetmesi gereken aynı yonga üzerinde nasıl çalışabilir?


17

İşletim Sistemleri hakkındaki okumalarımdan (Wikipedia, teknik siteler vb. Temel materyalleri okuyarak) İşletim Sisteminin, programların ve uygulamaların donanımla etkin ve güvenli bir şekilde etkileşime girmesini sağlayan bir program olduğunu öğrendim.

Ancak, işletim sisteminin kendisi çalıştırılması gerektiğinde bilgisayarın çalışmasını nasıl denetlediğiyle ilgili kafam karıştı.

Ne demek istiyorum? Bir İşletim Sisteminin çalışmasını hayal etmemin yolu, bir bilgisayarda iki CPU olması. Biri işletim sistemini her zaman çalıştıran diğeri ise işletim sistemini bilgisayarı çalıştırmak için kullanıyor. Ancak, işletim sisteminin diğer işlemlerle aynı CPU'da çalıştığı ortaya çıkıyor. Bu, çalışanları ile aynı üretim hattında çalışmak zorunda olan bir yöneticiye benzer ve elektrikli aletleri sadece başka bir çalışan onlarla yapıldığında kullanabilir. Çok etkili bir yönetici olmayacaktı, çünkü çalışanı biraz disiplinsiz olsa bile emir verme yeteneğine sahip olmayacaktı.

Öyleyse işletim sisteminin zamanın sadece bir kısmını diğer tüm işlemler arasında paylaşılması gereken aynı CPU üzerinde çalıştırması nasıl olabilir? Bu nasıl sonuçlanır?


1
Bir yönetici, çalışanlarının elektrikli aletlerini kullanmamalıdır! Bunun yerine, çalışanların çalışan elektrikli el aletlerine sahip olduğundan emin olmak zorundadır.
MSalters

Yanıtlar:


15

Modern CPU'lar işletim sisteminin belli bir dereceye kadar farkındadır. Onlardan ilk talep edenler için bazı "elektrikli aletler" sağlarlar. Genellikle bu, önyükleme yükleyicisidir ve daha sonra kontrolü işletim sistemine devreder. Biri , bir işlemin ekstra ayrıcalıklarla geri kalanı arasında ayrım yapmak için genellikle "çekirdek modu" ile "kullanıcı modu" veya "halka 0" ile "halka 3" den bahseder .

Bu "elektrikli aletler" kaynak yönetimi için belirli ayrıcalıklardır: Belleği, donanıma erişimi ve kullanıcı seviyesi kodunun kesintisiz olarak ne kadar süre çalıştırılabileceğini kontrol edin.

Aşağıdaki olaylardan biri gerçekleştiğinde CPU işletim sistemini özel ayrıcalıklarıyla yürütür:

  1. Bir kullanıcı modu işlemi, denetimi çekirdek modu işlemine açıkça verir. Buna sistem çağrısı denir .
  2. Çekirdek modu işlemi, belirli olaylara kaydolmak için özel ayrıcalıklarını kullanabilir (örn. Harici donanım CPU'ya özel bir sinyal gönderir veya kullanıcı alanı işlemi ayrılmış bir kaynağa erişmeye çalışır). Böyle bir durum meydana geldiğinde, CPU kullanıcı modu işlemini derhal durdurur ve kontrolü çekirdek modu sürecini teslim eder. Genellikle kişi bir kesintiden söz eder .

Böylece işletim sistemi aynı çip üzerinde çalışabilir çünkü çip bunun için üretilmiştir. Kendisine özel ayrıcalıklar ayırabilir. CPU bu özel ayrıcalıklar olmadan diğer tüm kod parçalarını her zaman kesebilir ve kontrolü işletim sistemine devredebilir.

Çok sınırlı desteğe sahip bazı yongalar (örneğin bir mikro denetleyici ) özel ayrıcalıklı kod için bu desteğe sahip değildir. Bu yongalar genellikle işletim sistemi olmadan çalışır. Donanıma doğrudan erişebilen, donanım kesintilerine yanıt vermesi gereken ve herhangi bir kaynağa her zaman erişebilen tek bir büyük program vardır. Bu program bir hata yaparsa, genellikle her şey çöker.


17

En ilkel biçimleriyle, işletim sistemleri iyi davranan ve kontrolü zaman zaman işletim sistemine geri veren süreçlere dayanır. Bir süreç iyi davranmazsa, aslında işletim sisteminin donması olabilir.

Ancak çoğu CPU kesintiye uğrar : bir kesinti mevcut işlemi duraklatır (preemption) ve kontrolü işletim sistemine geri verir. Kesintileri belirli aralıklarla gerçekleşecek şekilde zamanlayabilir veya harici olarak tetikleyebilirsiniz (örneğin sıfırlama düğmesine basarak).

Temel olarak CPU, işletim sistemi ile çalışma süreçleri arasında inanılmaz derecede yüksek bir hızda geçiş yapar. Ayrıca, CPU'lar "kullanıcı modu" ve "çekirdek modu" na sahiptir. İşlemler kullanıcı modunda ve işletim sistemi çekirdek modunda çalışır. Kullanıcı modunda çalışmak, bir işlemin kısıtlanmış komutları (GÇ gibi) yürütmesini engeller. Bir işlem diske yazmak istiyorsa, işletim sisteminden bunu yapmasını istemelidir. İşletim sistemi çekirdek moduna geçer ve işlem adına yazma işlemi yapar (işlemin gerekli izinlere sahip olduğundan emin olduktan sonra).


7
@Imray Gerçekten değil, CPU için işletim sistemi sadece bir kod daha. Bununla birlikte, CPU, bir işletim sisteminin yaratıcıları tarafından kullanılmak üzere tasarlanmış birçok özelliğe sahiptir.
Tom van der Zanden

3
"Farkında" nın doğru terminoloji olup olmadığını bilmiyorum, ancak CPU'nun bir işletim sistemi çalıştırmaktan başka bir nedeni yok. Kesinlikle tamamen bağımsız değil. Aslında, CPU, çeşitli modlarını yönetmek ve aksi takdirde ne yapacağını söylemek için işletim sistemine tamamen bağımlıdır.
Tiftik

2
@Mohair İşletim sistemi olmadan çalışan birçok mikro denetleyici var, bunlar CPU olarak sayılıyor mu?
Tom van der Zanden

2
"bunlar CPU olarak sayılıyor mu?" Tabii ki yapıyorlar. Farklı kullanıcı ve çekirdek halkaları olmasa da ilk bilgisayarımdaki 6502 de öyle yaptı ve pokeher türlü yaramazlık için komut satırından da olabilirsiniz .
dmckee --- ex-moderatör kedi yavrusu

2
@TomvanderZanden tam olarak nasıl the CPU switches back and forth between running the OS and running processes? Anahtarı ne tetikler?
jnovacho

1

Mikroişlemcinin kullanıcı alanını ve çekirdek alanı kodunu çalıştırmak için iki farklı işlemciye ihtiyacınız yoktur. Temel olarak, Bios yüklerinizi Bootloader'a (55aa bootloader imzasını sona erdiren diskte 512kb kod) yüklediğinizde ve bu bootloader aracılığıyla çekirdeğiniz ram'e yüklenir ve siz bilgisayarınızı kapatana kadar sonsuza dek çalışır. Çekirdeğiniz hafızayı yönetir ve koç üzerinde bulunan çekirdek kodunuzun kullanıcı alan kodu tarafından üzerine yazılmasına izin vermez. Bu amaçla, bu sistem çağrılarını kullanarak kullanıcı alanı kodunun çağrıldığı sistem çağrıları vardır ve ram ve çalıştırmaya başlamak için kullanıcı alanı kodunuzu ekleyin. İşletim sistemlerinde bu kavram bir Bellek Yönetimi olarak araştırılmaktadır. İşte okuyabileceğiniz bağlantı başlamak için çok iyi https://www.cs.bham.ac.uk/~exr/lectures/opsys/10_11/lectures/os-dev.pdf


0

Diğer cevaplar üzerine inşa etmek için, çekirdeğin kendisinin bir süreç değil bir yönetim kodu olduğunu düşünüyorsanız bunu anlamak daha kolaydır. Herhangi bir kullanıcı işlemi, çekirdek modunun bir bölümünü kullanarak kullanıcı modundan çekirdek moduna geçebilir ve çekirdek kodunu (ayrıcalıklı talimatlar) yürütebilir. Ardından işlem kullanıcı moduna geri dönebilir ve kullanıcı alanında tekrar çalışabilir.

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.