در روش لایهای سیستم عامل به تعدادی سطح یا لایه تقسیم میشود که هر کدام در بالای لایه پائین تر قرار میگیرند. مزیت مهم این روش پیمانهای (modularity) بودن آن است . یعنی لایهها به گونهای تقسیم بندی میشوند که هر لایه فقط
توابع و سرویس های لایه پائین تر را استفاده میکند. بدین ترتیب هر لایه را میتوان مستقل از لایههای دیگر طراحی کرد , بسط دادو خطایابی کرد.
هر سطح با استفاده از اعمال لایههای پایین تر پیاده سازی میشود ولی آن سطح نمیداند که اعمال سطح پایین چگونه پیاده شدهاند و فقط باید بداند که آن اعمال چه میکنند. بدین ترتیب هر لایه مسائلی را از لایههای بالاتر مخفی میسازد.
اولین سیستم لایهای , سیستم THE با 6 لایه بود: لایه صفر مسائل زمانبندی(scheduling)
پردازنده را انجام میدهد یعنی اینکه در هر لحظه
CPU در اختیار کدام برنامه باشد . لایه یک مدیریت
حافظه (اصلی و جانبی) را بر عهده دارد . لایه دو ارتباط بین هر
پروسس و
کنسول اپراتور را برقرار میسازد.
لایه سه مدیریت دستگاههای I/O و
بافر کردن اطلاعات را برعهده دارد . در بالای این لایه هر
پروسس به جای دستگاههای I/O حقیقی و پیچیده با دستگاههای ساده و مجازی I/O سرو کار دارد . در لایه چهار برنامههای کاربران اجراء میشوند که هیچ نگرانی در مورد مدیریت پروسس ,حافظه, کنسول و I/O ندارند. در لایه پنجم پروسس اپراتور سیستم قرار میگیرد.
مشکل اصلی در روش لایهلایه, تعریف مناسب لایههای مناسب است . از آنجا که یک لایه فقط میتواند لایههای پایین تر را به کار برد برای طراحی آن باید دقت زیادی به خرج داد. مشکل دیگر این ساختار این است که نسبت به انواع دیگربازدهی کمتری دارند .
هنگامی که دستورات از لایه بالا به سمت پایین حرکت میکنند, در هر لایه پارامترهای دستور ممکن است , از نظر صحت بررسی شده و یا تغییر یابند .لذا هر لایه قدری بار سر (overhead)به سیستم اضافه میکند و در نتیجه فراخوانی سیستمی نسبت به سیستم غیر لایهای بیشتر طول میکشد. لذا در سالهای اخیر سعی شده است لایههای کمتری با قابلیت عمل بیشتری طراحی شود .
به عنوان مثال محصول اولیه
windows NT با لایههای زیاد, کارایی کمتری نسبت به ویندوز 95 داشت . در NT4.0 سعی شد لایه ها به همدیگر نزدیکتر و مجتمع تر شوند تا کارایی بیشتر گردد.
سیستم
MULTICS به جای لایهها به صورت یکسری حلقهها متحدالمرکز سازماندهی شده است بطوریکه هر حلقه داخلی از امتیازات بالاتری نسبت به حلقه خارجی خود بهره مند میباشد.اگر یک رویه از حلقه خارجی بخواهد یک رویه از حلقه داخلی را صدا بزند .
بایدیکی را فراخوانهای سیستمی را اجراء کندو اعتبار پارامترهای این دستورالعمل قبل از اجراء به دقت بررسی میشود. مثلاً یک استاد برنامه گرفتن امتحان ونمره دادن را در حلقه n مینویسد و برنامه دانشجویانش در حلقه n+1 اجراء میشود, بدین ترتیب دانشجویان نمیتوانند نمره خود را تغییر دهند