728x90
반응형

분류 전체보기 121

[운영체제(OS)] 6-2. CPU 스케줄링 (CPU scheduling)

CPU스케줄링에서 SJF알고리즘을 사용한 스케줄링을 하려면 process들의 cpu 사용시간을 알아야했다. 하지만 process들의 미래 cpu사용시간을 아는 것은 불가능하고 SJF 알고리즘을 사용하는데 문제가 생기게되었다. 따라서 SJF 알고리즘을 사용하기 위해서 사람들은 process들의 CPU 사용시간을 예측하는 수학적 모델을 만들었다. Exponential Averaging 수학적 모델 Exponential Averaging 모델 : 이전에 프로세스가 쓴 CPU 사용시간을 가지고, 미래 프로세스가 사용할 CPU 사용시간을 예측한다. 다음은 후에 나올 수식에서 사용되는 용어들을 정의한 것으로 밑의 그림과 같이 연관되어 보면 이해할 수 있다. n번째에 CPU를 사용한 실제 시간 n+1 번째의 CPU ..

운영체제 2021.08.10

[Visual Studio Code] 마크다운파일을 인코딩해서 작성하기(feat. 마크다운이란?)

여러분들은 GitLab과 GitHub에 들어가서 보면 마크다운 형식으로 자신의 오픈소스를 소개해 놓은 것을 본 적이 있을 것입니다. 저는 처음 github에서 여러가지 오픈소스를 보면서 Readme.md 파일이 무엇인지 궁금하였고 어떻게 이 파일을 하나만 자신의 오픈소스를 설명할 수 있는지 너무 신기하였습니다. 마크다운(Markdown)이란? 마크다운이란 쉽게 말하면 텍스트를 편집할 수 있는 문법이라고 생각하시면 편합니다. 태그를 이용하여 글자에 속성을 주거나, 이미지를 삽입하고 조작하는 일이 가능합니다. 마크다운은 HTML을 몰라도 마크다운 형식으로 글을 작성하면 HTML형식으로 변환시킬 수 있습니다. 마크다운은 쉽게 글을 쓸 수 있도록 해 주고, 읽는 사람에게도 쉽게 읽힐 수 있도록 해 주는 간소한 ..

카테고리 없음 2021.08.09

[운영체제(OS)] 6-1. CPU 스케줄링 (CPU scheduling)

Short-Term schduling이라고 불리는 CPU scheduling은 현재 CPU 자원을 어떤 process에게 할당할 것인가를 결정하는 것이다. Process는 CPU사용시간에 따라 두가지 종류로 나뉠수 있다. I/O bound job : CPU를 사용하는 빈도는 많지만(CPU를 process가 잡는 빈도) 실제 사용하는 시간은 적은 process를 가르킨다. CPU bound job : CPU를 사용하는 빈도는 적지만 실제 사용하는 시간은 긴 process를 가르킨다. 계산 위주의 일을 많이하며 사용자랑 상호작용을 많이한다. CPU scheduling은 이 두가지를 고려해서 만들어야 한다. 사용자가 실행시키는 프로그램의 반응이 느리면 사용자는 답답해 할 것이다. 그러므로 CPU bound j..

운영체제 2021.08.06

[Linux] SSH를 이용해 원격서버 접속 후 폴더 복사하기(feat. SCP 이용하기, local -> remote 파일이동)

이번글은 ssh 프로토콜을 이용해 원격서버에 접속하고 scp 명령어를 이용해 local에서 remote 서버로 폴더(파일도 가능)를 복사하도록 하겠다. SSH(Secure Shell)란? SSH는 원격 호스트 컴퓨터에 접속하기 위해 사용되는 인터넷 프로토콜이다. 기존의 텔넷도 원격 접속하기 위해 사용되었는데 이는 암호화가 이루어지지 않아 사용자의 개인 정보가 노출될 위험이 존재한다. 따라서 SSH는 기존 텔넷에 암호화 기능을 추가하여 나온 프로토콜이다.(SSH 통신이 다른 이에게 노출된다고 하더라도 암호화된 문자로 보이기 때문에 텔넷보다 안전하다) Shell을 이용해서 원격으로 접속하므로 CLI(Command Line Interface) 상에서 작업을 하게 된다. ssh 연결시에 옵션을 주지 않으면 기본..

카테고리 없음 2021.08.05

[Doubango/ultimateALPR/Docs] C++ API header 번역

C++ API 다른 모든 언어의 API는 SWIG를 사용하여 C++ 코드에서 생성됩니다 .이 문서를 기반으로 다른 언어의 API를 사용하는 것은 간단합니다. 유용한 기능이 3개뿐이기 때문입니다. Java를 사용하는 Android용 샘플 코드는 여기에서 찾을 수 있습니다. 설명하는 헤더 파일은 https://github.com/DoubangoTelecom/ultimateALPR-SDK/blob/master/c++/ultimateALPR-SDK-API-PUBLIC.h에 정의되어 있습니다. enum ultimateAlprSdk::ULTALPR_SDK_IMAGE_TYPE​ enum ultimateAlprSdk::ULTALPR_SDK_IMAGE_TYPE​ 이미지 유형을 정의합니다. 값: ULTALPR_SDK_IM..

[컴파일러] 5. LLVM을 이용해 Instruction 위치 이동(feat 메모리 명령어 종속성)

