لینک کوتاه مطلب : https://hsgar.com/?p=4130

فضاهای آدرس خطی – صف ACM

سوله دوچرخه


نسخه PDF این مقاله را دانلود کنید
PDF

با هر سرعتی ناامن

پول هنینگ کمپ

من اخیراً یک رایانه Apple با CPU جدید M1 خریداری کردم تا مکمل beastiarium شناخته شده به عنوان خوشه ادغام پیوسته Varnish Cache باشد. من کمی تحت تأثیر قرار گرفتم که با ماشین مجازی s390x قرض گرفته شده از IBM پیش می رود، در حالی که هرگز بیش از 25 وات نمی کشد، اما غیر از این: مه …

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

کسی را به من نشان دهید که IBM S/360 را طراحی RISC می نامد، و من امروز به شما کسی را نشان خواهم داد که با مجموعه دستورالعمل s390 کار می کند.

یا چطور: اولین قانون ARM این است که “ما در مورد Thumb-2 صحبت نمی کنیم.”

یک نمونه بسیار خاص از این قانون زمانی اتفاق افتاد که AMD مجموعه دستورالعمل x86-64 را ایجاد کرد تا معماری x86 را زنده نگه دارد، پس از اینکه اینتل، مالک اسمی آن معماری، آن را رها کرد و به سندرم سیستم دوم کامل با Itanium بد بخت رفت. معماری.

اساساً، ما اکنون هر دو نوع CPU داریم – ARM و x64 – و هر دو از مشکلات معماری یکسانی رنج می برند. به عنوان مثال، ترجمه از آدرس های مجازی خطی به آدرس های فیزیکی خطی را در نظر بگیرید. نه تنها درختان جدول صفحه به تعداد انگشت شماری از سطوح رشد کرده‌اند، بلکه اندازه‌های صفحه‌های متعددی نیز وجود دارد که هر کدام با تعداد انگشت شماری از پاورقی‌ها ارائه می‌شوند که کاربرد و عمومیت را محدود می‌کنند.

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

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

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

ترجمه از آدرس های مجازی خطی به آدرس های فیزیکی خطی آهسته و پیچیده است، زیرا 64 بیتی می تواند حافظه زیادی را آدرس دهی کند.

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

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

لازم نیست اینطور باشد.

یکی از فعالیت های داوطلبانه من برای datamuseum.dk نوشتن یک شبیه سازی نرم افزاری از یک کامپیوتر منحصر به فرد و مبهم است: Rational R1000/s400. (اشکال ندارد، می توانید آن را جستجو کنید. من منتظر می مانم، زیرا تا زمانی که یکی در آستانه ما ایستاده بود، من نیز هرگز در مورد آن نشنیده بودم.)

R1000 جنبه‌های جالب بسیاری دارد، که مهم‌ترین آنها این است که توسط افراد بسیار باهوش و با تجربه ای ساخته شده است که ترسی از رفتن جسورانه نداشتند. و آنها مطمئناً گفتند: مجموعه دستورالعمل Ada primitives است، روی فیلدهای بیتی با هر تراز کار می کند، گذرگاه داده 128 بیت عرض دارد: 64 بیت برای داده و 64 بیت برای نوع داده. آنها همچنین آن را به یک سیستم چهار CPU تبدیل کردند که همه CPU ها در همان فضای آدرس جهانی 64 بیتی کار می کنند. همچنین به 1000 آمپر خوب در 5 ولت نیاز داشت که از طریق ده ها کابل جوش به هواپیمای پشتی تحویل داده شود.

فضای آدرس جهانی 64 بیتی خطی نیست. این یک کش شی است که با یک تاپل (شی + افست) آدرس‌دهی می‌شود، و اگر آن صفحه از شیء کش نباشد، یک تله میکروکد آن را از دیسک وارد می‌کند.

در مواد بازاریابی، کش اشیاء به عنوان «بردهای حافظه» فروخته می‌شد، اما در سخت‌افزار، آن‌ها حاوی یک کش چهار طرفه تداعی‌کننده بودند که جستجوی برچسب-RAM را در طول RAS (استروب آدرس ردیف) بخشی از چرخه حافظه DRAM پنهان می‌کرد. ، به طوری که دقیقاً به اندازه یک حافظه DRAM خطی معمولی سریع است.

امروزه CPUهای پیشرفته هنوز هم می توانند تقریباً 57 بیت از فضای آدرس را با استفاده از پنج سطح جداول صفحه آدرس دهی کنند که هر سطح به طور متوالی و آهسته 10 بیت دیگر از آدرس را مرتب می کند.

R1000 64 بیت فضای آدرس را فوراً در هر دسترسی به حافظه نشان می دهد. و قبل از اینکه به من بگویید این غیرممکن است: کامپیوتر در اتاق بعدی است که با تراشه های 74xx-TTL (منطق ترانزیستور ترانزیستور) در اواخر دهه 1980 ساخته شده است. در آن زمان کار می کرد و هنوز هم کار می کند.

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

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

نه اینکه بررسی نوع در سخت افزار ایده بدی باشد. کاملا برعکس: The اطلاعیه اخیر توسط ARM این که دارای نمونه اولیه سیلیکون با اجرای Morello از معماری CHERI دانشگاه کمبریج است، به من امید زیادی برای کیفیت نرم افزار بهتر در آینده می دهد.

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

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

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

من هیچ کدام از آن را ندارم.

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

پول هنینگ کمپ ([email protected]) بیش از یک دهه را به عنوان یکی از توسعه دهندگان اصلی سیستم عامل FreeBSD قبل از ایجاد نرم افزار Varnish HTTP Cache گذراند که حدود یک پنجم کل ترافیک وب در مقطعی از آن عبور می کند. او در زادگاهش دانمارک زندگی می کند، جایی که به عنوان یک پیمانکار مستقل امرار معاش می کند و متخصص در ساخت رایانه کارهای عجیب و غریب است. یکی از جدیدترین پروژه‌های او، خوشه‌ای ابررایانه‌ای برای جلوگیری از چشمک زدن ستاره‌ها در آینه‌های ELT (تلسکوپی بسیار بزرگ) جدید ESO (رصدخانه جنوبی اروپا) بود.

حق نشر © 2022 متعلق به مالک/نویسنده است. حقوق انتشار دارای مجوز ACM.

صف

ابتدا در Queue vol. 20، شماره 2

این مورد را در کتابخانه دیجیتال ACM


مربوط:

بنوا بودری، تیم تودی، مارتین مونپرروسزنده باد تخم مرغ های عید پاک!

دوره ناآرامی است. توسعه دهندگان Rebel، با استفاده از سرورهای مستقر مستمر، اولین پیروزی خود را کسب کردند. در طول نبرد، جاسوسان شورشی موفق شدند یک commit حماسی را در کد HTML https://pro.sony انجام دهند. شورشیان که توسط عوامل شوم تعقیب می شوند، در commit ها، دکمه ها، راهنمای ابزار، API، هدرهای HTTP و صفحه های پیکربندی پنهان می شوند.

الکساندروس گازیس، الفتریا کاتسیریمیان افزار 101

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

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

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

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

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





© ACM, Inc. کلیه حقوق محفوظ است.



لینک منبع

ارسال یک پاسخ

آدرس ایمیل شما منتشر نخواهد شد.