본문 바로가기

Windows/_System Programming34

비동기 I/O 와 APC 개념 : 동기 I/O : I/O 작업의 수행을 위해 호출된 함수가 블로킹 상태에 놓이기 때문에 CPU는 블로킹 상태에서 반환될 때까지 일을 하지못한다. 비동기 I/O : I/O 작업의 수행을 위해 함수를 호출하자마자 반환한다. 따라서 CPU는 그다음 작업을 진행한다. 중첩(Overlapped) I/O : 넌블로킹(Non-Blocking) 함수를 이용하여 여러작업을 동시에 진행한다. 함수가 바로 반환되므로 계속 중첩해서 I/O 요청을 할수가 있다. (참고 : 동기 방식(블로킹) I/O 에서는 전송을 위해 할당된 내부 메모리 버퍼에 데이터가 복사가 되면 함수가 반환된다. (데이터 전송이 완료될 때 반환되는 것이 아니다) OVERAPPED 구조체 typedef struct _OVERLAPPED { ULONG_.. 2010. 3. 8.
디렉터리 컨트롤 디렉터리의 생성과 소멸 : BOOL CreateDirectory( LPCTSTR lpPathName, // 생성하려는 디렉터리 이름 LPSECURITY_ATTRIBUTES lpSecurityAttributes // 보안속성 ); BOOL RemoveDirectory( LPCTSTR lpPathName // 소멸하려는 디렉터리 이름 ); (참고 : 절대경로 지정시 마지막 디렉터리만 생성한다. 즉, C:\\AAA\BBB 일때 (AAA 디렉터리는 존재하지 않는다) 컴퓨터는 절대로 AAA 디렉터리를 만들어 주지 않는다. 따라서 BBB 디렉터리도 만들어지지 않는다. AAA 디렉터리가 존재해야 BBB 디렉터리가 생성된다. 현재 디렉터리, 시스템 디렉터리, Windows 디렉터리 : 현재 디렉터리(Current Di.. 2010. 3. 8.
파일 I/O 파일 열기 : HANDLE CreateFile( LPCTSTR lpFileName, // 개방(open)할 파일 이름 DWORD dwDesiredAccess, // 읽기/쓰기 모드를 지정한다.(or (l) 연산으로 결합) GENERIC_READ : 읽기 모드 GENERIC_WRITE : 쓰기 모드 DWORD dwShareMode, // 파일 공유방식 0 : 다른 프로세스에 절대 공유 불가. 중복 개방 불가 FILE_SHARE_READ : 다른 프로세스에서 동시 읽기 접근 가능 FILE_SHARE_WRITE : 다른 프로세스에서 동기 쓰기 접근 가능 LPSECURITY_ATTRIBUTES lpSecurityAttributes, // 보안 속성 DWORD dwCreationDisposition, // 파일의.. 2010. 3. 8.
가상 메모리(Virtual Memory) 개념 : (가정 : 16비트 시스템(0 ~ 64K -1 주소), 프로세스별로 64KB의 가상 메모리 할당, 메인 메모리 16KB) MMU(Memory Management Unit) : 실제로 존재하는 메모리 크기를 가상 메모리 크기만큼 존재하는 것처럼 CPU가 느끼도록 컨트롤 한다.(ex. 1GB 램의 메모리를 4GB의 메모리가 존재하는 것처럼 CPU가 느끼도록 한다) 가상 메모리 구성에 필요한 시스템의 기본 기능(메모리 할당 및 변환)을 제공한다. (CPU와 함께 하나로 패키징(Packaging) 되있다) CPU - > MMU : 메인 메모리에서 사용되지 않는 메모리 블록 하나를 골라서 할당 (1K부터 20바이트 할당요청) 20바이트를 할당 요청했음에도 메모리 블록은 4K 바이트 단위라서 4 K 를 할.. 2010. 3. 7.
쓰레드(Thread) 동기화 예제 소스 메모리 접근 동기화 : 1. 크리티컬 섹션(Critical Section) 기반의 동기화 - 유저 모드 2. 인터락 함수(Interlocked Family Of Function) 기반의 동기화 - 유저 모드 3. 뮤텍스(Mutex) 기반의 동기화 - 커널 모드 4. 세마포어(Semaphore) 기반의 동기화 - 커널 모드 5. 이름있는 뮤텍스(Named Mutex) 기반의 프로세스 동기화 - 커널 모드 실행 순서의 동기화 : 1. 이벤트 기반의 동기화 2. 이벤트 + 뮤텍스 동기화 2010. 3. 6.
쓰레드(Thread) 동기화 개념 쓰레드 동기화 : 쓰레드 간의 질서가 잘 지켜지고 있음을 의미 쓰레드 동기화의 방법 : 유저 모드 동기화 : 동기화가 진행되는 과정에서 커널 코드가 실행되지 않는다. 커널 모드로의 전환이 이뤄지지 않으므로 성능상에 이점이 있지만 기능상의 제한도 있다. 커널 모드 동기화 : 커널에서 제공하는 동기화 기능을 활용한다.(유저 모드에서 제공하지 못하는 기능을 제공받을 수 있다) 커널 모드로의 전환으로 인해 성능이 저하된다. 두가지 관점에서의 쓰레드 동기화 : 메모리 접근에 대한 동기화 : 쓰레드들의 임계 영역 동시접근을 막아 동기화한다. (참고 : 임계 영역(Critical Section) : 배타적 접근(한 순간에 하나의 쓰레드만 접근)이 요구되는 공유 리소스(전역변수와 같은)에 접근하는 코드 블록) (예 :.. 2010. 3. 4.