일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 공부
- linux
- OpenCV
- 백준알고리즘
- Windows10
- Windows 10
- 영상처리
- 프로그래밍
- 턱걸이
- C++
- c
- 학습
- 시스템프로그래밍
- 코딩
- 운영체제
- 쉘
- C언어
- 텐서플로우
- python
- Computer Vision
- 리눅스
- error
- 알고리즘
- shell
- 백준
- 딥러닝
- TensorFlow
- CV
- 회귀
- 프로세스
- Today
- Total
목록전체 글 (161)
줘이리의 인생적기
퍼셉트론을 시작으로 딥러닝에 대해서 공부하고 포스팅해보려고 합니다 퍼셉트론 먼저 퍼셉트론에 대해서 알아보자면, 퍼센트론은 가장 단순한 형태의 신경망입니다 싱글 레이어로 구성되어 있으며, input, weight, activation과 output으로 구성되어 있습니다 X는 input을 뜻하며, W는 각 input들의 가중치를 뜻합니다 Weighted sum은 bias를 포함하여 각 input들의 값과 가중치 값을 각각 곱하고 최종으로 더해서 나온 값이며, Activation은 Weighted Sum 값에 activation 함수를 적용한 값입니다. 활성화 함수 종류는 Step function, Sigmoid, ReLU등이 있다고 합니다. 나중에 깊게 다뤄보도록 하겠습니다! 퍼셉트론 학습 퍼셉트론 학습은 ..
프로세스가 파일을 읽고 쓸 때에 굉장한 메커니즘이 필요한다. 메모리 특정 공간에 파일을 미리 올려두고, 접근하기 위해서 프로세스가 메모리에 왔다갔다 할 수 있는 파일 처리 성능 개선 기법에 대해 알아보자 mmap 함수로 메모리에 올릴 수 있으며, 리턴값으로 성공과 실패를 알 수 있다. void *mmap(void *start, size_t length, int prot, int flags, int fd, off_t offset) 첫 번째 인자 : 스타트 지점 지정 보통 NULL 이나 0 사용 두 번째 인자 : 길이 지정 세 번째 인자 : 보호 모드 설정 PROT_READ(읽기 가능) / PROT_WRITE(쓰기 가능) / PROT_EXEC(실행 가능) / PROT_NONE(접근 불가) 네 번째 인자 : ..
POSIX스레드라고 부르며, Pthread[피스레드]라고도 부른다. pthread는 저수준 API로 100여개의 함수를 제공한다. 유닉스 시스템의 핵심 스레딩 라이브러리이다. 헤더파일에 정의되어 있으며, pthread_로 모든 함수가 시작된다. 스레드 관리(생성, 종료, 조인, 디테치)와 관련된 함수, 동기화(뮤텍스)와 관련된 함수를 주로 익혀두면 좋다. 기본 라이브러리(glibc)와 분리된 libpthread 라이브러리에 구현되어 있어서 컴파일시에 -pthread 옵션이 필요하다. gcc -pthread test.c -o test 스레드 생성 pthread_t thread1; void *thread_function(void *ptr); ret = pthread_create(&thread1, NULL, ..
쉘을 사용하여 프로그래밍 가능하다. (DevOps를 위해 기본적으로 익혀둘 필요 있음) 쉘 스크립트가 필요할 때는, 서버가 다운되어 확인해보니 로그파일을 업데이트할 저장공간이 남지 않아 프로그램이 비정상 종료되었다. 자동으로 오래된 로그파일을 삭제하는 쉘 스크립트를 생성하고 주기적으로 실행함으로써 서버가 다운되는 문제를 해결할 수 있다. 파일의 가장 첫 라인은 #!/bin/bash로 시작한다. 실행 권한을 가지고 있어야 하며, 일반적으로 .sh의 확장자를 가지고 있다. 사전에 정의된 지역변수를 알아보자. $$ : 쉘의 프로세스 번호 $0 : 쉘스크립트 이름 $1 ~ $9 : 명령어의 해당 인수 $* : 쉘 이름 제외한 명령어의 모든 인수리스트 $# : 쉘 이름 제외한 인수의 개수 $? : 최근 실행한 명..
압축 명령 tar에 대해서 알아보자 70년대부터 있던 명령어이다. 이 명령어는 여러 파일을 묶는 명령어였으나, 압축까지 할 수 있도록 옵션을 추가했다. 주요 옵션은 x : 묶음 해제 c : 파일 묶음 v : 묶음/해제 과정을 화면에 표시 z : gunzip을 사용 f : 파일 이름 지정 압축 시 tar -cvzf 압축된파일이름 압축할파일이나폴더명 압축 풀 때 tar -xvzf 압축해제할이름
시그널(signal)은 커널 또는 프로세스에서 다른 프로세스에 어떤 이벤트가 발생되었는지 알려주는 기법이다. Ctrl + C로 프로세스를 종료시키거나, Ctrl + Z 로 프로세스를 중지시키는 것이 시그널 사용의 예이다. 시그널 종류는 kill -l 명령어를 통해 알 수 있다. SIGKILL 프로세스 죽이는 시그널 SIGALARM 알람 발생시키는 시그널 SIGSTP 프로세스 멈추는 시그널 SIGCONT 멈춰있는 프로세스 다시 실행시키는 시그널 SIGSEGV 프로세스가 다른 메모리영역 침범 시그널 각 프로세스에서 시그널 처리에 대해 동작 설정이 가능하다 - 시그널을 무시하게 - 시그널을 블럭시키게(블럭 풀어지면 프로세스에서 시그널 처리) - 프로그램 안에 등록된 시그널 핸들러로 재정의한 특정 동작 수행하게..
nice(), setpriority()라는 함수로 프로세스의 우선순위를 변경할 수 있다. root가 소유한 프로세스만 우선순위를 높일 수 있고, 다른 프로세스는 우선순위를 낮출 수만 있다. (스케쥴링 방식에 따라 순위 변경이 적용 안될 수 있음) #include int nice(int inc); #include int setpriority(int which, id_t two, int value); 위 전처리기와 함수 원형을 사용하여 두가지 방법으로 우선순위를 변경할 수 있다. #include int getpriority(int which, id_t who); 위 함수원형을 가지고 프로세스의 우선순위를 확인해볼 수 있다.
wait()시스템콜이 있는 이유는 fork()함수 호출 시 자식 프로세스가 종료할 때까지 부모 프로세스가 기다린다. 기다리지 않으면 부모 프로세스가 먼저 끝나서 자식 프로세스는 고아프로세스가 되어버린다. 리턴값은 자식프로세스의 pid이다. copy-on-write copy-on-write는 fork() 시스템콜이 4GB를 복사하는데 시간이 너무 오래걸린다는 문제점에서 출발했다. 자식프로세스 생성 시에 복사를 하지 않고 우선 부모 프로세스 페이지를 우선 사용한다. 읽기가 아니라 쓰기를 할 때 해당 페이지를 물리메모리에서 복사하고 분리한다. 분리한 후에는 업데이트된 물리 메모리의 page pointer를 자식 프로세스의 페이지테이블에서 업데이트한다. 장점은 프로세스 생성 시간을 줄일 수 있으며, 새롭게 할당..