우선순위 (Priority) 스케줄링 프로세스가 갖고 있는 우선순위 대로 CPU를 할당하는 스케줄링 기법이다. 새로운 프로세스가 도착하면 현재 실행 중인 프로세스와 우선순위를 비교하고 우선순위가 더 높은 프로세스를 먼저 실행한다. 우선순위가 같은 프로세스들은 FCFS와 동일한 방식으로 실행된다. 다단계 큐 (Multi-level Queue) 스케줄링 프로세스들이 우선순위 스케줄링과 동일하게 각각의 우선순위 값을 가지고 있다. 여러 개의 큐 자료구조가 우선 순위 별로 존재하는데, 프로세스들은 자신의 우선순위 값에 해당하는 큐에 들어간다. 우선순위가 낮은 하위 단계의 큐가 실행 중이더라도 만약 상위 단계의 큐에 프로세스가 도착하면 하위 단계의 큐는 상위 단계 큐에게 CPU를 뺏기는 선점 방식의 스케줄링이다...
서론 일기 앱을 만들면서 Room DB에 저장된 일기 데이터를 백업하고 복구할 수 있는 기능을 구현해야 했다. 대부분의 일기 앱들은 텍스트 파일로 일기 데이터를 백업한다. 하지만 나는 글과 함께 일기에 업로드된 사진까지 백업하고 싶었기 때문에 Room DB 파일 자체를 로컬에 백업하는 방식으로 백업 기능을 구현해보고자 한다. 참고로 사용한 언어는 Java이다. SQLite 백업 & 복원 기능은 이 블로그를 참고해서 만들었다. 본론 Room DB나 SQLite로 데이터를 관리하고 있다면 우리가 백업해야 할 DB 파일은 다음의 위치에 보관되어 있다. /data/com.example.패키지명/databases/DB이름_db 직접 파일 위치를 확인하고 싶다면 Android Studio 상단 메뉴에서 View >..
프로세스 생성 (Process Creation) 부모 프로세스가 여러 개의 자식 프로세스를 복제 생성한다. 자식은 부모의 주소 공간(binary address space)과 공간 내부에 있는 데이터(OS data)까지 복사한다. 자식 프로세스는 복사한 공간에 새로운 프로그램을 올린다. 예시) 유닉스 fork() : 시스템 콜이 새 프로세스를 생성한다. 부모를 그대로 복사하고, 주소 공간을 할당한다. fork() -> exec() : 시스템 콜이 새로운 프로그램을 메모리에 올린다. 프로세스는 계층 구조(트리)로 형성되며, 필요한 자원은 운영체제로부터 받는다. 자원 공유 방법 2가지 부모와 자식끼리 자원을 공유하는 모델 자원을 공유하지 않는 모델 (공유하지 않는게 일반적) 프로세스 수행 방법 2가지 부모와 ..
서론 설정 값을 그대로 자바 코드 안에서 변수로 사용하다 깃허브에 커밋해 토큰이 노출되는 사고가 발생했다 🙀 앞으로 이런 사고를 미연에 방지하기 위해 .gitignore 처리된 application.properties에서 설정값을 관리하고 자바 파일에 주입할 수 있는 방법에 대해서 소개해보고자 한다. 본론 기존 코드 예시 1 public class GithubApi { GitHub github; String token = "ghp_NSTFeMadfsdfjkljljasldf"; public PagedIterator getCommits(String userId) { try { connectToGithub(token); } 예시 2 public class ConversationsHistory { static ..
풀이 유명한 그리디 알고리즘 문제 중 하나다. 회의들의 시작 시간과 끝나는 시간이 주어지면, 회의실 하나로 할 수 있는 최대의 회의 개수를 출력해야 한다. 문제를 풀기 위해서는 회의들을 끝나는 시간이 빠른 순서대로 재정렬해야 한다. 끝나는 시간이 빠를 수록 다음 회의를 넣을 수 있는 시간대가 커지기 때문이다. 반복문 안에서 차례대로 이전 회의와 시간대가 겹치지 않는지 확인하고, 겹치지 않는다면 회의 개수를 하나씩 늘리도록 한다. 코드 #include #include #define MAX 100020 using namespace std; typedef struct { long long start; long long end; } meeting; bool compare(meeting& a, meeting& b..
풀이 간단한 그리디 문제이다. 가장 짧은 시간이 걸리는 사람부터 차례로 정렬한 다음, 각 사람들이 인출하는데 걸리는 시간을 더해주면 최소값을 구할 수 있다. 코드 #include #include #define MAX 1001 using namespace std; int N, answer = 0; int P[MAX]; void init() { cin.tie(0); cout.tie(0); ios_base::sync_with_stdio(false); } int main() { cin >> N; for (int i = 0; i > P[i]; } sort(P, P + N); for (int i = 0; i < N; i++) { answer += (P[i] * (N - i)); } c..
- Total
- Today
- Yesterday
- GithubAPI
- cat
- 백준
- baekjoon
- SELECT #SELECTFROM #WHERE #ORDERBY #GROUPBY #HAVING #EXISTS #NOTEXISTS #UNION #MINUS #INTERSECTION #SQL #SQLPLUS
- 백준27211
- linuxtouch
- 버추억박스에러
- cron시스템
- linuxgedit
- 백준27219
- 리눅스
- api문서
- linuxawk
- atq
- GitHubAPIforJava
- whatis
- Baekjoon27219
- 사용자ID
- 코테
- awk프로그램
- 버추억박스오류
- 쇼미더코드
- 리눅스cron
- E_FAIL
- Baekjoon27211
- OnActivityForResult
- virtualbox
- Linux
- linux파일
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |