[리눅스커널] 동기화: 스핀락(spinlock) 처리 흐름도 알아보기
By Guillermo Austin Kim | 2019년 9월 12일 |
스핀락을 분석할 때 스핀락을 획득한 후 임계 영역을 실행할 때 바뀌는 자료구조를 함께 파악하는 것이 중요합니다. 이번에 스핀락을 관리하는 spinlock_t 구조체를 다시 보면서 스핀락 자료 구조를 설명을 드리겠습니다.(spinlock_t *) (spinlock_t*)0xb7e0eb00 (struct raw_spinlock) rlock = ( (arch_spinlock_t) raw_lock = ( (u32) slock = 0x134C134C, (struct __raw_tickets) tickets = ( (u16) owner = 0x134C, (u16) next = 0x134C)))) 위와 같이 spinlock_t 구조체는 서로 다른 아키텍처에서 스핀
[라즈베리파이] 워크큐(Workqueue) - worker_thread() 함수 분석(3)
By Guillermo Austin Kim | 2018년 9월 16일 |
Contents of tableworker_thread() 함수 분석(1)worker_thread() 함수 분석(2)worker_thread() 함수 분석(3) 이번에는 worker_thread() 함수에서 가장 중요한 37번 줄 코드를 분석할 차례입니다. 위 그림에서 워커 쓰레드의 “실행” 단계입니다. 코드를 봅시다.37do {38struct work_struct *work =39list_first_entry(&pool->worklist,40 struct work_struct, entry);4142pool->watchdog_ts = jiffies;4344if (likely(!(*work_data_bits(work) & WORK_STRUCT_
[리눅스] 스레드 사용 시 장점
By Guillermo Austin Kim | 2018년 9월 20일 |
평균 처리 시간이 짧아진다.예를 들어 A라는 task가 10이라는 시간이 걸리고 B라는 task가 1이라는 시간이 걸린다고 가정합시다.1) single thread로 처리할 경우 : A를 먼저 처리하고 B를 처리한다고 하면, A는 처리에 10이라는 시간이 들고 B는 처리에 11이라는 시간이 든다. 평균 처리 시간은 10.52) multi thread로 처리할 경우 : A를 먼저 처리하고 B를 처리한다고 가정하고, time slice를 1씩 고르게 배분한다고 가정하면, A를 처리하는데 11이라는 시간이 들고 B를 처리하는데 2라는 시간이 든다. 평균 처리 시간은 6.5 context switch cost를 고려하지 않았을 때, 총 처리시간은 11로 같지만 A,B를 처리하는데 평균적으로 걸린 시간은 mul
리눅스에서 anonymous ftp 접속 허용(vsftpd)
By 반달가면 | 2020년 3월 17일 |
리눅스에서 vsftpd를 이용해서 ftp 서버를 운영할 때 anonymous 접속을 설정하는 방법이다. 데비안/우분투 계열 배포판 기준이다. 우선 anonymous 접속에 대응되는 루트 디렉토리를 만들자. # /var/pub/anon_ftp_root/ 생성 sudo mkdir -p /var/pub/anon_ftp_root/ 이제 vsftpd 설정파일을 편집한다. 통상 /etc/vsftpd.conf 파일이다. # vsftpd 설정 파일 편집 sudo vi /etc/vsftpd.conf 설정 파일 내용을 아래와 같이 추가/편집해 주자. # anonymous 접속 허용 anonymous_enable=YES # anonymous 접속에 대응되는 루트 디렉토리 anon_r