분류 전체보기 123

User ID/Group ID

ls -l 로 출력 되는 항목을 보면 , 다음과 같이 카테고리를 나눌 수 있다. ben@ben-ubuntu-server:~/share/apue_github/apue/ben$ ls -l total 180 -rw-rw-r-- 1 ben ben 21 Jun 15 08:14 data -rwxrwxr-x 1 ben ben 17632 Jun 17 02:26 fig1_3 -rw-rw-r-- 1 ben ben 397 Jun 15 07:21 fig1_3.c 1) 파일 유형. '-' 는 일반파일, 'd'는 디렉토리, 'b' 는 블록 디바이스, 'c'는 문자 디바이스, 'I'는 링크를 뜻한다. 2) 허가권 'r' 은 read able , 'w' 는 write able , 'x' sms execute able 이다. 3자리씩..

Linux_system 2022.08.19

apue.3e 컴파일 하기

Advanced Programming in the UNIX Environment Thrd Edition 의 예제를 compile 하려면 다음과 같이 하면 된다. Source code download : https://github.com/vdpa4me/apue.git vdpa4me/apue Example of Advanced Programming in the UNIX Environment - vdpa4me/apue github.com /apue/apue.3e/lib 로 이동한다. Makefile 을 editor 로 열어서, 아래 부분을 수정한다. PLATFORM=$(shell $(ROOT)/systype.sh) 부분을 PLATFORM=linux 로 변경한다. (systype.sh 실행시 permission..

Linux_system 2022.08.19

Linux , caller (호출자) 가 누구인지 아는 방법

어떤 함수 a() 가 다양한 프로세스에 의에 빈번하게 호출 된다면, log 로 남길 때, 누가 본인을 호출 했는지 확인 하고자 하는 경우가 있다. 실험 환경은 Ubuntu Linux 5.3.1 계열의 x86_64 아키텍쳐 이다. backtrac 를 사용하는 예) #include #include #include #include int nptrs; void *buffer[BT_BUF_SIZE]; char **strings; nptrs = backtrace(buffer, BT_BUF_SIZE); rintf("backtrace() returned %d addresses\n", nptrs); strings = backtrace_symbols(buffer, nptrs); if (strings == NULL) { p..

Linux_system 2022.08.19

Linux 가상 메모리의 응용 #1 - file map

가상 메모리의 응용 파일 맵(file map) 일반적으로 프로세스가 파일에 접근할 때는 파일을 연 뒤에 'read()', 'write()', 'lseek()' 등의 시스템 콜을 사용한다. 뿐만 아니라 Linux에는 파일의 영역을 가상 주소 공간에 메모리 매핑하는 기능이 있다. mmap() 함수를 특정한 방법으로 호출하면 , 파일의 내용을 메모리에 읽어 들여 그 영역을 가상 주소 공간에 매핑할 수 있다. testfile 은 "hello" 라는 text를 담고 있는 file 이다. 다음 코드를 작성하고 실행하면 , 아래와 같이 file을 읽어 들이고 mmap() 함수를 통해 file mapping 을 하면, 파일의 내용을 메모리에 읽어 들여 그 영역을 가상 주소 공간에 매핑 할 수 있다. int fd; fd..

Linux_system 2022.08.19

Linux Memory 관리

>free free명령어 사용으로, 시스템의 총 메모리의 양과 , 사용 중인 메모리의 양을 알 수 있다. 모든 단위는 KB 임 total : 시스템에 탑재된 전체 메모리 용량임. 위 예시에서는 16GB 임 free : 표기상 이용하지 않는 메모리 buff/cache : 버퍼 캐시 또는 페이지 캐시가 이용하는 메모리. 시스템의 빈 메모리 (free) 가 부족하면 커널이 해제함 available : 실질적으로 사용 가능한 메모리. free 필드값의 메모리가 부족하면 해제되는 커널 내의 메모리 영역 사이즈를 더한 값이다. 해제될 수 있는 메모리에는 버퍼 캐시나 페이지 캐시의 대부분 혹은 다른 커널 내의 메모리 일부가 포함된다. >sar -r 1 1초 단위로 메모리에 관련된 통계 정보를 얻을 수 있다. free..

Linux_system 2022.08.19

sar : 프로세스(CPU core) 가 어떤 mode 로 작업 중인가?

설치: >sudo apt-get install sysstat 각 CPU core가 어떤 종류의 처리를 싱행하고 있는지 1초 단위로 측정함 >sar -P ALL 1 중간에 Ctrl+c 를 누르면, 평균 값이 저장 되며, sar은 종료 됨. %user + %nice : user 프로세스 %system : kernel 프로세스 >sar -P ALL 1 1 1초마다 1회만 출력 하도록 하기 무한 loop을 도는 loop 을 background로 실행하고, sar 출력 >./loop & >sar -P ALL 1 1 1초 동안 core 6 가 100% user 프로세스로 동작함 >kill 9082 //loop 를 죽인다. 이번에는 user 프로세스와 kernel 프로세스를 적당이 섞어 쓰도록 다음과 같은 코드를 작..

Linux_system 2022.08.19

strace : 어떠한 system call 이 호출되었는가?

//hello.c #include int main(void) { puts("hello world"); return 0; } >gcc -o hello ./hello.c >strace -o hello.log ./hello >cat hello.log printf("hello world %s\n","Man"); 각종 system call 처리에 걸린 시간을 microsecond 단위로 정밀하가 측정하여 보여 준다. >strace -T -o hello.log ./hello "hello world\n" 문자 처리에 32 microsecond 가 걸렸음을 알 수 있다. 출처 : 실습과 그림으로 배우는 리눅스 구조 , 다케우치 사토루저

Linux_system 2022.08.19

이 분야의 필독서 / 필독 사이트

books System Programming Advanced Programming in the UNIX Environment (APUE) 인사이드 안드로이드 리눅스 커널 심층분석(로버트러브) 리눅스 커널의 이해 (다니엘 보베이) Linux Device Driver Linux Device Drivers, Third Edition [LWN.net] This is the web site for the Third Edition of Linux Device Drivers, by Jonathan Corbet, Alessandro Rubini, and Greg Kroah-Hartman. For the moment, only the finished PDF files are available; we do intend t..

Linux_system 2022.08.19

size_t 와 string::size_type

size_t 는 또는 std에 정의 되어 있다. sizeof() 함수의 return 형 이다. unsigned 데이터 타입으로, 장비가 32bit 이라면, 32bit 으로 표현 가능한 가장 큰 수 장비가 64bit 이라면, 64bit 으로 표현 가능한 가장 큰 수 를 담을 수 있다. string::size_type string.size() 함수의 return 형 이다. string 이 담을 수 있는 최대 문자 개수를 저장할 수 있는 데이터 타입. 역시 장비가 지원하는 가장 큰 값을 담을 수 있다.

Linux_system 2022.08.19