본문 바로가기
728x90
반응형

전체 글164

05. 프로세스 상태와 스케쥴러 예시를 먼저 살펴보자 1. 선점형과 비선점형 스케쥴러 1 ) 선점형 스케쥴러 ( Preemptive Scheduling ) : 하나의 프로세스가 다른 프로세스 대신에 프로세서(CPU)를 차지할 수 있음 2 ) 비선점형 스케쥴러 ( Non-preemptive Scheduling ) : 하나의 프로세스가 끝나지 않으면 다른 프로세스는 CPU를 사용할 수 없음 선점형 VS 비선점형 Process 상태, 정적 우선순위, 선점형 스케쥴러, 시분할 시스템이 적용되었을 때 다음과 같이 동작한다. 2021. 7. 26.
04. 스케줄링 알고리즘 스케줄링 알고리즘은 프로세스를 어떻게 실행시킬지 결정하는 방법이다. 시분할 시스템은 프로세스 응답 시간을 짧게, 멀티 프로그래밍은 CPU 활용도를 최대로 높혀서 프로세스를 빨리 실행하는 것이 목표이다. 각 알고리즘은 이와 같은 목표를 갖고 있다. 1. FIFO 스케쥴러 : 프로세스가 저장매체를 읽거나 프린팅을 할 때 쭉 CPU를 끝까지 사용한다. 가장 간단한 스케쥴러로 FCFS라고도 불린다. 다음과 같은 우선순위를 갖는 process가 있을 때 스케쥴링 알고리즘에 따라 작업 실행 순서는 다르다. 2. SJF 최단 작업 우선 스케쥴러 : 가장 프로세스 실행시간이 짧은 프로세스부터 먼저 실행을 시키는 알고리즘이다. 3. 우선순위 기반 스케쥴러 - 정적 우선순위 : 프로세스마다 우선순위를 미리 지정 - 동적 .. 2021. 7. 19.
03. 프로세스 스케쥴링 1. 배치 처리 시스템 컴퓨터 프로그램 실행 요청 순서에 따라 순차적으로 프로그램을 실행하는 방식으로 자료 구조형 중에 queue와 같다. 하지만, 먼저 실행하고 있는 프로그램의 실행 시간이 너무 긴 경우 뒤의 프로그램은 이전 프로그램 실행이 종료 될 때까지 기다려야 한다. 그리고, 노래를 들으며 문서를 작성하는 등의 동시 작업을 처리할 수 없고, 여러 사용자가 한 프로그램을 사용할 때 동시 처리가 안되는 점을 반영하기위해 시분할 시스템, 멀티 프로그래밍이 등장하게 된다. 2. 시분할 시스템 다중 사용자 지원을 위해 컴퓨터 응답 시간을 최소화한다. 3. 멀티 태스킹 단일 CPU에서 여러 응용 프로그램이 동시에 실행되는 것처럼 보이도록 하는 시스템이다. 4. 멀티 프로세싱 여러 cpu에서 하나의 프로그램을.. 2021. 7. 18.
02. 운영체제 구조 1. 운영체제의 역할 1 ) 응용 프로그램이 요청하는 메모리를 허가하고, 분배한다. 2 ) 응용 프로그램이 요청하는 CPU 시간을 제공한다. 3 ) 응용 프로그램이 요청하는 IO Devices 사용을 허가/제어한다. 운영체제는 사용자 인터페이스를 제공한다. * 쉘(shell) : 사용자가 운영체제 기능과 서비스를 조작할 수 있도록 인터페이스를 제공하는 프로그램(CLI, GUI) 운영체제는 응용 프로그램을 위해서도 인터페이스를 제공한다. * API (Application Programming Interface) : 요청서의 집합이라고 보면 좋음 * 보통은 라이브러리 형태로 제공한다. 2. 시스템콜 : 운영체제는 커널모드와 사용자모드로 나뉘어 구동되는데, 이 때 파일 읽기/쓰기/메세지 출력 등의 대부분을 커.. 2021. 7. 15.
VisualStudioCode/VisualStudio - Blazor 새로운 razor 생성 Visual Studio Code에서 razor를 새롭게 생성하자.(Visual Studio에서도 razor 생성 방법은 동일하다.) 1 ) visual studio code 터미널에 dotnet new blazor -o UItest 라고 입력 폴더 목록에서 Pages 폴더 안에 UItest.razor가 생겼음을 확인해줄 수 있다. 2 ) 이제 서버와 이 razor를 연동해주자. 폴더 중 Shared 폴더 안에 NavMenu.razor 파일 안에서 li부분을 추가한 뒤, href 부분에 내가 연결할 곳의 razor이름을 작성한다. ( 꼭 이렇게 안해도됨 ) 3 ) UItest.razor 파일의 최상단에 서버와 연결됨을 의미하는 @page를 작성한다 4 ) 다시 터미널에 dotnet watch run 을 .. 2021. 6. 22.
01. 운영체제 역할과 응용 프로그램 1. 운영체제의 역할 1 ) 시스템 자원 관리자 (Operating System, OS) - 시스템 자원 = 컴퓨터 하드웨어이며 스스로 할 수 있는 것이 없다. - CPU(중앙처리장치), Memory - In/Out Devices(입출력장치) : monitor, mouse, keyboard, network - 저장매체 : SSD, HDD - 대표적 운영체제 : Windows OS, Mac OS, UNIX OS 2 ) 사용자와 컴퓨터간의 커뮤니케이션 지원 3 ) 컴퓨터 하드웨어와 프로그램 제어 운영체제는 저장매체(SSD/HDD)에 저장이 된다. 2. 응용 프로그램 - 프로그램 = 소프트웨어 = 운영체제, 응용 프로그램 = Application, App 3. 운영체제와 응용 프로그램의 관계 - 운영체제는 응.. 2021. 6. 21.
[Git] 04. cherry-pick cherry-pick은 현재 내가 HEAD로 있는 branch에 특정 commit을 선택하여 추가할 수 있게 해준다. 예를 들어 master branch에서 기능 A에 버그가 있는 경우, 급하게 A 버그 패치를 수정 후 commit하게 된다. 이 commit만 콕 집어서 master brach에 바로 반영하여 버그를 수정할 수 있다. master branch로 check-out한 뒤, 수없이 commit했던 message들 중 하나만 cherry-pick을 해서 선택해온다. conflict발생시 적절하게 merge 후에 다시 commit을 해준다. master가 업데이트 됨을 알 수 있다. 만약 commit 두개를 선택하고 싶다면? 우선 모들 log를 확인하기 위해 가장 최근에 commit된 branch.. 2021. 6. 10.
[Git] 03. branch 생성, merge, rebase 1. branch를 생성해보자 branch1을 생성하면서 자동으로 checkout(해당 branch로 이동) 되었다. 임의로 commit을 많이 해보았다. origin/master와 master branch는 git check 에 머무르고 있고, 지금은 version1 branch 에 위치하고 있다. 다시 git check로 돌아가서(checkout) version2를 만들어보자. 여기에서 또 임의로 commit을 몇 개 해준다. master은 git check에, version1 은 add5에, version2는 add8에 머무르고 있다. 그리고 현재는 version2 에 위치해있다. 2. merge 해보기 현재 version2 branch에 위치한 상태에서 Merge into Current를 클릭하면.. 2021. 6. 10.
[Git] 02. add, commit, push 취소하기 1. git add 취소 1 ) 내용 일부 수정 후 2 ) add 3 ) add를 취소하고 싶을 때? git status를 확인해보면 위와 같이 보인다. 이 때, git reset HEAD [file]로 git add를 취소할 수 있다. 2. git commit 취소 1 ) 내용 수정 후 2 ) add 후 3 ) commit을 했다 4 - 1 ) commit 취소 우선 git log로 확인해본다. commit이 잘 들어가있음을 알 수 있다. 취소 방법에는 3가지가 있다. ㄱ. commit 취소, staged 상태로 working directory에 보존 ㄴ. commit 취소, unstaged 상태로 working directory에 보존 git reset HEAD~2 는 commit을 2개 취소함을 의.. 2021. 6. 10.
[Git] 01. add, commit, push IDE : Pycharm Remote : web에서 확인 가능 Local : 내 local PC에서 확인 가능 현재 Initial Commit 을 해둔 상태이다. 1. 간단한 add, commit, push 1 ) 내용 수정 def print_hi(name): print(f'Hi, {name}') if __name__ == '__main__': print_hi('PyCharm') 2 ) add 및 commit 3 ) push Remote/origin/master로 checkout하면 Local/master와 같은 파일임을 확인할 수 있다. 2. commit을 여러개 생성하고 push하자 1 ) 내용 수정 _ 1 * print_bye 추가 def print_hi(name): print(f'Hi, {name.. 2021. 6. 10.
00. 운영체제 History 1950년대 - ENIAC : 운영체제가 없기 때문에 응용 프로그램이 직접 시스템 자원을 제어하였다. 1960년대 초기 - 프로그램 A(예상 실행 시간 12시간), 프로그램 B(예상 실행 시간 1분) 일 때 A --> B를 실행하고자 하면 A가 무조건 끝난 뒤에 B를 실행시킬 수 있었다. 시스템에 A와 B를 실행할 것이라고 입력해두면 시스템이 자동으로 실행하도록 하는데 배치 처리 시스템(Batch Processing system) 이라고 한다. 이를 기반으로 운영체제가 출현하게 된다. 1960년대 후반 응용 프로그램이 CPU 를 사용하는 시간을 쪼개서 여러개의 응용 프로그램을 동시에 실행하는 새로운 개념이 제안되었다. 1 ) 시분할 시스템(Time Sharing System) : 다중 사용자를 지원하고 .. 2021. 6. 6.
f-string python 3.6 이상부터 지원하는 기능이다. x = 10 y = 3 # 기존 사용 버전 ## Use %-formatting 'x + y = %d | x * y = %d' %(x+y, x*y) >>> 'x + y = 13 | x * y = 30' ## Use str.format() 'x + y = {} | x * y = {}'.format(x+y, x*y) >>> 'x + y = 13 | x * y = 30' # f-string f'x + y = {x+y} | x * y = {x*y}' >>> 'x + y = 13 | x * y = 30' 2021. 5. 31.
입출력과 변수 IDE : Visual Studio 기초 문법 1 ) 입출력 입력 : scanf("저장형식", 포인터) 출력 : printf("저장형식", 출력변수) 2 ) 형식 %d : 정수, %f : 실수, %g : 지수, %c : 문자 1개, %s : 문자열 정수형 - char(1byte), short(2byte), long(4byte), long long(8byte), int(시스템에 따라 자동 결정) 실수형 - float(4byte), double(8byte) unsigned, signed : 저장하는 과정에서 -값을 사용하기 싫으면 unsigned 를 사용하면 된다. void : return 값이 없는 함수의 자료형 bool : 참, 거짓을 저장함 3 ) sizeof sizeof(int), sizeof(cha.. 2021. 5. 10.
[Node.js_실습1] 웹에서 데이터를 입력받아 DB로 전송하기2 OS : Windows10 pro IDE : Visual Studio Code DB : MariaDB WEB에서 데이터를 입력받아서 DB로 전송해보자. 1 ) 회원가입의 경우 : DB로 데이터를 바로 넘겨주면 된다. 2 ) 로그인의 경우 : DB에 있는 데이터와 Matching 되는지 확인 후 완료되어야 한다. 여기에서는 로그인의 경우만 다룬다. 앞전에 다룬것과 같이 /login, /login_process 의 큰 틀은 같다. else if(pathname === '/login'){ var title = '로그인'; var description = "ID와 PW를 입력해주세요."; var html = ` 로그인 ID PW `; response.writeHead(200); response.end(html).. 2021. 2. 19.
[Node.js_실습1] 웹에서 데이터를 입력받아 DB로 전송하기 OS : Windows10 pro IDE : Visual Studio Code DB : MariaDB WEB에서 데이터를 입력받아서 DB로 전송해보자. 1 ) 회원가입의 경우 : DB로 데이터를 바로 넘겨주면 된다. 2 ) 로그인의 경우 : DB에 있는 데이터와 Matching 되는지 확인 후 완료되어야 한다. 여기에서는 회원가입의 경우만 다룬다. 우선 홈 화면에서 join 창을 클릭하면 /join 으로 넘어가게 된다. 폼 안에 들어갈 내용을 html에 작성하고, response.end(html)로 출력해준다. 얘 없으면 안보여줌. else if(pathname === '/join'){ var title = '회원가입'; var description = "환영합니다! : )"; var html = ` 회.. 2021. 2. 18.
[Node.js_실습1] Nodejs로 MariaDB에 데이터 전송 사전 작업 : MariaDB 에 TABLE 생성, mysql 설치 현재는 연결 + INSERT 만 가능 // 미리 npm install mysql 로 설치하기 var mysql = require('mysql'); // 정보를 담은 파일 const vals = require('./consts.js'); // 연결을 위한 정보 불러오기 var con = mysql.createConnection({ host: vals.DBHost, port:vals.DBPort, user: vals.DBUser, password: vals.DBPass, connectionLimit: 5, database: vals.DB }); // 연결되었는지 확인 con.connect(function(err){ if (err) throw .. 2021. 2. 17.
[Node.js_생활코딩]동적인 웹페이지 만들기_Delete 삭제 버튼을 만들어보자. 이렇게 만들어지고 클릭하면 삭제 버튼을 클릭하면 1 ) 파일 삭제 2 ) 첫 화면으로 보내기 를 구현해보자. 완료화면 delete 버튼 누르기 전 delete 버튼 누른 후 var http = require('http'); var fs = require('fs'); var url = require('url'); var qs = require('querystring'); function templateHTML(title, list, body, control){ return ` WEB ${list} ${control} ${body} `; } function templateList(filelist){ var list = ''; var i = 0; while(i < filelist.le.. 2021. 2. 17.
[Node.js_생활코딩]동적인 웹페이지 만들기_Update 1. 각 항목마다 create, update가 있어야 하므로 function 수정 function templateHTML(title, list, body, control){ return ` WEB ${list} ${control} ${body} `; } control 안에 create, update를 정해준다. 간략하게 보면 위와 같다. '/' 에서 templateHTML 에 맞게 `createupdate` 를 넣어준다. if(pathname === '/'){ if(queryData.id === undefined){ fs.readdir('./data', function(error, filelist){ var title = 'Welcome'; var description = 'Hello, Node.js';.. 2021. 2. 17.
[Git] 새로운 Repository와 폴더 설정 현재 만들어둔 폴더는 있는 상태 git에도 사용할 repository 는 만든 상태 해당 폴더에서 마우스 우클릭 -> git bash git config --global user.name "########" git init git add . git commit -m "하고싶은말!" 여기까지하고 git에서 repository의 https 주소 복사 git remote add origin 복사한 주소 git push origin master 2021. 2. 16.
[Node.js_생활코딩]동적인 웹페이지 만들기_폼만들기, Create, Read 사용자에게서 정보를 입력 받는 폼을 만들자. create 버튼 생성 더보기 var http = require('http'); var fs = require('fs'); var url = require('url'); function templateHTML(title, list, body){ return ` WEB ${list} create ${body} `; } function templateList(filelist){ var list = ''; var i = 0; while(i < filelist.length){ list = list + `${filelist[i]}`; i = i + 1; } list = list+''; return list; } var app = http.createServer(func.. 2021. 2. 16.
728x90
반응형