LINUX
Posts
477 postsCentOS 리눅스에서 rpm 패키지를 설치하지 않고 다운로드하기
CentOS/RedHat 리눅스에서 S/W 패키지(rpm 패키지)를 설치하지 않고 다운로드만 할 경우, 터미널창에서 아래와 같이 작업하면 되겠다. 기본 설치 관리자 프로그램인 yum을 이용할 경우 아래와 같이 가능하다. --downloadonly 옵션으로 다운로드만 하도록 지정하고 --downloaddir 옵션으로 저장할 디렉토리를 지정한다. # firefox 패키지를 /home/john/Downloads 디렉토리에 다운로드 yum install --downloadonly --downloaddir=/home/john/Downloads/ firefox 만약 해당 패키지가 이미 설치되어 있는 상태에서 다운로드를 시도한다면 위의 방법으로는 되지 않는다. yum에서 패키지 설치 여부를 검사하므로,
[라즈베리파이] 시스템 콜(시스템 호출)은 왜 필요하나?
시스템 콜은 유저 모드에서 커널 모드로 진입하는 동작입니다. 다른 관점으로 시스템 콜은 유저 공간과 커널 공간 사이 가상 계층이자 인터페이스라고 볼 수도 있습니다. 이 계층은 다음과 같은 특징이 있습니다.1. 시스템 안정성과 보안을 지킬 수 있습니다. 유저모드에서 어플리케이션이 커널 공간에 아무런 제약없이 접근한다고 가정합시다. 실수로 어플리케이션이 커널 코드 영역 메모리를 오염을 시키면 시스템은 오동작할 가능성이 높습니다. 2. 유저 어플리케이션에서 추상화된 하드웨어 인터페이스를 제공합니다. 유저 모드에서 구동 중안 어플리케이션 입장에서 하나의 파일 시스템 위에서 구동 중인 것으로 착각하게 합니다. 3. 시스템 콜 구현으로 유저 어플리케이션의 호환성과 이식성을 보장할 수 있습니다. 리눅스 시스템은 시스
리눅스 bash 스크립트에서 텍스트 파일을 읽어서 한 줄씩 배열(array) 원소로 할당하기 - 2 (readarray)
bash 스크립트에서 텍스트 파일의 각 행을 배열(array)에 할당하는 방법을 예전에 기록해 두었었는데(여기에), 훨씬 더 간단하고 편리한 방법을 발견했다. 예전에 적었던 방법은 한줄씩 구분해서 할당하기 위해 내부 필드 구분자(internal field separator) 설정(변수 IFS)을 바꿔야 해서 귀찮았는데, readarray라는 명령을 이용하면 이런 과정이 필요 없다. # test.txt 파일을 읽어서 각 행을 배열 arr에 할당 readarray arr < test.txt # 첫번째 행 출력 echo "${arr[0]}" 리눅스 bash 스크립트의 배열에 대한 기본적인 내용은 이전 게시물을 참고하자. 여기로
[리눅스커널] 프로세스는 어떻게 생성하나? - _do_fork() 함수 호출
프로세스에 대한 이해를 하려면 프로세스가 어떻게 생성되는 지 알면 좋습니다. 프로세스 생성 과정에서 프로세스를 관리하는 자료구조 관계를 알 수 있기 때문입니다. 리눅스에서 구동되는 프로세스는 크게 유저 레벨에서 생성된 프로세스와 커널 레벨에서 생성된 프로세스가 있습니다. 유저 레벨에서 생성된 프로세스는 유저 공간에서 프로세스를 생성하는 라이브러리(glibc) 도움을 받아 커널에게 프로세스 생성 요청을 합니다. 커널 프로세스는 kthread_create() 함수를 호출해서 커널 내부에서 프로세스를 생성합니다. 커널 프로세스는 커널 스레드라고 부르며 커널 내부에서 스레드를 직접 관리합니다. 공통으로 리눅스에서 생성된 프로세스는 _do_fork() 함수를 호출합니다. 프로세스 생성하는 핵심함수는 _do_



