분류 전체보기 252

부팅 시 운영체제가 실행되는 과정

부팅 시 운영체제가 실행되는 과정 1. 바이오스 - BIOS (Basic Input Output System) - 메모리와 CPU 레지스터를 초기화 시킨다. - 디스크로부터 부트 로더를 불러 온다(부트 로더로는 grub나 lilo 등이 있다). - 부트 로더는 디스크에서 OS 커널의 이미지를 찾아서 메모리로 불러오고 실행 시키는 역할을 한다. 2. 부팅(Booting) booting의 사전적 의미는 원래 '장화를 신기다'라는 뜻이지만 농촌에서 하루 일을 시작하러 들로 나가기 위해 장화를 신는 것과 마찬가지로, 컴퓨터를 처음 동작시킬 때 수행되는 일련의 과정을 일컬어 부팅이라고 부르게 되었다는 견해가 있다. 잘 동작하고 있던 컴퓨터도 일단 전원을 끄고 나면 그 동안 기억하고 있던 정보를 모두 잊어버리고 완..

OS/OS - Overview 2018.09.20

멀티 프로그래밍을 위한 시간 공유 (Time Sharing for the Multi-Programming)

멀티 프로그래밍을 위한 시간 공유 (Time Sharing for the Multi-Programming) 1. CPU의 낮은 이용률 - 하나의 응용 프로그램만 실행 시키게 되면 CPU가 계속 작업 상태에 있지는 않는다 (입출력 작업 때문에).- 사용자의 입력을 기다려야 하는 경우 등이 생겨서 대기 시간이 생기게 되기 때문이다. 2. 멀티 프로그래밍 (Multi Programming) - 여러 개의 응용 프로그램을 동시에 실행 시키는 것이다.- CPU 이용률을 높일 수 있다.- CPU가 게을러지는 것을 방지할 수 있다.- 이 멀티 프로그래밍 방식을 이용하기 위해서 고안된 것이 시간 공유 기법이다. 3. 시간 공유 (Time Sharing) - 컴퓨터가 멀티 태스킹(multi-tasking)을 하게 만들기..

OS/OS - Overview 2018.09.20

운영체제란?

운영체제 1. 운영체제란? 운영체제(operating system)는 컴퓨터 하드웨어를 관리하는 프로그램이다. 또한 운영체제는 운용 프로그램을 위한 기반을 제공하며 컴퓨터 사용자와 컴퓨터 하드웨어 사이에서 중재자 역할을 실행한다. 운영체제의 놀라운 점은 이러한 일들을 실행하는 데 대단히 다양한 방법이 존재한다는 것이다. 대형 컴퓨터의 운영체제는 주로 하드웨어의 이용을 최적화하는 것을 주요 목적으로 삼는다. 개인용 컴퓨터 운영체제는 복잡한 게임, 비즈니스 응용, 그리고 이들 중간에 위치하는 모든 응용 프로그램을 사용자가 자유롭고 쾌적한 환경에서 사용할 수 있도록 지원한다. 운영체제는 덩치가 매우 크고 복잡하기 때문에 부분별로 생성되어야 한다. 각 부분은 전체 시스템 윤곽에 잘 부합하여야 하며 각 부분의 입..

OS/OS - Overview 2018.09.20

Error: ER_CON_COUNT_ERROR: Too many connections

Error: ER_CON_COUNT_ERROR: Too many connections 노드에서 mysql 모듈을 사용하는 많은 사람들이 다음과 같은 에러 메세지와 마주치게 된다. "Error: ER_CON_COUNT_ERROR: Too many connections" 라는 에러 메세지가 알려주듯이, node.js 서버와 mysql 데이터베이스 사이의 열려 있는 커넥션 개수가 너무 많아서(제한된 범위 이상) 이러한 에러가 발생한 것이다. 이 문제의 해결법은 매우 간단하다. connection이 열린 상태에서 닫히지 않고, 그러한 connection들이 쌓이면서 생긴 문제이기 때문에, 그저 커넥션을 닫아주는 "conn.release()" 메소드를 사용하면 된다. let pool = mysql.createPo..

JavaScript/Node.js 2018.08.09

URL 관련 기능들

