동시다발적으로 실행되는 프로세스들은 서로 협력하며 영향을 주고 받는다. 이 과정에서 자원의 일관성을 보장해야 한다. -> 자원의 일관성을 보장하기 위해서 프로세스들의 동기화를 고려해야 한다. 1. 동기화의 의미 공동의 목적을 위해 동시에 수행되는 프로세스 ex) 워드 프로세서 프로그램 맞춤법 검사 프로세스 입력 내용을 화면에 출력하는 프로세스 이렇게 막 실행해도 괜찮은가? -> No. 올바른 수행을 위해 프로세스들은 동기화되어야 한다. (1) 프로세스 동기화란? 프로세스 동기화란 프로세스들의 수행 시기를 맞추는 것이다. 이는 크게 두 가지를 의미한다. 실행 순서 제어 : 프로세스를 올바른 순서대로 실행하기 상호 배제 : 동시에 접근해서는 안 되는 자원에 하나의 프로세스만 접근하게 하기 -> 실행의 문맥을..
1. 병행성(Concurrency) 병행성은 동시성이라고 부르기도 한다. 논리적인 개념(프로그램 성질) 보통 단일 프로세서 혹은 싱글 코어에서 여러 작업(단일 스레드 프로세스 여러 개 혹은 다중 스레드 프로세스)을 동작시키기 위해 사용한다. 하지만 멀티 코어에서도 실행이 가능하다. -> 싱글, 멀티 코어 둘 다 실행 가능 보기에는 스레드들을 동시에 병렬적으로 실행하는 것처럼 보이지만, 사실은 번갈아가면서 실행을 시켜 동시에 실행되는 것처럼 보이게 한다. 2. 병렬성(Parallelism) 병렬성은 실제로 동시에 실행된다. 물리적인 개념(하드웨어 성질) 멀티 프로세서 혹은 멀티 코어 환경에서 독립적으로 작업을 수행한다. 멀티코어에서만 실행이 가능하다. 병렬성은 데이터 병렬성, 작업 병렬성으로 나뉜다. 데이..
https://www.acmicpc.net/problem/1744 1744번: 수 묶기 길이가 N인 수열이 주어졌을 때, 그 수열의 합을 구하려고 한다. 하지만, 그냥 그 수열의 합을 모두 더해서 구하는 것이 아니라, 수열의 두 수를 묶으려고 한다. 어떤 수를 묶으려고 할 때, 위치에 www.acmicpc.net 문제 길이가 N인 수열이 주어졌을 때, 그 수열의 합을 구하려고 한다. 하지만, 그냥 그 수열의 합을 모두 더해서 구하는 것이 아니라, 수열의 두 수를 묶으려고 한다. 어떤 수를 묶으려고 할 때, 위치에 상관없이 묶을 수 있다. 하지만, 같은 위치에 있는 수(자기 자신)를 묶는 것은 불가능하다. 그리고 어떤 수를 묶게 되면, 수열의 합을 구할 때 묶은 수는 서로 곱한 후에 더한다. 예를 들면, ..
https://www.acmicpc.net/problem/1041 1041번: 주사위 첫째 줄에 N이 주어진다. 둘째 줄에 주사위에 쓰여 있는 수가 주어진다. 위의 그림에서 A, B, C, D, E, F에 쓰여 있는 수가 차례대로 주어진다. N은 1,000,000보다 작거나 같은 자연수이고, 쓰여 있는 수 www.acmicpc.net 문제 +---+ | D | +---+---+---+---+ | E | A | B | F | +---+---+---+---+ | C | +---+ 주사위는 위와 같이 생겼다. 주사위의 여섯 면에는 수가 쓰여 있다. 위의 전개도를 수가 밖으로 나오게 접는다. A, B, C, D, E, F에 쓰여 있는 수가 주어진다. 지민이는 현재 동일한 주사위를 N3개 가지고 있다. 이 주사위..
https://www.acmicpc.net/problem/13334 13334번: 철로 입력은 표준입력을 사용한다. 첫 번째 줄에 사람 수를 나타내는 양의 정수 n (1 ≤ n ≤ 100,000)이 주어진다. 다음 n개의 각 줄에 정수 쌍 (hi, oi)가 주어진다. 여기서 hi와 oi는 −100,000,000이상, 100,000,0 www.acmicpc.net 문제 집과 사무실을 통근하는 n명의 사람들이 있다. 각 사람의 집과 사무실은 수평선 상에 있는 서로 다른 점에 위치하고 있다. 임의의 두 사람 A, B에 대하여, A의 집 혹은 사무실의 위치가 B의 집 혹은 사무실의 위치와 같을 수 있다. 통근을 하는 사람들의 편의를 위하여 일직선 상의 어떤 두 점을 잇는 철로를 건설하여, 기차를 운행하려고 한다..
https://www.acmicpc.net/problem/1238 1238번: 파티 첫째 줄에 N(1 ≤ N ≤ 1,000), M(1 ≤ M ≤ 10,000), X가 공백으로 구분되어 입력된다. 두 번째 줄부터 M+1번째 줄까지 i번째 도로의 시작점, 끝점, 그리고 이 도로를 지나는데 필요한 소요시간 Ti가 들어 www.acmicpc.net 문제 N개의 숫자로 구분된 각각의 마을에 한 명의 학생이 살고 있다. 어느 날 이 N명의 학생이 X (1 ≤ X ≤ N)번 마을에 모여서 파티를 벌이기로 했다. 이 마을 사이에는 총 M개의 단방향 도로들이 있고 i번째 길을 지나는데 Ti(1 ≤ Ti ≤ 100)의 시간을 소비한다. 각각의 학생들은 파티에 참석하기 위해 걸어가서 다시 그들의 마을로 돌아와야 한다. 하지..
스케줄러 Ready Queue에 존재하는 프로세스들을 특정한 우선순위를 기반으로 CPU를 할당받게 하는 역할로 장기, 중기, 단기 스케줄러가 있다. 프로세스를 스케줄링하기 위한 Queue의 종류 1. Job Queue : 현재 시스템 내에 있는 모든 프로세스의 집합 2. Ready Queue : 현재 메모리 내에 있으면서 CPU를 할당받기를 기다리는 프로세스의 집합 3. Device Queue : Device I/O 작업을 대기하고 있는 프로세스의 집합 1. 장기 스케줄러(Long-Term Scheduler) 수행할 Job이 10개지만 메모리에는 6개만 올릴 수 있는 상황일 때, Job을 고르는 역할을 하는 것이 장기 스케줄러이다. -> 따라서 Job 스케줄러라고도 부른다. Ready Queue에 적재하..
이전 글인 CBOW 모델 구현에 이어 Skip-gram 모델 구현을 진행한다. 전반적인 구현 과정더미 데이터를 생성한다.해당 데이터를 띄어쓰기를 기준으로 쪼개 단어로 이루어진 시퀀스 리스트를 생성한다.해당 시퀀스에 있는 단어들을 중복을 제거해 단어 : 인덱스 값을 가지는 딕셔너리를 생성한다.시퀀스 리스트와 딕셔너리를 활용해 Skip-gram 모델 학습을 위한 데이터셋을 생성한다.모델 학습을 위한 DataLoader를 생성한다.Skip-gram 모델을 정의한다.Skip-gram 모델과 loss, optimizer를 선언하고 학습을 진행한다.단어 간 유사도를 확인한다. 0. 라이브러리 설정해당 과정에서 사용할 패키지들을 불러온다.import torchfrom torch.utils.data import Te..