일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- CV
- 회귀
- 턱걸이
- python
- 영상처리
- c
- 알고리즘
- 시스템프로그래밍
- 운영체제
- shell
- C언어
- Windows 10
- linux
- Windows10
- 프로그래밍
- 학습
- error
- 쉘
- 코딩
- 백준알고리즘
- 공부
- 프로세스
- OpenCV
- TensorFlow
- Computer Vision
- 텐서플로우
- 딥러닝
- 백준
- C++
- 리눅스
- Today
- Total
목록시스템프로그래밍 (7)
줘이리의 인생적기
프로세스가 파일을 읽고 쓸 때에 굉장한 메커니즘이 필요한다. 메모리 특정 공간에 파일을 미리 올려두고, 접근하기 위해서 프로세스가 메모리에 왔다갔다 할 수 있는 파일 처리 성능 개선 기법에 대해 알아보자 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(접근 불가) 네 번째 인자 : ..
압축 명령 tar에 대해서 알아보자 70년대부터 있던 명령어이다. 이 명령어는 여러 파일을 묶는 명령어였으나, 압축까지 할 수 있도록 옵션을 추가했다. 주요 옵션은 x : 묶음 해제 c : 파일 묶음 v : 묶음/해제 과정을 화면에 표시 z : gunzip을 사용 f : 파일 이름 지정 압축 시 tar -cvzf 압축된파일이름 압축할파일이나폴더명 압축 풀 때 tar -xvzf 압축해제할이름

wait()시스템콜이 있는 이유는 fork()함수 호출 시 자식 프로세스가 종료할 때까지 부모 프로세스가 기다린다. 기다리지 않으면 부모 프로세스가 먼저 끝나서 자식 프로세스는 고아프로세스가 되어버린다. 리턴값은 자식프로세스의 pid이다. copy-on-write copy-on-write는 fork() 시스템콜이 4GB를 복사하는데 시간이 너무 오래걸린다는 문제점에서 출발했다. 자식프로세스 생성 시에 복사를 하지 않고 우선 부모 프로세스 페이지를 우선 사용한다. 읽기가 아니라 쓰기를 할 때 해당 페이지를 물리메모리에서 복사하고 분리한다. 분리한 후에는 업데이트된 물리 메모리의 page pointer를 자식 프로세스의 페이지테이블에서 업데이트한다. 장점은 프로세스 생성 시간을 줄일 수 있으며, 새롭게 할당..
하드 링크, 소프트 링크를 알아보기 전 다시 한번 복습해야 하는 명령어이다. cp 파일이름 새로운파일이름 : 파일을 새로운 파일 이름으로 바꾸고 복사 cp -rf 폴더이름/ 새로운폴더이름 : 폴더 내 모든 파일들을 새로운 폴더 이름으로 바꾸고 복사 rm 파일이름 : 파일 삭제 rm -rf 폴더이름 : 폴더 내 모든 파일 삭제 하드링크 ln 파일이름 새로운파일이름 : 똑같은 inode값을 가진 파일이 생성된다. 외관상으로 보기에는 일반적인 cp(copy)와 똑같아 보인다. ls -i (파일 inode 확인 명령어)를 사용하여 inode를 확인하면 cp로 생성된 파일만 inode값이 다른 것을 확인할 수 있다. ls -al 로 권한정보를 확인하면 맨 앞 기호는 -로 표기된다. 또, 기존 파일을 수정하면 하드..
foreground process : 쉘(shell)에서 해당 프로세스 실행을 명령한 후, 해당 프로세스 수행 종료까지 사용 자가 다른 입력을 하지 못하는 프로세스 background process : 사용자 입력과 상관없이 실행되는 프로세스 이 두개의 차이가 어떤 것인지 알기 위해서는 터미널창에 일반적인 실행방법을 생각해보면 된다. 터미널 창을 하나 켜고 실행파일을 하나 실행 했을 때, 우리는 다른 명령어를 입력하지 못한다. 그것이 foreground process이다. background process를 실행하고 싶을 때는 마지막에 &를 붙이면 된다. 그러면 process는 실행하고 터미널창에 또 다른 명령어가 입력가능한 상태가 된다. 이때 등장하는 [숫자] 숫자 의 의미는 [job number] P..
쉘(shell) : 사용자와 컴퓨터 하드웨어 또는 운영체제 간의 인터페이스 쉘은 사용자의 명령을 해석해서 커널에 명령을 요청해주는 역할을 한다. 관련된 시스템콜을 사용해서 프로그래밍되어 있다. 종류로는 bash, sh, csh, ksh가 있다. ksh(korn shell)은 유닉스에 가장 많이 사용되는 쉘이다. bash(Bourne-Again Shell)은 현재 리눅스의 가장 기본인 쉘이다. 리눅스의 명령어는 쉘이 제공하는 명령어들이며, 다음 장에서부터 배울 기본 명령어들은 bash에서 제공하는 기본 명령어이다.
리눅스는 윈도우와 다르게 전역 네임스페이스를 사용한다. - 윈도우 : C:/windows/... - 리눅스 : /home/사용자이름/... 파일 리눅스의 파일은 inode 고유값과 자료구조에 의해 주요 정보를 관리한다. 프로세스 리눅스의 실행파일 포멧은 ELF(Executable and Liable Format)이다. 시스템콜 호출을 통해 다양한 시스템 리소스 처리를 가능토록 구성되어 있다. 가상 메모리를 지원한다. 각 프로세스는 pid 고유값으로 구분한다. init 프로세스를 기반으로 fork() 시스템콜을 사용해서 신규 프로세스가 생성된다. 권한 운영체제는 사용자와 리소스 권한을 관리하며, 리눅스는 사용자와 그룹으로 권한을 관리한다. root는 슈퍼관리자 파일마다 소유자, 그룹, 소유자와 그룹이 아닌..