분류 전체보기502 25. 스레드의 장단점 1. 스레드의 장점 a) 사용자에 대한 응답성 향상 하나의 프로세스 안에서 하나 이상의 작업(멀티 테스킹, 멀티 프로세싱)을 가능하기 때문 b) 자원 공유의 효율성 프로세스간의 자원 또는 데이터 공유를 위한 IPC와 같은 번거로운 작업이 필요없음 프로세스 내부에서 스레드 간의 소통이 가능하기 때문 번거로운 작업이 필요 없기에 그만큼 자원을 적게 사용한다는 의미 c) 작업 분리를 통한 코드의 간결화 각 스레드의 작업에 맞게 코드를 작성하기 때문 하지만, 개발자가 작성하기 나름. 즉, 개발자의 실력에 따라 편차가 크다. 2. 스레드의 단점 a) 여러 스레드 중 하나에만 문제가 생겨도, 전체 프로세스가 영향을 받음 스레드는 하나의 프로세스 안에 존재함 여러 스레드 중 하나라도 문제가 생기면 프로세스 자체에 문.. 2021. 5. 4. 오늘의 알고리즘(4월 29일) 1. 백준, 수 정렬하기3, 10989번 www.acmicpc.net/problem/10989 10989번: 수 정렬하기 3 첫째 줄에 수의 개수 N(1 ≤ N ≤ 10,000,000)이 주어진다. 둘째 줄부터 N개의 줄에는 숫자가 주어진다. 이 수는 10,000보다 작거나 같은 자연수이다. www.acmicpc.net 2. 생각해보자 첫 입력값 N은 앞으로 입력될 정수의 개수 N개의 입력값을 array에 입력받는다. 파이썬 기본 정렬 알고리즘을 사용하여 오름차순 정렬 후 한개씩 출력한다. n = int(input()) array = [] for _ in range(n): data = int(input()) array.append(data) array.sort() for data in array: pri.. 2021. 4. 29. 24. 스레드란? (thread 개념) 0. 프로세스 부분을 끝낸 기념으로... - 컴퓨터 시스템은 다음과 같이 이루어져 있다. - Windows나 Mac과 같은 시스템 SW 또는 OS를 만드는 사람을 시스템 엔지니어라고 부른다. - 시스템 엔지니어가 만든 함수(api, library, etc)의 사용법을 익히고 응용하는 것이 응용 프로그래머다. - 시스템 엔지니어가 만든 함수를 익히는 대표적인 방법 중 하나가 python이나 java같은 언어를 배우는 것이다. - 좋은 개발자가 되기 위해서는 응용 프로그램의 영역뿐만 아니라 시스템 영역을 아는 것이 핵심이다. - 모든것을 한번에 완벽히 이해하기는 힘들지만, 좋은 개발자가 되기 위한 밑거름을 만들고 있다고 생각하자. 1. Thread 개념 스레드는 다른 이름으로 Light Weight Proc.. 2021. 4. 29. 23. 코드를 통한 프로세스 실행과정의 이해 - 지금까찌 프로세스를 이해하기 위한 다양한 개념들을 배웠다. - 실제 코드를 보면서 그동안 익힌 프로세스 개념들을 복습해보자. 1. 예제 코드를 통한 프로세스의 이해 #Include #Include #Include #Include Int main() { int fd; fd = open("data.txt".O_RDONLY); if(fd == -1) { printf("Error: can not open file\n"); /* 파일을 열지 못하므로 그냥 종료 */ return 1; } else { printf("File opened and now close_\n"); close(fd); return(); } } a) 위의 소스코드가 실행되기까지의 과정 소스코드가 컴파일 된다. 컴파일된 소스코드로 이루어진 실.. 2021. 4. 28. 오늘의 알고리즘(4월 28일) 1. 백준, 좌표 정렬하기, 11650 www.acmicpc.net/problem/11650 11650번: 좌표 정렬하기 첫째 줄에 점의 개수 N (1 ≤ N ≤ 100,000)이 주어진다. 둘째 줄부터 N개의 줄에는 i번점의 위치 xi와 yi가 주어진다. (-100,000 ≤ xi, yi ≤ 100,000) 좌표는 항상 정수이고, 위치가 같은 두 점은 없다. www.acmicpc.net 2. 생각해보자 a) 문제 이해 첫번째 입력값 N은 앞으로 입력될 좌표의 개수를 의미한다. 주어진 좌표의 x와 y 값을 기준으로 오름차순 정렬을 한다. b) 어떻게 풀까? 데이터를 튜플 형식으로 입력받는다. x값을 비교하여 정리하는데, x값이 동일한 경우 y값을 비교하는 조건문을 만든다. 3. 코드 해설 및 분석 파이썬.. 2021. 4. 28. 22. 프로세스 - IPC 기법(signal, socket) - IPC 기법이란, 컴퓨터 구조적으로 불가능한 커뮤니케이션 간의 소통을 가능하게 하는 일종의 우회방법이다. - 다양한 IPC 기법이 존재하지만, 가장 많이 사용하고 있는 signal과 socket이 있다. - 사실 signal과 socket은 IPC를 위해서 만들어진 기능은 아니지만, IPC가 가능하기에 많이 사용되고 있다. - signal과 socket의 개념을 간단하게 알아보자. 1. Signal 기법이란? 유닉스에서 30년 이상 사용된 전통적인 기법 어떤 커널 또는 프로세스에서 다른 프로세스에게 어떤 이벤트가 발생되었는지를 알려주는 기법 프로세스 코드에 시그널 핸들러를 등록하여, 해당 시그널을 처리하는 방식으로 동작한다. a) Signal 이란? 시그널은 운영체제에 기본적으로 정의되어 있는 이벤트.. 2021. 4. 27. 21. 프로세스 - IPC기법(공유메모리) 1. 공유메모리(shared memory) 기법 커널 영역에 메모리 공간을 만들고, 해당 공간을 변수처럼 쓰는 방식 message queue처럼 FIFO 방식이 아니라, 해당 메모리 주소를 마치 변수처럼 접근하는 방식 공유 메모리의 key를 가지고, 여러 프로세스가 접근 가능 2. 공유메모리 예제 코드 a) 공유메모리 생성 및 주소 얻기 shmid = shmget((key_t)1234, SIZE, IPC_CREAT|0666)) // shmid = shared memory id shmaddr = shmat(shmid, (void *)0, 0) // shmaddr = shared memory address b) 공유 메모리에 쓰기 strcpy((char *)shmaddr, "Linux Programming".. 2021. 4. 26. 20. 프로세스 - IPC 기법(메세지 큐) 1. 메세지 큐(Message Queue) 큐(Queue) 자료구조를 이용한 IPC 기법 기본적으로 FIFO 방식으로 데이터를 전송한다. a) 그림으로 보는 메세지 큐 기법 간단하게, A라는 프로세스에서 데이터를 insert하면 B라는 프로세스에서 받아오는 방식으로 통신한다. b) 메세지 큐 예제 코드 - 간단한 예시 코드를 통해 메세지 큐의 개념을 살펴보자. 프로세스 A에서 데이터를 삽입 msqid = msgget(key, msgflg) // key는 1234, msgflg는 옵션 msgsnd(msqid, &sbuf, buf_length, IPC_NOWAIT) // msgsnd = message send 프로세스 B에서 프로세스A가 삽입한 데이터를 반환받는다. msqid = msgget(key, msg.. 2021. 4. 23. 19. 프로세스 - IPC 기법(파일, 파이프) - IPC 기법을 온전히 이해하기 위해서는 코드를 기반한 이해가 가장 적합하다. - 이를 위해서는 C언어 기반의 지식을 알고 있어야 하고, 실제로 IPC 기법을 구현한 코드를 이해하기는 그 복잡성으로 인해 쉽지않다. - 그러므로 이번 포스팅에서는 각 IPC 기법의 특징과 개념을 이해하는 것에 중점을 두자. 1. File 사용 기법 shared.txt와 같은 파일에 현재 커널 영역의 상태 정보를 기입한다. 통신이 필요한 프로세스의 상태정보를 알기위해 shared.txt 파일을 읽고 확인하다. 이 과정을 반복한다. a) File 사용기법을 잘 사용하지 않는 이유 프로세스에서 통신이 필요할 때마다 매번 shared.txt 파일을 읽어야 한다. 프로세스의 커널 영역의 상태정보가 변할 때마다 해당 파일을 upda.. 2021. 4. 22. 이전 1 ··· 38 39 40 41 42 43 44 ··· 56 다음