반응형
반응형
1. 러스트 변수(Rust Variables)- 변수는 기본적으로 불변(immutable)이나, 필요에 따라 변수를 가변(mutable)로 만들 수 있다. 변수가 불변일 때, 어떤 이름에 한번 값이 묶이면 그 값은 바꿀 수 없다. 이를 테스트하기 위해 workspace 안에 variables라는 프로젝트를 만들어 보자.cargo new variables // variables 라는 프로젝트 생성cd variables/src // variables 디렉토리로 이동vi main.rc // src 디렉토리 내 main.rc 파일을 열어 코드 편집 아래의 프로그램을 작성하고 cargo run 명령어로 프로그램을 실행해보자. fn main() { let x = 5; println!("The value ..
오늘은 리눅스 커널 내 pr_debug를 활용해 디버깅 메시지를 출력하는 예제에 대해 써보려고 한다. 1. pr_debug 기본 사용법기본 사용법은 아래와 같고, 출력 메시지는 일반적으로 dmesg나 /var/log/messages를 통해 확인할 수 있다. 근데 CONFIG_DYNAMIC_DEBUG 또는 CONFIG_DEBUG가 활성화되지 않으면 아무 출력도 발생하지 않는다. (pr_debug 동작은 커널 설정(.config)에 의존한다.#include pr_debug("This is a debug message: variable=%d\n", my_variable); (1) CONFIG_DYNAMIC_DEBUG해당 컨피그가 활성화되면 디버깅 메시지가 동적으로 활성화/비활성화 가능하다. 디버깅 메시지를 런..
1. 카고(Cargo)란?카고는 러스트 빌드 시스템 및 패키지 매니저로 코드 빌드나 코드 작성에 필요한 외부 라이브러리(dependency)를 다운로드할 때나, 라이브러리를 제작할 때 겪는 귀찮은 일들을 줄여주는 도구이다. 아래의 명령어로 카고가 설치되어 있는지 확인해보자.cargo --version2. 카고로 프로젝트 생성하기본인이 원하는 디렉토리에서 아래의 명령어로 cargo 디렉토리 및 파일들을 생성해보자. hello_cargo 라는 이름으로 지정했고, 카고는 동일한 이름의 디렉토리 안에 파일들을 생성한다. hello_cargo 안으로 들어가 ls 명령어로 조회해보자.$ cargo new hello_cargo$ cd hello_cargo그럼 위와 같이 hello_cargo 안에 git, Cargo...
1. Rust 설치러스트 설치는 rustup이라는 러스트 버전 및 러스트 관련 도구를 관리하는 커맨드 라인 도구를 이용해 설치할 예정이다. 인터넷 연결이 되어있어야 하며, 쉘에서 아래의 명령어를 통해 rustup을 설치해주자. * 참고: https://rust-kr.org/pages/install/& curl https://sh.rustup.rs -sSf | sh -s 그럼 위와같이 rust가 설치될 것이다. rustc --version 명령어를 통해 나오는 결과를 통해 설치된 러스트의 버전과 hash, 커밋 날짜를 확인할 수 있다. 러스트가 컴파일 결과를 하나의 파일로 묶는데 사용하는 링커(linker)도 필요하므로, 함께 설치해준다. macOS에서는 아래의 커맨드로 C 컴파일러를 설치할 수 있다. 필..
TACACS+는 네트워크 장비에서 인증(Authentication), 권한 부여(Authorization), 계정 관리(Accounting)를 처리하는 프로토콜로 네트워크 운영 엔지니어라면 자주 접할 수 있는 프로토콜이다. 오늘은 Ubuntu에 TACACS+ 서버를 구축하고systemd 서비스 매니저 작성을 해보겠다. 1) TACACS+ 설치1. 먼저 github에서 tac_plus 를 설치한다.https://github.com/facebook/tac_plus.git 2. 아래 명령어를 통해 tacacs+ 를 설치한다.- configure가 실행되지 않는 경우 build-essential, libwrap0-dev, libpam0g-dev, libssl-dev 등과 같은 패키지가 필요할 수 있으니 필요하다..
메모리 할당이란?프로그램을 실행하면서 처리할 데이터, 변수, 그리고 각종 연산에 필요한 정보들은 메모리에 저장되는데, 이 때 시스템에서 해당 데이터가 들어갈 적절한 공간(메모리 영역)을 찾아 할당해준다. 리눅스 커널에서는 이러한 메모리 할당 작업을 효율적으로 관리하기 위해 다양한 메모리 할당 함수와 메커니즘을 제공하는데, kmalloc, vmalloc, alloc_pages와 같은 함수들이 이러한 역할을 수행한다. 1. 메모리 할당이 필요한 이유자원 효율성: 메모리 공간은 한정되어 있기 때문에, 시스템 자원을 효율적으로 사용하려면 필요한 만큼만 메모리를 할당해야 한다. 할당된 메모리는 프로그램이 실행되는 동안 사용되며, 프로그램이 종료되면 다시 시스템에 반환되어 다른 프로그램이 사용할 수 있도록 해줘야..