[라즈베리파이] 워크큐(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
[Linux][Kernel] __init 매크로 (라즈베리파이)
By Guillermo Austin Kim | 2018년 3월 30일 |
코드 리뷰를 하다 보면 함수 앞에 __init 코드가 붙은 것이 보입니다. 음, 이 __init이란 코드는 어떤 동작을 할까요?같이 살펴볼게요. 그럼 다음 코드를 한번 같이 볼까요? 위에서 말씀드린대로 init_workqueues 함수 앞에 __init가 붙어 있습니다. 참고로, init_workqueues 함수는 이름과 같이 워크큐를 초기화하는 역할을 수행합니다.[kernel/workqueue.c]static int __init init_workqueues(void){ int std_nice[NR_STD_WORKER_POOLS] = { 0, HIGHPRI_NICE_LEVEL }; int i, cpu; 이전 장에서 C 코드를 보다가 조금 이라도 의문이 생기면 전처리 파일을 열어보는게 좋다고 했죠?이번
리눅스에서 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