목록운영체제 (5)
운기의 블로그
메모리관리배경 메모리관리하는 방법에 대해 알기전에 " 왜 메모리관리를 해야하는가? " 에 대해 알아보려고 한다. 다수의 프로세스들을 사용하면서 메모리 관리의 중요성은 대두되었다. 멀티 프로세스 환경에서는 보다 좋은 성능을 위해서 다수의 프로그램을 주 메모리에 올려놓아야 한다. 이때 메모리에 어느곳에 프로그램을 넣어주고, 다시 하드디스크로 보내는 역할을 운영체제에서 담당한다. 그렇기 때문에 적절한 메모리 위치에 프로그램을 적재하지 못할 경우 문제가 발생하게된다. 이 뿐만 아니라 메모리가 변경될 때 어떻게 하면 더 효율적이고 메모리 낭비를 방지 할 수 있는가에 대한 문제를 해결하기 위해 메모리 관리를 해야한다. 메모리 계층 우선 현재 컴퓨터에사 사용되는 메모리 계층에 대해서 먼저 알아 보겠습니다. 보조기억장..
동기와 비동기 1. 동기식 처리 모델 동기식 처리 모델은 직렬적으로 태스크를 수행한다. 예를 들면 우리는 집안일을 해야한다. 집안일에는 빨래, 설거지, 청소가 있다. 동기식 방법이라면 우리는 빨래를 하고 설거지를 하고 청소를 하는 순서로 하나의 업무가 끝나야지 다른업무를 할 수 있는 것이다. 각각의 색들은 하나의 스레드 (=task) 라고 보자. 그리고 파란색 스레드에서 하얗게 빈 공간은 파란색 스레드가 진행하고 있다가, 외부에서 데이터를 가져오는 부분이다. 다시 말하면, 하나의 스레드가 진행하고 있다가 외부에서 데이터를 요청하고 데이터 응답을 기다릴 때 까지 파란색 스레드는 작업을 중단하게 된다. 즉, 파란색 스레드가 실행되고 외부에서 값이 반환될 때 까지 스레드는 작업중단( Blocking ) 되어있..
프로세스의 상태 프로세스의 상태에는 생성 / 준비 / 실행 / 대기 / 종료 총 5개의 단계로 나누어져있다. 맨 처음 프로세스가 create 상태가 됩니다. 그 후 사용자가 프로그램을 실행시키면 프로그램을 메모리에 load 시키면서 프로세스는 ready상태로 변화하게 됩니다. 메모리에 올라온 프로그램( = 프로세스 )중 어떤 프로세스를 먼저 실행시킬 것인가에 대해 cpu는 고민하게 되고, 이것은 cpu의 스케쥴링에 의해 결정되게 됩니다. (실제로는 dispatcher가 한다고 합니다.) 그렇게 running 상태에 있는 프로세스는 I/O 작업 요청이 오게 되면 block(=대기) 상태로 빠지게 됩니다. 그렇게 I/O 작업이 끝나면 바로 running상태로 가는것이 아닌 ready 상태로 돌아가게 됩니다...
스레드란 프로세스가 할당 받는 자원을 이용하는 실행 흐름의 단위로 각각의 스레드에는 프로그램 카운터, 레지스터, 스택, 스레드 ID가 존재하고, 스레드들은 자원(code, data, heap 영역)을 공유하고 있고, 운영체제의 지원여부에 따라 단일 스레드 와 멀티(다중) 스레드로 나눌 수 있다. 단일 스레드 / 멀티 스레드 단일 스레드 하나의 프로세스에서 하나의 스레드 실행 하나의 레지스터와 스택으로 표현 멀티 스레드 프로그램을 다수의 실행 단위로 나누어 실행 프로세스 내에서 자원을 공유하여 자원 생성과 관리의 중복을 최소화 서버가 많은 요청을 효율적으로 수행 할 수 있는 환경 제공 각각의 스레드가 고유의 레지스터와 스택으로 표현됨 멀티 스레드의 장점 프로세스로 동시에 처리하는 것 보다 멀티스레드로 처리..
프로세스란? 1. 운영체제로 부터 자원을 할당 받는 작업의 단위 2. 실행중인 프로그램 ( task ) 프로세스와 프로그램의 차이는 ?? 프로그램은 하드디스크나 SSD에 존재하고 실행되기를 기다리는 명령어(코드)나 정적데이터를 의미합니다. 프로세스는 이런 프로그램을 메모리에 적재시켜 CPU를 할당 받고 프로그램을 실행하고 있는 상태를 의미합니다 프로세스 = 실행되는 프로그램 예를 들면 컴퓨터를 키고 메모장을 10번 클릭합니다. 메모장(=프로그램)을 10번 클릭했을 때 우리는 한개의 프로그램을 10번 실행시킨거고, 프로세스 상에는 10개의 메모장이 사용되고 있다고 생각하시면 됩니다. 프로세스의 구조 운영체제안에는 프로세스가 존재하고 이런 프로세스들은 각각의 독립된 메모리를 가지고 있습니다. 메모리 영역은 ..