본문 바로가기

분류 전체보기

(239)
[ 운영체제 ] CPU 스케줄링 [ 출처 ]혼자 공부하는 컴퓨터 구조 + 운영체제 11강https://www.youtube.com/watch?v=isj4sZhoxjk[ CPU 스케줄링 개요 ]CPU 스케줄링= 운영체제가 프로세스들에게 공정하고 합리적으로 CPU 자원을 배분하는 것 스케줄링 큐= 반드시 선입선출 방식을 필요는 없음 1. 준비 큐= CPU를 이용하기 위해 기다리는 큐= 프로세스가 준비 상태2. 대기 큐= 입출력장치를 이용하기 위해 기다리는 큐= 프로세스가 대기 상태= 같은 장치를 요구한 프로세스들은 같은 큐에서 대기 선점형과 비선점형 스케줄링1. 선점형 스케줄링= 현재 CPU를 사용 중인 프로세스로부터 CPU 자원을 빼앗아 다른 프로세스에 할당= 어느 한 프로세스의 자원 독점을 막고 프로세스들에게 골고루 자원을 배분할 수 ..
[ 운영체제 ] 프로세스와 스레드 [ 출처 ]혼자 공부하는 컴퓨터 구조 + 운영체제 10강https://www.youtube.com/watch?v=isj4sZhoxjk[ 프로세스 개요 ]프로세스 종류1. 포그라운드 프로세스(foreground process)= 사용자가 볼 수 있는 공간에서 실행되는 프로세스 2. 백그라운드 프로세스(background process) 2-1. 사용자와 직접 상호작용이 가능한 프로세스 2-2. 사용자와 직접 상호작용하지 않고 그저 정해진 일만 수행하는 프로세스 = 데몬(daemon), 서비스(service) 프로세스 제어 블록프로세스들은 돌아가면서 한정된 시간만큼 CPU 이용= 자신의 차례에 정해진 시간만큼 CPU 이용= 타이머 인터럽트가 발생하면 차례 양보= 빠르게 번갈아 수행되는 프로세스들을..
[ 운영체제 ] 전체적인 운영체제 [ 출처 ]혼자 공부하는 컴퓨터 구조 + 운영체제 09강https://www.youtube.com/watch?v=isj4sZhoxjk[ 운영체제란 ]자원/시스템 자원= 프로그램 실행에 있어 마땅히 필요한 요소= 컴퓨터의 네 가지 핵심 부품(CPU, 메모리, 보조기억장치, 입출력장치) 포함 운영체제= 실행할 프로그램에 필요한 자원을 할당하고, 프로그램이 올바르게 실행되도록 돕는, 특별한 프로그램= 메모리(커널 영역)에 적재되는 프로그램= 응용 프로그램과 하드웨어의 연결다리 역할= 운영체제 덕분에 개발자는 하드웨어를 조작하는 코드를 직접 작성할 필요가 없다 응용 프로그램= 사용자가 특정 목적을 위해 사용하는 일반적인 프로그램= 메모리(사용자 영역)에 적재되는 프로그램 운영체제의 CPU 관리= 여러 프로그램을..
[ 백준 / C++ ] 1744 : 수 묶기 [ 문제 ] 1744번: 수 묶기 [ 접근방법 ] 수열값은 3가지 경우로 처리한다. 1. 1은 묶지 않고 무조건 더한다.2. 양수는 큰 수끼리 묶어서 더한다.3. 음수는 작은 수끼리 묶어서 더한다. 2와 3의 경우는 사실상 절대값이 큰 수끼리 묶는다고 생각하면 된다. [ 소스코드 ] #include #include #include using namespace std;int main(){ ios::sync_with_stdio(0); cin.tie(0); int n; cin >> n; int ans = 0; vector pos, neg; for (int i = 0; i > x; if (x == 1) ans++; else if (x ..
[ 백준 / C++ ] 1562 : 계단 수 [ 문제 ] 1562번: 계단 수 [ 접근방법 ] dp[ m ][ i ][ j ] = [ 숫자 사용 여부 ][ 길이 ][ 마지막 숫자 ]를 만족하는 개수. 숫자 사용 여부는 비트마스크를 활용하여 빠르게 확인하였다.만약 숫자 x를 사용했다면 m의 (x + 1)번째 비트는 1이다. (m >> x) & 1 = 1; 계단수의 정의에 따라 [ 마지막 숫자 ] ± 1에 대해 dp를 갱신하며,모든 숫자 사용 여부는 [ 숫자 사용 여부 ] = (1 따라서 최종적으로 dp[ (1 [ 소스코드 ] #include using namespace std;const int MOD = 1e9;long long dp[1 > n; for (int j = 1; j 0) { ..
[ 25.09.06 ] TIL - APK에서 파일 읽기 [ Unity ] 기존에 무작위로 완성된 스도쿠에서 숫자를 지워 난이도를 조절하는 방식은 유일한 해를 보장하지 못했다.이를 해결하기 위해 난이도 정보가 포함된 데이터셋을 사용하였다. 내가 찾은 데이터셋은 스도쿠의 난이도를 실수 값으로 표현하고 있어, 이를 활용해 데이터를 분류했다. 데이터셋의 난이도 값을 기준으로 구간의 길이를 1로 하여 총 5개의 난이도 구간으로 분류했다.예를 들어, 난이도가 0에서 1 사이인 퍼즐은 '난이도 1'로, 1에서 2 사이인 퍼즐은 '난이도 2' 등으로 구분하였다.이처럼 csv 파일을 가공하는 과정은 python을 활용하였다. 저장한 csv 파일들은 데이터 변조를 최소화하기 위해 StreamingAssets 폴더에 저장하였다. 1. 여기서 apk 빌드 후 스도쿠 숫자가 생성되..
[ 백준 / C++ ] 2473 : 세 용액 [ 문제 ] 2473번: 세 용액 [ 접근방법 ] 먼저 전체 용액 벡터를 정렬한 뒤, 노가다를 진행한다. 앞에 2개의 용액은 for문을 통해 정해두고, 나머지 용액은 lower_bound() 함수를 통해 빠르게 구한다. 2개 용액의 특성값 합을 cnt라고 하면, 나머지 용액은 -cnt 기준으로 lower_bound() 함수를 돌려 변수 k에 저장한다.나머지 용액은 k번째 용액이라고 생각하면 된다.약간의 오차가 발생할 수 있기에 k - 1번째 용액에 대해서도 계산을 진행한다. 시간 복잡도는 O(N²logN) 이고, N ≤ 5000 이므로 충분하다. [ 소스코드 ] #include #include #include using namespace std;int main(){ ios::sync_with_std..
[ 백준 / C++ ] 14567 : 선수과목 (Prerequisite) [ 문제 ] 14567번: 선수과목 (Prerequisite) [ 접근방법 ] 먼저 위상 정렬을 통해 과목 우선 순위를 파악하고 dp를 통해 최소 요구 학기를 계산한다. 1. 과목 순서관계를 adj 배열에 저장하고 이를 바탕으로 위상 정렬을 실시한다. 이 때, dfs를 활용한다.2. 정렬 결과를 ord 벡터에 저장하고 이를 바탕으로 dp를 진행한다. 이 때, dp[ i ]는 i번 과목을 이수하는데 필요한 최소 학기이다. [ 소스코드 ] #include #include #include using namespace std;void dfs(int u, vector &visited, vector &ord, vector adj[]){ visited[u] = true; for (int v : adj..