본문 바로가기

Computer Science117

CUDA + RAID 기반 데이터 분산 시뮬레이션 ㅁCPU: 적은 수의 강력한 ALU(산술 논리 장치)를 포함하여, 복잡한 작업을 빠르게 처리하는 데 최적화되어 있다. CPU는 제어 유닛과 캐시, DRAM을 통해 다양한 작업을 효과적으로 관리한다.ㅁGPU: 많은 수의 작은 코어(core)를 가지고 있어서, 병렬 연산을 통해 대량의 데이터를 동시에 처리하는 데 최적화되어 있다.   ㅁCUDA(Compute Unified Device Architecture): NVIDIA에서 개발한 병렬 컴퓨팅 플랫폼이자 프로그래밍 모델로, GPU(Graphics Processing Unit)를 활용하여 고성능 연산을 수행할 수 있게 하는 기술이다. 일반적으로 CPU만으로 수행하기 힘든 대규모 연산을 GPU의 수많은 코어를 통해 병렬 처리함으로써 성능을 크게 향상시킬 수 .. 2024. 10. 31.
[UNIX/Linux] ep9) 파이프 [ep9의 학습목표]1. 파이프를 이용한 IPC 기법2. 이름 없는 파이프를 이용한 통신 프로그램 작성3. 이름 있는 파이프를 이용한 통신 프로그램 작성 ㅁ파이프('|'): 두 프로세스 사이에서 한 방향으로 통신할 수 있도록 지원하는 것파이프는 이름 없는 파이프(익명 파이프)와 이름 있는 파이프로 구분된다 셸에서 파이프 기능은 한 명령의 표준 출력을 다음 명령에서 표준 입력으로 받아 수행하는 것을 의미한다cat test.c | more # 앞에 있는 명령인 cat test.c의 표준 출력을 다음 명령인 more의 표준 입력으로 사용 위 예를 실행하면 test.c를 화면 단위로 출력한다 ㅁ이름 없는 파이프(pipe)• 특별한 수식어 없이 그냥 파이프라고 하면 일반적으로 이름 없는 파이프(익명 파이프).. 2024. 10. 31.
[UNIX/Linux] ep8+) 시그널 함수 실습 ex1. 자신에게 SIGUSR1 시그널을 보내는 프로그램을 작성하시오. 시그널을 보낸 후 출력문을 넣어 출력이 되는지, 프로그램을 실행하면 어떤 메시지가 출력되는지 확인하시오 (kill을 사용)kill (getpid(), SIGUSR1);#include #include #include #include int main() { printf("Send SIGUSR1 Signal to me.\n"); kill(getpid(), SIGUSR1); printf("After SIGQUIT Signal.\n"); return 0;}   ex2. SIGILL 시그널의 기본 처리는 코어 덤프이다. SIGILL 시그널을 처리하는 시그널 핸들러를 작성해 실행하면 코어 덤프가 발생하지 않는지 확인하시오 (.. 2024. 10. 24.
[UNIX/Linux] ep8) 시그널 https://claremont.tistory.com/entry/%EC%BB%B4%ED%93%A8%ED%84%B0-%EA%B5%AC%EC%A1%B0-ep4-CPU%EC%99%80-%EC%9D%B8%ED%84%B0%EB%9F%BD%ED%8A%B8 [컴퓨터 구조] ep4) CPU와 인터럽트컴퓨터의 두뇌 CPU == 프로세서에 대해서 자세히 알아보자ㅁCPU(Central Processing Unit) = ALU + 제어장치 + 레지스터  ㅇALU(Arithmetic Logic Unit) 산술연산장치 ALU는 플래그를 내보낸다 아래의 표를 보자 claremont.tistory.com우리가 흔히 사용하는 ctrl + c 가 바로 비동기적 인터럽트 명령이고, 더 자세히 들어가면 SIGINT 시그널을 보내 프로그램에.. 2024. 10. 23.
[UNIX/Linux] ep7+) 프로세스 생성과 실행 함수 실습 (ex1_argc.c 파일)#include #include #include #include #include char* usage = "Usage : Directory Suffix\n";int my_double_ls(const char*, char*);int match(const char*, const char*);int main(int argc, char** argv) { if (argc != 3) { fprintf(stderr, usage); exit(1); } my_double_ls(argv[1], argv[2]); exit(0); return 0;}int my_double_ls(const char* name, char* suffix) { st.. 2024. 10. 22.
[UNIX/Linux] ep7) 프로세스 생성과 실행 (복습) ㅁUNIX 계열의 프로세스 생성 기법 - fork와 exec로 복제와 옷 갈아입기 - 부모 프로세스: fork() 자신의 복사본을 자식 프로세스로 생성(복제) - 자식 프로세스: exec() 자신의 메모리 공간을 새로운 프로그램으로 덮어씀(옷 갈아입기) ※ fork를 통해 복사된 자식 프로세스도 fork를 할 수 있다 https://claremont.tistory.com/entry/ep2-%ED%94%84%EB%A1%9C%EC%84%B8%EC%8A%A4process [운영체제] ep2) 프로세스(process)ㅁ프로세스(process): 실행 중인 프로그램 (실행/스케줄링의 단위 및 자료구조)보조기억장치에 저장된 프로그램을 메모리에 적재하고 실행하는 순간, 그 프로그램은 프로세스가 된다그리고 이.. 2024. 10. 21.
[UNIX/Linux] ep6+) 프로세스 정보 함수 실습 ex1. 명령행 인자로 PID를 입력받아 해당 프로세스가 속한 프로세스 그룹 ID(PGID)를 출력하는 프로그램을 작성하시오. 명령행 인자로 지정된 PID가 0이면 현재 프로세스를 대상으로 PPID와 PGID를 구한다#include #include #include int main(int argc, char* argv[]) { if (argc == 1) { printf("Input pid.\n"); exit(1); } int pid; pid = atoi(argv[1]); if (pid == 0) { pid = getpid(); printf("PPID : %d\n", getppid()); } printf("PID : %d.. 2024. 10. 14.
[UNIX/Linux] ep6) 프로세스 정보 ㅁ디렉터리 트리의 산책ㅇ ftw (test1.c): 주어진 디렉터리부터 출발하여 그 디렉터리 아래에 있는 모든 파일과 부 디렉터리에 대한 작업을 수행• int ftw(const char* path, int(*func)(), int depth) • int func(const char* name, const struct stat* sptr, int type)- FTW_F : 객체가 하나의 파일임- FTW_D : 객체가 하나의 디렉토리임- FTW_DNR : 객체가 읽을 수 없는 하나의 디렉터리임- FTW_SL : 객체가 하나의 심볼형 링크임- FTW_NS : 객체가 심볼형 링크가 아니며, 따라서 stat 루틴이 성공적으로 수행될 수 없는 객체임 • 트리의 산책이 종료되는 경우- leaf에 도달- ftw에서 오.. 2024. 10. 12.
[UNIX/Linux] ep5) 시스템 정보 ㅁ시스템 정보 검색: 기본 환경과 관련된 구조체나 상수를 사용해 정보를 검색하드웨어와 운영체제의 종류 정보, 메모리 페이지의 크기나 최대 패스워드 길이와 같은 시스템 환경 설정 정보 등 [시스템 정보 검색 함수]• uname() 함수: 설치된 운영 체제 정보와 같은 시스템 기본 정보를 검색할 수 있음• sysconf() 함수: 시스템 자원 정보를 검색할 수 있음 (conf: configuration)• fpathconf() 함수와 pathconf() 함수: 파일과 디렉터리 자원 정보를 검색할 수 있음  uname 명령: 운영체제 기본 정보 검색• 시스템에 설치된 운영체제의 이름과 버전, 호스트명, 하드웨어 종류 등을 검색하려면 uname 명령을 사용• uname 명령에 -a 옵션을 지정하면 현재 시스템에.. 2024. 10. 10.