본문 바로가기

전체 글42

인터럽트(Interrupt) 인터럽트(Interrupt)란? 프로세스가 실행중이다가 예기치 못한 상황이 발생되어 실행중이던 프로세스를 더 이상 실행하기 힘들거나 먼저 처리해야할 급한 일이 생긴 경우 이를 인터럽트가 발생했다고 한다. 인터럽트가 발생하면 실행중이던 프로세스가 CPU의 사용을 멈추고 인터럽트 처리가 된 후에 다시 CPU를 점유하게 된다. 다음 그림은 그 과정을 나타낸 것이다. 인터럽트 처리 루틴 - 인터럽트 발생 시점부터 인터럽트 처리가 종료되는 시점까지를 말한다.인터럽트 서비스 루틴 - 인터럽트 처리를 시작하는 시점부터 인터럽트 처리가 종료되는 시점까지를 말한다. 2017. 6. 2.
프로세스 상태 전이도 ( Process State Diagram ) 프로세스 상태 전이도 ( Process State Diagram ) 프로세스(Process)란? 보조 기억장치에 있던 프로그램이 주기억장치에 적재되어 실행중일때 이를 프로세스라고 한다. 쉽게 말해서 실행중인 프로그램을 프로세스라고 한다. 일반적으로 CPU를 뜻하는 하드웨어적 의미인 프로세서(Processor)와 헷갈리지 말자. 다음 그림은 프로세스의 상태와 상태 전이를 나타낸 것이다. 사실 프로세스의 상태라고 말은 하지만 엄밀하게 말한다면 스레드(Thread)의 상태라고 보는 것이 더 정확하다. 따라서 한 프로세스에서 두 개 이상의 스레드가 작업중이라면 한 프로세스에서 한 번에 두 가지 이상의 상태가 나타날 수 있다. 1. Create - 프로세스가 생성되는 단계2. Ready - 프.. 2017. 6. 2.
PCB ( Process Control Block ) PCB란? Process control Block의 약어로 우리말로는 프로세스 제어 블록이라고 한다.프로세스가 생성이 되면 PCB라는 자료구조가 커널영역에 함께 생기며 프로세스의 생명유지에 필요한 모든 정보들을 가지고 있다. 프로세스가 Running 상태였다가 timeout 또는 우선순위가 밀려서 내려왔다가 다시 Running 상태가 되었을 때 이전에 하던 작업이 어디서 중지가 되었는지 알 수 있는 방법이 없다. 따라서 PCB라는 자료구조를 만들어서 프로세스에 대한 정보를 저장해둔다.인터럽트가 발생되었을 때에 역시 PCB에 문맥을 저장해놓고 문맥교환 이후 재적재 된다. 2017. 6. 2.
[펌]Mysql 기본 명령어 정리 출처 : http://kwon37xi.egloos.com/1634694 데이터베이스 접속 $ mysql -u 사용자명 -p dbname 설치 직후에는 root 사용자에 비밀번호가 없으므로 다음과 같이 접속하여 MySQL을 관리할 수 있다. $ mysql -u root mysql 비밀번호 변경 MySQL을 설치한 직후에는 root 계정에 암호가 지정되어 있지 않다. 다음 세가지 방법으로 비밀번호를 변경 할 수 있다. mysqladmin이용 $ mysqladmin -u root password 새비밀번호 update문 이용 $ mysql -u root mysql mysql> UPDATE user SET password=password('새비밀번호') WHERE user='root'; mysql> FLUSH .. 2017. 6. 1.
가상함수 - 동적 바인딩과 정적 바인딩 가상함수란? 가상함수를 알아보기 전에 바인딩에 대해 알아보자. 바인딩이란? 프로그램을 실행하면 컴파일을 하고 실행코드가 만들어진다.실행코드에서 함수 호출부분을 보면 함수가 그대로 정의되어 있지 않고 함수가 정의된 부분의 주소값이 있어서 함수를 찾아가서 실행할 수 있다.이 때 함수 호출부와 정의부를 연결시켜주는 것이 바인딩이다. 바인딩에는 정적 바인딩과 동적 바인딩이 있는데 바인딩이 결정되는 시점에 따라 나뉜다.정적 바인딩은 컴파일 시에 바인딩 할 주소가 결정되어 함수 호출 시에는 이미 결정되어 있고,동적 바인딩은 컴파일 시에 바인딩 할 주소가 결정되지 않고 함수 호출 시에 결정된다. 일반 함수는 정적 바인딩을 하며 컴파일 시에 인스턴스의 타입에 따라 바인딩 될 주소가 결정되기 때문에 클래스를 상속받아 함.. 2017. 5. 31.
Transfer Object Pattern Transfer Object pattern Making the setters and getters to transfer the data. Value Object(VO) 라고도 불리는 Transfer Object(TO)는 데이터를 전송하기 위한 객체에 대한 패턴이다. Getter 메소드나 setter 메소드를 사용하면 getEmpName() 등의 메소드에서처럼 empName이 null값이더라도 null을 return하지 않고 길이가 0인 String을 return하도록 할 수 있다. 즉, Transfer Object를 잘 만들어 놓으면 각 소스에서 일일이 null 체크를 할 필요가 없기 때문에 개발할 때 오히려 더 편해질 수 있다. Serializable은 implements 해주자. 이 인터페이스를 구현.. 2017. 5. 1.
네임스페이스(namespace)란? C++를 공부해본 사람이라면 namespace가 무엇인지 들어보았을 것이다. C++에서는 printf 대신에 iostream에서 제공하는 cout을 쓴다고 배웠다. 그런데 cout을 쓰기 위해서는 전처리기 밑에 using namespace std; 를 적어놓아야 사용할 수 있다. 아니면 std::cout으로 사용을 해야 한다. 이미 알고 있겠지만 namespace에 대해 공부해보자.우리가 회사에 가게 되면 개인프로젝트는 절대 없다. 전부 팀으로 진행되는 프로젝트이고 여러 사람이 코드를 짜서 나중에 합치거나 좋지 않은 코드를 버리거나 한다. 근데 두 개의 팀에서 작업을 한 뒤 나중에 코드를 합쳤을 때를 생각해보자. 두 개의 팀에서 작성한 코드 중 클래스 이름이나 함수의 이름이 같은 것이 있을 수 있다. 실.. 2016. 11. 11.
getchar() 비주얼 스튜디오를 써 본 사람이라면 컴파일을 할 때 f5 또는 ctrl+f5을 사용하여 실행할 것이다. 둘의 차이를 알아보자.f5와 ctrl+f5의 차이는 비주얼 스튜디오가 함께 실행되느냐 실행파일만 독립적으로 실행되느냐의 차이이다. f5입력시 비주얼 스튜디오가 함께 실행되어서 디버그모드로 실행이 된다. 하지만 ctrl+f5로 실행 시 실행파일만 실행이 된다.코딩을 하다가 에러가 나면 에러를 찾아야 하는데 1학년 때의 나는 에러가 어디서 났는지 비주얼 스튜디오의 하단부에 있는 출력 창에서 찾아야만 했다. 몇 번째 줄에서 문제가 생겼는지 나오는 경우에는 찾아서 코드를 읽어보고 찾았지만 나오지 않는 경우에는 해결할 줄 몰랐다.때문에 우리는 디버그모드를 사용해야 한다. 중단점을 찍어 디버그를 통해 에러를 찾고.. 2016. 11. 11.
생성자(Constructor)란? 생성자(Constructor)란 C++에서 클래스의 객체 생성 시 동시에 호출이 되는 것이다. 일반적인 함수처럼 생겼으며 클래스와 동일한 이름을 가지고 있다. 회사 면접이나 테스트에서 영어로 나오는 경우가 있으니 Constructor라는 용어도 꼭 알아두자. (생성자 == Constructor) 눈에 익숙해지도록 계속 언급하겠다.생성자(Constructor)는 따로 명시해주지 않아도 알아서 생성이 된다. (컴파일러가 자동으로 생성해주는 세 가지: 생성자(Constructor), 복사 생성자(Copy Constructor), 대입 연산자 이 세 가지는 눈에 익도록 잠시 읽어보자. 계속해서 언급할 것이다.)해당 클래스의 객체를 생성할 때 생성자(Constructor)의 형태로 생성한다. 이전 장에서 객체는 .. 2016. 11. 11.