[OS] Memory
2022. 11. 6. 16:09
OS
초기 시스템메모리 관점에서 많은 것을 지원하지 않았음초기 운영체제는 메모리에 상주하는 루틴(실제로는 라이브러리)의 집합물리 메모리에 하나의 실행중인 프로세스 존재, 나머지 메모리를 사용가상화 존재하지 않았음멀티프로그래밍과 시분할시간이 흐른 후 컴퓨터를 더 효과적으로 사용하기 시작하며 멀티프로그래밍(Multi-programming) 시대 도래여러 프로세스가 실행 준비 상태이고, 운영체제가 돌아가면서 실행 → CPU 이용률 증가컴퓨터를 더 많이 사용하기 원해서 시분할(Time Sharing) 시대가 시작→ 일괄 처리 방식 컴퓨터에 한계를 인식→ 대화식 이용(interactivity)의 개념이 중요해짐기본적인 시분할 시스템 구현짧은 시간동안 하나의 프로세스를 실행, 실행중에는 메모리 접근 권한 가짐→ 프로세스..
[OS] Scheduling
2022. 11. 6. 16:09
OS
다음 번에 실행할 프로세스와 대기해야 할 프로세스를 결정하기 때문에 스케쥴링 기법의 성능은 시스템 전체 성능에 큰 영향을 미침스케쥴링이 얼마나 효율적이냐 하는 문제는 프로세스들이 일생 동안 각종 대기 큐에서 대기하는 시간을 얼마나 줄일 수 있냐의 문제근본적으로 대기 큐의 구조를 최적화 하는 것도 스케쥴링 성능에 중요한 요소임장기 스케쥴링 (long-term)프로세스가 CPU에 실행될 수 있는 자격을 부여할지 말지 결정중기 스케쥴링 (medium-term)프로세스 이미지 전부 혹은 일부가 주 메모리에 올라갈 수 있는지 자격 결정단기 스케쥴링 (short-term)CPU에 의해 실행될 다음 번 프로세스로 어떤 프로세스를 선택할 지를 결정Workload일련의 프로세스들이 실행하는 상황(= 프로세스가 CPU를 ..
[OS] Process
2022. 11. 6. 15:35
OS
프로세스란? 실행 중인 프로그램 → 프로그램은 디스크에 존재하는 실행을 위한 명령어와 정적 데이터 묶음인데 이것에 생명을 넣은 것이 프로세스프로세스 상태RunningReady프로세스가 실행 준비메모리에 올라간 상태임Blocked (= Sleep)프로세스가 특정 작업 수행I/O 요청 하면 블럭되고, 다른 프로세스 실행함보류 상태(= Swap-out 상태)Swapping프로세스의 일부나 전체를 주기억장치로 옮겨놓는 것Swap-out종료되지 않은 프로세스를 주기억장치에서 스왑공간(디스크의 일부)으로 이동하는 것Swap-inSwap-out된 프로세스의 이미지를 스왑 공간에서 주기억장치로 이동하는 것 Context Swiching (문맥 교환)어떤 프로세스가 인터럽트 될 때, 프로세스 상태가 적절한 필드에 저장되..
[vscode] tensorflow.keras 자동완성 안됨
2022. 9. 11. 15:22
환경 세팅
pycharm에선 되는데 vscode에서는 tensorflow.keras내의 메소드들이 자동완성이 안된다. 자동완성이 안 되는 환경에서 개발은 정말 열받는다. 정말 너무 짜증 나서 이것저것 깔아보고 지워보고 찾아보고 하면서 겨우 방법을 알아내서 정리한다. https://stackoverflow.com/questions/68860879/vscode-keras-intellisensesuggestion-not-working-properly Vscode keras intellisense(suggestion) not working properly Intellisense works fine on importing phrase But when it comes with chaining method, it shows d..
풀스택 웹사이트 개발기 (feat. FastAPI, Vue.js, TensorFlow, Docker)
2022. 9. 3. 22:21
후기
Intro https://whatisbreed.com/ What is breed? whatisbreed.com 견종 분류 모델 개발기에서 개발한 모델이 아깝기도 하고, 그동안 풀스택을 해보고 싶던 생각도 있어서 분류 모델 + LIME을 적용한 웹사이트를 개발했다. 2022.08.20부터 개발을 시작했고 글을 쓰는 현재(2022.09.03) 배포를 한 상태이며 꾸준히 업데이트를 할 예정이다. 기술 스택 개강을 하기 전까지 개발을 해서 배포하고 싶은 마음이 있어, 기술 스택들을 선택할 때 배우는 비용이 낮은 것에 중점을 뒀다. 그리고 이전에 유튜브에서만 보던 해보고 싶은 신기술들을 사용해보고 싶은 마음도 컸다. Frontend - Vue.js 카카오가 리액트 냅두고 왜 Vue 쓰는지 알려드림 - 코딩애플 온..
견종 분류 모델 개발기
2022. 8. 20. 14:26
후기
학교 프로젝트로 견종 분류 모델을 구축하고 XAI 알고리즘 중 하나인 LIME을 적용하는 프로젝트를 진행했고 논문까지 썼다. 주제가 여러 번 바뀐 탓에 딥러닝 노 베이스가 짧은 시간 내에 공부하고, 모델을 구축하고, 실험하며 논문까지 써서 놓친 부분이 많이 있어 방학 동안 배운 것들을 바탕으로 리펙토링을 하며 정리하려 한다. 프로젝트 개요 딥러닝을 이용한 견종 구별에 대해 근거를 제시하지 않는 데에 일반적인 사용자가 이해하기 어렵다. 이를 위해 반려견의 품종을 구별하는 딥러닝 모델을 구축한 후 이를 XAI 기법 중 하나인 LIME을 이용하여 분류 근거를 이미지로 보여준다. Dataset Class 선정 우선 분류할 견종은 총 10종으로 다음과 같이 선정했다. beagle golden retriever p..
[C++20] auto로 template를 대체해보자
2022. 7. 14. 14:41
C++
C++20부터 함수 파라미터로 auto를 허용한다. C++20부터는 template를 이용하여 구현해야 했던걸 auto를 이용해 구현할 수 있다. 코드를 통해 살펴보자 template T1 f(T2 a, T3 b) { return a + b; } int main() { cout
[C/C++] 잡기술
2022. 7. 7. 16:41
C++
이곳저곳에서 남의 코드 구경하다 발견한 잡기술들이다. C/C++가 아닌 다른 언어들에서도 응용할 수 있는 것들이 많이 있다. 이런 잡기술들이 가독성을 안 좋게 만드는 것도 있지만 더 좋을 때도 있다고 생각한다. 상황에 따라 잘 사용하면 될 것 같다. 잡기술들을 발견하면 하나씩 추가할 예정이다. (최종 수정 2022/07/07) char을 if문으로 여러 개 걸어야 할 때 if (c == 'A' || c == 'B' || c == 'C' || c == 'D') 위와 같은 코드를 아래와 같이 줄일 수 있다 if (strchr("ABCD", c)) 나눗셈 올림 std::ceil(x / n) 위의 함수는 리턴 값이 실수이다. 1. x / n + !!(x % n) 2. (x + n - 1) / n 위의 두 방법으..
[백준] 23245 Similarity
2022. 7. 5. 23:23
Algorithm/BOJ
문제 링크 http://icpc.me/23245 23245번: Similarity In modern application systems, a recommendation system is very widely used to recommend books, music, ads, items, etc. The recommendation system needs to attract other users by providing the most interested items to each user. One way of recommendation is www.acmicpc.net 문제 출처는 2021 icpc 온라인 예선이다. 풀이 (pi < pj < pk)&& (qi < qj < qk) 인 (i, j, k)를 구하면 되..
2022 모비스 대회 후기
2022. 7. 5. 02:16
후기
학생부 1233명 중 123등을 했다. 거의 정확히 상위 10%다. 50등까지 본선인데 정말 아쉽다. 채점을 해주지 않는 대회에 익숙하지 않다. 코드에 실수가 많은 편이라 이런 대회나 코테에서 성적이 많이 떨어지는 거 같다. 4번이 제일 쉬운 문제라고 생각됐는데 그걸 틀려서 점수가 많이 깎였다. 쉬운 문제 안틀리게 빠르게 푸는 연습을 해야겠다. 근데 이걸 어떻게 연습하지... 마지막 문제가 가장 어려운 문제였는데, 최소컷 문제라는 것까지 파악하고 O(N^2E) 짜리 dinic을 써야 하는 걸 알았지만 dinic을 아직 공부하지 않아서 에드몬드 카프 알고리즘으로 O(NE^2)짜리 코드로 부분점수만 긁었다. 나중에 알고 보니 풀이도 약간 틀린 풀이였다. 그래프 모델링을 약간 다르게 했다. 아무튼 부분점수는 ..
2022 중간 점검
2022. 6. 25. 15:33
끄적
벌써 6월이다. 2021년 회고를 다시 읽어보니 생각보다 이룬 것이 많아 중간 점검을 써야겠다. 목표는 3가지였다. 하나하나 뭘 했는지 적어보며 중간점검을 해야겠다. AI 분야 경험 웹 백엔드 경험 솔브닥 다이아 & 코포 블루 AI 분야 경험 & 깊이 있는 공부 이번 연도 초에 학교에서 하는 머신러닝 특강을 들었다. 5일 동안 하는 40시간짜리 특강이었다. 이때 머신러닝이 뭔지 큰 그림만 잡고 넘어갔다. 비전공자들도 들을 수 있는 수업이어서 깊이 있게 다루진 않았다. 전공으로 지능형 시스템 수강을 하며 머신러닝에 대해 조금 더 깊게 공부를 했고, 배운 것을 기반으로 데이콘 콘테스트에 하나 제출해봤는데 600명 정도 참여한 콘테스트에 최종 165등을 했다. 아예 처음 한 것 치고는 잘한 것 같아 만족한다...
[백준] 2679 맨체스터의 도로
2022. 6. 5. 02:04
Algorithm/BOJ
문제 링크 http://icpc.me/2679 2679번: 맨체스터의 도로 맨체스터에 있는 도로는 모두 일방 통행이다. 또한 이 도로는 모두 1시간에 지나갈 수 있는 차의 개수 제한이 있다. 길(경로)에도 차의 개수 제한이 있는데, 이것은 이 길에 있는 도로의 제한 중 www.acmicpc.net 풀이 네트워크 플로우를 기반으로 하고, 우선순위 큐를 이용한 풀이와 이분 탐색을 이용한 풀이가 있다. 차의 개수는 네트워크 플로우를 이용하면 쉽게 구할 수 있지만, 길 1개를 이용할 때의 최대 개수는 구하기 어렵다. 일반적인 네트워크 플로우처럼 경로를 고른다면, 경로를 고르는 순서에 따라 어떤 길에 한 번에 보낼 수 있는 최대를 보내지 않을 수 있다. 그렇기 때문에 다른 처리를 해줘야 한다. 우선순위 큐 풀이 ..
[백준] 8916 이진 검색 트리
2022. 5. 19. 21:56
Algorithm/BOJ
문제 링크 http://icpc.me/8916 8916번: 이진 검색 트리 각 테스트 케이스에 대해서, 입력으로 주어진 순열과 같은 트리를 만드는 순열의 개수를 9,999,991로 나눈 나머지를 출력한다. www.acmicpc.net 풀이 3 2 5 4 1 6라는 예제가 있을 때 가장 앞에 나오는 3은 루트 노드로 순서가 바뀔 수 없다는 사실은 조금만 생각해본다면 알 수 있다. 그럼 2 5 4 1 6를 3의 왼쪽 트리와 3의 오른쪽 트리로 나눌 수 있다. 3보다 작은 2 1은 왼쪽 트리가 3보다 큰 5 4 6은 오른쪽 트리가 될 것이다. 그렇다면 재귀적으로 2 1과 5 4 6은 각각 트리가 되고, 첫 번째 수는 루트가 될 것이다. 여기서 조금 더 관찰해 본다면, 같은 모양의 트리가 나오기 위해서는 작은 ..
[Python3] GIL (Global Interpreter Lock)
2022. 5. 15. 17:21
Python3
GIL 이란? Global Interpreter Lock의 약자로 전역 인터프리터 락이다. 여러 개의 쓰레드가 파이썬 코드를 동시에 실행하지 못하도록 하는 것이다. 한 프로세스 내에서, Python 인터프리터는 한 시점에 하나의 쓰레드에 의해서만 실행될 수 있다. 멀티 쓰레딩이 불가능하다는 것이 아니다. 원래 멀티 코어라면 멀티 쓰레딩 시에 여러 개의 쓰레드가 여러 코어 상에서 병렬(Parallel) 실행될 수 있는데, Python에서는 그러한 병렬 실행이 불가능하다. GIL이 있는 이유 파이썬에서 모든 것은 객체이고 이것들은 Reference Count가 관리가 된다. Reference Count가 0이 되면 Garbage collector가 객체를 메모리 해제시킨다. 그러나 여러개의 쓰레드가 동시에 ..