تعریف جرمیابی دیجیتال: به مجموعه فرایند جمع آوری، ارزیابی و ارائه مدارک جمع آوری شده از تجهیزات دیجیتال گفته میشود.
این مدارک دیجیتالی از کامپیوترها، تلفن های همراه، دستگاه های اینترنت اشیا و سرورها به دست می آیند. جرمیابی دیجیتال به حل پرونده های پیچیده ای که بر مدارک دستگاه های دیجیتالی تکیه دارند کمک می کند.
این حوزه کاری زیر مجموعه امنیت سایبری می باشد و به فرد متخصصی که در این حوزه کار میکند متخصص جرمیابی دیجیتال و واکنش به حوادث گفته میشود.
(به انگلیسی Digital Forensics and Incident Response (DFIR))
برای بزرگنمایی کلیک کنید
دسترسی به GPU از طریق جاوا، باعث افزایش توان و قدرت قابل توجهی در برنامه میشود. در این مقاله نحوهی کار GPU و نحوهی دسترسی به GPU از طریق جاوا را توضیح میدهم.
ظاهرا برنامهنویسی GPU، مانند یک دنیای مجزا از برنامهنویسی جاواست... این موضوع عجیب نیست، چرا که اکثر منابع مورد استفاده و کاربردی برای جاوا، برای GPUها قابلاجرا نیستند!
برای اینکه به موضوع اصلی برسیم، کمی در خصوص معماری و ساختار GPU، به همراه تاریخچهی مختصری از آن را توضیح میدهم، که پرداختن به موضوع برنامهنویسی سختافزار را آسانتر میکند. وقتی توضیح دادم که چگونه محاسبات GPU از محاسبات CPU متفاوت است، نشان خواهم داد که چگونه از GPUها در دنیای جاوا استفاده کنیم. در نهایت، فریم ورک و کتابخانههای معروف و دردسترس برای نوشتن کد جاوا و اجرای آن در GPUها را شرح خواهم داد و نمونههایی از کدنویسی را ارائه خواهم کرد.
فهرست/مندرجات
• مقدمه
• اجرای برنامهها بر روی GPU
• ظهور GPGPU
• OpenCL و Java
• CUDA و Java
• ماندن در بالای کد low-level
• نتیجهگیری
مسئله Thread و Process دو موضوع نزدیک به هم ولی متفاوت هستن...
1- Process مستقل هستش، ولی Thread ها بخشی از یک Process هستن. (یعنی یک Process میتونه چندین Thread بوجود بیاره)
2- هر Process حافظه اختصاصی خودش رو داره، ولی Thread ها از حافظه اشغال شده Process استفاده می کنن. (یعنی هر Process حافظه خودش رو با Thread های خودش به اشتراک میذاره)
3- هر Process شامل یک برنامه و PID انحصاری هستش، ولی هر Thread شامل مجموعه ای از دستورالعمل ها و Stack انحصاری هستش.
4- هر Process درواقع یک Task هستش، ولی هر Thread یک Light wight process هستش.
5- Process ها توسط IPC (یا همون Inter-process communication) با یکدیگر ارتباط برقرار می کنن، ولی Thread ها توسط دستورات برنامه نویسی (در زبان PHP و Java توسط wait, notify و در زبان C توسط pthread_cond_wait, pthread_cond_signal) با یکدیگر ارتباط برقرار می کنن.
6- ساخت Process به سختی توسط duplicate کردن Process والد انجام میشه، ولی ساخت Thread براحتی توسط کپی شی Thread انجام میشه.
7- برای اجرای چند Process بطور موازی/parallel به یک سیستم Multi-Process نیاز هست، ولی برای اجرای چند Thread بطور همزمان به دستورات برنامه نویسی نیاز هست.
8- بطور کلی Process توسط CPU کنترل میشه، ولی Thread توسط Process کنترل میشه.
9- هر Process یک Thread main داره، ولی هر Thread فقط خودشه که کارگر/worker صدا زده میشه.
10- Process در فضای separate memory اجرا میشه، ولی Thread در فضای Shared memory اجرا میشه.
و...
- برآورد مشکلات سیستم
- بررسی کلی سخت افزار
- بررسی کلی نرم افزار
سخت افزار
- پاکسازی داخل سیستم و مادربورد
- سرویس CPU و فن CPU
- سرویس Power supply و فن Power supply
- پاکسازی موس، کیبورد و مانیتور
- تهیه باطری جدید برای CMOS/BIOS
- پاکسازی سوکت ها و پورت های سیستم
[- قطع و غیرفعال کردن مودم Dialup]
[- قطع و غیرفعال کردن درایو Floppy]
- تعویض کابلهای کهنه/آسیب دیده
- ریست و تنظیم مجدد مانیتور
- بررسی کابلهای داخل و بیرون سیستم
نرم افزار
- بک آپ گیری از اطلاعات!
- آپدیت Firmware مادربورد(BIOS EEPROM)
- ریست و تنظیم مجدد BIOS/CMOS
- فرمت(wipe) دوره ای عمقی پارتیشن ها یا کل دیسک
- نصب مجدد سیستم عامل
[- ریستارت سیستم عامل بعد از انجام تنظیمات]
- تنظیم تاریخ و ساعت سیستم
- نصب نرم افزارهای کتابخانه ای/Runtime
- دانلود [و رایت] و نصب Driver ها
- حذف نرم افزارهای بلااستفاده و مزاحم
- پاکسازی فایلها و پوشه های اضافی و temp
[- بهینه سازی و تنظیم رجیستری]
- نصب و بروزرسانی نرم افزارهای کاربردی
- نصب ضدبدافزار سبک و قدرتمند
- بروزرسانی ضدبدافزار
- اسکن کل پارتیشن ها توسط ضدبدافزار
- بهینه سازی تنظیم سرویس ها
- Defrag/Optimize پارتیشن ها(بجز SSD ها)
- پاکسازی و تنظیم startup سیستم عامل
- پاکسازی system restore point ها
شبکه
- پاکسازی کش DNS و ریست Socket سیستم
- آپدیت Firmware مودم ADSL/DSL
- تنظیم subnet mask مودم به 255.255.255.128 یا بالاتر
- تنظیم Subnet prefix مودم به 25
- تنظیم DNS مودم به 208.67.222.222 و 8.8.8.8
- تنظیم Security protocol مودم به WPA2 یا WPA3
- خاموش کردن قابلیت WPS مودم
- پنهان کردن SSID مودم
نکته: منظور از Core همون هسته های فیزیکی(چیپ) هستش که داخل CPU قرار دارن و هرکدوم میتونن یک دستورالعمل(مثلاً برنامه) رو به تنهایی پردازش کنن. هسته ها قادرن هرکدوم به تنهایی و بصورت موازی یک برنامه رو اجرا کنن. مثلاً یک CPU با 4 هسته فیزیکی قادره 4 برنامه رو بصورت موازی اجرا کنه ولی بیشتر از 4 برنامه، دستورالعمل های برنامه بین همه هسته ها تقسیم میشه.
نکته 2: منظور از Thread (در حوزه سخت افزار) هسته های مجازی/نرم افزاری هستش که داخل Core قرار دارن و هرکدوم میتونن یک دستورالعمل(مثلاً برنامه) رو پردازش کنن. بنابراین یک CPU با 4 Core درواقع 8 هسته داره. 4 هسته فیزیکی و 4 هسته مجازی. به این عمل Hyperthreading هم گفته میشه.
نکته 3: CPU های دارای Turbo frequency قادرن بصورت اتوماتیک قدرت پردازشی خودشون رو افزایش بدن. مثلاً از 3.10GHz به 4.10GHz (درصورتیکه دما، باطری و... در حد مناسبی باشه)
نکته 4: Cache CPU حافظه لطیف و موقتی CPU هست که دستورالعمل های تکراری برنامه های کاربر رو در خودش ذخیره میکنه و مستقیماً از انجا دستورالعمل ها رو پردازش میکنه(بجای Hard Disk یا RAM). بنابراین باعث افزایش سرعت پردازش تا چند برابر میشه.
نکته 5: کلمه K در مشخصات فنی CPU معرف Unlock هستش، یعنی این CPU قفل نشده و قابلیت Overclocking رو داراست.
نکته 6: Resolution (رزولوشن) به تعداد پیکسل های موجود درون صفحه گفته میشه که بصورت عمودی و افقی در صفحه چیده شدن. در واقع هر چی رزولوشن صفحه نمایش بیشتر باشه، کیفیتش هم بالاتره. رزولوشن مثل 1024x768 یا 240x320
نکته 7: Screen size (سایز صفحه) به اندازه فیزیکی صفحه نمایش گفته میشه که برحسب اینچ توسط قطر صفحه محاسبه میشه. هرچی بیشتر باشه، اندازه صفحه هم بزرگتره. مثل "15 یا "17
نکته 8: Color depth (عمق رنگ) به مجموع رنگ هایی که صفحه نمایش امکان نمایش شون رو داره گفته میشه. هرچی بیشتر باشه، کیفیت و زیبایی تصاویر هم بیشتر میشه. مثل 32bit یا 16bit
نکته 9: برای تشریح مشخصات CPU های Intel به این صفحه مراجعه کنید. https://intel.com/content/www/us/en/processors/processor-numbers.html
برای حل مشکلات ADB گوگل با درایور گوشی بصورت زیر عمل کنید:
1- هرگز روی سیستمی که کمتر از 2 گیگ RAM داره ویندوز نسخه 64 بیتی نصب نکنید. چون اینکار بیشتر باعث کند شدن ویندوز میشه.
ویندوزهای نسخه 64 بیتی به حداقل ۴ گیگ RAM نیاز دارن.
2- حتاالمکان روی سیستمی که 8 گیگ یا بیشتر RAM داره ویندوز نسخه 32 بیتی نصب نکنید. درغیراینصورت فقط 4 گیگ RAM توسط CPU قابل دستیابی هستش و بقیه RAM بدون استفاده باقی می مونن.
3- درسیستم های BIOS یا پارتیشن نوع MBR/DOS، بهتره در حین نصب ویندز فقط درایو نصب ویندوز رو پارتیشن بندی کنید و بقیه درایوهارو از داخل خود ویندوز(بعد از نصبش) پارتیشن بندی کنید. اون هم از نوع Logical.
با اینکار پارتیشن های Primary بیشتری براتون باقی می مونه... و برای نصب سیستم عامل دوم و سوم به مشکل نمی خورید.
نکته: این موضوع راجب سیستم های UEFI یا پارتیشن نوع GPT صدق نمیکنه.
3- هرگز از درایو اصلی ویندوز(که ویندوز داخلش نصبه) برای ذخیره اطلاعت شخصی(مثل عکس، فیلم، موسیقی و...) استفاده نکنید.
اگر مشکل جدی برای ویندوز یا این درایو پیش بیاد معمولاً اطلاعتتون هم پاک میشه.
4- اگر از لپ تاپ استفاده می کنید، برای افزایش قدرت لپ تاپ و استفاده از تمام توان دستگاه اون رو به حالت Maximum performance تنظیم کنید.
نکته: در زمانهایی که لپ تاپ از باطری بجای برق مستفیم تغذیه میکنه، از حالت Maximum battery life یا Battery saver استفاده کنید.
در ویندوز Xp و ویندوز 7: به مسیر Start -> Control panel برید و در پنجره باز شده گزینه System and Security رو انتخاب کنید. سپس روی گزینه Power Options کلیک و در پنجره جدید Maximum performance رو انتخاب کنید.
در ویندوز 8 و ویندوز 10: در سمت راست نوار استارت روی آیکون باطری کلیک کنید سپس گزینه Maximum performance رو انتخاب کنید.
5- بصورت پیشفرض، ویندوز DLL برنامه های باز و بعد بسته شده رو [بخاطر افزایش سرعت باز کردن مجدد اون برنامه] unload نمی کنه. که اینکار باعث اشغال حافظه و گاهی کندی میشه. برای تغییر این رفتار، میتونید دستورالعمل زیر رو انجام بدید:
- ابتدا برنامه RegEdit رو در مسیر X:\Windows\RegEdit پیدا و اجرا کنید.
- سپس به آدرس HKEY_LOCAL_MACHINE -> Software -> Microsoft -> Windows -> CurrentVersion -> Explorer برید.
- حالا بر روی صفحه راست کلیک و گزینه New -> DWORD(X bit) value رو انتخاب کنید. و نامش رو بذارید AlwaysUnloadDLL
- در آخر روی همین گزینه دوبار کلیک و Value data رو 1 قرار بدید.