しかし、その修正でもオブジェクトのすり替えは可能で、似たオブジェクトを作るAPIを利用してセキュリティを突破できると証明された。Windows XPまでのNT系でセキュリティ上重要なAPIではオブジェクト自身のアドレスではなく、そのオブジェクトを識別する値をユーザープロセスに渡し、不正なオブジェクトへのすり替えが出来ないように修正されていった。しかし、この修正はパフォーマンスに影響を与える事から普段頻繁に使われるAPIでは行われていない。例えばディスプレイコンテキストにはセキュリティ修飾子が無く、ウィンドウステーションによって一括管理する簡易セキュリティで代用されている。このため、特権の昇格やカーネル内での任意コード実行といったセキュリティホールの報告が散見される。 Windows Vistaでは当初マイクロソフトはWindows APIを廃止しようと目論んでいた。これはWindows APIが持つ欠点を解消する最も確実な手段と言える。しかし、この大胆な計画はまったく賛同を得られずマイクロソフトは撤回した。その代わり、Security Development Lifecycle プロセスでWindows APIの弱点を洗い出して手当たり次第修正し、さらにWin32kやNTカーネルに組み込まれていたモジュールを切り離し、ユーザ空間で動作するWindowsサービスモジュールにする事でWindows APIの根本的な弱点を封じ込める修正を行った。この改修の成果は、Windows Vista発売以後、Windows Updateで提供された修正モジュールがWindows XPよりも少ないという形で現れている[3]。 Windowsに発見されたセキュリティホールなどの不具合に対して、頻繁に修正モジュールがリリースされている。これらの修正モジュールの集成して動作検証したパッケージをService Pack(サービスパック 略称:SP)という形で発行している。似たようなものにService Releaseと呼ばれるパッケージも発行している。 SPを適用することによってセキュリティの強化、新機能の追加などのメリットを得られる。ただし、システムに若干の改変を加えるために、一部のアプリケーションの動作に支障をきたすなど問題を引き起こすこともある。また、特定のサービスパックのバージョンに依存するソフトウェアも存在する。現にWindows XPにSPを導入したのが原因で、ヤマハ製のサウンドカードが搭載されたパソコンでサウンドがならなくなるトラブルもあった [4]。これらの問題から特に企業においては適用されないこともあるが、マイクロソフトは強く適用を推奨している。 また、Windows XP SP2には「Microsoft Windows XP Service Pack 2 セキュリティ 強化機能搭載」という正式名称が付けられている。これには、マイクロソフトはセキュリティに力を入れていなかったという従来の方針を転換し、今後はセキュリティを最重要課題として、ユーザーの印象を変えていくという意味合いがある。 マイクロソフトは、Service Packが適用されていないバージョンのみを指す場合に『RTM』や『Service Pack 0』と表記する。 マイクロソフト認定プロフェッショナル(Microsoft Certified Professional, MCP)はシステムエンジニアを対象にした資格制度である。オペレーティングシステムは勿論、Windows ServerやSQL Server、セキュリティ、ネットワークといったWindowsでのネットワーク設計・構築・運用・保守や、Visual Studioを使ったアプリケーションの開発を主眼に据えた試験を行っている。 50科目以上用意されているMCPの科目のうち、どれか1科目に合格すればMCPの認定を受けることができるが、複数の科目に合格することにより、MCPの上位資格の認定を受けることができる。ただし、各上位資格ごとに合格しなければならない科目が定められている。 本資格は一部の科目を除きシステム管理・運用を対象にしたものである。IT資格の中では比較的知名度が高く受験者が多いため、様々な理由によりスキルの低い受験者でも合格できる場合がある。それが合格率の向上に反映され、試験の難易度を押し上げ、「試験に特化した学習が必要で、能力が正しく反映されず、資格本来の目的から逸脱している」といった指摘がある。そのため、頻繁に問題を変更する、暗記では対処できないシミュレーション問題を導入するなどの対策が採られている。 MCPが技術者向けの資格であるのに対し、マイクロソフト認定アソシエイト(Microsoft Certified Associate, MCA)は営業職向けの資格ともいえる。日本のみで実施されている資格制度である。 開始当初は合計3科目が実施されていたが、2004年4月の改定で1科目追加され、現在計4科目が実施されている。全科目に合格するとMCA Masterの資格を得ることができる。また、近年では新人研修にMCAプログラムを利用している企業が増えて来ている。 カーネル(英:Kernel)とは、看護師 求人 に設計されたオペレーティングシステム (OS) の中核となる部分である。システムのリソースを管理し、ハードウェアとソフトウェアコンポーネントのやりとりを管理する。 オペレーティングシステムの基本コンポーネントとして、カーネルはメモリ、CPU、入出力を中心としたハードウェアを抽象化し、ハードウェアとソフトウェアがやり取りできるようにする。また、ユーザープログラムのための機能として、プロセスの抽象化、プロセス間通信、システムコールなどを提供する。 これらのタスクはカーネルによって方式が異なり、設計も実装も異なる。モノリシックカーネルは全てを一つの仮想アドレス空間に格納されたコードで実行して性能を向上させようとする。マイクロカーネルはサービスの大部分をユーザー空間で実行し、コードの保守性とモジュール性を向上させようとする[1]。多くのカーネルはこの二つのカテゴリのいずれか、あるいは中間である。 全てではないが、多くのデザイン会社 はカーネルを内包する。ハードウェアとソフトウェアの間の通信を管理するソフトウェアとしてのカーネルは、性能、メモリ効率、セキュリティ、プロセッサのアーキテクチャなどが複雑に絡んだ問題への妥協的解答である。 多くの場合、ブートローダーがカーネルを特権モードのプロセスとして起動する[2]。しかし、初期化が完了すると、カーネルはいわゆるプロセスとしては存在せず、ディスクアクセスなどの高い特権レベルを必要とする処理を必要としたときにユーザプログラムから呼び出される機能の集合体として存在することになる。カーネルの処理の流れはユーザープロセスの処理の流れの延長上にあり、システムコールによってカーネルに処理が渡り、終了するとユーザーに戻っていく。初期化時のカーネルの処理の流れは「アイドルプロセス」とか「collects」と呼ばれ、プロセッサが何もしていないときに実行される。 カーネル開発はプログラミングの中でも複雑で難しいタスクのひとつと考えられる。オペレーティングシステムの中核部であるということは、高い性能を要求される最重要なソフトウェアであり、正しく設計し実装することは難しい。カーネルはユーザプログラムの互換性や移植性を考慮する必要などから、設計が制限されることもあり、そのことがさらに開発を難しくしている。 カーネルの仕事はコンピュータのリソースを管理し、他のプログラムがそれらのリソースを使って動作できるようにすることである。コンピュータの最も基本となる部品はCPUまたはマイクロプロセッサであり、それらが実際に様々なプログラムをカーネルの管理下で実行する。他の重要なリソースはコンピュータのメモリであり、実行すべきプログラムがそこにロードされ、プログラムが使用するデータも家庭教師 される[3][4]。さらにデバイスへのアクセスを可能とするため、カーネルはマザーボードの入出力も管理しなければならない[5]。最終的にカーネルはそれらのサービスにユーザープログラムがアクセスする手段を提供しなければならない。 カーネルの主な仕事はアプリケーションの実行を許可し、ハードウェア抽象化などの機能によってそれをサポートすることである。アプリケーションを実行するため、カーネルはアプリケーションのコードを含むテレマーケティング ルをメモリにロードし(場合によってはそのための仮想空間を設定する)、プログラムのためのコールスタックを設定し、そのプログラムの所定の位置に制御を渡すことで実行を開始する。 マルチタスク可能なカーネルは、ユーザーから見て実際にそのコンピュータが同時実行できるプロセス数よりも、多数のプロセスが同時並行して実行されているかのように見せかける。一般にシステムが同時並行して実行できるプロセス数は、そのシステムの持つCPU数に等しい。 マルチタスクシステムでは、カーネルは各プログラムにタイムスライス(そのプログラムがCPU上で実行される連続時間)を与え、プロセスからプロセスへと高速に切り換えていくので、ユーザーから見ればそれらのプロセスが同時並行して実行されているように見えるのである。カーネルは次に実行すべきプロセスを決定し、タイムスライスの長さを決定するスケジューリングアルゴリズムを持つ。一般にプロセスには優先度が設定される。カーネルはそれらのプロセス間の通信手段も提供する。これはプロセス間通信(IPC)と呼ばれ、パイプ、共有メモリ、ソフトウェア割り込みなどがある。