Հոսքերը Windows ՕՀ - ում. Ներածություն Ներածություն Հոսքի ստեղծումը Հոսքի ստեղծումը Հոսքի ավարտը Հոսքի ավարտը Հոսքի ստեկը Հոսքի ստեկը Հոսքերի առաջնայնությունը.

Презентация:



Advertisements
Похожие презентации
Պրոցեսների ստեղծումը Linux ՕՀ - ում. fork fork ֆունկցիան ստեղծում է նոր ( զավակ ) պրոցես : fork ֆունկցիան ստեղծում է նոր ( զավակ ) պրոցես : #include #include.
Advertisements

Վիրտուալ հիշողություն Windows. Հիշողության կազմակերպումը Հիշողության կազմակերպումը Ինչպես բաշխել հիշողությունը պրոցեսների միջև Ինչպես բաշխել հիշողությունը.
Սինխրոնիզացիան Linux ՕՀ - ում. mutex – արգելափակում է մուտքը դեպի ռեսուրսը mutex – արգելափակում է մուտքը դեպի ռեսուրսը join – սպասում է ուրիշ հոսքերի.
Միավորում, հատում, հանում. ՄԻԱՎՈՐՈՒՄ (UNION, UNION ALL) Դիցուք ունենք հետևյալ `T1 և T2 աղյուսակները. AB 1C 2E 3KAB 1C 7D Select A,B From T1 Union Select.
Հարցումներ հիմնված մեկից ավելի աղյուսակների վրա. SQL- ը հնարավորություն է տալիս միակցելով (join) երկու և ավելի աղյուսակ ստանալ նոր աղյուսակ : Տարբերակվում.
Adobe Photoshop Adobe Photoshop Adobe Photoshop Adobe Photoshop Corel Draw Corel Draw Corel Draw Corel Draw.
Защита от взлома Лекция 10Защита от взлома Лекция 10.
Ես խաղայնացնում եմ … Լսարանում, սոցիալական աշխատանքի պրակտիկում դասընթացի գործնական պարապմունքների ժամանակ.
Հարցումներ հիմնված մեկից ավելի աղյուսակների վրա ( շարունակություն )
Թեմա 3 Զբոսաշրջային ձեռնարկության մարքեթինգային համալիրի մշակումը կամ « մարքեթինգ - միքս »
Data Types in C. A Data Type A data type is –A set of values AND –A set of operations on those values A data type is used to –Identify the type of a variable.
Filesystem Windows. File Pointers DWORD SetFilePointer ( HANDLE hFile, LONG lDistanceToMove, PLONG lpDistanceToMoveHigh, DWORD dwMoveMethod)
Unit II Constructor Cont… Destructor Default constructor.
Ենթահարցումներ (Subqueries). Ենթահարցումը SQL հարցում է օգտագործված մեկ այլ հարցման մեջ : Ենթահարցումները կարող են օգտագործվել Select- ի ցուցակում,from-
SQL (Structured Query Language) Կառուցվածքային հարցումների լեզու.
Лекция 23. Шаблоны (часть 3) Красс Александр СПбГУ ИТМО, 2008.
1. Классы ООП 1.Наследование 2.Инкапсуляция 3.Полиморфизм.
Washington WASHINGTON UNIVERSITY IN ST LOUIS Memory Management Fred Kuhns Applied Research Laboratory, Department of Computer Science.
Խմբավորում և ագրեգատային ֆունկցիաներ. Դիտարկենք Products հարաբերությունը Product IDProductName Supplier ID Unit Price UnitsIn StockDiscontinued… 1Chai …
НГТУ, каф. ВТ Исключения в С++ Макаревич Л. Г.. Что такое исключение Исключение или исключительная ситуация – возникновение непредвиденных или аварийных.
Транксрипт:

Հոսքերը Windows ՕՀ - ում

Ներածություն Ներածություն Հոսքի ստեղծումը Հոսքի ստեղծումը Հոսքի ավարտը Հոսքի ավարտը Հոսքի ստեկը Հոսքի ստեկը Հոսքերի առաջնայնությունը և պլանավորումը Հոսքերի առաջնայնությունը և պլանավորումը

Ներածություն Հոսքը աշխատում է պրոցեսի ներքո Հոսքը աշխատում է պրոցեսի ներքո Հոսքը այն փոքրագույն էլեմենտն է որին հատկացվում է պրոցեսորի ժամանակ ՕՀ - ի կողմից Հոսքը այն փոքրագույն էլեմենտն է որին հատկացվում է պրոցեսորի ժամանակ ՕՀ - ի կողմից Հոսքը կարող է իրականացնել պրոցեսի ցանկացած կոդ, ներառյալ այն կոդերը որոնք արդեն իրականացվել են այլ հոսքերի կողմից Հոսքը կարող է իրականացնել պրոցեսի ցանկացած կոդ, ներառյալ այն կոդերը որոնք արդեն իրականացվել են այլ հոսքերի կողմից

Ներածություն Thread pool( հոսքերի խուրց )- ը դա աշխատող հոսքերի համախումբ է որը իրականացնում է ասինխրոն callback- ների իրականացում Thread pool( հոսքերի խուրց )- ը դա աշխատող հոսքերի համախումբ է որը իրականացնում է ասինխրոն callback- ների իրականացում

Հոսքի ստեղծումը CreateThread ֆունկցիան ստեղծում է նոր հոսք տվյալ պրոցեսի համար : CreateThread ֆունկցիան ստեղծում է նոր հոսք տվյալ պրոցեսի համար : Ծնող հոսքը զավակ հոսք ստեղծելիս պարտավոր է նշել այն հասցեն որտեղից սկսած պետք է զավակ հոսքը իրականացնի կոդի կատարումը : Սովորաբար այդ հասցեն CreateThread ֆունկցիային փոխանցված ֆունկցիայի հասցեն է : Ծնող հոսքը զավակ հոսք ստեղծելիս պարտավոր է նշել այն հասցեն որտեղից սկսած պետք է զավակ հոսքը իրականացնի կոդի կատարումը : Սովորաբար այդ հասցեն CreateThread ֆունկցիային փոխանցված ֆունկցիայի հասցեն է :

Հոսքի ստեղծումը Փոխանցվող ֆունկցիան ընդունում է մեկ void* տիպի պարամետր և վերադարձնում է DWORD տիպի պարամետր : Փոխանցվող ֆունկցիան ընդունում է մեկ void* տիպի պարամետր և վերադարձնում է DWORD տիպի պարամետր :

Հոսքի ստեղծումը HANDLE WINAPI CreateThread( _In_opt_ LPSECURITY_ATTRIBUTES lpThreadAttributes, _In_ SIZE_T dwStackSize, _In_ LPTHREAD_START_ROUTINE lpStartAddress, _In_opt_ LPVOID lpParameter, _In_ DWORD dwCreationFlags, _Out_opt_ LPDWORD lpThreadId);

Հոսքի ստեղծումը #include #include DWORD WINAPI MyThreadFunction( LPVOID lpParam ); typedef struct MyData { int val1; int val2; } MYDATA, *PMYDATA; int main() { PMYDATA pDataArray[MAX_THREADS]; DWORD dwThreadIdArray[MAX_THREADS]; HANDLE hThreadArray[MAX_THREADS];

Հոսքի ստեղծումը for( int i=0; i<MAX_THREADS; i++ ) { // pDataArray initialization // pDataArray initialization pDataArray[i]->val1 = i; pDataArray[i]->val2 = i+100; pDataArray[i]->val1 = i; pDataArray[i]->val2 = i+100; hThreadArray[i] = CreateThread( hThreadArray[i] = CreateThread( NULL, // default security attributes NULL, // default security attributes 0, // use default stack size 0, // use default stack size MyThreadFunction, // thread function name MyThreadFunction, // thread function name pDataArray[i], // argument to thread function pDataArray[i], // argument to thread function 0, // use default creation flags 0, // use default creation flags &dwThreadIdArray[i]); // returns the thread identifier &dwThreadIdArray[i]); // returns the thread identifier}

Հոսքի ստեղծումը WaitForMultipleObjects(MAX_THREADS, hThreadArray, TRUE, INFINITE); for(int i=0; i<MAX_THREADS; i++) { CloseHandle(hThreadArray[i]); CloseHandle(hThreadArray[i]);} return 0; } DWORD WINAPI MyThreadFunction( LPVOID lpParam ) { // …. // ….}

Հոսքի ավարտր Հոսքը կանչում է ExitThread ֆունկցիան Հոսքը կանչում է ExitThread ֆունկցիանExitThread Պրոցեսի կամայական հոսքը կանչում է ExitProcess ֆունկցիան Պրոցեսի կամայական հոսքը կանչում է ExitProcess ֆունկցիան ExitProcess Հոսքի ֆունկցիան ավարտում է իր աշխատանքը Հոսքի ֆունկցիան ավարտում է իր աշխատանքը Ցանկացած հոսք կանչում է TerminateThread ֆունկցիան տալով հոսքի հենդլերը Ցանկացած հոսք կանչում է TerminateThread ֆունկցիան տալով հոսքի հենդլերըTerminateThread Ցանկացած հոսք կանչում է TerminateProcess ֆունկցիան պրոցեսի հենդլերով Ցանկացած հոսք կանչում է TerminateProcess ֆունկցիան պրոցեսի հենդլերովTerminateProcess

Հոսքի ստեկը Ըստ լռելիության ստեկի չափը մեկ մեգաբայթ է Ըստ լռելիության ստեկի չափը մեկ մեգաբայթ է Ըստ լռելիության չափը տրվում է իրականացվող ֆայլի մեջ սկզբում (header) Ըստ լռելիության չափը տրվում է իրականացվող ֆայլի մեջ սկզբում (header) Ստեկը ազատվում է, երբ հոսքը վերջացնում է իր աշխատանքը Ստեկը ազատվում է, երբ հոսքը վերջացնում է իր աշխատանքը

Հոսքերի առաջնայնությունը և պլանավորումը Գոյություն ունեն հետևյալ առաջնայնությունները IDLE_PRIORITY_CLASS IDLE_PRIORITY_CLASS BELOW_NORMAL_PRIORITY_CLASS BELOW_NORMAL_PRIORITY_CLASS NORMAL_PRIORITY_CLASS NORMAL_PRIORITY_CLASS ABOVE_NORMAL_PRIORITY_CLASS ABOVE_NORMAL_PRIORITY_CLASS HIGH_PRIORITY_CLASS HIGH_PRIORITY_CLASS REALTIME_PRIORITY_CLASS REALTIME_PRIORITY_CLASS

Հոսքերի առաջնայնությունը և պլանավորումը Գոյություն ունեն պլանավորման հետևյալ ալգորիթմները First in first out First in first out Shortest remaining time Shortest remaining time Fixed priority pre-emptive scheduling Fixed priority pre-emptive scheduling Round-robin scheduling Round-robin scheduling Multilevel queue scheduling Multilevel queue scheduling

Հոսքերի առաջնայնությունը և պլանավորումը