일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- mmap
- 3D 배경 그래픽
- 생활코딩 복습
- 섭페
- Symmetry
- copy-on-write
- Redirection
- background process
- 추가 업로딩 중
- bash shell 변수
- Standard Stream
- atexit()
- bg 명령어
- 후디니
- 뷰포트
- bash shell 반복문
- ps 명령어
- msync
- pane & desktop
- bash shell 조건문
- wait 시스템 콜
- 섭페에서 텍스처 추출
- substance painter
- 3Ds max 기초
- 개체 외곽 하이라이트 기준선 없애는 법
- houdini
- exec 시스템 콜
- foreground process
- exit()
- fork 시스템 콜
- Today
- Total
목록분류 전체보기 (64)
Researcher to Developer
#Pthread 리눅스에서 Thread를 생성하고 관리하는 함수 - thread 표준 API POSIX 스레드 또는 Pthread 라고 부른다. - Pthread API 저수준 API로 100 여개의 함수 제공 복잡하지만 유닉스 시스템 핵심 스레딩 라이브러리 다른 스레딩 솔루션도 결국 Pthread 를 기반으로 구현되어 있으므로 익혀둘 가치가 있다. pthread API는 Semaphore를 포함하지 않는다. 리눅스 C언어에서는 어떻게 Pthread를 사용할 수 있을까? #Pthread 라이브러리 헤더 파일 모든 함수는 pthread_ 로 시작한다. 크게 두 가지 그룹으로 나뉜다. 1. 스레드 관리 : 생성, 종료, 조인, 디태치 함수 등 2. 동기화 : 뮤텍스 등 동기화 관련 함수 기본 라이브러리 (g..
# 쉘 스크립트 서버 작업 자동화 및 운영(DevOps)을 위해 기본적으로 익혀둘 필요가 있다. 쉘 명령어를 기본으로 하되, 몇 가지 문법이 추가된 형태 시스템 프로그래밍에서 꼭 익히는 내용 중 하나이다. 최근 perl 이나 python이 사용되고 있다. - 쉘 스크립트를 사용하는 경우 서버가 다운되어서 확인해보니 서버 저장공간이 하나도 남아 있지 않았다. 이유는 로그 파일이 많이 쌓였기 때문이었다. 로그 파일이 업데이트가 안되어 관련 프로그램이 비정상적으로 종료되었다. 어떻게 하면 자동으로 오래된, 혹은 일정 시간 경과한 로그 파일을 삭제할 수 있을까?? 이런 문제를 간단한 쉘 스크립트 생성 및 주기적 실행으로 해결할 수 있다. * 로그 파일 : 서버에 어떤 일이 있었고 어떤 동작을 했었는지 기록해놓는..
#시그널 (signal) 시그널은 IPC 기법 중 하나로 사용될 수 있지만 그 외 사용 방법도 있다. 유닉스에서 30년 이상 사용된 전통적인 기법이다. 커널 또는 프로세스에서 다른 프로세스에 어떤 이벤트가 발생되었는지를 알려주는 기법 시그널 사용 예 Default로 정의되어 있는 시그널이 OS에서 해당 프로세스에 전달 된다. Ctrl + C : 프로세스 종료시키기 Ctrl + Z : 프로세스가 background 프로세스로 바뀐다. #주요 시그널 시그널 종류와 각 시그널에 따른 기본 동작이 미리 정해져 있다. 대부분 내부적으로 시그널 번호가 매핑되어 있다. SIGKILL 프로세스를 죽여라 (슈퍼관리자가 사용하는 시그널로, 프로세스가 어떤 경우든 죽음) SIGALARM 알람을 발생한다. SIGSTP 프로세..
ipcs 현재 커널 공간에 생성되어 있는 message queue, 공유 메모리 segments, semaphore arrays 정보를 표시하는 명령어 #공유 메모리 (shared memory) 노골적으로 커널 영역에 메모리 공간을 만들고, 해당 공간을 변수처럼 쓰는 방식 메세지 큐 처럼 FIFO 방식이 아니라 해당 메모리 주소를 변수처럼 접근하는 방식 공유 메모리 key를 가지고 여러 프로세스가 접근이 가능하다. 메세지 큐와 마찬가지로 key를 가지고 있다. #공유 메모리 코드 예제 1. 공유 메모리 생성 #include #include #include int shmget(key_t key, size_t size, int shmflg); // key : 임의 숫자 또는 ftok 함수로 생성한 키 값 /..
#IPC Inter Process Communication Process는 기본적으로 서로 통신할 수 있는 방법이 없다. 둘 다 저장 매체에 접근할 수 있기 때문에 파일을 통해 공유할 수 도 있지만 실시간 공유의 어려움이 있어 추천되지는 않는다. 그래서 등장하게 된 것이 IPC 기법이다. 기본 개념은 이러하다. Process는 커널 공간을 공통적으로 가지고 있고 그렇기 때문에 물리 메모리의 특정한 주소를 공유할 수 있다. 이것이 가능하게 된 근거는 각 페이지 테이블의 커널 공간에 해당되는 주소가 둘 다 동일한 위치를 가리키도록 해놓으면 실제 메모리 상으로 공유가 가능하다. 즉, 커널 공간은 공유가 가능하다는 것을 기반으로 다양한 IPC 기법이 나오게 되었다. IPC 기법 중 pipe와 message qu..
#Priority-Based 스케쥴러 (우선 순위 기반) 종류 정적 우선 순위 스케쥴러 프로세스마다 우선 순위를 미리 지정한다. 동적 우선 순위 스케쥴러 스케쥴러가 상황에 따라 우선 순위를 동적으로 변경한다. #nice() 우선 순위를 변경하는 시스템 콜 프로세스 중 root가 소유한 프로세스만 우선 순위를 높일 수 있다. root로 실행해야만 가능하다. 다른 프로세스는 우선 순위를 낮출 수만 있다. 스케쥴링 방식에 따라 우선 순위가 적용될 수 도 있고 안될 수 도 있다. nice() 함수 사용의 예는 다음과 같다. #include int nice (int inc); // inc 값에 우선순위 값을 넣어주면 해당 우선순위를 우선 실행하도록 되어있다. #getpriority(), setpriority() ..