일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Redirection
- 3D 배경 그래픽
- bash shell 조건문
- background process
- atexit()
- 뷰포트
- 섭페
- bash shell 변수
- foreground process
- houdini
- Standard Stream
- 섭페에서 텍스처 추출
- wait 시스템 콜
- 후디니
- ps 명령어
- exit()
- substance painter
- 생활코딩 복습
- bg 명령어
- bash shell 반복문
- pane & desktop
- Symmetry
- exec 시스템 콜
- 개체 외곽 하이라이트 기준선 없애는 법
- mmap
- 3Ds max 기초
- fork 시스템 콜
- copy-on-write
- 추가 업로딩 중
- msync
- Today
- Total
목록코딩 (34)
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이 사용되고 있다. - 쉘 스크립트를 사용하는 경우 서버가 다운되어서 확인해보니 서버 저장공간이 하나도 남아 있지 않았다. 이유는 로그 파일이 많이 쌓였기 때문이었다. 로그 파일이 업데이트가 안되어 관련 프로그램이 비정상적으로 종료되었다. 어떻게 하면 자동으로 오래된, 혹은 일정 시간 경과한 로그 파일을 삭제할 수 있을까?? 이런 문제를 간단한 쉘 스크립트 생성 및 주기적 실행으로 해결할 수 있다. * 로그 파일 : 서버에 어떤 일이 있었고 어떤 동작을 했었는지 기록해놓는..
리눅스는 POSIX 호환 운영체제다. 리눅스는 POSIX에서 정한 시스템콜을 제공하고 있다. #리눅스 환경에서 프로세스 생성 과정 부모 프로세스 안에서 fork () 명령어를 넣고 동일한 데이터와 코드를 가진 별도의 프로세스 공간을 생성하고, (자식 프로세스) 부모/자식 프로세스 각각 fork의 () 함수 다음 줄 code에 Program Counter가 놓여서 리턴 값이 pid 값을 주는데 pid 값을 기반으로 부모/자식 프로세스를 구분 지을 수 있고 조건문을 사용해서 자식 프로세스인 경우에는 exec () 프로그램(시스템 콜)으로 실행 파일을 인자에 넣어서 실행 시키면 해당 코드 이미지로 자식 프로세스가 덮어씌워지고 프로세스가 다시 처음부터 실행하게 되어 덮어씌워진 코드 이미지를 읽어나가게 된다. 조..
#copy-on-write 리눅스 프로세스 생성과 관련하여 생성 속도를 높이게 해주는 시스템 콜이다. 해당 기능을 이해 하기 위해서는 1. 리눅스 프로세스 구조와 2. 가상 메모리 시스템 간의 메커니즘 이해가 필요하다. #리눅스 프로세스 구조와 가상 메모리 시스템 리눅스에서는 프로세스당 4GB의 가상 메모리가 할당된다. 3(0xc0)~4(0xff)GB 이 공간은 커널 영역으로 여기에 운영 체제가 들어간다. 0~3(0xc0)GB 이 공간은 사용자 영역으로 실행 파일의 이미지가 들어간다. (TEXT, DATA, BSS, HEAP, STACK ) 프로세스 마다 커널 영역이 들어가 있는데 가상 메모리 시스템에 페이징 시스템을 이용하여 각 프로세스 마다 페이지 테이블이 생긴다. (가상 메모리와 물리 메모리의 주소..
#프로세스의 기본 구조 STACK = 함수 처리를 위한 영역 HEAP = 동적 메모리 DATA = 초기값이 있는 변수값 (int i=0;) BSS = 초기값이 없는 변수값 (int i;) TEXT = Code, 실행 코드 이미지 이 기본 구조에서 STACT, HEAP은 Code가 실행되면서 줄어들거나 커지거나 하지만 DATA, BSS, TEXT는 컴파일시 결정되는 영역이다. 아주 간단하게는 전체 메모리 공간을 만들고 프로세스 이미지(코드 이미지)를 해당 공간에 업로드하고 실행 시작(STACK, HEAP 처리)하므로써 프로세스를 생성한다고 볼 수 있다. #fork() 유닉스, 리눅스 시스템 콜 중 하나 새로운 프로세스 공간을 별도로 만들고, fork() 시스템 콜을 호출한 부모 프로세스 공간의 데이터을 모..
#Program, Precess, Thread 개념 프로그램 binary, code image, 응용 프로그램, Application 또는 실행 파일을 의미한다. 프로세스 실행 중인 프로그램을 의미한다. (메모리 적재 + 프로세스 상태 정보,PCB 포함) 스레드 리눅스 프로세스는 기본 스레드를 포함한다. 싱글스레드 프로세스 - 기본 프로세스 멀티스레드 프로세스 - 여러 스레드가 있음 #pid 최대값 각 프로세스는 해당 시점에 유니크한 pid를 가진다. 형태는 숫자이고 pid 최대값은 32768이다. 32768이 최대값인 이유는 부호형(signed) 16비트 정수값을 사용하기 때문인데 2의 15 제곱 승이 32768 이다. 다음의 명령어로 32768인 것을 확인할 수 있다. sudo vi /porc/sys..