일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- Docker
- 풀이
- BOF
- architecture
- wrefresh
- NAPT
- packet filter
- .net core 7
- packet flow
- ncurses
- cbpf
- REDIS
- DOCKER-USER
- epoll
- .nret core 배포
- Compiler
- mvwin
- C언어
- 취약점
- edge trigger
- wnourefresh
- rfc5508
- iptables
- ioctl
- doupdate
- epoll_wait
- level trigger
- 어셈블리어
- vtable
- LOB
- Today
- Total
Tuuna Computer Science
streem language tag 201506 analysis Goal Analysis yacc으로 인한 AST의 변환 가정 분석 parse.y에서 함수 호출이나 if구조 분석 그리고 Action부분 분석 AST를 실행하는 부분 분석 Start! if(3>5){ // } else{ // } 위와 같은 코드가 있을 경우 토큰부터 실행까지 분석하기 lex.l (([1-9][0-9]*)|0) { lval->nd = node_int_new(atol(yytext)); LEX_RETURN(lit_number); };해당 정수 토큰이 발견될 경우 node_double_new 함수를 호출하여 토큰값 yytext를 node_int_new함수의 인자로 전달 if{TRAIL} LEX_RETURN(keyword_if); {..
[python의 interning] 이미 생성된 객체를 재사용하는 것을 의미 - immutable 객체에대해 intering 한다. a = "Test" # string intern b = "Test" # string intern x = id(a) y = id(b) # x,y 는 동일한 메모리 가리킴 print(x, y) # 2611825223136 2611825223136 intern() 함수로 intering 객체로 지정 가능하다.
만약 멀티코어 환경에서 코어마다 스레드를 만들어서 실행한다는 가정과 첫 번째 스레드가 특정 메모리에 값을 설정하고 두 번째 스레드가 특정 메모리의 값을 가져온다고 했을 때 동일한 스레드였다면 L1캐시에서 값을 가져왔을 것이다. 하지만 이는 다른 스레드이기 때문에 L1캐시 접근하지 않고 L2캐시에 값이 있기를 믿어야한다. 없다면 L3, mem까지 접근해야해서 굉장히 느려진다. 결론은 동일한 데이터에 대한 접근은 동일한 코어에 해당하는 스레드가 담당하는 것이 성능적인 이슈면에서 좋은 효과를 발휘한다. 캐시에 대한 성능 체크 도구로는 oprofile, cachegrind 도구가 존재한다.