※ 같이 보면 좋은 포스팅 [IT 기술면접 준비자료] Process와 Thread의 비교 프로세스(Process)가 구동하려면 다양한 시스템 자원이 필요하다. 대표적으로 CPU(중앙처리장치)와 입출력장치가 있는데, 최고의 성능을 내기 위해 자원을 어떤 프로세스에 얼마나 할당하는지 정책을 만드는 것을 CPU스케줄링이라고 한다. CPU스케줄링에 대해 알아보기 전에, 왜 필요한지 짚고 넘어갈 필요가 있다. (스케줄링 기법에 어떤 것들이 있는지 외우는 것보다 중요하다.) 프로세스의 생명주기 라면을 끓일 때, 물이 끓을 때까지 멍하니 기다리지는 않을 것이다. 라면 봉투를 미리 뜯어 놓기, 스프 미리넣기, 각종 재료를 미리 준비하기 등을 물이 끓는 것을 기다리면서 할 것이다. 여기서 CPU스케줄링을 착안하면 되겠다..
교착상태(DeadLock)은 두 개 이상의 작업이 서로 상대방의 작업이 끝나기 만을 기다리고 있기 때문에 결과적으로 아무것도 완료되지 못하는 상태를 가리킨다. (출처: 위키피디아 한국어판 교착상태 문서) 컴퓨터 쪽으로 해석을 해 본다면, 운영체제나 소프트웨어가 자원(Resource)관리를 잘못하여, 둘 이상의 프로그램이 다운되거나 운영체제가 멈춰버리는 현상이다. ▶교차로가 꽉 막혀있는데.. 어떻게 풀어야 할까? 교착상태가 발생하는 조건은 4가지가 있는데, 4가지 모두 만족해야만 교착상태가 일어난다. 조건 4가지는 다음과 같다. 교착상태의 발생조건 1. 상호 배제(Mutual exclusion) 2. 점유 상태로 대기(Hold and wait) 3. 선점 불가(No preemption) 4. 순환성 대기(..
이번 포스팅에서는 웹 개발을 하다보면 반드시 접하게 되는 GET과 POST를 '간단하게' 비교해보려고 한다. GET과 POST는 HTTP 프로토콜에서 서버와 클라이언트 간 통신(Communication)에 활용되는 요청(Request)메소드이다. GET과 POST 모두 클라이언트가 서버에 데이터를 전달한다는 공통점이 있다. (웹 페이지에서 웹 페이지로 데이터를 넘길 때 주로 사용하지만, 이는 서버를 통해 이루어지는 것이다.) 그리고 둘 간의 차이점도 있다. 그림1. GET과 POST의 비교 1. GET GET의 경우 데이터 값이 URL의 뒤에 이어붙는다. 기존의 URL 뒤에 ?를 붙여 구분하는 방식이다. 파라미터가 여러개 일 경우 &로 구분한다. 아래의 그림 예를 보면 쉽게 이해할 것이다. 그림2. GE..
MVC패턴은 웹 애플리케이션 개발 방법론(혹은 아키택쳐) 중 하나로 유명하다. 대한민국에서도 인기있는 프레임워크는 대부분 MVC패턴을 채택하고 있다. 그림1. MVC 아키텍쳐를 도식화한 이미지 먼저 모델(Model), 뷰(View), 컨트롤러(Controller)에 대한 정의를 내리면 다음과 같다. Model: 데이터를 가진 객체, 파라미터로 자주 쓰인다. DB의 테이블과 대응하는 경우가 많다. View: UI를 담당한다. 클라이언트 측 기술인 Html, Css, Javascript등으로 만들어진 컨테이너이다. Controller: UI를 통한 사용자의 입력 명령에 응답하고, 및 데이터 흐름 제어를 담당한다. MVC의 흐름에 대해 간략히 설명하면 다음과 같다. 사용자(User)는 컨트롤러(Controll..
JAVA라는 언어를 공부한 적이 있다면, JVM(Java Virtual Machine)에 대해 들어본 적 있을 것이다. 이번 포스팅에서는 평소에 간단하게 공부하고 지나치기 쉬운 JVM에 대해 알아보려고 한다. 그림1. 일반적인 윈도우 프로그램의 실행구조와 JAVA 프로그램의 실행구조 (출처: 자체제작) JAVA라는 언어를 공부하기 위해 어떤 교재를 구매했든, 대체로 맨 앞 챕터에서 볼 수 있는 그림이다. 두 그림의 차이점은 Program과 Operating System(운영체제) 사이에 JVM이라는 것이 존재한다는 점이다. 그림으로 봤을 때는 윈도우 프로그램과 JAVA프로그램의 차이는 오로지 JVM이다. 이러한 JVM이 어떤 기능을 하는지 간략하게 기술하자면... 1. JAVA가 OS에 상관 없이 동작할..