컴퓨터구조와 운영체제 18

18. 프로세스 개요

프로세스 개요 프로세스 개요 프로그램은 실행되기 전까지는 보조 기억 장치에 있는 데이터 덩어리일 뿐이지만 이 보조 기억 장치에 저장된 프로그램을 메모리에 적재하고 실행하는 순간에 그 프로그램은 프로세스가 된다. 이런 과정을 ‘프로세스를 생성한다.’고 표현. 프로세스의 종류: 크게 두 가지. 포그라운드 프로세스와 백그라운드 프로세스 포그라운드 프로세스 (foreground process): 사용자가 볼 수 있는 공간에서 실행되는 프로세스로 메모장, 워드 프로세서 등 백그라운드 프로세스 (background process): 사용자가 볼 수 없던 공간에서 실행되는 프로세스로 사용자와 직접 상호작용이 가능한 백그라운드 프로세스와 사용자와 상호작용하지 않고 그저 정해진 일만 수행하는 프로세스로 나뉜다(데몬(da..

17. 운영체제의 큰 그림

운영체제의 큰 그림 커널의 개념, 응용 프로그램 실행을 위한 이중 모드와 시스템 호출 커널이 무엇인지 이해하고, 우리가 개발하고 실행하는 응용 프로그램이 어떻게 운영체제의 도움을 받으며 실행되는지, 운영체제가 응용 프로그램에 어떤 서비스를 제공하는지를 알아볼 것. 운영체제는 사용자를 위한 프로그램이 아닌 사용자가 실행하는 프로그램을 위한 프로그램이다. 즉, 사용자가 실행하는 응용 프로그램이 올바르게 실행되도록 돕고 필요한 자원을 할당해 주는 프로그램이다. 커널 운영체제는 현존하는 프로그램 중 규모가 가장 큰 프로그램 중 하나이다. 대표적인 운영체제인 리눅스를 구성하는 소스 코드는 무려 천만 줄이 넘는다. 세상에는 다양한 운영체제가 있다. 운영체제가 응용 프로그램에 제공하는 기능들, 즉 운영체제 서비스 또..

16. 운영체제를 알아야 하는 이유

운영체제를 알아야 하는 이유 컴퓨터 부품들은 전기만 공급하면 알아서 동작하는 것이 아니라 이런 것들을 동작시켜주는 가장 근원적인 프로그램이 있다. 그 프로그램이 바로 운영체제. 자원(Resource) 프로그램 실행에 있어서 마땅히 필요한 요소 컴퓨터의 네 가지 핵심 부품들이 포함됨(CPU, 메모리, 보조 기억 장치, 입출력 장치) 운영체제 프로그램이 실행되기 위해서 마땅히 필요한 자원들을 프로그램에게 할당한다. 각각의 실행되는 프로그램들이 올바르게 실행되도록 돕는다. 프로그램을 위한 프로그램. 프로그램은 메모리에 저장되고 따라서 운영 체제 또한 메모리에 적재되어 실행된다. 하지만 운영 체제는 컴퓨터를 동작시키는 매우 중요한 프로그램이기 때문에 메모리에 따로 적재되는 영역이 정해져 있고, 그 곳을 커널 영..

15. 캐시 메모리

캐시 메모리 CPU가 메모에 접근하는 속도는 CPU와 연산 속도보다 압도적으로 느리다. 저장장치 계층 구조 CPU와 가까운 저장장치는 일반적으로 또 상대적으로 속도가 빠르고 멀리 있는 저장장치는 느리다. 속도가 빠른 저장장치는 일반적으로 또 상대적으로 저장 용량이 작고 가격이 비싸다. 레지스터 vs. 메모리(RAM) vs. USB 메모리(보조기억 장치) 속도 (Speed) 레지스터: 가장 빠르다. CPU 내부에 위치하며 데이터를 거의 즉각적으로 접근할 수 있다. RAM (Random Access Memory): 레지스터보다는 느리지만 여전히 매우 빠른 속도를 제공한다. 시스템의 주기억장치로, 데이터 접근 시간은 나노초 단위다. USB 메모리: RAM보다 느리다. 데이터 전송 속도는 USB의 표준(예: U..

14. 메모리의 주소 공간-물리 주소와 논리 주소

메모리의 주소 공간-물리 주소와 논리 주소 메모리 내에 주소 체계는 크게 두 가지가 있다. 물리 주소와 논리 주소. 주소 체계를 왜 논리 주소와 물리 주소로 나누어서 관리하게 되었는지, 그리고 논리 주소를 어떻게 물리 주소로 변환할 수 있는지에 대해서 알아볼 것. 물리 주소와 논리 주소 CPU와 실행 중인 프로그램은 메모리 몇 번지에 무엇이 저장되어 있는지 하나부터 열까지 다 알지는 못하다. 새롭게 실행되는 프로그램은 매번 새롭게 보조 기억 장치로부터 메모리로 적재된다. 실행이 끝난 프로그램은 메모리에서 삭제가 된다. 같은 프로그램을 실행하더라도 실행할 때마다 적재되는 주소는 달라진다. 이러한 점을 극복하기 위해서 주소 체계를 물리 주소와 논리 주소로 나누었다. 물리 주소 (Physical Address..

13. RAM의 특성과 종류

RAM의 특성과 종류 컴퓨터의 네 가지 핵심 부품: CPU, 메모리, 보조 기억 장치, 입출력 장치 RAM 메인 메모리의 종류에는 크게 RAM과 ROM 두 가지가 있다. 하지만 메모리라고 하는 용어는 메인 메모리 중에서도 램을 지칭하는 경우가 많다. CPU는 RAM 즉 메모리로부터 명령어와 데이터들을 가져와 실행하고. RAM은 실행할 대상을 저장한다. 하지만 RAM은 저장한 내용을 전원이 꺼지면 잃어버린다는 단점이 있다. 따라서 보조 기억 장치라고 하는 전원이 꺼져도 저장된 내용을 기억할 수 있는 대용량 저장장치가 필요하다. RAM 즉 전원이 꺼지면 저장된 내용을 잃어버리는 이러한 특성을 갖고 있는 저장장치를 휘발성 저장장치라고 부르고. 반대로 전원이 꺼져도 저장된 내용을 잃지 않는 특성을 갖고 있는 저..

12. 명령어 집합 구조, CISC와 RISC

명령어 집합 구조, CISC와 RISC 명령어 병렬처리 기법(명령어 파이프라이닝)은 현대 CPU가 꼭 사용해야 되는 아주 중요한 핵심 기술이라고도 볼 수 있다. 그런데 명령어 파이프라이닝을 하기 유리하게 생긴 명령어가 있고 명령어 파이프라이닝에 불리하게 생긴 명령어가 있다. 그렇다면 명령어가 어떻게 생겨야지 명령어 파이프라이닝에 유리할까? 여기에 대해서 알아보기 위한 명령어 집합 구조. 명령어 집합 CPU마다 이해하는 명령어의 종류가 다른 경우가 있다. CPU 제조사별로도 만드는 CPU가 다르고 같은 제조사에서 만든 CPU라고 할지라도 명령어의 세세한 생김새나 연산 방식, 주소 지정 방식은 CPU마다 다른 경우가 있다. 명령어 집합 구조: CPU가 이해할 수 있는 명령어들의 모음. 인텔의 CPU가 이해할..

11. 명령어 병렬 처리 기법

명령어 병렬 처리 기법 명령어 병렬 처리 기법 멀티코어와 멀티스레드 CPU 처럼 CPU를 조금 더 빠르게 처리할 수 있도록 설계를 하는 것도 중요하지만 어떻게 CPU가 시간 낭비없이 시간을 쓰며 메모리에 있는 명령어들을 빠르게 실행할 수 있는지도 중요하다. 이와 관련해서 공부할 것이 명령어 병렬 처리 기법. 명령어 파이프라인 명령어가 CPU에서 처리되는 과정을 비슷한 시간 간격으로 나누면 다음과 같이 나눌 수 있다. 명령어 인출(Instruction Fetch) 명령어 해석(Instrunction Decode) 명령어 실행(Execute Instruction) 결과 저장(Write Back) 같은 단계가 겹치지만 않으면 CPU는 각각의 단계를 동시에 실행을 할 수 있다. t2이라는 시간 동안에는 하나의 ..

10. 빠른 CPU를 위한 설계 기법

빠른 CPU를 위한 설계 기법 클럭 코어 & 멀티 코어 스레드 & 멀티 스레드 CPU의 속도를 빠르게 하기 컴퓨터 부품들은 클럭 신호에 맞춰서 일사분란하게 움직인다. CPU는 명령어 사이클이라는 정해진 흐름에 맞춰서 명령어들을 실행한다. 클럭 속도 클럭 신호 자체를 빠르게 반복하면 속도가 빨라지겠네? 꼭 그런 것은 아니지만 일반적으로는 클럭 신호가 빠르게 반복되면 CPU를 비롯한 컴퓨터 부품들은 그만큼 빠른 박자에 맞춰서 움직인다. 클럭 속도는 CPU에 속도 단위로 간주되기도 한다. 헤르츠: 클럭 속도는 헤르츠라는 단위로 측정하는데 헤르츠는 1초에 클럭이 반복되는 횟수를 의미한다. 클럭이 ‘똑딱’ 하고 1초에 한 번 반복되면 1 헤르츠, 클럭이 1초에 100번 ‘똑딱’ 하면 100 헤르츠. 그렇다면 클럭..

9. 명령어 사이클과 인터럽트

명령어 사이클과 인터럽트 컴퓨터의 내부 동작 원리를 이해함에 있어서 명령어 사이클과 인터럽트는 아주 중요한 개념이다. 명령어 사이클과 인터럽트 명령어 사이클: CPU는 메모리로부터 명령어나 데이터들을 갖고 와서 실행하고, 필요하다면 값을 저장할 수도 있다고 했는데 이 과정에서 CPU가 메모리에 저장되어 있는 프로그램을 실행하는 데 일정한 패턴이 있다. 일정한 주기가 있다. 다시 말해서 일정한 어떤 정해진 흐름이 있다. CPU는 메모리 안에 있는 프로그램을 어떤 정해진 흐름대로 처리하게 되는데 그 정해진 흐름 주기를 명령어 사이클이라고 한다. 인터럽트: CPU는 메모리에 있는 프로그램을 정해진 흐름대로 처리를 하는데 간혹 정해진 흐름을 방해하는 신호가 CPU한테 올 수 있다. 그렇게 정해진 흐름을 끊는 신..