
what? 스레드의 동기화 문제를 해결하기 위해 사용하는 커널이 제공하는 일종의 플래그. 멀티프로세스 프로그램에서의 세마포어를 사용해도 무방하지만 프로그램의 구현이 뮤택스가 더 쉬움 바이너리 세마포어와 유사하게 적용 how? 크리티컬 영역 기준으로 look -> unlook이 진행된다. - 크리티컬 영역에 들어가기 "직전" : 뮤텍스를 잠금 시켜 다른 스레드가 사용하지 못하게 하여 자신만 사용 - 크리티컬 영역에 나온 "직후" : 뮤텍스를 해제하여 다른 스레드가 사용할 수 있게 함. pthread_mutex_t mutex; // 1. 뮤텍스 생성 (선언) // 2.뮤텍스 초기화 작업 pthread_mutex_lock(mutex); // 3. 뮤텍스 잠금 // 4. 공유데이터(크리티컬 영역) 엑세스 pth..

이전 시간 살펴본 스레드 취소요청에 대해 직접 돌려보며 알아보자 1. pthread_setcancelstate(PTHREAD_CANCEL_DISABLE,NULL) 취소요청을 수락하지 않으며 진행한다. 50000번째마다 정해진숫자만큼 무한루프를 돌며 취소요청을 검사한다면, 취소요청이 있더라도 수락하지 않아서(취소요청이 없는 것처럼 행동) pthread_testcancel()에서 작동되지 않는다. 2. pthread_setcancelstate(PTHREAD_CANCEL_ENABLE, NULL) 취소요청을 수학하며 진행한다. 50000번째마다 정해진숫자만큼 무한루프를 돌며 취소요청을 검사한다면, 취소요청이 있을 때 pthread_testcancel()에서 걸려서 종료된다. 그때 PTHREAD_CANCELED가..
what? 멀티태스킹 방법중 하나로 둘 이상의 스레드를 생성하는 프로그램이다. 하나의 컴퓨터에서 병렬로 여러 작업을 처리할 경우 멀티 스레드 방식이 사용될 수 있다. 멀티프로세스 프로그램과 달리 복잡한 프로세스간 통신 기능을 사용하지 않아도 스레드간 데이터 공유가 쉽게 이루어진다. how? 한 프로세스 내에서 생성된 스레드들은 서로 전역 변수를 공유하므로 스레드간 데이터를 편리하게 공유할 수 있다. - 스레드 생성과 종료 //pthread_create() int pthread_create(pthread_t *thread, pthread_attr_t *attr, void *(*start_routine) (void *), void *arg) // thread : 스레드가 정상생성된 경우 ID가 저장됨 => ..

세마포어를 적용시켜 펜과 연필을 동시에 사용하는 코드를 작성해보자 펜과 연필에 대한 초기값을 3개로 설정하고 4개의 프로세스에서 각 프로세스마다 3번 실행하게 하여 12개를 출력해본 결과이다. 연필과 노트를 가지고 공부를 하는 도중에 다른 프로세스가 끼어들지 못하는 것은 세마포어를 사용했기 때문이다. !초기값을 신경써서 operation을 적용해야함! 그렇다면 만약에 세마포어를 사용하지 않는다면 어떻게 될까? 라는 생각으로 코드를 바꿔 돌려보았다. fork( )를 2번실행했을 때는 문제가 없었지만 프로세스를 10개를 만들었을 때 동기화문제가 발생하였다. 이후, 위에서 세마포어를 적용한 코드를 돌린 것도 프로세스를 10개 만들었을 때를 확인해본 결과 동기화 문제가 세마포어때문에 발생하지 않는다는 것도 다시..

what ? - 세마포어는 프로세스간 통신에서 발생하는 동기화문제를 해결하기 위해서 사용하는 프로세스간통신에 사용되는 방법중 하나이다. - 공유데이터를 액세스하는 프로세스를 한순간에 하나로 제한하는 방법을 사용한다. - 세마포어란, "어떤 공유데이터(프로세스에서 같이 사용하는 변수를 예로 들수있다)에 대해 "현재 사용 가능한 데이터의 수""이다. => 세마포어의 정의 해석 : 세마포어가 0일때 현재 사요아능한 공유데이터에 대해 사용가능한 데이터의 수가 0이기에 접근할 수 없다는 것을 의미하고 1일때는사용가능한 것을 의미한다. ##이때의 세마포어는 S=0혹은 S=1로 사용불가능, 사용가능으로 두개의 값만 가질 수 있는 이진 세마포어## ##만약 공유데이터가(아래 사진의 예제에서 X변수) 두개 이상일때는 S..
1. User Stories 1. As an uploader, I want uploading daily picture, so that I can accurately record the day. 2. As an uploader, I want a personal account, so that I can view and manage my posts that others can’t see. 3. As an uploader, I want to keep a special post among my posts in an important storage box, so that I can see them occasionally and remember them. 4. As an uploader, I want to recei..
what? 무엇? 소켓 프로그램에서 소켓의 디폴트 설정 값을 그래도 사용하는 경우가 아니라 TCP/IP 프로토콜의 세부적인 기능을 활용하거나 소켓의 동작의 특성을 변경할 수 있다. 이때, 사용하는 것을 소켓 옵션이라고 한다. HOW? 어떻게 사용? 소켓 옵션을 변경하는 방법과 멀티캐스트 패킷을 송수신하는 방법 및 멀티캐스트를 이용한 채팅 프로그램을 작성하며 알아보자. *소켓옵션 변경 함수 int getsockopt(int s int level., int opt, const char *optval, int *optlen); - 소켓 s에 지정되어있는 옵션 값을 알아내기 위해 사용하는 getsockopt int setsockopt(int s, int level, int opt, const char *optv..

WHAT? 무엇인가? pipe에 이름을 지정하여 다른 프로세스에서도 pipe를 사용할 수 있도록 한 것 HOW? 어떻게 구현? - pipe와 다른점은 다른 프로세스간에 통신이 가능하다는 점 1. 프로세스 A -> 프로세스 B로 메세지를 넘길때 프로세스 A에서 FIFO는 WRITE 프로세스 B에서 FIFO는 READ 2. FIFO의 이름을 지정하며 (+mode의 지정) FIFO를 생성해 프로세스간 통신을 할 수 있음 WHY? 왜 필요한가? - 멀티프로세스 형태로 서버를 구현하는 경우, 프로세스 사이에 데이터를 주고받을 필요가 있고 이때 프로세스간 IPC가 사용되며 IPC의 한 종류로 FIFO가 있다. - PIPE의 한계를 극복 : 파이프는 fork()로 만들어진 프로세스간 통신에서만 사용할 수 있는데 FI..
- Total
- Today
- Yesterday
- CREATE ASSERTION
- 10866 백준
- 파이썬 알아두면 유용
- 시뮬레이션 c
- 백준 15650 파이썬
- DRF 회원관리
- 효율적인방법찾기
- 4963 섬의개수
- CSMA/CD란?
- mm1queue
- 소프트웨어공학설계
- 11053 백준
- 온라인프로필 만들기
- 딥러닝입문
- 핀테크 트렌드
- LAMBDA
- 백준 숫자놀이
- 영화 리뷰 긍정 부정 분류
- 백준 4963
- stack 컨테이너
- 백준 11053 파이썬
- c++덱
- 코딩월드뉴스
- 백준 10866
- 13886
- 스택 파이썬
- 모듈 사용법
- 기본 텍스트 분류
- 기사작성 대외활동
- 백트래킹(1)
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |