일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Race condition
- MLFQ
- 언리얼 엔진
- CTF
- DSP
- 언리얼엔진
- ret2libc
- stride
- MAC
- 게임 개발
- dtft
- DP
- 메카님
- pdlc
- 유스케이스
- gameplay ability
- sampling theory
- gameplay effect
- 유니티
- linear difference equation
- Unreal Engine
- dirty cow
- frequency-domain spectrum analysis
- reverse gravity
- gas
- Rr
- 게임개발
- ability task
- 운영체제
- Security
- Today
- Total
목록2024/04 (24)
다양한 기록
락을 위해서도 조건변수를 위해서도 사용 가능 sem_init(semaphore, p_shared, initial_value) semaphre : 사용할 세마포 p_shared : 프로세스 간 쉐어, 안하면 0으로 설정하면 됨 initial_value : 이걸 어떻게 사용할 건지에 따라 바이너리 세마포, 카운팅 세마포. 사용법이 다름 int sem_wait(sem_t *s) // 세마포의 값을 1 내리고 음수면 웨이트 int sem_post(sem_t *s) // 세마포의 값을 1 올리고 대기 중인 스레드 하나 꺠우기 두 함수를 사용해서 세마포 사용 sem_t m; sem_init(&m, 0, 1); sem_wait(&m); // critical section sem_post(&m); 락으로 사용하는 경우..
락은 상호배제를 위해서 조건변수는 동기화를 위해서 void *child(void *arg) { printf("child\n"); return NULL; } int main(int argc, char *argv[]) { printf("parent: begin\n"); pthread_t c; pthread_create(&c, NULL, child, NULL); printf("parent: end\n"); return 0; } 부모 스레드와 자식 스레드 중 무엇이 먼저 끝날지 알 수 없음. volatile int done = 0; void *child(void *arg) { printf("child\n"); done = 1; return NULL; } int main(int argc, char *argv[])..
Cuncurrent Counters typedef struct __counter_t { int value; } counter_t; void init(counter_t *c) { c->value = 0; } void increment(counter_t *c) { c->value++; } void decrement(counter_t *c) { c->value--; } int get(counter_t *c) { return c->value; } Traditional 방식 락을 사용하지 않는 카운터: 레이스 컨디션에서 부정확함 typedef sturct __counter_t { int value; pthread_mutex_t lock; } counter_t; void init(counter_t *c) { c->..
흐름 제어: 수신자 측에서 문제가 생기는 경우(버퍼가 꽉 차서 패킷 손실)혼잡 제어: 네트워크 상에 문제가 생긴 거(라우터 큐가 꽉 차서 패킷 손실 / 큐에서 나갈 때까지 딜레이가 긴 경우) 송신자가 이 두개를 구분할 수 있을까?할 수 있다 받는 쪽에서 문제가 생기는 건 헤더에 recieve window(rwnd)값을 보고 어느정도 알 수 있다.네트워크에 문제가 생기는 건 IP 계층의 도움을 받아 가능하다.* 라우터에서 문제를 파악하면 IP의 ECN을 활성화하고* 수신 측에서는 TCP의 ECE를 1로 바꿔서 아크를 보내면 네트워크에 문제가 있다는 것을 파악 가능 구분이 가능은 한데, 문제는 두가지 문제에 따로 대처하기 보다는 같이 대처한다.일단 설명은 두 가지로 나눠서 가능하다...
락: 상호배제를 위한 API 이걸 어떻게 구현할 것이냐?.. 실제로는 하드웨어와 OS의 협업 1. 인터럽트로 2. 소프트웨어만 only approach 3. 소프트웨어가 하드웨어와 협업 락의 평가 방법 1. 정확성 : 상호 배제가 보장되는가 2. 공정성 : 기아 상태에 빠지는 스레드가 없는가 3. 성능 : 락, 언락에 의한 오버헤드나 낭비가 없는가 락 사이즈 이슈. 여러 공유 자원이 있을 때 Coarse-grained lock : 하나의 락으로 보호 - 장점: 심플 - 단점: 병행성이 별로 Fine-grained lock : 각각을 보호하는 락 - 장점: 병행성 굿 - 단점: 복잡 실제 락의 구현 1) Disable Interrupt void lock() { DisableInterrupts(); } vo..
스레드: 제어의 흐름 프로세스: 제어의 흐름 + 수행을 하기 위한 자원 멀티 스레드 프로세스: 제어의 흐름들 + 수행을 하기 위한 자원 -> 자원의 공유가 발생, 경쟁. 컨커런시 제어 필요 컴퓨터 자원 - CPU(레지스터) - 어드레스 스페이스 (코드 데이터 스탭 힙) - 파일 어떻게 이런 자원을 관리하느냐 프로세스 모델 - 배타적으로 자원을 사용 - fork는 모든 자원을 다 새로 만듦 스레드 모델 - 필요한 자원들 중 몇몇만 공유, CPU나 스택은 따로 가짐 - 공유: 코드, 데이터, 힙, 파일 당연히 스레드가 더 빠르고, 공유하는 측면에서도 스레드가 좋음 -> 속도가 유리 프로세스는 한 프로세스가 죽어도 다른 프로세스에 영향을 안끼치지만, 스레드는 같은 프로세스 내 한 스레드가 죽으면 다 죽음 ->..
IT 컴포넌트와 CIA 하드웨어 - 가용성 : 장비의 도용, 장비의 불능화 ex) 장악하고 락하는 경우 소프트웨어 - 가용성 ex) 프로그램 삭제, 유저 액세스 거부 - 비밀성 ex) 허락을 받지 않은, 불법 복제 - 무결성 ex) 프로그램 변조, 리패키징 어택 데이터 - 가용성 ex) 파일 삭제, 유저 액세스 거부 - 비밀성 ex) 인가되지 않은 읽기, 데이터에 대한 통계 분석 (이 사람이 누구랑, 어디서 통신..) - 무결성 ex) 기존 파일의 수정.. 특히 랜섬웨어 (데이터를 암호화 시키는 것, + 가용성도 깨트리는 공격이다) 커뮤니케이션 라인(네트워크) - 가용성 ex) 선 절단, 메시지 삭제 및 망가뜨리기, 좀비 피시를 이용한 플루딩 공격(디도스) - 비밀성 ex) 패킷 캡쳐, 트래픽 패턴 분석..
Source Port # 16 bits Dest Port # 16bits Sequence Numner 32bits Acknowledgrment Number 32bits Head len 4bits now used 6bits U A P R S F Receive Window 16 bits Checksum 16bits Urg Data Pointer 16bits Options (variable length) Application Data (variable length) 포트 번호가 있으니 이걸로 멀티플렉싱, 디멀티플렉싱 - Sequence Number: 시작 지점은 OS가 부여. 악의적으로 캐치 시 도용이 가능해기 때문에 처음엔 랜덤으로 부여됨 그 다음부터는 보내는 데이터의 양에 따라 달라짐. 100번으로 보내고..