نحوه راه اندازی گوشی های هوشمند و رایانه های شخصی پرتال اطلاعاتی
  • خانه
  • ویندوز فون
  • در مورد توسعه سیستم عامل های داخلی. "هیچ دلیلی برای توسعه سیستم عامل خود وجود ندارد" ساختار و عملکرد سیستم عامل

در مورد توسعه سیستم عامل های داخلی. "هیچ دلیلی برای توسعه سیستم عامل خود وجود ندارد" ساختار و عملکرد سیستم عامل

آندری آننکوف

آکادمی آکادمی علوم روسیه، مدیر موسسه برنامه نویسی سیستم آکادمی علوم روسیه، رئیس بخش برنامه نویسی سیستم دانشگاه دولتی VMiK مسکو، رئیس انجمن نرم افزار آزاد روسیه (RASPO) ویکتور ایوانیکوف به ما گفت: خبرنگار در مورد سطح علوم بنیادی روسیه، مشکلات آموزش پرسنل صنعت IT و نظرات خود را در مورد آینده اتاق های عمل سیستم ها بیان کرد.

- برنامه نویسی سیستم از نظر مردم عادی سیستم عامل ها، کامپایلرها ...

سیستم های مدیریت پایگاه داده (DBMS) و محیط های توسعه بیشتر. من نمی گویم که "برنامه نویسی سیستم" یک اصطلاح ثابت است. در دهه 60 ما به کارهایی که انجام می دادیم می گفتیم، اما آنچه را که شما ذکر کردید انجام دادیم. زمانی که آندری نیکولاویچ تیخونوف دانشکده ریاضیات محاسباتی و سایبرنتیک (VMC) را در دانشگاه دولتی مسکو ایجاد کرد، سه بخش برنامه نویسی ایجاد کرد. یکی از آنها به نام دپارتمان برنامه نویسی سیستم به ریاست میخائیل رومانوویچ شورا-بورا بود. اوایل دهه 90 از من خواست که در این پست جایگزین او شوم. بخش چه کاری انجام می دهد؟ دقیقا همان چیزی است که شما لیست کرده اید.

آیا ایده دیگری درست است: برنامه نویسی سیستم در کشور ما پس از تصمیم گیری برای ایجاد یک کامپیوتر ES به یک تجارت ناامید کننده تبدیل شد. در مورد کپی کردن IBM / 360؟

تا حدی حق با شماست این نه تنها برای رایانه‌های ES، بلکه برای رایانه‌های SM که از دستگاه‌های DEC کپی می‌کردند نیز صدق می‌کند. این امر مهندسین ما را به شدت محدود کرده و دامنه برنامه نویسان سیستم ها را تحت فشار قرار داده است. اگرچه باید بگویم که مدارس ما در زمینه کامپایلر و سیستم عامل بسیار قوی بودند. فن آوری های برنامه نویسی نیز به ویژه برای کاربردهای دفاعی بسیار توسعه یافته بودند. آنها برنامه های بسیار بزرگی بودند و شما باید قادر به انجام آنها بودید. تا آنجا که به سیستم های مدیریت پایگاه داده مربوط می شود، آنها خیلی بزرگ نیستند.

- چرا روسیه سیستم عامل خود را ندارد؟

پروژه های تحقیقاتی البته وجود داشت. اما تقاضای داخلی وجود ندارد. لینوکس در سال های اخیر محبوبیت بیشتری پیدا کرده است و ما تیم هایی داریم که در این پروژه مشارکت دارند. زیرساخت توسعه وجود دارد، شما می توانید در آن کار کنید. زیرا باید از واقعیت پیش بروید: بازار سیستم عامل های روسیه (OS) کوچک است و دلیلی برای توسعه سیستم عامل خود وجود ندارد.

لینوکس مسیر اصلی توسعه سیستم عامل هاست و ما باید در آنجا جایی بگیریم، آیا شما را درست متوجه شدم؟

آره. سیستم عامل یک برنامه کوچک است. خوب هفت میلیون خط اما نرم افزار کاربردی روی آن وجود دارد. یک سیستم عامل جدید به این معنی است که برنامه ها باید بازنویسی شوند. این چه فایده ای دارد؟ لینوکس را می توان به صورت صنعتی استفاده کرد، کار در آن کاملاً امکان پذیر است. برای پروژه های تحقیقاتی، می توانید سیستم عامل های خود را بسازید - به عنوان مثال، برای آموزش دانش آموزان در برخی از سیستم عامل های کوچک.

سیستم عامل ها در حال حاضر در آستانه تغییر هستند. در اینجا تلاش های زیادی برای انجام کارهای نوآورانه وجود دارد. آیا این برداشت را به اشتراک نمی گذارید؟ آیا خودمان شانسی داریم که در زمینه سیستم عامل های آینده کاری انجام دهیم؟

بله، چنین کارهایی در دنیا در حال انجام است. آنها از جمله با این واقعیت مرتبط هستند که شما باید یک میکروکرنل سیستم عامل بسازید که شامل هفت میلیون خط نیست، بلکه مثلاً چند ده هزار خط است، اما به طوری که این کد واقعاً حاوی خطا نیست. این یک کار دیوانه کننده است. اما برای برنامه های کوچک قابل حل است.

همچنین اتفاق می افتد که یک فرد فقط می خواهد یک سیستم عامل بسازد. به دلایل زیبایی شناختی. چرا که نه؟ چرا یک نفر چیز جدیدی به ذهنش نمی رسد؟ من یکی دو بار با این برخورد کردم دو پسر، از شهرهای مختلف، اما نه از مسکو، سیستم عامل های خود را ساختند. این فوق العاده جالب است. آنها البته نوعی مهارت داشتند، نوعی رضایت درونی به دست آوردند. یکی از آنها اهل اومسک است که اکنون دانشجو است.

- نقش موسسه شما در صنعت چیست؟

نمی توانم بگویم که از این نقش راضی هستم، اما سطحش مناسب است. کمک های مالی مشترک بسیاری با موسسات علمی در اروپا و ایالات متحده آمریکا. بچه های ما در معتبرترین کنفرانس های بین المللی صحبت می کنند. من هیچ احساس حقارتی ندارم - بازی در شرایط مساوی است و در جایی ما برنده می شویم. ما سطح بین المللی خوبی را نشان می دهیم.

قراردادهای بسیار زیادی با تولیدکنندگان پیشرو فناوری اطلاعات: اینتل، مایکروسافت، IBM، سامسونگ. همه پروژه ها مربوط به توسعه فناوری های جدید است.

- و چه اتفاقی برای کارکنان در صنعت می افتد؟

یک وضعیت سخت. بسیار سنگین. بازار به میزان قابل توجهی افراد بیشتری را طلب می کند - به سادگی تعداد آنها کافی نیست. و در سراسر جهان، و با ما.

این یک زمینه خاص از فعالیت، مسابقات برنامه نویسی دانش آموزی است. این مثل یک ورزش حرفه ای است. به نظر می رسد بسکتبال دانشجویی در ایالات متحده است - توسط حرفه ای ها بازی می شود، نه دانش آموزان آماتور. هر مسابقه برنامه نویسی مجموعه نسبتاً محدودی از مشکلات در یک حوزه خاص است: برنامه نویسی پویا، کار با اعداد بسیار زیاد و غیره. برای درک سریع معنای مشکل و حل سریع آن. ما به ساعت های زیادی تمرین روزانه نیاز داریم، چیزی که برنده ها دارند.

برای کشور، البته، این یک اعتبار بزرگ است. اما پیروزی در مسابقات دانشجویی به هیچ وجه بر فعالیت برنامه نویسی حرفه ای تأثیر نمی گذارد. مسابقات - به طور جداگانه، سطح حرفه ای برنامه نویسان - به طور جداگانه.

ما همیشه افراد با استعداد کافی داشته ایم و برنامه نویسی زمینه بسیار مناسبی برای ابراز وجود است. زیرا خدا نمی داند برای این کار چه چیزی لازم است. همانطور که در شعر، در ریاضیات. به عنوان مثال، برای آزمایش های پرواز، همانطور که یک مهندس هوانوردی باید انجام دهد، نیازی به انتظار نیست. مخصوصا الان که اینترنت هست. نسل من یک گرسنگی واقعی برای اطلاعات را تجربه می کرد - به دست آوردن مقالات علمی، ارتباط با همکاران دشوار بود. امروز مشکلی با اطلاعات نیست. خود سبک کار تغییر کرده است. ما همه چیز را از ابتدا انجام دادیم. و اکنون نرم افزار منبع باز وجود دارد و شما می توانید در توسعه آن شرکت کنید. فرصت های زیادی برای ابراز وجود.

- پس چرا مردم به اندازه کافی نیستند؟ پس از همه، جذاب ترین حوزه فعالیت ... دلیل چیست؟

احتمالا چندین دلیل وجود دارد. این، البته، کمبود وحشتناکی از کادر آموزشی بسیار ماهر است. فردی که به دانش آموزان آموزش می دهد باید تجربه حرفه ای خود را در زمینه ای که تدریس می کند داشته باشد. معلمی که فقط کتاب های درسی را تفسیر می کند و بعد تدریس می کند نمی تواند مدرسه ایجاد کند.

سنت های آموزش ما - شوروی، روسی - در این واقعیت است که معلم تجربه شخصی و حتی زندگی را منتقل می کند. این نقطه قوت سبک تدریس ما بود. من حتی در مورد مدل Phystech (موسسه فیزیک و فناوری مسکو) صحبت نمی کنم. اد.) زمانی که سعی کردند دانش آموزان را از دوره های ابتدایی وارد فرآیند تحقیق کنند.

ما حدود صد دانشجوی فیس‌تک و دانشگاه دولتی مسکو داریم، 40 دانشجوی کارشناسی ارشد در مؤسسه ما کار می‌کنند. اما کدام یک از آنها در این حرفه باقی می مانند؟ حدود 20٪ (و این یک شاخص خوب است). دلیلش این است که بچه ها زود شروع به کار می کنند. آنها به تازگی یاد گرفته اند که فقط برنامه بنویسند و به صورت تمام وقت به کار برده می شوند. از سال سوم. اما هنوز باید یاد بگیرند و یاد بگیرند!

البته یک نفر مجبور به انجام این کار است. در زمان ما، ابزار درآمد دانش آموزان تدریس خصوصی، تیم های ساختمانی و تخلیه کالسکه بود. اکنون فرصت های بیشتری وجود دارد. اعتیاد آور است. دانش آموزی می بیند که چگونه دوستش هزار دلار درآمد دارد و فکر می کند: هر چه بدتر باشم، من هم سر کار خواهم رفت. اگرچه نیازی به انجام این کار ندارید، اما باید یاد بگیرید! پول خود به خود به مرور زمان خواهد آمد و اگر اکنون وقت خود را صرف مطالعه کنید، پول بیشتری خواهد داشت.

ممکن است اسامی افرادی را که بیشترین تأثیر را در شکل گیری حوزه دانشی که شما در آن فعالیت می کنید در کشورمان داشته اند را نام ببرید؟

در زمان من برنامه نویس کم بود، همه همدیگر را می شناختند. من قبلاً به میخائیل رومانوویچ شورا-بورو و آندری نیکولاویچ تیخونوف اشاره کردم. همچنین آندری پتروویچ ارشوف، سواتوسلاو سرگیویچ لاوروف، نیکولای نیکولایویچ گوورون، لو نیکولایویچ کورولف.

من افرادی را که موقعیت های علمی دریافت کرده اند را لیست کرده ام (اتفاقاً شورا-بورا آکادمیک نشد). اما افراد جالب زیادی وجود داشتند، فوق العاده با استعداد. ادوارد زینویویچ لیوبیمسکی. ایگور بوریسوویچ زادیخایلو. آنها برنامه نویسان بزرگی بودند.

من می خواهم کتابی بردارم که روی جلد آن عبارت "آکادمی علوم روسیه" روی میز شما قرار دارد.

خواهش میکنم. این یک راهنما است.

آیا تعداد زیادی از اعضای آکادمی علوم روسیه برای کشور ما هفت و نیم صد نفر نیست و شما سطح فعلی علوم بنیادی ما را چگونه ارزیابی می کنید؟

در طول دهه 90، ما مجموعه نظامی-صنعتی و کل صنایع را از دست داده ایم. و من مطمئن نیستم که بتوانیم آن را جبران کنیم. البته در فرهنگستان علوم هم ضررهایی وجود دارد. من در مورد تعداد دانشگاهیان صحبت نمی کنم - این خیلی مهم نیست.

ما چندین نسل از دانشمندان را از دست داده ایم. اوایل دهه 90 را به یاد دارم. دانشجویان ما، دانشجویان فارغ التحصیل رفتند. داشتند می رفتند. لایه متخصصان بسیار نازک و شسته شده است. اما آدم‌های بی‌نظیری بودند... آنها هنوز باقی‌مانده‌اند، اما از قبل آدم‌هایی پیر هستند. آکادمی چندین نسل را از دست داده است و این بسیار جدی است. ما چه می بینیم؟ سخنرانی ها توسط افراد 70-75 ساله انجام می شود. آیا می توانید تصور کنید که چه نوع باری است؟ کار یک مدرس خوب شبیه کار یک هنرمند است؛ استرس جسمی و روحی عظیمی است. و وقتی افراد 75 ساله در حال سخنرانی برای یک جریان متشکل از 200 دانش آموز هستند، خیلی جالب نیست.

به تاریخچه اخیر موسسه باز خواهم گشت. تقاضای داخلی برای کار وجود نداشت، منظورم فناوری های نوین برنامه نویسی در کشور بود. پول هم نبود. مردم مهاجرت کردند یا به بانک ها رفتند. در چه مقطعی مدیر مؤسسه شدم.

برای من تربیت یکی از گاوهای مقدس است. بیخود نبود نام شرکت هایی را که با آنها قرارداد داریم را نام بردم. اینها قراردادهای پرهزینه ای هستند. آنها امکان پرداخت حقوق مناسب به کارکنان ما را فراهم می کنند.

اما وضعیت نگران کننده است. و این نگران کننده نیست که چه تعداد عضو در آکادمی وجود دارد. بگذار حداقل پنج هزار نفر باشند، کاری ندارم. این موضوع نیست، بلکه این واقعیت است که هیچ پسر جوانی وجود ندارد. هرچند هنوز هم در بین اعضای آکادمی افرادی هستند که می تواند به آنها افتخار کند.

شما رئیس RASPO (انجمن نرم افزار آزاد روسیه) هستید. امروز در سازمان چه می گذرد؟

RASPO نوعی شهرت نگران کننده دریافت کرد. من دوست دارم فعالیت های راسپو به مسائل واقعی، به مسائل فنی نزدیکتر باشد. به طوری که سازمان های موجود در RASPO در توسعه موفق نرم افزار مشغول هستند. یا ادغام موفق، زیرا RASPO دارای شرکت های یکپارچه کننده است. برای اینکه کمیته های ایجاد شده در راسپو کار کنند: حقوقی، فنی و غیره. اکنون دوره ای است که همه باید بفهمند که چرا باید در انجمن باشد، چه چیزی می تواند به او بدهد، به جامعه بدهد. Lapping در حال انجام است، و بسیار دشوار است. روند توسعه اعتماد متقابل وجود دارد - اخلاقی، حرفه ای. امیدوارم نتایج فعالیت های راسپو تا شش ماه یا یک سال دیگر نمایان شود.

برنامه نویسان مستعد چه در کشور ما و چه در غرب کم نیست.
با این حال، افراد بسیار کمی در مقام گورو در میان آنها وجود دارد - در واقع، در هر فرد دیگری
حوزه. شما باید چنین استادانی را از روی دید (یا حداقل با نام) بشناسید.
چون قطعا لیاقتش را دارند امروز شما را با مارک آشنا می کنم
Russinovich، متخصص ویندوز و موارد دیگر.

آقای روسینوویچ کیست؟

در حین کار بر روی این مقاله، کشف عجیبی کردم -
معلوم شد که نام مارک Russinovich (مارک Russinovich) به بسیاری از مردم در
امروز او اصلاً در مورد چیزی صحبت نمی کند. بیشتر از همه از دو نفر ضربه خوردم
برنامه نویسانی که هرگز در مورد این نشنیده اند. بعد از برقراری ارتباط بود
برای آنها روشن شد که واقعاً لازم است در مورد روسینوویچ بنویسیم ، زیرا
شرمنده، آقایان، فقط شرمنده!

بنابراین، مارک روسینوویچ یک برنامه نویس و نویسنده آمریکایی، متخصص با
شهرت جهانی، یکی از کارشناسان برجسته در زمینه معماری و طراحی
سیستم عامل ها، و به ویژه - دستگاه داخلی ویندوز. در سال 2006
او به همراه جین وارد 5 هکر برتر کره زمین طبق مجله eWeek شد.
روتکوفسایا و دیوید مینور.

با توجه به موارد فوق، به راحتی می توان حدس زد که مارک بیشترین میزان را دارد
هر چه که نمایه باشد (اما، تاریخ استثناهایی را حتی در چنین مواردی می شناسد
کره) - او فارغ التحصیل از دانشگاه کارنگی ملون، دارای دو مدرک است:
لیسانس و دکترا در رشته کامپیوتر.

در پایان دانشگاه، روسینوویچ حتی فکرش را هم نکرد که آن را خاموش کند
البته مدتی در مرکز تحقیقات شرکت IBM (در
کارشناس سیستم عامل). مدت زیادی آنجا نماند و
به زودی کشتی رایگان. در سال 1996 همراه با دیگری
توسعه دهنده نرم افزار برایس کاگزول، روسینوویچ سازماندهی شد
شرکت خود، که نام Winternals Software LP را دریافت کرد. فعالیت های مارک
تمرکز بر نوشتن ابزارهای مختلف نرم افزار رایگان برای مدیریت و
تشخیص MS Windows شرکت او همان خط را دنبال کرد، با یکی
فقط یک تفاوت کوچک - محصولات شرکتی که روسینوویچ سالها در آن مشغول بود
پست معمار ارشد نرم افزار قبلاً پرداخت شده بود.

Russinovich و همکارانش ابزارهای خود را از طریق سایت Sysinternals.com توزیع کردند
(قبلاً - ntinternals)، و از آنجایی که آنها به وضوح کمبود ایده را تجربه نکردند - در
امروزه بیش از 60 نرم افزار مفید برای تألیف آنها وجود دارد. V
معروف ترین، شاید بتوان به عنوان مانیتور فرآیند (قبلاً
- Filemon و Regmon)، Process Explorer، RootkitRevealer و ابزارهایی مانند NTFSDOS،
کمک به کار و در واقع پر کردن شکاف های ویندوز (مثلاً NTFSDOS
همه پارتیشن های NTFS را هنگام اجرا تحت MS-DOS قابل مشاهده می کند). از آخرین ابزار
این واقعیت ساده را دنبال می کند که Russinovich درایور سیستم فایل NTFS را نوشته است
تحت DOS. این البته از شایستگی های اصلی او دور است، اما آخرین آن هم نیست.

شما می توانید همه این امکانات کوچک را هم به صورت جداگانه و هم به صورت جداگانه دانلود کنید
ست های آماده به عنوان مثال، یک بسته زیر
با نام غیر پیچیده Winternals Administrator Pak. و آنچه به خصوص جالب است این است
این سایت حتی نسخه هایی را برای لینوکس منتشر کرد که کارشناسان ویندوز دوست دارند
به اندازه کافی عجیب، فراموش نکردم. و در نسخه های بعدی، نسخه هایی برای ظاهر شد
سیستم های 64 بیتی خلاصه همه چیز خوب پیش رفت تا اینکه مایکروسافت در افق ظاهر شد.
عالی و وحشتناک

"کوچک-نرم" نمی توانست فقط از کنار چنین متخصصان با استعدادی عبور کند. به
سابقه Winternals Software در سال 2006 واقعاً باعث احترام شده است
در Sysinternals می توان برنامه های کاربردی برای همه موارد پیدا کرد. سایت ارائه شده است
آنقدر چیزهای راحت و کاربردی که حتی یک آشنایی مختصر با آنها
به اندازه کافی برای درک اینکه ویندوز واقعاً همه اینها را ندارد.

نتیجه طبیعی علاقه مایکروسافت خرید بود
نرم افزار Winternals پس از معامله، تعطیلات زندگی در Sysinternals
کمی کند شد به عنوان مثال، کد منبع قبلاً رایگان از سایت ناپدید شده است
نرم افزار منتشر شده برای بسیاری، نسخه های لینوکس ناپدید شد، و بلافاصله وجود داشت
ابزارهایی مانند NT Locksmith را حذف کرد که امکان بازیابی رمز عبور سیستم را فراهم می کرد
تقریبا در هر محیطی در غیر این صورت مایکروسافت هیچ اعتراضی نداشت
در مقابل وجود سایت و روش های توزیع نرم افزار. به هر حال، بلافاصله
پس از ادغام، روسینوویچ به مردم اطمینان داد که Sysinternals به فعالیت خود ادامه خواهد داد
"تقریبا طبق معمول."

مارک در مایکروسافت لقب افتخاری همکار فنی را دریافت کرده است که در واقع،
به معنای عضو شورای فنی یک شرکت است. او تا به امروز این سمت را دارد
یک روز کار برای بخش پلت فرم و خدمات
بخش). در مکانی جدید، وظایف روسینوویچ شامل کار بر روی مشکل بود
شناسایی روت کیت ها و ایجاد ابزارهای مناسب برای این کار و
توسعه ابزارهای کمکی برای از بین بردن انواع برنامه های بدافزار. می توانی بگویی
که مارک روسینوویچ از سال 2006 از رایانه های ما محافظت می کند :).

محبوبیت

این واقعیت که مارک امروزه به طور خاص با مسائل روت کیت سروکار دارد کاملاً است
کنجکاو، زیرا توده های وسیع با کلمه "rootkit" آشنا شدند
از او بسیار سپاسگزارم این اتفاق در سال 2005 رخ داد، حتی قبل از انتقال روسینویچ به
مایکروسافت. سپس قهرمان ما، در این دوره از آزمایش ذهن خود را با یک بلندگو برای
خودش که RootkitRevealer نامیده می شود، آن را در کامپیوتر خودش کشف کرد
فعالیت مشکوکی وجود دارد واقعا متعجب شد، مارک بعدا
در وبلاگ خود نوشت: "با توجه به اینکه هنگام استفاده بسیار مراقب هستم
اینترنت و نرم افزار را فقط از منابع معتبر نصب می کنم، هیچ نظری نداشتم
جایی که می توانستم یک روت کیت واقعی انتخاب کنم، و اگر نام فایل های مشکوک نبود،
من مقصر خطاهای موجود در کد RKR هستم."

با این حال، معلوم شد که این موضوع اشتباه RootkitRevealer نیست، بلکه روسینویچ کمی قبل از آن
از Amazon.com خریداری شده است. فروشگاه آنلاین صادقانه هشدار داد که دیسک
با استفاده از DRM (مدیریت حقوق دیجیتال) از کپی محافظت می شود، اما نه
به طور خاص کدام را گزارش کرد. من مجبور شدم یک تحقیق مستقل انجام دهم، در
طی آن مشخص شد که سونی از عقل فراتر رفته و حذف شده است
یک روت کیت غیرممکن است غیر از دستی - حتی به HKLM \ System \ CurrentControlSet \ SafeBoot نیز وارد شد.
یعنی حتی در حالت ایمن به کار خود ادامه داد. قبلا عصبانی شده
اعماق روح روسینوویچ، البته، در نهایت توانست با عفونت کنار بیاید، اما
او در مورد این قسمت سکوت نکرد و آنچه را که در وبلاگش اتفاق افتاد به تفصیل شرح داد.
جامعه IT به هم ریخته است، و در عرض چند ساعت این اطلاعات
نیمی از اینترنت و سپس رسانه های جریان اصلی را انتخاب کردند. او بعداً به عنوان
کارشناس در دادگاه علیه سونی ظاهر شد، به تعداد زیادی
مصاحبه ها و نظرات با مطبوعات و به طور کلی، افزایش یافته است
توجه به لطف این اتفاق، توده ها یاد گرفتند که روت کیت چیست و
چقدر بد است، و همچنین در مورد وجود مردی مانند مارک فهمیدم
روسینوویچ. معلوم شد که مارک، به طور غیرمنتظره ای حتی برای خودش، مشهور شد.

