본문 바로가기

멀티코어 프로그래밍/Basic10

캐시 일관성과 거짓 공유 캐시 일관성과 거짓 공유 캐시 일관성 공유 메모리 시스템에서 각 프로세서가 가진 로컬 캐시간의 일관성 캐시 일관성 문제 캐싱은 멀티프로세서 시스템에서 메모리 액세스 시간을 줄이기 위해 반드시 필요함 멀티 프로세서 시스템에서 개별 캐시는 일관성 문제를 발생시킬 수 있음 변수의 복사본이 여러 캐시에 있을 수 있음 프로세서가 읽은 값은 항상 최신의 값이기를 기대함 한 프로세서에 의해 쓰인 값은 다른 프로세서들이 보지 못할 수도 있음 쓰여진 결과가 다른 프로세서에게 보이지 않을 수 있음 단일 프로세서에서는 I/O 를 제외하면 문제가 없음 I/O 장치와 프로세서 캐시간의 일관성 문제 주로 DMA에 의해 발생 캐시 일관성 프로토콜은 어떤 주소가 읽혔을 때 그 데이터가 항상 최신의 값임을 보장해 줌 일관성 미스 in.. 2022. 4. 7.
스레드 스레드 독립적인 패치/디코드/실행 루프를 가짐 OS에서 처리하는 가장 작은 처리 단위 논리적으로 하나의 스레드는 다음을 포함 코드, 레지스터, 스택, 스레드별 데이터 사용자 레벨 스레드 vs 커널 레벨 스레드 일반적으로 스레드는 프로세스에 속함 하나의 프로세스는 여러 개의 스레드를 포함할 수 있음 스레드간 공유 자원은 다른 스레드와 공유 가능 코드, 데이터, OS 자원(열린 파일, 시그널 등) 스레드간 통신 한 프로세스 내 스레드들은 기본적으로 프로세스의 가상 주소 공간의 일부(코드와 데이터 섹션)을 공유 한 프로세스 내 스레드간 통신은 공유 주소 공간에 읽기/쓰기를 통해 이루어짐 한 스레드가 특정 주소에 값을 쓰면 그 값은 다른 스레드에 의해 읽힐 수 있음 멀티프로드 프로세서 여러 스레드의 명령어를 파.. 2022. 4. 6.
프로세스와 스레드 프로세스(Process)와 스레드(Thread) 프로세스 실행되고 있는 컴퓨터 프로그램의 인스턴스 실행되고 있는 명령어의 흐름 OS에 의해 추상화 됨 레지스터, 메모리(코드, 데이터, 스택, 힙), I/O 상태, 시그널 관리 정보 등을 가짐 관리자 모드와 사용자 모드 관리자 모드 관리자 모드에서는 모든 명령들이 실행될 수 있음 OS 커널이 동작하는 모드 사용자 모드 일부 명령어만 사용 가능 OS 커널을 제외한 나머지 모든 소프트웨어들이 동작하는 모드 시스템 콜(System Call) 사용자 모드에서 동작하는 프로그램이 OS에게 서비스를 요청하는 방법 일반적으로 트랩(trap)을 이용하여 구현함 프로그램이 트랩 명령어를 실행하면 트랩이 발생하여 커널 모드로 전환됨 커널은 트랩을 처리하고 제어를 다시 프로그.. 2022. 4. 4.
스레드 스케줄링 스레드 스케줄링 스레드 라이브러리 프로그래머에게 스레드 생성 및 관리를 위한 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.
728x90