컴퓨터공학 dhson 2016. 2. 15. 16:49
하이퍼 스레딩(Hyper-threading)이란? 우리가 알고 있는 CPU회사라고 하면 아주 유명한 2개의 회사가 있습니다. 바로 인텔과 AMD. 하이퍼 스레딩이라는 기술은 2000년대 초반에 팬티엄4가 출시되면서 적용되기 시작한 기술입니다. 당시 AMD가 듀얼코어를 출시하자 마음이 급해진 인텔은 듀얼코어 대신 듀얼코어와 비슷한 성능을 내도록 싱글코어(팬티엄4부터)에 하이퍼 스레딩 기술을 적용하기 시작했습니다. 그렇다고 그 이후로 출시된 모든 CPU에 이 기술이 탑재된 것은 아닙니다. 싱글코어가 듀얼코어와 비슷한 성능을 낸다? CPU의 코어 수가 1개라면 컴퓨터에게는 코어 수가 2개로 보이고, 2개는 4개로, 4개는 8개로 스레드를 늘리는 셈입니다. 결국 기본 CPU 코어 수의 스레드를 2배로 보이게 해..
더 읽기
컴퓨터공학 dhson 2016. 2. 15. 11:46
멀티 스레딩(Multi-threading)이란? ‘멀티~’ 시리즈 편에 막바지에 거의 다 왔습니다. 물론 이 글 다음으로 ‘하이퍼 스레딩’에 대해서 다루겠지만, 멀티 스레딩에 대해 정리를 한다면 하이퍼 스레딩은 별 거 없습니다. 멀티 스레딩은 프로세스와 스레드의 차이를 안다면 쉽게 구별이 가는 개념입니다. 스레드는 프로세스 내에서 생성되는 하나의 실행 주체입니다. 한 프로세스 내에서 생성되는 것으로 여러 개가 동시에 생성이 가능합니다. 또한 생성된 여러 스레드는 하나의 공유 메모리를 가집니다. 그렇기 때문에 서로 간의 정보를 주고 받는데 제한이 없습니다. 가령, 네트워킹을 지원하는 프로그램이 있다고 가정합시다. 프로세스의 정의가 ‘A program in execution’ 이라는 것은 모두 알고 계시죠...
컴퓨터공학 dhson 2016. 2. 12. 22:40
멀티 프로그래밍 (Multi-programming) 역시 용어의 단어부터 확인해봅니다. '멀티'+'프로그램' 이니깐 여러 개의 프로그램? 유추할 수 있겠죠? 멀티 프로그래밍은 단일 프로세서 상에서 여러 개의 프로그램이 동시에 실행되는 것을 말합니다. 그러나 프로세서는 한번에 한 작업만 수행할 수 있기 때문에 '동시'라는 말은 엄밀히 말해서 틀린 표현입니다. 그렇지만 OS 통제하에 한 프로그램이 일부 수행되고 나서, 또 다른 프로그램이 일부 수행되는 식으로 진행되는데 이 속도가 빠르고 시간 텀이 매우 작기 때문에 사용자 눈에는 '동시'에 일어나는 것처럼 보일 뿐입니다. 위의 그림을 보시면 알 수 있듯이 프로세서(여기서는 CPU)가 프로그램 여러 개를 동시에 수행하는 것을 알 수 있습니다. 이때 프로세서는 ..
컴퓨터공학 dhson 2016. 2. 12. 22:23
멀티태스킹 (Multi-tasking) Task라는 개념은 프로세스의 개념보다 조금 확장된 개념이라고 생각하면 됩니다. 이러한 Task가 하나의 프로세서 상에서 운영체제의 스케쥴링 방식에 따라 조금씩 번갈아가면서 수행되는 것이 멀티태스킹의 개념입니다. 빠른 속도록 조금씩 번갈아 가면서 Task들을 조금씩 처리하다보면 유저가 느끼기에는 마치 '동시'에 처리되는 것처럼 보이기 때문에 붙은 이름입니다. 우리가 컴퓨터로 워드를 작성하면서 멜론 PC버젼으로 노래를 들을 수 있는 것도 멀티 태스킹입니다. 이때 멀티태스킹의 스케쥴링 방식에 몇 가지가 있는데, 다음과 같습니다. 멀티프로그래밍 방식 (Multi-programming) 시분할 방식 (Time-sharing) 실시간 시스템 방식 (Real-time) 위와 ..
컴퓨터공학 dhson 2016. 2. 12. 21:38
멀티프로세싱, 멀티 태스킹, 멀티 프로그래밍, 멀티 쓰레딩 ... 멀티, 멀티, 멀티 ... 참으로 많이 들어보긴했는데, 컴퓨터공학을 전공한 학부 졸업생치고 이 4가지 정확히 구분할 학생 거의 없다고 확신합니다. 이 용어들은 취업면접에서 기본적으로 다루는 개념이기도 하고, 학부 이후에 대학원에 진학한다면 당연히 알고 있어야 하는 기본적인 내용이지만, 4개의 용어들이 이름도 비슷비슷하고 그게 그거인거 같기도 하고... 그래서 이 4가지 용어부터 시작해서 앞으로 조금씩 정리해 나갈려고 합니다. 멀티프로세싱(Multi-processing) 용어의 단어부터 확인하면 그 의미를 유추할 수 있을 것 같습니다. '멀티'라는 단어와 '프로세싱'이라는 단어가 합쳐졌으니 여러 개의 프로세싱, 여러 개의 프로세서라는 의미가..
컴퓨터공학 dhson 2016. 2. 12. 15:26
학부 때 항상 느꼈던 궁금점인데, 왜 이제서야 정리를 하게 되었을까... CPU, 프로세서, 코어 ... 같은 용어인거 같기도 하고, 아닌거 같기도 하고... 일단 3가지 용어의 기본 정의부터 살펴보자. - CPU (Central Processing Unit, 중앙 처리 장치) 컴퓨터를 뇌에 비유하자면 단기기억 담당은 RAM, 장기기억은 하드디스크, CPU는 사고를 담당하는 대뇌피질 정도로 볼 수 있겠다. 대뇌피질 없이 인간의 사고가 성립하지 않듯이 컴퓨터도 CPU없이는 그냥 전기 잡아먹는 기계가 된다. 간단하게 말하자면 컴퓨터의 뇌와 같다. 컴퓨터의 구성 단위 중 기억,연산,제어의 3대 기능을 종합하는 장치이고 컴퓨터의 가장 중요한 부분. 프로그램의 명령어를 해석하여 데이터를 연산/처리 하는 부분, 혹..
컴퓨터공학 dhson 2016. 2. 11. 11:54
우리가 흔히 사용하고 있는 OS는 '멀티 OS'라고 한다. 이것의 의미는 동시에 여러 가지 작업을 한다는 것을 뜻한다. MP3를 들으며 워드를 작성하면서 인터넷 서핑을 할 수 있다. 이때 각각의 응용 프로그램은 하나의 프로세스를 갖는다. 그러니까 MP3 플레이어도 하나의 프로세스이고 워드도 하나의 프로세스이고, 인터넷 브라우저도 하나의 프로세스라는 뜻이다. 반면에 쓰레드는 프로세스를 여러 개로 나눈 조각과 갖다고 설명할 수 있다. 워드를 사용하는 경우를 예로 들자. 워드에서 글자를 입력하는 동안 파일을 주기적으로 자동저장하고, 내용을 프린터에 출력하고 있고, 입력하는 동안 자동으로 맞춤법 검사를 수행한다. 사용자의 입력을 받는 동안 행하는 이 모든 작업들은 각각의 쓰레드에 의해서 이루어진다. 글자를 입력..
컴퓨터공학 dhson 2016. 2. 3. 16:37
#인터럽트(interrupt), 예외(exception), 트랩(trap) 인터럽트는 크게 2가지로 분류할 수 있다.1. Asynchronous Interrupt (비동기식 인터럽트) : aka Interrupt, hardware interrupt우리가 흔히 인터럽트라고 부르는 것이 비동기식 인터럽트를 의미하며, 하드웨어 인터럽트(hardware interrupt)라고도 한다. 먼저 Asynchronous(비동기식) 이라는 말이 어색한데, 비동기식이라함은 어떤 기준에 맞춰서 이벤트가 발생하는 것이 아니라 그때그때 정해진 기준없이 이벤트가 발생하는 것을 의미한다. 전형적인 예로 I/O interrupt, keyboard event, network packet arrived, timer ticks 등이 있다..