하드웨어 + 운영체제컴퓨터 시스템을 활용하는 SW 개발Windows OS 자체의 기능을 십분 활용하는 프로그래밍시스템 프로그래밍은 모든 응용 프로그램에 포함되는 요소
C++로 Windows 응용 프로그램(Consol, API, MFC, ...) 개발시 다양한 문자 셋을 접할 수 있다DBCS(Double Bytes Character Set)등 지금은 잘 사용하지 않는 문자도 있으며 ANSI와 유니코드 문자와 같이 여전히 사용하고 있는
실행중인 프로세스의 실행파일이 존재하는 디렉터리(Working Directory)실행중인 프로세스의 현재 디렉터리(Current Directory, shortcur에서 실행시 경로, 프롬프트에서 실행시 경로, ...)Windows의 시스템 디렉터리(System Dire
업로드중..커널에 의해 관리되는 리소스 정보를 담고 있는 데이터 블록프로세스는 자신만의 커널 오브젝트 테이블을 가지고 있다.리소스를 획득하면 커널 오브젝트 핸들값을 반환 받는다.프로세스는 커널 오브젝트에 직접적으로 접근할 수 없지만 커널 오브젝트 핸들을 통해 제어가 가
프로세스간 통신이다. 궁극적으로는 데이터를 공유하기 위한 기법이다.윈도우, 리눅스, 임베디드에 있는 기법이며 각 구현은 플랫폼마다 다르다.Sender, Receiver로 나뉜다.주소를 통해서 전달Sender에서 Receiver로 단방향 데이터 전송만 가능Sender에서
컴퓨터에서 표현하는 시간 단위. N 클럭(CPU)이 타임 슬라이스가 된다.타임 슬라이스가 지날때마다 스케줄러는 프로세스들의 우선 순위를 확인하여 CPU가 처리할 다음 프로세스를 결정한다N 클럭이 높은 타임 슬라이스는 응답성이 떨어진다N 클럭이 낮은 타임 슬라이스는 응답
함수에서 스택 정리파라미터는 스택에 저장함수 호출자에서 스택 정리파라미터는 스택에 저장함수에서 스택 정리파라미터는 2개 까지는 레지스터(ecx, edx)에 저장하고 나머지는 스택에 저장함수에서 스택 정리ecx를 인자로 전달, C++에서 멤버 함수 호출시 ecx에 thi
사실 스레드는 두가지가 있다.윈도우 OS에서 API 형태로 제공커널 영역에서 쓰레드 정보를 가지고 관리OS에서 쓰레드를 관리하기에 유저 영역의 모든 쓰레드에 대해 공평한 CPU 자원 할당아래 그림에서는 모든 쓰레드에 대해 1/3 씩 자원 할당하고 있다.장점 : 커널에서
프로세스들은 프로세스 스케줄러에 의해 CPU 자원을 할당 받는다.CPU 자원을 할당 받아서 실행중이면 Running 상태이며 CPU 자원을 다른 프로세스에게 뺏기면 Blocked 상태가 된다.프로세스 스케줄러에 의해 CPU 자원이 다른 프로세스로 이동 할때마다 Cont
동기화 관점 실행 순서 동기화 여러 쓰레드가 하나의 작업을 같이 처리하면서 실행 순서를 보장 메모리 접근 동기화 여러 쓰레드간 특정 메모리에 접근할때 반드시 하나의 쓰레드만 접근할 수 있도록 보장한다 즉 임계 영역을 설정한다. 접근 순서는 상관 없다. 임계 영역은
컴퓨터가 느려진다 싶으면 가장 먼저 확인해보는 작업 관리자의 CPU 이용률이 수치가 높으면 CPU가 바쁘고 특정 프로세스의 수치가 높으면 자원을 많이 잡아먹는 CPU로 생각하며 정작 이 CPU 이용률값이 어떻게 계산 되는지는 관심이 없었다그러다 우연히 저 작업 관리자
쓰레드 생성과 소멸은 비용이 많이 드는 작업. 이 비용을 줄이기 위해 쓰레드를 쓰레드 풀에서 할당 받아서 사용하고 다 사용하면 소멸 시키는 것이 아니라 쓰레드 풀에 다신 반환한다다시 쓰레드가 필요할때는 쓰레드를 생성할 필요 없이 쓰레드 풀에서 할당 받으면 된다WORK
파일 포인터 시스템 API32bit 시스템에서는 파일의 최대 크기는 4G byte - 2 이다32bit 는 4G - 1 만큼 표현 가능 하다. 여기서의 -1 은 인덱스 0부터 시작하기에 -1 보정그리고 에러가 났을 경우 사용할 INVALID_SET_FILE_POINTE
모든 쓰레드는 자신만의 APC Queue를 소유하고 있다Alertable 가능한 I/O 작업들이 완료(알림 상태)되면 APC Queue에 추가되고 시스템에서 이 작업들을 순차적으로 처리한다
OS는 메모리를 페이지 단위로 관리한다사용자가 메모리를 할당(malloc)하면 해당 메모리는 COMMIT 상태가 되고 소멸(free)시키면 FREE 상태가 된다메모리 단편화 문제로 재할당 하는 문제를 해결하기 위해 RESERVE 상태가 존재한다C++ 에서도 reserv
메모리와 파일을 맵핑 시킨다. 파일의 일부 공간을 프로세스의 가상 메모리에 연결을 한다연결이 된후 프로세스의 가상 메모리에 데이터를 쓰면 파일에 반영 된다성능과 사용 편의성의 장점이 있다만약 파일의 내용을 일부 수정해야 한다면 파일의 모든 내용을 메모리에 읽어 온 후
AAA.exe가 실행할때 DLL 라이브러리 역시 같이 메모리에 로딩되어 AAA.exe는 DLL 라이브러리에 있는 코드를 사용할 수 있다DLL은 AAA.exe에 포함되지 않기에 파일 크기가 줄어든다. 하지만 별도의 DLL 라이브러리는 있어야 한다. 만약 DLL 라이브러리