멀티코어 프로그래밍46 스레드 스케줄링 스레드 스케줄링 스레드 라이브러리 프로그래머에게 스레드 생성 및 관리를 위한 API를 제공 커널 지원없이 동작하는 사용자 수준 라이브러리 커널 수준 라이브러리는 OS에 의해 지원됨 코드 및 데이터 구조는 커널 공간에 존재 API함수 호출은 일반적으로 시스템 호출로 변환 사용자 수준 스레드와 커널 수준 스레드 사용자 수준 스레드(User-level threads) 스레드 동작이 사용자 공간에서 발생 스레드는 런타임 라이브러리에 의해 관리됨 커널 수준 스레드(Kernel-level threads) 각 스레드는 자신의 실행 문맥을 가짐 스레드는 OS에 의해 관리됨 N:1 사상 사용자는 다수의 스레드를 생성 OS는 하나의 스레드만 생성 시스템 호출은 전체 프로세스를 멈춤 장점 사용자 수준 스케줄링 쉬운 성능 조.. 2022. 3. 31. Make / Makefile Make makefile을 이용하여 프로그램을 자동으로 컴파일 다수 소스 코드가 포함된 프로젝트에서 유용하게 사용 makefile 구조 기본적으로 세가지 구조 목표(Target) 의존 관계(Dependency) 명령(Command) 라인에 #이 나오면 해당 라인의 그 이후는 무시 [Target] [Dependency] [Tab] [Command] [Tab] [Command] [Target] 아래의 [Command]들이 실행되어 나온 결과 파일 [Dependency] 여기 지정된 파일들이 존재하지 않거나 내용이 변하면 아래의 명령을 실행 [Tab] [Command] make에 의해 실형되는 명령 반드시 탭 문자로 공백을 넣어야 함 make 명령어로 실행 매크로 C언어의 변수와 유사하게 사용 가능 특정 단어.. 2022. 3. 30. gcc 컴파일러 gcc 확장자 C 프로그래밍에서 확장자별 파일의 역할 확장자 역할 .a 정적 라이브러리 .c 원본 C 코드. 전처리 과정이 필요함 .h C 코드 헤더 파일 .i 중간 C 코드. 전처리 과정이 필요하지 않음 .o 오브젝트 파일. 링킹 과정이 필요함 .s 어셈블리 코드. 컴파일 과정에서 확인 가능 .so 공유 라이브러리 .c ------> .i \------> .s \------> .o \------> .exe 옵션 -v 현재 gcc 컴파일러의 버전을 확인하기 위한 옵션 -o gcc 컴파일러는 일반적으로 a.out이라는 실행 파일 생성 gcc 컴파일러 결과 파일의 이름 지정 ex) gcc -o test test.c -E 컴파일 과정 중 C 전처리 과정까지 수행 #include, #define 등의 전처리문을.. 2022. 3. 29. 프로파일링 프로파일링 프로그램의 실행시간, 메모리 사용량, 특정 명렁어 이용, 함수 호출의 빈도 등을 측정하여 프로그램의 성능을 분석하는 방법 프로파일링 작업을 통해서 얻어진 정보는 성능 향상을 위한 프로그램의 최적화에 이용 프로파일러(profilier) 프로파일링을 도와주는 도구로 프로그램에서 사용되는 함수가 몇 번 사용되고 얼마나 많은 시간을 차지하는지 측정 gprof 리눅스 시스템에서 사용하는 프로파일러 프로그램에 대한 함수들의 사용빈도, 수행시간 등을 측정할 수 있는 툴 프로그램을 새로 컴파일해야 사용할 수 있음 컴파일 시에 '-pg' 옵션 추가 ex) gcc -o test tes.c -pg 링킹을 위해 .o 파일을 만드는 경우에 컴파일과 링킹 모두에 '-pg' 옵션을 추가해야 .. 2022. 3. 28. GDB 명령어 GDB GDB GDB GDB란 GNU Debugger의 약자이며 다음과 같은 특징이 있다. C/C++ 디버거 프로그램 시작, 멈춤 및 수행 도중 조작 가능 변수 값 변경 및 추적 함수 스택 관리 코드 분석 프로그램 수행 과정 추적 프로 ypangtrouble.tistory.com 명령어 l (list) 현재 실행중인 라인을 포함하여 소스 코드 10줄 출력 현재 실행중인 라인을 기준으로 중앙에 표시 l (list) - : 이전 10줄의 코드 출력 l (list) [line number] line number에 해당하는 소스 코드의 줄을 기준으로 10줄 출력 l (list) [function name] 해당 함수를 찾아 함수의 시작 지점을 기준으로 10줄 출력 set listsize [number] 출력되는.. 2022. 3. 27. GDB GDB GDB란 GNU Debugger의 약자이며 다음과 같은 특징이 있다. C/C++ 디버거 프로그램 시작, 멈춤 및 수행 도중 조작 가능 변수 값 변경 및 추적 함수 스택 관리 코드 분석 프로그램 수행 과정 추적 프로그램의 실행 속도가 저해될 수 있음 실행 방법 -g 옵션 디버거 툴(gdb)을 사용하기 위한 옵션 이버깅 정보를 포함하여 어셈블리 코드 생성 파일 이름 라인 넘버 변수와 함수들의 이름과 타입 -O 옵션과 함께 사용시 문제 발생 가능 최적화 과정에서 일부 디버깅 정보가 삭제될 수 있음 사용법 ex1) gcc -g test.c -o test 2022. 3. 26. 이전 1 ··· 3 4 5 6 7 8 다음 728x90