연속 메모리 할당프로세스 A는 A의 크기만큼 메모리 주소를 할당받아 연속적으로 배치되고, 프로세스 B는 프로세스 A이후에 B의 크기만큼 연속적인 메모리 주소를 할당받아 배치되는 방식을 연속 메모리 할당이라고 한다. 이 방식을 구현할 때 무엇을 고려해야 하고, 어떤 잠재적인 문제가 있는지 알아본다.스와핑메모리에 적재된 프로세스들 중에선 현재 실행되지 않는 프로세스가 있을 수 있다. 대기중인 프로세스나 오랫동안 사용되지 않은 프로세스가 그렇다. 스와핑은 이러한 프로세스들을 임시로 보조기억장치 일부 영역으로 쫓아내고, 그렇게 해서 생긴 메모리상의 빈 공간에 또 다른 프로세스를 적재하여 실행하는 방식이다.스왑 영역 : 프로세스들이 쫓겨나는 보조기억장치의 일부 영역스왑 아웃 : 현재 실행되지 않는 프로세스가 메모..
교착 상태란도로에 차가 꽉 막혀 꼼짝달싹 못하는 상황을 본 적이 있을 것이다. 프로세스 실행 과정에서도 비슷한 문제가 있다. 두 개 이상의 프로세스가 각자 가지고 있는 자원을 무작정 기다린다면 그 어떤 프로세스도 진행할 수 없는 교착 상태가 된다. 교착상태가 정확히 무엇이고, 언제 어떻게 발생하는지 알아보자.식사하는 철학자 문제식사하는 철학자 문제(dining philosophers problem)는 교착 상태를 설명하기 위한 고전적인 시나리오이다.동그란 원탁에 다섯 명의 철학자가 앉아있다. 철학자들의 앞엔 식사가 있고, 철할자들 사이에는 식사에 필요한 포크가 있다. 철학자들 앞에 있는 식사는 두 개의 포크로 먹을 수 있는 음식이라 가정해보자.그리고 철학자들은 다음과 같은 순서로 식사를 한다.계속 생각을..
동기화란병렬적으로 실행되는 프로세스들은 공동의 목적을 올바르게 수행하기 위해 협력해야한다. 이때 실행 순서와 자원의 일관성을 보장해야 하기 때문에 동기화되어야 한다.동기화의 의미프로세스의 동기화란 국어 사전에 따르면 ‘정보·통신 분야에서의 동기화란 작업들 사이의 수행 시기를 맞추는 것’이라는 의미를 갖는다. 정리히자면, 프로세스 동기화란 프로세스들 사이의 수행 시기를 맞추는 것을 의미한다.프로세스뿐 아니라 스레드 같은 실행 흐름을 갖는 모든 것은 동기화의 대상이다. 다만 여기에서는 대부분의 전공서 표현에 따라 ‘프로세스 동기화’라고 칭한다.프로세스들 사이의 수행 시기를 맞추는 것이 의미하는 것은 다음과 같다.실행 순서 제어 : 프로세스를 올바른 순서대로 실행하기Reader와 Writer가 있을 때 Wri..
CPU 스케줄링 개요CPU 스케줄링은 운영체제가 프로세스들에게 공정하고 합리적으로 CPU를 배분하는 것을 의미한다. 이는 컴퓨터 성능과 직결되는 대단히 중요한 문제이다. 제대로 배분하지 못하면 반드시 실행되어야 하는 프로세스가 실행되지 않거나, 당장 급하지 않은 프로세스들만 주로 실행되는 등 무질서한 상태가 발생할 수 있기 때문이다.프로세스 우선순위준비 상태의 프로세스가 서로 CPU를 사용하고 싶어할 때 어떻게 배분해야 프로세스들이 공정하게 CPU를 사용할 수 있을까?단순한 아이디어로는 요청한 순서대로 CPU를 이용하는 방법이 있을 것이다. 하지만 이는 좋은 방법이 아니다. 그 이유는 프로세스마다 우선순위가 다르기 때문이다. 우선순위가 높은 프로세스란 빨리 처리해야 하는 프로세스를 의미한다. 우선순위가 ..
프로세스 개요프로세스는 실행 중인 프로그램을 의미한다. 프로그램은 실행되기 전까지는 보조기억장치에 있는 데이터 덩어리 이지만, 실행하게된다면 메모리에 적재되면서 프로세스가 된다. 이 과정을 ‘프로세스를 생성했다’라고 표현한다.프로세스 직접 확인하기컴퓨터에는 다양한 프로세스가 실행되고있다. 각 프로세스는 운영체제의 도움을 받아 확인할 수 있다.실행중인 프로세스중에서 사용자가 볼 수 있는 공간에서 실행되는 프로세스와 그렇지 않은 프로세스가 있다. 사용자가 보는 앞에서 실행되는 프로세스를 포그라운드 프로세스(foreground process)라고 하고, 후자는 백그라운드 프로세스(background process)라고 한다.백그라운드 프로세스 중에는 사용자와 직접 상호작용할 수 있는 프로세스가 있고, 그렇지 ..
운영체제를 알아야 하는 이유운영체제란 실행할 프로그램에 필요한 자원을 할당하고, 프로그램이 올바르게 실행되도록 돕는 특별한 프로그램이다.운영체제도 프로그램이기 때문에 메모리에 적재되어야 한다. 다만 운영체제는 특별한 프로그램이기 때문에 컴퓨터가 부팅될 때 메모리 내 커널영역(kernel space)이라는 공간에 따로 적재되어 실행된다. 커널 영역을 제외한 나머지 영역, 사용자가 이용하는 응용 프로그램이 적재되는 영역을 사용자 영역(user space)이라고 한다.운영체제는 사용자 영역에 프로그램을 적재해주는데, 메모리 주소가 겹치지 않도록 적당한 공간에 적재한다. 또 실행되지 않는 프로그램을 메모리에서 삭제하며 지속적으로 메모리를 관리한다.프로그램이 실행되려면 반드시 CPU가 필요한데, 운영체제가 어느 ..
장치 컨트롤러와 장치 드라이버컴퓨터에는 CPU와 메모리만 존재하지 않는다. 스피커, 모니터, 키보드, 마우스 등 다양한 입출력 장치가 있는데, 이런 외부 장치들이 어떻게 내부와 소통하는지 알아보자.장치 컨트롤러입출력장치는 CPU, 메모리보다 다루기 까다롭다. 이유는 크게 두 가지가 있다.입출력장치의 종류가 많다입출력장치의 종류가 다양한 만큼 장치의 속도, 데이터 전송 형식도 다양하다.때문에 정보를 주고받는 방식을 규격화 하기도 어렵다.일반적으로 CPU와 메모리 데이터 전송률은 높지만 입출력장치의 데이터 전송률은 낮다전송률이란 데이터를 얼마나 빨리 교환할 수 있는지를 나타내는 지표이다. 전송률이 차이가 나면 병목현상으로 인해 통신이 어려워지게 된다.CPU와 메모리보다 전송률이 높은 입출력장치도 있지만, 결..
다양한 보조기억장치보조기억장치의 종류는 다양한데, 크게 하드 디스크와 플래시 메모리로 나눌 수 있다. 플래시 메모리는 USB 메모리, SD 카드, SSD와 같은 저장장치를 의미한다.하드디스크하드디스크(HDD; Hard Disk Drive)는 자기적인 방식으로 데이터를 저장하는 보조기억장치이다. 이 때문에 자기 디스크(magnetic disk)의 일종으로 지칭하기도 한다.하드디스크는 CD나 옛날 음향 장치인 LP와 비슷하게 동작한다. 동그란 원판에 데이터를 저장하고, 그것을 뾰족한 리더기로 데이터를 읽어내는 점이 비슷하다.하드디스크에 실질적으로 데이터가 저장되는 곳은 플래터이다. 플래터는 원판처럼 생겼으며, 자기물질로 덮여있기 때문에 수많은 N극과 S극을 저장할 수 있다. N극과 S극이 0과 1의 역할을 ..
RAM의 특징과 종류RAM의 특징RAM은 전원을 종료하면 저장된 명령어와 데이터가 모두 날아간다. 이런 특징을 휘발성 저장 장치라고 한다.반면, 전원을 종료해도 저장된 내용이 유지되는 저장장치를 비휘발성 저장장치라고 한다. HDD, SSD, CD-ROM이 여기에 해당된다.보조기억장치는 전원을 꺼도 내용을 유지하지만, CPU는 보조기억장치에 직접 접근하지 못한다. 그래서 일반적으로 보조기억장치에는 ‘보관할 대상’을 저장하고, 주기억장치에는 ‘실행할 대상’을 저장한다.RAM의 용량과 성능프로그램을 실행하려면 보조기억장치에 있는 프로그램을 RAM으로 가져와야한다. 만약 동시에 여러개의 프로그램을 번갈아가면서 사용해야할 때 RAM의 용량이 작다면 보조기억장치에서 RAM으로 프로그램을 가져오는 횟수가 늘어나게 된..
빠른 CPU를 위한 설계 기법클럭클럭을 학습하기 전에 이전에 배웠던 내용을 다시 떠올려보자.컴퓨터 부품들은 클럭 신호에 맞춰 움직인다.CPU는 명령 사이클이라는 정해진 흐름에 맞춰 명령어를 실행한다.클럭신호가 빠르면 컴퓨터 부품들이 그만큼 빠른 박자에 맞춰 움직이게된다. 실제로 클럭 속도가 높은 CPU는 일반적으로 성능이 좋다.클럭 속도는 헤르츠(Hz) 단위로 측정하며, 1초에 클럭이 몇 번 반복되는지를 나타낸다. 클럭이 1초에 100번 반복되면 CPU 클럭 속도는 100Hz이다.클럭 속도는 일정하지 않다. CPU는 기본 클럭 속도와 최대 클럭 속도가 나뉘어져 있다. 이는 고성능을 요하는 순간에 순간적으로 클럭 속도를 높이고, 그렇지 않을 때는 유연하게 클럭 속도를 낮추기도 한다. 최대 클럭 속도를 더 ..