رسوایی دیگر روسینوویچ که شهرت خاصی برای او به ارمغان آورد -
نویسنده. از جمله، مارک یکی از نویسندگان چندین کتاب از جمله این است
پرفروشی مانند Microsoft Windows Internals ("ساختار داخلی سیستم عامل مایکروسافت
پنجره ها "). او مقالات و راهنماهای مختلفی را به طور منظم نوشته است
از طریق همکاری با مجله TechNet و Windows IT Pro (ویندوز سابق
مجله NT). علاوه بر همه چیز، روسینوویچ به وبلاگ نویسی ادامه می دهد تا کدام را بیابد
را می توان در blogs.technet.com/MarkRussinovich یافت. برای سال سوم، وبلاگ مارک
جایگاه یکی از وبلاگ های برتر را در بین تمامی کارمندان مایکروسافت دارد.

معرفی

1. سیستم عامل

1.2 ساختار و عملکرد سیستم عامل

1.3 تاریخچه توسعه سیستم عامل

2. جایگزین های ویندوز

2.1.1 تاریخچه توسعه

2.1.3 استفاده

2.2.1 تاریخچه خلقت

2.2.3 استفاده

2.3.1 تاریخچه توسعه

2.3.3 استفاده

نتیجه

فهرست ادبیات استفاده شده

معرفی

در زمان ما، فناوری اطلاعات روز به روز در زندگی روزمره مستحکم تر می شود و رایانه قبلاً به بخشی آشنا از آن تبدیل شده است. برای اکثر افرادی که تجربه کار با کامپیوتر را داشته اند، کلمات "آیکون"، "پنجره"، "دسکتاپ"، "منوی شروع" آشنا و قابل درک شده است و لوگوی یک پرچم چهار رنگ تعجب آور نیست. می‌خواهم بگویم که بسیاری از کاربران رایانه‌های شخصی آنقدر به ویندوز عادت کرده‌اند که گاهی حتی از وجود سیستم‌عامل‌های جایگزین دیگر اطلاعی ندارند و حتی بیشتر از آن از خود این سؤال را نمی‌پرسند: «سیستم عامل چیست و چیست؟ چگونه کار می کند؟" اما آگاهی از همه اینها نه تنها در جامعه مدرن مفید خواهد بود، بلکه می تواند در انتخاب راحت ترین و سازنده ترین "پوسته" برای رایانه شما کمک کند. به همین دلیل تصمیم گرفتم مروری کوتاه بر سیستم عامل هایی داشته باشم که امروزه به جای ویندوز معمولی برای همه ما استفاده می شود.

در کارم عمدتاً از سه منبع ادبی استفاده کردم. در کتاب درسی E. Tanenbaum "سیستم عامل های مدرن" اطلاعاتی را عمدتاً در مورد تاریخچه توسعه سیستم عامل ها دریافت کردم. کتاب «سیستم های عامل، محیط ها و پوسته ها» که نویسندگان آن ت.ل. و Popov I.I.، من برای تعریف مفهوم سیستم عامل و ویژگی های سیستم عامل یونیکس استفاده کردم. و در نهایت کتاب وی.جی. اولیفر، N.A. اولیفر سیستم عامل شبکه به من کمک کرد تا عملکردهای اصلی سیستم عامل و ساختار آن را مشخص کنم. همچنین از منابع اینترنتی مختلفی استفاده شد، به عنوان مثال، دایره المعارف اینترنتی رایگان ویکی پدیا.

چکیده من از دو فصل اصلی تشکیل شده است: سیستم عامل ها، جایی که سعی کردم توضیح دهم که سیستم عامل چیست، چگونه کار می کند و برای چیست، و جایگزین هایی برای ویندوز، که در آن به طور مستقیم سیستم عامل هایی را که به جای ویندوز استفاده می شوند، در نظر می گیرم. لازم به ذکر است که برای اینکه متن با تکرار بارگذاری نشود و برای سادگی ارائه، در چکیده خود از کلمات "رایانه"، "ماشین"، "رایانه" به عنوان مترادف برای نشان دادن رایانه در درک امروزی ما استفاده کردم. من مناسب دانستم که فقط در صورت کپی برداری دقیق یا برداشتن اطلاعات خاص، مثلاً تعاریف یا طبقه بندی، به منابع مراجعه کنم. در تمام موارد دیگر، من فقط به اطلاعات منابع ادبی یا اینترنتی تکیه کردم و آن را به قول خودم بازگو کردم و نتیجه‌گیری خاصی کردم.

چکیده من برای این نیست که بفهمم کدام سیستم عامل بهتر است. هدف من از کار مقایسه نیست، بلکه مروری بر سیستم عامل ها است. این همان چیزی است که من هنگام نوشتن یک مقاله به آن راهنمایی می کردم. هنگام توصیف هر سیستم عامل، سعی کردم به مزایا و معایب اصلی آن، دامنه استفاده از آن امروز توجه کنم و در مورد رقابت آن با ویندوز نتیجه گیری کنم.

1.سیستم عامل

1.1 سیستم عامل چیست؟

اول از همه، ارزش این را دارد که بدانیم سیستم عامل (OS) چیست.

سیستم عامل مجموعه ای از برنامه ها است که سازماندهی فرآیند محاسباتی را در رایانه فراهم می کند. به زبان ساده، این برنامه ای است که برای پنهان کردن تمام پیچیدگی های "ارتباط" با رایانه از کاربر طراحی شده است. و مشکلات بسیار بیشتر از آنچه در نگاه اول به نظر می رسد بوجود می آیند. بدون کمک سیستم عامل، حتی یک عملیات ساده مانند نوشتن یک فایل بر روی هارد دیسک، که ما عادت داریم با فشار دادن چندین کلید روی صفحه کلید انجام دهیم، برای یک فرد ناآشنا غیرممکن است. لازم است در هارد دیسک، آدرس مکانی را که می خواهیم فایل خود را در آن ذخیره کنیم، آدرس حافظه اصلی، تعداد بایت های ذخیره شده، جهت عمل، در این مورد رایتینگ، بنویسیم. و این فقط برای نوشتن یک فایل است!

من فکر می کنم، تمام اهمیت اختراع حتی اولین سیستم عامل ها روشن می شود، زیرا آنها اجازه می دهند شخص را از برقراری ارتباط مستقیم با تجهیزات خلاص کنند و سیستم فرمان راحت تری را برای برنامه نویس فراهم کنند.

سیستم عامل به عنوان یک رابط بین انسان و کامپیوتر عمل می کند و یک رابط کاربری ساده و فایل محور را در اختیار کاربر قرار می دهد. به نظر می رسد که عمل نوشتن یک فایل روی دیسک ساده تر از زمانی است که باید مراقب حرکت دادن سر هارد دیسک باشید، صبر کنید تا در جای خود قرار گیرند و غیره.

این فقط یک نمای کلی از سیستم عامل است. در مرحله بعد، من پیشنهاد می کنم سیستم عامل را با جزئیات بیشتری در نظر بگیریم.

1.2 ساختار و عملکرد سیستم عامل

اکثر سیستم عامل های مدرن سیستم های مدولار هستند (یعنی به بخش های عملکردی جداگانه تقسیم می شوند). البته، هیچ معماری سیستم عامل واحدی وجود ندارد، اما رویکردهای جهانی برای ساختاردهی سیستم عامل ها وجود دارد. رایج ترین رویکرد این است که همه ماژول های آن را به دو گروه تقسیم کنیم:

· هسته - ماژول هایی که عملکردهای اساسی سیستم عامل را انجام می دهند.

· ماژول هایی که عملکردهای کمکی سیستم عامل را انجام می دهند.

ماژول های هسته پردازش ها، حافظه، دستگاه های ورودی/خروجی و موارد دیگر را مدیریت می کنند. توابع انجام شده توسط ماژول های هسته پرکاربردترین توابع هستند، بنابراین سرعت اجرای آنها عملکرد کل سیستم را به عنوان یک کل تعیین می کند. برای اطمینان از سرعت بالای عملکرد سیستم عامل، اکثر ماژول های هسته به طور دائم در RAM قرار دارند، یعنی. ساکن هستند

بقیه ماژول های سیستم عامل (کمکی) عملکردهای مفید، اما نه چندان ضروری را انجام می دهند، به عنوان مثال، بررسی سلامت بلوک های رایانه، تشخیص خرابی دستگاه و غیره.

تمایز بین برنامه های سیستم عامل و برنامه های کاربردی ساده اغلب بسیار دشوار است. اعتقاد بر این است که برنامه هایی که در حالت هسته اجرا می شوند (یعنی کاربر به آنها دسترسی سخت افزاری ندارد) همیشه بخشی از سیستم عامل هستند در حالی که برنامه های کمکی در حالت کاربر اجرا می شوند (یعنی کاربر می تواند در صورت تمایل آنها را تغییر دهد. ).

هسته نیروی محرکه همه فرآیندهای محاسباتی است و خرابی هسته مساوی با فروپاشی کل سیستم است، به همین دلیل است که توسعه دهندگان توجه ویژه ای به قابلیت اطمینان کدها دارند و از آنها در برابر دخالت رایگان کاربر محافظت می کنند.

خوب، حالا بیایید به عملکردهای اصلی که سیستم عامل به طور کلی انجام می دهد برویم. به طور کلی، آنها را می توان به دو مهم ترین تقسیم کرد، این ارتباط بین یک فرد و یک ماشین و مدیریت منابع خود ماشین است. ما قبلاً در مورد اهمیت اولین تابع در بالا بحث کرده ایم، اما ارزش دوم را دارد که با جزئیات بیشتری در مورد آن صحبت کنیم.

کامپیوترهای مدرن از یک پردازنده، حافظه، ساعت، دیسک، ماوس، رابط های شبکه، چاپگرها و هزاران دستگاه دیگر تشکیل شده اند. بنابراین، عملکرد سیستم عامل توزیع سازمان یافته و کنترل شده منابع رایانه ای بین برنامه های مختلف است که برای حق استفاده از آنها رقابت می کنند. در واقع، تصور کنید چه اتفاقی می‌افتد اگر سه برنامه روی یک رایانه اجرا می‌شدند و همه آنها به طور همزمان سعی می‌کردند داده‌های خود را روی یک چاپگر چاپ کنند. به احتمال زیاد، چند خط اول روی برگه از برنامه اول، چند خط بعدی از برنامه دوم و غیره ظاهر می شود. نتیجه سردرگمی کامل است. سیستم عامل در چنین شرایطی همه چیز را مرتب می کند. سیستم عامل ابتدا اجازه دسترسی به یک برنامه را می دهد و خروجی برنامه دیگر در یک فایل موقت ذخیره می شود و در صف چاپ قرار می گیرد. در این زمان، برنامه دوم به کار خود ادامه می دهد، بدون اینکه متوجه شود که در واقع داده ها را به چاپگر ارسال نمی کند. به نظر می رسد که سیستم عامل برنامه را "فریب" می دهد. این نمونه ای از تخصیص موقت منابع بود. توزیع فضایی به همان اندازه مهم است. این شامل این واقعیت است که سیستم عامل تنها بخشی از یک منبع خاص را به هر برنامه اختصاص می دهد و نه کل منبع را به عنوان یک کل. بارزترین مثال، به نظر من، توزیع چندین برنامه در رم کامپیوتر است. حتی تصور کردن آن سخت است که پردازش دستورات چقدر زمان می برد اگر هر برنامه با کل مقدار رم ارائه شود و بقیه منتظر نوبت خود باشند!

وجود تمامی این عملکردها بار دیگر ضرورت و اهمیت سیستم عامل ها را ثابت می کند. بدون سیستم عامل، کامپیوتر برای کاربر فقط یک انبوه فلز است که نزدیک شدن به آن غیرممکن است.

بر اساس عملکردهای اصلی سیستم عامل، در طول توسعه آن توسط الزامات خاصی هدایت می شوند:

· مدولار بودن

· امکان توسعه سیستم نرم افزاری;

· سهولت توسعه؛

· انعطاف پذیری و سازگاری.

· سازگاری نرم افزار رایانه های مختلف در یک پلت فرم سخت افزاری.

· حداقل مداخله انسانی؛

· تطبیق پذیری پارامتری.

· افزونگی عملکردی (حضور در سیستم چندین برنامه که عملکرد یکسانی را اجرا می کنند).

· انتخاب عملکردی (قابلیت پیکربندی سیستم برای یک کاربر خاص).

شما به راحتی می توانید تصور کنید که سیستم عامل چه مسیر طولانی و جالبی را در توسعه خود طی کرده است و توسعه دهندگان برای برآورده ساختن تمام الزامات ارائه شده در بالا با چه مشکلاتی مواجه شده اند.

1.3 تاریخچه توسعه سیستم عامل

البته، توسعه سیستم عامل ارتباط تنگاتنگی با توسعه خود رایانه ها دارد. کامپیوترهای اولیه سیستم عامل را فراهم نمی کردند، بنابراین تمام فرآیندهای شروع و توقف برنامه ها، اتصال دستگاه های خارجی به صورت دستی انجام می شد. برنامه نویسی منحصراً به زبان ماشین انجام شد. در آن زمان، ماشین‌ها بیشتر برای اهداف تحقیقاتی مورد استفاده قرار می‌گرفتند، نه برای حل مسائل کاربردی خاص. با آغاز دهه 50، با اختراع کارت های پانچ - کارت های ویژه ای که الگوریتم اجرای برنامه به آنها منتقل شد - وضعیت تا حدودی تغییر کرد، اما به طور کلی، نگهداری و استفاده از رایانه ها به طور غیرقابل قبولی دشوار بود.

اولین قدم برای سهولت ارتباط با ماشین در اواخر دهه 1950 با اختراع پردازش دسته ای برداشته شد. ایده این بود که یک بسته کامل از وظایف (یک دسته از کارت های پانچ شده) جمع آوری شود، آنها به نوار مغناطیسی منتقل شوند، و سپس با استفاده از یک برنامه خاص (نمونه اولیه سیستم عامل های مدرن)، به طور متوالی آنها را برای اجرا بدون مشارکت یک نفر راه اندازی کنیم. اپراتور. چنین پردازشی از وظایف به طور قابل توجهی زمان اقدامات کمکی در سازماندهی خود فرآیند محاسبات را کاهش داده است. مردم دیگر مجبور نبودند در سالن بدوند تا نتایج پردازش داده‌ها را منتقل کنند: آنها اکنون در حالت آفلاین (یعنی بدون ارتباط با رایانه اصلی) به چاپگر خروجی می‌شوند. با این حال، یک نقطه ضعف قابل توجه نیز وجود داشت: با توجه به این واقعیت که برنامه نویسان دسترسی مستقیم به رایانه را از دست دادند، تصحیح خطاهای برنامه ها زمان بسیار بیشتری را صرف کرد.

گام بعدی به سوی سیستم عامل های مدرن اختراع اصل چند وظیفه ای بود. پیش از این، پردازنده اصلی می‌توانست بیشتر اوقات بیکار باشد و منتظر دستورات I/O از نوار یا دستگاه دیگر باشد. به طور طبیعی، این بسیار ناخوشایند بود، و در مورد پردازش اطلاعات تجاری، چنین عملیات ساده ای می تواند 80٪ از زمان کار را بگیرد. راه حل مشکل این بود که حافظه را به چند قسمت تقسیم کنیم که به هر کدام وظیفه جداگانه داده شد. اکنون پردازنده منتظر اتمام عملیات I / O نمی ماند، بلکه به برنامه ای تغییر می کند که قبلاً برای اجرا آماده شده بود.

پس از چندوظیفگی، حالت اشتراک زمانی وجود داشت. این حالت برای سیستم های چند ترمینال طراحی شده است، زمانی که هر کاربر می تواند در ترمینال خود کار کند. به عنوان مثال، بیست کاربر ممکن است وارد سیستم شوند، و اگر هفده نفر از آنها فکر می کنند، قهوه می نوشند یا به کار خود فکر می کنند، پردازنده مرکزی در اختیار سه کاربر قرار می گیرد که می خواستند روی دستگاه کار کنند. با این حال، در چنین سیستم‌هایی، راندمان استفاده از تجهیزات کمتر بود که بهایی راحتی بود.

همه این نوآوری ها طبیعتاً مستلزم نوشتن یک سیستم عامل بود که هم در ماشین های بزرگ و هم در ماشین های کوچک، هم با تعداد زیاد لوازم جانبی و هم با تعداد کم، در زمینه تجاری و در زمینه تحقیقات علمی قابل استفاده باشد. رعایت همه این الزامات بسیار دشوار بود. سیستم عامل های نوشته شده در آن زمان میلیون ها خط، بسیار پیچیده و حاوی هزاران خطا بودند. با این حال، آنها همچنین به توسعه سیستم عامل کمک کردند: برخی از تکنیک هایی که در اولین سیستم عامل ها استفاده می شد هنوز در سیستم عامل های مدرن زنده و وجود دارد.

در اواسط دهه 70، مینی کامپیوترها در حال گسترش بودند. معماری آنها بسیار ساده شده است و منابع محدود است. همه اینها در سیستم عامل چنین رایانه هایی منعکس شده است. آنها فشرده تر شده اند و به مفاهیم سیستم عامل های مدرن بسیار نزدیک تر هستند. رایج ترین سیستم عامل آن زمان یونیکس بود که در ادامه به تاریخچه آن خواهیم پرداخت.

انقلاب واقعی اختراع میکرو مدارهای سیلیکونی در اوایل دهه 80 و در نتیجه ظهور اولین کامپیوترهای شخصی (PC) بود. از نظر معماری، کامپیوترهای شخصی تفاوتی با کامپیوترهای کوچک نداشتند، اما هزینه آنها بسیار کمتر بود. این به آنها اجازه داد که نه تنها توسط دانشگاه ها، شرکت ها یا سازمان های دولتی، بلکه توسط مردم عادی نیز خریداری شوند. سیستم عامل محبوب یونیکس در آن زمان برای افراد غیر حرفه ای بسیار پیچیده بود. وظیفه ایجاد یک رابط دوستانه بود، یعنی. برای کاربری که چیزی نمی داند و نمی خواهد چیزی بداند در نظر گرفته شده است. اینجا جایی بود که سیستم عامل معروف MS-DOS (سیستم عامل MicroSoftDisk) ظاهر شد. لازم به ذکر است که در ابتدا MS-DOS دارای یک رابط خط فرمان بود که چندان کاربرپسند نبود. خیلی بعد، یک محیط گرافیکی برای MS-DOS به نام Windows ایجاد شد که بعدها به یک سیستم عامل مستقل تبدیل شد. او همچنین ایده یک رابط گرافیکی متشکل از پنجره ها، نمادها، منوهای مختلف و یک ماوس را تجسم کرد.

از تاریخچه توسعه سیستم عامل، واضح است که وظیفه اصلی سیستم عامل همیشه حفظ یک تعامل راحت بین یک شخص و یک ماشین باقی مانده است. به نظر می رسد که سیستم عامل های مدرن بهترین کار را برای این کار انجام می دهند. با این حال، سال به سال نسخه های بیشتری از سیستم عامل، پیشرفته تر و با قابلیت های جدید ظاهر می شود و تاریخچه توسعه سیستم عامل ها روز به روز تداوم بیشتری می یابد.

2. جایگزین های ویندوز

2.1 سیستم عامل یونیکس

2.1.1 تاریخچه توسعه

یونیکس در ابتدا توسط کن تامپسون از آزمایشگاه های بل در سال 1969 به عنوان یک سیستم چندوظیفه ای برای مینی کامپیوترها و رایانه های بزرگ (کامپیوترهای بزرگ به اندازه یک اتاق) توسعه یافت.

نقش بزرگی در محبوب شدن یونیکس، به اعتقاد من، قابلیت پورت کردن این سیستم به کامپیوترهای مختلف بود. قبل از آن، برای هر دستگاه خاص، برنامه نویسان باید سیستم ها را از ابتدا بازنویسی می کردند، که البته جالب نبود. در یونیکس، این مشکل حل شده است. این به یک زبان سطح بالا نوشته شده بود - C. این امکان انتشار تنها یک نسخه از سیستم عامل را فراهم کرد، که سپس می توانست بر روی ماشین های مختلف کامپایل (ترجمه) شود.

در سال 1974، یونیکس به منظور "مقادیر آموزشی" به دانشگاه ها منتقل شد. علاوه بر این، مجموعه ای کامل از متون منبع ارائه شده است که امکان تصحیح بی پایان آن را برای صاحبان فراهم می کند. اینگونه بود که یونیکس کاربرد تجاری پیدا کرد و به یکی از گسترده ترین سیستم عامل ها تبدیل شد. تنها مشکل این بود که هر سازنده پیشرفت‌های غیر استاندارد خود را اضافه می‌کرد، بنابراین برای مدت طولانی نمی‌توانستند یک بسته نرم‌افزاری برای یونیکس بنویسند تا در هر نسخه‌ای از آن اجرا شوند. راه حل این مشکل ایجاد استاندارد POSIX بود که کلی ترین رویه های ذاتی در اکثر نسخه های یونیکس را در خود جای داد. این وضعیت را تا حدودی ساده کرد و باعث ایجاد وحدت در توسعه نسخه های یونیکس شد.

امروزه تعداد زیادی کلون از سیستم یونیکس از جمله لینوکس، MINIX، SystemV، Solaries، XENIX وجود دارد، اما همه این سیستم عامل ها اصول اولیه پیاده سازی الگوریتم ها، ساختارهای داده و فراخوانی سیستم را حفظ کرده اند.

جالب ترین سیستم عامل لیست شده لینوکس است. ویژگی این شبیه سازی یونیکس مدل تجاری آن است: نرم افزار رایگان است. برخلاف ویندوز، سیستم عامل مک و سیستم‌های تجاری مشابه یونیکس، لینوکس مرکز توسعه جغرافیایی ندارد. هیچ سازمانی هم صاحب این سیستم نیست. نرم افزار لینوکس حاصل هزاران پروژه است. بسیاری از پروژه ها هکرهایی را از سراسر جهان گرد هم می آورند که فقط از طریق مکاتبه با آنها آشنا هستند. هر کسی می تواند پروژه خود را ایجاد کند یا به یک پروژه موجود بپیوندد و در صورت موفقیت، نتایج کار برای میلیون ها کاربر شناخته می شود. کاربران در آزمایش نرم‌افزار رایگان شرکت می‌کنند، مستقیماً با توسعه‌دهندگان ارتباط برقرار می‌کنند، که به آن‌ها اجازه می‌دهد تا به سرعت باگ‌ها را پیدا و رفع کنند و ویژگی‌های جدید را پیاده‌سازی کنند. این رویکرد مقرون به صرفه بودن و محبوبیت لینوکس را تعیین می کند. امروزه این سیستم عامل در بسیاری از دستگاه ها از تلفن های همراه، روترها و تا وسایل نقلیه نظامی بدون سرنشین استفاده می شود.

بر اساس تنوع این خانواده سیستم‌عامل، می‌توان نتیجه گرفت که یونیکس چه نقش مهمی در توسعه سیستم‌های عامل داشته است و بدون اغراق، آن را از نظر تاریخی یکی از مهمترین‌ها می‌دانیم.

2.1.2 مزایا و معایب اصلی

مزایای اصلی یونیکس در ابتدا در ایده ای بود که در زمان ایجاد آن دنبال شد. سیستم عامل باید بر تعداد کمی از مفاهیم غیر سخت افزاری تکیه کند که مجموعاً یک محیط تلفن همراه را برای توسعه و اجرای برنامه ها فراهم می کند. بر این اساس، دو مزیت اصلی سیستم عامل یونیکس وجود دارد: سادگی و قابل حمل بودن. این شاید اصلی ترین چیزی است که آن را از سایر سیستم عامل ها متمایز می کند.

منظور ما از سادگی این است که یونیکس به دلیل فشردگی هسته، برای منابع کامپیوتری (برخلاف همان ویندوز) نیازی ندارد. علاوه بر این، یونیکس دارای مزایای بسیاری دیگر است.

اول، یک مدل فایل ساده شده که به شما امکان می دهد تعداد نامحدودی زیر شاخه بر روی هارد دیسک خود ایجاد کنید.

ثانیا، فقط از شش دستور اصلی استفاده می کند. عملیات چنگال. با "چنگال"، یک فرآیند یک کپی دقیق از خود ایجاد می کند. به این ترتیب دو نسخه یکسان دریافت می کنید. کپی ایجاد شده اغلب فرآیند دیگری را انجام می دهد - خود را با یک برنامه جدید جایگزین می کند. این دومین عملیات اساسی است. چهار تماس باقیمانده - باز کردن، بستن، خواندن و نوشتن - برای دسترسی به فایل‌ها هستند. این شش فراخوانی سیستم، عملیات ساده ای هستند که یونیکس را تشکیل می دهند. البته تعداد زیادی دستور دیگر نیز وجود دارد، اما با دانستن این پنج مورد، می توانید به راحتی عملیات اصلی را در محیط یونیکس انجام دهید.

ثالثاً، استفاده از یک زبان فرمان به اندازه کافی توسعه یافته در رابط اصلی سیستم به عنوان یک ساده سازی قابل توجه یونیکس عمل کرد. حتی امروزه، با ظهور فریمورک های گرافیکی متعدد (مانند XWindowSystem)، کاربران زیادی وجود دارند که رابط خط فرمان اولیه را ترجیح می دهند.

قابلیت حمل یونیکس به این معنی است که می توان از آن در پلتفرم های سخت افزاری مختلف استفاده کرد. علاوه بر این، امکان اجرای برنامه ها به طور همزمان توسط چندین کاربر از یک ماشین وجود دارد که ایجاد شبکه ها را تسهیل می کند. به هر حال، به لطف این اصل چند پایانی، یونیکس نقش مهمی در توسعه اینترنت ایفا کرده است.

البته سیستم عامل یونیکس کامل نیست. نمونه‌هایی از ده‌ها سیستم‌عامل دیگر را می‌توان یافت که متفکرانه‌تر ساخته شده‌اند، ابزارهای برنامه‌نویسی قدرتمندتری ارائه می‌کنند و غیره. معایب اصلی سیستم عبارتند از:

حالت بلادرنگ پشتیبانی نمی شود (نوعی از چند وظیفه ای که در آن خود سیستم عامل کنترل را از یک برنامه اجرایی به برنامه دیگر منتقل می کند).

· مقاومت ضعیف در برابر خرابی های سخت افزاری.

· کاهش کارآیی هنگام حل مسائل از همان نوع.

ابزار تعامل و همگام سازی ضعیف توسعه یافته است فرآیندها

علاوه بر این، بارگذاری بیش از حد در نسخه های اخیر یونیکس ذکر شده است.

با این حال، با وجود تمام کاستی‌ها، خانواده یونیکس یکی از پرتقاضاترین ها در بازار باقی مانده است و در آینده می‌تواند به خوبی با ویندوز رقابت کند.

2.1.3 استفاده

در اصل برای سرویس دهی به مین‌فریم‌ها طراحی شده‌اند، امروزه سیستم‌عامل‌های شبه یونیکس عمدتاً برای سرویس‌دهی سرورها استفاده می‌شوند، اما نسخه‌هایی وجود دارند که برای استفاده خانگی یا اداری کاملاً مناسب هستند. همچنین یونیکس، به لطف ترکیب قدرتمند دستورات استاندارد، برای ایجاد برنامه های کاربردی ایده آل است.

یونیکس برای کاربران قدرتمند خوب است زیرا مستلزم آگاهی از اصول عملکرد فرآیندهای رخ داده در آن است. بنابراین، بعید است که برای "مبتدیان" مناسب باشد. با این حال، چندوظیفه واقعی و به اشتراک گذاری حافظه سخت، قابلیت اطمینان بالای عملکرد سیستم را تضمین می کند و اگر به یک سیستم عامل قابل اعتماد و منعطف نیاز دارید، UNIX صد در صد برای شما مناسب خواهد بود. به همین دلیل است که خط یونیکس این روزها بسیار محبوب است. از نظر قابلیت اطمینان، اکثر سیستم عامل های مدرن بعید است که بتوانند با آن مطابقت داشته باشند. تصادفی نیست که نیروهای نظامی و سازمان های دولتی اغلب اولویت خود را به سیستم عامل های مشابه یونیکس می دهند.

بنابراین، با شروع تقریباً به عنوان یک پروژه اسباب‌بازی، امروزه خانواده سیستم‌عامل‌های یونیکس با موفقیت در زمینه‌های مختلفی اجرا می‌شوند: از بانک‌ها و سازمان‌های دولتی گرفته تا دفاتر و سوپرمارکت‌ها.

2.2 OS / 2

2.2.1 تاریخچه ایجاد

سیستم عامل OS / 2 به عنوان توسعه مشترک بین IBM و مایکروسافت (1984) آغاز شد. با این حال، این پروژه متعاقباً از هم پاشید و مایکروسافت نسخه OS / 2 خود را به WindowsNT تغییر داد و OS / 2 خود به توسعه در IBM ادامه داد که هنوز توجه لازم را به این سیستم عامل نکرد. به طور کلی، رقابت برای رهبری در بازار سیستم‌عامل بین این شرکت‌ها بر توسعه بیشتر سیستم‌عامل‌های توسعه‌یافته توسط مایکروسافت و IBM تأثیر زیادی گذاشت.

OS / 2 در ابتدا به عنوان جایگزینی برای MS-DOS در نظر گرفته شد. حتی در آن زمان مشخص بود که MS-DOS دارای تعدادی اشکالات قابل توجه مرتبط با حافظه محدود و سیستم فایل است و نمی تواند از پتانسیل کامل رایانه های آن زمان استفاده کند. مفاهیم پشت توسعه سیستم عامل جدید امیدوارکننده بود: OS / 2 از چندوظیفه پیشگیرانه، حافظه مجازی، رابط کاربری گرافیکی و اجرای برنامه های DOS پشتیبانی می کند. اما اکثر این طرح ها قابل اجرا نبودند.

اولین نسخه OS / 2 1.0 که در سال 1987 منتشر شد، دارای اکثر ویژگی های مورد نیاز برای یک سیستم عامل چندوظیفه ای بود. با این حال، فاقد نمایش گرافیکی و فاقد درایور برای بسیاری از چاپگرهای محبوب و سایر دستگاه‌ها بود. علاوه بر این، در مورد منابع کامپیوتری کاملاً خواستار بود. اجرا و تعامل برنامه های DOS بسیار کند انجام شد و گاهی اوقات غیرممکن بود. یک کاربر می تواند در یک زمان تنها با یک برنامه کار کند، در حالی که بقیه فرآیندها در پس زمینه اجرا می شوند. همه این کاستی ها اجازه ندادند OS / 2 بازار سیستم عامل هایی مانند یونیکس را "انفجار" کند. اکثر کاربران MS-DOS را که البته بی نقص نبودند، اما آشنا انتخاب کردند، یا به ویندوز 3.1 که تقریباً در همان زمان توسط مایکروسافت منتشر شد، روی آوردند.

من فکر می کنم IBM فقط برای انتشار اولین نسخه های OS / 2 عجله داشت. در غیر این صورت این سیستم عامل می توانست با خط ویندوز و MS-DOS رقابت کند.

البته، با هر نسخه جدید، OS / 2 بهتر و بهتر شد. در حال حاضر در OS / 2 v2.00 (1992)، کاستی های اصلی نسخه اول برطرف شد، علاوه بر این، این اولین سیستم عامل موجود و کارآمد 32 بیتی برای رایانه های شخصی بود که بدون شک در بازار سیستم عامل توجه را به خود جلب کرد. . این امر با انتشار نسخه های شبکه نسبتاً موفق OS / 2 (به عنوان مثال Warp 3، WarpConnect، Warp 4) دنبال شد. از آن لحظه به بعد، سیستم عامل های مشابه OS / 2 شروع به توسعه بیشتر شبیه به سیستم های شبکه کردند.

در سال 1997، دلایل خوبی برای گفتن اینکه OS / 2 زندگی خود را به عنوان یک سیستم عامل می گذراند، وجود داشت. به عنوان مثال، IBM رسماً اعلام می کند که OS / 2 را از بازار مصرف حذف می کند، بخش توسعه OS / 2 منحل شده است و به کاربران توصیه شده است که به سیستم عامل های دیگر مهاجرت کنند. با این حال، با دیدن اینکه جهان روز به روز بیشتر در حوزه تجارت و اینترنت غوطه ور می شود، IBM همچنان به پشتیبانی از سیستم های مشابه OS / 2 بازگشته و در سال 1999 نسخه جدیدی را ارائه می دهد: Warp4.5 ServerforE-business (Aurora).

بنابراین، سیستم های خانواده OS / 2 دارای چشم اندازهای توسعه کاملاً واقعی هستند و حداقل زود است که در مورد ناپدید شدن این سیستم عامل از بازار صحبت کنیم.

2.2.2 مزایا و معایب اصلی

از آنجایی که مشخص کردن مزایای کلی سیستم های خانواده OS / 2 بسیار دشوار است هر نسخه مزایا و معایب خاص خود را دارد که ممکن است در ارتقاءهای بعدی از بین برود. با این حال، من فکر می کنم که موارد زیر را می توان برای همه نسخه ها مشترک در نظر گرفت:

· پشتیبانی قدرتمند از امکانات اینترنت و شبکه (به ویژه برای نسخه های شبکه).

· عملکرد پایدار هسته سیستم که به معنای قابلیت اطمینان است.

اصلی ترین و بزرگترین عیب OS / 2 تعداد بسیار کم نرم افزارها و اپلیکیشن های نوشته شده برای این سیستم عامل است. تا حدی فکر می کنم این به خاطر سیاست خود IBM است. در همان ابتدای توسعه OS / 2، IBM به اندازه کافی با این سیستم برخورد نکرد و عملاً با توسعه دهندگان نرم افزار همکاری نکرد. همچنین جای تعجب است که درایورهای این سیستم در حال حاضر در وب سایت رسمی IBM موجود نیستند. علاوه بر این، هیچ یک از نسخه‌های OS / 2 با کدهای اصلی ارائه نمی‌شوند، یعنی. آی‌بی‌ام، علی‌رغم درخواست‌های متعدد کاربران، فرصت توسعه مستقل سیستم را از آن‌ها سلب می‌کند، همانطور که در مورد لینوکس وجود دارد. (اگرچه انصافاً باید توجه داشت که نسخه جدیدی از OS / 2 به نام osFree در حال حاضر برای انتشار آماده می شود که فقط به کد منبع باز اشاره دارد.) اینکه چرا چنین نگرش عجیب IBM نسبت به ایجاد آن برای من یک راز باقی مانده است. .

یک نقطه ضعف نسبی سیستم را می توان فرآیند نسبتاً دشوار و گیج کننده نصب سیستم عامل بر روی رایانه نامید. اگرچه، برای کاربران پیشرفته، بعید است که این مشکل ایجاد کند.

در غیر این صورت، OS / 2 یک سیستم پایدار است که با اطمینان جایگاه خاص خود (هر چند کوچک) را در بازار سیستم عامل اشغال می کند.

2.2.3 استفاده

امروزه بسیاری از بزرگ‌ترین شرکت‌ها در اروپا به OS / 2 برای مدیریت شبکه‌های کامپیوتری خود اعتماد دارند، اما باید توجه داشت که OS / 2 به طور گسترده در روسیه استفاده نمی‌شود. OS / 2 هرگز به عنوان یک سیستم عامل خانگی محبوبیت خاصی نداشته است و در سایه ویندوز باقی مانده است.

البته از OS / 2 به عنوان سرور استفاده می شود که قابلیت اطمینان و عملکرد از آن مورد نیاز است. به دلیل پایداری، OS / 2 در بانکداری به عنوان یک سیستم عامل برای دستگاه های خودپرداز استفاده می شود. OS / 2 همچنین برای استفاده در هر جایی که نیاز به پردازش مقادیر زیادی از اطلاعات باشد، به عنوان مثال، در ایستگاه های هواشناسی یا در زمینه تحقیقات علمی، راحت است. معمولاً از این سیستم برای توسعه برنامه ها استفاده می شود. جالب است بدانید که OS / 2 محبوبیت زیادی در بین گیمرها به دست آورده است تضاد برنامه ها به طور قابل توجهی کمتر از همان خط ویندوز است.

بنابراین، با جایگزین دیگری برای خانواده ویندوز آشنا شدیم. با این حال، من شک دارم که خانواده OS / 2 بتواند ویندوز را به شدت از بازار سیستم عامل خارج کند، حداقل امروز. اول از همه، این به دلیل نرم افزار کم این سیستم عامل و در نتیجه محبوبیت کم در بین دارندگان رایانه شخصی است. با این حال، شما نباید OS / 2 را نادیده بگیرید و آن را از روی ترازو بیاندازید، زیرا هنگامی که IBM توجه کافی به توسعه خود کرد، بلافاصله پتانسیل کامل خود را آشکار خواهد کرد.

2.3 MacOS

2.3.1 تاریخچه توسعه

لازم به ذکر است که MacOS برای نصب بر روی رایانه های تولید شده توسط اپل طراحی شده است. ویژگی این کامپیوترها این است که هم نرم افزار و هم "داخلی" خود کامپیوتر توسط یک شرکت، یعنی اپل، مونتاژ می شوند. این رویکرد به شما امکان می دهد بین نرم افزار و سخت افزاری که با آن استفاده می شود به حداکثر تعادل دست یابید، که به نوبه خود عملاً احتمال تداخل سخت افزاری را که اغلب هنگام استفاده از IBMPC با آن مواجه می شویم، از بین می برد. با این حال، چنین کامپیوترهایی ایده آل نیستند. نکته این است که آنها کامپیوترهای یکپارچه هستند، یعنی. اتصال دستگاه های جدید یا ارتقاء دستگاه های قدیمی تقریباً غیرممکن است. به اعتقاد من، این می تواند برای برخی از کاربران، به ویژه آنهایی که عادت دارند کامپیوتر خود را به تنهایی مونتاژ کنند، یک ضرر جدی باشد.

توجه به این نکته ضروری است که مکینتاش (یعنی کامپیوترهای به اصطلاح اپل) اولین کامپیوترهای شخصی بودند و MacOS بود که اولین سیستم عامل تجاری بود که نه یک رابط خط فرمان، بلکه یک رابط گرافیکی را به کاربر ارائه داد. امروزه با پنجره ها، پوشه ها، نمادها و اشاره گر ماوس برای ما آشنا است. انتشار این سیستم عامل به یک انقلاب واقعی در دنیای رایانه های شخصی تبدیل شد و بسیاری از تکنیک های به کار رفته در آن مبنایی برای توسعه سیستم عامل های آینده شد. برای مثال، رابط کاربری گرافیکی OCWindows تقریباً مشابه رابط کاربری macOS است. بنابراین به جرات می توان گفت که MacOS به نوعی مولد ویندوز است.

اولین نسخه MacOS در سال 1984 همراه با اولین رایانه شخصی مکینتاش اپل منتشر شد. تنها 216 کیلوبایت فضای دیسک را اشغال می کرد و حتی هنگام کپی کردن از یک رایانه به رایانه دیگر نیز کار می کرد. اما چنین محصولی کاملاً از جعل محافظت نشده بود ، بنابراین توسعه دهندگان تمام زمان بیشتری را نه تنها به بهبود فنی ، گسترش عملکرد و پایداری آن، بلکه به محافظت نیز اختصاص دادند. اشکال اصلی نسخه اول این بود که فقط یک برنامه "یخ زده" منجر به شکست کل سیستم شد، یعنی. هیچ اصل چندوظیفه ای پیشگیرانه وجود نداشت. این نقص در نسخه های بعدی سیستم عامل اصلاح شد. پس از اولین نسخه MacOS، 9 اصلاح منتشر شد. با هر نسخه، MacOS رنگارنگ‌تر، مؤثرتر، استفاده آسان‌تر و قابل اعتمادتر شد.

تا به امروز آخرین نسخه این سیستم عامل MacOSX است که بهترین نسخه های قبلی را در خود جای داده است و به نظر من به حق می توان آن را یکی از راحت ترین سیستم عامل ها نامید.

2.3.2 مزایا و معایب اصلی

بحث در مورد اینکه کدام یک بهتر از پلتفرم IBMPC یا مکینتاش است مدت هاست که ادامه دارد. از دیدگاه من، سؤال در مورد مزایا و معایب رایانه های مکینتاش، و از این رو سیستم عامل MacOS، نسبتاً نسبی است.

به طور سنتی، معایب macOS شامل قیمت بالا است. بله، در واقع، قیمت رایانه های اپل تقریباً دو برابر قیمت IBMPC های معمولی است. اما با این پول یک کامپیوتر زیبا با کیفیت عالی با شخصیت خاص خود و یک سیستم عامل مدرن که با در نظر گرفتن تمام آخرین فن آوری ها و دستاوردهای علمی توسعه یافته است، دریافت می کنید. در همان زمان ، MacOS به طور خاص برای رایانه های مکینتاش ایجاد شد که به شما امکان می دهد صد در صد از قابلیت های سخت افزاری استفاده کنید و برای موارد جدیدی که نمی دانید چه زمانی و با چه چیزی ارزیابی می شود پول اضافی پرداخت نکنید.

دومین اشکال، محدوده محدود کامپیوترهای مکینتاش است. به نظر می رسد که اپل کاربر را به چارچوب های خاصی سوق می دهد: از این گذشته، برای لذت بردن از تمام مزایای MacOS، او به سادگی باید برای خود یک مکینتاش بخرد. اما از طرف دیگر، با آمدن به فروشگاه، لازم نیست مدت زیادی فکر کنید که کدام مکینتاش را انتخاب کنید، در حالی که کیفیت هر یک از آنها در بالاترین سطح خواهد بود.

یکی دیگر از مشکلات ناخوشایند ماهیت بسته MacOS است که در درجه اول بر عدم وجود نرم افزار برای آن توسط توسعه دهندگان شخص ثالث تأثیر می گذارد. تاکنون برخی از محصولات نرم افزاری مهم که برای مکینتاش نوشته شده اند وجود نداشته اند و قماربازان نمی توانند پرسه بزنند، زیرا بازی ها در درجه اول برای ویندوز و سپس برای MacOS توسعه یافته اند و شما اصلاً اسباب بازی هایی را پیدا نمی کنید. اما زمان ثابت نمی‌ماند و سازمان‌هایی ظاهر می‌شوند که مشغول توسعه محصولات نرم‌افزاری برای MacOS هستند و توسعه‌دهندگان معروف نرم‌افزار علاقه‌مند هستند تا محصول خود را روی رایانه‌های مکینتاش کار کنند. مهمتر از همه، اپل BootCamp را در آخرین نسخه MaOS قرار داده است که نصب و استفاده از هر نرم افزاری را بر روی رایانه های مکینتاش آسان می کند.

همچنین از جمله مزایای بدون شک MacOS، به نظر من، عدم تضاد بین نرم افزار و سخت افزار است، که همان ویندوز به هیچ وجه نمی تواند به آن ببالد، و تقریباً محافظت کامل در برابر ویروس ها، کرم ها و دیگر ارواح شیطانی، زیرا تعداد بدافزارهایی که می تواند MacOS را آلوده کند عملا برابر با صفر است. بنابراین، من معتقدم که این سیستم عامل هنوز دارای مزایای بیشتری نسبت به معایب است.

بحث در مورد اینکه کدام بهتر است را می توان به طور نامحدود ادامه داد، اما اگر از کسانی که تصمیم گرفته اند و کامپیوتر مکینتاش خریداری کرده اند بپرسید که آیا موافقند آن را به دیگری تغییر دهند، به احتمال زیاد پاسخ منفی دریافت خواهید کرد. کاربران مکینتاش عاشق کامپیوترهای خود هستند. این را می توان با این واقعیت توضیح داد که مدیریت اپل محصولات خود را در درجه اول برای مردم ایجاد می کند. استراتژی اصلی آنها زیبایی و راحتی است. علاوه بر این، همه تحولات آنها همگام با زمانه و حتی کمی جلوتر از آن است. با خرید یک کامپیوتر مکینتاش با سیستم عامل MacOS، می توانید مطمئن باشید که شش ماه دیگر منسوخ نمی شود، اما برای مدت طولانی مرتبط خواهد بود.

.3.3 استفاده

با توجه به تمام مزایای MacOS، بلافاصله این سوال پیش می آید که چرا هنوز به اندازه رقیب اصلی خود، سیستم عامل معروف ویندوز، گسترده نیست. پاسخ آن از کاستی های موارد بالا می آید: قیمت بالا، کمبود نرم افزار، مدل های محدود و .... بنابراین، اکثر کاربران پیکربندی آشنای IBMPC را با ویندوز آشنا ترجیح می دهند.

با این حال، با وجود این، MacOS همچنان محبوبیت قابل توجهی در حوزه کسب و کار و در میان متخصصان درگیر در گرافیک کامپیوتری و چاپ به دست آورد.

بر این اساس، فکر می‌کنم زمان زیادی دور نیست که رایانه‌های اپل با macOS آنقدر محبوب شوند (و همه پیش‌نیازهای این کار را دارند) که با سیستم عامل ویندوز خود با مایکروسافت رقابت کنند.

نتیجه

بنابراین در اینجا ما در پایان مرور کلی خود از جایگزین های ویندوز هستیم. البته سیستم عامل های بسیار دیگری غیر از آنهایی که در کار من حضور دارند، وجود دارند که می توانند جایگزین ویندوز شوند. من سعی کردم فقط پرکاربردترین آنها را در نظر بگیرم. با قطعیت می‌توان گفت که هیچ «بد» یا «خوب» در میان آنها وجود ندارد. هر یک از سیستم عامل های در نظر گرفته شده مزایا و معایب خاص خود را دارد. استفاده از آنها به دامنه کاربرد و بر این اساس به وظایفی که به آنها محول می شود بستگی دارد. برخی از سیستم عامل ها برای پردازش مقادیر زیادی اطلاعات ایده آل هستند و با قابلیت اطمینان آنها متمایز می شوند، به عنوان مثال، خط سیستم های OS / 2. بقیه مقرون به صرفه هستند، مانند لینوکس. دیگران با رنگارنگی و نمایشی بودن خود راضی هستند، برای مثال MacOS.

البته، سخت است که نپذیریم که زاده فکر مایکروسافت برای مدت طولانی در میان نرم‌افزارهای بازار سیستم‌عامل، به‌ویژه در میان سیستم‌عامل‌های خانگی، پیشتاز خواهد بود. دلایل کاملاً قابل درک برای این وجود دارد: شخصیت انبوه، در دسترس بودن، سهولت استفاده و غیره. با این حال، رقبای کاملاً شایسته ای برای استفاده خانگی نیز وجود دارد. چشمگیرترین این سیستم ها، به نظر من، macOS است. این سیستم دارای اشکالاتی است، اما همه آنها با توجه به راحتی و قابلیت اطمینان آن از بین می روند. علاوه بر این، ویندوز نیز یک سیستم کامل نیست. تضاد برنامه ها به تنهایی ارزش زیادی دارد و نیاز ویندوز به منابع سخت افزاری به هیچ وجه کم نیست.

در هر صورت، هنگام انتخاب یک سیستم عامل، نباید با روند مد هدایت شوید. همانطور که گفتم، ابتدا باید از وظایفی که سیستم عامل باید انجام دهد، ادامه دهید. در واقع، همانطور که در همان ابتدای کار متوجه شدیم، سیستم عامل حلقه اتصال اصلی زمانی است که شخص با رایانه کار می کند. موفقیت این کار، و فقط راحتی آن، می تواند به شدت به انتخاب سیستم عامل بستگی داشته باشد.


1. Olifer V.G., Olifer N.A. سیستم عامل های شبکه - SPb .: پیتر، 2002 -544 ص.

2. - 400s.

3. Tanenbaum E. سیستم عامل های مدرن. ویرایش دوم - SPb .: پیتر، 2002 - 1040s.

4. Kuznetsov S. "UNIX مرده است، و من زنده هستم" - مقاله در اینترنت (http://www.citforum.ru/database/articles/art_7.shtml)

5. هدف و عملکردهای سیستم عامل. - مقاله در اینترنت (http://sapr.mgsu.ru/biblio/ibm/contents/nazn.htm#UNIX)

6.www.maclinks.ru - سایت اختصاص داده شده به macOS

7. ویکی پدیا - دانشنامه آزاد (www.wikipedia.org)


Partyka T.L.، Popov I.I. سیستم عامل ها، محیط ها و پوسته ها: یک آموزش. - M .: FORUM: INFRA - M، 2003.

V.G. اولیفر، N.A. اولیفر سیستم عامل های شبکه - SPb.: پیتر، 2002

Tanenbaum E. سیستم عامل های مدرن. ویرایش دوم - SPb.: پیتر، 2002

Partyka T.L.، Popov I.I. سیستم عامل ها، محیط ها و پوسته ها: یک آموزش. - M .: FORUM: INFRA - M، 2003.

Kuznetsov S. "UNIX مرده است، اما من هنوز زنده هستم." - مقاله در اینترنت. (http://www.citforum.ru/database/articles/art_7.shtml)

ویکی‌پدیا دانشنامهٔ آزاد است (www.wikipedia.org)

هدف و عملکردهای سیستم عامل. - مقاله در اینترنت (http://sapr.mgsu.ru/biblio/ibm/contents/nazn.htm#UNIX)

سیستم عامل

سیستم عامل

سخنرانی شماره 5

سیستم عامل

1. هدف و عملکردهای اساسی سیستم عامل.

منظور ما از اصطلاح "سیستم عامل" یک مجموعه است

برنامه هایی که عملکرد آنها کنترل استفاده و

توزیع منابع سیستم محاسباتی گفتیم که در

سیستم محاسباتی دارای منابع فیزیکی است، یعنی آن منابعی که

متصل به تجهیزات واقعی (دیسک های مغناطیسی، رم،

زمان پردازنده). ما همچنین گفتیم که سیستم برای آن موفق است

توابع منطقی وجود دارد (گاهی اوقات آنها را مجازی می نامند)

منابع، یعنی منابعی که به شکل تجهیزات واقعی نیستند

وجود دارند، اما در قالب برخی وسایل ارائه شده اجرا می شوند

به کاربر. منابع فیزیکی و منطقی را به سادگی می نامیم

منابع سیستم محاسباتی

هر سیستم عامل (OS) با برخی از نهادها کار می کند،

که همراه با روش های مدیریت آنها تا حد زیادی آن را مشخص می کند

خواص چنین موجودیت هایی ممکن است شامل مفاهیم یک فایل، یک فرآیند،

شی و غیره هر سیستم‌عامل مجموعه‌ای از چنین موجودیت‌هایی دارد. به عنوان مثال، در سیستم عامل

ویندوز NT، چنین موجودیت هایی شامل مفهوم یک شی و بعد از آن است

تمام توابع ممکن برای مدیریت این موجودیت ارائه شده است. اگر ما

بیایید یونیکس را ببینیم، سپس در آن چنین موجودی، اول از همه، وجود دارد

مفهوم یک فایل، و دوم، مفهوم یک فرآیند.

فرآیند، موجودی است که عملاً در آن وجود دارد

تمام سیستم عامل ها فرآیند برنامه ای است که دارای منابع است.

دو برنامه (یعنی کد و داده های مورد استفاده) و

تمام منابعی را که به برنامه تعلق دارند در نظر بگیرید (اینها می توانند عبارتند از:

فضای RAM، داده های موجود در یک دستگاه ذخیره سازی خارجی،

مالکیت منابع دیگر، به عنوان مثال، خطوط ارتباطی). اگر مجموعه ها

منابع متعلق به دو برنامه منطبق هستند، در این صورت ما این کار را نمی کنیم

ما می توانیم در مورد این برنامه ها به عنوان دو فرآیند صحبت کنیم - این یکی است

روند. اگر هر برنامه مجموعه ای از منابع خود را دارد، علاوه بر این، اینها

مجموعه ها ممکن است متقاطع شوند، اما منطبق نباشند، پس ما در مورد دو مورد صحبت می کنیم

فرآیندها

در حالتی که مجموعه منابع چندین فرآیند دارند

تقاطع غیر خالی، پس ما یک سوال در مورد استفاده داریم، بنابراین

نامیده شد، منابع مشترک در قسمت آخر در این مورد صحبت کردیم

سخنرانی ها: مثال را با دستگاه چاپ به خاطر بسپارید. ما ممکن است چندین داشته باشیم

فرآیندهایی که هرکدام یک دستگاه را به عنوان منبع خود دارند

چاپ کنید و در هر زمان می توانید با سفارش به این منبع مراجعه کنید

برای چاپ برخی اطلاعات همگام سازی کار فرآیندها با مثال

دستگاه چاپ یکی از عملکردهای سیستم عامل را به ما نشان داد که این است

مدیریت عملکرد فرآیندها بیایید ببینیم چه چیزی درک می شود

تحت کنترل فرآیند

مدیریت فرآیند:

1. مدیریت زمان از مرکز

پردازنده

2. مدیریت "swap" و بافر ورودی.

3. مدیریت منابع مشترک.

مشکلات اصلی کنترل فرآیند

اولین مورد کنترل استفاده از زمان CPU است

(CPU)، یا این موضوع گاهی اوقات به عنوان زمان بندی CPU، یعنی مدیریت نامیده می شود

در چه مقطع زمانی کدام یک از وظایف یا کدام یک از فرآیندها خواهد بود

فعالیت CPU خود: CPU روی کدام یک از فرآیندها اجرا می شود.

دوم مدیریت "swap" و بافر ورودی است. یک موقعیت را فرض کنید

وقتی تعداد زیادی از افراد، برای مثال کل دوره، پشت کامپیوتر نشسته اند،

و همه در همان زمان برخی از وظایف را در قالب فرآیندها آغاز کردند. در سیستم

وظایف زیادی تشکیل شد (تضمین بیش از صد). و کل محاسبات

سیستم نمی تواند صد کار را برای کار در حالت چندبرنامه نویسی بپذیرد -

خیلی زیاد است در این حالت به اصطلاح بافر ورودی تشکیل می شود

وظایف، یا بافر ورودی فرآیندها، یعنی بافری که در آن

آن دسته از فرآیندهایی که در انتظار شروع پردازش خود توسط پردازنده هستند. ناشی می شود

مشکل ترتیب انتخاب فرآیندها از این بافر برای شروع پردازش.

این یک کار زمان‌بندی بافر است.

حال بیایید مشکل زمان بندی "swap" را در نظر بگیریم. پردازنده

چندین فرآیند در حال پردازش است و ما با وظیفه آزادسازی روبرو هستیم

رم واقعی برای کارهای دیگر در این مورد وجود دارد

نیاز به پمپ کردن برخی از وظایف پردازش شده به یک خارجی

دستگاه حافظه. از چه الگوریتمی برای پمپاژ اینها استفاده خواهیم کرد

وظایف؟ استراتژی پمپاژ چه خواهد بود؟ برای مثال می توانید هر کدام را پمپاژ کنید

یک مشکل حتی چگونه سازماندهی فرآیند پمپاژ کم و بیش سودآور است -

این مشکل است.

سوم، مدیریت منابع مشترک است. مجموعه ای از منابع وجود دارد

دسترسی که در مقاطع خاصی از زمان از طرف سازماندهی می شود

فرآیندهای مختلف این همان برخورد با دستگاه چاپ است. یکی از

توابع، که تا حد زیادی ویژگی های سیستم عامل را تعیین می کند، این یک تابع است

اطمینان از سازماندهی تعامل فرآیندها و استفاده از مشترک

منابع مشکل از مثال دستگاه چاپ به راحتی حل می شود، اما

اگر دو برنامه دارای یک قطعه RAM مشترک هستند، کنترل کنید

چنین منبع مشترک یک کار دلهره آور است.

حالا بیایید نگاهی به طراحی سیستم عامل بیندازیم. تقریباً هر سیستم عاملی دارد

مفهوم اصلی. هسته سیستم عامل معمولاً قسمت مقیم آن است، یعنی همان

بخشی از سیستم عامل که در فرآیندهای مبادله شرکت نمی کند (همیشه اینطور است

موجود در RAM) و در حالت OS یا در حالت کار می کند

سرپرست (در همان حالت تخصصی که در مورد آن صحبت کردیم

در آخرین سخنرانی). هسته شامل کنترل های اصلی برای اصلی است

موجودیت های خاص یک سیستم عامل معین، و همچنین ممکن است شامل مجموعه ای باشد

برنامه هایی که کنترل برخی از دستگاه های فیزیکی را فراهم می کنند. V

توابع هسته شامل مدیریت وقفه است.

ما گاهی اوقات به برنامه های مدیریت منابع به عنوان درایورها اشاره می کنیم.

دستگاه ها (فیزیکی یا منطقی). به عنوان مثال، هسته سیستم عامل باید شامل باشد

درایور حافظه با دسترسی تصادفی

سیستم محاسباتی سطح اول عمدتاً شامل رانندگان است

دستگاه های فیزیکی سطح بعدی مدیریت منطقی است

سپس درایورهای کنترل فایل ممکن است در طرح ما ظاهر شوند، که، در

در واقع به درایورهای مدیریت دیسک منطقی و درایورهای موجود در ارتباط هستند

به نوبه خود با درایورهای دستگاه های فیزیکی واقعی و غیره مرتبط هستند

اصلاً لازم نیست که همه اجزای سیستم عامل در حالت کار کنند

سرپرست یا در حالت سیستم عامل. بسیاری از مولفه هایی که به طور منطقی

به اندازه کافی دور از هسته، آنها می توانند در یک کاربر معمولی کار کنند

حالت همچنین لازم نیست، همه این اجزای سیستم عامل در یک ساکن کار می کنند

حالت معمولاً برای بسیاری از عملکردها این مورد نیاز نیست.

حالا بیایید به بررسی دقیق تری از عملکردهای اصلی سیستم عامل بپردازیم.

کنترل استفاده از زمان CPU

در واقع بستگی به این دارد که کدام الگوریتم برای انتخاب مسئله به آن منتقل شود

فعالیت CPU در سیستم عامل، بسیاری از عملیات واقعی پیاده سازی شده است

ویژگی های این سیستم عامل انتخاب الگوریتم تقریباً به طور کامل توسط آنها تعیین می شود

معیارهای عملکردی که برای ارزیابی عملکرد استفاده می شود

سیستم عامل کار می کند. بنابراین برای مدیریت زمان استفاده از CPU در کنار شما هستیم

در زمینه در نظر گرفتن انواع سیستم عامل در نظر بگیرید.

وضعیت اول. من تعداد زیادی کار یا برنامه دارم،

نیاز به مقدار زیادی از قدرت محاسباتی سیستم. اینها وظایف هستند

که به آنها مسائل شمارش می گویند; آنها از نظر محاسباتی فشرده هستند

و استفاده کم از وسایل خارجی این وظایف باید در انجام شود

یک سیستم محاسباتی ملاک کارایی چه خواهد بود

برای اینکه سیستم هنگام انجام این دسته از وظایف کار کند؟ چه مجموعه ای

پارامترها را می توان گرفت و گفت: اگر بزرگ هستند، خوب است اگر

برعکس بد است؟ برای چنین شرایطی ملاک بازده کاری است

سیستم محاسباتی درجه استفاده از CPU است. اگر او کوچک است

بیکار (یعنی در حالت آماده به کار کار می کند و همه فرآیندها مشغول هستند

تبادل، یا سیستم عامل زمان می برد)، پس می توان گفت که چنین است

سیستم به طور موثر کار می کند. این را می توان با استفاده از

الگوریتم برنامه ریزی مربوطه که به شرح زیر است.

مجموعه وظایفی را که برای پردازش داریم راه اندازی می کنیم.

قابلیت های سیستم عامل (یا حداکثر، یا همه وظایف)، که تضمین شده است

حالت چند برنامه نویسی الگوریتم زمانبندی زمان CPU در این

مورد به صورت زیر خواهد بود: اگر CPU به یکی از فرآیندها اختصاص داده شود، پس این

این فرآیند CPU را اشغال می کند تا زمانی که یکی از شرایط زیر رخ دهد:

1. اشاره به دستگاه خارجی.

2. تکمیل فرآیند.

3. واقعیت ثابت از حلقه کردن فرآیند.

به محض وقوع یکی از این موقعیت ها، کنترل منتقل می شود

فرآیند دیگری تعداد انتقال کنترل از یک فرآیند به

دیگری به حداقل می رسد. از زمان انتقال کنترل از یک فرآیند

در سیستم عامل دیگری، باید مجموعه ای از اقدامات خاص را انجام دهد و این یک ضرر است

زمان، پس در اینجا این تلفات به حداقل می رسد. این حالت عملکرد سیستم عامل

حالت انفجاری نامیده می شود. سیستم عاملی که در این حالت اجرا می شود

سیستم عامل دسته ای نامیده می شود.

حال شرایطی را تصور کنید که در آن تعداد قابل توجهی از مردم

در آزمایشگاه کامپیوتر است و هر کدام از آنها تعدادی را ویرایش می کنند

متن هر ترمینال نسخه مخصوص به خود را از ویرایشگر متن دارد.

بیایید ببینیم اگر الگوریتم زمان بندی را اعمال کنیم چه اتفاقی برای سیستم می افتد،

برای اولین مورد تعیین شده است. فرض کنید یکی از کاربران کمی است

پشت ترمینال چرت زد و هیچ فعالیتی نشان نداد. زمان CPU خواهد بود

با این فرآیند مرتبط است، زیرا این فرآیند تبادلی را انجام نمی دهد و انجام نمی دهد

به پایان رسید زیرا ویرایشگر آماده کار است. در این زمان، همه باقی مانده است

کاربران باید منتظر بیدار شدن فرد خواب باشند. تا می شود

وضعیت یخ زدن این بدان معناست که الگوریتمی است که برای اولی خوب است

مورد، برای این سیستم حتی با قوی ترین ماشین مناسب نیست.

بنابراین، برای کارهایی که مشکل ارائه تعداد زیادی از

از کاربران خدمات محاسباتی (وظایف تعاملی) استفاده می شود

الگوریتم های دیگر بر اساس معیارهای عملکرد متفاوت است.

برای چنین سیستمی، معیار زمان انتظار کاربر مناسب است:

لحظه ای که دستوری برای انجام عملی فرستاد، تا آن لحظه

پاسخ سیستم به این دستور هر چه سیستم کارآمدتر کار کند، کارایی آن بیشتر است

میانگین زمان انتظار در سیستم کمتر است.

بیایید وضعیت مورد دوم را در نظر بگیریم. این سیستم حاوی مقداری است

تعداد فرآیندها و وظیفه زمانبندی توزیع زمان CPU است

به طوری که زمان پاسخگویی سیستم به درخواست کاربر بوده است

حداقل، یا حداقل تضمین شده است. موارد زیر پیشنهاد می شود

طرح. این سیستم از پارامتری استفاده می کند (t که نامیده می شود

کوانتوم زمان (به طور کلی، کوانتوم زمان مقداری است،

که در حین راه اندازی سیستم قابل تغییر است). همه بسیاری از فرآیندها،

که در چند برنامه نویسی است به دو قسمت تقسیم می شود

زیر مجموعه ها زیرمجموعه اول شامل آن دسته از فرآیندهایی است که هنوز انجام نشده اند

آماده برای ادامه اجرا: به عنوان مثال، آن دسته از فرآیندهایی که سفارش داده شده است

خود را مبادله کنید و منتظر نتایج آن باشید. و فرآیندهایی وجود دارند که آماده هستند

پیاده سازی. کار به شرح زیر انجام خواهد شد. فرآیند

که در حال حاضر CPU را اشغال کرده است مالک آن خواهد بود

وقوع یکی از حوادث زیر:

1. رسیدگی به سفارش مبادله.

2. تکمیل فرآیند.

3. فرسودگی کوانتوم اختصاص داده شده به این فرآیند

زمان (t.

هنگامی که یکی از این رویدادها رخ می دهد، زمانبندی سیستم عامل یکی را انتخاب می کند

فرآیندهای آماده اجرا، برخی از پردازش و انتقال منابع به آن

CPU. و بسته به الگوریتم این فرآیند را انتخاب می کند

زمان بندی که در این سیستم عامل خاص استفاده شده است. برای مثال،

فرآیند را می توان به صورت تصادفی انتخاب کرد. راه دوم این است

همانطور که بود، یک دور زدن متوالی از فرآیندها وجود دارد، یعنی ما وارد کردیم

ابتدا یکی از فرآیندها را کار کنید، سپس آزاد می شود و زمان CPU خواهد بود

به فرآیند آماده اجرا بعدی ارائه می شود.

سومین معیاری که بر اساس آن کار بعدی انتخاب می شود می تواند باشد

زمانی که پردازش داده شده توسط CPU ارائه نشده است. در این مورد، سیستم

می تواند فرآیندی را با طولانی ترین زمان انتخاب کند. این الگوریتم ها

باید در سیستم عامل پیاده سازی شوند، به این معنی که آنها باید ساده باشند، در غیر این صورت

این سیستم برای خود بی اثر خواهد بود (اگرچه چنین سیستم هایی وجود دارد:

به ویژه، خانواده ویندوز آسیب می بیند).

به این نوع سیستم‌عامل، سیستم‌عامل اشتراک‌گذاری زمانی گفته می‌شود. او در یک حالت کار می کند

که در آن زمان پاسخگویی سیستم به درخواست کاربر به حداقل می رسد. V

در حالت ایده آل، با توجه به این واقعیت که زمان پاسخ به درخواست حداقل است،

باید به کاربر این توهم داده شود که تمام منابع سیستم

فقط در اختیار او قرار می گیرد.

حالا بیایید مشکل بعدی را ببینیم. فرض کنید ما یک هواپیما داریم

autopilot-controlled، که عملیاتی را روی خلبان خودکار انجام می دهد

کاهش می یابد. هر هواپیما دارای دستگاهی است که ارتفاع را از آن اندازه گیری می کند

هواپیما به سطح زمین حالت عملیاتی هواپیما به گونه ای است که کنترل

عملکردهای آن توسط یک کامپیوتر طبق یک برنامه مشخص انجام می شود.

بنابراین، اگر ما یک سیستم خلبان خودکار داریم و هواپیما در حال فرود است، این سیستم است

باید ارتفاع پرواز را کنترل کند. کامپیوتر مرکزی این هواپیما

می تواند چندین مشکل را حل کند: می تواند ارتفاع پرواز را کنترل کند،

سطح سوخت در مخازن، برخی از شاخص های عملکرد موتور و غیره.

هر یک از این توابع با فرآیند خاص خود مدیریت می شوند. فرض کنید y

ما یک سیستم عامل دسته ای داریم و سطح سوخت در مخازن را به دقت کنترل می کنیم. در

بدیهی است که یک وضعیت اضطراری ایجاد می شود، زیرا هواپیما ادامه می دهد

کاهش می یابد، اما سیستم عامل متوجه آن نمی شود.

فرض کنید یک سیستم اشتراک زمان داریم. یکی از صفات

سیستم اشتراک زمانی ناکارآمد است به دلیل اینکه در

این سیستم تعداد زیادی سوئیچینگ از فرآیند به آن را فراهم می کند

فرآیند، و این عملکرد بسیار پر زحمت است. وضعیت مشابه: قد

به صفر می رسد و سیستم عامل مشغول نصب مجدد جداول خانگی است. چنین

گزینه نیز مناسب نیست.

برای حل این نوع مشکلات، به ابزار برنامه ریزی خود نیاز دارید. V

در این مورد، به اصطلاح سیستم عامل های زمان واقعی استفاده می شود، اصلی

که ملاک آن زمان پاسخگویی تضمینی سیستم به

وقوع یک رویداد از مجموعه ای از از پیش تعریف شده

مناسبت ها. یعنی سیستم دارای مجموعه ای از رویدادها است که سیستم در هر کدام

موقعیت ها برای مدتی از پیش تعیین شده واکنش نشان می دهند و آنها را پردازش می کنند.

برای مثال ما، چنین رویدادی می تواند ورود اطلاعات از

سنسور ارتفاع در واقع، موارد بسیار ساده برای سیستم عامل این کلاس استفاده می شود.

الگوریتم ها تمام برنامه ریزی در این معیار نهفته است، یعنی

تضمین می شود که رویداد در زمانی که بیشتر از مقداری نباشد پردازش می شود

مقدار آستانه اما سیستم‌عامل بلادرنگ معمولاً خود را دارد

یک دستگاه خاص، که نه تنها با این ساده تعیین می شود

الگوریتم برنامه ریزی، بلکه سازماندهی مجدد داخلی سیستم.

خلاصه کردن آن در تابع کنترل استفاده

زمان CPU و زمانبندی CPU، توجه شما را به دو واقعیت جلب می کنم. اولین واقعیت

این همان چیزی است که الگوریتم هایی که در سیستم برنامه ریزی پیاده سازی می شوند

توزیع زمان CPU تا حد زیادی ویژگی های عملیاتی را تعیین می کند

سیستم محاسباتی من به طور خاص مثال هایی زدم، پیشنهاد دادم

از سیستم عامل های مختلف برای اهداف مختلف استفاده کنید. واقعیت دوم ما سه مورد را در نظر گرفتیم

انواع معمولی سیستم عامل: سیستم های پردازش دسته ای، سیستم های جداسازی

سیستم های زمان و زمان واقعی امروز می توانیم در مورد آن صحبت کنیم

این واقعیت که سیستم بلادرنگ یک کلاس جداگانه از سیستم عامل است. تضمین

سیستم عامل ویندوز هیچ شیئی را که در آن واقعی است مدیریت نمی کند

زمان بسیار حیاتی است همچنین چنین اشیا و سیستم عاملی را مدیریت نخواهد کرد

سولاریس یا لینوکس و غیره چون این سیستم ها سیستم نیستند

به موقع.

دو حالت اول، انفجار و اشتراک زمانی، قابل تقلید هستند

در چنین سیستم عامل های پذیرفته شده عمومی. واقعاً، سیستم عامل بزرگ و جدی هستند

سیستم های مختلط، یعنی آنها آن را در عناصر زمانبندی CPU دارند

هم الگوریتم هایی که به شما امکان مدیریت مسائل شمارش را می دهند و هم الگوریتم ها،

امکان مدیریت وظایف تعاملی یا رفع اشکال،

که به CPU کمی نیاز دارند.

نمونه ای از چنین سازماندهی برنامه ریزی CPU می تواند موارد زیر باشد

طرح. زمانبندی بر روی یک طرح دو لایه ساخته شده است. ما معتقدیم که

مجموعه ای از مسائل می تواند شامل، به عنوان مثال، شمارش مسائل و

وظایف تعاملی سطح اول اولویت بین این دو را تعیین می کند

کلاس هایی از وظایف و CPU را ابتدا به کار محاسباتی می دهد یا به یک کار تعاملی

وظیفه. و سطح دوم مشخص می کند که قبلاً در مورد چه چیزی صحبت کردیم، یعنی.

چگونه یک کار را در همان کلاس انتخاب کنیم و چگونه آن را قطع کنیم. چنین

سیستم ترکیبی می تواند به صورت زیر کار کند. سطح اول

برنامه ریزی بر اساس اصل زیر کار خواهد کرد: اگر در حال حاضر وجود نداشته باشد

یک کار تعاملی منفرد آماده انجام نیست (و این کاملاً واقعی است

وضعیت اگر کاربران در حال ویرایش متن هستند)، سپس CPU

به وظایف شمارش منتقل می شود، اما یک شرط اضافه می شود: به محض

حداقل یک کار تعاملی ظاهر می شود، کار شمارش قطع می شود و

کنترل به بلوک وظایف تعاملی منتقل می شود. این چیزی است که نگران است

اولین تابع کنترل فرآیند

مبادله و مدیریت بافر ورودی.

در اینجا الگوریتم های زمان بندی ضروری هستند، اما نه چندان حیاتی. V

سیستم های واقعی اغلب یک بافر swap مشترک دارند، به عنوان مثال. آن فضا

در رسانه های خارجی، که در آن اطلاعات از عملیات پمپاژ می شود

حافظه و بافر ورودی فرآیندها. این اولین مشاهده است.

تذکر دوم. سیستم عامل های مدرن کاملا "تنبل" هستند و پمپاژ می کنند

اغلب نه در واحدهای بلوک های حافظه فرآیندی، بلکه پمپاژ می شوند

کل فرآیند این دو سؤال را ایجاد می کند: معیار جایگزینی چیست

فرآیند و معیار انتخاب از میان بافر فرآیندی که ما داریم چیست

باید برای چندبرنامه نویسی وارد شود. ساده ترین گزینه

استفاده از زمان صرف شده در یک حالت خاص است. V

مورد اول، اگر در مورد موضوع پمپاژ فرآیند از حالت فعال تصمیم گیری کنیم

حالات از عدد پردازش شده در ناحیه مبادله، سپس می توانیم آن را بگیریم

فرآیندی که برای طولانی ترین زمان در حالت پردازش است

زمان نجومی فرآیند معکوس می تواند متقارن باشد، به عنوان مثال. ما

می‌توانیم از بافر ورودی فرآیندها، فرآیندی را که در آنجا طولانی‌ترین است، بگیریم

واقع شده. در واقع اینها الگوریتم های برنامه ریزی ساده و واقعی هستند و

آنها را می توان با توجه به معیارهای مختلف تغییر داد. یکی از

معیارها، اگر همه وظایف به دسته های مختلف تقسیم شوند، یعنی می توانند

وظایف سیستم عامل باشند - در این مورد، اول از همه در نظر گرفته می شوند (و

در میان آنها الگوریتمی برای تخمین زمان صرف شده در آنجا وجود دارد) و تمام

سایر وظایف این مدل شبیه مدل بی عدالتی زندگی است.

در جامعه ای که افراد قادر مطلق وجود دارند که همه چیز به آنها اجازه داده می شود، اما وجود دارند

افرادی که می توانند صبر کنند

مدیریت منابع مشترک

در اینجا ما فقط مشکل را مشخص می کنیم، زیرا راه حل های خاص آن است

ما به مثال سیستم عامل یونیکس نگاه خواهیم کرد.

فرض کنید دو فرآیند وجود دارد که یک اشتراک دارند

فضای رم در این صورت منابع مشترک می توانند

کار در حالت های مختلف، به عنوان مثال. این وضعیت است که مستثنی نیست زمانی که دو فرآیند

در واقع بر روی ماشین های مختلف قرار دارند، اما آنها توسط یک میدان عملیاتی مشترک به هم متصل می شوند

حافظه در این مورد، بافر کردن کار با حافظه مشکل دارد،

زیرا هر یک از ماشین ها مکانیسم های بافر خواندن مخصوص به خود را دارند -

سوابق. در اینجا یک وضعیت بد بوجود می آید زمانی که حالت فیزیکی

حافظه با محتوای واقعی آن مطابقت ندارد. و همچنین وجود دارد

برخی از مشکلات برای سیستم عامل در حال اجرا بر روی دو ماشین.

مشکل بعدی بگذارید دو فرآیند وجود داشته باشد که روی آن کار کنند

یک ماشین. باید وسایل خاصی وجود داشته باشد که اجازه دهد

دسترسی به حافظه مشترک را همگام کنید، یعنی به شما اجازه ایجاد می دهد

شرایطی که تحت آن مبادله هر یک از فرآیندهای در حال اجرا با عملیاتی

حافظه به درستی رخ خواهد داد. این بدان معناست که هر بار که می خوانید

اطلاعات از حافظه مشترک باید تضمین شود که همه

کاربرانی که شروع به نوشتن چیزی در این حافظه کرده‌اند، این فرآیند قبلاً انجام شده است

به پایان رسید - باید در تبادل با حافظه مشترک همگام سازی وجود داشته باشد.

در واقع، حل مشکلات اغلب به چنین چیزی نیاز ندارد

منابع مشترک، مانند حافظه مشترک، اما من مایلم که فرآیندها اینگونه باشند

که در یک زمان عمل می کنند، می توانند بر روی هر یک تأثیر بگذارند

روی یک دوست این اثر شبیه به وقفه است. برای پیاده سازی این در

بسیاری از سیستم عامل ها ابزارهایی برای انتقال سیگنال بین فرآیندها دارند

برخی از نرم افزارهای شبیه سازی وقفه وجود دارد. یک فرآیند می گوید -

سیگنال را به فرآیند دیگری منتقل کنید. یک وقفه در فرآیند دیگری رخ می دهد

اجرای این فرآیند و انتقال کنترل به برخی

یک تابع از پیش تعریف شده که باید سیگنال دریافتی را مدیریت کند. این

عملکرد سوم سیستم عامل

توجه شما را به چنین عملکردهای سیستم عاملی که بر آن تأثیر می گذارد جلب کردم

خواص عملیاتی در واقع، هر سیستم‌عاملی شامل مجموعه عظیمی نیز می‌شود

توابع دیگری که باعث می شود این سیستم کار کند.

سخنرانی شماره 6

در آخرین سخنرانی، ما در مورد این واقعیت صحبت کردیم که تقریباً هر

سیستم عامل بافر I/O را فراهم می کند. در حقیقت،

یکی از وظایف اصلی سیستم عامل است. مشابه مبارزه با

سرعت های مختلف دسترسی به اجزای مختلف سیستم محاسباتی

سیستم عامل بافر نرم افزار را در محدوده خود معرفی می کند،

که مسائل و مشکلات هموارسازی زمان دسترسی را نیز حل می کند

همگام سازی به طور کلی (به عنوان مثال با دستگاه چاپ). هموار کردن مشکلات

دسترسی تقریباً هر سیستم عاملی است

دارای بافرهای کش است که دسترسی به حافظه خارجی را جمع آوری می کند

دستگاه (VCU) شبیه بافر سخت افزاری هنگام کار با عملیاتی است

حافظه این امکان بهینه سازی قابل توجهی از سیستم عامل را فراهم می کند.

نشانه وجود چنین بافری درخواست توقف است

قبل از خاموش کردن دستگاه، سیستم عامل را اجرا کنید. مثلا کار کردن

با سیستم عامل MS-DOS، می توانید کامپیوتر خود را در هر زمانی خاموش کنید

زمان، زیرا چنین بافری در آن وجود ندارد. روی سیستم عامل ها

مانند ویندوز و یونیکس، خاموش کردن دستگاه در زمانی که صرفاً نادرست است

سیستم کار، در این مورد این احتمال وجود دارد که

برخی از دست دادن اطلاعات (به عنوان مثال، لحظات سفارش برای تبادل و

مبادله مستقیم به دور از یکسان است). درجه این بافر

کارایی واقعی سیستم را تعیین می کند. وقتی دانشکده ما شروع شد

Pentiums ظاهر شد، مشخص شد که هنگام کار با ویندوز 95

عملاً هیچ تفاوت کیفی بین کارکرد سیستم وجود ندارد

پردازنده 486 یا پنتیوم. این کارایی را نشان می دهد

سیستم به کارایی کار با یک دستگاه خارجی وابسته نیست. اگر

سیستم عامل یونیکس را بگیرید، پس این تفاوت قابل توجه خواهد بود، زیرا

در اینجا سرعت پردازنده تأثیر قوی تری بر کیفیت سیستم دارد،

به جای ویندوز 95، زیرا ویندوز 95 با

رسانه های خارجی بسیار بیشتر به دلیل برخی "حماقت" الگوریتم ها است

کار بافر با دستگاه های خارجی

2. سیستم فایل.

گفتیم که هر کدام از سیستم عامل ها کار می کنند

برخی از موجودیت ها که یکی از آنها یک فرآیند است. یک دوم وجود دارد

موجودیتی که همچنین مهم است مفهوم فایل است. فایل سیستم است

یک جزء سیستم عامل که سازماندهی ایجاد را فراهم می کند،

ذخیره سازی و دسترسی به مجموعه داده های نامگذاری شده این مجموعه ها به نام

داده ها را فایل می نامند.

ویژگی های اصلی فایل

1. فایل شیئی است که نام دارد و به شما امکان می دهد با آن کار کنید

دنباله ای از برخی کاراکترها که طول آنها به ویژگی خاص بستگی دارد

سیستم عامل.

2. استقلال فایل از محل. برای کار با یک فایل خاص

نیازی به داشتن اطلاعات در مورد مکان این فایل در قسمت خارجی نیست

دستگاه

3. مجموعه ای از توابع I/O. تقریباً هر سیستم عامل

بدون ابهام مجموعه ای از توابع را تعریف می کند که تبادل با فایل را امکان پذیر می کند. معمولا،

این مجموعه ویژگی از پرس و جوهای زیر تشکیل شده است:

1. فایل را برای کار باز کنید. می توانید یکی موجود را باز کنید،

یا یک فایل جدید ممکن است این سوال پیش بیاید - چرا فایل را باز کنید؟

این وسیله ای برای اعلام مرکزی است

سیستم عاملی که فایل با یک خاص کار خواهد کرد

روند. و او در حال حاضر از این اطلاعات می تواند برخی از

راه حل ها (به عنوان مثال، مسدود کردن دسترسی به این فایل برای دیگران

فرآیندها).

2. بخوانید / بنویسید. معمولاً تبادل فایل می تواند سازماندهی شود

برخی از بلوک های داده بلوک داده ای که با آن اتفاق می افتد

مبادله جوهری دوگانه دارد. از یک طرف، برای هر

سیستم محاسباتی اندازه بلوک های داده را می داند که

موثرترین برای تبادل، یعنی نرم افزار است

ابعاد سخت افزاری از سوی دیگر، این داده ها وقتی را مسدود می کنند

مبادله واقعی می تواند کاملاً دلخواه متفاوت باشد

برنامه نویس توابع خواندن / نوشتن معمولاً شامل اندازه هستند

بلوک داده ای که باید مبادله شود و تعداد بلوک های داده ای که

باید خوانده یا نوشته شود از اندازه بلوک انتخاب شده

داده ها می توانند به کارایی مبادلات واقعی بستگی داشته باشند، زیرا

که، فرض کنید برای برخی از ماشین ها با اندازه موثر

بلوک داده 256 کیلوبایت است و می خواهید مبادلات را توسط

128 کیلوبایت، و شما برای خواندن خود دو ضربه بزنید

بلوک های منطقی 128 کیلوبایتی بسیار محتمل است که به جای

برای خواندن یک بلوک 256 کیلوبایتی در یک تبادل، دو مورد را اعمال می کنید

بار به یک بلوک و ابتدا یک نیمه، و سپس بخوانید

یکی دیگر. در اینجا عناصر ناکارآمدی وجود دارد، اگرچه ممکن است

توسط سیستم عامل "هوشمند" هموار شود، و اگر اینطور نباشد

صاف می شود، پس تقصیر شماست.

3. مدیریت اشاره گر فایل. تقریباً با هر باز

یک فایل مفهوم اشاره گر فایل را مرتبط می کند. این اشاره گر،

بر اساس قیاس با رجیستر شمارنده فرمان، در هر لحظه از زمان

به آدرس نسبی بعدی در فایل که با آن اشاره می کند

قابل معاوضه می باشد. پس از تبادل با این بلوک، نشانگر

از طریق بلوک به موقعیت منتقل می شود. برای سازماندهی کار با

فایل باید بتواند این اشاره گر را دستکاری کند. وجود دارد

یک تابع مدیریت اشاره گر فایل که اجازه می دهد

به طور دلخواه (در محدوده موجود) نشانگر را در امتداد حرکت دهید

فایل. یک اشاره گر متغیری است که در دسترس برنامه است،

که با تابع باز فایل مرتبط است (که این را ایجاد می کند

متغیر).

4. بستن فایل. این عملیات را می توان به دو صورت انجام داد

محتویات فایل 2) فایل را از بین ببرید.

پس از بستن فایل، تمام ارتباطات با آن قطع می شود و می آید

به یک حالت متعارف

4. حفاظت از داده ها. بسیاری از تصمیمات استراتژیک مانند قبل تکرار می شوند

در سطح سخت افزار و در سطح سیستم عامل. اگر یادمان باشد

حالت چند برنامه ای، پس یکی از شرایط لازم برای وجود آن است

ارائه حفاظت (حافظه و داده) است. اگر فایل را در نظر بگیریم

سیستم، پس از آن همان سیستم عامل است، می تواند باشد

تک کاربر در این مورد، مشکل حفاظت از داده وجود ندارد،

زیرا شخصی که این سیستم عامل را اجرا می کند

استاد تمام فایل ها نمونه هایی از سیستم های تک کاربره MS-DOS یا

ویندوز 95. می توانید دستگاه را بوت کنید و تمام فایل های دیگر را از بین ببرید

کاربرانی که بر روی دیسک قرار دارند، زیرا در این سیستم ها

هیچ حفاظتی وجود ندارد سیستم چند کاربره صحت را تضمین می کند

کار بسیاری از کاربران MS-DOS همچنین می تواند در آن اجرا شود

چند برنامه نویسی، اما به اندازه کافی صحیح نیست، زیرا خطا در

یک فرآیند می تواند سیستم عامل و همسایه را بازنویسی کند

روند. همچنین در سیستم عامل ویندوز 95 بسیاری از

کاربران، اما این کار نادرست است، زیرا این عملیات

این سیستم همه حقوق حفاظتی را ارائه نمی کند. بنابراین چند نفره

سیستم باید از محافظت از اطلاعات در برابر موارد غیرمجاز اطمینان حاصل کند

دسترسی داشته باشید. در واقع مشکل حفاظت فقط مربوط به فایل نیست

سیستم. در واقع، سیستم عامل حفاظت از داده ها را در همه موارد تضمین می کند

مناطق: فایل ها، فرآیندها و منابع متعلق به فرآیندها هستند.

به عنوان یک کاربر راه اندازی شد. در اینجا توجه شما را به آن جلب می کنم

این واقعیت است زیرا برای فایل ها این مهم ترین نقطه است.

ویژگی های اساسی فایل سیستم ها

سیستم فایل به طور طبیعی شامل تمام آن ویژگی هایی است که

برای فایل‌ها فهرست شده‌اند، اما تعداد بیشتری را اضافه می‌کند. این خواص

مربوط به سازماندهی ساختاری سیستم فایل.

بیایید نگاهی به فضای OVC بیندازیم و ببینیم که چگونه می‌شویم

ما می توانیم قرار دادن فایل ها را در این فضا سازماندهی کنیم.

1. سازماندهی یک سطحی پرونده ها در بخش های پیوسته. مدت، اصطلاح

"Single-level" به این معنی است که سیستم کار با فایل ها را فراهم می کند

منحصر به فرد نامگذاری شده است. در فضای OVC، برخی

منطقه ای برای ذخیره داده ها به نام دایرکتوری. دایرکتوری دارد

ساختار زیر:

| نام | بلوک شروع | بلوک پایان |

"بلاک شروع" به برخی از آدرس های نسبی اشاره دارد

فضای OVC که فایل با نام داده شده از آن شروع می شود. "محدود، فانی

block "آخرین بلوک فایل داده شده را تعریف می کند. عملکرد باز کردن فایل

به یافتن نام فایل در دایرکتوری و تعیین ابتدای آن خلاصه می شود و

پایان (در واقعیت، داده ها ممکن است کمی فضای کمتری را اشغال کنند، این خواهد بود

بعدا گفته شد). این عمل بسیار ساده است، علاوه بر این دایرکتوری را می توان ذخیره کرد

در حافظه سیستم عامل، و در نتیجه کاهش تعداد مبادلات.

اگر فایل جدیدی ایجاد شود، در فضای آزاد نوشته می شود.

مشابه فهرست نام، جدولی از فضاهای آزاد وجود دارد

(تکه ها).

خواندن/نوشتن تقریباً بدون مبادلات اضافی اتفاق می افتد، از چه زمانی

باز کردن، محدوده قرارگیری داده ها را دریافت می کنیم. خواندن در

با توجه به این ساختار بلوک و بدون اطلاعات اضافی

لازم نیست، بنابراین تبادل بسیار سریع است.

چه اتفاقی می افتد وقتی که شما نیاز به نوشتن یک اضافی دارید

اطلاعات، اما پشت این فایل فضای خالی وجود ندارد؟ در این مورد

سیستم می تواند دو کار را انجام دهد. اول، او خواهد گفت که هیچ جایی وجود دارد و شما

باید خودشان کاری انجام دهند، مثلاً فرآیندی را شروع کنند که

این فایل را به مکان دیگری منتقل می کند و اطلاعات مورد نظر شما را اضافه می کند. این

انتقال یک تابع نسبتا گران است. فرصت دوم در عوض است

رد خواهد شد. این بدان معنی است که هنگام باز کردن فایل، از قبل لازم بود

رزرو یک صندلی اضافی؛ در حالی که سیستم فایل چک می کند

اندازه بافر آزاد، و اگر کوچک است، در آن جا به دنبال فضای آزاد می گردد

این فایل قرار خواهد گرفت.

بنابراین، می بینیم که این سازمان ساده، موثر در مبادلات، اما

اگر فضای کافی برای فایل وجود نداشته باشد، ناکارآمدی شروع می شود. به آن

با این حال، در طول عملیات طولانی مدت چنین سیستم فایلی روی دیسک، این اتفاق می افتد

همان چیزی که برای RAM اتفاق افتاد - تکه تکه شدن. به این معنا که

وضعیتی که قطعات رایگان وجود دارد، اما هیچ کس در میان آنها وجود ندارد

می تواند فایل را قرار دهد مبارزه با پراکندگی برای چنین سازمانی

سیستم فایل - این فشرده سازی دوره ای است، زمانی که طولانی،

یک فرآیند سنگین و خطرناک برای محتویات فایل سیستم، که

همه فایل ها را محکم به یکدیگر فشار می دهد.

چنین سازمانی می تواند برای یک کاربر تکی مناسب باشد

سیستم فایل، زیرا با تعداد زیادی کاربر، بسیار

تکه تکه شدن به سرعت رخ می دهد و شروع ثابت فشرده سازی مرگ است

سیستم های. از سوی دیگر، سیستم ساده است و تقریباً هیچ نیازی ندارد

هزینه های سربار.

2. سیستم فایل با سازماندهی فایل بلوک. فضای OVC

به بلوک ها تقسیم می شود (همان بلوک هایی که برای تبادل کارآمد هستند). V

در یک سیستم فایل از این نوع، توزیع اطلاعات مشابه است

توزیع اطلاعات فرآیند در RAM با صفحه

سازمان. به طور کلی، مجموعه ای از اعداد با هر نام فایل مرتبط است.

بلوک های دستگاه که حاوی داده های این فایل است. علاوه بر این، اعداد

این بلوک ها به ترتیب دلخواه هستند، یعنی بلوک ها می توانند پراکنده شوند

در سراسر دستگاه بدون ترتیب خاصی. با چنین سازمانی، وجود ندارد

تکه تکه شدن، اگرچه ممکن است چندین برابر یک بلوک تلفات داشته باشد (اگر فایل حداقل طول کشیده باشد

یک بایت در یک بلوک، سپس کل بلوک اشغال شده در نظر گرفته می شود). از این رو نه

مشکلات فشرده سازی و این سیستم می تواند مورد استفاده قرار گیرد زمانی که

سازمان چند کاربره

در این مورد، مجموعه ای از ویژگی ها با هر فایل مرتبط است: نام فایل، نام

کاربری که فایل در حال دسترسی است. چنین سازمانی

به شما امکان می دهد از منحصر به فرد بودن نام ها که در قبلی مورد نیاز بود دور شوید

مورد. در چنین سیستمی، منحصر به فرد بودن نام ها فقط در بین فایل ها مورد نیاز است.

یک کاربر

سازماندهی چنین فایل هایی می تواند از طریق دایرکتوری باشد. ساختار دایرکتوری

شاید بعدی دایرکتوری شامل رشته ها است. هر خط i

مربوط به بلوک i-ام فایل سیستم است. این خط شامل

اطلاعاتی درباره رایگان یا اشغال بودن این بلوک. اگر او

مشغول است، سپس این خط حاوی نام فایل (یا پیوندی به آن)، نام است

کاربر، و ممکن است برخی اطلاعات اضافی وجود داشته باشد.

هنگام مبادله، سیستم می تواند به روش های مختلفی عمل کند. چه هنگام باز کردن

فایل، سیستم در کل دایرکتوری اجرا می شود و یک جدول مکاتبات ایجاد می کند

بلوک های منطقی فایل، قرار دادن آنها روی دیسک. یا با هر تعویض

جستجو برای این مسابقه انجام شده است.

این سازماندهی سیستم فایل در داخل یک سطح است

یک کاربر، یعنی همه فایل‌ها با تعلق به آنها به گروه‌هایی پیوند داده می‌شوند

برخی از کاربران

3. سیستم فایل سلسله مراتبی. تمام فایل های موجود در سیستم فایل

در ساختاری به نام درخت ساخته شده است. در ریشه درخت

به اصطلاح ریشه سیستم فایل قرار دارد. اگر گره درخت

یک برگه است، سپس این فایلی است که می تواند حاوی داده های کاربر باشد،

یا یک فایل دایرکتوری باشد. گره های درختی غیر از برگ هستند

فایل ها-دایرکتوری ها نامگذاری در چنین سیستم فایل سلسله مراتبی می تواند

به طرق مختلف اتفاق بیفتد نوع اول نامگذاری نسبتاً فایل است

نزدیکترین دایرکتوری، یعنی اگر به فایل هایی که هستند نگاه کنیم

نزدیکترین به دایرکتوری F0 فایل F1 است که همینطور است

دایرکتوری و فایل F2. برای نامگذاری موفق در چنین سیستمی در یک

نام سطوح را نمی توان تکرار کرد. از طرفی از آنجایی که تمامی فایل ها

در ارتباط با یک درخت، می توانیم در مورد نام کامل صحبت کنیم

فایل، که از تمام نام فایل هایی که مسیر را تشکیل می دهند تشکیل شده است

ریشه فایل سیستم به یک فایل خاص. نام کامل فایل F3 خواهد بود

به این صورت نشان داده شود: / F0 / F1 / F3. خوبی چنین سازمانی این است که

به شما امکان می دهد با نام فایل کوتاه (اگر سیستم

فرض بر این است که ما در این فهرست کار می کنیم)، و با نام کامل

فایل. نام فایل کامل مسیرها هستند و در هر درختی از ریشه تا

از هر گره فقط یک راه وجود دارد، بنابراین، این حل می شود

مشکل یکی شدن نام ها اولین بار این رویکرد در

سیستم عامل Multix که در دانشگاه برکلی توسعه یافته است

در اواخر دهه 60 این محلول زیبا بعداً ظاهر شد

بسیاری از سیستم عامل ها با توجه به این سلسله مراتب، هر یک از فایل ها

شما می توانید برخی از ویژگی های مربوط به حقوق دسترسی را متصل کنید. حقوق

هم فایل های کاربر و هم دایرکتوری ها می توانند دسترسی داشته باشند.

ساختار این سیستم برای سازماندهی کار چند کاربره خوب است،

به دلیل عدم وجود مشکل نامگذاری، و چنین سیستمی به خوبی می تواند

ساختن.

4. شخصی سازی و حفاظت از داده ها در سیستم عامل. این تفاوت ظریف،

که اکنون به بررسی ساده و پیچیده می پردازیم. ساده - زیرا ما

بیایید به معنای واقعی کلمه چند عبارت در مورد او بگوییم، اما دشوار است، زیرا وجود دارد

مشکلاتی که می توان در مورد آنها برای مدت طولانی صحبت کرد.

شخصیت پردازی توانایی سیستم عامل برای شناسایی است

کاربر خاص و بر این اساس، معینی را می پذیرد

اقدامات، به ویژه برای حفاظت از داده ها.

اگر به سیستم عامل MS-DOS مورد علاقه خود نگاه کنیم،

پس هیچ مفهومی از کاربر با تمام عواقب بعدی وجود نداشت -

تک کاربره است

سطح دوم سیستم عامل ها سیستم عامل هایی هستند که

به کاربران اجازه ثبت نام می دهد، اما همه کاربران خود را معرفی می کنند

در قالب یک مجموعه واحد از برخی موضوعات و به هیچ وجه به یکدیگر مرتبط نیستند.

نمونه هایی از این سیستم عامل ها برخی از سیستم عامل ها هستند.

سیستم های IBM برای کامپیوترهای مرکزی مثلاً مدرس نمی داند کیست

از شنوندگانش که به کدام گروه تعلق دارد، اما همه که در مقابل او نشسته اند،

کاربران دوره او این هم خوب است هم بد. از نظر گوش دادن

دوره سخنرانی خوب است، اما برای این مدرس یک نوع نظرسنجی انجام دهد

این بد است، زیرا در یک روز او وقت مصاحبه با همه را نخواهد داشت. او نیاز دارد

همه شنوندگان را به نوعی تقسیم خواهد کرد، اما چگونه - معلوم نیست.

بر این اساس، با چنین شخصیت پردازی تک بعدی، همه

آن توابع که ما در مورد آنها صحبت کردیم (به ویژه حفاظت)، اما چنین است

سازماندهی کاربران به معنای تشکیل گروه های کاربری نیست.

و برای من راحت است که، به عنوان مثال، در سرور دانشکده ما، من

آزمایشگاه اختصاص داده شد و در داخل این آزمایشگاه امکان پذیر خواهد بود

به یکدیگر مجوزهای فایل و غیره بدهید.

بر این اساس، مشابه سیستم فایل، سلسله مراتبی است

سازماندهی کاربران یعنی ما مفهوم "همه کاربران" را داریم.

و مفهوم "گروه کاربری". کاربران واقعی در گروه وجود دارد.

چنین سازماندهی سلسله مراتبی شخصیت پردازی مستلزم موارد زیر است

لحظه ها. هنگام ثبت نام کاربر، ابتدا باید

او را به یک گروه متصل کنید - این می تواند یک آزمایشگاه، بخش یا

گروه مطالعاتی. از آنجایی که کاربران در گروه ها ترکیب می شوند، ظاهر می شود

توانایی به اشتراک گذاری حقوق دسترسی به منابع کاربر. به این معنا که

کاربر می تواند، برای مثال، اعلام کند که تمام منابع او در دسترس است

همه کاربران گروه چنین طرحی می تواند چند سطحی باشد (گروه

تقسیم به زیر گروه ها و غیره) با توزیع مناسب حقوق و

فرصت ها. در حال حاضر سیستم عامل هایی وجود دارد که در آن حقوق

دسترسی را می توان نه تنها با چنین ساختار سلسله مراتبی، بلکه همچنین تعیین کرد

می تواند پیچیده تر باشد، به عنوان مثال می توان با نقض این موارد، حقوق دسترسی را اضافه کرد

سلسله مراتب

سخنرانی شماره 7

3. سیستم عامل یونیکس.

ما به همان اندازه به یادگیری سیستم عامل یونیکس می رویم

تصمیماتی که در سیستم عامل ها گرفته می شود را انجام خواهیم داد

مثالی از این سیستم عامل را در نظر بگیرید.

در اواسط دهه 60، آزمایشگاه های بل AT & T انجام دادند

تحقیق و توسعه یکی از اولین سیستم عامل های مدرن

درک آن سیستم عامل Multix است. این سیستم عامل

دارای ویژگی های یک سیستم عامل اشتراک گذاری زمانی بود،

سیستم چند کاربره و همچنین در این سیستم پیشنهاد شد

تصمیمات اصلی در مورد سازماندهی سیستم های فایل، به ویژه، بود

یک سیستم فایل درخت مانند سلسله مراتبی پیشنهاد شده است. از این توسعه

پس از مدتی سیستم عامل یونیکس شروع به کار کرد. یکی از

تاریخچه توسعه این سیستم نشان می دهد که این شرکت غیر ضروری بوده است

یک کامپیوتر PDP-7 با نرم افزار بسیار کمی توسعه یافته و مورد نیاز

ماشینی که امکان سازماندهی یک کار راحت را برای کاربر فراهم می کند،

به ویژه، پردازش اطلاعات متنی. یک گروه معروف از مردم است

کن تامپسون و دنیس ریچی مشغول طراحی یک اتاق عمل جدید شدند

سیستم های. نسخه دیگری از این داستان می گوید که آنها ظاهرا درگیر بودند

اجرای برخی از بازی ها و وسایلی که در دسترس آنها بود،

معلوم شد که ناخوشایند است - سپس آنها تصمیم گرفتند با این دستگاه بازی کنند. در نتیجه

سیستم عامل یونیکس ظاهر شد.

ویژگی این سیستم این بود که اولین سیستمی بود

برنامه ای که با استفاده از زبان دیگری نوشته شده است

زبان ماشین ( اسمبلر ). به منظور نوشتن این سیستم

نرم افزار، به ویژه سیستم عامل یونیکس، نیز

کاری انجام شد که با زبان BCPL آغاز شد. از آن شکل گرفت

زبان B که روی کلمات ماشینی کار می کرد. انتزاع بیشتر ماشین

کلمات - BN و در نهایت زبان C. از سال 1983، سیستم عامل یونیکس (آن

نسخه اصلی) به زبان C بازنویسی شد، و معلوم شد که در مورد

90 درصد از سیستم عامل به زبان سطح بالا نوشته شده بود، نه

بسته به معماری دستگاه، و 10 درصد از این سیستم در نوشته شده بود

مونتاژ کننده ده درصد شامل بحرانی ترین زمان است

بخش هایی از سیستم عامل

پس اولین نتیجه مهم و انقلابی استفاده از

زبان سطح بالا این واقعیت باعث بحث شد، زیرا هیچ کس

معتقد بود که این می تواند طولانی مدت باشد، زیرا همیشه زبان بالا است

سطح با ناکارآمدی زیادی همراه بود. زبان C بود

به گونه ای طراحی شده است که از یک سو امکان نوشتن را فراهم می کند

از سوی دیگر برنامه های به اندازه کافی موثر آن را پخش می کنند

کد کارآمد

اولین ویژگی زبان C که باعث کارایی بیشتر آن شد این است

کار با اشاره گر خاصیت دوم این است که برای

در برنامه نویسی به زبان اسمبلی اغلب از عوارض جانبی استفاده می کنیم.

به عنوان مثال، اثر زمانی که نتیجه ارزیابی برخی از عبارت است

نه تنها مقدار ثبت شده، بلکه برخی از مقادیر میانی،

که می توانید در حین حرکت یادداشت کنید تا بعدا استفاده کنید. اینها

امکانات در زبان C در دسترس قرار گرفت، زیرا مفهوم یک عبارت در

زبان C بسیار گسترده تر از آن زبان هایی است که در آن زمان در دسترس بودند

زمان. به طور خاص، عملیات انتساب به جای اپراتور ظاهر شد

انتساب، که امکان برنامه ریزی عوارض جانبی را فراهم می کند. اینها

خواص و تعیین "سرزندگی" زبان، مناسب برای برنامه نویسی

اجزای سیستم و توانایی ترجمه بهینه کدهای مختلف

از نقطه نظر حرفه ای (متعارف) C وحشتناک است

زبان نیاز اصلی برای زبان ها

برنامه نویسی، برای اطمینان از ایمنی برنامه نویسی است.

ابزارهای زبان باید احتمال ایجاد خطا را به حداقل برسانند

برنامه، و مطمئناً یکی از این ابزارهای زبان های مدرن است

موارد زیر: کاملاً تایپ شده (به عنوان مثال نمی توانید اضافه کنید

یک متغیر عدد صحیح با یک واقعی، بدون تبدیل قبل از این نوع

یکی از آنها به نوع دیگری). زبان C قابلیت تبدیل را دارد

به طور پیش فرض انواع یکی دیگر از موارد مجرمانه، اطمینان از کنترل است

دسترسی به حافظه برنامه (به عنوان مثال اگر سلول حافظه شامل

یک عدد واقعی است، پس ما نمی توانیم آن را به روش دیگری تفسیر کنیم).

امکان استفاده بی رویه از این مقادیر توسط

اشاره گرها علاوه بر این، از طریق یک اشاره گر، می توانید توابع را "تقلب" کنید

مطابقت و ناسازگاری پارامترهای واقعی با پارامترهای رسمی

و غیره. ویژگی سوم کنترل بر تعامل ماژول ها است. مقدار زیادی

اگر یک مجموعه از خطاها ظاهر شود

پارامترهای رسمی، و فراخوانی آن در مجموعه متفاوتی رخ می دهد

(و تفاوت ها می تواند هم در تعداد پارامترها و هم در انواع باشد). V

زبان C همیشه می تواند برنامه را تقلب کند - به جای یک پارامتر رسمی

از یک نوع، یک پارامتر از نوع دیگر بدهید و به جای ده پارامتر، پاس دهید

یکی این منجر به خطا می شود.

در اینجا سه ​​موقعیت وجود دارد که در آنها زبان C الزامات را برآورده نمی کند.

امنیت. با این حال، تجربه نشان می دهد که سرسخت ترین هستند

زبان های بد (از این منظر).

بنابراین، سال 1973، سال ظهور اتاق عمل است که به زبان C نوشته شده است

سیستم های یونیکس ویژگی های اصلی این سیستم چیست؟ اولین

خاصیت مفهوم فایل است. شی اصلی که عمل می کند

سیستم عامل یک فایل است. فایل از نقطه نظر عملیاتی

سیستم های یونیکس یک دستگاه خارجی است. یک فایل دایرکتوری است که

حاوی اطلاعاتی در مورد فایل های موجود در آن است. و غیره، به همین ترتیب

که می تواند کار کند.

ویژگی دوم ساختار خاص سیستم عامل است. بر خلاف

از سیستم عامل های قبلی، که در آن هر فرمان "سیمی" بود

در داخل سیستم عامل، یعنی به هیچ وجه قابل تغییر نیست

در یونیکس، مشکلات فرمان بسیار زیبا رسیدگی می شود. اول، یونیکس

یک رابط استاندارد برای انتقال پارامترها از خارج به داخل اعلام می کند

روند. در مرحله دوم، تمام دستورات به صورت فایل اجرا می شوند. به این معنی،

که می توانید آزادانه دستورات جدیدی به سیستم اضافه کنید و همچنین حذف کنید و

آنها را اصلاح کنید. یعنی سیستم یونیکس باز است و به راحتی قابل توسعه است.

بیایید شروع به بررسی ویژگی های خاص سیستم عامل کنیم.

سیستم فایل. سازماندهی فایل ها کار با فایل ها

سیستم فایل یونیکس یک سلسله مراتب چند کاربره است

سیستم فایل ساختار آن را در سخنرانی آخر ترسیم کردیم. او

قابل نمایش توسط درختی که ریشه آن به اصطلاح ریشه است

کاتالوگ گره های غیر از برگ درخت دایرکتوری هستند. برگها

می تواند فایل (به معنای سنتی) یا دایرکتوری های خالی باشد.

سیستم مفهوم نام فایل را تعریف می کند - این نامی است که با آن مرتبط است

مجموعه داده ای در دایرکتوری که این فایل به آن تعلق دارد. بعلاوه

علاوه بر این، مفهوم نام کامل وجود دارد - این یک مسیر منحصر به فرد از ریشه فایل است

سیستم ها به یک فایل خاص مجاز به مطابقت با نام فایل های واقع شده است

در دایرکتوری های مختلف

در واقع، سیستم فایل کاملاً درخت مانند نیست. وجود دارد

امکان شکستن سلسله مراتب از طریق تداعی

نام های متعدد (اسامی کامل) با محتوای یکسان فایل هستند، بنابراین

سلسله مراتبی و درخت مانند.

سیستم عامل یونیکس از یک سلسله مراتب سه سطحی استفاده می کند

کاربران (همه کاربران به گروه هایی تقسیم می شوند) که ساختار آنها در

مورد کلی در سخنرانی قبلی در نظر گرفته شد. در این راستا، هر یک

یک فایل سیستم فایل دارای دو ویژگی است. اولین ویژگی این است، بنابراین

صاحب فایل تماس گرفت. این ویژگی با یک ویژگی خاص مرتبط است

کاربر صاحب فایل صاحب فایل می تواند

اگر این فایل را ایجاد کنید به حالت پیش فرض تبدیل می شود و همچنین دستوری وجود دارد که

به شما اجازه می دهد تا مالک یک فایل را تغییر دهید. ویژگی دوم، ویژگی مرتبط با آن است

حفاظت از دسترسی به فایل (در ادامه در این مورد بیشتر خواهد شد).

دسترسی به هر فایل در سه دسته تنظیم می شود. اولین

مطمئناً می تواند هر کاری که می خواهد با این فایل انجام دهد. دسته دوم است

حقوق گروهی که صاحب فایل به آن تعلق دارد (غیر از حقوق

به استثنای گروه مربوطه در این سه دسته

سه عمل تنظیم می شود - خواندن از یک فایل، نوشتن به یک فایل و اجرا

فایل. هر فایل مشخص می کند که آیا یک کاربر از یک دسته معین می تواند

روند.

کار با فایل ها

ساختار فایل سیستم روی دیسک را در نظر بگیرید. برای هرچی

سیستم محاسباتی، مفهوم ذخیره سازی خارجی سیستم تعریف شده است

دستگاه ها (SVZU). SVZU دستگاهی است که توسط آن قابل دسترسی است

لودر سخت افزاری دستگاه برای راه اندازی سیستم عامل. تقریبا

هر رایانه ای محدوده ای از فضای آدرس حافظه دارد،

در حافظه به اصطلاح فقط خواندنی (ROM) قرار دارد. V

رام حاوی یک برنامه کوچک (بوت لودر سخت افزاری) است که وقتی

روشن کردن یا راه اندازی مجدد سخت دستگاه، به ثابت اشاره دارد

SVZU را مسدود کرده، آن را در RAM قرار می دهد و کنترل را به آن منتقل می کند

آدرس ثابت متعلق به داده های خوانده شده اعتقاد بر این است که این

بلوک داده ای که خوانده شده است به اصطلاح نرم افزار لودر است.

لازم به ذکر است که بوت لودر سخت افزاری مستقل از سیستم عامل است.

سیستم، و بوت لودر جزء سیستم عامل است.

او از قبل می داند که داده های مورد نیاز برای راه اندازی اتاق عمل در کجا قرار دارد.

در هر سیستمی، تقسیم فضای ورودی هوا به مقداری پذیرفته شده است

بخش هایی از داده ها به نام بلوک. اندازه بلوک منطقی

یک ویژگی ثابت سیستم عامل است. در اتاق عمل

در سیستم های یونیکس، اندازه بلوک توسط پارامتری تعیین می شود که می تواند

بسته به نسخه سیستم تغییر می کند. برای قطعیت، خواهیم کرد

می گویند که بلوک منطقی VCU 512 بایت است.

بیایید فضای آدرس SVZU را در قالب یک دنباله نمایش دهیم

بلوک ها بلوک صفر SVZU بلوک بوت یا بلوک در است

که حاوی نرم افزار لودر است. قرار دادن این بلوک روی صفر

بلوک SVZU توسط سخت افزار تعیین می شود، زیرا بوت لودر سخت افزار است

همیشه به بلوک صفر اشاره دارد. این آخرین جزء فایل است

سیستمی که به سخت افزار بستگی دارد.

بلوک بعدی superblock سیستم فایل است. آن شامل

اطلاعات عملیاتی در مورد وضعیت فعلی سیستم عامل و همچنین

اطلاعات مربوط به تنظیمات فایل سیستم به طور خاص، superblock

حاوی اطلاعاتی در مورد تعداد به اصطلاح اینودها در

سیستم فایل همچنین، superblock حاوی اطلاعاتی در مورد تعداد بلوک ها است.

تشکیل فایل سیستم و همچنین اطلاعاتی در مورد بلوک های رایگان

فایل‌ها، درباره اینودهای رایگان و سایر داده‌ها،

تعیین زمان، تاریخ اصلاح و سایر پارامترهای خاص.

| بلوک | سوپربلو | منطقه | بلوک | منطقه |

| اولیه | به | فهرست | فایل ها | ذخیره |

| دانلود | فایل | توصیفگر | | |

| | سیستم ها | s | | |

سوپر بلوک توسط یک ناحیه inode (فضا) دنبال می شود.

inode یک ساختار داده سیستم فایل خاص است که

که در مکاتبات یک به یک با هر فایل قرار می گیرد.

اندازه فضای inode توسط پارامتر تعیین می شود

تولید یک سیستم فایل با تعداد inodeهایی که

در superblock مشخص شده اند. هر ایند حاوی موارد زیر است

اطلاعات:

2. فیلد کد امنیتی.

4. طول فایل بر حسب بایت.

فضای بعدی در سیستم فایل، بلوک های فایل است. این

فضای دستگاه سیستم که تمام اطلاعات در آن قرار دارد،

در فایل‌ها و در مورد فایل‌هایی که در بلوک‌های قبلی قرار نداشتند ذخیره می‌شوند

سیستم فایل

ناحیه داده اخیر به طور متفاوتی در سیستم های مختلف پیاده سازی می شود، اما

در پشت بلوک های سیستم فایل، ناحیه ذخیره قرار دارد.

این ساختار مفهومی یک فایل سیستم است. حال در نظر بگیرید

سوپر بلوک. دو مورد آخر بیشترین علاقه را در سوپر بلوک دارند.

فیلدها: فیلدهای اطلاعاتی درباره بلوک‌های فایل رایگان و بلوک‌های فهرست آزاد

توصیف کننده ها در سیستم فایل یونیکس، تاثیر دو عامل محسوس است.

اولین عامل این است که سیستم فایل در آن روزها توسعه یافته است.

زمانی که حجم یک هارد 5-10 مگابایتی بسیار زیاد در نظر گرفته می شد. داخل سازه

فضای دستگاه خارجی عامل دوم یکی از ویژگی های سیستم فایل است

برای بهینه سازی دسترسی معیار بهینه برای دسترسی - تعداد مبادلات

سیستم فایل با یک دستگاه خارجی که برای آن تولید می کند

رفع نیازها

لیست (آرایه) بلوک های فایل رایگان شامل پنجاه است

عناصر و 100 بایت طول می کشد. در بافر پنجاه

عناصر، تعداد بلوک های آزاد فضای بلوک های حافظه ثبت می شود. اینها

اعداد از عنصر دوم تا چهل و نهم نوشته می شوند. عنصر اول

آرایه حاوی شماره آخرین ورودی در این آرایه است. عنصر صفر

لیست ادامه دارد و غیره

اگر یک فرآیند نیاز به افزایش اندازه فایل خود داشته باشد

بلوک رایگان اضافی، سپس سیستم مطابق با اشاره گر Block Number (NB)

عنصری از آرایه را انتخاب می کند (یک کپی از superblock همیشه در آن موجود است

RAM، بنابراین، تقریباً برای همه چنین اقداماتی، سیستم این کار را نمی کند

باید به SVZU آدرس داده شود) و این بلوک در اختیار مربوطه قرار می گیرد

فایل برای پسوند (در این مورد، نشانگر NB تنظیم می شود). اگر

پس اندازه فایل کاهش می یابد یا کل فایل حذف می شود

اعداد منتشر شده در آرایه بلوک های آزاد نوشته می شوند، در حالی که

نشانگر NB نیز در حال اصلاح است.

از آنجایی که اندازه آرایه پنجاه عنصر است، دو عنصر امکان پذیر است

موقعیت های بحرانی اولین مورد زمانی است که هنگام آزادسازی بلوک های جدید، خیر

موفق می شود شماره آنها را در این آرایه قرار دهد، زیرا از قبل پر شده است. در آن

در مورد، یک بلوک رایگان از سیستم فایل انتخاب می شود (در این مورد، آن

از لیست بلوک های آزاد حذف شد) و آرایه پر شده بلوک های آزاد

در این بلوک کپی شده است. پس از آن، مقدار اشاره گر NB به صفر و در

عنصر صفر آرایه شماره بلوکی است که ما برای آن انتخاب کرده ایم

کپی کردن آرایه ما در آن در نتیجه، با انتشار مداوم

بلوک ها، لیستی تشکیل می شود که در آن اعداد کاملاً همه

بلوک های رایگان سیستم فایل

دومین وضعیت بحرانی زمانی است که باید یک بلوک رایگان دریافت کنید، اما

محتویات آرایه تمام شده است. در این حالت، سیستم به صورت زیر عمل می کند: اگر

عنصر صفر لیست صفر است، پس این بدان معنی است که همه چیز تمام شده است

فضای فایل سیستم، و پیامی به این منظور نمایش داده می شود. اگر نکند

صفر است، سپس محتویات آن برابر با آدرس ادامه آرایه است و

سیستم عامل بلوک مربوطه را می خواند و آن را تخصیص می دهد

ادامه به محل آرایه در superblock.

آرایه دوم که در superblock قرار دارد، آرایه ای متشکل از

صد عنصر و حاوی اعداد ایند رایگان.

کار با این آرایه ساده است. تا زمانی که در این جا جا باشد

آرایه، سپس هنگام آزاد کردن inodes، inode های آزاد

توصیفگرها در فضای آزاد آرایه نوشته می شوند. اگر آرایه پر باشد

به طور کامل، سپس نوشتن در این آرایه متوقف می شود. اگر برعکس، محتوا

آرایه تمام می شود، سپس فرآیند شروع می شود، که

ناحیه inode را اسکن می کند و بر اساس آن پر می شود

آرایه ای با مقادیر جدید زمانی ممکن است که شما نیاز به ایجاد یک فایل داشته باشید، به عنوان مثال.

یک inode جدید مورد نیاز است و هیچ عنصری در آرایه وجود ندارد، و

فرآیند در حال اجرا نیز هیچ inode رایگان پیدا نکرد. این

حالت دوم زمانی که سیستم مجبور می شود اعلام کند که منبع تمام شده است

(اولین مورد زمانی است که بلوک های رایگان سیستم فایل تمام می شود).

سخنرانی شماره 8

توصیفگرهای Inode اینودها چندتایی را پشت سر هم می گیرند

بلوک های در حال اجرا روی دیسک اندازه ناحیه inode با تعیین می شود

پارامتر (که در هنگام نصب سیستم تعریف شد) که تعیین می کند

تعداد اینودها برای یک فایل سیستم معین.

اندازه منطقه برابر است با حاصل ضرب این مقدار در اندازه شاخص

توصیف کننده

inode یک شی یونیکس است که به طور متقابل در یک قرار داده می شود

مطابقت یک به یک با محتویات فایل، به جز زمانی

یک فایل یک فایل خاص است که با یک دستگاه خارجی مرتبط است. V

در inode، فیلدهای زیر وجود دارد:

1. فیلد مشخص کننده نوع فایل (دایرکتوری یا غیر دایرکتوری).

2. فیلد کد امنیتی.

3. تعداد پیوندها به این inode از همه ممکن است

دایرکتوری های سیستم فایل (در صورت نقض فایل

سیستم های). اگر مقدار این فیلد صفر باشد، در نظر گرفته می شود

این inode رایگان است.

4. طول فایل بر حسب بایت.

5. آمار: فیلدهایی که تاریخ و زمان ایجاد و غیره را مشخص می کنند.

6. فیلد آدرس دهی بلوک فایل.

توجه داشته باشید که هیچ نام فایلی در inode وجود ندارد،

اگرچه این شی محتویات فایل را مشخص می کند. بیایید ببینیم چگونه

آدرس دهی بلوک هایی که محتویات فایل در آنها قرار دارد سازماندهی شده است.

فیلد آدرس دهی شامل شماره ده بلوک فایل اول است. اگر

فایل کوچک است، سپس تمام اطلاعات مربوط به قرارگیری بلوک های آن در آن موجود است

inode اگر فایل از ده بلوک بیشتر شود، شروع می شود

برای کار با یک ساختار لیست خاص عنصر یازدهم فیلد آدرس دهی

شامل شماره بلوک از فضای بلوک فایل است که شامل 128 است

پیوندهایی به بلوک های این فایل

در صورتی که فایل حتی بزرگتر باشد، از دوازدهم استفاده می شود

عنصر فیلد آدرس دهی این شامل شماره بلوک است که شامل 128 است

رکوردهای اعداد بلوک، که هر کدام شامل 128 شماره بلوک از فایل است

سیستم ها، یعنی از دو جهت غیر مستقیم در اینجا استفاده شده است. اگر فایل هنوز است

بیشتر، سپس عنصر سیزدهم و سه گانه استفاده می شود

غیر جهت (شبیه به دو برابر، اما اضافه کردن یک سطح دیگر).

محدودیت اندازه فایل (با اندازه بلوک 512) خواهد بود (128 + 1282 +

1283) * 512 بایت = 1 گیگابایت + 8 مگابایت + 64 کیلوبایت> 1 گیگابایت.

ما با شما توافق کردیم که در طول دوره ما پرداخت کنیم

توجه به ناهماهنگی سرعت و هموارسازی آن. اولین

مشکل - اگر سیستم فایل دارای آرایه رایگان نباشد

بلوک ها، شما باید به نوعی به صورت رایگان جستجو کنید

بلاک می شود و کار دیوانه می شود و سیستم فایل از کار می افتد

سطح ایدئولوژیک به همین ترتیب با لیست inode رایگان،

اگرچه جستجو در اینجا آسان تر از بلوک های رایگان است، اما با این وجود،

عناصر بهینه سازی در اینجا نیز وجود دارد. آدرس دهی غیر مستقیم بلوک

فایل ها به شما این امکان را می دهد که سربار خواندن بلوک های فایل ها را افزایش دهید

متناسب با حجم این فایل یعنی اگر فایل کم است، فاکتورها

هیچ هزینه ای وجود ندارد، زیرا زمانی که یک فایل را باز می کنید، الف

یک کپی از inode فایل، و بدون تماس اضافی با VCU

شما می توانید بلافاصله به هر یک از ده بلوک فایل دسترسی پیدا کنید. در صورت لزوم

سپس با بلوک هایی که در سطح اول غیر جهت قرار دارند کار کنید

یک تبادل اضافی ظاهر می شود، اما در همان زمان می توان دسترسی داشت

در حال حاضر به 128 بلوک رسیده است. استدلال مشابه برای بلوک دوم و سوم

سفارش. به نظر می رسد چیز بد این است که هنگام تبادل با یک فایل بزرگ مجبور هستید

مبادلات اضافی زیادی انجام دهید، با این حال سیستم یونیکس مشکل است -

از بافر عمیق صرافی های OCD استفاده می کند. به این معنا که

اگر ما مقداری سربار در همان سطح دریافت کنیم، آنها

در سطح دیگری از بهینه سازی تعامل سیستم با

حافظه خارجی.

بلوک های فایل فضای بلوک فایل یک به یک است

به دلیل اطلاعات موجود در superblock.

منطقه ذخیره فرآیند اگرچه این منطقه در پشت بلوک ها به تصویر کشیده شده است

فایل‌ها، اما می‌توان آن را در برخی از فایل‌های سیستم فایل قرار داد

یا در محل دلخواه سایر VCU ها. این بستگی به اجرای خاص دارد

سیستم های. در اصل، این منطقه یک منطقه مفید است که در آن

فرآیندها پمپاژ می شوند و از این ناحیه نیز استفاده می شود

بهینه سازی راه اندازی پرکاربردترین فرآیندها با استفاده از

به اصطلاح t-bit فایل (در ادامه در این مورد بیشتر خواهد شد).

بنابراین، ساختار فایل سیستم و آن را بررسی کردیم

سازمان در یک دستگاه سیستم مانند هر ساخت و ساز سیستم،

ساختار سیستم فایل و الگوریتم های مرتبط ساده هستند

تا هنگام کار با آنها، هزینه های سربار فراتر نرود

معقول. بدیهی است که سیستم فایل یونیکس در کار واقعی بهینه تر است

سیستم فایل ویندوز NT (تاریخ توسعه را مقایسه کنید!!!)، به دلیل سادگی

و بهینه سازی که در هر مرحله اتفاق می افتد.

کاتالوگ ها

گفتیم که یکی از ویژگی های سیستم عامل یونیکس است

این است که تمام اطلاعات در فایل ها قرار دارند، یعنی. وجود ندارد

جداول ویژه مورد استفاده توسط سیستم عامل، برای

به استثنای جداولی که ایجاد می کند و قبلاً در آنها کار می کند

فضای رم دایرکتوری، از نظر سیستم فایل،

این فایلی است که حاوی اطلاعات مربوط به فایل هایی است که به آن ها تعلق دارند

کاتالوگ

اگرچه دایرکتوری A حاوی فایل های B، C و D است

که فایل های B و C می توانند هم فایل و هم دایرکتوری باشند و

فایل D یک دایرکتوری است.

کاتالوگ شامل عناصری است که شامل دو فیلد است. فیلد اول است

شماره inode، قسمت دوم نام فایل است که

مرتبط با ایند داده شده اعداد فهرست

توصیفگرها (در فضای inode) از یک شروع می شوند.

اولین inode دایرکتوری inode است. به طور کلی

دایرکتوری ممکن است حاوی رکوردهایی باشد که به همان فهرست اشاره دارند

توصیفگر، اما دایرکتوری نمی تواند حاوی ورودی هایی با همان نام باشد.

نام در دایرکتوری منحصر به فرد است، اما با محتویات فایل می تواند

تعداد دلخواه از نام ها را می توان مرتبط کرد. بنابراین، برخی وجود دارد

ابهام در تعریف مفهوم فایل در سیستم عامل یونیکس.

معلوم می‌شود که فایل فقط یک مجموعه داده نام‌گذاری شده نیست، بلکه دارد

inode و ممکن است چندین نام وجود داشته باشد (یعنی نام ثانویه است

جزء).

هنگام ایجاد یک دایرکتوری، همیشه دو ورودی در آن ایجاد می شود: یک ورودی در

یک فایل خاص به نام "." (نقطه) که شاخص با آن مرتبط است

توصیفگر خود دایرکتوری و فایل ".." (دو نقطه) که با آن

inode (ID) دایرکتوری والد مرتبط است. برای ما

برای مثال، دایرکتوری A دارای ID با شماره 7 و دایرکتوری D دارای ID با

شماره 5. فایل F دارای شناسه شماره 10، فایل G دارای شناسه شماره 101 است. در این مورد، فایل-

دایرکتوری D دارای محتویات زیر خواهد بود:

| نام | شناسه # |

| "." | 5 | اولین ورودی یک خود ورود است. |

| ".." | 7 | ورودی دوم برای والد (دایرکتوری A) است. |

| | | دایرکتوری. |

| "G" | 101 | این محتویات دایرکتوری D. |

تفاوت بین فایل دایرکتوری و فایل های کاربر معمولی در این است

محتویات فیلد نوع فایل در شناسه برای دایرکتوری ریشه، فیلد والد خواهد بود

رجوع به خود شود

اکنون بیایید نگاهی گذرا به نحوه استفاده از نام‌های کاملاً واجد شرایط بیندازیم.

و ساختار دایرکتوری در سیستم، در هر لحظه از عملیات

کاربر دایرکتوری فعلی، یعنی دایرکتوری و کل مسیر را تعریف کرد

ریشه مرتبط با این دایرکتوری که به طور پیش فرض جایگزین می شود

همه نام فایل هایی که با کاراکتر "/" شروع نمی شوند. اگر دایرکتوری فعلی D باشد،

سپس می توانید فقط در مورد فایل های F و G صحبت کنید و اگر نیاز دارید به پرونده B برسید،

سپس باید از نام کامل یا فایل ویژه ".." استفاده کنید، یعنی in

در این مورد، ساخت و ساز "../B". ما به فایل ".." مراجعه می کنیم - این است

به این معنی است که شما باید شناسه والد را بخوانید و از آن برای دسترسی به محتوا استفاده کنید

دایرکتوری A. سپس در پوشه فایل A، خطی با نام B و انتخاب کنید

شناسه فایل B را تعیین کنید و سپس فایل را باز کنید. کل این عملیات

با این حال، با توجه به اینکه فایل ها اغلب باز نمی شوند، بسیار وقت گیر است

روی سرعت سیستم تاثیری نخواهد داشت.

گفتیم که می توان با همین محتوا همراه شد

نام های متعدد، یعنی فایل هایی با همین

شناسه. مشکلی وجود دارد - نحوه همگام سازی کار با محتوای فایل در آن

اگر با فرآیندهای مختلف یا با نام های مختلف باز شود. در یونیکس، این است

کاملاً درست حل شده است (ما کمی بعداً این را در نظر خواهیم گرفت).

فایل های ویژه دستگاه

ما قبلا دو نوع فایل را می شناسیم: فایل های دایرکتوری و فایل های کاری، در

که داده ها ذخیره می شوند. نوع سومی وجود دارد - فایل های دستگاه. این

تنوع با نوع مشخص شده در شناسه مشخص می شود. محتوای فایل ها

هیچ دستگاهی وجود ندارد، اما فقط یک شناسه و یک نام وجود دارد. شناسه اطلاعاتی را در مورد نشان می دهد

چه نوع دستگاهی با این فایل مرتبط است: بایت گرا

دستگاه یا دستگاه بلوک گرا. بایت گرا

دستگاه دستگاهی است که در یک زمان مبادله می شود

بایت (به عنوان مثال صفحه کلید). یک دستگاه بلوک گرا است

دستگاهی که می توان با آن بلوک ها را مبادله کرد.

همچنین یک فیلد وجود دارد که تعداد درایور مربوط به آن را مشخص می کند

دستگاه (یک دستگاه ممکن است چندین درایور داشته باشد، اما نه

برعکس). این فیلد در واقع یک عدد در جدول درایور است

کلاس مربوطه از دستگاه ها دو جدول در سیستم وجود دارد: برای بلوک-

و برای دستگاه های بایت گرا. همچنین شناسه برخی را تعریف می کند

یک پارامتر دیجیتالی که می تواند به عنوان به درایور ارسال شود

مشخص کردن اطلاعات مربوط به کار

سازماندهی تبادل داده با فایل ها

بیایید ابتدا تعریف کنیم I/O سطح پایین در چه چیزی است

سیستم. فایل سیستم یونیکس موارد خاصی را تعریف می کند

توابعی به نام فراخوانی سیستم. تماس های سیستمی

دسترسی مستقیم به سیستم عامل را انجام دهید، یعنی این

توابعی که برخی از اعمال سیستم عامل را انجام می دهند. پیاده سازی

توابع سیستم و کتابخانه (به عنوان مثال، ریاضی) در ریشه

متفاوت است. اگر تابع کتابخانه در بدنه فرآیند بارگذاری شود،

که از این کتابخانه استفاده می کند، سپس همه اقدامات در اکثر موارد

در این فرآیند اجرا می شود و بلافاصله فراخوانی سیستم انجام می شود

کنترل را به سیستم عامل منتقل می کند و دستور داده شده را انجام می دهد

عمل. در یونیکس، برای ارائه I/O سطح پایین، یعنی.

I/O که از طریق فراخوانی سیستم پیاده سازی می شود، می باشد

مجموعه ای از توابع در اینجا موارد اصلی وجود دارد:

1. open - یک فایل موجود را باز می کند. یکی از پارامترهای این تابع است

یک رشته با نام فایل است و تعدادی عدد را برمی گرداند،

که به آن توصیفگر فایل می گویند. در بدنه فرآیند کاربر،

و همچنین در داده های مرتبط با این فرآیند قرار می گیرد

(البته به جز کد و داده ها) برخی از اطلاعات خدمات، در

به ویژه، جدول توصیف کننده فایل. او، مانند همه میزهای داخل

سیستم یونیکس، موقعیتی، یعنی. تعداد توصیفگر مطابقت دارد

رکورد در این جدول با توصیفگر فایل (FD)

نام فایل و تمام ویژگی های لازم برای کار با آن مرتبط است.

اعداد FD در یک فرآیند منحصر به فرد هستند. مشابه وجود دارد

ایجاد تابع - تابع برای باز کردن یک فایل جدید.

2. خواندن / نوشتن - خواندن / نوشتن فراخوانی های سیستمی که پارامترهای آن

عدد FD و برخی از ویژگی هایی است که برای آنها چندان مهم نیستند

توجه ما

3. بستن - یک فراخوانی سیستم برای تکمیل کار با یک فایل، یک پارامتر

که شماره FD است. پس از فراخوانی این تابع FD

رایگان می شود و کار این فرآیند با فایل خاتمه می یابد.

در اینجا چند تماس سیستمی وجود دارد که I / O را ارائه می دهد (به هر حال، آنها

تقریبا هیچ کدی به برنامه خود اضافه نکنید). جزییات را ببینید

بدون کمک دیگری. توجه شما را جلب کردم که اینها تماس های سیستمی هستند، زیرا

که I/O را می توان از طریق کتابخانه های I/O نیز انجام داد. برای

از این به اصطلاح تبادل فایل و توابع fopen، fread و

و غیره. (با پیشوند f). اینها توابع کتابخانه هستند. این توابع خود تماس می گیرند

به عملکردهای سطح پایین در درون خود.

سازمان تبادل را از دیدگاه سیستمی در اتاق عمل در نظر بگیرید.

سیستم یونیکس هنگام سازماندهی یک مبادله، سیستم عامل تقسیم بندی می شود

و داده های مرتبط با سیستم عامل

فایل جدول inode را باز کنید. جدول داده اول،

سیستم عامل مرتبط - جدول inode

باز کردن فایل ها (TIDOF). این جدول حاوی رکوردهایی است که هر کدام از آنها

حاوی یک کپی از inode برای هر باز شدن در سیستم است

فایل. بلوک های فایل ها از طریق این کپی قابل دسترسی هستند. هر یک

رکوردهای جدول همچنین حاوی فیلدی است که تعداد باز کردن در را مشخص می کند

سیستم فایل با استفاده از توصیفگر (مشتری) داده شده. یعنی اگر

همان فایل از طرف دو فرآیند باز می شود، سپس در TIDOF نوشته می شود

یکی ایجاد می شود، اما هر باز شدن اضافی این فایل افزایش می یابد

شمارنده در واحد

جدول فایل. جدول فایل (TF) حاوی اطلاعات نام است

سخنرانی شماره 9

گفتیم که سیستم می تواند با محتویات فایل در حجم و

تنها در صورتی که فرآیند تمایل خود را برای کار با آن ثبت کرده باشد

با این فایل واقعیت چنین ثبت نامی را باز کردن پرونده می گویند. در

باز کردن یک فایل در یک فرآیند هر نام از فایل باز می شود

(یک فایل موجود می تواند باز شود یا یک فایل جدید) در آن قرار داده می شود

تطبیق یک عدد صحیح منحصر به فرد به نام فایل

توصیفگر (FD). در این فرآیند، PD ها از 0 تا k-1 شماره گذاری می شوند.

مقدار k یک پارامتر پیکربندی سیستم عامل است که تعیین می کند که آیا

یک فرآیند چند فایل به طور همزمان باز می تواند داشته باشد. اینجا

لازم به ذکر است که ما در مورد تعداد فایل های باز شده به طور همزمان صحبت می کنیم

(همچنین در هر کتاب یونیکس نوشته شده است)، اما، در واقع، k است

حداکثر تعداد PD که می تواند با یکی مرتبط شود

فایل، زیرا همان فایل در یک فرآیند را می توان توسط دو باز کرد

بارها، و دو PD تشکیل می شود. به کجا منجر می شود، ما چند مورد را در نظر خواهیم گرفت

بعداً، اما این کاملاً صحیح است. پس از باز کردن فایل، تمام عملیات تبادل

از طریق دستورالعمل های توصیفگر فایل انجام می شود (یعنی نام هیچ جای دیگری نیست

مشخص نشده است). هر توصیفگر فایل تعدادی پارامتر مرتبط با خود دارد.

(در مورد آنها کمی بعد).

بیایید ببینیم I / O چگونه سازماندهی شده است، یا بهتر است بگوییم، پردازش می شود.

تبادل سطح پایین، از نقطه نظر سیستم عامل. اکنون خواهد بود

در مورد طرح منطقی سازماندهی ورودی / خروجی، برای طرح واقعی گفت

تا حدودی متفاوت تنظیم شده است، اما این برای ما چندان مهم نیست.

تمام داده هایی که سیستم با آنها کار می کند به دو بخش تقسیم می شود

کلاس اولین نوع داده، داده های مرتبط با اتاق عمل است.

سیستم، یعنی داده های کل سیستم. این داده ها شامل TIDOF است.

اندازه جدول ثابت است و با تعداد باز کردن همزمان تعیین می شود

FD. هر ورودی در این جدول حاوی برخی از اطلاعات است

که ما به موارد زیر علاقه مند خواهیم شد:

1) یک کپی از شناسه فایل باز. برای هر فایل باز شده، آن را شناسایی کنید

محتویات این فایل را مشخص می کند، کپی شده و در آن قرار داده شده است

TIDOF. پس از آن، تمام دستکاری ها با فایل (به عنوان مثال، تغییر

آدرس دهی فایل) با یک کپی از شناسه رخ می دهد، نه با خود شناسه روی دیسک.

TIDOF در RAM قرار دارد، یعنی. دسترسی به اطلاعات در

به سرعت انجام می شود.

2) شمارنده ای از فایل های باز شده در حال حاضر مرتبط با این شناسه. این

به این معنی است که برای هر تعداد باز شدن فایل مرتبط با

با توجه به شناسه، سیستم با یک کپی از این شناسه کار می کند.

حالا بیایید به جدول به اصطلاح فایل (TF) برویم. جدول فایل

شامل تعداد ثابتی رکورد است. هر ورودی TF

مربوط به یک فایل باز در سیستم ((یا، به طور دقیق تر، FD)) است. علاوه بر این، در

در اکثریت قریب به اتفاق موارد، این مکاتبات یک به یک است.

در صورتی که این یک مکاتبه یک به یک نیست، ما

زیر را در نظر بگیرید. هر رکورد TF حاوی نشانگرهای خواندن / نوشتن توسط

فایل. به این معنی که اگر همان فایل در دو فرآیند باز شود

یا دو بار در یک فرآیند، سپس هر کشف نشانگر خود را دارد، و

آنها به یکدیگر وابسته نیستند (تقریباً همیشه، به استثنای برخی).

موارد). هر رکورد TF حاوی به اصطلاح شاخص است

وراثت یک عدد صحیح است.

این داده ها در سطح سیستم عامل هستند، یعنی. داده هایی که توصیف می کنند

وضعیت مشکل در سیستم به عنوان یک کل.

هر فرآیند با یک جدول به اصطلاح از فایل های باز مرتبط است.

(ناوگان اقیانوس آرام). عدد رکورد در این جدول عدد FD است. هر خط از این

اطلاعات مربوط به نشانگرهای مرتبط با FD، همانطور که بود، پاره شده است. با یکی

دست، توصیفگرهای فایل داده‌هایی هستند که ویژگی یک فرآیند هستند،

از سوی دیگر، اشاره گر داده هایی است که ویژگی یک عملیات است

سیستم های. به نظر می رسد که منطقی نیست، و اکنون ما در نظر خواهیم گرفت که این چه چیزی است

غیر منطقی بودن خود را نشان می دهد. برای انجام این کار، مفهومی را به طور خلاصه در نظر بگیرید

مسائل مربوط به شکل گیری فرآیند. سیستم عامل یونیکس

دارای عملکرد فورک () است. این یک تماس سیستمی است. هنگام دسترسی به این سیستم

در تماس، برخی از اقدامات در سیستم رخ می دهد، که برای بسیاری از

ممکن است برای شما بی معنی به نظر برسد - فرآیند در حال کپی شدن است

که این تابع با آن مواجه شد، i.e. یک فرآیند دوقلو ایجاد می شود. برای چی

این لازم است، کمی بعد می گویم.

تشکیل فرآیند دوقلو دارای خواص زیر است. اولین

ویژگی: process-son که پس از فراخوانی تابع تشکیل می شود

fork () دارای تمام فایل هایی است که در فرآیند پدر باز شده اند. دومین -

این سیستم به وسیله خود به خود اجازه می دهد مکان را شناسایی کند

فرآیند پدر است و در جایی که فرآیند پسر است، اگرچه در حالت کلی آنها مطلقاً هستند

همان هستند.

فرض کنید فرآیند شماره 1 و یک جدول باز وجود دارد

فایل شماره 1 در این فرآیند فایلی به نام Name باز می شود و این فایل

توصیفگر فایل I نگاشت شده است. این بدان معناست که در

خط مربوط به ناوگان اقیانوس آرام رکوردی خواهد بود که پیوندی به TF دارد. در TF

برخی از ویژگی های مرتبط با باز کردن فایل تعریف شده است، و همچنین وجود دارد

اشاره گر خواندن/نوشتن، یعنی. اشاره گر ما روی آن کار می کنیم،

تبادل اطلاعات با فایل ورودی‌های TF پیوندی به TIDOF دارند، در

که حاوی یک کپی از شناسه مربوط به فایل به نام Name است.

فرض کنید این فرآیند فایلی به نام Name را دوباره باز می کند.

سیستم توصیفگر فایل J را به آن اختصاص داد. این

باز با خط J TOF اولین فرآیند مطابقت دارد. در این پست

باز کردن نام فایل و در حالی که شاخص های وراثت برای هر دو مورد

برابر یک خواهد بود. این ورودی مربوط به این کشف است،

اشاره گر خواندن / نوشتن نشانگرهای توصیفگر فایل I و J مستقل هستند

از یکدیگر، یعنی هنگام خواندن / نوشتن از طریق توصیفگر فایل I،

نشانگر J توصیفگر فایل تغییر نخواهد کرد. این ورودی لینک خواهد شد

به همان inode از TIDOF، و مقدار شمارنده خواهد بود

برابر دو است.

فرض کنید فرآیند شماره 1 با تابع فورک () تماس گرفته است،

یک کپی از فرآیند تشکیل شد، و علاوه بر این، هر دو نسخه در خروجی شروع به کار می کنند

از fork ()، و TOP # 2 با فرآیند دوم مرتبط خواهد شد. همینطور خواهد بود

نام فایل توسط ID I و ID J باز می شود. اما در این حالت، زمانی که فرآیند دریافت می شود

فایل های به ارث رسیده از والد را باز کنید، سپس پیوندها را از خطوط مربوطه باز کنید

ناوگان اقیانوس آرام نه در رکوردهای جدید TF، بلکه در همان رکوردهایی که به آن‌ها می‌رسد، برگزار می‌شود

به FD مربوطه از والدین ارجاع شده است. این فرآیندها دارای نشانگرهای خواندنی هستند

ورودی ها یکسان خواهند بود، یعنی اگر نشانگر را در یک فرآیند حرکت دهید،

سپس به طور خودکار برای فرآیند دیگری نیز حرکت می کند. این مورد مانند

زمانی که هیچ مکاتبه یک به یک بین خطوط TF و

خطوط ناوگان اقیانوس آرام هنگامی که این پیوندها ایجاد می شوند، شمارنده دو برابر افزایش می یابد. و،

بر این اساس، از ID، به دلیل آدرس دهی بلوک ها، دسترسی به

بلوک های فایل این سازمان اطلاعاتی بورس به این معناست که بورس

محتویات هر فایل به صورت مرکزی مدیریت می شود، یعنی. در پایان

در نتیجه، همه سفارش‌های مبادله از یک رکورد واحد عبور می‌کنند، مهم نیست چقدر باشد

فایل های مرتبط با این شناسه در سیستم باز نشدند. وجود ندارد

برخورد، زمانی که در زمان سردرگمی در اجرا شده شروع می شود، یا

مبادلات انجام نشده مرتبط با یک توصیفگر.

با هر شکل گیری یک فرآیند جدید، سیستم به طور پیشینی ایجاد می شود

توصیفگرهای صفر، اول و دوم فایل از TOF، که آنها را با آنها مرتبط می کند

فایل های از پیش تعریف شده صفر PD با فایل ورودی سیستم همراه است

معمولاً یک صفحه کلید خارجی مرتبط با آن دارد. اولین FD است

یک فایل خروجی استاندارد که معمولاً با صفحه نمایشگر همراه است. دومین

FD یک فایل خروجی استاندارد برای پیام های تشخیصی است، همچنین همراه با آن

معمولاً با صفحه نمایشگر همراه است.

به عنوان مثال، هنگام اشاره به این یا آن اقدامات معمولی را در نظر بگیرید

تماس های سیستمی

فراخوانی تابع fork () همانطور که می دانید هنگام فراخوانی این تابع

سیستم یک کپی از فرآیند اصلی ایجاد می کند. در همان زمان، سیستم ناوگان اقیانوس آرام را کپی می کند

یک فرآیند در TOF فرآیند جانشین، و همچنین یک فرآیند افزایش می یابد

شاخص وراثت در رشته های TF مرتبط با فایل های باز

روند اصلی و همچنین افزایش شمارنده فایل های باز مرتبط با

شناسه داده، در TIDOF.

فراخوانی تابع open () وقتی این تابع فراخوانی می شود،

ذیل:

1. نام کامل دایرکتوری را مشخص می کند که در آن

2. شماره شناسنامه مشخص می شود. شماره شناسه برای جستجو استفاده می شود

جدول TIDOF.

3. اگر ورودی با شماره مشخص شده یافت شد، شماره را اصلاح کنید

خط مربوطه TIDOF و به مرحله 5 بروید.

4. اگر خط پیدا نشد، تشکیل رخ می دهد

یک خط جدید مربوط به ID جدید و آن را commit کنید

5. شمارنده ارجاعات (فلش ها) را برای رکورد TIDOF تصحیح می کنیم. عدد

رکوردهای موجود در TIDOF در رکورد TF و همچنین در TOF ثبت می شوند

تعداد تاریخ های ناوگان اقیانوس آرام به برنامه بازگردانده می شود که در آن

در طول عملیات I / O، اقدامات سیستم آشکار است.

تعامل با دستگاه ها قبلاً گفته ایم که همه دستگاه ها

که توسط سیستم عامل یونیکس سرویس می شوند می توانند

به دو نوع طبقه بندی می شود - دستگاه های بایت گرا و بلوک-

دستگاه های گرا لازم به ذکر است که همین دستگاه در

سیستم را می توان هم بایت گرا و هم بلوک در نظر گرفت

جهت دار (به عنوان مثال، حافظه دسترسی تصادفی). بر این اساس وجود دارد

درایورهای بلوک گرا و بایت گرا. در آخرین سخنرانی، ما

فایل های ویژه مرتبط با دستگاه های خارجی در نظر گرفته شده و

در مورد این واقعیت صحبت کرد که جدولی از درایورهای دستگاه بلوک گرا وجود دارد

و جدولی از درایورهای دستگاه بایت گرا. بر این اساس، این

ویژگی اصلی سازماندهی کار با بلوک گرا

دستگاه ها توانایی تبادل بافر است. نکته اصلی این است

بعد. یک مخزن بافر در RAM سیستم سازماندهی شده است، جایی که

اندازه هر بافر یک بلوک است. هر یک از این بلوک ها می تواند باشد

مرتبط با درایور یکی از بلوک گراهای فیزیکی

دستگاه ها

در نظر بگیرید که چگونه دنباله ای از اقدامات در طول اجرا انجام می شود

بلوک از شماره دستگاه M.

1. در میان بافرهای حوضچه بافر، جستجوی مشخص شده انجام می شود

بلوک، یعنی اگر یک بافر حاوی بلوک N-امین M-th یافت شود

دستگاه، سپس تعداد این بافر را ثابت می کنیم. در این مورد،

هیچ دسترسی به یک دستگاه فیزیکی واقعی رخ نمی دهد، اما

عملیات خواندن اطلاعات نمایشی از اطلاعات است

از بافر پیدا شده به مرحله 4 بروید.

2. اگر جستجو برای بافر مشخص شده ناموفق بود، در مخزن بافر

جستجو برای یک بافر برای خواندن و قرار دادن داده شده

مسدود کردن. اگر یک بافر رایگان وجود دارد (واقعاً، این وضعیت

فقط در شروع سیستم امکان پذیر است)، سپس شماره آن را ثابت می کنیم و

به مرحله 3 بروید. اگر یک بافر رایگان پیدا نشد، ما

بافری را انتخاب کنید که برای طولانی ترین زمان به آن دسترسی نداشته است

زمان. اگر یک پرچم تنظیم در بافر وجود دارد

اطلاعات ثبت شده در بافر وجود دارد

نوشتن واقعی بلوک بافر در فیزیکی

دستگاه سپس شماره آن را درست می کنیم و همچنین به

3. بلوک N-امین دستگاه M در پیدا شده خوانده می شود

4. شمارشگر زمان در این بافر ریست شده و

تعداد شمارنده ها در بافرهای دیگر را یک عدد افزایش دهید.

5. در نتیجه خواندن مطالب این را پاس می کنیم

می توانید ببینید که در اینجا یک بهینه سازی مرتبط با حداقل سازی وجود دارد

تماس های واقعی به یک دستگاه فیزیکی این بسیار مفید است زمانی که

عملیات سیستم بلوک ها به روشی مشابه نوشته می شوند. بنابراین

بافر I/O سطح پایین به این ترتیب سازماندهی شده است.

مزایا مشخص است. نقطه ضعف این است که سیستم در این مورد

برای خاموش کردن غیرمجاز بسیار مهم است، یعنی.

وضعیتی که بافرهای سیستم تخلیه نمی شوند، اما یک حالت غیرعادی رخ می دهد

خاتمه اجرای برنامه های سیستم عامل، که می تواند منجر به

از دست دادن اطلاعات

دومین عیب این است که به دلیل بافر کردن،

در زمان، واقعیت مراجعه به سیستم برای مبادله و مبادله واقعی. این

این عیب زمانی خود را نشان می دهد که در تبادل فیزیکی واقعی

تصادف رخ می دهد آن ها لازم است، فرض کنید، یک بلوک، آن را بنویسید

در بافر نوشته می شود و پاسخی از سیستم دریافت می شود که مبادله به پایان رسیده است

با موفقیت، اما زمانی که سیستم واقعاً این بلوک را در OVC می‌نویسد ناشناخته است. در

این ممکن است باعث یک وضعیت غیر طبیعی شود، زیرا ممکن است ضبط شود

به عنوان مثال، به دلیل نقص در رسانه عبور نمی کند. معلوم می شود یک موقعیت زمانی که

که فراخوانی سیستم برای تابع تبادل برای فرآیند موفقیت آمیز بود

(فرآیند این پاسخ را دریافت کرد که همه چیز ضبط شده است)، اما، در واقع، مبادله نشد

بنابراین، این سیستم برای سخت افزار قابل اعتماد طراحی شده است و

شرایط کار حرفه ای صحیح برای مبارزه با احتمال

از دست دادن اطلاعات در مواقع اضطراری، سیستم کافی است

"هوشمند" و به درستی عمل می کند. یعنی سیستم دارای یک پارامتر خاص است،

که می تواند به سرعت تغییر کند، که دوره های زمانی را مشخص می کند،

که از طریق آن داده های سیستم ریست می شوند. دوم - وجود دارد

دستوری که کاربر می تواند به آن دسترسی پیدا کند دستور SYNC است. با این

این دستور داده ها را به دیسک منتقل می کند. و سوم، این سیستم دارد

مقداری افزونگی، که در صورت از دست دادن اطلاعات، امکان تولید را فراهم می کند

مجموعه‌ای از اقدامات که اطلاعات را بازیابی می‌کند یا آن‌ها را مسدود می‌کند

با متعلق به فایل قابل شناسایی نیست، به آن نوشته می شود

یک مکان خاص در فایل سیستم در این مکان می توان آنها را امتحان کرد

تجزیه و تحلیل و بازیابی دستی، یا از دست دادن چیزی. ما

این دانشگاه یکی از اولین دانشگاه های کشور بود که شروع به کار سالن عمل کرد

سیستم یونیکس، و اکنون می توان گفت که مشکلات عدم اطمینان سیستم،

از نظر از دست دادن اطلاعات کشنده، هیچ کدام وجود نداشت.

امروز در مورد اینکه ما تماس های سیستمی داریم و

کتابخانه های I/O ابزار دیگری که اجازه می دهد

بهینه سازی عملکرد سیستم، کتابخانه استاندارد I/O است،

پیوند به فایل stdio.h شامل. جوهر مبادله مفهومی نیز همین است

مانند هنگام سازماندهی I/O سطح پایین. تفاوت این است

که اگر open () شماره توصیفگر فایل را برمی گرداند، fopen () برمی گرداند

یک اشاره گر به ساختاری از نوع خاص FILE. دوم و اصلی

این یک کتابخانه از توابع است. بسیاری از توابع خدمات ارائه شده توسط این

کتابخانه در فضای آدرس شما پیاده سازی می شود. V

به ویژه، چنین عملکردی از سرویس، سطح دیگری از بافر است

ورودی خروجی. ماهیت آن در این واقعیت نهفته است که در منابع این فرآیند می توانید

بافری را اختصاص دهید که به طور مشابه با بافر استخر کار کند

سیستم عامل و، که دسترسی فرآیند شما را به حداقل می رساند

سیستم I/O را فرا می خواند. قابل درک است که این کتابخانه I / O

توسط برنامه ای که از تماس های سیستمی استفاده می کند پیاده سازی شده است

ورودی خروجی. این بدان معنی است که یک عامل بافر دوگانه ظاهر می شود، اگرچه

این باعث افزایش ناامنی می شود.

بدیهی است که بافر دوگانه یک چیز مفید است. به شما امکان تماس می دهد

خواندن یا نوشتن از طریق توابع کتابخانه با حجم داده در نیم بلوک

یا در یک سوم بلوک، و اگر این قطعات پشت سر هم بروند، خود سیستم به دلیل

بافر، این قسمت ها را جمع آوری می کند و به جای چندین تماس با سیستم

فقط یک تماس با تماس برقرار می شود. سودآور است مضر است که این

بافر در فضای آدرس فرآیند با سازماندهی شده است

با تمام عواقب بعدی (همگام سازی در مبادلات در آن از بین می رود

اگر فرآیندهای دیگری از طریق این کتابخانه با این فایل کار می کنند،

زیرا بدنه هر فرآیند دارای بافر مخصوص به خود است که می تواند

جمع آوری این داده ها و بدون یکنواختی، که در است

طرحی که ما در نظر گرفتیم کار نمی کند). با این حال، استاندارد

کتابخانه I/O یک ابزار مفید است. او نیز ابزار دارد

مسدود کردن این بافر

سخنرانی شماره 10

در سخنرانی گذشته، نکات زیر را در رابطه با

سازماندهی عملکرد سیستم فایل این یک سازمان سیستمی است

تبادل سطح پایین ما متوجه شدیم که با سازماندهی داده ها،

سیستم عامل یونیکس با وسایلی نسبتاً ساده و "شفاف".

مشکلات درگیری های احتمالی را در صورت وجود چندین دهانه از یک و حل می کند

همان فایل ما دیدیم که همه بازهای یک فایل (زیر

فایل، ما نه نام، بلکه محتوا را درک می کنیم) در نهایت به نتیجه می رسد

با یک کپی شناسنامه ما متوجه شده ایم که تقریبا تمام اکتشافات

فایل های مرتبط با همان شناسه، به فرآیندها توانایی کار می دهند

با اشاره گرهای خودش برای خواندن/نوشتن روی فایل، به جز موارد،

زمانی که یک فایل در فرآیند از طریق ارث به دست آمد، یعنی. فایل دریافت شد

از فرآیند پدر از طریق تابع فورک () توسط فرآیند پسر.

ما متوجه شده ایم که سیستم دستگاه های سرویس شده را تقسیم بندی می کند

به دو کلاس: بلوک گرا و بایت گرا. یکسان

دستگاه می تواند هم بایت گرا و هم بلوک باشد

جهت دار. هم به خود دستگاه و هم به در دسترس بودن بستگی دارد

درایورها - برنامه هایی که این دستگاه را کنترل می کنند. نمونه ای از این دست

دستگاه رم است

ما اصول سازماندهی صرافی سطح پایین را بررسی کردیم

دستگاه های بلوک گرا و در این زمینه با آن آشنا شدیم

ابزارهای بافری که در سیستم عامل یونیکس مورد استفاده قرار می گیرند، ماهیت آن

این است که، بر اساس قیاس با بافر خواندن / نوشتن از عملیاتی

حافظه (سخت افزار)، سیستم عامل نرم افزار ایجاد می کند

ابزارهایی که به شما امکان می دهد تعداد تماس ها را به حداقل برسانید

دستگاه فیزیکی این مکانیسم به طور مطلوب سیستم عامل یونیکس را متمایز و متمایز می کند.

در اینجا لازم به ذکر است که clipboarding می تواند چند سطحی باشد.

اولین سطح اضافی ممکن است به دلیل این واقعیت ظاهر شود که دستگاه

می تواند بافرهای سخت افزاری خاص خود را داشته باشد که به صورت قیاس با بافرها پیاده سازی می شوند

حافظه دسترسی تصادفی.

ما همچنین در مورد این واقعیت صحبت کردیم که علاوه بر I/O سطح پایین، با

که با توابعی مرتبط هستند که تماس های سیستمی (باز کردن، خواندن، نوشتن) را فراهم می کنند

و غیره)، دسترسی های سطح بالا وجود دارد - این استاندارد است

کتابخانه ورودی / خروجی stdio.h که اتصال آن به شما امکان استفاده از آن را می دهد

برای سازماندهی مبادلات، یک سطح دیگر از بافر (این یک بهینه سازی است

فراخوانی سیستم) که با فرآیند مرتبط است، به عنوان مثال.

بافر به هزینه منابع فرآیندی رخ می دهد. ما از آنچه خوب است قدردانی کردیم

چه اشکالی دارد بدیهی است که بافر کردن تعداد مبادلات با

دستگاه خارجی کند، و هر چه این سطوح بیشتر باشد، کمتر است

مبادلات وجود دارد با این حال، چیز بد این است که به دلیل بافر،

قابلیت اطمینان سیستم به عنوان مثال، هنگامی که سیستم به طور غیر منتظره خاموش می شود

منبع تغذیه، همه بافرها اطلاعات را از دست می دهند. لحظه پرداختن به بورس بسیار دور است

تبادل واقعی و در نتیجه ممکن است شرایط ناخوشایندی رخ دهد. اما با وجود

این کاستی ها، تجربه نشان می دهد که از دست دادن اطلاعات کشنده رخ می دهد

به ندرت.

من می خواهم توجه شما را به میزان ذخیره یونیکس در VCU جلب کنم.

superblock در RAM است و اقدامات واقعی با اطلاعات

سوپر بلوک ها نه از دیسک، بلکه از RAM سرچشمه می گیرند، اگرچه در اینجا

همان مشکل با خاموش شدن غیرمجاز برق رخ می دهد.

هنگام باز کردن فایل، ما با ID کار می کنیم. ما متوجه شدیم که کار با ID

از طریق کار با یک کپی از آن واقع در نرم افزار انجام می شود

جداول در رم این به این معنی است که تقریباً هیچ سرباری وجود ندارد

هزینه‌های مرتبط با فایل‌های کوچک، و این سربار زمانی ناچیز است

کار با فایل های بزرگ به نظر می رسد که تقریباً تمام زیرساخت ها،

پشتیبانی از کار سیستم فایل، با هزینه عمیق کار می کند

بافر سطحی

ویژگی های فایل

ما در مورد سازماندهی کاربران سیستم صحبت کردیم. او دارد

ساختار سه سطحی سلسله مراتبی

هر کاربری متعلق به گروه است. با توجه به سلسله مراتب

کاربران، سلسله مراتبی برای حفاظت از فایل ها و حقوق کاربر تعریف شده است.

مفهوم مالک فایل تعریف شده است. صاحب اصلی فایل است

کاربر (یا بهتر است بگوییم، فرآیند کاربر) که این فایل را ایجاد کرده است. صفت

"مالک فایل" را می توان با دستور changeown تغییر داد. هر فایل دارای

ویژگی های امنیتی مرتبط با سلسله مراتب شما حقوق دسترسی به برخی از آنها را دارید

اعمال فایل توسط صاحب فایل. اینها مجوزهای خواندن، روشن هستند

ضبط، برای اجرا هر فایل، به جز حقوق مربوط به سطح

کاربر، حقوق مرتبط با سطح گروه وجود دارد. برای همه مناسب است

کاربران گروهی که صاحب فایل به آن تعلق دارد، به استثنای

خودش (یعنی حقوق مالک و گروهش متفاوت است). دسته سوم

حفاظت - بقیه. اینها حقوقی است که همه کاربران دارند.

سیستم ها، به جز مالک و گروهش. سیستم یک فرمان دارد

مجوزها تغییر حالت می دهند.

علاوه بر ویژگی‌های دسترسی، هر فایل می‌تواند نشانه‌هایی نیز داشته باشد

خاص، به اصطلاح. t-bit و s-bit که توسط برخی نیز تنظیم شده است

تیم ما که از قبل ساختار فایل سیستم را می دانیم، درک می کنیم که در اصل،

فایل می تواند بسیار پراکنده باشد. علاوه بر این،

فایل می تواند بزرگ باشد، و هنگام باز کردن یک فایل بزرگ، سربار رخ می دهد

هزینه های مرتبط با دسترسی به بلوک های دور از یک فایل. بنابراین، کشف

فایل یک فرآیند طولانی است. برای بهینه سازی این عمل، در

این سیستم قابلیت علامت گذاری فایل های اجرایی را با یک بیت t دارد. بعد از آن

موارد زیر اتفاق می افتد: در صورتی که یک فایل اجرایی فراخوانی شود،

با یک بیت t مشخص شده است، سپس در اولین تماس در طول جلسه سیستم،

کپی کردن بدنه فایل در قسمت ذخیره هر بار که دوباره زنگ میزنی

فایل، ابتدا دایرکتوری ناحیه ذخیره شده اسکن می شود و در آن

اگر فایل مورد نظر شما وجود دارد، پس فایل از OVC بارگیری نمی شود،

اما از این منطقه یعنی این روش دیگری برای به حداقل رساندن تماس با OVC است.

معمولا قابلیت تنظیم t-bit در اختیار سیستم است

مدیر، و مدیر سیستم آن فرآیندها را انتخاب می کند (و

فایل ها به ترتیب) که باید با یک بیت علامت گذاری شوند. معمولاً علامت گذاری می شوند

آن دسته از فرآیندهایی که اغلب مورد استفاده قرار می گیرند (اگر، برای مثال، وجود داشته باشد

کارگاه، منطقی است که فایل کامپایلر را با یک بیت t علامت گذاری کنید).

ما S-bit را تا حدودی سطحی پوشش خواهیم داد، اما بعداً به آن باز خواهیم گشت.

مشکل زیر وجود دارد. از آنجایی که تمام سرمایه های سیستم متعلق به شخصی است همه

یعنی تمام دستورات (به جز برخی از دستورات داخلی) در نهایی هستند

حساب فایل هایی هستند که صاحب دارند. بعضی از

این دستورات می توانند به فایل های سیستم خاصی اشاره کنند. ناشی می شود

مشکل مربوط به این واقعیت است که از یک طرف، باید در برابر محافظت وجود داشته باشد

دسترسی غیرمجاز به فایل از طرفی همه تیم ها دارند

حقوق بالقوه برای همه دسته ها چگونه بودن؟ امکان علامت گذاری وجود دارد

برخی از فایل ها s-bit هستند. مالک فایل s-bit همان باقی می ماند، اما

هنگام شروع این فایل، صاحب فرآیندی که این فایل را راه اندازی کرده است،

حقوق دسترسی به داده ها از صاحب فایل اصلی اعطا می شود.

فرض کنید یک فایل اجرایی با نام وجود دارد و به نوعی کار می کند-

به همین ترتیب فایل file2 که حاوی اطلاعات محرمانه است.

فرض کنید فایل file2 را به روز می کند که حاوی اطلاعاتی در مورد آن است

همه کاربران ثبت نام شده و به ویژه فایل می توانند تغییر کنند

رمز عبور کاربر در سیستم اگر من فایل را از طرف خودم اجرا کنم، آنها می توانند

دو حالت پیش می‌آید: یا نمی‌توانم با file2 کار کنم که شامل

اعتبار کاربر چون برای همه بسته است

بقیه؛ یا برای همه باز است، پس هیچ حفاظتی وجود ندارد. در این مورد

s-bit کار می کند. اصل کار او به شرح زیر است. توسط مالک

فایل منبع ROOT کاربر است. فرض کنید این فایل می خواست

کاربری به نام MASH را اجرا کنید. اگر MASH این فایل را اجرا کند و s- وجود نداشته باشد

بیت، معلوم می شود که مالک فایل ROOT است و مالک

فرآیند تبدیل به MASH شد. در این صورت فایل هایی که در دسترس کاربر نیستند

MASH برای فرآیند خود غیر قابل دسترسی خواهد بود و MASH قادر به تغییر آن نخواهد بود

رمز عبور در سیستم S-bit به شما اجازه می دهد تا حقوق مالک (ROOT) فایل را به آن گسترش دهید

مالک (MASH) فرآیند (راه اندازی شده از این فایل)، و برای مدت زمان جلسه

کار فرآیند، تمام آن فایل هایی که در دسترس بودند در دسترس او خواهند بود

صاحب فایل (ROOT).

سوال بعدی: مجوزهای دایرکتوری چگونه تفسیر می شوند؟

(چون دایرکتوری ها هم فایل هستند)؟ اجازه خواندن از

دایرکتوری یعنی اجازه ورود به دایرکتوری و باز کردن فایل ها از آن

فهرست راهنما. اجازه نوشتن امکان ایجاد و را فراهم می کند

فایل های این دایرکتوری را از بین ببرید. مجوز اجرا است

توانایی جستجو در یک پوشه معین (به عنوان مثال، با استفاده از دستور ls).

سیستم فایل از دیدگاه کاربر.

بیایید نگاهی به ساختار فایل سیستم از نقطه نظر بیندازیم

کاربر. این ساختار برای یک تعمیم در نظر گرفته خواهد شد

سیستم عامل، زیرا ساختار واقعی آن ممکن است متفاوت باشد.

فایلی به نام unix در دایرکتوری ریشه وجود دارد. این هم همین فایل

که توسط بوت لودر شروع می شود و هسته را تشکیل می دهد

کاتالوگ ETC این فهرست حاوی فایل های داده استاندارد است

سیستم ها و دستوراتی که سطحی از کنترل را فراهم می کنند

عملکرد سیستم 1. فایل passwd. همه کاربران در

سیستم از طریق این فایل ثبت می شود. این بدان معنی است که اگر

کاربر می تواند کار کند، سپس یک خط در فایل passwd مشخص شده است

نام کاربری که شامل مجموعه ای از داده های جدا شده با

شخصیت جداکننده به طور خاص، خط در فایل passwd شامل شماره است

گروهی که کاربر به آن تعلق دارد گاهی اوقات می تواند شامل شود

رمز عبور رمزگذاری شده برای ورود کاربر به سیستم. رمزگذاری شده -

به این معنی است که سیستم از یک فرصت مبهم استفاده می کند

نگاشت دنباله ای از کاراکترها به برخی از کدها و در سیستم

نمایش این رمز عبور ذخیره می شود. یونیکس های مدرن رمزهای عبور را در آن ذخیره می کنند

یک پایگاه داده امن جداگانه (اگرچه فایل passwd نیز وجود دارد)،

از آنجایی که فایل passwd معمولا برای خواندن، الگوریتم تبدیل باز است

همچنین معمولاً شناخته شده است و می توان رمز عبور را حدس زد.

مشخص کردن نام خانوادگی، نام و نام خانوادگی کاربر؛ زمینه ای که در آن

وضعیت کاربر نشان داده شده است؛ فیلدی که حاوی دایرکتوری "home" است.

همین خط نشان می دهد (یا می توان آن را نشان داد) با کدام مترجم

دستوراتی که این کاربر اجرا خواهد کرد. ممکن است مقدار بیشتری وجود داشته باشد

مولفه های.

2. فایل rc. این فایل شامل مجموعه ای از

دستوراتی که هنگام بوت شدن سیستم عامل اجرا می شوند.

به عنوان مثال، در هنگام بوت، سیستم عامل می تواند یک فرآیند را شروع کند

بررسی ایمنی سیستم فایل

لطفا توجه داشته باشید که سیستم عامل یونیکس، به استثنای

چندین مورد، شامل تمام اطلاعات سیستم خود به صورت معمولی است

فایل های متنی مشاهده این اطلاعات آسان و آسان است

تنظیم شده. زمانی این یک اقدام انقلابی بود.

3. همان دایرکتوری حاوی دستوراتی است که اجازه می دهد

رمز عبور کاربر را تغییر دهید (passwd قابل اجرا)، اجازه دهید

فایل سیستم های محلی را به سیستم فایل "mount" کنید، و

برای پایه‌گذاری همان سیستم‌های محلی، به شما اجازه می‌دهد فرآیند را شروع کنید

تست و تصحیح فایل سیستم این فرآیند فایل را بررسی می کند

سیستم برای مجموعه خاصی از ویژگی ها، به عنوان مثال، مجموعه ای از رایگان

فایل‌ها، وقتی با بسیاری از فایل‌های شلوغ ترکیب می‌شوند، باید همه را ارائه دهند

فهرست BIN. این کاتالوگ شامل تعداد زیادی استاندارد است

دستورات سیستم در دسترس کاربر

دایرکتوری MNT. این دایرکتوری است که می توانید محلی را به آن "mount" کنید

سیستم های فایل تا به حال ما معتقد بودیم که سیستم فایل

روی یک دستگاه میزبانی می شود، اما در واقعیت اینطور نیست. یک پایه وجود دارد

سیستم فایل در دستگاه سیستم، و یک دلخواه (در

محدودیت های معقول) تعداد فایل سیستم های محلی که

با استفاده از دستوری به سیستم سوار می شوند. ریشه محلی

سیستم فایل دایرکتوری MNT خواهد بود.

کاتالوگ DER. این فهرست شامل فایل های مرتبط با

درایورهای دستگاه خارجی خاص، مانند درایورهای کنسول،

چاپ خطی و غیره آیا به یاد دارید که فایل های مرتبط با درایورها

دستگاه های خارجی، در شناسه مرتبط با نام خود، دارای علامت هستند

این واقعیت که این یک دستگاه فایل است و همچنین پیوندهایی در شناسه به مربوطه دارد

جداول راننده این فایل ها هیچ محتوایی ندارند.

فهرست USR. این دایرکتوری دارای یک زیر شاخه LIB است که معمولاً در آن

کتابخانه هایی وجود دارند که برخی از توابع گروهی را پیاده سازی می کنند،

ارائه شده به کاربر، از جمله کامپایلر C با متناظر

پشتیبانی از کتابخانه ها

همچنین، یک زیر شاخه BIN (/ USR / BIN) وجود دارد که شامل

توسط مدیر سیستم دستورات اضافی "homespun"، زیرا آنها

قرار دادن در فهرست / BIN نادرست در نظر گرفته می شود.

شامل فهرست فرعی. آیا به یاد دارید که خط شامل چه شکلی است؟ .

این خط به پیش پردازنده C دستور می دهد که یک فایل را از دایرکتوری بگیرد

/ USR / شامل. این دایرکتوری زیر شاخه های خود را دارد و ما به آن علاقه مند هستیم

زیر شاخه SYS (/ USR / INCLUDE / SYS). شامل فایل های

مرتبط با قابلیت های سیستم، به ویژه signal.h است

شمارشی از سیگنال هایی که می توانند بین دو فرآیند مبادله شوند.

بنابراین، ما توصیف سیستم فایل را به پایان رساندیم و می‌توانیم نتیجه بگیریم

سیستم فایل یونیکس سلسله مراتبی و چند کاربره است. فایل

سیستم یونیکس دارای بافر عمیق و چند لایه برای تبادل با

دستگاه های واقعی سیستم فایل یونیکس اطلاعاتی است

اساس عملکرد سیستم عامل این یک فایل قابل ارتقا است

سیستم، در حالی که یکپارچگی خود را حفظ می کند، یعنی. در حالی که همیشه

تنها یک مسیر از ریشه آن به هر گره (یا برگ) وجود دارد.

فایل سیستم یونیکس از نظر سازماندهی منطقی فایل ها دارای

ساختار شفاف و شفاف آن این شرایط خاصی را تحمیل می کند

در مورد اداره نظام، زیرا مشکلات هماهنگی حقوق دسترسی به وجود دارد

اجزای مختلف سیستم فایل، مشکلاتی با قرار دادن یک جدید وجود دارد

اطلاعات داخل فایل سیستم

-----------------------

شاخص وراثت

مقالات مرتبط برتر