PDA

View Full Version : سوال: طرز کار ساعت سیستم؟



complexcoding
پنج شنبه 16 شهریور 1391, 11:12 صبح
با سلام
چطوریه که وقتی سیستم خاموشه ساعت عقب نمونه و وقتی سیستم روشن می شه درست تنظیمه؟ یعنی ساعت در زمان خاموشی سیستم هم کار می کنه؟ یا چیز دیگرست؟

pandasoft
پنج شنبه 16 شهریور 1391, 11:36 صبح
بله ساعت سیستم حتی زمانی که سیسنم خاموشه با استفاده از باطری ساعتی روی مادر بورد به کار خودش ادامه میده .

complexcoding
پنج شنبه 16 شهریور 1391, 19:18 عصر
پس نرم افزارهای جدید هم باید از این باطری استفاده کنند دیگه؟ وگر نه همین دانلود منیجر چطوری با دستکاری ساعت باز هم متوجه تمام شدن زمان نسخه رایگانش بعد از 15 روز می شود ؟ یا اینکه مقدار خاموش و روشن شدن های سیستم رو حساب می کنه و بر اون اساس هر بار خاموش و روشن شدن سیستم رو یک روز حساب می کنه؟

fjm11100
پنج شنبه 16 شهریور 1391, 19:58 عصر
نه اون ساعت بر اساس تنظیمی که توی بایوس یا توسط سیستمم عامل انجام میشه تغییر میکنه. شما با تغییر ساعت ویندوز اون ساعت را هم عوض میکنی. اون برنامه ها به روش دیگه ای مفهمن که ساعت عوض شده. مثلا با چک کردن ساعت آخرین دسترسی، به بعضی از فایلهای ویندوز، که هربار که سیستم روشن میشه تغییر میکنن

complexcoding
جمعه 17 شهریور 1391, 10:19 صبح
یعنی دوستان من می خوام یه نرم افزار ساعت درست کنم جدا از ساعت OS باید چطوری به ساعت سخت افزار دسترسی داشته باشم؟ تا بتونم در زمان خاموش بودن سیستم هم ساعت دقیق باشه؟

حامد مصافی
جمعه 17 شهریور 1391, 14:50 عصر
در زمان خاموش بودن سیستم که برنامه شما هم در مرخصی به سر میبره و نیازی به زمان نداره!

اما در مورد زمان دقیق و از کار افتادن نرم‌افزارها باید به عرض برسونم جواب خیلی سادست: «ساعت اینترنتی»
نرم‌افزارهای امروزی کاری با ساعت سیستم شما ندارند. بلکه ساعت رو از تایم‌سرورهای اینترنتی چک می‌کنند. علی‌الخصوص نرم‌افزاری مانند دانلود‌منیجر که از اتصال به اینترنت در رایانه مشتری اطمینان داره!

tdkhakpur
جمعه 17 شهریور 1391, 21:43 عصر
یعنی دوستان من می خوام یه نرم افزار ساعت درست کنم جدا از ساعت OS باید چطوری به ساعت سخت افزار دسترسی داشته باشم؟ تا بتونم در زمان خاموش بودن سیستم هم ساعت دقیق باشه؟
هر سیستمی که طرحی میشه همیشه سعی میکنه از بالاترین ورژن طراخیها برای طراحی نرم افزار خودش استفاده کنه حالا اون بحث که شما فرمودی بسیاری از نرم افزارها از ساعت سیستم استفاده نمی کنند درسته و الگوریتم ساده چنین نرم افزارها استفاده از ساعت داخلی خود نرم افزاره.
شما در هر حالتی که برنامه رو اجرا کنید روی مارد بورد ساعت وجود داشته باشه یا نداشته باشه همیشه ساعت سیستم هست و همیشه این تیکهای ساعت پابرجاست و ارتباط با باطری نداره اما ساعت دقیق نیست در این مورد علاوه بر اینکه برنامه ها بررسی میکنند ساعت سیستم کار میکنه یا نه نرم افزار ها از همین نقطه استفاده میبرند (تیکهای نامحدود) یعنی به جای اینکه از مادر برد سوال کنند ساعت چنده خودشون یه دونه ساعت داخل برنامه دارن که تعداد تیکهای استفاده از نرم افزار رو ثبت میکنه و آخر کار این تیکها رو به روز تبدیل و زمان استفاده رو مشخص میکنند.
اما اگر بحثتون تنظیم دقیق برای طراحی یک برنامه trail هست به نظرم از اینتر نت هم برای بررسی استفاده میکنند اما این مطلب یه مقدار از قدرت ضعیفی برخورداره که کاربر رو در این ضمینه زیر فشار قرار بدند به نظر میرسه همه بر این عقدیه باشن که حداقل برای هر کابر اجازه چند روز استفاده رایگان رو بدند و این میتونه برنامشون رو برای کاربران معرفی کنه.

