일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- pwncollege
- kernel
- wargame
- write up
- 워게임
- 알고리즘
- C언어
- 리눅스커널
- Leviathan
- 시스템
- 컴퓨터구조
- Bandit
- radare2
- css
- C++
- Pwnable.kr
- pwn.college
- 리눅스
- 리버싱
- px4
- 프로그래밍
- 시스템해킹
- 어셈블리어
- 시스템 프로그래밍
- 취약점
- 리눅스 커널
- 드론
- 커널
- 시그널
- 시스템프로그래밍
- Today
- Total
목록쓰레드 (3)
Computer Security
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/2t7vv/btrOgymWGN7/ItFlehdc5mRXSR5sy3CvA1/img.png)
이전 시간에 이어서, 쓰레드가 생성된 이후에 공유자원을 놓고 mutex를 이용해서 동기화 할 수 있는 예제를 작성 해보자. 1.이전 시간의 코드이다. 2. 공유자원이 되는 shared 전역 변수를 만들어준 뒤, shared라는 변수를 100만번동안 +1 하고 100만번동안 -1을 한다 해보자. - 동기화 하지 않은경우 컴파일 결과) 큰 숫자로 반복하게 되면, 하나의 공유자원을 놓고 더했다 뺐다 하게될텐데 오동작이 될 수 있다. mutex lock을 통해서 보호 해서 오동작이 나지 않도록 해보자. 3. instance 선언 후, mutex_init API를 이용해서 초기화 해준다. 4. 공유자원(critical section)에 진입할때는 lock을 하고 종료될 때는 unlock을 해주자. #include..
Single-thread vs Multi-thread 멀티 쓰레드의 경우 code, data, files 영역을 3개의 쓰레드가 공유하는 특징을 가지고 있다. 프로그램을 실행하면서 실행 주체별로 필요하기 때문에, stack과 registers는 따로 가지고 있다. 쓰레드를 생성하는 API int pthread_create(pthread_t *thread, const pthread_attr_t *attr, void *(*start_routine) (void *), void *arg); 파라미터 - thread : 생성된 thread ID - attr : 쓰레드 속성(pthread_attr_init()으로 초기화) - satrt_routine : thread main function - arg : threa..
Program 실행 가능한 코드, 바이너리, 파일로 저장 Process 실행 중인 프로그램 프로그램 이미지,메모리 인스턴스, 커널 리소스 등의 정보 Thread 프로세스 내의 실행 단위 가상화 된 프로세서, 스택, 레지스터, 명령어 포인터 등 프로세서의 상태 포함한다. 프로세스 내의 모든 쓰레드는 같은 주소 공간을 공유 Process in memory text : compile 된 프로그램 코드 data : 전역 변수 등 heap : 동적 메모리 영역 stack : 함수 지역 변수, 함수 호출/리턴 Single-thread vs Multi-thread Muti-thread 하나의 thread가 registers와 stack을 따로 가지고 있다. code , data, files 같이 공유한다. Proce..