オペレーティング・システム(1)

コンピュータアーキテクチャ

コンピュータシステムオペレータによって、制御装置、メモリ(すなわちRAM)、入力装置、出力装置。算術演算子データ、メモリ内のデータは、オペレータがコントローラによってメモリにデータを取得するために、前記コントローラによってメモリに格納された最後の操作のオペレータの結果は、プログラム命令及びデータは、典型的には、ときに、プログラムで構成されていますランタイム命令及びデータメモリに記憶され、メモリ内の命令アドレス情報データ、オペレータは、メモリ内のデータの位置を知っており、コントローラによってデータを取得するように、一般的なIOデバイスまたはノースブリッジによってサウスブリッジチップに接続され、ノースブリッジは、高速バス・コントローラなる:メモリとCPUをノースブリッジによって接続されています。サウスブリッジは、低速バスコントローラと呼ばれる:ノースブリッジサウスブリッジに接続され、周辺機器と一緒にサウスブリッジ、および、

簡単なPCのために、用語は、一度に1つのプログラムだけを実行することができますが、プログラムの内容やCPU時間を実行するための強力なPCのコンピューティングパワーは特に長くないので、可能性として、コンピュータのリソースを利用できるようにするために、 PCは、各プログラムが実行されている、複数のプログラムを実行する機能を持っている必要があります(コーディネータは、カーネルと呼ばれる必要があり、カーネルは、ハードウェア上で動作し、他の方法の上位層に提供される仮想ハードウェアリソースへのハードウェアリソースを管理しますアプリケーションに必要な(その理由は、アプリケーションがハードウェア上で直接実行される場合、このプログラムは、プログラムが起動されるときに互いに干渉することができるハードウェアの様々な特性を制御することができるということである、悪意あるプログラムは、他につながる可能性私たちは、統一されたリソースマネージャを必要とし、ハードウェアを使用するために、各プログラムはカーネルによって完了しなければならないすべてのプログラムを終了し、カーネルはプログラムがハードウェアに直接アクセスさせませんが、ハードウェアが提供するコンピューティングパワーを通じて、ものを言いましたシステムコール(システムコール)。できるだけ少ないシステムコールを聞かせするために、システムコールは、一番下やっているので、あなたが意味している一般的な単語としてこれらのインターフェイスを入れない場合は、関数を呼び出すことによって、システムをプログラムするプログラマは、非常に厄介で、多くのプログラム間のWordと同じで、両方を印刷する必要が優れてますWordとExcelは私たちのコンピュータ上の機能のほとんどは繰り返し、これらのリソースの余分なスペースの無駄を取る繰り返すようにバインドされていることを意味し、プリントモジュールを開発し、独自のを必要とします。そのために通常必要にOSのカーネルを提供することに加えて、ライブラリ自体は、アプリケーションであるが、この用途:カーネルは、このインタフェースと呼ばれるライブラリ(アプリケーション・プログラミング・インタフェースもAPIとして知られている)、この出力のうち、提供カーネルの出力を達成するために、より高レベルのコール・インタフェースを介してである自分自身を呼び出します交差点プログラムを実行していないプログラムは独立して実行し、実行するために他のプログラムによってのみ呼び出されたときに、そうか、カーネル・ライブラリ・コールを使用して、システム上で直接呼び出すためのライブラリを使用しない場合があり、ハードウェアを呼び出すために、プログラマーは(ライブラリの呼び出しは、LIBという。)することはできませんコール(システムコール)を達成するために)、ハードウェアリソース利用可能な点の計算能力 複数のアプリケーションのためのそのプロセス。

CPUの役割

メモリから命令をフェッチし、デコード命令の実行が完了した後、(実行可能なCPUコマンドに変換する約命令)命令をデコードし、CPU従って値部、復号部、3つの成分の実行ユニットを有し、プログラムの場合、複数の命令は、メモリ命令からCPU取り出し、命令を指すように命令カウンタを使用して、レジスタに格納されているが実行される、CPUコンテキストスイッチ、CPUは、状態のそれぞれを保存する必要がある場合、メモリに登録し、また、CPUの変更されたデータメモリに保存されています。

CPUの周波数は増加の後ろにすることはできませんので、マルチコアが存在しますが、プロセスは、唯一つのコア上で実行することができ、ときどのようにサーバー、およびだけ忙しいプロセスのコア、この時、初期のCPUのCPU周波数の効率を高めることによって増加させること我々は、スレッドが存在するように、各スレッドは、効率を向上させる、複数のコア上で実行されているように、プロセスは複数のスレッドに分割され、マルチコアの利点を再生することはできません。

 

ストレージシステム

機械的なハード - ソリッドステートドライブ - メモリ - 3つのキャッシュ - 二次キャッシュ - バッファ - レジスタ(低速 - 高速)

登録:CPUクロック、CPUの動作データレジスタの作業サイクルに近づけることができ、データ・レジスタは、キャッシュ場合は、発見されるキャッシュ・ルックアップで動作し、データをレジスタにロードされませんその上で検索し、キャッシュに結果をロードするために、二次キャッシュの検索で操作して、レジスタにロードされ、されることはありませんデータ。
/二次キャッシュ:通常の物理コアCPUプロプライエタリ、それぞれが/二次キャッシュの専用の物理コアを有し、
3レベルのキャッシュ:CPU物理コアを共有し、
メモリ:CPU共有物理コア。

IOデバイスの構成

IOデバイスは、一般に、制御装置からなり、装置自体がで構成されています。

コントローラ:マザーボード上のチップに集積化、またはチップ群は、対応するデバイスを制御する責任があります。コントローラは、オペレーティングシステムの実装のコマンドを受け取り、コマンド完了の責任である:装置に対応するデータを読み出すようOSをコントローラドライバは、操作デバイスに対応する物理操作にこのデータを読み取る必要があります;。

機器:単独で装置自体は、一般的にコントローラによって接続する必要があるシンプルなインターフェイスです。

ドライバ:通常、基本的なオペレーティングシステムの起動操作を完了するためには、そのようなコントローラのドライバは、一般的に、カーネルに統合され、いくつかのコントローラが直接マザーボード上に統合され、非常に汎用性、機器メーカーが開発しました。

レジスタ:各コントローラは、ハードディスクコントローラなどの通信に使用されるレジスタの数が少ないので、コントロールをアクティブにするために、セクタのアドレス、数、方向(ディスクデータへのデータの読み出しまたは書き込み)などを指定するために使用することができるしています、対応する操作装置とオペレーティング・システムに変換命令後の命令の基本的な動作からデバイスドライバは、放電動作を完了するために登録するための操作要求を受信し、それぞれがIOポートレジスタ、デバイスと呼ばれるレジスタのすべての組み合わせを示しましたIOポート空間。

各コントローラのCPU IOポートを特定する方法:

ホストの起動時に、各IOポートはホスト続いて、ポートが使用するバスIOポートスペースに登録する必要があり、すなわち、各IOポートは別のアドレスを有し、各コントローラのIOポートにアドレス指定されますIO各ポートのポート割り当て、CPUは、IOデバイスに対応するポートを介してアクセスすることができるが、CPU、デバイスに対応するデータを読み出すドライブに命令を送信するために、記憶装置に駆動指令信号がレジスタに理解することができます、そう登録またはIOポートアドレスは、CPUバスとIO装置によって運ば扱っている、デバイスが存在してもよいIOは、CPUは、ネットワークカード等のデータ処理のためのプロセスにデータをロードするために必要なデータがWebサービスにアクセスするユーザを受け取る受け取り要求、ネットワークカードのデバイスが要求を直接扱うことができない、LAN機器に到達するための要求は、この時間は、CPUが、できるだけ早くそのような信号を知ることができるようにする機構である、とカーネルのCPU活性化データは、カーネルによって制御される、対応するIOデバイスを読み聞かせなければなりませんCPUは、読み出したユーザの要求に応じた処理を開始します。

入力と出力の実装:

   1.待っブラインド:システムコールを開始するユーザプログラム、カーネルは、対応するデバイス・ドライバ・プロセスにコールに翻訳した後、IOデバイスドライバを起動し、連続ループデバイスをチェックし、装置が完成されているかどうかを確認します仕事;
   2.割り込み、通知を送信するためのイニシアチブを取ることができるであるIOデバイス、ブラインドを待つので必要はありませんが、そのような通知を割り込み、CPUのCPUコア取得通知割り込み要求するように実行することが可能である割り込みルーチンと呼ばれ、ホストデバイスそうそこプログラマブル割り込みコントローラは、通常、コントローラは直接CPU、信号到着通知CPUを通信することができます。(ホストが開始されると、各IOデバイスが登録割り込み番号を使用してコントローラを中断し、割り込み番号は、IOデバイスデータが到着すると、すぐにioの、データバス上のデバイスを、データを入れませんので、ユニークですこれは、CPUが割り込み要求に送信されたIOデバイス知らせて、割り込みコントローラCPUに通知するために、その後バスで、からの割り込み要求であるデバイスを決定するために、割り込みコントローラ、割り込みコントローラの割り込み番号への割り込み要求を発行し、その後コアCPUをアクティブにしますスイッチングプロセスは、現在実行されている(ただし、コンテキスト・スイッチ割り込みスイッチ)は、最初の終了時に実行されている元のカーネルプロセスは、CPU上で実行されているカーネルは、それらがデータ)を取得するIOデバイス上のカーネルによって来た
   ように。ワークフローカードデバイス:
   Webサービス要求が到着したユーザーが、カードはネットワークカードに独自のバッファ、パケットが割り込みをトリガするカードの後に到着したバッファ、およびパケットバッファを持って、カーネルの割り込み処理は、判断がありますデータを受信し、それはその後、カーネルバッファにメモリのカーネルバッファをデータバッファをコピーします 読み出しバッファである収納スペースの期間、読み取りがネットワーク要求パケットであることを出てきた後には、送信先アドレスは、プロセスが受信しているかを知るためにカーネルによってメッセージ、ポート番号を開くために自分自身始めている場合、ターゲットアドレスは、自分自身ではありません見ます処理。
 

  カーネルは、割り込みが2つの部分に分割される処理:
    割り込み部:CPUコアがアクティブスイッチングプロセスが現在実行されている(ただし、コンテキスト・スイッチ割り込みスイッチ)、その後、独自のカーネルによるCPU上で実行されているカーネルは、IOデバイスを取得しますデータ、カーネルバッファ内のデータ)、本来はCPUプロセスが終了する上で実行します。)(NICは、データパケットが割り込みが頻繁に性能に影響を与えるトリガーする受信ので、3つの方法があるだろう
    一部の割り込み:オリジナル場合CPUプロセスの実行時間は完了していない、カーネルはCPUからの撤退も、CPUはオリジナルのプロセスを実行し続け、この時間だけでなく、データ処理データを受信し、データ処理は、処理するためにスケジュールすることで、別のプロセスをスケジュールする必要があります。
   3.DMAメカニズム、ダイレクトメモリアクセスを使用すると、一部を中断する必要がある場合、CPUのDMAデバイスが通知され、あなたが使用するバス(制御バス、アドレスバス、データバス)10 DMA機器を告げ、その後、いくつかのためのメモリ空間を分割しましたDMAに使用される装置、デバイスは、データの読み出しが完了すると、データ・バッファからメモリへの放電を達成するDMAデバイスのDMA CPUへの割り込み要求、CPUデータを伝えることができるので、メモリにデータを受信することができるが受信されました、この時点では、唯一のカーネルは、CPU読み取られたデータが完了した通知します。時間の期間は、DMA装置によって使用することができます。(今、最も頻繁に必要なデータ伝送IOデバイスは、このような等のネットワークカード、ハードディスクドライブなどのDMAメカニズムを、持っています)

 

メモリ(すなわち、メモリ)

仮想アドレス空間(リニアアドレス空間)、すなわち、32ビットOS、各プロセスが利用可能である独自の4Gメモリを有する:Linuxシステム1Gにカーネルメモリに固定された底端部を使用して、3Gプロセスがメモリを使用し、
3Gユーザメモリ空間を分割します固定サイズのページ(4Kサイズ)に複数のフレーム、各ページフレーム単一ユニット外方に割り当てなど、物理メモリに対して、メモリ構成が実際にフレームと呼ばれることができ、当該プロセスのためのページと呼ばれる。したがって、すべてのプロセスが物理メモリ空間を得ることができ、連続的ではなく、継続的に仮想化することができます。

通过上图实现将每个线性地址空间映射到物理空间,即当一个进程申请使用内存时,要向内核发起系统调用,由内核在物理内存申请空闲的页框;线性地址空间和物理内存间由一个映射关系,当某一个进程在cpu上执行时,进程要取哪些数据,进程会告诉cpu取地址空间xxx中的数据,这里的xxx是线性地址,需要将xxx映射成物理内存地址才能读取到数据(这个映射关系保存在Task struct中),所以在一个进程发出地址请求之后,cpu必须要找相应进程的Task struct并装载映射表完成线程地址到物理地址的转换(这个动作是通过cpu中的MMU组件实现);这种转换关系会缓存在TLB中,提高下次查找的效率。

MMU:内存管理单元,是cpu上的一个组件,当某一进程要访问线性地址空间中某段数据时,这个进程会将这个线性地址空间的地址传给cpu,cpu本身知道通过这个地址是不可能访问到数据的,这时cpu通过MMU将这个地址转换成对物理地址的访问,从而cpu就能访问到数据,并将此时的映射关系保存在TLB中;

Task struct:每一个进程都有一个作业地址结构,这个作业地址结构其实就是内核为每个进程维护的一个数据结构(即一段内存空间:内核为了追踪一个进程,在内核的内存地址空间中通过链表的形式:保存进程id号、父进程id号、所使用的内存地址空间、所在的cpu、所打开的文件、内部的线程等);

 TLB(Translation Lookaside Buffer)转换检测缓冲区是一个内存管理单元,用于改进虚拟地址到物理地址转换速度的缓存。TLB是一个小的,虚拟寻址的缓存,其中每一行都保存着一个由单个PTE(Page Table Entry,页表项)组成的块。如果没有TLB,则每次取数据都需要两次访问内存,即查页表获得物理地址和取数据。

 shell

操作系统启动的时候,应用程序未必马上运行起来。只能说启动操作系统这些程序具备了运行环境,并没有运行。通常启动程序的方式有多种:比如操作系统启动后程序自动运行如一些服务等,也可手动启动。手动启动程序怎么去指挥计算机启动某个应用程序呢?怎么让操作系统去接受用户的命令去启动特定的某个应用程序,这时必需给操作系统提供一个特殊的应用程序——shell:它是整个操作系统的外壳,是能够实现接收用户指令理解用户命令并且将它传给内核,由内核指挥着应用程序启动并操作应用程序的界面。shell分为两种:GUI(图形界面);CLI(命令行)。shell作用:1.提供能够让用户进行交互的界面;2.将用户的指挥行为翻译为计算机能够理解的命令。

 

おすすめ

転載: www.cnblogs.com/lriwu/p/8953259.html