barnamenevisforme
جمعه 17 شهریور 1391, 23:03 عصر
سلام

در این مورد علاوه بر اینکه برنامه ها بررسی میکنند ساعت سیستم کار میکنه یا نه نرم افزار ها از همین نقطه استفاده میبرند (تیکهای نامحدود) یعنی به جای اینکه از مادر برد سوال کنند ساعت چنده خودشون یه دونه ساعت داخل برنامه دارن که تعداد تیکهای استفاده از نرم افزار رو ثبت میکنه و آخر کار این تیکها رو به روز تبدیل و زمان استفاده رو مشخص میکنند.
وقتی نرم افزار در حالت اجرا قرار نداره،و یا سیستم خاموشه دیگه چطور میتونه تعداد تیک ها رو بدست بیاره؟
یه فرض میتونه این باشه که نرم افزار بعد از اجرا شدن،زمان سیستم رو بدست میاره،مدت زمانی که در حال اجرا هست رو حساب میکنه،اگر در این بین زمان سیستم تغییری درش انجام بشه با جمع زدن مدت زمان استفاده از نرم افزار و ساعت اولیه،میتونه متوجه موضوع بشه.همچنین در پایان اجرای نرم افزار ،ساعت پایان رو در یه متغیر ذخیره میکنه.اگر در اجرای بعدی_شاید بعد از روشن شدن دوباره سیستم باشه_زمان دخیره شده از زمان سیستم عقب تر باشه که باز نرم افزار متوجه میشه،حالا اگه زمان سیستم دقیقا برابر با زمان خروج برنامه ست بشه،باز برنامه مدت زمان استفاده رو اضافه میکنه و در استفاده بعدی متوجه تغییر سیستم میشه.
در این روش حتی اگر قبل از هر اجرا زمان سیستم به زمان قبلی خروج نرم افزار ست بشه،برای یه نرم افزار 30 روزه حداکثر کاربر میتونه 30 تا 24 ساعت(43200s) برنامه رو اجرا کنه.

tdkhakpur
شنبه 18 شهریور 1391, 01:44 صبح
وقتی نرم افزار در حالت اجرا قرار نداره،و یا سیستم خاموشه دیگه چطور میتونه تعداد تیک ها رو بدست بیاره؟مطالب بعدیتون رو ندونستم برای پاسخ هست یا اینکه سوال کردید؟!!!
اما در مورد اینکه نرم افزار در حال اجرا نباشه و سیستم خاموش باشه بالا عرض شد برای traill شدن نرم افزار میتوانید از شمارش تیکها استفاده کنید و با هر بار اجرا این زمان رو کنترل کنید در اصل این میشه کنترل زمان مصرف یک برنامه نه زمان اجبار برای اجرا - اما اگه سوال دیگه ای در مورد اینکه اگه مجددا نرم افزار نصب بشه اونوقت چه باید کرد؟ جواب اینه برای اینکه برنامه دوباره نصب نشه یا به یکی نیاد به راحتی با نصب مجدد زمان همین trial رو هم افزایش بده میتوان از رجیستری یا روشهای بهینه دیگه هم استفاده کرد تا تعداد نصبهای نرما افزار رو به برنامه یاد آوری کنه.

