본문 바로가기

프로세스13

커널 오브젝트(Kernel Object) - 2 커널 오브젝트의 상태(State) : 리소스에 특정 상황이 발생함에 따라 Signaled 상태(신호를 받은 상태)와 Non-Signaled 상태(신호를 받지 않은 상태)로 나뉜다. (예 : 프로세스 커널 오브젝트의 상태 종료된 프로세스는 다시 살릴수 없다. 따라서 프로세스 커널 오브젝트의 상태는 Signaled -> Non-Signaled 로 변경될 수 없다) 커널 오브젝트의 상태를 확인하는 함수 : DWORD WaitForSingleObject( HANDLE hHandle, // 상태 확인을 원하는 커널 오브젝트의 핸들 DWORD dwMilliseconds // hHandle가 가리키는 커널 오브젝트가 Signaled 상태가 될 때까지 기다릴수 있는 최대 시간(INFINITE 전달 : Signaled .. 2010. 2. 23.
프로세스간 통신(IPC) - 메일 슬롯(MailSlot) IPC (Inter-Process Communication) : 프로세스 사이의 통신 메일 슬롯(Mail Slot)의 원리 : 프로세스는 자신에게 할당된 메모리 공간 이외에는 접근할 수가 없다. 따라서 Mail Slot (우체통)을 이용하여 데이터를 송·수신한다. 데이터를 수신하고자 하는 프로세스 A(Receiver)가 Mail Slot 을 생성한다. 데이터를 송신하고자 하는 프로세스 B(Sender)가 프로세스 A의 Mail Slot 의 주소로 데이터를 송신한다. 프로세스 A가 자신의 Mail Slot 을 통해 데이터를 얻게 된다. 메일 슬롯(Mail Slot) 구성 : Recevier : Mail Slot 를 생성한다. HANDLE CreateMailslot( LPCTSTR lpName, // 메일슬.. 2010. 2. 11.
커널 오브젝트(Kernel Object) 커널 오브젝트 : Windows 운영체제에서 리소스(Resource : 프로세스, 쓰레드, 파일)들을 관리하기 위한 데이터를 저장하는 메모리 블록 Windows에서 관리하는 리소스 특성을 변경하기 위해서는 해당 리소스의 커널 오브젝트를 조작해야한다. 해당 리소스의 정보를 저장하고 있는 커널 오브젝트에 접근하기 위해서는 커널 오브젝트들을 구별하는 커널 오브젝트 핸들(Object Handle)을 얻어야 한다. 커널 오브젝트와 핸들 : 커널 오브젝트는 Windows 운영체제에 종속적이다. 사용자가 리소스 생성을 요청하면 운영체제에서 사용자가 요청한 대로 리소스를 생성하게 되고 이를 관리하기 위해 커널 오브젝트를 생성한다. 즉, 커널 오브젝트는 Windows 운영체제에 의해 생성 및 소멸이 결정된다. 리소스가 .. 2010. 2. 11.
CreateProcess 함수 CreateProcess Process A -------> Process B (부모 프로세스) CreateProcess (자식 프로세스) BOOL CreateProcess( LPCTSTR lpApplicationName, // 생성될 프로세스의 이름 LPTSTR lpCommandLine, // 생성될 프로세스에 인자 전달(변수만 가능) LPSECURITY_ATTRIBUTES lpProcessAttributes, // 프로세스의 보안 속성 지정 LPSECURITY_ATTRIBUTES lpThreadAttributes, // 쓰레드의 보안 속성 지정 BOOL bInheritHandles, // TRUE : 부모 프로세스가 소유하는 상속 가능한 핸들을 상속한다. DWORD dwCreationFlags, // .. 2010. 2. 10.
프로세스(Process) 생성 소스 /* 자식 프로세스(Child Process) */ #include #include #include #include INT_PTR _tmain(INT_PTR argc, TCHAR* argv[]) { _tsetlocale(LC_ALL, _T("Korean")); _tprintf(_T("자식 프로세스(Child Process) \n")); system("pause"); return 0; } /* 부모 프로세스(Parent Process : CreateProcess 이용) */ #include #include #include #include #define DIR_LEN MAX_PATH+1 INT_PTR _tmain(INT_PTR argc, TCHAR* argv[]) { _tsetlocale(LC_ALL, _T.. 2010. 2. 10.
프로세스의 생성과 소멸 프로세스(Process) : 메모리에 로드되어 실행중인 프로그램 1. 프로세스를 구성하는 요소 메모리 구조 : 프로세스 생성시 만들어진다. Register Set : 프로세스 실행을 위해 필요한 데이터들로 채워진다. 2. 프로세스의 스케줄링과 상태 변화 프로세스의 스케줄링(Scheduling) : 프로세스의 CPU 할당 순서 및 방법을 결정짓는 일 (스케줄링 알고리즘(Scheduling Algorithms) : 스케줄링에 사용되는 알고리즘) 스케줄러(Scheduler) : 스케줄링 알고리즘을 적용해서 실제로 프로세스를 관리하는 운영체제 요소(모듈) (참고 : 멀티 프로세스(Multi-Process) 운영체제의 CPU 사용 실행해야 할 프로세스 여러개라면 멀티 프로세스는 모든 프로세스를 일단 실행시킨 후 .. 2010. 2. 9.