intimate shared memory (ISM)
یک مکانیزم بهینه سازی است که ابتدا در Solaris 2.2 معرفی شده است.
این مکانیزم به منظور share کردن Translation table ها درگیر در ترجمه آدرس Virtual به Physical برای Page های حافظه مشترک به وجود آمده .
به طور معمول، سیستم های غیر ISM یک mapping در Process برای Page های حافظه مشترک را حفظ می کنند. با بسیاری از Process های متصل به حافظه مشترک، این طرح مقدار زیادی از mapping های بیش از حد را به Page های فیزیکی مشابهی ایجاد می کند. که Kernel باید maintain کند
یعنی به عبارت دیگر این مکانیزم از redundant شدن این mapping ها به ازای هر process جلوگیری میکند .
@de_coder
یک مکانیزم بهینه سازی است که ابتدا در Solaris 2.2 معرفی شده است.
این مکانیزم به منظور share کردن Translation table ها درگیر در ترجمه آدرس Virtual به Physical برای Page های حافظه مشترک به وجود آمده .
به طور معمول، سیستم های غیر ISM یک mapping در Process برای Page های حافظه مشترک را حفظ می کنند. با بسیاری از Process های متصل به حافظه مشترک، این طرح مقدار زیادی از mapping های بیش از حد را به Page های فیزیکی مشابهی ایجاد می کند. که Kernel باید maintain کند
یعنی به عبارت دیگر این مکانیزم از redundant شدن این mapping ها به ازای هر process جلوگیری میکند .
@de_coder
Forwarded from Debrary
با سلام خدمت همه همراهان عزيز و ارجمند تيم Decoder
به زودي سايت ما آماده خواهد شد و از اين به بعد كتاب ها و فيلم هاي آموزشي و سورس كد هاي جديد و آرشيو موجود در كانال هاي مان را در آن قرار خواهيم داد
با تشكر از صبر و همراهي شما عزيزان كه با توجه به كم كاري تيم ما در سال اخير هنوز هم همراه ما هستيد 🙏🏻🌺
@debrary
@de_coder
@detube
به زودي سايت ما آماده خواهد شد و از اين به بعد كتاب ها و فيلم هاي آموزشي و سورس كد هاي جديد و آرشيو موجود در كانال هاي مان را در آن قرار خواهيم داد
با تشكر از صبر و همراهي شما عزيزان كه با توجه به كم كاري تيم ما در سال اخير هنوز هم همراه ما هستيد 🙏🏻🌺
@debrary
@de_coder
@detube
⭕️بررسی دقیق تر این دو system call (❌نه فراخوانی سیستمی !!!❌)
✳️select
این system call جهت فراهم کردن مکانیزمی برای پیاده سازی Multiplexed IO ولی به صورت synchronized است
و در کد هنگام call کردن . این system call بلاک شده تا زمانی که براساس file descriptor های تعریف شده برای آن . این فایل ها آماده برای انجام عمل io باشند
همان گونه که باید شنیده باشید این سناریو دقیقا همان سناریوی polling میباشد
توجه داشته باشید که در Actual parameter اولین این system call باید بزرگترین مقدار file descriptor (از مجموعه fd ها )بعلاوه ی ۱ واحد حتما محاسبه و به این system call ارسال شود
✳️poll
این system call در سیستم عامل یونیکس System V پیاده سازی شده
و ویژگی عمده ی آن تعریف شدن دو سری event به ازای هر file descriptor است
که یک سری event هایی که روی request ها و سری دیگر event هایی هستند که روی return ها تعریف میشوند
حال مقایسه ی بیشتر این دو system call :
1️⃣دومین system call (یعنی poll ) نیازی به محاسبه ی بزرگترین fd و بعلاوه ۱ نمودن آن ندارد
2️⃣ به همین دلیل اول میتوان گفت poll برای fd های با مقادیر بالا بهینه تر عمل میکند چون select به بررسی sequential بیت به بیت هر fd میپردازد
3️⃣در select مقادیر fd تعریف شده کاملا static هستند
4️⃣ هنگام return شدن select دوباره fd های تعریف شده را اصطلاحا reconstruct میکند یعنی مقادیر fd ها با تفییر همراه است ولی poll به دلیل متمایز تعریف نمودن دو سری event هنگام request و return این امکان را دارد که مجموعه fd ها را بدون تغییر باقی نگه دارد
5️⃣عملا select دارای خاصیت portability بالاتری است زیرا poll در تمامی سیستم های یونیکسی پیاده سازی نشده است
6️⃣در نهایت select دارای timeout resolution بالاتری نسبت به poll است زیرا select در سطح نانو ثانیه و poll در سطح میلی ثانیه عمل خواهند کرد
@de_coder
✳️select
این system call جهت فراهم کردن مکانیزمی برای پیاده سازی Multiplexed IO ولی به صورت synchronized است
و در کد هنگام call کردن . این system call بلاک شده تا زمانی که براساس file descriptor های تعریف شده برای آن . این فایل ها آماده برای انجام عمل io باشند
همان گونه که باید شنیده باشید این سناریو دقیقا همان سناریوی polling میباشد
توجه داشته باشید که در Actual parameter اولین این system call باید بزرگترین مقدار file descriptor (از مجموعه fd ها )بعلاوه ی ۱ واحد حتما محاسبه و به این system call ارسال شود
✳️poll
این system call در سیستم عامل یونیکس System V پیاده سازی شده
و ویژگی عمده ی آن تعریف شدن دو سری event به ازای هر file descriptor است
که یک سری event هایی که روی request ها و سری دیگر event هایی هستند که روی return ها تعریف میشوند
حال مقایسه ی بیشتر این دو system call :
1️⃣دومین system call (یعنی poll ) نیازی به محاسبه ی بزرگترین fd و بعلاوه ۱ نمودن آن ندارد
2️⃣ به همین دلیل اول میتوان گفت poll برای fd های با مقادیر بالا بهینه تر عمل میکند چون select به بررسی sequential بیت به بیت هر fd میپردازد
3️⃣در select مقادیر fd تعریف شده کاملا static هستند
4️⃣ هنگام return شدن select دوباره fd های تعریف شده را اصطلاحا reconstruct میکند یعنی مقادیر fd ها با تفییر همراه است ولی poll به دلیل متمایز تعریف نمودن دو سری event هنگام request و return این امکان را دارد که مجموعه fd ها را بدون تغییر باقی نگه دارد
5️⃣عملا select دارای خاصیت portability بالاتری است زیرا poll در تمامی سیستم های یونیکسی پیاده سازی نشده است
6️⃣در نهایت select دارای timeout resolution بالاتری نسبت به poll است زیرا select در سطح نانو ثانیه و poll در سطح میلی ثانیه عمل خواهند کرد
@de_coder
میخواییم ساختار مرورگر رو از سطح قابل فهم برای انسان بررسی کنیم.
مروگر از 7 قسمت تشکیل شده :
1. User interfaces
بخشایی مثل دکمه های عقب و جلو و یا دکمه refresh و یا بخش uri و یا bookmark در بر میگیره .
2. Browser engine ( * )
وظیفه به ترتیب و مرتب نمایش دادن فعالیت هایی که بین بخش user interface و render engine داره .
3. Rendering engine ( * )
وظیفه نمایش دادن و parsing نوشته ها (text) هارو داره یا بهتر بگیم وظیفه parsing کدها را دارد
4. Networking
ارسال درخواست ها و دریافت پاسخ ها و پردازش آنها و تحویل آنها به لایهای مربوطه.
5. Ui backend
وظیفه نمایش دادن عناصری که توی مرورگر نیست را با کمک بخش گرافیکی سیستم عامل داره ( مثلا ممکنه توی مروگری نمایش دکمه تعریف نشده و یا یک عنصر وجود نداشته باشه ) از این لایه به عنوان لایه widget ها نیز یاد شده. عوامیلی که مثلا باعث میشه عنصر input در ویندوز ها یا سیستم عامل ها ساختار گرافیکیش فرق بکنه مربوط به این بخش هستش.
6. Javascript interpreter
وظیفه پردازش و اجرا کردن کد های js
7. Data storage
وظیفه نگهداری فایلا و یا داده ها با استفاده از مکانیزم های پشتیبانی مثل :
1. Local storage
2. IndexedDB
3. WebSQL
4. File system
دارد .
مثل ذخیره کردن cookie ها و یا نمایش عکسها و...
این موارد استاندارد نیستند و حتی ممکنه در مروگر های مختلف عملکرد متفاوتی نشون بدن .
این موارد بر اساس تجربه شرکت های سازنده مروگر و یا تیم های توسعه دهنده تشکیل شده .
اما بخش Network دارای استاندارد های جهانی
هستش.
Describe by : Pilofil
@de_coder
مروگر از 7 قسمت تشکیل شده :
1. User interfaces
بخشایی مثل دکمه های عقب و جلو و یا دکمه refresh و یا بخش uri و یا bookmark در بر میگیره .
2. Browser engine ( * )
وظیفه به ترتیب و مرتب نمایش دادن فعالیت هایی که بین بخش user interface و render engine داره .
3. Rendering engine ( * )
وظیفه نمایش دادن و parsing نوشته ها (text) هارو داره یا بهتر بگیم وظیفه parsing کدها را دارد
4. Networking
ارسال درخواست ها و دریافت پاسخ ها و پردازش آنها و تحویل آنها به لایهای مربوطه.
5. Ui backend
وظیفه نمایش دادن عناصری که توی مرورگر نیست را با کمک بخش گرافیکی سیستم عامل داره ( مثلا ممکنه توی مروگری نمایش دکمه تعریف نشده و یا یک عنصر وجود نداشته باشه ) از این لایه به عنوان لایه widget ها نیز یاد شده. عوامیلی که مثلا باعث میشه عنصر input در ویندوز ها یا سیستم عامل ها ساختار گرافیکیش فرق بکنه مربوط به این بخش هستش.
6. Javascript interpreter
وظیفه پردازش و اجرا کردن کد های js
7. Data storage
وظیفه نگهداری فایلا و یا داده ها با استفاده از مکانیزم های پشتیبانی مثل :
1. Local storage
2. IndexedDB
3. WebSQL
4. File system
دارد .
مثل ذخیره کردن cookie ها و یا نمایش عکسها و...
این موارد استاندارد نیستند و حتی ممکنه در مروگر های مختلف عملکرد متفاوتی نشون بدن .
این موارد بر اساس تجربه شرکت های سازنده مروگر و یا تیم های توسعه دهنده تشکیل شده .
اما بخش Network دارای استاندارد های جهانی
هستش.
Describe by : Pilofil
@de_coder
The main flow of render engine :
در وحله اول render engine اطلاعات در خواستی کاربر را از لایه network دریافت میکند که بصورت 8kB تقسیم بندی شده و به engin ارسال میشود بدین صورت که engine در خواست میکند و لایه network اطلاعات را 8kB به لایه engine تحویل میدهد.
بعد از این مرحله engine کار خود را بصورت زیر ادامه میدهد :
در وحله دوم engine عمل parsing را بر روی html انجام میدهد و element های html را به DOM node تبدیل کرده و با این node ها درختی به نام content tree و یا DOM tree میسازد
در ادامه مرورگر فایلهای مربوط به style که توسط css ساخته شده را parse میکند . فایلهای external با css های داخلی html چه بصورت inline چه به صورت internal هستند ، روی همه آنها عملیات parsing اعمال میشه.
در ادامه مروگر DOM node هایی که بدست آمده را با حاصل عملیات parsing بر روی style ها را با هم ادغام میکند و درخت جدیدی به نام Render tree میسازد
برای نمایش این درخت معمولا از سمت راست این درخت شروع به پردازش ویا نمایش میکند.
به عبارتی دیگر این درخت شامل مستطیل هایی هست که شامل ویژگی های ظاهری عناصر مانند رنگ ویا بعد آنها میباشد . همچنین این مستطیل ها راست چین هستند .
Painting The Render tree :
بعد از ساخت render tree نوبت به بخش layout میرسد. این بدین معنی می باشد که برای هر node مشخصات و مختصات مربوط به نمایش آن بر روی صفحه تعیین میشود . در وحله بعدی نوبت به رنگ کردن render tree می رسد این بدان معنی میباشد که render engine با پیمایش هر یک از node ها با استفاده از بخش UI backend ویژگی ها را به عناصر اختصاص میدهد یا به عبارت دیگر رنگ میکند و بعد به نمایش در میایند.
این نکته قابل توجه است :
تمام render engine ها برای user experience هر کدام از عملیات ها زود تر آماده شد و وقت کمتری برای پردازش برد ، در صفحه زودتر به نمایش درمیاید . این عملیات تا زمانی که کل درخت پیمایش بشه انجام میشه و engine صبر نمیکند تا کل درخت پیمایش بشه و بعد نمایش یابد.
@de_coder
در وحله اول render engine اطلاعات در خواستی کاربر را از لایه network دریافت میکند که بصورت 8kB تقسیم بندی شده و به engin ارسال میشود بدین صورت که engine در خواست میکند و لایه network اطلاعات را 8kB به لایه engine تحویل میدهد.
بعد از این مرحله engine کار خود را بصورت زیر ادامه میدهد :
در وحله دوم engine عمل parsing را بر روی html انجام میدهد و element های html را به DOM node تبدیل کرده و با این node ها درختی به نام content tree و یا DOM tree میسازد
در ادامه مرورگر فایلهای مربوط به style که توسط css ساخته شده را parse میکند . فایلهای external با css های داخلی html چه بصورت inline چه به صورت internal هستند ، روی همه آنها عملیات parsing اعمال میشه.
در ادامه مروگر DOM node هایی که بدست آمده را با حاصل عملیات parsing بر روی style ها را با هم ادغام میکند و درخت جدیدی به نام Render tree میسازد
برای نمایش این درخت معمولا از سمت راست این درخت شروع به پردازش ویا نمایش میکند.
به عبارتی دیگر این درخت شامل مستطیل هایی هست که شامل ویژگی های ظاهری عناصر مانند رنگ ویا بعد آنها میباشد . همچنین این مستطیل ها راست چین هستند .
Painting The Render tree :
بعد از ساخت render tree نوبت به بخش layout میرسد. این بدین معنی می باشد که برای هر node مشخصات و مختصات مربوط به نمایش آن بر روی صفحه تعیین میشود . در وحله بعدی نوبت به رنگ کردن render tree می رسد این بدان معنی میباشد که render engine با پیمایش هر یک از node ها با استفاده از بخش UI backend ویژگی ها را به عناصر اختصاص میدهد یا به عبارت دیگر رنگ میکند و بعد به نمایش در میایند.
این نکته قابل توجه است :
تمام render engine ها برای user experience هر کدام از عملیات ها زود تر آماده شد و وقت کمتری برای پردازش برد ، در صفحه زودتر به نمایش درمیاید . این عملیات تا زمانی که کل درخت پیمایش بشه انجام میشه و engine صبر نمیکند تا کل درخت پیمایش بشه و بعد نمایش یابد.
@de_coder
Parsing process :
پارسینگ مقوله مهم و وسیعی هستش اما ما بخشی از اون رو بیان میکنیم .
در کل پارسینگ به معنای تبدیل کردن یک document به ساختاری قابل استفاده در کد نویسی هستش به عبارت دیگر تبدیل به data structure کردن.
که این معنی و مفهوم برای افراد مبتدی کافیست .
اما به صورت تخصصی و فنی :
میتوان گفت parsing در واقع یکجور syntactic analysis هستش حالا این بدین معنی میباشد , برسی قواعد رشته ای یا مجموعه ای از symbols های ساختاری زبان برنامه نویسی جهت سهولت در ساخت compiler و interpreter . به زبان ساده تر میتوان گفت که parsing یک component نرم افزاری میباشد که ورودی آن text های متوالی مانند یک رشته و خروجی آن ساختمان داده ای از آنهاست که به آن parse tree یا syntax tree میگویند.
به عنوان مثال عبارت دستوری :
2+3-1.
توسط parsing process تبدیل به درخت زیر میشود.
@de_coder
پارسینگ مقوله مهم و وسیعی هستش اما ما بخشی از اون رو بیان میکنیم .
در کل پارسینگ به معنای تبدیل کردن یک document به ساختاری قابل استفاده در کد نویسی هستش به عبارت دیگر تبدیل به data structure کردن.
که این معنی و مفهوم برای افراد مبتدی کافیست .
اما به صورت تخصصی و فنی :
میتوان گفت parsing در واقع یکجور syntactic analysis هستش حالا این بدین معنی میباشد , برسی قواعد رشته ای یا مجموعه ای از symbols های ساختاری زبان برنامه نویسی جهت سهولت در ساخت compiler و interpreter . به زبان ساده تر میتوان گفت که parsing یک component نرم افزاری میباشد که ورودی آن text های متوالی مانند یک رشته و خروجی آن ساختمان داده ای از آنهاست که به آن parse tree یا syntax tree میگویند.
به عنوان مثال عبارت دستوری :
2+3-1.
توسط parsing process تبدیل به درخت زیر میشود.
@de_coder
Grammars :
عملیات parsing از قوانین syntax آن سند که بر اساس یک زبان نوشته شده پیروی میکنه. برای اینکه عملیات parsing بتواند کار خود را ادامه دهد باید باید گرامر آن شامل کلمات و قوانین مشخصو تعیین شده ای باشد . به آن context free grammer میگویند.
حالا سوالی پیش میاد :
آیا بر روی زبان انسان هم میتوان عملیات parsing را هم اعمال کرد ؟
ج : خیر ، زیرا زبانهای انسان قاعده و قانون یکسانی ندارد و نمیتوان با تکنینک های parsing آنرا پردازش کرد.
@de_coder
عملیات parsing از قوانین syntax آن سند که بر اساس یک زبان نوشته شده پیروی میکنه. برای اینکه عملیات parsing بتواند کار خود را ادامه دهد باید باید گرامر آن شامل کلمات و قوانین مشخصو تعیین شده ای باشد . به آن context free grammer میگویند.
حالا سوالی پیش میاد :
آیا بر روی زبان انسان هم میتوان عملیات parsing را هم اعمال کرد ؟
ج : خیر ، زیرا زبانهای انسان قاعده و قانون یکسانی ندارد و نمیتوان با تکنینک های parsing آنرا پردازش کرد.
@de_coder
با سلام
تيم ديكدر دپارتمان Courseware خود را تشكيل داده تا با توليد كردن دوره هاي آموزشي با موضوعات آكادميك علوم كامپيوتر با محوريت كتب رفرنس ، خلأ نبود اساتيد سطح بالا در برخي از دروس دانشگاهي را پر كند
جهت استفاده از فيلم ها و جزوات اين دوره به كانال
@decodercw
مراجعه كنيد
تيم ديكدر دپارتمان Courseware خود را تشكيل داده تا با توليد كردن دوره هاي آموزشي با موضوعات آكادميك علوم كامپيوتر با محوريت كتب رفرنس ، خلأ نبود اساتيد سطح بالا در برخي از دروس دانشگاهي را پر كند
جهت استفاده از فيلم ها و جزوات اين دوره به كانال
@decodercw
مراجعه كنيد
Forwarded from Decoder Courseware (Decoder Admin)
Media is too big
VIEW IN TELEGRAM
پادکست "روزی روزگاری یک دانشمند کامپیوتر" منتشر شد
این پادکست ویژه دانشجویان #جدیدالورود و #ترم_اولی سال 98 رشته کامپیوتر می باشد
در این پادکست خواهید شنید :
1.توضیحی درباره فضای دانشگاه و تفاوت آن با مدرسه
2.توضیحی درباره رشته کامپیوتر و انواع گرایش های آن
3.توضیحی درباره دروس دانشگاهی و نحوه اخذ و معرفی آن ها
یک سوپرایز ویژه :
مصاحبه با 6 نفر از اعضای تیم Decoder با این عنوان " اگر به ترم اول برگردید چه کار می کنید؟"
که در این مصاحبه این افراد تجربیاتشان را در اختیار دانشجویان عزیز #ترم_اولی قرار می دهند
به هیچ وجه این پادکست را از دست ندهید
@de_coder
این پادکست ویژه دانشجویان #جدیدالورود و #ترم_اولی سال 98 رشته کامپیوتر می باشد
در این پادکست خواهید شنید :
1.توضیحی درباره فضای دانشگاه و تفاوت آن با مدرسه
2.توضیحی درباره رشته کامپیوتر و انواع گرایش های آن
3.توضیحی درباره دروس دانشگاهی و نحوه اخذ و معرفی آن ها
یک سوپرایز ویژه :
مصاحبه با 6 نفر از اعضای تیم Decoder با این عنوان " اگر به ترم اول برگردید چه کار می کنید؟"
که در این مصاحبه این افراد تجربیاتشان را در اختیار دانشجویان عزیز #ترم_اولی قرار می دهند
به هیچ وجه این پادکست را از دست ندهید
@de_coder