Synchronization OS OS Process Thread Virtual memory Synchronization

  • Slides: 21
Download presentation
운영체제 기본개념과 Synchronization

운영체제 기본개념과 Synchronization

목차 • • • OS의 개념 OS의 기본 구성요소 Process, Thread, Virtual memory Synchronization의

목차 • • • OS의 개념 OS의 기본 구성요소 Process, Thread, Virtual memory Synchronization의 개념과 종류 WINCE 5. 0 Kernel 구조 WINCE 5. 0 가상 메모리 WINCE 5. 0 메모리 할당 방법 WINCE 5. 0 Process, Thread의 생성 방법 WINCE 5. 0 Synchronization 사용 방법 2

WINCE 5. 0 Kernel 구조 • Overview 13

WINCE 5. 0 Kernel 구조 • Overview 13

WINCE 5. 0 Process, Thread의 생성 방 법 • Process 생성 방법 – BOOL

WINCE 5. 0 Process, Thread의 생성 방 법 • Process 생성 방법 – BOOL Create. Process(LPCWSTR psz. Image. Name, LPCWSTR psz. Cmd. Line, LPSECURITY_ATTRIBUTES psa. Process, LPSECURITY_ATTRIBUTES psa. Thread, BOOL f. Inherit. Handles, DWORD fdw. Create, LPVOID pv. Environment, LPWSTR psz. Cur. Dir, LPSTARTUPINFOW psi. Start. Info, LPPROCESS_INFORMATION p. Proc. Info) – BOOL Create. Process(LPCWSTR psz. Image. Name, LPCWSTR psz. Cmd. Line, NULL, FALSE, DWORD fdw. Create, NULL, LPPROCESS_INFORMATION p. Proc. Info) • Process 종료 방법 – WM_CLOSE 메시지를 보내거나 Terminate. Process()를 사용 – 만약 프로세스 생성시 PROCESS_INFORMATION 구조체를 사용 하였다면 프로세스 핸들을 해제한 후 종료시켜야 함 17

WINCE 5. 0 Process, Thread의 생성 방 법 • Thread 생성 방법 – HANDLE

WINCE 5. 0 Process, Thread의 생성 방 법 • Thread 생성 방법 – HANDLE Create. Thread(LPSECURITY_ATTRIBUTES lpsa, DWORD cb. Stack, LPTHREAD_START_ROUTINE lp. Start. Addr, LPVOID lpv. Thread. Param, DWORD fdw. Create, LPDWORD lp. IDThread); – HANDLE Create. Thread(NULL, DWORD cb. Stack, LPTHREAD_START_ROUTINE lp. Start. Addr, LPVOID lpv. Thread. Param, DWORD fdw. Create, LPDWORD lp. IDThread); • Thread 중지/재개 방법 – Suspend. Thread()를 통해 쓰레드를 중지시키고, Resume. Thread()를 통해 쓰레드를 다시 실행시키는 것이 가능 • 종료 방법 – Exit. Thread()를 통해 특정 쓰레드를 종료 시키는 것이 가능 – Get. Exit. Code. Thread()를 통해 쓰레드가 종료되었는지 확인 가능 18

WINCE 5. 0 Synchronization 사용 방법 • Interlocked Function – – – – Interlocked.

WINCE 5. 0 Synchronization 사용 방법 • Interlocked Function – – – – Interlocked. Increment(LPLONG lp. Addend) Interlocked. Decrement(LPLONG lp. Addend) Interlocked. Exchange(LPLONG Target, LONG Value) Interlocked. Compare. Exchange(LPLONG Destination, LONG Exchange, LONG Comperand) Interlocked. Test. Exchange(LPLONG Target, LONG Old. Value, LONG New. Value) Interlocked. Exchange. Add(LPLONG lp. Addend, LONG Increment) Interlocked. Compare. Exchange. Pointer(PVOID* Destination, PVOID Exchange, PVOID Comperand) Interlocked. Exchange. Pointer(PVOID* Target, PVOID Value) • Critical Sections – – – Initialize. Critical. Section(LPCRITICAL_SECTION lp. Critical. Section) Enter. Critical. Section(LPCRITICAL_SECTION lp. Critical. Section) Try. Enter. Critical. Section(LPCRITICAL_SECTION lp. Critical. Section) Leave. Critical. Section(LPCRITICAL_SECTION lp. Critical. Section) Delete. Critical. Section(LPCRITICAL_SECTION lp. Critical. Section) 19

WINCE 5. 0 Synchronization 사용 방법 • Mutex – Create. Mutex(LPSECURITY_ATTRIBUTES lp. Mutex. Attributes,

WINCE 5. 0 Synchronization 사용 방법 • Mutex – Create. Mutex(LPSECURITY_ATTRIBUTES lp. Mutex. Attributes, BOOL b. Initial. Owner, LPCTSTR lp. Name) – Release. Mutex(HANDLE h. Mutex) • Semaphore – Create. Semaphore(LPSECURITY_ATTRIBUTES lp. Semaphore. Attributtes, LONG l. Initial. Count, LONG l. Maximum. Count, LPCTSTR lp. Name) – Release. Semaphore(HANDLE h. Semaphore, LONG l. Release. Count, LPLONG lp. Previous. Count) • Events – Create. Event(LPSECURITY_ATTRIBUTES lp. Event. Attributes, BOOL b. Manual. Reset, BOOL b. Initial. State, LPTSTR lp. Name) – Set. Event(HANDLE h. Event) – Pulse. Event(HANDLE h. Event) – Reset. Event(HANDLE h. Event) 20

WINCE 5. 0 Synchronization 사용 방법 • Point-to-Point Message Queues – Create. Msg. Queue(LPCWSTR

WINCE 5. 0 Synchronization 사용 방법 • Point-to-Point Message Queues – Create. Msg. Queue(LPCWSTR lpsz. Name, LPMSGQUEUEOPTIONS lp. Options) – Open. Msg. Queue(HANDLE h. Src. Proc, HANDLE h. Msg. Q, LPMSGQUEUEOPTIONS p. Options) – Write. Msg. Queue(HANDLE h. Msg. Q, LPVOID lp. Buffer, DWORD cb. Data. Size, DWORD dw. Timeout, DWORD dw. Flags) – Read. Msg. Queue(HANDLE h. Msg. Q, LPVOID lp. Buffer, DWORD cb. Buffer. Size, LPDWORD lp. Number. Of. Bytes. Read, DWORD dw. Timeout, DWORD* dw. Flags) – Get. Msg. Queue. Info(HANDLE h. Msg. Q, LPMSGQUEUEINFO lp. Info) – Close. Msg. Queue(HANDLE h. Msg. Q) 21