본문 바로가기

Computer/OS7

프로세스 핸들 잘 알다시피 윈도우즈는 GDI, USER, KERNEL의 세 가지 주요 DLL로 구성되어 있다 각 모듈은 여러 종류의 객체를 관리하며 관리의 편의를 위해 핸들을 사용한다 객체는 시스템 리소스를 나타내는 일종의 데이터 구조체이 구조체들은 보통 덩치가 크기 때문에 좀 더 간단한 323비트 정수값의 핸들로 관리 프로세스가 한정적이다 2016. 10. 14.
스레드를 이용한 다중작업 스레드- 프로세스 내에 존재하는 실행 경로, 일련의 실행코드 프로세스는 단지 존재하기만 하는 껍데기, 실제 작업은 스레드가 담당 프로세스 생성 시 하나의 주 스레드가 생성 프로세스 생성 시 하나의 주 스레드가 생성되며 대부분의 경우주 스레드가 모든 작업을 처리하고 주 스레드가 종료되면 프로세스도 같이 종료 운영체제는 스레드 별로 골고루 CPU 시간을 분배하므로 한 스레드가 시간을 지나치게 오래 끌더라도다른 스레드가 이에 영향을 받지 않고 실행 하나의 운영체제에 여러 개의 프로세스가 동시에 실행되는 환경을 멀티 태스킹 멀티 스레드 - 하나의 프로세스에서 여러 개의 스레드가 동시에 실행되는 환경 운영체제 차원에서 지원되며 일부 하드웨어의 지원까지 받으므로 아주 부드럽게 실행되며 신뢰성이 있음 HANDLE C.. 2016. 10. 14.
프로세스 종료 프로세스가 자기 자신을 종료하는 가장 간단한 방법 WM_CLOSE 메시지 보내기DestroyWindow() 로 메인 윈도우 파괴WM_DESTROY 에서 PostQuitMessage 를 호출하여 메시지 루프를 종료 이런 방법들에 의해 WinMain이 리턴되면 다음 함수를 호출하여 정리 작업 수행 VOID ExitProcess( UINT uExitCode ); 이 함수가 호출되면 프로세스는 정리 작업에 들어가 즉각 종료 프로세스가 종료될 때는 다음의 작업이 진행 1, 프로세스와 연결된 모든 DLL을 종료시키기 위해 각 DLL의 DllMain 함수가 호출되며 DLL들은 스스로 정리작업 2. 모든 열려진 핸들을 닫는다 3. 실행중인 모든 스레드를 종료한다 4. 프로세스 커널 객체와 스레드 객체는 신호상태가 되며.. 2016. 10. 13.
ShellExecute 이 함수는 운영체제가 직접 제공하는 함수가 아니라 쉘이 제공하는 탐색기는 항상 설치되므로 언제든지 사용 가능 HINSTANCE ShellExecute( HWND hwnd, LPCTSTR lpOperation, LPCTSTR lpFile, LPCTSTR lpParameters, LPCTSTR lpDirectory, INT nShowCmd); 이 함수는 실행 파일 뿐만 아니라 일반 데이터 파일도 실행데이터 파일을 실행하면 보통 연결된 프로그램이 실행되면서 데이터 파일이 같이 열림 예를 들어 확장자가 txt 인 파일을 실행하면 텍스트 파일을 편집할 수 있는 편집기가 열리는데 보통 메모장이 실행그림 파일이나 멀티 미디어 파일도 이 함수로 실행 hwnd - 부모 윈도우의 핸들프로세스 실행 중에 열리는 에러 메시지.. 2016. 10. 13.
CreateProcess 함수 WinAPI 에서 프로세스를 생성하는 기본 함수 - CreateProcess( ) WinExec 등의 함수도 내부적으로는 이 함수를 호출하여 프로세스를 생성 BOOL CreateProcess( LPCTSTR lpApplicationName, LPTSTR lpCommandLine, LPSECURITY_ATTRIBUTES lpProcessAttributes, LPSECURITY_ATTRIBUTES lpThreadAttributes, BOOL bInheritHandles, DWORD dwCreateionFlags, LPVOID lpEnvironment, LPCTSTR lpCurrentDirectory, LPSTARTUPINFO lpStartupInfo, LPPROCESS_INFORMATION lpProcess.. 2016. 10. 13.
프로세스의 생성 한 프로그램에서 다른 프로그램을 실행할 때 WinAPI의 프로세스 생성 함수 사용 프로세스를 생성하는 가장 쉽고도 간단한 함수 UINT WinExec( LPCTSTR lpCmdLine, UINT uCmdShow ); lpCmdLine - 실행하고자 하는 프로그램의 이름uCmdShow - 프로그램 실행 직 후 프로그램이 어떻게 보일지 결정 SW_SHOWNORMAL, SW_SHOWMAXIMIZED, SW_SHOWMINIMIZED, SW_SHOW, SW_HIDE 등 실행 파일만 주어졌을 때 다음 순서대로 실행 파일의 위치 검색하여 발견된 실행 파일을 실행 1. 프로그램이 실행된 디렉토리2. 현재 디렉토리3. 시스템 디렉토리4. 윈도우즈 디렉토리5. PATH 환경 변수가 지정하는 디렉토리들 이 검색 경로에 있는.. 2016. 10. 13.
프로세스와 스레드 프로세스 - 실행중인 프로그램 실행중인 프로그램의 한 인스턴스 예를 들어 사용자가 두 개의 메모장 프로그램을 실행시켰으면 둘 다 같은 프로그램이지만 다른 프로세스 운영체제는 프로그램을 프로세스 단위로 관리 프로세스는 각각 4GB의 주소 공간과 파일, 메모리, 스레드 등의 객체들을 소유프로세스가 종료될 때 프로세스가 소유한 모든 자원은 운영체제에 의해 파괴 모든 것은 프로세스에 의해 소유스레드는 윈도우와 메시지 큐, 스택만 소유 소유 관계는 프로세스 > 스레드 > 윈도우 실제로 작업을 하는 주체는 스레드가 담당 프로세스는 단지 메모리 상에만 존재하기만 할 뿐실행과 동시에 스레드를 하나 만들고 스레드를 호출함으로써 스레드에게 모든 작업을 맡김 정리하면 프로세스는 스레드를 담는 껍데기, 실제 일을 하는 것은 .. 2016. 10. 13.