barnamenevisforme
شنبه 18 شهریور 1391, 13:43 عصر
در اصل این میشه کنترل زمان مصرف یک برنامه نه زمان اجبار برای اجرا
سلام
منظور من هم دقیقال همین مطلب بود.

#target
شنبه 18 شهریور 1391, 18:08 عصر
حالا که این سوال مطرح شد ....
من قبلا ی بررسی در مورد ساعت ویندوز کردم که توابعش چطوره متوجه شدم در صفحه یکی مانده به آخر از فضای پروسه بایت های 0x14 تا هشت بایت تاریخ رو داره (آدرس 0x7FFE0000 ) . اینجا ساعت سیستم قرار میگیره و تابع میاد اون رو مرتب میکنه بصورت روز ماه سال و ساعت دقیقه ثانیه
من زیاد بررسی نکردم اما میخواستم ببینم این صفحه یک صفحه مشترک بین همه پروسه هاست . منظورم ی صفحه واحد هست که همه دارن از اون استفاده میکنن ؟ (مثل File Mapping)
در ضمن این مقادیر رو وظیفه کیه که تغییر بده . چون حتی وقتی پروسه رو Suspend کنی بازم اونا مرتب تغییر میکنن . (برا همین میگم احتمالا اشتراکی هست و احتمالا از سمت کرنل داره دستکاری میشه)

tdkhakpur
شنبه 18 شهریور 1391, 18:59 عصر
من زیاد بررسی نکردم اما میخواستم ببینم این صفحه یک صفحه مشترک بین همه پروسه هاست . منظورم ی صفحه واحد هست که همه دارن از اون استفاده میکنن ؟ (مثل File Mapping)
توابع کار با ساعت جزو توابع Api ویندوز هست که اولین استارت رو از cmos میگیره. طبیعتا سیستم عامل فضای مشترکی برای استفاده عمومی برای سایر پروسه ها داره اما جای ثابتی نیست و اون api که همیشه در ارتباظ یبا کرنل هست جاش رو پیدا میکنه و داده هاش رو میده.

در ضمن این مقادیر رو وظیفه کیه که تغییر بده . چون حتی وقتی پروسه رو Suspend کنی بازم اونا مرتب تغییر میکنن . (برا همین میگم احتمالا اشتراکی هست و احتمالا از سمت کرنل داره دستکاری میشه) کدوم پروسه رو suspend کنی؟
پروسه های api اکثرا بصورت توابع هستن و سرویس دهی نمیکنند.

#target
شنبه 18 شهریور 1391, 22:47 عصر
آره درسته
ولی مثلا تابع GetSystemTime اصلا درخواستی به کرنل نمیده و از همون آدرس که گفتم 8 بایت ساعت و تاریخ رو میگیره . (ثابت هم هست آدرس )
پروسه برنامه خودمون منظورم ! اگه نگه داریم خوب نباید تغییری توی حافظه پیدا کنه ولی محتوی اون آدرس دایم در حال تغییر و این نشون میده که مشترک با جای دیگست میخواست ببینم کی مسول تغییرشه ! یعنی دقیقا کجا . آیا این صفحه با یک صفحه سمت کرنل برابره

tdkhakpur
یک شنبه 19 شهریور 1391, 12:14 عصر
پروسه برنامه خودمون منظورم ! اگه نگه داریم خوب نباید تغییری توی حافظه پیدا کنه ولی محتوی اون آدرس دایم در حال تغییر و این نشون میده که مشترک با جای دیگست میخواست ببینم کی مسول تغییرشه ! یعنی دقیقا کجا . آیا این صفحه با یک صفحه سمت کرنل برابره
تا به حال استفاده ای از این آدرس نکردم اما به احتمال زیاد ساعت مصرف متعلق به خود برنامه هست که با سیستم هماهنگ میشه.
این هم به نظر به عهده سیستم زمانبندی برنامه های ویندوز هست(یا همون کرنل) که همیشه در حال اجراست.