URL 관련 기능들 자바스크립트로 프론트 엔드 부분을 구현하다보면 URL과 관련된 기능들을 사용해야 하는 순간들이 오기 마련이다. 이 글에서는 매우 기초적이면서 중요한 자바스크립트 기능들에 대해서 언급할 것이다. 1. 현재 URL 주소 값 가져오기 현재 페이지의 URL 주소를 알아야 할 필요가 있을 때에는 다음 코드를 사용하면 된다. window.location.href 위의 코드는 현재 페이지의 주소를 반환한다. 이 값을 변수에 저장한 후에 원하는 기능을 구현하면 될 것이다. 2. 다른 웹 페이지로 이동 1) 다른 페이지로 넘어가기 위에서 언급하였던 "window.location.href"를 이용하면 다른 페이지로 넘어가도록 만들 수 있다. window.location.href = "www.someth..

프로미스

프로미스 자바스크립트와 node.js에서는 주로 비동기 프로그래밍을 한다. 특히 이벤트 구조 방식 때문에 콜백 함수를 자주 사용한다. ES2015부터는 자바스크립트와 node.js의 API들이 콜백 대신 프로미스(promise) 기반으로 재구성된다. 그래서 악명 높은 콜백 지옥(callback hell)을 극복했다는 평가를 받고 있다. 프로미스를 사용하려면 먼저 프로미스 객체를 생성해야 한다. i.e.const promise = new Promise( (resolve, reject) => {if(조건문) {resolve('success');} else {reject('failed');}}); promise.then((message) => {console.log(message);}).catch((error..

비구조화 할당

비구조화 할당 비구조화 할당은 이름은 어색하지만 매우 유용한 기능이다. 이 기능을 사용하면, 객체와 배열로부터 속성이나 요소를 쉽게 꺼낼 수 있다. i.e.var candyMachine = {status: {name: 'node',count: 5},getCandy: function() {this.status.count--;return this.status.count;}}; var getCandy = candyMachine.getCandy;var count = candyMachine.status.count; 위의 예제는 객체의 속성을 같은 이름의 변수에 대입하는 코드이다. 비구조화 할당 기능을 통해서 이를 다음과 같이 바꿀 수 있다. i.e.const candyMachine = {status: {name:..

화살표 함수

화살표 함수 (arrow function) ES2015 이전에는 함수를 선언하기 위해서는 function 키워드를 통해서만 함수를 선언하고 정의할 수가 있었다. 하지만, ES2015 문법에서의 화살표 함수라는 방식을 사용하면 function 키워드를 '=>'로 대체할 수 있게 된다. 단순히 키워드 대체만 있었다면 익숙한 기존의 방식을 대체할 필요가 없었을 것이다. function 키워드 대신 화살표 함수를 사용할 경우, 기존과는 다른 방식의 this 바인딩이 가능해진다. i.e.var relationship1 = {name: 'zero',friends: ['nero', 'hero', 'xero'],logFriends: function() {var that = this; //relationship1에 해당..

템플릿 문자열

템플릿 문자열 2015년에 출시 되었던 ES2015 문법에 새로운 문자열이 추가되었다. 큰따옴표나 작은따옴표로 감싸는 기존 문자열과는 다르게 백틱(`)으로 감싸는 방식이다. 이 백틱을 사용한 문자열 방식에서 가장 특이한 점은 문자열 안에 변수를 넣을 수 있다는 것이다. i.e.var string1 = num1 + ' 더하기 ' + num2 + "는 \"" + result + "\"";const string2 = `${num1} 더하기 ${num2} 는 "result"`; 위의 예시를 통해서 알 수 있듯이, 백틱을 사용한 템플릿 문자열은 기존 문자열과는 다르게 ${}를 사용해서 변수의 값에 접근할 수가 있다. 또한, 문자열 내에서 큰따옴표나 작음따옴표를 '\'문자 없이 사용해도 된다. 이 템플릿 문자열 방..

C++ 프렌드 개념

C++ 프렌드 1. 프렌드 함수 C++에서는 클래스 외부에 작성된 함수를 클래스 내에 friend 키워드로 선언하여, 클래스의 멤버 함수와 동일한 접근 자격을 부여할 수 있다. 물론, 멤버가 아니기 때문에 상속되지는 않는다. 클래스 내에 friend 키워드로 선언된 외부 함수를 프렌드 함수(friend function)라고 부른다. 프렌드 함수는 마치 클래스의 멤버인 것처럼 멤버 변수와 멤버 함수에 접근할 수 있다. 그렇다면, 프렌드 함수는 왜 필요할까? 프렌드 함수를 클래스의 멤버 함수로 작성하면 되지 않을까? 프로그램을 작성하다보면, 클래스 멤버 함수로는 적합하지 않지만, 클래스의 private, protected 멤버에 접근해야 하는 함수가 생기게 된다. 이러한 함수를 프렌드 함수로 사용하는 것이다..

C++/C++ 기본 2018.08.02