프로그래밍/시스템(7)
-
1-6. 커널오브젝트와 프로세스
프로세스가 프로세스를 생성할 수 있다. 대표적인 예로, CreateProcess 메소드를 통해 자식프로세스를 들 수 있다. CreateProcess 메소드를 통해 자식프로세스를 생성할 수 있다라는 정도만 알고 따라가보자. CreateProcess 메소드 사용과 파라미터값들이 궁금하다면 msdn 등 다른 자료들을 참고하자. CreateProcess 메소드 호출을 통해서 프로세스 생성을 요구하고 Windows 운영체제가 요구에 맞게 프로세스를 생성해 준다. -> 프로세스를 생성하는 실질적인 주체는 운영체제 이다. 프로세스의 관리 ( 프로세스의 생성,소멸 상태변화) 역시 운영체제가 주체이다. 운영체제가 프로세스를 관리하기 위하여 만들어지는 것이 커널오브젝트 이다. 하지만, 프로세스 관리 목적으로 만들어진 구조..
2015.12.28 -
1-5. 프로세스
+프로세스? 실행중인 프로그램 ( 심플하다 ) 메모리 공간에 프로그램의 실행 바이너리 코드가 올라간다 -> 프로그램이 프로세스가 된다 +프로세스의 메모리 구성 Data 영역 : 전역변수, Static 변수 할당을 위해 존재하는 영역 Stack 영역 : 지역변수 할당과 함수 호출 시 전달되는 인자값들의 보관을 위해 존재하는 영역 Heap 영역 : 동적할당을 위해서 존재하는 영역 Code 영역 : 실행파일을 구성하는 명령어들이 올라가는 영역 +프로세스의 스케줄링 ( Process Scheduling ) -스케줄링? CPU 는 하나이고 실행 중인 프로세스가 다수 일 때, 프로세스의 CPU 할당 순서를 결정짓는 일 프로세스마다 우선순위가 정해져있고, 이 순위에 따라 CPU에 의해 실제 실행할 프로세스를 결정한다..
2015.12.28 -
1-3. 운영체제 32bit vs 64bit
+운영체제 32bit 64bit 인지 구분짓는 기준 CPU가 한 번에 송.수신 할 수 있는 데이터 크기와 한 번에 처리할 수 있는 데이트 크기 한 번에 송.수신 할 수 있는 데이터 크기가 32bit 이다 -> 메모리 주소값이 32bit 로 표현된다 -> 활용할 수 있는 RAM 크기는 4GB 이다 한 번에 송.수신 할 수 있는 데이터 크기가 64bit 이다 -> 메모리 주소값이 64bit 로 표현된다 -> 활용할 수 있는 RAM 크기는 2의 64승 Byte +64 비트와 32 비트 공존의 문제점 -포인터 크기와 자료형 크기가 다르다 32 bit : int 형 4바이트, 포인터 형 4바이트 64 bit : int 형 4바이트, 포인터 형 8바이트 64비트 환경에서 아래와 같은 소스를 실행하면 데이터 손실이 ..
2015.12.20 -
1-4. 메모리 접근 방식
CPU 에서 메모리에 접근할 때 두 가지 방식이 있다. +메모리 접근 방식 - Direct Addressing 모드 - Indirect Addressing 모드 CPU 에는 명령어들이 있는데, 메모리에 접근하여 해당 주소값의 데이터를 CPU의 레지스터로 가져오는 명령어가 있다. 이 명령어가 LOAD 라고 가정하고, LOAD 0x0011 위 명령어는 0x0011 메모리주소의 데이터를 CPU 레지스터로 가져온다는 의미이다. 입력된 메모리 주소의 데이터를 가져오는 방식을 Direct Addressing 이라고 한다. 하지만, LOAD 다음에 오는 주소표현에는 범위적으로 한계가 있다. ( 모든 메모리 주소를 표현할 수 없다 ) 이 문제를 해결하기 위해 Indirect Addressing 이 사용된다. Indir..
2015.12.20 -
1-2. 문자셋 ( CharacterSet )
문자셋 ( CharacterSet ) - SBCS ( Single Byte Character Set ) - MBCS ( Multi Byte Character Set ) - WBCS ( Wide Byte Character Set ) SBCS ? - 문자를 표현하는데 1byte 를 사용 - 256 가지의 문자를 표현할 수 있다 -> 영어 - 아스키코드 기반 문자 MBCS ? - 문자를 표현하는데 1byte , 2byte 를 혼용함 - "ABC한글" -> 같은 경우 문자열 길이가 잘못 측정되는 문제가 발생할 수 있음 이런 이슈를 처리하는 주의가 필요함 WBCS ? - 문자를 표현하는데 2byte 를 사용 - 유니코드 기반 문자 ex) char str[] = "ABC한글"; printf("배열크기 : %d\n"..
2015.12.20 -
1-1. 프로그램의 실행과정
*실행파일 생성 흐름 전처리기 -> 컴파일러 -> 어셈블러 -> 링커 +전처리기 #로 시작하는 지시자의 지시에 따라 소스코드를 변경하는 작업 수행 ex) #include, #define ..etc +컴파일러 소스코드를 어셈블리 코드로 번역하는 작업수행 어셈블리 코드? CPU 에게 작업을 시키기 위한 명령어 ex) +어셈블러 어셈블리 코드를 Binary Code 로 변경하는 작업 수행 Binary Code ? 1 과 0 으로만 구성된 코드 -> CPU는 1과0만 인식 +링커 프로그램 내에서 참조하는 함수, 라이브러리들을 연결시켜주는 작업을 수행 tip. 컴파일 중에 LNKXXX 에러가 뜨며, 함수를 찾을 수 없다는 에러를 본 적이 있을 것이다 *프로그램 실행 과정 Fecth -> Decode -> Exec..
2015.12.16