Table of Contents 1. ch. 2 1.1. shell 실행 1.2. shell 이란 1.3. permission 1.4. 스크립트 실행 2. ch.3 shell variables and env 2.1. system variable 2.2. variable 사용 2.3. default variable 2.4. naming 2.5. echo 2.6. printf 2.7. quoting (expansion) 2.8. backslash 기타 기능 2.9. export 2.10. unset 2.11. read ( user input) 2.12. arithmetic operation 2.13. readonly (constant var) 2.14. variable null check 2.15. cust..
1. n writer, n reader semaphore 사용. 매우 느림. 심지어 wait 상태도 busy.....하므로 2. n writer, 1 reader writer들과 reader의 자원을 분리한다. writer의 업데이트를 reader에 알려주는 방식으로 reader 스레드가 업데이트를 받아 직접 자료를 수정하고 읽는다. 3. 1 writer, n reader RCU 사용. (read copy update) writer가 자원을 미러링한 후 수정 -> reader에게 새로운 자원 포인터 넘김 * 3의 경우가 가장 많은 경우 커널엔 RCU가 구현되어있지만 (http://jake.dothome.co.kr/rcu/) 유저레벨 개발에선 직접 RCU를 구현해야 함.
The rule to map a key to its bucket can simply be to use the key signature (modulo the number of table buckets) as the table bucket ID: bucket_id = f_hash(key) % n_buckets; By selecting the number of buckets to be a power of two, the modulo operator can be replaced by a bitwise AND logical operation: bucket_id = f_hash(key) & (n_buckets - 1);