리눅스
Posts
554 posts[라즈베리파이] 동기화 - 스핀락(spinlock) Deadlock으로 생기는 문제
스핀락 코드를 잠깐 살펴봤는데 뮤텍스와 다르게 상당히 코드 복잡도가 낮습니다. tickets.next과 tickets.owner 두 값으로 스핀락을 획득하는 순서를 콘트롤하죠. spin_lock 함수가 처음 실행되는 시점에 tickets.owner 값을 로컬 변수에 저장하고 전역 tickets.next 값이 업데이트 될 때까지 Busy-wait합니다. 여기서 중요한 포인트는 tickets.owner 값을 로컬 변수 즉 스택 메모리 공간에 저장해서 제어한다는 점입니다. 모든 프로세스들은 각각 스택 공간에서 돌기 때문에 ticket 스핀락을 획득한 순서를 정확하게 파악할 수 있습니다. 낮은 복잡도에 정확하기 까지 합니다. 이렇게 스핀락 함수는 빠른 시간 내에 실행돼야 하는 인터럽트 서비스 루틴에서 공유 데이
천체 관측 프로그램 “스텔라리움”
천체 관측 프로그램 “스텔라리움” 바쁜 현대사회를 살아가다 보면, 간혹 주변의 경치를 돌아볼 수 있는 여유조차 가질 수 없는 경우가 많습니다. 낮에도 이렇게 하늘을 올려다보기 힘든데, 밤에 별자리를 보겠다고 하늘을 올려다보는 일은 더욱더 하기 힘들지 않을까 하는 생각이 드는 시대입니다. 게다가 혹시나, 밤하늘의 별자리를 확인할 수 있는 여유가 생겼다고 하더라도, 대기 환경이 옛날만큼 좋지 않기에 하늘의 별자리를 보는 것도 쉽지 않은 시대가 되기도 했..
[라즈베리파이] 가상 파일시스템 동작 분석(유저 프로세스 입장)
이번에 유저 어플리케이션 입장에서 가상 파일시스템 동작을 살펴보겠습니다. 먼저 유저 공간에서 실행하는 다음 코드를 같이 작성해 봅시다.1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 89 #define FILENAME_NAME "/home/pi/sample_text.text"1011 int main() 12 { 13 int fd = 0;14 ssize_t read_buf_size;15 off_t new_file_pos;
sshpass - ssh 자동접속
예전에 expect를 이용해서 ssh 자동접속하는 방법을 정리한 적이 있는데(여기로), ssh 접속후에 실행할 명령이 한줄 짜리라면 expect로 복잡하게 스크립트를 만드는 것보다 sshpass를 사용하는 것이 더 편리하다. 우선 sshpass 패키지를 설치한다. 데비안/우분투 계열 기준으로 아래와 같이 작업. # S/W 저장소 정보 갱신 sudo apt-get update # sshpass 패키지 설치 sudo apt-get install sshpass 사용 형식은 대략 아래와 같다. 암호는 -p 옵션으로 지정하면 접속할 때 자동으로 입력된다. -p와 접속암호 문자열 사이에 공백이 없음에 유의. sshpass -p'접속암호' ssh 계정@서버주소 예를 들어 server.

