Intro mmap()함수를 정리하며 VA도 함께 이해하는 게 목표이다. mmap() user space의 virtual memory에 file 또는 anon 매핑을 요청하는 함수이다. 이렇게만 말하면 다소 추상적으로 느껴져 구체적인 설명을 하자면, mmap() 호출은 file descriptor가 가리키는 객체를 파일에서 offset 바...
dup() && dup2() 리눅스 시스템에서는 열려진 file descriptor를 복제하는 함수를 제공한다. ✔️ header #include <unistd.h> ✔️ prototype int dup(int oldfd); int dup2(int oldfd, int newfd); 반환 값: 새로운 파일 디스크립...
Intro 리눅스에서 캐시 메모리를 비울 때 사용하는 쉘 스크립트이다. Script 쉘 스크립트 작성하기 $ vim drop_cache.sh vim으로 임의의 파일을 하나 만든 후 아래의 내용을 추가한다. #!/bin/bash sync echo 1 > /proc/sys/vm/drop_caches 캐시를 계속 비워줘야 하는 상황이...
Intro Lottery Scheduling과 관련된 논문을 읽는데 priority inversion 개념이 나왔다. 분명 배운 개념인데, 바로 떠오르지 않아서 검색을 해봤다. 찾아본 김에 정리해둔다. Priority Inversion ✔️ 정의 Priority Inversion이란 사전적 의미로 높은 우선순위의 프로세스가 낮은 우선순위의 프로세...
매크로 어셈블리에서 매크로는 타 프로그래밍 언어에서 사용하는 매크로와 의미가 같다. 어셈블리 언어의 코드 블럭에 이름을 붙여 필요할 때마다 불러서 사용하는 개념이다. ✔️ 매크로 정의하기 매크로의 시작과 끝에 %macro, %endmacro 선언 매크로 이름과 매개변수 선언 ✔️ 사용 예시 %macro CLEARXMMREG 1 ; clear one...
Intro 리눅스에는 시스템콜 및 라이브러리 함수를 수행하다가 오류가 발생하면 사용자의 프로그램으로 오류 결과를 넘겨준다. 이번 포스팅에서는 오류 메시지를 출력하고자 할 때 사용할 수 있는 함수에 대해 정리해 보고자 한다. 참고) 일반적으로 오류 발생 시 리턴값은 다음과 같다. 시스템 콜 오류 시: -1 라이브러리 함수 오류 시: NULL 오류 ...
Intro 리눅스 서버를 재부팅 할 일이 생겼다. 재부팅 후에 git repository를 clone해서 가져오려고 시도하였는데 다음과 같은 오류가 발생했다. bkhan@jsshim-desktop:~$ git clone https://github.com/ithemal/bhive.git Cloning into 'bhive'... fatal: unabl...
Intro 소스 코드들이 담긴 폴더 내에서 특정 문자열을 찾을 때 흔히 grep을 많이 사용한다. 이번에는 grep과 유사하지만 검색 결과를 grep과는 다른 방식으로 나타내주는 sileversearcher-ag를 소개해본다. Intall $ sudo apt-get install silversearcher-ag How to use $ ag ...
Intro 리눅스에서 환경변수 목록을 확인하는 방법에 대한 글이다. 환경변수 확인 명령어: export $ export 터미널에 export 명령어를 입력하면 아래와 같이 시스템의 환경변수 목록이 뜬다. export 명령어를 사용하면 시스템의 환경변수 목록 전체가 떠서 확인하고자 하는 환경변수의 값을 찾기 어려울 수 있다. 이럴 때 e...
Intro 대학원 입시 공부를 할 때 컴퓨터 구조를 처음부터 다시 공부했었다. (지진 컴구의 여파라고 해둔다..) 이번 포스팅에서는 그때 추상적으로 다가왔던 ISA에 대한 개념을 좀 더 구체화 시켜보려고 한다. ISA (Instruction Set Architecture) ISA는 글자 그대로 해석하자면 명령어 집합 구조이며, 하드웨어와 소프트웨...