이번 글에선 IR 파일에서 Store 명령어를 BasicBlock 가장 마지막 부분으로 위치를 옮기도록 해보겠다. 일반적인 산술 연산(ex add, sub) 명령어와 다르게, 메모리 명령어 (load/store)의 종속 관계는 컴파일러 입장에서 대부분 알기 어렵다. 예를 들면 주소 X에서 값을 읽은 명령어와(load) 주소 Y에 값을 저장하는 명령어(store)가 있다고 할 때, 주소 X와 주소 Y가 같거나, 다르다는 보장이 없는 이상 종속 관계가 없다고 하더라도 순서가 쉽게 바뀔 수 없다. 따라서 Store 명령어의 위치 이동으로 이루어지는 종속성 문제는 컴파일러 레벨에서 특별한 오류를 발생시키지 않는다. 프로그램 작성 Basic Block 마지막 store 명령에 모든 store명령을 이동시키는 프로..

컴파일러 2021.08.02

[부평구청/굴포천/청리단길 맛집] 냉면 맛집, 별미 칡냉면!(feat. 주차장, 배달)

안녕하세요 여러분! 이번 여름은 엄청 덥죠... 그래서 이번에는 집 근처의 냉면집에 다녀왔습니다! 사실 제가 인천에 오면서부터 유명한 맛집이었고 그때부터 갈때마다 줄을 서서 먹었고 옆에 별관까지도 꽉 찼어요! 하지만 오늘은 점심시간을 지나고 가서 줄서지는 않았습니당. 메뉴는 물냉면일지, 비빔냉면일지만 골라주면 완료에요! 저는 물냉면에 물만두까지 시켰습니다.! 보기에는 다른 냉면이랑 비슷해요! 계란, 오이, 배가 올려져서 나옵니당. 그런데 물냉면에 양념도 같이 나오더라고요. 물냉면 하면 하얀 육수라고 생각했는데 섞으면 양념도 같이 어우러집니당 냉면 국물은 사진처럼 빨갛게 되고 면이 쫄깃했어요! 맛집들의 면요리는 면이 탱글탱글한게 공통점 같아요 저는 큰 만두 몇개가 나올줄 알았는데 조그마한 물만두가 여러개 ..

맛집 2021.08.02

[컴파일러/LLVM] 2. Module, Function, Basic Block 순회하며 Instruction 출력하기

이번 글에서는 LLVM의 기본적인 Module 구조를 보고, IR파일 내의 명령어들을 출력해보도록 하겠다. Module은 하나의 IR 파일이라고 생각하면 편하다. 그리고 LLVM IR에서는 llvm::Module -> llvm::Function -> llvm::BasicBlock -> llvm::Instruction의 계층구조로 IR 프로그램을 관리한다. Module은 여러 개의 Function으로 구성되어 있고, Function은 다시 여러 개의 Basic Block 으로 구성되어 있으며, Basic Block은 Instruction로 구성되어 있다. Module = 모듈, 일반적으로 하나의 소스 파일 Function = 함수 Basic Block = Branch나 Return같은 제어 명령어로 끝남(..

컴파일러 2021.08.01

[컴파일러] 1. LLVM을 이용한 컴파일 방법 및 IR파일 읽기(feat. 소스코드와 IR 코드 )

글을 작성하기에 앞서 한양대 Computer Architecture and System Software LAB에서 제공받은 자료를 바탕으로 작성되었다. 이번 글에서는 clang, llvm-as, llvm-dis, llc의 명령어를 사용해 IR 코드 (.bc, .ll 파일)와 바이너리(실행 파일)로 컴파일하는 방법을 알아보도록 하겠다. clang은 LLVM IR 기반 컴파일러 중 하나로, C, C++등 다양한 언어들을 IR 단계로 컴파일 하도록 지원한다.  컴파일러는 프론트엔드와 백엔드로 나뉘어지는데 clang은 언어에 따라 컴파일 해주는 프론트엔드 부분을 담당하고 있다. 다음을 보면 .c와 .cpp 소스코드는 clang을 통해 llvm bitcode로 컴파일되는것을 알 수 있다. llvm-as, llvm..

컴파일러 2021.07.31

[Ubuntu]Vmware Fusion에서 하드 디스크 공간 늘리기(Feat. delete 버튼 비활성화 되는 오류)

VMware Fusion의 Ubuntu환경에서 하드디스크 용량을 늘려보도록 하겠습니다. 먼저 처음 VMware에 ubuntu를 다운받을 때 많이 쓸것이라고 생각하지 않았습니다.(학교 수업할 때만 쓸것이라고 생각한게 착각이었네요....) 따라서 16기가 정도의 크기만으로 잘 사용하고 있었지만 학교 수업이외의 작업을 진행하던 중에 디스크 공간이 부족하다는 것을 알게되었습니다. 처음 하드디스크르 파티션을 건드리는 것이라 꽤 해맸고 이 글을 보는 분들에게 도움이 되었으면 좋겠습니다. 환경 : VMware Fusion Version 12.1.1, Ubuntu 18.04.5 이다. 하드디스크 용량 확인 다음 명령어를 통해 내 디스크 용량을 확인한다. 결과인 /dev/sda1 을 보면 15G중에 14G를 사용중이며 ..

카테고리 없음 2021.07.30
728x90
반응형